diff --git a/Assets/AmplifyBloom/Plugins.meta b/Assets/AmplifyBloom/Plugins.meta new file mode 100644 index 0000000..5e68aba --- /dev/null +++ b/Assets/AmplifyBloom/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 929d54d66cabf2f468e71b1f37e3c82e +folderAsset: yes +timeCreated: 1449660370 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/AmplifyBloom.dll b/Assets/AmplifyBloom/Plugins/AmplifyBloom.dll new file mode 100644 index 0000000..e426206 Binary files /dev/null and b/Assets/AmplifyBloom/Plugins/AmplifyBloom.dll differ diff --git a/Assets/AmplifyBloom/Plugins/AmplifyBloom.dll.meta b/Assets/AmplifyBloom/Plugins/AmplifyBloom.dll.meta new file mode 100644 index 0000000..cd17b5c --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/AmplifyBloom.dll.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 1344eb354a4f5c84e906b0362a044e38 +timeCreated: 1454436109 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/AmplifyBloomBase.cs b/Assets/AmplifyBloom/Plugins/AmplifyBloomBase.cs new file mode 100644 index 0000000..021a315 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/AmplifyBloomBase.cs @@ -0,0 +1,1133 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +using UnityEngine.Rendering; + +namespace AmplifyBloom +{ + public enum PrecisionModes + { + Low = 0, + High + } + + public enum BloomPasses + { + Threshold = 0, + ThresholdMask = 1, + AnamorphicGlare = 2, + LensFlare0 = 3, + LensFlare1 = 4, + LensFlare2 = 5, + LensFlare3 = 6, + LensFlare4 = 7, + LensFlare5 = 8, + DownsampleNoWeightedAvg = 9, + DownsampleWithKaris = 10, + DownsampleWithoutKaris = 11, + DownsampleWithTempFilterWithKaris = 12, + DownsampleWithTempFilterWithoutKaris = 13, + HorizontalBlur = 14, + VerticalBlur = 15, + VerticalBlurWithTempFilter = 16, + UpscaleFirstPass = 17, + Upscale = 18, + WeightedAddPS1 = 19, + WeightedAddPS2 = 20, + WeightedAddPS3 = 21, + WeightedAddPS4 = 22, + WeightedAddPS5 = 23, + WeightedAddPS6 = 24, + WeightedAddPS7 = 25, + WeightedAddPS8 = 26, + BokehWeightedBlur = 27, + BokehComposition2S = 28, + BokehComposition3S = 29, + BokehComposition4S = 30, + BokehComposition5S = 31, + BokehComposition6S = 32, + Decode = 33, + TotalPasses + }; + + public enum UpscaleQualityEnum + { + Realistic, + Natural + } + + public enum DebugToScreenEnum + { + None, + Bloom, + MainThreshold, + FeaturesThreshold, + TemporalFilter, + BokehFilter, + LensFlare, + LensGlare, + LensDirt, + LensStarburst + } + + public enum MainThresholdSizeEnum + { + Full = 0, + Half, + Quarter + + } + + [System.Serializable] + [AddComponentMenu( "" )] + public class AmplifyBloomBase : MonoBehaviour + { + //CONSTS + public const int MaxGhosts = 5; + public const int MinDownscales = 1; + public const int MaxDownscales = 6; + public const int MaxGaussian = 8; + private const float MaxDirtIntensity = 1; + private const float MaxStarburstIntensity = 1; + + // SERIALIZABLE VARIABLES + + [SerializeField] + private Texture m_maskTexture = null; + [SerializeField] + private RenderTexture m_targetTexture = null; + + [SerializeField] + private bool m_showDebugMessages = true; + + [SerializeField] + private int m_softMaxdownscales = MaxDownscales; + + [SerializeField] + private DebugToScreenEnum m_debugToScreen = DebugToScreenEnum.None; + + [SerializeField] + private bool m_highPrecision = false; + + [SerializeField] + private Vector4 m_bloomRange = new Vector4( 500, 1, 0, 0 ); + + [SerializeField] + private float m_overallThreshold = 0.53f; + + [SerializeField] + private Vector4 m_bloomParams = new Vector4( 0.8f, 1, 1, 1 ); // x - overallIntensity, y - threshold, z - blur radius w - bloom scale + + [SerializeField] + private bool m_temporalFilteringActive = false; + + [SerializeField] + private float m_temporalFilteringValue = 0.05f; + + [SerializeField] + private int m_bloomDownsampleCount = 6; + + [SerializeField] + private AnimationCurve m_temporalFilteringCurve; + + [SerializeField] + private bool m_separateFeaturesThreshold = false; + + [SerializeField] + private float m_featuresThreshold = 0.05f; + + [SerializeField] + private AmplifyLensFlare m_lensFlare = new AmplifyLensFlare(); + + [SerializeField] + private bool m_applyLensDirt = true; + + [SerializeField] + private float m_lensDirtStrength = 2f; + + [SerializeField] + private Texture m_lensDirtTexture; + + [SerializeField] + private bool m_applyLensStardurst = true; + + [SerializeField] + private Texture m_lensStardurstTex; + + [SerializeField] + private float m_lensStarburstStrength = 2f; + + [SerializeField] + private AmplifyGlare m_anamorphicGlare = new AmplifyGlare(); + + [SerializeField] + private AmplifyBokeh m_bokehFilter = new AmplifyBokeh(); + + [SerializeField] + private float[] m_upscaleWeights = new float[ MaxDownscales ] { 0.0842f, 0.1282f, 0.1648f, 0.2197f, 0.2197f, 0.1831f }; + + [SerializeField] + private float[] m_gaussianRadius = new float[ MaxDownscales ] { 1, 1, 1, 1, 1, 1 }; + + [SerializeField] + private int[] m_gaussianSteps = new int[ MaxDownscales ] { 1, 1, 1, 1, 1, 1 }; + + [SerializeField] + private float[] m_lensDirtWeights = new float[ MaxDownscales ] { 0.0670f, 0.1020f, 0.1311f, 0.1749f, 0.2332f, 0.3f }; + + [SerializeField] + private float[] m_lensStarburstWeights = new float[ MaxDownscales ] { 0.0670f, 0.1020f, 0.1311f, 0.1749f, 0.2332f, 0.3f }; + + [SerializeField] + private bool[] m_downscaleSettingsFoldout = new bool[ MaxDownscales ] { false, false, false, false, false, false }; + + [SerializeField] + private int m_featuresSourceId = 0; + + [SerializeField] + private UpscaleQualityEnum m_upscaleQuality = UpscaleQualityEnum.Realistic; + + [SerializeField] + private MainThresholdSizeEnum m_mainThresholdSize = MainThresholdSizeEnum.Full; + + // Internal private variables + private Transform m_cameraTransform; + private Matrix4x4 m_starburstMat; + + private Shader m_bloomShader; + private Material m_bloomMaterial; + + private Shader m_finalCompositionShader; + private Material m_finalCompositionMaterial; + + private RenderTexture m_tempFilterBuffer; + private Camera m_camera; + RenderTexture[] m_tempUpscaleRTs = new RenderTexture[ MaxDownscales ]; + RenderTexture[] m_tempAuxDownsampleRTs = new RenderTexture[ MaxDownscales ]; + Vector2[] m_tempDownsamplesSizes = new Vector2[ MaxDownscales ]; + + private bool silentError = false; + +#if TRIAL + private Texture2D watermark = null; +#endif + + void Awake() + { + bool nullDev = ( SystemInfo.graphicsDeviceType == GraphicsDeviceType.Null ); + if ( nullDev ) + { + + AmplifyUtils.DebugLog( "Null graphics device detected. Skipping effect silently.", LogType.Error ); + silentError = true; + return; + } + + if ( !AmplifyUtils.IsInitialized ) + AmplifyUtils.InitializeIds(); + + + for ( int i = 0; i < MaxDownscales; i++ ) + { + m_tempDownsamplesSizes[ i ] = new Vector2( 0, 0 ); + } + m_cameraTransform = transform; + m_tempFilterBuffer = null; + m_starburstMat = Matrix4x4.identity; + + if ( m_temporalFilteringCurve == null ) + m_temporalFilteringCurve = new AnimationCurve( new Keyframe( 0, 0 ), new Keyframe( 1, 0.999f ) ); + + m_bloomShader = Shader.Find( "Hidden/AmplifyBloom" ); + if ( m_bloomShader != null ) + { + m_bloomMaterial = new Material( m_bloomShader ); + m_bloomMaterial.hideFlags = HideFlags.DontSave; + } + else + { + AmplifyUtils.DebugLog( "Main Bloom shader not found", LogType.Error ); + gameObject.SetActive( false ); + } + + m_finalCompositionShader = Shader.Find( "Hidden/BloomFinal" ); + if ( m_finalCompositionShader != null ) + { + m_finalCompositionMaterial = new Material( m_finalCompositionShader ); + if ( !m_finalCompositionMaterial.GetTag( AmplifyUtils.ShaderModeTag, false ).Equals( AmplifyUtils.ShaderModeValue ) ) + { + if ( m_showDebugMessages ) + AmplifyUtils.DebugLog( "Amplify Bloom is running on a limited hardware and may lead to a decrease on its visual quality.", LogType.Warning ); + } + else + { + m_softMaxdownscales = MaxDownscales; + } + + m_finalCompositionMaterial.hideFlags = HideFlags.DontSave; + if ( m_lensDirtTexture == null ) + { + m_lensDirtTexture = m_finalCompositionMaterial.GetTexture( AmplifyUtils.LensDirtRTId ); + } + + if ( m_lensStardurstTex == null ) + { + m_lensStardurstTex = m_finalCompositionMaterial.GetTexture( AmplifyUtils.LensStarburstRTId ); + } + } + else + { + AmplifyUtils.DebugLog( "Bloom Composition shader not found", LogType.Error ); + gameObject.SetActive( false ); + } + + m_camera = GetComponent(); + m_camera.depthTextureMode |= DepthTextureMode.Depth; + m_lensFlare.CreateLUTexture(); + +#if TRIAL + watermark = new Texture2D( 4, 4 ) { hideFlags = HideFlags.HideAndDontSave }; + watermark.LoadImage( AmplifyBloom.Watermark.ImageData ); +#endif + } + + void OnDestroy() + { + if ( m_bokehFilter != null ) + { + m_bokehFilter.Destroy(); + m_bokehFilter = null; + } + + if ( m_anamorphicGlare != null ) + { + m_anamorphicGlare.Destroy(); + m_anamorphicGlare = null; + } + + if ( m_lensFlare != null ) + { + m_lensFlare.Destroy(); + m_lensFlare = null; + } + +#if TRIAL + if ( watermark != null ) + { + DestroyImmediate( watermark ); + watermark = null; + } +#endif + } + + void ApplyGaussianBlur( RenderTexture renderTexture, int amount, float radius = 1.0f, bool applyTemporal = false ) + { + if ( amount == 0 ) + return; + + m_bloomMaterial.SetFloat( AmplifyUtils.BlurRadiusId, radius ); + RenderTexture blurRT = AmplifyUtils.GetTempRenderTarget( renderTexture.width, renderTexture.height ); + for ( int i = 0; i < amount; i++ ) + { + blurRT.DiscardContents(); + Graphics.Blit( renderTexture, blurRT, m_bloomMaterial, ( int ) BloomPasses.HorizontalBlur ); + + if ( m_temporalFilteringActive && applyTemporal && i == ( amount - 1 ) ) + { + if ( m_tempFilterBuffer != null && m_temporalFilteringActive ) + { + float filterVal = m_temporalFilteringCurve.Evaluate( m_temporalFilteringValue ); + m_bloomMaterial.SetFloat( AmplifyUtils.TempFilterValueId, filterVal ); + m_bloomMaterial.SetTexture( AmplifyUtils.AnamorphicRTS[ 0 ], m_tempFilterBuffer ); + renderTexture.DiscardContents(); + Graphics.Blit( blurRT, renderTexture, m_bloomMaterial, ( int ) BloomPasses.VerticalBlurWithTempFilter ); + } + else + { + renderTexture.DiscardContents(); + Graphics.Blit( blurRT, renderTexture, m_bloomMaterial, ( int ) BloomPasses.VerticalBlur ); + } + + bool createRT = false; + if ( m_tempFilterBuffer != null ) + { + if ( m_tempFilterBuffer.format != renderTexture.format || + m_tempFilterBuffer.width != renderTexture.width || + m_tempFilterBuffer.height != renderTexture.height ) + { + CleanTempFilterRT(); + createRT = true; + } + } + else + { + createRT = true; + } + + if ( createRT ) + { + CreateTempFilterRT( renderTexture ); + } + m_tempFilterBuffer.DiscardContents(); + Graphics.Blit( renderTexture, m_tempFilterBuffer ); + } + else + { + renderTexture.DiscardContents(); + Graphics.Blit( blurRT, renderTexture, m_bloomMaterial, ( int ) BloomPasses.VerticalBlur ); + } + } + AmplifyUtils.ReleaseTempRenderTarget( blurRT ); + } + + void CreateTempFilterRT( RenderTexture source ) + { + if ( m_tempFilterBuffer != null ) + { + CleanTempFilterRT(); + } + + m_tempFilterBuffer = new RenderTexture( source.width, source.height, 0, source.format, AmplifyUtils.CurrentReadWriteMode ); + m_tempFilterBuffer.filterMode = AmplifyUtils.CurrentFilterMode; + m_tempFilterBuffer.wrapMode = AmplifyUtils.CurrentWrapMode; + m_tempFilterBuffer.Create(); + } + + void CleanTempFilterRT() + { + if ( m_tempFilterBuffer != null ) + { + RenderTexture.active = null; + m_tempFilterBuffer.Release(); + DestroyImmediate( m_tempFilterBuffer ); + m_tempFilterBuffer = null; + } + } + + void OnRenderImage( RenderTexture src, RenderTexture dest ) + { + if ( silentError ) + return; + + if ( !AmplifyUtils.IsInitialized ) + AmplifyUtils.InitializeIds(); + + if ( m_highPrecision ) + { + AmplifyUtils.EnsureKeywordEnabled( m_bloomMaterial, AmplifyUtils.HighPrecisionKeyword, true ); + AmplifyUtils.EnsureKeywordEnabled( m_finalCompositionMaterial, AmplifyUtils.HighPrecisionKeyword, true ); + AmplifyUtils.CurrentRTFormat = RenderTextureFormat.DefaultHDR; + } + else + { + AmplifyUtils.EnsureKeywordEnabled( m_bloomMaterial, AmplifyUtils.HighPrecisionKeyword, false ); + AmplifyUtils.EnsureKeywordEnabled( m_finalCompositionMaterial, AmplifyUtils.HighPrecisionKeyword, false ); + AmplifyUtils.CurrentRTFormat = RenderTextureFormat.Default; + } + + float totalCamRot = Mathf.Acos( Vector3.Dot( m_cameraTransform.right, Vector3.right ) ); + if ( Vector3.Cross( m_cameraTransform.right, Vector3.right ).y > 0 ) + totalCamRot = -totalCamRot; + + + RenderTexture lensFlareRT = null; + RenderTexture lensGlareRT = null; + + if ( !m_highPrecision ) + { + m_bloomRange.y = 1 / m_bloomRange.x; + + m_bloomMaterial.SetVector( AmplifyUtils.BloomRangeId, m_bloomRange ); + m_finalCompositionMaterial.SetVector( AmplifyUtils.BloomRangeId, m_bloomRange ); + } + m_bloomParams.y = m_overallThreshold; + + m_bloomMaterial.SetVector( AmplifyUtils.BloomParamsId, m_bloomParams ); + m_finalCompositionMaterial.SetVector( AmplifyUtils.BloomParamsId, m_bloomParams ); + + int thresholdResDiv = 1; + switch ( m_mainThresholdSize ) + { + case MainThresholdSizeEnum.Half: thresholdResDiv = 2; break; + case MainThresholdSizeEnum.Quarter: thresholdResDiv = 4; break; + } + + // CALCULATE THRESHOLD + RenderTexture thresholdRT = AmplifyUtils.GetTempRenderTarget( src.width / thresholdResDiv, src.height / thresholdResDiv ); + if ( m_maskTexture != null ) + { + m_bloomMaterial.SetTexture( AmplifyUtils.MaskTextureId, m_maskTexture ); + Graphics.Blit( src, thresholdRT, m_bloomMaterial, ( int ) BloomPasses.ThresholdMask ); + } + else + { + Graphics.Blit( src, thresholdRT, m_bloomMaterial, ( int ) BloomPasses.Threshold ); + } + + if ( m_debugToScreen == DebugToScreenEnum.MainThreshold ) + { + Graphics.Blit( thresholdRT, dest, m_bloomMaterial, ( int ) BloomPasses.Decode ); + AmplifyUtils.ReleaseAllRT(); + return; + } + + // DOWNSAMPLE + bool applyGaussian = true; + RenderTexture downsampleRT = thresholdRT; + if ( m_bloomDownsampleCount > 0 ) + { + applyGaussian = false; + int tempW = thresholdRT.width; + int tempH = thresholdRT.height; + for ( int i = 0; i < m_bloomDownsampleCount; i++ ) + { + + m_tempDownsamplesSizes[ i ].x = tempW; + m_tempDownsamplesSizes[ i ].y = tempH; + tempW = ( tempW + 1 ) >> 1; + tempH = ( tempH + 1 ) >> 1; + m_tempAuxDownsampleRTs[ i ] = AmplifyUtils.GetTempRenderTarget( tempW, tempH ); + if ( i == 0 ) + { + if ( !m_temporalFilteringActive || m_gaussianSteps[ i ] != 0 ) + { + if ( m_upscaleQuality == UpscaleQualityEnum.Realistic ) + { + Graphics.Blit( downsampleRT, m_tempAuxDownsampleRTs[ i ], m_bloomMaterial, ( int ) BloomPasses.DownsampleWithKaris ); + } + else + { + Graphics.Blit( downsampleRT, m_tempAuxDownsampleRTs[ i ], m_bloomMaterial, ( int ) BloomPasses.DownsampleWithoutKaris ); + } + } + else + { + if ( m_tempFilterBuffer != null && m_temporalFilteringActive ) + { + float filterVal = m_temporalFilteringCurve.Evaluate( m_temporalFilteringValue ); + m_bloomMaterial.SetFloat( AmplifyUtils.TempFilterValueId, filterVal ); + m_bloomMaterial.SetTexture( AmplifyUtils.AnamorphicRTS[ 0 ], m_tempFilterBuffer ); + if ( m_upscaleQuality == UpscaleQualityEnum.Realistic ) + { + Graphics.Blit( downsampleRT, m_tempAuxDownsampleRTs[ i ], m_bloomMaterial, ( int ) BloomPasses.DownsampleWithTempFilterWithKaris ); + } + else + { + Graphics.Blit( downsampleRT, m_tempAuxDownsampleRTs[ i ], m_bloomMaterial, ( int ) BloomPasses.DownsampleWithTempFilterWithoutKaris ); + } + } + else + { + if ( m_upscaleQuality == UpscaleQualityEnum.Realistic ) + { + Graphics.Blit( downsampleRT, m_tempAuxDownsampleRTs[ i ], m_bloomMaterial, ( int ) BloomPasses.DownsampleWithKaris ); + } + else + { + Graphics.Blit( downsampleRT, m_tempAuxDownsampleRTs[ i ], m_bloomMaterial, ( int ) BloomPasses.DownsampleWithoutKaris ); + } + } + + bool createRT = false; + if ( m_tempFilterBuffer != null ) + { + if ( m_tempFilterBuffer.format != m_tempAuxDownsampleRTs[ i ].format || + m_tempFilterBuffer.width != m_tempAuxDownsampleRTs[ i ].width || + m_tempFilterBuffer.height != m_tempAuxDownsampleRTs[ i ].height ) + { + CleanTempFilterRT(); + createRT = true; + } + } + else + { + createRT = true; + } + + if ( createRT ) + { + CreateTempFilterRT( m_tempAuxDownsampleRTs[ i ] ); + } + + m_tempFilterBuffer.DiscardContents(); + Graphics.Blit( m_tempAuxDownsampleRTs[ i ], m_tempFilterBuffer ); + if ( m_debugToScreen == DebugToScreenEnum.TemporalFilter ) + { + Graphics.Blit( m_tempAuxDownsampleRTs[ i ], dest ); + AmplifyUtils.ReleaseAllRT(); + return; + } + } + } + else + { + Graphics.Blit( m_tempAuxDownsampleRTs[ i - 1 ], m_tempAuxDownsampleRTs[ i ], m_bloomMaterial, ( int ) BloomPasses.DownsampleNoWeightedAvg ); + } + + if ( m_gaussianSteps[ i ] > 0 ) + { + ApplyGaussianBlur( m_tempAuxDownsampleRTs[ i ], m_gaussianSteps[ i ], m_gaussianRadius[ i ], i == 0 ); + if ( m_temporalFilteringActive && m_debugToScreen == DebugToScreenEnum.TemporalFilter ) + { + Graphics.Blit( m_tempAuxDownsampleRTs[ i ], dest ); + AmplifyUtils.ReleaseAllRT(); + return; + } + } + + } + + downsampleRT = m_tempAuxDownsampleRTs[ m_featuresSourceId ]; + AmplifyUtils.ReleaseTempRenderTarget( thresholdRT ); + } + + // BOKEH FILTER + if ( m_bokehFilter.ApplyBokeh && m_bokehFilter.ApplyOnBloomSource ) + { + m_bokehFilter.ApplyBokehFilter( downsampleRT, m_bloomMaterial ); + if ( m_debugToScreen == DebugToScreenEnum.BokehFilter ) + { + Graphics.Blit( downsampleRT, dest ); + AmplifyUtils.ReleaseAllRT(); + return; + } + } + + // FEATURES THRESHOLD + RenderTexture featuresRT = null; + bool releaseFeaturesRT = false; + if ( m_separateFeaturesThreshold ) + { + m_bloomParams.y = m_featuresThreshold; + m_bloomMaterial.SetVector( AmplifyUtils.BloomParamsId, m_bloomParams ); + m_finalCompositionMaterial.SetVector( AmplifyUtils.BloomParamsId, m_bloomParams ); + featuresRT = AmplifyUtils.GetTempRenderTarget( downsampleRT.width, downsampleRT.height ); + releaseFeaturesRT = true; + Graphics.Blit( downsampleRT, featuresRT, m_bloomMaterial, ( int ) BloomPasses.Threshold ); + if ( m_debugToScreen == DebugToScreenEnum.FeaturesThreshold ) + { + Graphics.Blit( featuresRT, dest ); + AmplifyUtils.ReleaseAllRT(); + return; + } + } + else + { + featuresRT = downsampleRT; + } + + if ( m_bokehFilter.ApplyBokeh && !m_bokehFilter.ApplyOnBloomSource ) + { + if ( !releaseFeaturesRT ) + { + releaseFeaturesRT = true; + featuresRT = AmplifyUtils.GetTempRenderTarget( downsampleRT.width, downsampleRT.height ); + Graphics.Blit( downsampleRT, featuresRT ); + } + + m_bokehFilter.ApplyBokehFilter( featuresRT, m_bloomMaterial ); + if ( m_debugToScreen == DebugToScreenEnum.BokehFilter ) + { + Graphics.Blit( featuresRT, dest ); + AmplifyUtils.ReleaseAllRT(); + return; + } + } + + // LENS FLARE + if ( m_lensFlare.ApplyLensFlare && m_debugToScreen != DebugToScreenEnum.Bloom ) + { + lensFlareRT = m_lensFlare.ApplyFlare( m_bloomMaterial, featuresRT ); + ApplyGaussianBlur( lensFlareRT, m_lensFlare.LensFlareGaussianBlurAmount ); + if ( m_debugToScreen == DebugToScreenEnum.LensFlare ) + { + Graphics.Blit( lensFlareRT, dest ); + AmplifyUtils.ReleaseAllRT(); + return; + } + } + + //ANAMORPHIC GLARE + if ( m_anamorphicGlare.ApplyLensGlare && m_debugToScreen != DebugToScreenEnum.Bloom ) + { + lensGlareRT = AmplifyUtils.GetTempRenderTarget( downsampleRT.width, downsampleRT.height ); + + m_anamorphicGlare.OnRenderImage( m_bloomMaterial, featuresRT, lensGlareRT, totalCamRot ); + if ( m_debugToScreen == DebugToScreenEnum.LensGlare ) + { + Graphics.Blit( lensGlareRT, dest ); + AmplifyUtils.ReleaseAllRT(); + return; + } + } + + if ( releaseFeaturesRT ) + { + AmplifyUtils.ReleaseTempRenderTarget( featuresRT ); + } + + //BLUR + if ( applyGaussian ) + { + ApplyGaussianBlur( downsampleRT, m_gaussianSteps[ 0 ], m_gaussianRadius[ 0 ] ); + } + + //UPSAMPLE + + if ( m_bloomDownsampleCount > 0 ) + { + if ( m_bloomDownsampleCount == 1 ) + { + if ( m_upscaleQuality == UpscaleQualityEnum.Realistic ) + { + ApplyUpscale(); + m_finalCompositionMaterial.SetTexture( AmplifyUtils.MipResultsRTS[ 0 ], m_tempUpscaleRTs[ 0 ] ); + } + else + { + m_finalCompositionMaterial.SetTexture( AmplifyUtils.MipResultsRTS[ 0 ], m_tempAuxDownsampleRTs[ 0 ] ); + } + m_finalCompositionMaterial.SetFloat( AmplifyUtils.UpscaleWeightsStr[ 0 ], m_upscaleWeights[ 0 ] ); + } + else + { + + if ( m_upscaleQuality == UpscaleQualityEnum.Realistic ) + { + ApplyUpscale(); + for ( int i = 0; i < m_bloomDownsampleCount; i++ ) + { + int id = m_bloomDownsampleCount - i - 1; + m_finalCompositionMaterial.SetTexture( AmplifyUtils.MipResultsRTS[ id ], m_tempUpscaleRTs[ i ] ); + m_finalCompositionMaterial.SetFloat( AmplifyUtils.UpscaleWeightsStr[ id ], m_upscaleWeights[ i ] ); + } + } + else + { + for ( int i = 0; i < m_bloomDownsampleCount; i++ ) + { + int id = m_bloomDownsampleCount - 1 - i; + m_finalCompositionMaterial.SetTexture( AmplifyUtils.MipResultsRTS[ id ], m_tempAuxDownsampleRTs[ id ] ); + m_finalCompositionMaterial.SetFloat( AmplifyUtils.UpscaleWeightsStr[ id ], m_upscaleWeights[ i ] ); + } + } + } + } + else + { + m_finalCompositionMaterial.SetTexture( AmplifyUtils.MipResultsRTS[ 0 ], downsampleRT ); + m_finalCompositionMaterial.SetFloat( AmplifyUtils.UpscaleWeightsStr[ 0 ], 1 ); + } + + if ( m_debugToScreen == DebugToScreenEnum.Bloom ) + { + m_finalCompositionMaterial.SetFloat( AmplifyUtils.SourceContributionId, 0 ); + FinalComposition( 0, 1, src, dest, 0 ); + return; + } + + + // FINAL COMPOSITION + // LENS FLARE + if ( m_bloomDownsampleCount > 1 ) + { + for ( int i = 0; i < m_bloomDownsampleCount; i++ ) + { + m_finalCompositionMaterial.SetFloat( AmplifyUtils.LensDirtWeightsStr[ m_bloomDownsampleCount - i - 1 ], m_lensDirtWeights[ i ] ); + m_finalCompositionMaterial.SetFloat( AmplifyUtils.LensStarburstWeightsStr[ m_bloomDownsampleCount - i - 1 ], m_lensStarburstWeights[ i ] ); + } + } + else + { + m_finalCompositionMaterial.SetFloat( AmplifyUtils.LensDirtWeightsStr[ 0 ], m_lensDirtWeights[ 0 ] ); + m_finalCompositionMaterial.SetFloat( AmplifyUtils.LensStarburstWeightsStr[ 0 ], m_lensStarburstWeights[ 0 ] ); + } + if ( m_lensFlare.ApplyLensFlare ) + { + m_finalCompositionMaterial.SetTexture( AmplifyUtils.LensFlareRTId, lensFlareRT ); + } + + //LENS GLARE + if ( m_anamorphicGlare.ApplyLensGlare ) + { + m_finalCompositionMaterial.SetTexture( AmplifyUtils.LensGlareRTId, lensGlareRT ); + } + + // LENS DIRT + if ( m_applyLensDirt ) + { + m_finalCompositionMaterial.SetTexture( AmplifyUtils.LensDirtRTId, m_lensDirtTexture ); + m_finalCompositionMaterial.SetFloat( AmplifyUtils.LensDirtStrengthId, m_lensDirtStrength * MaxDirtIntensity ); + + if ( m_debugToScreen == DebugToScreenEnum.LensDirt ) + { + FinalComposition( 0, 0, src, dest, 2 ); + return; + } + } + + // LENS STARBURST + if ( m_applyLensStardurst ) + { + m_starburstMat[ 0, 0 ] = Mathf.Cos( totalCamRot ); + m_starburstMat[ 0, 1 ] = -Mathf.Sin( totalCamRot ); + m_starburstMat[ 1, 0 ] = Mathf.Sin( totalCamRot ); + m_starburstMat[ 1, 1 ] = Mathf.Cos( totalCamRot ); + + m_finalCompositionMaterial.SetMatrix( AmplifyUtils.LensFlareStarMatrixId, m_starburstMat ); + m_finalCompositionMaterial.SetFloat( AmplifyUtils.LensFlareStarburstStrengthId, m_lensStarburstStrength * MaxStarburstIntensity ); + m_finalCompositionMaterial.SetTexture( AmplifyUtils.LensStarburstRTId, m_lensStardurstTex ); + + if ( m_debugToScreen == DebugToScreenEnum.LensStarburst ) + { + FinalComposition( 0, 0, src, dest, 1 ); + return; + } + } + + if ( m_targetTexture != null ) + { + m_targetTexture.DiscardContents(); + FinalComposition( 0, 1, src, m_targetTexture, -1 ); + Graphics.Blit( src, dest ); + } + else + { + FinalComposition( 1, 1, src, dest, -1 ); + } + } + + + void FinalComposition( float srcContribution, float upscaleContribution, RenderTexture src, RenderTexture dest, int forcePassId ) + { + m_finalCompositionMaterial.SetFloat( AmplifyUtils.SourceContributionId, srcContribution ); + m_finalCompositionMaterial.SetFloat( AmplifyUtils.UpscaleContributionId, upscaleContribution ); + + int passCount = 0; + if ( forcePassId > -1 ) + { + passCount = forcePassId; + } + else + { + if ( LensFlareInstance.ApplyLensFlare ) + { + passCount = passCount | 8; + } + + if ( LensGlareInstance.ApplyLensGlare ) + { + passCount = passCount | 4; + } + + if ( m_applyLensDirt ) + { + passCount = passCount | 2; + } + + if ( m_applyLensStardurst ) + { + passCount = passCount | 1; + } + } + passCount += ( m_bloomDownsampleCount - 1 ) * 16; + Graphics.Blit( src, dest, m_finalCompositionMaterial, passCount ); + AmplifyUtils.ReleaseAllRT(); + } + + void ApplyUpscale() + { + int beginIdx = ( m_bloomDownsampleCount - 1 ); + int upscaleIdx = 0; + for ( int downscaleIdx = beginIdx; downscaleIdx > -1; downscaleIdx-- ) + { + m_tempUpscaleRTs[ upscaleIdx ] = AmplifyUtils.GetTempRenderTarget( ( int ) m_tempDownsamplesSizes[ downscaleIdx ].x, ( int ) m_tempDownsamplesSizes[ downscaleIdx ].y ); + if ( downscaleIdx == beginIdx ) + { + Graphics.Blit( m_tempAuxDownsampleRTs[ beginIdx ], m_tempUpscaleRTs[ upscaleIdx ], m_bloomMaterial, ( int ) BloomPasses.UpscaleFirstPass ); + } + else + { + m_bloomMaterial.SetTexture( AmplifyUtils.AnamorphicRTS[ 0 ], m_tempUpscaleRTs[ upscaleIdx - 1 ] ); + Graphics.Blit( m_tempAuxDownsampleRTs[ downscaleIdx ], m_tempUpscaleRTs[ upscaleIdx ], m_bloomMaterial, ( int ) BloomPasses.Upscale ); + } + upscaleIdx++; + } + } + + public AmplifyGlare LensGlareInstance + { + get { return m_anamorphicGlare; } + } + + public AmplifyBokeh BokehFilterInstance + { + get { return m_bokehFilter; } + } + + public AmplifyLensFlare LensFlareInstance + { + get { return m_lensFlare; } + } + + public bool ApplyLensDirt + { + get { return m_applyLensDirt; } + set { m_applyLensDirt = value; } + } + + public float LensDirtStrength + { + get { return m_lensDirtStrength; } + set + { + m_lensDirtStrength = value < 0 ? 0 : value; + } + } + + public Texture LensDirtTexture + { + get { return m_lensDirtTexture; } + set { m_lensDirtTexture = value; } + } + + public bool ApplyLensStardurst + { + get { return m_applyLensStardurst; } + set { m_applyLensStardurst = value; } + } + + public Texture LensStardurstTex + { + get { return m_lensStardurstTex; } + set { m_lensStardurstTex = value; } + } + + public float LensStarburstStrength + { + get { return m_lensStarburstStrength; } + set { m_lensStarburstStrength = value < 0 ? 0 : value; } + } + + public PrecisionModes CurrentPrecisionMode + { + get + { + if ( m_highPrecision ) + return PrecisionModes.High; + + return PrecisionModes.Low; + } + set + { + HighPrecision = value == PrecisionModes.High; + } + } + + public bool HighPrecision + { + get { return m_highPrecision; } + set + { + if ( m_highPrecision != value ) + { + m_highPrecision = value; + CleanTempFilterRT(); + } + } + } + + public float BloomRange + { + get { return m_bloomRange.x; } + set + { + m_bloomRange.x = value < 0 ? 0 : value; + } + } + + public float OverallThreshold + { + get { return m_overallThreshold; } + set + { + m_overallThreshold = value < 0 ? 0 : value; + } + } + + public Vector4 BloomParams + { + get { return m_bloomParams; } + set { m_bloomParams = value; } + } + + public float OverallIntensity + { + get { return m_bloomParams.x; } + set + { + m_bloomParams.x = value < 0 ? 0 : value; + } + } + + public float BloomScale + { + get { return m_bloomParams.w; } + set + { + m_bloomParams.w = value < 0 ? 0 : value; + } + } + + public float UpscaleBlurRadius + { + get { return m_bloomParams.z; } + set { m_bloomParams.z = value; } + } + + public bool TemporalFilteringActive + { + get { return m_temporalFilteringActive; } + set + { + if ( m_temporalFilteringActive != value ) + { + CleanTempFilterRT(); + } + m_temporalFilteringActive = value; + } + } + + public float TemporalFilteringValue + { + get { return m_temporalFilteringValue; } + set { m_temporalFilteringValue = value; } + } + + public int SoftMaxdownscales + { + get { return m_softMaxdownscales; } + } + public int BloomDownsampleCount + { + get { return m_bloomDownsampleCount; } + set { m_bloomDownsampleCount = Mathf.Clamp( value, MinDownscales, m_softMaxdownscales ); } + } + + public int FeaturesSourceId + { + get { return m_featuresSourceId; } + set { m_featuresSourceId = Mathf.Clamp( value, 0, m_bloomDownsampleCount - 1 ); } + } + + public bool[] DownscaleSettingsFoldout + { + get { return m_downscaleSettingsFoldout; } + } + + public float[] UpscaleWeights + { + get { return m_upscaleWeights; } + } + + public float[] LensDirtWeights + { + get { return m_lensDirtWeights; } + } + + public float[] LensStarburstWeights + { + get { return m_lensStarburstWeights; } + } + + public float[] GaussianRadius + { + get { return m_gaussianRadius; } + } + + public int[] GaussianSteps + { + get { return m_gaussianSteps; } + } + + public AnimationCurve TemporalFilteringCurve + { + get { return m_temporalFilteringCurve; } + set { m_temporalFilteringCurve = value; } + } + + public bool SeparateFeaturesThreshold + { + get { return m_separateFeaturesThreshold; } + set { m_separateFeaturesThreshold = value; } + } + + public float FeaturesThreshold + { + get { return m_featuresThreshold; } + set { m_featuresThreshold = value < 0 ? 0 : value; } + } + + public DebugToScreenEnum DebugToScreen + { + get { return m_debugToScreen; } + set { m_debugToScreen = value; } + } + + public UpscaleQualityEnum UpscaleQuality + { + get { return m_upscaleQuality; } + set { m_upscaleQuality = value; } + } + + public bool ShowDebugMessages + { + get { return m_showDebugMessages; } + set { m_showDebugMessages = value; } + } + + public MainThresholdSizeEnum MainThresholdSize + { + get { return m_mainThresholdSize; } + set { m_mainThresholdSize = value; } + } + + public RenderTexture TargetTexture + { + get { return m_targetTexture; } + set { m_targetTexture = value; } + } + + public Texture MaskTexture + { + get { return m_maskTexture; } + set { m_maskTexture = value; } + } + + public bool ApplyBokehFilter + { + get { return m_bokehFilter.ApplyBokeh; } + set { m_bokehFilter.ApplyBokeh = value; } + } + + public bool ApplyLensFlare + { + get { return m_lensFlare.ApplyLensFlare; } + set { m_lensFlare.ApplyLensFlare = value; } + } + + public bool ApplyLensGlare + { + get { return m_anamorphicGlare.ApplyLensGlare; } + set { m_anamorphicGlare.ApplyLensGlare = value; } + } +#if TRIAL + void OnGUI() + { + if ( !silentError && watermark != null ) + GUI.DrawTexture( new Rect( Screen.width - watermark.width - 15, Screen.height - watermark.height - 12, watermark.width, watermark.height ), watermark ); + } +#endif + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Plugins/AmplifyBloomBase.cs.meta b/Assets/AmplifyBloom/Plugins/AmplifyBloomBase.cs.meta new file mode 100644 index 0000000..bc87e76 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/AmplifyBloomBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b553d0142ed085643beceeb17a1cc53f +timeCreated: 1450374775 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/AmplifyBloomEffect.cs b/Assets/AmplifyBloom/Plugins/AmplifyBloomEffect.cs new file mode 100644 index 0000000..e213be2 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/AmplifyBloomEffect.cs @@ -0,0 +1,12 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +namespace AmplifyBloom +{ + [ExecuteInEditMode] + [System.Serializable] + [RequireComponent( typeof( Camera ) )] + [AddComponentMenu( "Image Effects/Amplify Bloom")] + public sealed class AmplifyBloomEffect : AmplifyBloomBase { } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Plugins/AmplifyBloomEffect.cs.meta b/Assets/AmplifyBloom/Plugins/AmplifyBloomEffect.cs.meta new file mode 100644 index 0000000..e17dc14 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/AmplifyBloomEffect.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9b8c208e531a26a41a4629789f4a706a +timeCreated: 1450374788 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: a01cbbdf250cc3f45a0f180140bb24e0, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Editor.meta b/Assets/AmplifyBloom/Plugins/Editor.meta new file mode 100644 index 0000000..aacde94 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4f67db82a022d0a4e8bfbc831c3e26e6 +folderAsset: yes +timeCreated: 1447243327 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Editor/About.cs b/Assets/AmplifyBloom/Plugins/Editor/About.cs new file mode 100644 index 0000000..67795d5 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Editor/About.cs @@ -0,0 +1,86 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +using UnityEditor; + +namespace AmplifyBloom +{ + public class About : EditorWindow + { + private const string AboutImagePath = "AmplifyBloom/Textures/About.png"; + private Vector2 m_scrollPosition = Vector2.zero; + private Texture2D m_aboutImage; + + [MenuItem( "Window/Amplify Bloom/About...", false, 20 )] + static void Init() + { + About window = ( About ) GetWindow( typeof( About ), true, "About Amplify Bloom" ); + window.minSize = new Vector2( 502, 290 ); + window.maxSize = new Vector2( 502, 290 ); + window.Show(); + } + + public void OnFocus() + { + string[] guids = AssetDatabase.FindAssets( "About t:Texture" ); + string asset = ""; + + foreach ( string guid in guids ) + { + string path = AssetDatabase.GUIDToAssetPath( guid ); + if ( path.EndsWith( AboutImagePath ) ) + { + asset = path; + break; + } + } + + if ( !string.IsNullOrEmpty( asset ) ) + { + TextureImporter importer = AssetImporter.GetAtPath( asset ) as TextureImporter; + + if ( importer.textureType != TextureImporterType.GUI ) + { + importer.textureType = TextureImporterType.GUI; + AssetDatabase.ImportAsset( asset ); + } + + m_aboutImage = AssetDatabase.LoadAssetAtPath( asset, typeof( Texture2D ) ) as Texture2D; + } + else + Debug.LogWarning( "[AmplifyBloom] About image not found at " + AboutImagePath ); + } + + public void OnGUI() + { + m_scrollPosition = GUILayout.BeginScrollView( m_scrollPosition ); + + GUILayout.BeginVertical(); + + GUILayout.Space( 10 ); + + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + GUILayout.Box( m_aboutImage, GUIStyle.none ); + + if ( Event.current.type == EventType.MouseUp && GUILayoutUtility.GetLastRect().Contains( Event.current.mousePosition ) ) + Application.OpenURL( "http://www.amplify.pt" ); + + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + + GUIStyle labelStyle = new GUIStyle( EditorStyles.label ); + labelStyle.alignment = TextAnchor.MiddleCenter; + labelStyle.wordWrap = true; + + GUILayout.Label( "\nAmplify Bloom " + VersionInfo.StaticToString(), labelStyle, GUILayout.ExpandWidth( true ) ); + + GUILayout.Label( "\nCopyright (c) Amplify Creations, Lda. All rights reserved.\n", labelStyle, GUILayout.ExpandWidth( true ) ); + + GUILayout.EndVertical(); + + GUILayout.EndScrollView(); + } + } +} diff --git a/Assets/AmplifyBloom/Plugins/Editor/About.cs.meta b/Assets/AmplifyBloom/Plugins/Editor/About.cs.meta new file mode 100644 index 0000000..0281b0d --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Editor/About.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7f402ae73c9163e45b637430b719b6bb +timeCreated: 1449660979 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEditor.dll b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEditor.dll new file mode 100644 index 0000000..9fc9694 Binary files /dev/null and b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEditor.dll differ diff --git a/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEditor.dll.meta b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEditor.dll.meta new file mode 100644 index 0000000..4f3ef44 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEditor.dll.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: e466a10d7a3c1ea40be59051b1ddaeed +timeCreated: 1454436112 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditor.cs b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditor.cs new file mode 100644 index 0000000..48c2bf2 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditor.cs @@ -0,0 +1,10 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEditor; +namespace AmplifyBloom +{ + [System.Serializable] + [CustomEditor( typeof( AmplifyBloomEffect ) )] + public sealed class AmplifyBloomEffectEditor : AmplifyBloomEffectEditorBase { } +} diff --git a/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditor.cs.meta b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditor.cs.meta new file mode 100644 index 0000000..0706362 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d88dd18818d95ed41b9a480993d6c9f9 +timeCreated: 1450374628 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditorBase.cs b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditorBase.cs new file mode 100644 index 0000000..36b9385 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditorBase.cs @@ -0,0 +1,616 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +#if UNITY_5_0 || UNITY_5_1 || UNITY_5_2 +#define UNITY_PRE_5_3 +#endif + +using UnityEngine; +using UnityEditor; +#if !UNITY_PRE_5_3 +using UnityEditor.SceneManagement; +#endif + +namespace AmplifyBloom +{ + [System.Serializable] + public class AmplifyBloomEffectEditorBase : Editor + { + private const string IntensityStr = "Intensity"; + private const string AdvancedSettingsStr = "Advanced Settings"; + private Rect TemporalCurveRanges = new Rect( 0, 0, 1, 0.999f ); + private Color TemporalCurveColor = new Color( 0, 1, 0, 1 ); + [SerializeField] + private bool m_bokehAdvancedSettingsFoldout = false; + [SerializeField] + private bool m_ghostsAdvancedSettingsFoldout = false; + [SerializeField] + private bool m_haloAdvancedSettingsFoldout = false; + [SerializeField] + private bool m_lensGlareAdvancedSettingsFoldout = false; + [SerializeField] + private bool m_bloomFoldout = true; + [SerializeField] + private bool m_temporalFilterFoldout = false; + [SerializeField] + private bool m_featuresFoldout = false; + [SerializeField] + private bool m_bokehFilterFoldout = false; + [SerializeField] + private bool m_lensFlareFoldout = false; + [SerializeField] + private bool m_ghostsFoldout = false; + [SerializeField] + private bool m_haloFoldout = false; + [SerializeField] + private bool m_lensGlareFoldout = false; + [SerializeField] + private bool m_lensDirtFoldout = false; + [SerializeField] + private bool m_lensStarburstFoldout = false; + [SerializeField] + private bool m_mipSettingsFoldout = false; + [SerializeField] + private bool m_lensDirtWeightsFoldout = false; + + [SerializeField] + private bool m_lensStarburstWeightsFoldout = false; + [SerializeField] + private bool m_bloomWeightsFoldout = false; + + + private GUIStyle m_mainFoldoutStyle; + private GUIContent m_highPrecisionGC = new GUIContent( "Precision", "Switch between HDR and LDR Render Texture formats." ); + private GUIContent m_debugToScreenGC = new GUIContent( "Debug", "Debug each bloom/feature stage to screen." ); + private GUIContent m_ldrRangeGC = new GUIContent( "Range", "LDR Tweakable range. Use to match HDR results." ); + private GUIContent m_overallIntensityGC = new GUIContent( IntensityStr, "Overall bloom intensity. Affects all the effects bellow." ); + private GUIContent m_thresholdGC = new GUIContent( "Threshold", "Luminance threshold to setup what should generate bloom." ); + private GUIContent m_blurStepGC = new GUIContent( "Blur Step", "Number of blur passes done on bloom results. Higher number provides smoother results but decreases performance." ); + private GUIContent m_blurRadiusGC = new GUIContent( "Blur Radius", "Blur radius amount" ); + private GUIContent m_upscaleWeightGC = new GUIContent( "Weight", "Influence of the selected Mip. Only valid when Mip Amount greater than 0." ); + private GUIContent m_featuresSourceIdGC = new GUIContent( "Features Source Id", "Mip source which will be used to generate features." ); + private GUIContent m_upscaleQualityGC = new GUIContent( "Technique", "Method which will be used to upscale results. Realistic is visually more robust but less efficient." ); + private GUIContent m_downscaleAmountGC = new GUIContent( "Mip Count", "Number of resizes done on main RT before performing bloom. Increasing its the number provides finer tweaking but at the loss at performance." ); + private GUIContent m_upscaleScaleRadiusGC = new GUIContent( "Upscale Blur Radius", "Radius used on the tent filter when upscaling to source size." ); + private GUIContent m_filterCurveGC = new GUIContent( "Filter Curve", "Range of values which defines temporal filter behaviour." ); + private GUIContent m_filterValueGC = new GUIContent( "Filter Value", "Position on the filter curve." ); + private GUIContent m_separateThresholdGC = new GUIContent( "Threshold", "Threshold value for second threshold layer." ); + private GUIContent m_bokehApplyOnBloomSourceGC = new GUIContent( "Apply on Bloom Source", "Bokeh filtering can either be applied on the bloom source and visually affect it or only affect features (lens flare/glare/dirt/starburst)." ); + private GUIContent m_bokehApertureShapeGC = new GUIContent( "Aperture Shape", "Type of bokeh filter which will reshape bloom results." ); + private GUIContent m_bokehSampleRadiusGC = new GUIContent( "Sample Radius", "Bokeh imaginary camera DOF's radius." ); + private GUIContent m_bokehRotationGC = new GUIContent( "Rotation", "Filter overall rotation." ); + private GUIContent m_bokehApertureGC = new GUIContent( "Aperture", "Bokeh imaginary camera DOF's aperture." ); + private GUIContent m_bokehFocalLengthGC = new GUIContent( "Focal Length", "Bokeh imaginary camera DOF's focal length." ); + private GUIContent m_bokehFocalDistanceGC = new GUIContent( "Focal Distance", "Bokeh imaginary camera DOF's focal distance." ); + private GUIContent m_bokehMaxCoCDiameterGC = new GUIContent( "Max CoC Diameter", "Bokeh imaginary camera DOF's Max Circle of Confusion diameter." ); + private GUIContent m_lensFlareIntensityGC = new GUIContent( IntensityStr, "Overall intensity for both halo and ghosts." ); + private GUIContent m_lensFlareBlurAmountGC = new GUIContent( "Blur amount", "Amount of blur applied on generated halo and ghosts." ); + private GUIContent m_lensFlareRadialTintGC = new GUIContent( "Radial Tint", "Dynamic tint color applied to halo and ghosts according to its screen position. Left most color on gradient corresponds to screen center." ); + private GUIContent m_lensFlareGhostsInstensityGC = new GUIContent( IntensityStr, "Ghosts intensity." ); + private GUIContent m_lensFlareGhostAmountGC = new GUIContent( "Count", "Amount of ghosts generated from each bloom area." ); + private GUIContent m_lensFlareGhostDispersalGC = new GUIContent( "Dispersal", "Distance between ghost generated from the same bloom area." ); + private GUIContent m_lensFlareGhostChrmDistortGC = new GUIContent( "Chromatic Distortion", "Amount of chromatic distortion applied on each ghost." ); + private GUIContent m_lensFlareGhostPowerFactorGC = new GUIContent( "Power Factor", "Base on ghost fade power function." ); + private GUIContent m_lensFlareGhostPowerFalloffGC = new GUIContent( "Power Falloff", "Exponent on ghost fade power function." ); + private GUIContent m_lensFlareHalosIntensityGC = new GUIContent( IntensityStr, "Halo intensity." ); + private GUIContent m_lensFlareHaloWidthGC = new GUIContent( "Width", "Width/Radius of the generated halo." ); + private GUIContent m_lensFlareHaloChrmDistGC = new GUIContent( "Chromatic Distortion", "Amount of chromatic distortion applied on halo." ); + private GUIContent m_lensFlareHaloPowerFactorGC = new GUIContent( "Power Factor", "Base on halo fade power function." ); + private GUIContent m_lensFlareHaloPowerFalloffGC = new GUIContent( "Power Falloff", "Exponent on halo fade power function." ); + private GUIContent m_lensGlareIntensityGC = new GUIContent( IntensityStr, "Lens Glare intensity." ); + private GUIContent m_lensGlareOverallStreakScaleGC = new GUIContent( "Streak Scale", "Overall glare streak length modifier." ); + private GUIContent m_lensGlareOverallTintGC = new GUIContent( "Overall Tint", "Tint applied uniformly across each type of glare." ); + private GUIContent m_lensGlareTypeGC = new GUIContent( "Type", "Type of glare." ); + private GUIContent m_lensGlareTintAlongGlareGC = new GUIContent( "Tint Along Glare", "Tint for spectral types along each ray.Leftmost color on the gradient corresponds to sample near bloom source." ); + private GUIContent m_lensGlarePerPassDispGC = new GUIContent( "Per Pass Displacement", "Distance between samples when creating each ray." ); + private GUIContent m_lensGlareMaxPerRayGC = new GUIContent( "Max Per Ray Passes", "Max amount of passes used to build each ray. More passes means more defined and propagated rays but decreases performance." ); + private GUIContent m_lensDirtIntensityGC = new GUIContent( IntensityStr, "Lens Dirt Intensity." ); + private GUIContent m_lensDirtTextureGC = new GUIContent( "Dirt Texture", "Mask from which dirt is going to be created." ); + private GUIContent m_lensStarburstIntensityGC = new GUIContent( IntensityStr, "Lens Starburst Intensity." ); + private GUIContent m_lensStarburstTextureGC = new GUIContent( "Starburst Texture", "Mask from which starburst is going to be created." ); + private GUIContent m_bloomFoldoutGC = new GUIContent( " Bloom", "Settings for bloom generation, will affect all features." ); + private GUIContent m_bokehFilterFoldoutGC = new GUIContent( " Bokeh Filter", "Settings for Bokeh filter generation." ); + private GUIContent m_lensFlareFoldoutGC = new GUIContent( " Lens Flare", "Overall settings for Lens Flare (Halo/Ghosts) generation." ); + private GUIContent m_ghostsFoldoutGC = new GUIContent( "Ghosts", "Settings for Ghosts generation." ); + private GUIContent m_halosFoldoutGC = new GUIContent( "Halo", "Settings for Halo generation." ); + private GUIContent m_lensGlareFoldoutGC = new GUIContent( " Lens Glare", "Settings for Anamorphic Lens Glare generation." ); + private GUIContent m_lensDirtFoldoutGC = new GUIContent( " Lens Dirt", "Settings for Lens Dirt composition." ); + private GUIContent m_lensStarburstFoldoutGC = new GUIContent( " Lens Starburst", "Settings for Lens Starburts composition." ); + private GUIContent m_temporalFilterFoldoutGC = new GUIContent( " Temporal Filter", "Settings for temporal filtering configuration." ); + private GUIContent m_sepFeaturesThresholdFoldoutGC = new GUIContent( " Features Threshold", "Settings for features threshold." ); + private GUIContent m_advancedSettingsBokehFoldoutGC = new GUIContent( AdvancedSettingsStr, "Advanced settings for Bokeh filter." ); + private GUIContent m_advancedSettingsGhostsFoldoutGC = new GUIContent( AdvancedSettingsStr, "Advanced settings for Ghosts." ); + private GUIContent m_advancedSettingsHalosFoldoutGC = new GUIContent( AdvancedSettingsStr, "Advanced settings for Halo." ); + private GUIContent m_advancedSettingsLensGlareFoldoutGC = new GUIContent( AdvancedSettingsStr, "Advanced settings for Lens Glare." ); + private GUIContent m_customGlareIdxGC = new GUIContent( "Current", "Current selected custom glare from array bellow." ); + private GUIContent m_customGlareSizeGC = new GUIContent( "Size", "Amount of customizable glare definitions." ); + private GUIContent m_customGlareNameGC = new GUIContent( "Name", "Custom glare name." ); + private GUIContent m_customGlareStarInclinationGC = new GUIContent( "Initial Offset", "Star angle initial offset." ); + private GUIContent m_customGlareChromaticAberrationGC = new GUIContent( "Chromatic Amount", "Amount of influence from chromatic gradient." ); + private GUIContent m_customGlareStarlinesCountGC = new GUIContent( "Star Lines Count", "Amount of generated rays." ); + private GUIContent m_customGlarePassCountGC = new GUIContent( "Pass Count", "Amount of passes used to generate rays." ); + private GUIContent m_customGlareSampleLengthGC = new GUIContent( "Sample Length", "Spacing between each sample when generating rays." ); + private GUIContent m_customGlareAttenuationGC = new GUIContent( "Attenuation", "Attenuation factor along ray." ); + private GUIContent m_customGlareRotationGC = new GUIContent( "Camera Influence", "Amount of influence camera rotation has on rays." ); + private GUIContent m_customGlareCustomIncrementGC = new GUIContent( "Custom Increment", "Custom angle increment between rays. They will be evenly rotated if specified a value equal to 0." ); + private GUIContent m_customGlareLongAttenuationGC = new GUIContent( "Long Attenuation", "Second attenuation factor. Rays will alternate between Attenuation ( Odd numbers) and Long Attenuation ( Even numbers). Only active if specified value is greater than 0." ); + private GUIContent m_customGlareFoldoutGC = new GUIContent( "Custom Label", "Properties for hovered custom glare." ); + private GUIContent m_mipSettingGC = new GUIContent( "Mip Settings", "Configurable settings for each mip" ); + private GUIContent m_lensWeightsFoldoutGC = new GUIContent( "Mip Weights", "Each mip contribution to the Lens Dirt and Starburts feature." ); + private GUIContent m_lensWeightGC = new GUIContent( "Mip ", "Influence of the selected Mip. Only valid when Mip Amount greater than 0." ); + private GUIContent[] m_lensWeightGCArr; + private GUIContent m_bloomWeightsFoldoutGC = new GUIContent( "Mip Weights", "Each mip contribution to Bloom." ); + private GUIContent m_showDebugMessagesGC = new GUIContent( "Show Warnings", "Show relevant Amplify Bloom Warnings to Console." ); + private GUIContent m_mainThresholdSizeGC = new GUIContent( "Source Downscale", "Initial render texture scale on which the Main Threshold will be written." ); + private GUIContent m_targetTextureGC = new GUIContent( "Target Texture", "Render Bloom to a render texture instead of destination" ); + private GUIContent m_maskTextureGC = new GUIContent( "Mask Texture", "Render Bloom only on certain areas specifed by mask." ); + private GUIStyle m_foldoutClosed; + private GUIStyle m_foldoutOpened; + private GUIStyle m_toggleStyle; + private GUIStyle m_mainLabelStyle; + private GUIStyle m_disabledToggleStyle; + + + private GUIContent[] m_bloomWeightsLabelGCArr; + void Awake() + { + m_bloomWeightsLabelGCArr = new GUIContent[ AmplifyBloomBase.MaxDownscales ]; + for ( int i = 0; i < m_bloomWeightsLabelGCArr.Length; i++ ) + { + m_bloomWeightsLabelGCArr[ i ] = new GUIContent( "Mip " + ( i + 1 ), m_bloomWeightsFoldoutGC.tooltip ); + } + + m_mainLabelStyle = new GUIStyle( EditorStyles.label ); + m_mainLabelStyle.fontStyle = FontStyle.Bold; + + m_disabledToggleStyle = new GUIStyle( EditorStyles.toggle ); + m_disabledToggleStyle.normal = m_disabledToggleStyle.onActive; + + m_foldoutClosed = new GUIStyle( EditorStyles.foldout ); + m_foldoutClosed.fontStyle = FontStyle.Bold; + + m_foldoutOpened = new GUIStyle( EditorStyles.foldout ); + m_foldoutOpened.normal = m_foldoutOpened.onActive; + m_foldoutOpened.fontStyle = FontStyle.Bold; + + m_mainFoldoutStyle = new GUIStyle( EditorStyles.foldout ); + m_mainFoldoutStyle.fontStyle = FontStyle.Bold; + + m_toggleStyle = new GUIStyle( EditorStyles.toggle ); + m_toggleStyle.fontStyle = FontStyle.Bold; + + m_lensWeightGCArr = new GUIContent[ AmplifyBloomBase.MaxDownscales ]; + for ( int i = 0; i < m_lensWeightGCArr.Length; i++ ) + { + m_lensWeightGCArr[ i ] = new GUIContent( m_lensWeightGC ); + m_lensWeightGCArr[ i ].text += ( i + 1 ).ToString(); + } + AmplifyBloomBase bloom = ( AmplifyBloomBase ) target; + if ( bloom.LensDirtTexture == null ) + { + bloom.LensDirtTexture = AssetDatabase.LoadAssetAtPath( "Assets/AmplifyBloom/Samples/Textures/Dirt/DirtHighContrast.png" ); + } + + if ( bloom.LensStardurstTex == null ) + { + bloom.LensStardurstTex = AssetDatabase.LoadAssetAtPath( "Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst.png" ); + } + } + + bool CustomFoldout( bool value , GUIContent content, int space = 4) + { + GUIStyle foldoutStyle = value ? m_foldoutOpened : m_foldoutClosed; + m_mainLabelStyle.fontStyle = FontStyle.Normal; + EditorGUILayout.BeginHorizontal(); + { + GUILayout.Space( space ); + if ( GUILayout.Button( string.Empty, foldoutStyle, GUILayout.Width( 10 ) ) ) + { + value = !value; + + } + + if ( GUILayout.Button( content, m_mainLabelStyle ) ) + { + value = !value; + } + + } + EditorGUILayout.EndHorizontal(); + return value; + } + + void ToggleFoldout( GUIContent content, ref bool foldoutValue, ref bool toggleValue, bool applyBold, int space = -8, bool specialToggle = false ) + { + GUIStyle foldoutStyle = foldoutValue ? m_foldoutOpened : m_foldoutClosed; + m_toggleStyle.fontStyle = foldoutStyle.fontStyle = applyBold ? FontStyle.Bold : FontStyle.Normal; + m_mainLabelStyle.fontStyle = m_toggleStyle.fontStyle; + EditorGUILayout.BeginHorizontal(); + { + GUILayout.Space( space ); + if ( GUILayout.Button( string.Empty, foldoutStyle, GUILayout.Width( 10 ) ) ) + { + foldoutValue = !foldoutValue; + } + + + if ( specialToggle ) + { + GUI.enabled = false; + GUILayout.Button( string.Empty, m_disabledToggleStyle, GUILayout.Width( 10 ) ); + GUI.enabled = true; + } + else + { + toggleValue = GUILayout.Toggle( toggleValue, content, m_toggleStyle, GUILayout.Width( 10 ) ); + } + + if ( GUILayout.Button( content, m_mainLabelStyle ) ) + { + foldoutValue = !foldoutValue; + } + + } + EditorGUILayout.EndHorizontal(); + } + + override public void OnInspectorGUI() + { + Undo.RecordObject( target, "AmplifyBloomInspector" ); + AmplifyBloomBase bloom = ( AmplifyBloomBase ) target; + SerializedObject bloomObj = new SerializedObject( bloom ); + GUILayout.BeginVertical(); + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.Separator(); + bool applyBloom = true; + ToggleFoldout( m_bloomFoldoutGC, ref m_bloomFoldout, ref applyBloom, true, -8, true ); + if ( m_bloomFoldout ) + { + bloom.UpscaleQuality = ( UpscaleQualityEnum ) EditorGUILayout.EnumPopup( m_upscaleQualityGC, bloom.UpscaleQuality ); + bloom.MainThresholdSize = ( MainThresholdSizeEnum ) EditorGUILayout.EnumPopup( m_mainThresholdSizeGC, bloom.MainThresholdSize ); + + GUILayout.BeginHorizontal(); + float originalLabelWidth = EditorGUIUtility.labelWidth; + + bloom.CurrentPrecisionMode = ( PrecisionModes ) EditorGUILayout.EnumPopup( m_highPrecisionGC, bloom.CurrentPrecisionMode ); + GUI.enabled = !bloom.HighPrecision; + { + EditorGUIUtility.labelWidth = 45; + bloom.BloomRange = EditorGUILayout.FloatField( m_ldrRangeGC, bloom.BloomRange, GUILayout.MaxWidth( 1300 ) ); + } + EditorGUIUtility.labelWidth = originalLabelWidth; + GUI.enabled = true; + + GUILayout.EndHorizontal(); + + bloom.OverallIntensity = EditorGUILayout.FloatField( m_overallIntensityGC, bloom.OverallIntensity ); + + bloom.OverallThreshold = EditorGUILayout.FloatField( m_thresholdGC, bloom.OverallThreshold ); + + SerializedProperty maskTextureField = bloomObj.FindProperty( "m_maskTexture" ); + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField( maskTextureField, m_maskTextureGC ); + if ( EditorGUI.EndChangeCheck() ) + { + bloomObj.ApplyModifiedProperties(); + } + + SerializedProperty targetTextureField = bloomObj.FindProperty( "m_targetTexture" ); + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField( targetTextureField, m_targetTextureGC ); + if ( EditorGUI.EndChangeCheck() ) + { + bloomObj.ApplyModifiedProperties(); + } + //bloom.TargetTexture = EditorGUILayout.ObjectField( m_targetTextureGC, bloom.TargetTexture, typeof( RenderTexture ),false ) as RenderTexture; + bloom.DebugToScreen = ( DebugToScreenEnum ) EditorGUILayout.EnumPopup( m_debugToScreenGC, bloom.DebugToScreen ); + bloom.ShowDebugMessages = EditorGUILayout.Toggle( m_showDebugMessagesGC, bloom.ShowDebugMessages ); + int weightMaxDowsampleCount = Mathf.Max( 1, bloom.BloomDownsampleCount ); + { + EditorGUI.indentLevel++; + m_mipSettingsFoldout = CustomFoldout( m_mipSettingsFoldout, m_mipSettingGC ); + if ( m_mipSettingsFoldout ) + { + EditorGUI.indentLevel++; + bloom.BloomDownsampleCount = EditorGUILayout.IntSlider( m_downscaleAmountGC, bloom.BloomDownsampleCount, AmplifyBloomBase.MinDownscales, bloom.SoftMaxdownscales ); + bool guiState = bloom.BloomDownsampleCount != 0; + + GUI.enabled = ( bloom.UpscaleQuality == UpscaleQualityEnum.Realistic ) && guiState; + { + bloom.UpscaleBlurRadius = EditorGUILayout.Slider( m_upscaleScaleRadiusGC, bloom.UpscaleBlurRadius, 1f, 3.0f ); + } + GUI.enabled = guiState; + + int featuresSourceId = bloom.FeaturesSourceId + 1; + featuresSourceId = EditorGUILayout.IntSlider( m_featuresSourceIdGC, featuresSourceId, 1, bloom.BloomDownsampleCount ); + bloom.FeaturesSourceId = featuresSourceId - 1; + EditorGUI.indentLevel--; + } + GUI.enabled = true; + + m_bloomWeightsFoldout = CustomFoldout( m_bloomWeightsFoldout, m_bloomWeightsFoldoutGC ); + if ( m_bloomWeightsFoldout ) + { + EditorGUI.indentLevel++; + + float blurStepSize = 15; + float blurRadiusSize = 15; + float weightSize = 25; + + GUILayout.BeginHorizontal(); + GUILayout.Space( 41 ); + EditorGUILayout.LabelField( m_blurStepGC, GUILayout.MinWidth( blurStepSize ) ); + GUILayout.Space( -26 ); + EditorGUILayout.LabelField( m_blurRadiusGC, GUILayout.MinWidth( blurRadiusSize ) ); + GUILayout.Space( -27 ); + EditorGUILayout.LabelField( m_upscaleWeightGC, GUILayout.MinWidth( weightSize ) ); + GUILayout.EndHorizontal(); + for ( int i = 0; i < weightMaxDowsampleCount; i++ ) + { + GUILayout.BeginHorizontal(); + EditorGUILayout.LabelField( m_bloomWeightsLabelGCArr[ i ], GUILayout.Width( 65 ) ); + GUILayout.Space( -30 ); + + bloom.GaussianSteps[ i ] = EditorGUILayout.IntField( string.Empty, bloom.GaussianSteps[ i ], GUILayout.MinWidth( blurStepSize ) ); + bloom.GaussianSteps[ i ] = Mathf.Clamp( bloom.GaussianSteps[ i ], 0, AmplifyBloomBase.MaxGaussian ); + + GUILayout.Space( -27 ); + bloom.GaussianRadius[ i ] = EditorGUILayout.FloatField( string.Empty, bloom.GaussianRadius[ i ], GUILayout.MinWidth( blurRadiusSize ) ); + bloom.GaussianRadius[ i ] = Mathf.Max( bloom.GaussianRadius[ i ], 0f ); + + GUILayout.Space( -27 ); + int id = weightMaxDowsampleCount - 1 - i; + bloom.UpscaleWeights[ id ] = EditorGUILayout.FloatField( string.Empty, bloom.UpscaleWeights[ id ], GUILayout.MinWidth( weightSize ) ); + bloom.UpscaleWeights[ id ] = Mathf.Max( bloom.UpscaleWeights[ id ], 0f ); + + GUILayout.EndHorizontal(); + } + EditorGUI.indentLevel--; + } + + } + GUI.enabled = true; + + bool applyTemporalFilter = bloom.TemporalFilteringActive; + ToggleFoldout( m_temporalFilterFoldoutGC, ref m_temporalFilterFoldout, ref applyTemporalFilter, false, 4 ); + bloom.TemporalFilteringActive = applyTemporalFilter; + if ( m_temporalFilterFoldout ) + { + GUI.enabled = bloom.TemporalFilteringActive; + { + bloom.TemporalFilteringCurve = EditorGUILayout.CurveField( m_filterCurveGC, bloom.TemporalFilteringCurve, TemporalCurveColor, TemporalCurveRanges ); + bloom.TemporalFilteringValue = EditorGUILayout.Slider( m_filterValueGC, bloom.TemporalFilteringValue, 0.01f, 1f ); + } + GUI.enabled = true; + } + + bool applySeparateFeatures = bloom.SeparateFeaturesThreshold; + ToggleFoldout( m_sepFeaturesThresholdFoldoutGC, ref m_featuresFoldout, ref applySeparateFeatures, false, 4 ); + bloom.SeparateFeaturesThreshold = applySeparateFeatures; + + if ( m_featuresFoldout ) + { + GUI.enabled = bloom.SeparateFeaturesThreshold; + { + bloom.FeaturesThreshold = EditorGUILayout.FloatField( m_separateThresholdGC, bloom.FeaturesThreshold ); + } + GUI.enabled = true; + } + EditorGUI.indentLevel--; + + } + + bool applyLensDirt = bloom.ApplyLensDirt; + ToggleFoldout( m_lensDirtFoldoutGC, ref m_lensDirtFoldout, ref applyLensDirt, true ); + bloom.ApplyLensDirt = applyLensDirt; + if ( m_lensDirtFoldout ) + { + GUI.enabled = bloom.ApplyLensDirt; + bloom.LensDirtStrength = EditorGUILayout.FloatField( m_lensDirtIntensityGC, bloom.LensDirtStrength ); + + + EditorGUI.indentLevel++; + m_lensDirtWeightsFoldout = CustomFoldout( m_lensDirtWeightsFoldout, m_lensWeightsFoldoutGC ); + if ( m_lensDirtWeightsFoldout ) + { + for ( int i = 0; i < bloom.BloomDownsampleCount; i++ ) + { + int id = bloom.BloomDownsampleCount - 1 - i; + bloom.LensDirtWeights[ id ] = EditorGUILayout.FloatField( m_lensWeightGCArr[ i ], bloom.LensDirtWeights[ id ] ); + bloom.LensDirtWeights[ id ] = Mathf.Max( bloom.LensDirtWeights[ id ], 0f ); + } + } + EditorGUI.indentLevel--; + bloom.LensDirtTexture = EditorGUILayout.ObjectField( m_lensDirtTextureGC, bloom.LensDirtTexture, typeof( Texture ), false ) as Texture; + GUI.enabled = true; + } + + bool applyStarburst = bloom.ApplyLensStardurst; + ToggleFoldout( m_lensStarburstFoldoutGC, ref m_lensStarburstFoldout, ref applyStarburst, true ); + bloom.ApplyLensStardurst = applyStarburst; + if ( m_lensStarburstFoldout ) + { + GUI.enabled = bloom.ApplyLensStardurst; + { + bloom.LensStarburstStrength = EditorGUILayout.FloatField( m_lensStarburstIntensityGC, bloom.LensStarburstStrength ); + EditorGUI.indentLevel++; + m_lensStarburstWeightsFoldout = CustomFoldout( m_lensStarburstWeightsFoldout, m_lensWeightsFoldoutGC ); + if ( m_lensStarburstWeightsFoldout ) + { + for ( int i = 0; i < bloom.BloomDownsampleCount; i++ ) + { + int id = bloom.BloomDownsampleCount - 1 - i; + bloom.LensStarburstWeights[ id ] = EditorGUILayout.FloatField( m_lensWeightGCArr[ i ], bloom.LensStarburstWeights[ id ] ); + bloom.LensStarburstWeights[ id ] = Mathf.Max( bloom.LensStarburstWeights[ id ], 0f ); + } + + } + EditorGUI.indentLevel--; + bloom.LensStardurstTex = EditorGUILayout.ObjectField( m_lensStarburstTextureGC, bloom.LensStardurstTex, typeof( Texture ), false ) as Texture; + } + GUI.enabled = true; + } + + bool applyBokeh = bloom.BokehFilterInstance.ApplyBokeh; + ToggleFoldout( m_bokehFilterFoldoutGC, ref m_bokehFilterFoldout, ref applyBokeh, true ); + bloom.BokehFilterInstance.ApplyBokeh = applyBokeh; + if ( m_bokehFilterFoldout ) + { + GUI.enabled = bloom.BokehFilterInstance.ApplyBokeh; + { + bloom.BokehFilterInstance.ApplyOnBloomSource = EditorGUILayout.Toggle( m_bokehApplyOnBloomSourceGC, bloom.BokehFilterInstance.ApplyOnBloomSource ); + bloom.BokehFilterInstance.ApertureShape = ( ApertureShape ) EditorGUILayout.EnumPopup( m_bokehApertureShapeGC, bloom.BokehFilterInstance.ApertureShape ); + EditorGUI.indentLevel++; + m_bokehAdvancedSettingsFoldout = CustomFoldout( m_bokehAdvancedSettingsFoldout, m_advancedSettingsBokehFoldoutGC ); + if ( m_bokehAdvancedSettingsFoldout ) + { + bloom.BokehFilterInstance.OffsetRotation = EditorGUILayout.Slider( m_bokehRotationGC, bloom.BokehFilterInstance.OffsetRotation, 0, 360 ); + bloom.BokehFilterInstance.BokehSampleRadius = EditorGUILayout.Slider( m_bokehSampleRadiusGC, bloom.BokehFilterInstance.BokehSampleRadius, 0.01f, 1f ); + bloom.BokehFilterInstance.Aperture = EditorGUILayout.Slider( m_bokehApertureGC, bloom.BokehFilterInstance.Aperture, 0.01f, 0.05f ); + bloom.BokehFilterInstance.FocalLength = EditorGUILayout.Slider( m_bokehFocalLengthGC, bloom.BokehFilterInstance.FocalLength, 0.018f, 0.055f ); + bloom.BokehFilterInstance.FocalDistance = EditorGUILayout.Slider( m_bokehFocalDistanceGC, bloom.BokehFilterInstance.FocalDistance, 0.055f, 3f ); + bloom.BokehFilterInstance.MaxCoCDiameter = EditorGUILayout.Slider( m_bokehMaxCoCDiameterGC, bloom.BokehFilterInstance.MaxCoCDiameter, 0f, 2f ); + } + EditorGUI.indentLevel--; + } + GUI.enabled = true; + } + + bool applyLensFlare = bloom.LensFlareInstance.ApplyLensFlare; + ToggleFoldout( m_lensFlareFoldoutGC, ref m_lensFlareFoldout, ref applyLensFlare, true ); + bloom.LensFlareInstance.ApplyLensFlare = applyLensFlare; + if ( m_lensFlareFoldout ) + { + GUI.enabled = bloom.LensFlareInstance.ApplyLensFlare; + { + bloom.LensFlareInstance.OverallIntensity = EditorGUILayout.FloatField( m_lensFlareIntensityGC, bloom.LensFlareInstance.OverallIntensity ); + bloom.LensFlareInstance.LensFlareGaussianBlurAmount = EditorGUILayout.IntSlider( m_lensFlareBlurAmountGC, bloom.LensFlareInstance.LensFlareGaussianBlurAmount, 0, 3 ); + + EditorGUI.BeginChangeCheck(); + SerializedProperty gradientField = bloomObj.FindProperty( "m_lensFlare.m_lensGradient" ); + EditorGUILayout.PropertyField( gradientField, m_lensFlareRadialTintGC ); + if ( EditorGUI.EndChangeCheck() ) + { + bloomObj.ApplyModifiedProperties(); + bloom.LensFlareInstance.TextureFromGradient(); + } + + EditorGUI.indentLevel++; + m_ghostsFoldout = CustomFoldout( m_ghostsFoldout, m_ghostsFoldoutGC ); + if ( m_ghostsFoldout ) + { + bloom.LensFlareInstance.LensFlareNormalizedGhostsIntensity = EditorGUILayout.FloatField( m_lensFlareGhostsInstensityGC, bloom.LensFlareInstance.LensFlareNormalizedGhostsIntensity ); + bloom.LensFlareInstance.LensFlareGhostAmount = EditorGUILayout.IntSlider( m_lensFlareGhostAmountGC, bloom.LensFlareInstance.LensFlareGhostAmount, 0, AmplifyBloomBase.MaxGhosts ); + bloom.LensFlareInstance.LensFlareGhostsDispersal = EditorGUILayout.Slider( m_lensFlareGhostDispersalGC, bloom.LensFlareInstance.LensFlareGhostsDispersal, 0.01f, 1.0f ); + bloom.LensFlareInstance.LensFlareGhostChrDistortion = EditorGUILayout.Slider( m_lensFlareGhostChrmDistortGC, bloom.LensFlareInstance.LensFlareGhostChrDistortion, 0, 10 ); + EditorGUI.indentLevel++; + m_ghostsAdvancedSettingsFoldout = CustomFoldout( m_ghostsAdvancedSettingsFoldout, m_advancedSettingsGhostsFoldoutGC ,19); + if ( m_ghostsAdvancedSettingsFoldout ) + { + bloom.LensFlareInstance.LensFlareGhostsPowerFactor = EditorGUILayout.Slider( m_lensFlareGhostPowerFactorGC, bloom.LensFlareInstance.LensFlareGhostsPowerFactor, 0, 2 ); + bloom.LensFlareInstance.LensFlareGhostsPowerFalloff = EditorGUILayout.Slider( m_lensFlareGhostPowerFalloffGC, bloom.LensFlareInstance.LensFlareGhostsPowerFalloff, 1, 128 ); + } + EditorGUI.indentLevel--; + } + + m_haloFoldout = CustomFoldout( m_haloFoldout, m_halosFoldoutGC ); + if ( m_haloFoldout ) + { + bloom.LensFlareInstance.LensFlareNormalizedHaloIntensity = EditorGUILayout.FloatField( m_lensFlareHalosIntensityGC, bloom.LensFlareInstance.LensFlareNormalizedHaloIntensity ); + bloom.LensFlareInstance.LensFlareHaloWidth = EditorGUILayout.Slider( m_lensFlareHaloWidthGC, bloom.LensFlareInstance.LensFlareHaloWidth, 0, 1 ); + bloom.LensFlareInstance.LensFlareHaloChrDistortion = EditorGUILayout.Slider( m_lensFlareHaloChrmDistGC, bloom.LensFlareInstance.LensFlareHaloChrDistortion, 0, 10 ); + EditorGUI.indentLevel++; + m_haloAdvancedSettingsFoldout = CustomFoldout( m_haloAdvancedSettingsFoldout, m_advancedSettingsHalosFoldoutGC ,19); + if ( m_haloAdvancedSettingsFoldout ) + { + bloom.LensFlareInstance.LensFlareHaloPowerFactor = EditorGUILayout.Slider( m_lensFlareHaloPowerFactorGC, bloom.LensFlareInstance.LensFlareHaloPowerFactor, 1, 2 ); + bloom.LensFlareInstance.LensFlareHaloPowerFalloff = EditorGUILayout.Slider( m_lensFlareHaloPowerFalloffGC, bloom.LensFlareInstance.LensFlareHaloPowerFalloff, 1, 128 ); + } + EditorGUI.indentLevel--; + } + EditorGUI.indentLevel--; + } + GUI.enabled = true; + } + + bool applyGlare = bloom.LensGlareInstance.ApplyLensGlare; + ToggleFoldout( m_lensGlareFoldoutGC, ref m_lensGlareFoldout, ref applyGlare, true ); + bloom.LensGlareInstance.ApplyLensGlare = applyGlare; + if ( m_lensGlareFoldout ) + { + GUI.enabled = bloom.LensGlareInstance.ApplyLensGlare; + { + bloom.LensGlareInstance.Intensity = EditorGUILayout.FloatField( m_lensGlareIntensityGC, bloom.LensGlareInstance.Intensity ); + bloom.LensGlareInstance.OverallStreakScale = EditorGUILayout.Slider( m_lensGlareOverallStreakScaleGC, bloom.LensGlareInstance.OverallStreakScale, 0, 2 ); + bloom.LensGlareInstance.OverallTint = EditorGUILayout.ColorField( m_lensGlareOverallTintGC, bloom.LensGlareInstance.OverallTint ); + + EditorGUI.BeginChangeCheck(); + SerializedProperty gradientField = bloomObj.FindProperty( "m_anamorphicGlare.m_cromaticAberrationGrad" ); + EditorGUILayout.PropertyField( gradientField, m_lensGlareTintAlongGlareGC ); + if ( EditorGUI.EndChangeCheck() ) + { + bloomObj.ApplyModifiedProperties(); + bloom.LensGlareInstance.SetDirty(); + } + + bloom.LensGlareInstance.CurrentGlare = ( GlareLibType ) EditorGUILayout.EnumPopup( m_lensGlareTypeGC, bloom.LensGlareInstance.CurrentGlare ); + if ( bloom.LensGlareInstance.CurrentGlare == GlareLibType.Custom ) + { + EditorGUI.indentLevel++; + bloom.LensGlareInstance.CustomGlareDefAmount = EditorGUILayout.IntSlider( m_customGlareSizeGC, bloom.LensGlareInstance.CustomGlareDefAmount, 0, AmplifyGlare.MaxCustomGlare ); + if ( bloom.LensGlareInstance.CustomGlareDefAmount > 0 ) + { + bloom.LensGlareInstance.CustomGlareDefIdx = EditorGUILayout.IntSlider( m_customGlareIdxGC, bloom.LensGlareInstance.CustomGlareDefIdx, 0, bloom.LensGlareInstance.CustomGlareDef.Length - 1 ); + for ( int i = 0; i < bloom.LensGlareInstance.CustomGlareDef.Length; i++ ) + { + EditorGUI.indentLevel++; + m_customGlareFoldoutGC.text = "[" + i + "] " + bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.StarName; + bloom.LensGlareInstance.CustomGlareDef[ i ].FoldoutValue = CustomFoldout( bloom.LensGlareInstance.CustomGlareDef[ i ].FoldoutValue, m_customGlareFoldoutGC ); + if ( bloom.LensGlareInstance.CustomGlareDef[ i ].FoldoutValue ) + { + bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.StarName = EditorGUILayout.TextField( m_customGlareNameGC, bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.StarName ); + bloom.LensGlareInstance.CustomGlareDef[ i ].StarInclinationDeg = EditorGUILayout.Slider( m_customGlareStarInclinationGC, bloom.LensGlareInstance.CustomGlareDef[ i ].StarInclinationDeg, 0, 180 ); + bloom.LensGlareInstance.CustomGlareDef[ i ].ChromaticAberration = EditorGUILayout.Slider( m_customGlareChromaticAberrationGC, bloom.LensGlareInstance.CustomGlareDef[ i ].ChromaticAberration, 0, 1 ); + bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.StarlinesCount = EditorGUILayout.IntSlider( m_customGlareStarlinesCountGC, bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.StarlinesCount, 1, AmplifyGlare.MaxStarLines ); + bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.PassCount = EditorGUILayout.IntSlider( m_customGlarePassCountGC, bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.PassCount, 1, AmplifyGlare.MaxPasses ); + bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.SampleLength = EditorGUILayout.Slider( m_customGlareSampleLengthGC, bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.SampleLength, 0, 2 ); + bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.Attenuation = EditorGUILayout.Slider( m_customGlareAttenuationGC, bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.Attenuation, 0, 1 ); + bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.CameraRotInfluence = EditorGUILayout.FloatField( m_customGlareRotationGC, bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.CameraRotInfluence ); ; + bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.CustomIncrement = EditorGUILayout.Slider( m_customGlareCustomIncrementGC, bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.CustomIncrement, 0, 180 ); + bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.LongAttenuation = EditorGUILayout.Slider( m_customGlareLongAttenuationGC, bloom.LensGlareInstance.CustomGlareDef[ i ].CustomStarData.LongAttenuation, 0, 1 ); + } + EditorGUI.indentLevel--; + } + } + EditorGUI.indentLevel--; + } + + EditorGUI.indentLevel++; + m_lensGlareAdvancedSettingsFoldout = CustomFoldout( m_lensGlareAdvancedSettingsFoldout, m_advancedSettingsLensGlareFoldoutGC ); + if ( m_lensGlareAdvancedSettingsFoldout ) + { + bloom.LensGlareInstance.PerPassDisplacement = EditorGUILayout.Slider( m_lensGlarePerPassDispGC, bloom.LensGlareInstance.PerPassDisplacement, 1, 8 ); + bloom.LensGlareInstance.GlareMaxPassCount = EditorGUILayout.IntSlider( m_lensGlareMaxPerRayGC, bloom.LensGlareInstance.GlareMaxPassCount, 1, AmplifyGlare.MaxPasses ); + + } + EditorGUI.indentLevel--; + } + GUI.enabled = true; + } + + if ( EditorGUI.EndChangeCheck() ) + { + EditorUtility.SetDirty( bloom ); +#if !UNITY_PRE_5_3 + if ( !Application.isPlaying ) + { + EditorSceneManager.MarkSceneDirty( bloom.gameObject.scene ); + } +#endif + } + } + GUILayout.EndVertical(); + } + } +} diff --git a/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditorBase.cs.meta b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditorBase.cs.meta new file mode 100644 index 0000000..ce06d54 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Editor/AmplifyBloomEffectEditorBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 79c2337ab36e39e45b6e521f43eb1b23 +timeCreated: 1447666167 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Editor/Resources.meta b/Assets/AmplifyBloom/Plugins/Editor/Resources.meta new file mode 100644 index 0000000..069d7dc --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Editor/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8bae3645a24e3744fab5ec30f74b9af7 +folderAsset: yes +timeCreated: 1449661345 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Editor/Resources/effect-icon.tiff b/Assets/AmplifyBloom/Plugins/Editor/Resources/effect-icon.tiff new file mode 100644 index 0000000..dfdd4ce Binary files /dev/null and b/Assets/AmplifyBloom/Plugins/Editor/Resources/effect-icon.tiff differ diff --git a/Assets/AmplifyBloom/Plugins/Editor/Resources/effect-icon.tiff.meta b/Assets/AmplifyBloom/Plugins/Editor/Resources/effect-icon.tiff.meta new file mode 100644 index 0000000..8ab7094 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Editor/Resources/effect-icon.tiff.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: a01cbbdf250cc3f45a0f180140bb24e0 +timeCreated: 1449067237 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 64 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Runtime.meta b/Assets/AmplifyBloom/Plugins/Runtime.meta new file mode 100644 index 0000000..1ac6e73 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7ce8d57530aad324f817a1747f7942fe +folderAsset: yes +timeCreated: 1449661395 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyBokeh.cs b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyBokeh.cs new file mode 100644 index 0000000..35e9e8b --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyBokeh.cs @@ -0,0 +1,243 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace AmplifyBloom +{ + public enum ApertureShape + { + Square, + Hexagon, + Octagon, + } + + [Serializable] + public class AmplifyBokehData + { + internal RenderTexture BokehRenderTexture; + internal Vector4[] Offsets; + + public AmplifyBokehData( Vector4[] offsets ) + { + Offsets = offsets; + } + + public void Destroy() + { + if ( BokehRenderTexture != null ) + { + AmplifyUtils.ReleaseTempRenderTarget( BokehRenderTexture ); + BokehRenderTexture = null; + } + + Offsets = null; + } + } + + [Serializable] + public sealed class AmplifyBokeh : IAmplifyItem, ISerializationCallbackReceiver + { + //CONSTS + private const int PerPassSampleCount = 8; + + //SERIALIZABLE VARIABLES + [SerializeField] + private bool m_isActive = false; + + [SerializeField] + private bool m_applyOnBloomSource = false; + + [SerializeField] + private float m_bokehSampleRadius = 0.5f; + + [SerializeField] + private Vector4 m_bokehCameraProperties = new Vector4( 0.05f, 0.018f, 1.34f, 0.18f ); // x - aperture y - Focal Length z - Focal Distance w - Max CoC Diameter + + [SerializeField] + private float m_offsetRotation = 0; + + [SerializeField] + private ApertureShape m_apertureShape = ApertureShape.Hexagon; + + private List m_bokehOffsets; + + public AmplifyBokeh() + { + m_bokehOffsets = new List(); + CreateBokehOffsets( ApertureShape.Hexagon ); + } + + public void Destroy() + { + for ( int i = 0; i < m_bokehOffsets.Count; i++ ) + { + m_bokehOffsets[ i ].Destroy(); + } + } + + void CreateBokehOffsets( ApertureShape shape ) + { + m_bokehOffsets.Clear(); + switch ( shape ) + { + case ApertureShape.Square: + { + m_bokehOffsets.Add( new AmplifyBokehData( CalculateBokehSamples( PerPassSampleCount, m_offsetRotation ) ) ); + m_bokehOffsets.Add( new AmplifyBokehData( CalculateBokehSamples( PerPassSampleCount, m_offsetRotation + 90 ) ) ); + } + break; + case ApertureShape.Hexagon: + { + + m_bokehOffsets.Add( new AmplifyBokehData( CalculateBokehSamples( PerPassSampleCount, m_offsetRotation ) ) ); + m_bokehOffsets.Add( new AmplifyBokehData( CalculateBokehSamples( PerPassSampleCount, m_offsetRotation - 75 ) ) ); + m_bokehOffsets.Add( new AmplifyBokehData( CalculateBokehSamples( PerPassSampleCount, m_offsetRotation + 75 ) ) ); + } + break; + case ApertureShape.Octagon: + { + m_bokehOffsets.Add( new AmplifyBokehData( CalculateBokehSamples( PerPassSampleCount, m_offsetRotation ) ) ); + m_bokehOffsets.Add( new AmplifyBokehData( CalculateBokehSamples( PerPassSampleCount, m_offsetRotation + 65 ) ) ); + m_bokehOffsets.Add( new AmplifyBokehData( CalculateBokehSamples( PerPassSampleCount, m_offsetRotation + 90 ) ) ); + m_bokehOffsets.Add( new AmplifyBokehData( CalculateBokehSamples( PerPassSampleCount, m_offsetRotation + 115 ) ) ); + + } + break; + } + } + + Vector4[] CalculateBokehSamples( int sampleCount, float angle ) + { + Vector4[] bokehSamples = new Vector4[ sampleCount ]; + float angleRad = Mathf.Deg2Rad * angle; + float aspectRatio = ( float ) Screen.width / ( float ) Screen.height; + Vector4 samplePoint = new Vector4( m_bokehSampleRadius * Mathf.Cos( angleRad ), m_bokehSampleRadius * Mathf.Sin( angleRad ) ); + samplePoint.x /= aspectRatio; + for ( int i = 0; i < sampleCount; i++ ) + { + float sampleInterp = ( float ) i / ( ( float ) sampleCount - 1.0f ); + bokehSamples[ i ] = Vector4.Lerp( -samplePoint, samplePoint, sampleInterp ); + } + return bokehSamples; + } + + public void ApplyBokehFilter( RenderTexture source, Material material ) + { + // ALLOCATE RENDER TEXTURES + for ( int i = 0; i < m_bokehOffsets.Count; i++ ) + { + m_bokehOffsets[ i ].BokehRenderTexture = AmplifyUtils.GetTempRenderTarget( source.width, source.height ); + } + + // SET CAMERA PARAMS AND APPLY EACH ROTATIONAL WEIGHTS + material.SetVector( AmplifyUtils.BokehParamsId, m_bokehCameraProperties ); + + for ( int bId = 0; bId < m_bokehOffsets.Count; bId++ ) + { + for ( int i = 0; i < PerPassSampleCount; i++ ) + { + material.SetVector( AmplifyUtils.AnamorphicGlareWeightsStr[ i ], m_bokehOffsets[ bId ].Offsets[ i ] ); + } + Graphics.Blit( source, m_bokehOffsets[ bId ].BokehRenderTexture, material, ( int ) BloomPasses.BokehWeightedBlur ); + } + + for ( int bId = 0; bId < m_bokehOffsets.Count - 1; bId++ ) + { + material.SetTexture( AmplifyUtils.AnamorphicRTS[ bId ], m_bokehOffsets[ bId ].BokehRenderTexture ); + + } + + // FINAL COMPOSITION + source.DiscardContents(); + Graphics.Blit( m_bokehOffsets[ m_bokehOffsets.Count - 1 ].BokehRenderTexture, source, material, ( int ) BloomPasses.BokehComposition2S + ( m_bokehOffsets.Count - 2 ) ); + + //RELEASE RENDER TEXTURES + for ( int i = 0; i < m_bokehOffsets.Count; i++ ) + { + AmplifyUtils.ReleaseTempRenderTarget( m_bokehOffsets[ i ].BokehRenderTexture ); + m_bokehOffsets[ i ].BokehRenderTexture = null; + } + } + + public void OnAfterDeserialize() + { + CreateBokehOffsets( m_apertureShape ); + } + + public void OnBeforeSerialize() + { + + } + + public ApertureShape ApertureShape + { + get { return m_apertureShape; } + set + { + if ( m_apertureShape != value ) + { + m_apertureShape = value; + CreateBokehOffsets( value ); + } + } + } + + public bool ApplyBokeh + { + get { return m_isActive; } + set { m_isActive = value; } + } + + + public bool ApplyOnBloomSource + { + get { return m_applyOnBloomSource; } + set { m_applyOnBloomSource = value; } + } + + public float BokehSampleRadius + { + get { return m_bokehSampleRadius; } + set { m_bokehSampleRadius = value; } + } + + public float OffsetRotation + { + get { return m_offsetRotation; } + set { m_offsetRotation = value; } + } + + public Vector4 BokehCameraProperties + { + get { return m_bokehCameraProperties; } + set { m_bokehCameraProperties = value; } + } + + public float Aperture + { + get { return m_bokehCameraProperties.x; } + set { m_bokehCameraProperties.x = value; } + } + + public float FocalLength + { + get { return m_bokehCameraProperties.y; } + set { m_bokehCameraProperties.y = value; } + } + + public float FocalDistance + { + get { return m_bokehCameraProperties.z; } + set { m_bokehCameraProperties.z = value; } + } + + public float MaxCoCDiameter + { + get { return m_bokehCameraProperties.w; } + set { m_bokehCameraProperties.w = value; } + } + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyBokeh.cs.meta b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyBokeh.cs.meta new file mode 100644 index 0000000..8f9133e --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyBokeh.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6061e71eef9eba14b8fe1d8a39cec722 +timeCreated: 1448893808 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlare.cs b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlare.cs new file mode 100644 index 0000000..3374b3c --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlare.cs @@ -0,0 +1,629 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +using System; +namespace AmplifyBloom +{ + + + // Glare form library + public enum GlareLibType + { + CheapLens = 0, + CrossScreen, + CrossScreenSpectral, + SnowCross, + SnowCrossSpectral, + SunnyCross, + SunnyCrossSpectral, + VerticalSlits, + HorizontalSlits, + Custom + }; + + [Serializable] + public class GlareDefData + { + public bool FoldoutValue = true; + [SerializeField] + private StarLibType m_starType = StarLibType.Cross; + [SerializeField] + private float m_starInclination = 0; + [SerializeField] + private float m_chromaticAberration = 0; + [SerializeField] + private StarDefData m_customStarData = null; + + public GlareDefData() + { + m_customStarData = new StarDefData(); + } + + public GlareDefData( StarLibType starType, float starInclination, float chromaticAberration ) + { + m_starType = starType; + m_starInclination = starInclination; + m_chromaticAberration = chromaticAberration; + } + + public StarLibType StarType + { + get + { + return m_starType; + } + set + { + m_starType = value; + } + } + + public float StarInclination + { + get + { + return m_starInclination; + } + set + { + m_starInclination = value; + } + } + + public float StarInclinationDeg + { + get + { + return m_starInclination * Mathf.Rad2Deg; + } + set + { + m_starInclination = value * Mathf.Deg2Rad; + } + } + + public float ChromaticAberration + { + get + { + return m_chromaticAberration; + } + set + { + m_chromaticAberration = value; + } + } + + public StarDefData CustomStarData + { + get + { + return m_customStarData; + } + set + { + m_customStarData = value; + } + } + } + + [Serializable] + public sealed class AmplifyGlare : IAmplifyItem + { + public const int MaxLineSamples = 8; + public const int MaxTotalSamples = 16; + public const int MaxStarLines = 4; + public const int MaxPasses = 4; + public const int MaxCustomGlare = 32; + + [SerializeField] + private GlareDefData[] m_customGlareDef; + + [SerializeField] + private int m_customGlareDefIdx = 0; + + [SerializeField] + private int m_customGlareDefAmount = 0; + + [SerializeField] + private bool m_applyGlare = true; + + [SerializeField] + private Color _overallTint = Color.white; + + [SerializeField] + private UnityEngine.Gradient m_cromaticAberrationGrad; + + [SerializeField] + private int m_glareMaxPassCount = MaxPasses; + + private StarDefData[] m_starDefArr; + private GlareDefData[] m_glareDefArr; + + private Matrix4x4[] m_weigthsMat; + private Matrix4x4[] m_offsetsMat; + + private Color m_whiteReference; + + private float m_aTanFoV; + + private AmplifyGlareCache m_amplifyGlareCache; + + [SerializeField] + private int m_currentWidth; + + [SerializeField] + private int m_currentHeight; + + [SerializeField] + private GlareLibType m_currentGlareType = GlareLibType.CheapLens; + + [SerializeField] + private int m_currentGlareIdx; + + [SerializeField] + private float m_perPassDisplacement = 4; + + [SerializeField] + private float m_intensity = 0.17f; + + [SerializeField] + private float m_overallStreakScale = 1f; + + private bool m_isDirty = true; + private RenderTexture[] _rtBuffer; + + public AmplifyGlare() + { + m_currentGlareIdx = ( int ) m_currentGlareType; + + m_cromaticAberrationGrad = new UnityEngine.Gradient(); + + UnityEngine.GradientColorKey[] colorKeys = new UnityEngine.GradientColorKey[] { new UnityEngine.GradientColorKey(Color.white,0f), + new UnityEngine.GradientColorKey(Color.blue,0.25f), + new UnityEngine.GradientColorKey(Color.green,0.5f), + new UnityEngine.GradientColorKey(Color.yellow,0.75f), + new UnityEngine.GradientColorKey(Color.red,1f) + }; + UnityEngine.GradientAlphaKey[] alphaKeys = new UnityEngine.GradientAlphaKey[] { new UnityEngine.GradientAlphaKey(1f,0f), + new UnityEngine.GradientAlphaKey(1f,0.25f), + new UnityEngine.GradientAlphaKey(1f,0.5f), + new UnityEngine.GradientAlphaKey(1f,0.75f), + new UnityEngine.GradientAlphaKey(1f,1f) + }; + m_cromaticAberrationGrad.SetKeys( colorKeys, alphaKeys ); + + + _rtBuffer = new RenderTexture[ MaxStarLines * MaxPasses ]; + + m_weigthsMat = new Matrix4x4[ 4 ]; + m_offsetsMat = new Matrix4x4[ 4 ]; + + m_amplifyGlareCache = new AmplifyGlareCache(); + + m_whiteReference = new Color( 0.63f, 0.63f, 0.63f, 0.0f ); + m_aTanFoV = Mathf.Atan( Mathf.PI / MaxLineSamples ); + + + m_starDefArr = new StarDefData[] { new StarDefData(StarLibType.Cross, "Cross", 2, 4, 1.0f, 0.85f, 0.0f, 0.5f, -1.0f, 90.0f), + new StarDefData(StarLibType.Cross_Filter,"CrossFilter", 2, 4, 1.0f, 0.95f, 0.0f, 0.5f, -1.0f, 90.0f), + new StarDefData(StarLibType.Snow_Cross, "snowCross", 3, 4, 1.0f, 0.96f, 0.349f, 0.5f, -1.0f, -1), + new StarDefData(StarLibType.Vertical, "Vertical", 1, 4, 1.0f, 0.96f, 0.0f, 0.0f, -1.0f, -1), + new StarDefData(StarLibType.Sunny_Cross, "SunnyCross", 4, 4, 1.0f, 0.88f, 0.0f, 0.0f, 0.95f, 45.0f) + }; + + m_glareDefArr = new GlareDefData[] { new GlareDefData( StarLibType.Cross, 0.00f, 0.5f),//Cheap Lens + new GlareDefData( StarLibType.Cross_Filter, 0.44f, 0.5f),//Cross Screen + new GlareDefData( StarLibType.Cross_Filter, 1.22f, 1.5f),//Cross Screen Spectral + new GlareDefData( StarLibType.Snow_Cross, 0.17f, 0.5f),//Snow Cross + new GlareDefData( StarLibType.Snow_Cross, 0.70f, 1.5f),//Snow Cross Spectral + new GlareDefData( StarLibType.Sunny_Cross, 0.00f, 0.5f),//Sunny Cross + new GlareDefData( StarLibType.Sunny_Cross, 0.79f, 1.5f),//Sunny Cross Spectral + new GlareDefData( StarLibType.Vertical, 1.57f, 0.5f),//Vertical Slits + new GlareDefData( StarLibType.Vertical, 0.00f, 0.5f) //Horizontal slits + }; + } + + public void Destroy() + { + for ( int i = 0; i < m_starDefArr.Length; i++ ) + { + m_starDefArr[ i ].Destroy(); + } + + m_glareDefArr = null; + m_weigthsMat = null; + m_offsetsMat = null; + + for ( int i = 0; i < _rtBuffer.Length; i++ ) + { + if ( _rtBuffer[ i ] != null ) + { + AmplifyUtils.ReleaseTempRenderTarget( _rtBuffer[ i ] ); + _rtBuffer[ i ] = null; + } + } + _rtBuffer = null; + + m_amplifyGlareCache.Destroy(); + m_amplifyGlareCache = null; + } + + public void SetDirty() + { + m_isDirty = true; + } + + public void OnRenderFromCache( RenderTexture source, RenderTexture dest, Material material, float glareIntensity, float cameraRotation ) + { + // ALLOCATE RENDER TEXTURES + for ( int i = 0; i < m_amplifyGlareCache.TotalRT; i++ ) + { + _rtBuffer[ i ] = AmplifyUtils.GetTempRenderTarget( source.width, source.height ); + } + + int rtIdx = 0; + for ( int d = 0; d < m_amplifyGlareCache.StarDef.StarlinesCount; d++ ) + { + for ( int p = 0; p < m_amplifyGlareCache.CurrentPassCount; p++ ) + { + // APPLY SHADER + UpdateMatrixesForPass( material, m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Offsets, m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Weights, glareIntensity, cameraRotation * m_amplifyGlareCache.StarDef.CameraRotInfluence ); + + //CREATED WEIGHTED TEXTURE + if ( p == 0 ) + { + Graphics.Blit( source, _rtBuffer[ rtIdx ], material, ( int ) BloomPasses.AnamorphicGlare ); + } + else + { + Graphics.Blit( _rtBuffer[ rtIdx - 1 ], _rtBuffer[ rtIdx ], material, ( int ) BloomPasses.AnamorphicGlare ); + } + rtIdx += 1; + } + } + + //ADD TO MAIN RT + for ( int i = 0; i < m_amplifyGlareCache.StarDef.StarlinesCount; i++ ) + { + material.SetVector( AmplifyUtils.AnamorphicGlareWeightsStr[ i ], m_amplifyGlareCache.AverageWeight ); + int idx = ( i + 1 ) * m_amplifyGlareCache.CurrentPassCount - 1; + material.SetTexture( AmplifyUtils.AnamorphicRTS[ i ], _rtBuffer[ idx ] ); + } + + + int passId = ( int ) BloomPasses.WeightedAddPS1 + m_amplifyGlareCache.StarDef.StarlinesCount - 1; + dest.DiscardContents(); + Graphics.Blit( _rtBuffer[ 0 ], dest, material, passId ); + + //RELEASE RT's + for ( rtIdx = 0; rtIdx < _rtBuffer.Length; rtIdx++ ) + { + AmplifyUtils.ReleaseTempRenderTarget( _rtBuffer[ rtIdx ] ); + _rtBuffer[ rtIdx ] = null; + } + } + + public void UpdateMatrixesForPass( Material material, Vector4[] offsets, Vector4[] weights, float glareIntensity, float rotation ) + { + float cosRot = Mathf.Cos( rotation ); + float sinRot = Mathf.Sin( rotation ); + + for ( int i = 0; i < MaxTotalSamples; i++ ) + { + int matIdx = i >> 2; + int vecIdx = i & 3; + m_offsetsMat[ matIdx ][ vecIdx, 0 ] = offsets[ i ].x * cosRot - offsets[ i ].y * sinRot; + m_offsetsMat[ matIdx ][ vecIdx, 1 ] = offsets[ i ].x * sinRot + offsets[ i ].y * cosRot; + + m_weigthsMat[ matIdx ][ vecIdx, 0 ] = glareIntensity * weights[ i ].x; + m_weigthsMat[ matIdx ][ vecIdx, 1 ] = glareIntensity * weights[ i ].y; + m_weigthsMat[ matIdx ][ vecIdx, 2 ] = glareIntensity * weights[ i ].z; + } + + for ( int i = 0; i < 4; i++ ) + { + material.SetMatrix( AmplifyUtils.AnamorphicGlareOffsetsMatStr[ i ], m_offsetsMat[ i ] ); + material.SetMatrix( AmplifyUtils.AnamorphicGlareWeightsMatStr[ i ], m_weigthsMat[ i ] ); + } + } + + public void OnRenderImage( Material material, RenderTexture source, RenderTexture dest, float cameraRot ) + { + //NEED TO SET DESTINATION RENDER TARGET TO COMPLETELLY BLACK SO WE CAN SUM ALL THE GLARE/STAR PASSES ON IT + Graphics.Blit( Texture2D.blackTexture, dest ); + + if ( m_isDirty || + m_currentWidth != source.width || + m_currentHeight != source.height ) + { + m_isDirty = false; + m_currentWidth = source.width; + m_currentHeight = source.height; + } + else + { + OnRenderFromCache( source, dest, material, m_intensity, cameraRot ); + return; + } + + GlareDefData glareDef = null; + bool validCustom = false; + if ( m_currentGlareType == GlareLibType.Custom ) + { + if ( m_customGlareDef != null && m_customGlareDef.Length > 0 ) + { + glareDef = m_customGlareDef[ m_customGlareDefIdx ]; + validCustom = true; + } + else + { + glareDef = m_glareDefArr[ 0 ]; + } + } + else + { + glareDef = m_glareDefArr[ m_currentGlareIdx ]; + } + + + m_amplifyGlareCache.GlareDef = glareDef; + + float srcW = source.width; + float srcH = source.height; + + StarDefData starDef = ( validCustom ) ? glareDef.CustomStarData : m_starDefArr[ ( int ) glareDef.StarType ]; + + + m_amplifyGlareCache.StarDef = starDef; + int currPassCount = ( m_glareMaxPassCount < starDef.PassCount ) ? m_glareMaxPassCount : starDef.PassCount; + m_amplifyGlareCache.CurrentPassCount = currPassCount; + float radOffset = glareDef.StarInclination + starDef.Inclination; + + for ( int p = 0; p < m_glareMaxPassCount; p++ ) + { + float ratio = ( float ) ( p + 1 ) / ( float ) m_glareMaxPassCount; + + for ( int s = 0; s < MaxLineSamples; s++ ) + { + Color chromaticAberrColor = _overallTint * Color.Lerp( m_cromaticAberrationGrad.Evaluate( ( float ) s / ( float ) ( MaxLineSamples - 1 ) ), m_whiteReference, ratio ); + m_amplifyGlareCache.CromaticAberrationMat[ p, s ] = Color.Lerp( m_whiteReference, chromaticAberrColor, glareDef.ChromaticAberration ); + } + } + m_amplifyGlareCache.TotalRT = starDef.StarlinesCount * currPassCount; + + for ( int i = 0; i < m_amplifyGlareCache.TotalRT; i++ ) + { + _rtBuffer[ i ] = AmplifyUtils.GetTempRenderTarget( source.width, source.height ); + } + + int rtIdx = 0; + for ( int d = 0; d < starDef.StarlinesCount; d++ ) + { + StarLineData starLine = starDef.StarLinesArr[ d ]; + float angle = radOffset + starLine.Inclination; + float sinAngle = Mathf.Sin( angle ); + float cosAngle = Mathf.Cos( angle ); + Vector2 vtStepUV = new Vector2(); + vtStepUV.x = cosAngle / srcW * ( starLine.SampleLength * m_overallStreakScale ); + vtStepUV.y = sinAngle / srcH * ( starLine.SampleLength * m_overallStreakScale ); + + float attnPowScale = ( m_aTanFoV + 0.1f ) * ( 280.0f ) / ( srcW + srcH ) * 1.2f; + + for ( int p = 0; p < currPassCount; p++ ) + { + for ( int i = 0; i < MaxLineSamples; i++ ) + { + float lum = Mathf.Pow( starLine.Attenuation, attnPowScale * i ); + + m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Weights[ i ] = m_amplifyGlareCache.CromaticAberrationMat[ currPassCount - 1 - p, i ] * lum * ( p + 1.0f ) * 0.5f; + + // OFFSET OF SAMPLING COORDINATE + m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Offsets[ i ].x = vtStepUV.x * i; + m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Offsets[ i ].y = vtStepUV.y * i; + if ( Mathf.Abs( m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Offsets[ i ].x ) >= 0.9f || + Mathf.Abs( m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Offsets[ i ].y ) >= 0.9f ) + { + m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Offsets[ i ].x = 0.0f; + m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Offsets[ i ].y = 0.0f; + m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Weights[ i ] *= 0.0f; + } + } + + // MIRROR STARLINE + for ( int i = MaxLineSamples; i < MaxTotalSamples; i++ ) + { + m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Offsets[ i ] = -m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Offsets[ i - MaxLineSamples ]; + m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Weights[ i ] = m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Weights[ i - MaxLineSamples ]; + } + + // APPLY SHADER + UpdateMatrixesForPass( material, m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Offsets, m_amplifyGlareCache.Starlines[ d ].Passes[ p ].Weights, m_intensity, starDef.CameraRotInfluence * cameraRot ); + + //CREATED WEIGHTED TEXTURE + if ( p == 0 ) + { + Graphics.Blit( source, _rtBuffer[ rtIdx ], material, ( int ) BloomPasses.AnamorphicGlare ); + } + else + { + Graphics.Blit( _rtBuffer[ rtIdx - 1 ], _rtBuffer[ rtIdx ], material, ( int ) BloomPasses.AnamorphicGlare ); + } + + rtIdx += 1; + vtStepUV *= m_perPassDisplacement; + attnPowScale *= m_perPassDisplacement; + } + } + + //ADD TO MAIN RT + m_amplifyGlareCache.AverageWeight = Vector4.one / starDef.StarlinesCount; + for ( int i = 0; i < starDef.StarlinesCount; i++ ) + { + material.SetVector( AmplifyUtils.AnamorphicGlareWeightsStr[ i ], m_amplifyGlareCache.AverageWeight ); + int idx = ( i + 1 ) * currPassCount - 1; + material.SetTexture( AmplifyUtils.AnamorphicRTS[ i ], _rtBuffer[ idx ] ); + } + + int passId = ( int ) BloomPasses.WeightedAddPS1 + starDef.StarlinesCount - 1; + dest.DiscardContents(); + Graphics.Blit( _rtBuffer[ 0 ], dest, material, passId ); + + //RELEASE RT's + for ( rtIdx = 0; rtIdx < _rtBuffer.Length; rtIdx++ ) + { + AmplifyUtils.ReleaseTempRenderTarget( _rtBuffer[ rtIdx ] ); + _rtBuffer[ rtIdx ] = null; + } + } + + public GlareLibType CurrentGlare + { + get { return m_currentGlareType; } + set + { + if ( m_currentGlareType != value ) + { + m_currentGlareType = value; + m_currentGlareIdx = ( int ) value; + m_isDirty = true; + } + } + } + + public int GlareMaxPassCount + { + get { return m_glareMaxPassCount; } + set + { + m_glareMaxPassCount = value; + m_isDirty = true; + } + } + + public float PerPassDisplacement + { + get { return m_perPassDisplacement; } + set + { + m_perPassDisplacement = value; + m_isDirty = true; + } + } + + public float Intensity + { + get { return m_intensity; } + set + { + m_intensity = value < 0 ? 0 : value; + m_isDirty = true; + } + } + + public Color OverallTint + { + get { return _overallTint; } + set + { + _overallTint = value; + m_isDirty = true; + } + } + + public bool ApplyLensGlare + { + get { return m_applyGlare; } + set { m_applyGlare = value; } + } + + public UnityEngine.Gradient CromaticColorGradient + { + get { return m_cromaticAberrationGrad; } + set + { + m_cromaticAberrationGrad = value; + m_isDirty = true; + } + } + + public float OverallStreakScale + { + get { return m_overallStreakScale; } + set + { + m_overallStreakScale = value; + m_isDirty = true; + } + } + + public GlareDefData[] CustomGlareDef + { + get + { + return m_customGlareDef; + } + set + { + m_customGlareDef = value; + } + } + + public int CustomGlareDefIdx + { + get + { + return m_customGlareDefIdx; + } + + set + { + m_customGlareDefIdx = value; + } + } + + public int CustomGlareDefAmount + { + get + { + return m_customGlareDefAmount; + } + + set + { + if ( value == m_customGlareDefAmount ) + { + return; + } + + if ( value == 0 ) + { + m_customGlareDef = null; + m_customGlareDefIdx = 0; + m_customGlareDefAmount = 0; + } + else + { + + GlareDefData[] newArr = new GlareDefData[ value ]; + for ( int i = 0; i < value; i++ ) + { + if ( i < m_customGlareDefAmount ) + { + newArr[ i ] = m_customGlareDef[ i ]; + } + else + { + newArr[ i ] = new GlareDefData(); + } + } + m_customGlareDefIdx = Mathf.Clamp( m_customGlareDefIdx, 0, value - 1 ); + m_customGlareDef = newArr; + newArr = null; + m_customGlareDefAmount = value; + } + } + } + } +} diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlare.cs.meta b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlare.cs.meta new file mode 100644 index 0000000..7e2f40b --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlare.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a1cc5231e48f70c40982a9128e25adca +timeCreated: 1447865180 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlareCache.cs b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlareCache.cs new file mode 100644 index 0000000..c587be4 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlareCache.cs @@ -0,0 +1,99 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +using System; + +namespace AmplifyBloom +{ + [Serializable] + public class AmplifyPassCache + { + [SerializeField] + internal Vector4[] Offsets; + + [SerializeField] + internal Vector4[] Weights; + + public AmplifyPassCache() + { + Offsets = new Vector4[ 16 ]; + Weights = new Vector4[ 16 ]; + } + + public void Destroy() + { + Offsets = null; + Weights = null; + } + } + + [Serializable] + public class AmplifyStarlineCache + { + [SerializeField] + internal AmplifyPassCache[] Passes; + public AmplifyStarlineCache() + { + Passes = new AmplifyPassCache[ AmplifyGlare.MaxPasses ]; + for ( int i = 0; i < AmplifyGlare.MaxPasses; i++ ) + { + Passes[ i ] = new AmplifyPassCache(); + } + } + + public void Destroy() + { + for ( int i = 0; i < AmplifyGlare.MaxPasses; i++ ) + { + Passes[ i ].Destroy(); + } + Passes = null; + } + } + + [Serializable] + public class AmplifyGlareCache + { + [SerializeField] + internal AmplifyStarlineCache[] Starlines; + + [SerializeField] + internal Vector4 AverageWeight; + + [SerializeField] + internal Vector4[,] CromaticAberrationMat; + + [SerializeField] + internal int TotalRT; + + [SerializeField] + internal GlareDefData GlareDef; + + [SerializeField] + internal StarDefData StarDef; + + [SerializeField] + internal int CurrentPassCount; + + public AmplifyGlareCache() + { + Starlines = new AmplifyStarlineCache[ AmplifyGlare.MaxStarLines ]; + CromaticAberrationMat = new Vector4[ AmplifyGlare.MaxPasses, AmplifyGlare.MaxLineSamples ]; + for ( int i = 0; i < AmplifyGlare.MaxStarLines; i++ ) + { + Starlines[ i ] = new AmplifyStarlineCache(); + } + } + + public void Destroy() + { + for ( int i = 0; i < AmplifyGlare.MaxStarLines; i++ ) + { + Starlines[ i ].Destroy(); + } + Starlines = null; + CromaticAberrationMat = null; + } + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlareCache.cs.meta b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlareCache.cs.meta new file mode 100644 index 0000000..1c8beb5 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyGlareCache.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 354066a252ef8f04eae30e7aad2f8348 +timeCreated: 1448470266 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyItem.cs b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyItem.cs new file mode 100644 index 0000000..8256afc --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyItem.cs @@ -0,0 +1,9 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda +namespace AmplifyBloom +{ + interface IAmplifyItem + { + void Destroy(); + } +} diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyItem.cs.meta b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyItem.cs.meta new file mode 100644 index 0000000..69f3026 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyItem.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 366d7e76b8e8e6040a63ce8209ddc06d +timeCreated: 1449052344 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyLensFlare.cs b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyLensFlare.cs new file mode 100644 index 0000000..ea2b2f6 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyLensFlare.cs @@ -0,0 +1,242 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda +using UnityEngine; + +namespace AmplifyBloom +{ + [System.Serializable] + public class AmplifyLensFlare : IAmplifyItem + { + //CONSTS + private const int LUTTextureWidth = 256; + + //SERIALIZABLE VARIABLES + [SerializeField] + private float m_overallIntensity = 1f; + + [SerializeField] + private float m_normalizedGhostIntensity = 0.8f; + + [SerializeField] + private float m_normalizedHaloIntensity = 0.1f; + + [SerializeField] + private bool m_applyLensFlare = true; + + [SerializeField] + private int m_lensFlareGhostAmount = 3; + + [SerializeField] + private Vector4 m_lensFlareGhostsParams = new Vector4( 0.8f, 0.228f, 1, 4 );// x - intensity y - Dispersal z - Power Factor w - Power Falloff + + [SerializeField] + private float m_lensFlareGhostChrDistortion = 2; + + [SerializeField] + private UnityEngine.Gradient m_lensGradient; + + [SerializeField] + private Texture2D m_lensFlareGradTexture; + + private Color[] m_lensFlareGradColor = new Color[ LUTTextureWidth ]; + + [SerializeField] + private Vector4 m_lensFlareHaloParams = new Vector4( 0.1f, 0.573f, 1, 128 ); // x - Intensity y - Width z - Power Factor w - Power Falloff + + [SerializeField] + private float m_lensFlareHaloChrDistortion = 1.51f; + + [SerializeField] + private int m_lensFlareGaussianBlurAmount = 1; + + public AmplifyLensFlare() + { + m_lensGradient = new UnityEngine.Gradient(); + + UnityEngine.GradientColorKey[] colorKeys = new UnityEngine.GradientColorKey[] { new UnityEngine.GradientColorKey(Color.white,0f), + new UnityEngine.GradientColorKey(Color.blue,0.25f), + new UnityEngine.GradientColorKey(Color.green,0.5f), + new UnityEngine.GradientColorKey(Color.yellow,0.75f), + new UnityEngine.GradientColorKey(Color.red,1f) + }; + UnityEngine.GradientAlphaKey[] alphaKeys = new UnityEngine.GradientAlphaKey[] { new UnityEngine.GradientAlphaKey(1f,0f), + new UnityEngine.GradientAlphaKey(1f,0.25f), + new UnityEngine.GradientAlphaKey(1f,0.5f), + new UnityEngine.GradientAlphaKey(1f,0.75f), + new UnityEngine.GradientAlphaKey(1f,1f) + }; + m_lensGradient.SetKeys( colorKeys, alphaKeys ); + + } + + public void Destroy() + { + if ( m_lensFlareGradTexture != null ) + { + GameObject.DestroyImmediate( m_lensFlareGradTexture ); + m_lensFlareGradTexture = null; + } + } + + public void CreateLUTexture() + { + m_lensFlareGradTexture = new Texture2D( LUTTextureWidth, 1, TextureFormat.ARGB32, false ); + m_lensFlareGradTexture.filterMode = FilterMode.Bilinear; + TextureFromGradient(); + } + + public RenderTexture ApplyFlare( Material material, RenderTexture source ) + { + RenderTexture dest = AmplifyUtils.GetTempRenderTarget( source.width, source.height ); + material.SetVector( AmplifyUtils.LensFlareGhostsParamsId, m_lensFlareGhostsParams ); + material.SetTexture( AmplifyUtils.LensFlareLUTId, m_lensFlareGradTexture ); + material.SetVector( AmplifyUtils.LensFlareHaloParamsId, m_lensFlareHaloParams ); + material.SetFloat( AmplifyUtils.LensFlareGhostChrDistortionId, m_lensFlareGhostChrDistortion ); + material.SetFloat( AmplifyUtils.LensFlareHaloChrDistortionId, m_lensFlareHaloChrDistortion ); + Graphics.Blit( source, dest, material, ( int ) BloomPasses.LensFlare0 + m_lensFlareGhostAmount ); + return dest; + } + + public void TextureFromGradient() + { + for ( int i = 0; i < LUTTextureWidth; i++ ) + { + m_lensFlareGradColor[ i ] = m_lensGradient.Evaluate( ( float ) i / ( float ) ( LUTTextureWidth - 1 ) ); + } + m_lensFlareGradTexture.SetPixels( m_lensFlareGradColor ); + m_lensFlareGradTexture.Apply(); + } + + public bool ApplyLensFlare + { + get { return m_applyLensFlare; } + set { m_applyLensFlare = value; } + } + + public float OverallIntensity + { + get { return m_overallIntensity; } + set + { + m_overallIntensity = value < 0 ? 0 : value; + m_lensFlareGhostsParams.x = value * m_normalizedGhostIntensity; + m_lensFlareHaloParams.x = value * m_normalizedHaloIntensity; + } + } + public int LensFlareGhostAmount + { + get { return m_lensFlareGhostAmount; } + set { m_lensFlareGhostAmount = value; } + } + + public Vector4 LensFlareGhostsParams + { + get { return m_lensFlareGhostsParams; } + set { m_lensFlareGhostsParams = value; } + } + + public float LensFlareNormalizedGhostsIntensity + { + get { return m_normalizedGhostIntensity; } + set + { + m_normalizedGhostIntensity = value < 0 ? 0 : value; + m_lensFlareGhostsParams.x = m_overallIntensity * m_normalizedGhostIntensity; + } + } + + public float LensFlareGhostsIntensity + { + get { return m_lensFlareGhostsParams.x; } + set + { + m_lensFlareGhostsParams.x = value < 0 ? 0 : value; + } + } + + public float LensFlareGhostsDispersal + { + get { return m_lensFlareGhostsParams.y; } + set { m_lensFlareGhostsParams.y = value; } + } + + public float LensFlareGhostsPowerFactor + { + get { return m_lensFlareGhostsParams.z; } + set { m_lensFlareGhostsParams.z = value; } + } + + public float LensFlareGhostsPowerFalloff + { + get { return m_lensFlareGhostsParams.w; } + set { m_lensFlareGhostsParams.w = value; } + } + + public UnityEngine.Gradient LensFlareGradient + { + get { return m_lensGradient; } + set { m_lensGradient = value; } + } + + public Vector4 LensFlareHaloParams + { + get { return m_lensFlareHaloParams; } + set { m_lensFlareHaloParams = value; } + } + + public float LensFlareNormalizedHaloIntensity + { + get { return m_normalizedHaloIntensity; } + set + { + m_normalizedHaloIntensity = value < 0 ? 0 : value; + m_lensFlareHaloParams.x = m_overallIntensity * m_normalizedHaloIntensity; + } + } + + public float LensFlareHaloIntensity + { + get { return m_lensFlareHaloParams.x; } + set + { + m_lensFlareHaloParams.x = value < 0 ? 0 : value; + } + } + + public float LensFlareHaloWidth + { + get { return m_lensFlareHaloParams.y; } + set { m_lensFlareHaloParams.y = value; } + } + + public float LensFlareHaloPowerFactor + { + get { return m_lensFlareHaloParams.z; } + set { m_lensFlareHaloParams.z = value; } + } + + public float LensFlareHaloPowerFalloff + { + get { return m_lensFlareHaloParams.w; } + set { m_lensFlareHaloParams.w = value; } + } + + public float LensFlareGhostChrDistortion + { + get { return m_lensFlareGhostChrDistortion; } + set { m_lensFlareGhostChrDistortion = value; } + } + + public float LensFlareHaloChrDistortion + { + get { return m_lensFlareHaloChrDistortion; } + set { m_lensFlareHaloChrDistortion = value; } + } + + public int LensFlareGaussianBlurAmount + { + get { return m_lensFlareGaussianBlurAmount; } + set { m_lensFlareGaussianBlurAmount = value; } + } + } +} diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyLensFlare.cs.meta b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyLensFlare.cs.meta new file mode 100644 index 0000000..ee758d3 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyLensFlare.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9899e724796c8e246a080699e82fdbc6 +timeCreated: 1449759082 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyStarData.cs b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyStarData.cs new file mode 100644 index 0000000..6b7f0a3 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyStarData.cs @@ -0,0 +1,249 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +using System; +namespace AmplifyBloom +{ + // Star generation + + // Define each line of the star. + [Serializable] + public class StarLineData + { + [SerializeField] + internal int PassCount; + [SerializeField] + internal float SampleLength; + [SerializeField] + internal float Attenuation; + [SerializeField] + internal float Inclination; + }; + + // Star form library + public enum StarLibType + { + Cross = 0, + Cross_Filter, + Snow_Cross, + Vertical, + Sunny_Cross + }; + + // Simple definition of the star. + [Serializable] + public class StarDefData + { + [SerializeField] + private StarLibType m_starType = StarLibType.Cross; + [SerializeField] + private string m_starName = string.Empty; + [SerializeField] + private int m_starlinesCount = 2; + [SerializeField] + private int m_passCount = 4; + [SerializeField] + private float m_sampleLength = 1; + [SerializeField] + private float m_attenuation = 0.85f; + [SerializeField] + private float m_inclination = 0; + [SerializeField] + private float m_rotation = 0; + [SerializeField] + private StarLineData[] m_starLinesArr = null; + [SerializeField] + private float m_customIncrement = 90; + [SerializeField] + private float m_longAttenuation = 0; + + public StarDefData(){} + + public void Destroy() + { + m_starLinesArr = null; + } + + public StarDefData( StarLibType starType, string starName, int starLinesCount, int passCount, float sampleLength, float attenuation, float inclination, float rotation, float longAttenuation = 0, float customIncrement = -1 ) + { + m_starType = starType; + + m_starName = starName; + m_passCount = passCount; + m_sampleLength = sampleLength; + m_attenuation = attenuation; + m_starlinesCount = starLinesCount; + m_inclination = inclination; + m_rotation = rotation; + m_customIncrement = customIncrement; + m_longAttenuation = longAttenuation; + CalculateStarData(); + } + + public void CalculateStarData() + { + if ( m_starlinesCount == 0 ) + return; + + m_starLinesArr = new StarLineData[ m_starlinesCount ]; + float fInc = ( m_customIncrement > 0 ) ? m_customIncrement : ( 180.0f / ( float ) m_starlinesCount ); + fInc *= Mathf.Deg2Rad; + for ( int i = 0; i < m_starlinesCount; i++ ) + { + m_starLinesArr[ i ] = new StarLineData(); + m_starLinesArr[ i ].PassCount = m_passCount; + m_starLinesArr[ i ].SampleLength = m_sampleLength; + if ( m_longAttenuation > 0 ) + { + m_starLinesArr[ i ].Attenuation = ( ( i % 2 ) == 0 ) ? m_longAttenuation : m_attenuation; + } + else + { + m_starLinesArr[ i ].Attenuation = m_attenuation; + } + m_starLinesArr[ i ].Inclination = fInc * ( float ) i; + } + } + + + public StarLibType StarType + { + get + { + return m_starType; + } + set + { + m_starType = value; + } + } + + public string StarName + { + get + { + return m_starName; + } + set + { + m_starName = value; + } + } + + public int StarlinesCount + { + get + { + return m_starlinesCount; + } + set + { + m_starlinesCount = value; + CalculateStarData(); + } + } + + + + public int PassCount + { + get + { + return m_passCount; + } + set + { + m_passCount = value; + CalculateStarData(); + } + } + + + public float SampleLength + { + get + { + return m_sampleLength; + } + set + { + m_sampleLength = value; + CalculateStarData(); + } + } + + + public float Attenuation + { + get + { + return m_attenuation; + } + set + { + m_attenuation = value; + CalculateStarData(); + } + } + + public float Inclination + { + get + { + return m_inclination; + } + set + { + m_inclination = value; + CalculateStarData(); + } + } + public float CameraRotInfluence + { + get + { + return m_rotation; + } + set + { + m_rotation = value; + } + } + + public StarLineData[] StarLinesArr + { + get + { + return m_starLinesArr; + } + + } + + public float CustomIncrement + { + get + { + return m_customIncrement; + } + set + { + m_customIncrement = value; + CalculateStarData(); + } + } + + public float LongAttenuation + { + get + { + return m_longAttenuation; + } + set + { + m_longAttenuation = value; + CalculateStarData(); + } + } + }; +} diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyStarData.cs.meta b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyStarData.cs.meta new file mode 100644 index 0000000..f6b16e1 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyStarData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a83dd0640588dce4aa5d37521ffef61d +timeCreated: 1451915691 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyUtils.cs b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyUtils.cs new file mode 100644 index 0000000..f89f022 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyUtils.cs @@ -0,0 +1,203 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +using System.Collections.Generic; + +namespace AmplifyBloom +{ + public enum LogType + { + Normal, + Warning, + Error + } + + public class AmplifyUtils + { + public static int MaskTextureId; + public static int BlurRadiusId; + public static string HighPrecisionKeyword = "AB_HIGH_PRECISION"; + public static string ShaderModeTag = "Mode"; + public static string ShaderModeValue = "Full"; + public static string DebugStr = "[ Amplify Bloom ] "; + public static int UpscaleContributionId; + public static int SourceContributionId; + public static int LensStarburstRTId; + public static int LensDirtRTId; + public static int LensFlareRTId; + public static int LensGlareRTId; + public static int[] MipResultsRTS; + public static int[] AnamorphicRTS; + public static int[] AnamorphicGlareWeightsMatStr; + public static int[] AnamorphicGlareOffsetsMatStr; + public static int[] AnamorphicGlareWeightsStr; + public static int[] UpscaleWeightsStr; + public static int[] LensDirtWeightsStr; + public static int[] LensStarburstWeightsStr; + public static int BloomRangeId; + public static int LensDirtStrengthId; + public static int BloomParamsId; + public static int TempFilterValueId; + public static int LensFlareStarMatrixId; + public static int LensFlareStarburstStrengthId; + public static int LensFlareGhostsParamsId; + public static int LensFlareLUTId; + public static int LensFlareHaloParamsId; + public static int LensFlareGhostChrDistortionId; + public static int LensFlareHaloChrDistortionId; + public static int BokehParamsId = -1; + public static RenderTextureFormat CurrentRTFormat = RenderTextureFormat.DefaultHDR; + public static FilterMode CurrentFilterMode = FilterMode.Bilinear; + public static TextureWrapMode CurrentWrapMode = TextureWrapMode.Clamp; + public static RenderTextureReadWrite CurrentReadWriteMode = RenderTextureReadWrite.sRGB; + public static bool IsInitialized = false; + + private static List _allocatedRT = new List(); + public static void InitializeIds() + { + IsInitialized = true; + MaskTextureId = Shader.PropertyToID( "_MaskTex" ); + + MipResultsRTS = new int[]{ Shader.PropertyToID( "_MipResultsRTS0" ), + Shader.PropertyToID( "_MipResultsRTS1" ), + Shader.PropertyToID( "_MipResultsRTS2" ), + Shader.PropertyToID( "_MipResultsRTS3" ), + Shader.PropertyToID( "_MipResultsRTS4" ), + Shader.PropertyToID( "_MipResultsRTS5" )}; + + AnamorphicRTS = new int[]{ Shader.PropertyToID( "_AnamorphicRTS0" ), + Shader.PropertyToID( "_AnamorphicRTS1" ), + Shader.PropertyToID( "_AnamorphicRTS2" ), + Shader.PropertyToID( "_AnamorphicRTS3" ), + Shader.PropertyToID( "_AnamorphicRTS4" ), + Shader.PropertyToID( "_AnamorphicRTS5" ), + Shader.PropertyToID( "_AnamorphicRTS6" ), + Shader.PropertyToID( "_AnamorphicRTS7" )}; + + AnamorphicGlareWeightsMatStr = new int[]{ Shader.PropertyToID( "_AnamorphicGlareWeightsMat0" ), + Shader.PropertyToID( "_AnamorphicGlareWeightsMat1" ), + Shader.PropertyToID( "_AnamorphicGlareWeightsMat2" ), + Shader.PropertyToID( "_AnamorphicGlareWeightsMat3" )}; + + + AnamorphicGlareOffsetsMatStr = new int[]{ Shader.PropertyToID( "_AnamorphicGlareOffsetsMat0" ), + Shader.PropertyToID( "_AnamorphicGlareOffsetsMat1" ), + Shader.PropertyToID( "_AnamorphicGlareOffsetsMat2" ), + Shader.PropertyToID( "_AnamorphicGlareOffsetsMat3" )}; + + AnamorphicGlareWeightsStr = new int[]{ Shader.PropertyToID( "_AnamorphicGlareWeights0" ), + Shader.PropertyToID( "_AnamorphicGlareWeights1" ), + Shader.PropertyToID( "_AnamorphicGlareWeights2" ), + Shader.PropertyToID( "_AnamorphicGlareWeights3" ), + Shader.PropertyToID( "_AnamorphicGlareWeights4" ), + Shader.PropertyToID( "_AnamorphicGlareWeights5" ), + Shader.PropertyToID( "_AnamorphicGlareWeights6" ), + Shader.PropertyToID( "_AnamorphicGlareWeights7" ), + Shader.PropertyToID( "_AnamorphicGlareWeights8" ), + Shader.PropertyToID( "_AnamorphicGlareWeights9" ), + Shader.PropertyToID( "_AnamorphicGlareWeights10" ), + Shader.PropertyToID( "_AnamorphicGlareWeights11" ), + Shader.PropertyToID( "_AnamorphicGlareWeights12" ), + Shader.PropertyToID( "_AnamorphicGlareWeights13" ), + Shader.PropertyToID( "_AnamorphicGlareWeights14" ), + Shader.PropertyToID( "_AnamorphicGlareWeights15" )}; + + UpscaleWeightsStr = new int[]{ Shader.PropertyToID( "_UpscaleWeights0" ), + Shader.PropertyToID( "_UpscaleWeights1" ), + Shader.PropertyToID( "_UpscaleWeights2" ), + Shader.PropertyToID( "_UpscaleWeights3" ), + Shader.PropertyToID( "_UpscaleWeights4" ), + Shader.PropertyToID( "_UpscaleWeights5" ), + Shader.PropertyToID( "_UpscaleWeights6" ), + Shader.PropertyToID( "_UpscaleWeights7" )}; + + LensDirtWeightsStr = new int[]{ Shader.PropertyToID( "_LensDirtWeights0" ), + Shader.PropertyToID( "_LensDirtWeights1" ), + Shader.PropertyToID( "_LensDirtWeights2" ), + Shader.PropertyToID( "_LensDirtWeights3" ), + Shader.PropertyToID( "_LensDirtWeights4" ), + Shader.PropertyToID( "_LensDirtWeights5" ), + Shader.PropertyToID( "_LensDirtWeights6" ), + Shader.PropertyToID( "_LensDirtWeights7" )}; + + LensStarburstWeightsStr= new int[]{ Shader.PropertyToID( "_LensStarburstWeights0" ), + Shader.PropertyToID( "_LensStarburstWeights1" ), + Shader.PropertyToID( "_LensStarburstWeights2" ), + Shader.PropertyToID( "_LensStarburstWeights3" ), + Shader.PropertyToID( "_LensStarburstWeights4" ), + Shader.PropertyToID( "_LensStarburstWeights5" ), + Shader.PropertyToID( "_LensStarburstWeights6" ), + Shader.PropertyToID( "_LensStarburstWeights7" )}; + + BloomRangeId = Shader.PropertyToID( "_BloomRange" ); + LensDirtStrengthId = Shader.PropertyToID( "_LensDirtStrength" ); + BloomParamsId = Shader.PropertyToID( "_BloomParams" ); + TempFilterValueId = Shader.PropertyToID( "_TempFilterValue" ); + LensFlareStarMatrixId = Shader.PropertyToID( "_LensFlareStarMatrix" ); + LensFlareStarburstStrengthId = Shader.PropertyToID( "_LensFlareStarburstStrength" ); + LensFlareGhostsParamsId = Shader.PropertyToID( "_LensFlareGhostsParams" ); + LensFlareLUTId = Shader.PropertyToID( "_LensFlareLUT" ); + LensFlareHaloParamsId = Shader.PropertyToID( "_LensFlareHaloParams" ); + LensFlareGhostChrDistortionId = Shader.PropertyToID( "_LensFlareGhostChrDistortion" ); + LensFlareHaloChrDistortionId = Shader.PropertyToID( "_LensFlareHaloChrDistortion" ); + BokehParamsId = Shader.PropertyToID( "_BokehParams" ); + BlurRadiusId = Shader.PropertyToID( "_BlurRadius" ); + LensStarburstRTId = Shader.PropertyToID( "_LensStarburst" ); + LensDirtRTId = Shader.PropertyToID( "_LensDirt" ); + LensFlareRTId = Shader.PropertyToID( "_LensFlare" ); + LensGlareRTId = Shader.PropertyToID( "_LensGlare" ); + SourceContributionId = Shader.PropertyToID( "_SourceContribution" ); + UpscaleContributionId = Shader.PropertyToID( "_UpscaleContribution" ); + } + + public static void DebugLog( string value , LogType type ) + { + switch ( type ) + { + case LogType.Normal: Debug.Log( DebugStr + value ); break; + case LogType.Warning: Debug.LogWarning( DebugStr + value ); break; + case LogType.Error: Debug.LogError( DebugStr + value ); break; + } + } + + public static RenderTexture GetTempRenderTarget( int width, int height ) + { + RenderTexture newRT = RenderTexture.GetTemporary( width, height, 0, CurrentRTFormat , CurrentReadWriteMode ); + newRT.filterMode = CurrentFilterMode; + newRT.wrapMode = CurrentWrapMode; + _allocatedRT.Add( newRT ); + return newRT; + } + + public static void ReleaseTempRenderTarget( RenderTexture renderTarget ) + { + if ( renderTarget != null && _allocatedRT.Remove( renderTarget ) ) + { + renderTarget.DiscardContents(); + RenderTexture.ReleaseTemporary( renderTarget ); + } + } + + public static void ReleaseAllRT() + { + for ( int i = 0; i < _allocatedRT.Count; i++ ) + { + _allocatedRT[ i ].DiscardContents(); + RenderTexture.ReleaseTemporary( _allocatedRT[ i ] ); + } + _allocatedRT.Clear(); + } + + public static void EnsureKeywordEnabled( Material mat, string keyword, bool state ) + { + if ( mat != null ) + { + if ( state && !mat.IsKeywordEnabled( keyword ) ) + mat.EnableKeyword( keyword ); + else if ( !state && mat.IsKeywordEnabled( keyword ) ) + mat.DisableKeyword( keyword ); + } + } + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Plugins/Runtime/AmplifyUtils.cs.meta b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyUtils.cs.meta new file mode 100644 index 0000000..75b00e5 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/AmplifyUtils.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4d4292e65165fe0459356252af522f26 +timeCreated: 1448364899 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Plugins/Runtime/VersionInfo.cs b/Assets/AmplifyBloom/Plugins/Runtime/VersionInfo.cs new file mode 100644 index 0000000..7d46c41 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/VersionInfo.cs @@ -0,0 +1,63 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using System; +using UnityEngine; + +namespace AmplifyBloom +{ + [Serializable] + public class VersionInfo + { + public const byte Major = 1; + public const byte Minor = 0; + public const byte Release = 8; + + private static string StageSuffix = "_dev001"; + + + + public static string StaticToString() + { + return string.Format( "{0}.{1}.{2}", Major, Minor, Release ) + StageSuffix; + } + + public override string ToString() + { + return string.Format( "{0}.{1}.{2}", m_major, m_minor, m_release ) + StageSuffix; + } + + public int Number { get { return m_major * 100 + m_minor * 10 + m_release; } } + + [SerializeField] + private int m_major; + [SerializeField] + private int m_minor; + [SerializeField] + private int m_release; + + VersionInfo() + { + m_major = Major; + m_minor = Minor; + m_release = Release; + } + + VersionInfo( byte major, byte minor, byte release ) + { + m_major = major; + m_minor = minor; + m_release = release; + } + + public static VersionInfo Current() + { + return new VersionInfo( Major, Minor, Release ); + } + + public static bool Matches( VersionInfo version ) + { + return ( Major == version.m_major ) && ( Minor == version.m_minor ) && ( Release == version.m_release ); + } + } +} diff --git a/Assets/AmplifyBloom/Plugins/Runtime/VersionInfo.cs.meta b/Assets/AmplifyBloom/Plugins/Runtime/VersionInfo.cs.meta new file mode 100644 index 0000000..76afe79 --- /dev/null +++ b/Assets/AmplifyBloom/Plugins/Runtime/VersionInfo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1bae0790adcb45b499d918f30293e20d +timeCreated: 1449661386 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Readme.txt b/Assets/AmplifyBloom/Readme.txt new file mode 100644 index 0000000..5334350 --- /dev/null +++ b/Assets/AmplifyBloom/Readme.txt @@ -0,0 +1,76 @@ +About + + Amplify Bloom (c) Amplify Creations, Lda. All rights reserved. + + Amplify Bloom is a complete, fast and powerful Bloom Post-Process extension for Unity + + Redistribution of Amplify Bloom is frowned upon. If you want to share the + software, please refer others to the official download page: + + http://amplify.pt/unity/amplify-bloom + +Description + + Amplify Bloom brings industry-level post-process bloom effects into your project. + Packed with high quality features that + can be turned on/off and completely tweaked + to fulfil your project needs. + +Features + + * High quality bloom + * High-performance + * Highly tweakable + * Bokeh filtering + * Pseudo Lens Flare with Ghosts and Halos + * Anamorphic Glare + * Lens Dirt + * Lens Starburst + +Supported Platforms + + * All platforms + +Minimum Requirements + + Software + + Unity 5.3.x + +Quick Guide + + Amplify Bloom can be easily set on your project by selecting your game camera object and + doing one of the following steps: + + 1) Go to 'Component/Image Effects' menu and select the 'Amplify Bloom' option. Note that + you need to have a game object selected with a camera component, if not present it will + create one + + 2) Hit 'Add Component' on the camera Inspector View, type 'Amplify Bloom' on the search + box and select the result + +Documentation + + Please refer to the following website for an up-to-date online manual: + + http://amplify.pt/unity/amplify-bloom/manual + +Feedback + + To file error reports, questions or suggestions, you may use + our feedback form online: + + http://amplify.pt/contact + + Or contact us directly: + + For general inquiries - info@amplify.pt + For technical support - support@amplify.pt (customers only) + +Acknowledgements + + This project was based on previous work by Victor Martins + http://pixelnerve.com/v/ + + HDR Cubemap from No Emotion HDRs website + http://noemotionhdrs.net/ \ No newline at end of file diff --git a/Assets/AmplifyBloom/Readme.txt.meta b/Assets/AmplifyBloom/Readme.txt.meta new file mode 100644 index 0000000..62e0003 --- /dev/null +++ b/Assets/AmplifyBloom/Readme.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: db72fe34ea5523c4da5bb0a1a24225e0 +timeCreated: 1452695704 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Resources.meta b/Assets/AmplifyBloom/Resources.meta new file mode 100644 index 0000000..3e89257 --- /dev/null +++ b/Assets/AmplifyBloom/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 478246d8dc0d062449c316bdbd1b29c0 +folderAsset: yes +timeCreated: 1448539160 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Resources/Bloom.shader b/Assets/AmplifyBloom/Resources/Bloom.shader new file mode 100644 index 0000000..2439ef0 --- /dev/null +++ b/Assets/AmplifyBloom/Resources/Bloom.shader @@ -0,0 +1,378 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +Shader "Hidden/AmplifyBloom" +{ + Properties + { + _MainTex ( " ", 2D ) = "black" {} + _AnamorphicRTS0 ( " ",2D ) = "black"{} + _AnamorphicRTS1 ( " ",2D ) = "black"{} + _AnamorphicRTS2 ( " ",2D ) = "black"{} + _AnamorphicRTS3 ( " ",2D ) = "black"{} + _AnamorphicRTS4 ( " ",2D ) = "black"{} + _AnamorphicRTS5 ( " ",2D ) = "black"{} + _AnamorphicRTS6 ( " ",2D ) = "black"{} + _AnamorphicRTS7 ( " ",2D ) = "black"{} + _LensFlareLUT( " ",2D ) = "black"{} + } + + CGINCLUDE + #pragma target 3.0 + + #include "UnityCG.cginc" + #include "BloomLib.cginc" + #pragma multi_compile __ AB_HIGH_PRECISION + + uniform float4 _MainTex_TexelSize;// x - 1/width y - 1/height z- width w - height + + struct v2f_img_custom + { + float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; + #if UNITY_UV_STARTS_AT_TOP + float4 uv2 : TEXCOORD1; + #endif + }; + + v2f_img_custom vert_img_custom ( appdata_img v ) + { + v2f_img_custom o; + + o.pos = mul ( UNITY_MATRIX_MVP, v.vertex ); + o.uv = float4( v.texcoord.xy, 1, 1 ); + + #ifdef UNITY_HALF_TEXEL_OFFSET + o.uv.y += _MainTex_TexelSize.y; + #endif + + #if UNITY_UV_STARTS_AT_TOP + o.uv2 = float4( v.texcoord.xy, 1, 1 ); + if ( _MainTex_TexelSize.y < 0.0 ) + o.uv.y = 1.0 - o.uv.y; + #endif + + return o; + } + + #include "BloomFrag.cginc" + + ENDCG + + SubShader + { + ZTest Always Cull Off ZWrite Off + + Pass//0 + { + Name "frag_threshold" + + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_threshold + ENDCG + } + + Pass//1 + { + Name "frag_thresholdMask" + + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_thresholdMask + ENDCG + } + + Pass//2 + { + Name "frag_anamorphicGlare" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_anamorphicGlare + ENDCG + } + + Pass//3 + { + Name "frag_lensFlare0" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_lensFlare0 + ENDCG + } + + Pass//4 + { + Name "frag_lensFlare1" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_lensFlare1 + ENDCG + } + + Pass//5 + { + Name "frag_lensFlare2" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_lensFlare2 + ENDCG + } + + Pass//6 + { + Name "frag_lensFlare3" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_lensFlare3 + ENDCG + } + + Pass//7 + { + Name "frag_lensFlare4" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_lensFlare4 + ENDCG + } + + Pass//8 + { + Name "frag_lensFlare5" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_lensFlare5 + ENDCG + } + + Pass//9 + { + Name "frag_downsamplerNoWeightedAvg" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_downsamplerNoWeightedAvg + ENDCG + } + Pass//10 + { + Name "frag_downsampler_with_karis" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_downsampler_with_karis + ENDCG + } + + + Pass//11 + { + Name "frag_downsampler_without_karis" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_downsampler_without_karis + ENDCG + } + + Pass//12 + { + Name "frag_downsampler_temp_filter_with_karis" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_downsampler_temp_filter_with_karis + ENDCG + } + + + Pass//13 + { + Name "frag_downsampler_temp_filter_without_karis" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_downsampler_temp_filter_without_karis + ENDCG + } + + + + Pass//14 + { + Name "frag_horizontal_gaussian_blur" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_horizontal_gaussian_blur + ENDCG + } + + + Pass//15 + { + Name "frag_vertical_gaussian_blur" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_vertical_gaussian_blur + ENDCG + } + + Pass//16 + { + Name "frag_vertical_gaussian_blur_temp_filter" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_vertical_gaussian_blur_temp_filter + ENDCG + } + + Pass//17 + { + Name "frag_upscaleTentFirstPass" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_upscaleTentFirstPass + ENDCG + } + + Pass//18 + { + Name "frag_upscaleTent" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_upscaleTent + ENDCG + } + + Pass//19 + { + Name "frag_weightedAddPS1" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_weightedAddPS1 + ENDCG + } + + Pass//20 + { + Name "frag_weightedAddPS2" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_weightedAddPS2 + ENDCG + } + + Pass//21 + { + Name "frag_weightedAddPS3" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_weightedAddPS3 + ENDCG + } + + Pass//22 + { + Name "frag_weightedAddPS4" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_weightedAddPS4 + ENDCG + } + + Pass//23 + { + Name "frag_weightedAddPS5" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_weightedAddPS5 + ENDCG + } + + Pass//24 + { + Name "frag_weightedAddPS6" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_weightedAddPS6 + ENDCG + } + + Pass//25 + { + Name "frag_weightedAddPS7" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_weightedAddPS7 + ENDCG + } + + Pass//26 + { + Name "frag_weightedAddPS8" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_weightedAddPS8 + ENDCG + } + + Pass//27 + { + Name "frag_BokehFiltering" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_BokehFiltering + ENDCG + } + + Pass//28 + { + Name "frag_BokehComposition2S" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_BokehComposition2S + ENDCG + } + + Pass//29 + { + Name "frag_BokehComposition3S" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_BokehComposition3S + ENDCG + } + + Pass//30 + { + Name "frag_BokehComposition4S" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_BokehComposition4S + ENDCG + } + + Pass//31 + { + Name "frag_BokehComposition5S" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_BokehComposition5S + ENDCG + } + + Pass//32 + { + Name "frag_BokehComposition6S" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_BokehComposition6S + ENDCG + } + + Pass//33 + { + Name "frag_decode" + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag_decode + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Resources/Bloom.shader.meta b/Assets/AmplifyBloom/Resources/Bloom.shader.meta new file mode 100644 index 0000000..a270e84 --- /dev/null +++ b/Assets/AmplifyBloom/Resources/Bloom.shader.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 4f39db24ff9a0484c9ea5c2fa1c86c1b +timeCreated: 1453823249 +licenseType: Store +ShaderImporter: + defaultTextures: + - _LensDirt: {fileID: 2800000, guid: 7825356d1f1778140ad12b5dfe6b4d41, type: 3} + - _LensStarburst: {fileID: 2800000, guid: c2216a0fed1c98742b826a85db28021c, type: 3} + - _MainTex: {instanceID: 0} + - _LensFlare: {instanceID: 0} + - _LensGlare: {instanceID: 0} + - _AnamorphicRTS0: {instanceID: 0} + - _AnamorphicRTS1: {instanceID: 0} + - _AnamorphicRTS2: {instanceID: 0} + - _AnamorphicRTS3: {instanceID: 0} + - _AnamorphicRTS4: {instanceID: 0} + - _AnamorphicRTS5: {instanceID: 0} + - _AnamorphicRTS6: {instanceID: 0} + - _AnamorphicRTS7: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Resources/BloomFinal.shader b/Assets/AmplifyBloom/Resources/BloomFinal.shader new file mode 100644 index 0000000..9bb4cba --- /dev/null +++ b/Assets/AmplifyBloom/Resources/BloomFinal.shader @@ -0,0 +1,414 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +Shader "Hidden/BloomFinal" +{ + Properties + { + _LensDirt ( "Lens Dirt Texture",2D ) = "black"{} + _LensStarburst ( "Lens Starburst Texture",2D ) = "black"{} + _MainTex ( " ", 2D ) = "black" {} + _LensFlare ( " ",2D ) = "black"{} + _LensGlare ( " ",2D ) = "black"{} + _MipResultsRTS0 ( " ",2D ) = "black"{} + _MipResultsRTS1 ( " ",2D ) = "black"{} + _MipResultsRTS2 ( " ",2D ) = "black"{} + _MipResultsRTS3 ( " ",2D ) = "black"{} + _MipResultsRTS4 ( " ",2D ) = "black"{} + _MipResultsRTS5 ( " ",2D ) = "black"{} + } + + CGINCLUDE + #pragma vertex vert_img_custom + #pragma fragment frag + #pragma target 3.0 + + #include "UnityCG.cginc" + #include "BloomLib.cginc" + #pragma multi_compile __ AB_HIGH_PRECISION + uniform half4 _MainTex_TexelSize;// x - 1/width y - 1/height z- width w - height + + uniform sampler2D _MainTex; + uniform sampler2D _MipResultsRTS0; + uniform sampler2D _MipResultsRTS1; + uniform sampler2D _MipResultsRTS2; + uniform sampler2D _MipResultsRTS3; + uniform sampler2D _MipResultsRTS4; + uniform sampler2D _MipResultsRTS5; + + uniform half _UpscaleWeights0; + uniform half _UpscaleWeights1; + uniform half _UpscaleWeights2; + uniform half _UpscaleWeights3; + uniform half _UpscaleWeights4; + uniform half _UpscaleWeights5; + + uniform half _LensStarburstWeights0; + uniform half _LensStarburstWeights1; + uniform half _LensStarburstWeights2; + uniform half _LensStarburstWeights3; + uniform half _LensStarburstWeights4; + uniform half _LensStarburstWeights5; + + uniform half _LensDirtWeights0; + uniform half _LensDirtWeights1; + uniform half _LensDirtWeights2; + uniform half _LensDirtWeights3; + uniform half _LensDirtWeights4; + uniform half _LensDirtWeights5; + + uniform sampler2D _LensDirt; + uniform sampler2D _LensStarburst; + uniform sampler2D _LensFlare; + uniform sampler2D _LensGlare; + + uniform half _LensDirtStrength; + uniform half4x4 _LensFlareStarMatrix; + uniform half _LensFlareStarburstStrength; + + uniform half _SourceContribution; + uniform half _UpscaleContribution; + uniform half4 _BloomParams;// x - overallIntensity y - threshold, z - blur radius w - bloom scale + + struct v2f_img_custom + { + float4 pos : SV_POSITION; + half2 uv : TEXCOORD0; + #if UNITY_UV_STARTS_AT_TOP + half4 uv2 : TEXCOORD1; + #endif + half2 stereoUV : TEXCOORD2; + }; + + v2f_img_custom vert_img_custom ( appdata_img v ) + { + v2f_img_custom o; + + o.pos = mul ( UNITY_MATRIX_MVP, v.vertex ); + o.uv = float4( v.texcoord.xy, 1, 1 ); + + #ifdef UNITY_HALF_TEXEL_OFFSET + o.uv.y += _MainTex_TexelSize.y; + #endif + + #if UNITY_UV_STARTS_AT_TOP + o.uv2 = float4( v.texcoord.xy, 1, 1 ); + if ( _MainTex_TexelSize.y < 0.0 ) + o.uv.y = 1.0 - o.uv.y; + #endif + o.stereoUV = UnityStereoScreenSpaceUVAdjust ( o.uv, _MainTex_ST ); + return o; + } + + inline half3 CalculateStarburst ( half4 bloomColor, half2 uv ,half3 weightedStarburstColor ) + { + half2 imageCenter = half2( 0.5, 0.5 ); + half4 starburstColor = tex2D ( _LensStarburst, uv ); + half2 starburstUV = uv - imageCenter; + starburstUV = mul ( _LensFlareStarMatrix, half4( starburstUV, 0, 1 ) ).xy; + starburstUV += imageCenter; + starburstColor += tex2D ( _LensStarburst, starburstUV ); + bloomColor.rgb += weightedStarburstColor*starburstColor.rgb*_LensFlareStarburstStrength; + return bloomColor; + } + + inline half4 FinalComposition( v2f_img_custom input, const int count, const bool flare, const bool glare, const bool dirt, const bool starburst ) + { +#ifdef UNITY_UV_STARTS_AT_TOP + half2 uv = input.uv2; +#else + half2 uv = input.uv; +#endif + + half3 upscaleColor = half3( 0, 0, 0 ); + half3 weightedDirtColor = half3( 0, 0, 0 ); + half3 weightedStarburstColor = half3( 0, 0, 0 ); + + half3 b0 = 0; + half3 b1 = 0; + half3 b2 = 0; + half3 b3 = 0; + half3 b4 = 0; + half3 b5 = 0; + + + b0 = DecodeColor ( tex2D ( _MipResultsRTS0, input.stereoUV ) ); + if ( count > 1 ) b1 = DecodeColor ( tex2D ( _MipResultsRTS1, input.stereoUV ) ); + if ( count > 2 ) b2 = DecodeColor ( tex2D ( _MipResultsRTS2, input.stereoUV ) ); + if ( count > 3 ) b3 = DecodeColor ( tex2D ( _MipResultsRTS3, input.stereoUV ) ); + if ( count > 4 ) b4 = DecodeColor ( tex2D ( _MipResultsRTS4, input.stereoUV ) ); + if ( count > 5 ) b5 = DecodeColor ( tex2D ( _MipResultsRTS5, input.stereoUV ) ); + + upscaleColor = _UpscaleWeights0 * b0; + if ( count > 1 ) upscaleColor += _UpscaleWeights1 * b1; + if ( count > 2 ) upscaleColor += _UpscaleWeights2 * b2; + if ( count > 3 ) upscaleColor += _UpscaleWeights3 * b3; + if ( count > 4 ) upscaleColor += _UpscaleWeights4 * b4; + if ( count > 5 ) upscaleColor += _UpscaleWeights5 * b5; + + if ( dirt ) + { + weightedDirtColor = _LensDirtWeights0 * b0; + if ( count > 1 ) weightedDirtColor += _LensDirtWeights1 * b1; + if ( count > 2 ) weightedDirtColor += _LensDirtWeights2 * b2; + if ( count > 3 ) weightedDirtColor += _LensDirtWeights3 * b3; + if ( count > 4 ) weightedDirtColor += _LensDirtWeights4 * b4; + if ( count > 5 ) weightedDirtColor += _LensDirtWeights5 * b5; + } + + if ( starburst ) + { + weightedStarburstColor = _LensStarburstWeights0 * b0; + if ( count > 1 ) weightedStarburstColor += _LensStarburstWeights1 * b1; + if ( count > 2 ) weightedStarburstColor += _LensStarburstWeights2 * b2; + if ( count > 3 ) weightedStarburstColor += _LensStarburstWeights3 * b3; + if ( count > 4 ) weightedStarburstColor += _LensStarburstWeights4 * b4; + if ( count > 5 ) weightedStarburstColor += _LensStarburstWeights5 * b5; + } + + half4 color = tex2D ( _MainTex, input.stereoUV ); + half4 originalUpscaleColor = half4( upscaleColor, 1 ); + half4 bloomColor = _UpscaleContribution*originalUpscaleColor*_BloomParams.x; + + if ( flare ) + { + half4 lensFlareColor = tex2D ( _LensFlare, input.stereoUV ); + bloomColor += lensFlareColor; + originalUpscaleColor += lensFlareColor; + } + + if ( glare ) + { + half4 lensGlareColor = tex2D ( _LensGlare, input.stereoUV ); + bloomColor += lensGlareColor; + originalUpscaleColor += lensGlareColor; + } + + if ( dirt ) + bloomColor.rgb += weightedDirtColor*_LensDirtStrength*tex2D ( _LensDirt, input.uv ).rgb; + + if ( starburst ) + bloomColor.rgb = CalculateStarburst ( bloomColor, input.uv, weightedStarburstColor ); + + return _SourceContribution*color + bloomColor; + } + + ENDCG + + // HIGH END DEVICES WITH MORE THAN 11 TEXTURE LOOKUP CAPABILITIES + SubShader + { + ZTest Always Cull Off ZWrite Off + Tags{ "Mode"="Full" } + // count 1 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target { return FinalComposition( i, 1, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, true, true, true ); } ENDCG } + // count 2 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, true, true, true ); } ENDCG } + // count 3 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, true, true ); } ENDCG } + // count 4 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, true, true ); } ENDCG } + // count 5 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, true, true, true ); } ENDCG } + // count 6 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, true, true, true, true ); } ENDCG } + } + // LOW END DEVICES WITH ONLY 8 TEXTURE LOOKUP CAPABILITIES + SubShader + { + ZTest Always Cull Off ZWrite Off + Tags{ "Mode" = "Half" } + // count 1 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 1, true, true, true, true ); } ENDCG } + // count 2 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 2, true, true, true, true ); } ENDCG } + // count 3 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, true, true ); } ENDCG } + // count 4 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, true, true ); } ENDCG } + // count 5 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, true, true ); } ENDCG } + // count 6 + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, false, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, false, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, false, true, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 6, true, false, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, false, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, false, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, false, true, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 5, true, true, false, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, false, true ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 4, true, true, true, false ); } ENDCG } + Pass{ CGPROGRAM half4 frag ( v2f_img_custom i ) : SV_Target{ return FinalComposition ( i, 3, true, true, true, true ); } ENDCG } + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Resources/BloomFinal.shader.meta b/Assets/AmplifyBloom/Resources/BloomFinal.shader.meta new file mode 100644 index 0000000..b968603 --- /dev/null +++ b/Assets/AmplifyBloom/Resources/BloomFinal.shader.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 6e4f40cfbd18b3b469b5079288cea652 +timeCreated: 1455035619 +licenseType: Store +ShaderImporter: + defaultTextures: + - _LensDirt: {fileID: 2800000, guid: 7825356d1f1778140ad12b5dfe6b4d41, type: 3} + - _LensStarburst: {fileID: 2800000, guid: c2216a0fed1c98742b826a85db28021c, type: 3} + - _MainTex: {instanceID: 0} + - _LensFlare: {instanceID: 0} + - _LensGlare: {instanceID: 0} + - _AnamorphicRTS0: {instanceID: 0} + - _AnamorphicRTS1: {instanceID: 0} + - _AnamorphicRTS2: {instanceID: 0} + - _AnamorphicRTS3: {instanceID: 0} + - _AnamorphicRTS4: {instanceID: 0} + - _AnamorphicRTS5: {instanceID: 0} + - _AnamorphicRTS6: {instanceID: 0} + - _AnamorphicRTS7: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Resources/BloomFrag.cginc b/Assets/AmplifyBloom/Resources/BloomFrag.cginc new file mode 100644 index 0000000..ca5b0f0 --- /dev/null +++ b/Assets/AmplifyBloom/Resources/BloomFrag.cginc @@ -0,0 +1,383 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +#ifndef AMPLIFY_BLOOMFRAG_INCLUDED +#define AMPLIFY_BLOOMFRAG_INCLUDED + +#include "UnityCG.cginc" + +uniform sampler2D _CameraDepthTexture; +uniform sampler2D _MainTex; +uniform sampler2D _MaskTex; + +uniform float _BlurRadius; +uniform half4 _BloomParams;// x - overallIntensity y - threshold, z - blur radius w - bloom scale +uniform half _TempFilterValue; + +uniform half4x4 _LensFlareStarMatrix; +uniform half _LensFlareStarburstStrength; + +uniform half4 _BokehParams; + + + +half4 frag_decode ( v2f_img input ) : SV_Target +{ + return half4( DecodeColor ( tex2D ( _MainTex, input.uv ) ),1 ); +} + +half4 frag_threshold ( v2f_img input ) : SV_Target +{ + return CalcThreshold ( _BloomParams.y,input.uv, _MainTex ); +} + +half4 frag_thresholdMask ( v2f_img input ) : SV_Target +{ + return CalcThresholdWithMask ( _BloomParams.y,input.uv, _MainTex ,_MaskTex ); +} + +// +//half4 frag_BokehFiltering ( v2f_img input ) : SV_Target +//{ +// const half bleedingBias = 0.02; +//const half bleedingMult = 30; +// +//half4 centerPixel = tex2D ( _MainTex, input.uv ); +//half centerDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, input.uv ); +// +//half centerPixelWeight = CalculateBokehWeight ( centerDepth, _BokehParams.x, _BokehParams.y, _BokehParams.z, _ProjectionParams.z, _BokehParams.w ); +// +//half4 color = half4( 0,0,0,0 ); +//half totalWeight = 0; +// +//UNITY_UNROLL +//for ( int t = 0; t < 8; t++ ) +//{ +// half2 sampleCoords = input.uv + _AnamorphicGlareWeights[ t ].xy*centerPixelWeight; +// half4 samplePixel = tex2D ( _MainTex, sampleCoords ); +// half4 sampleDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, sampleCoords ); +// half weight = ( sampleDepth < centerDepth ) ? centerPixelWeight*bleedingMult : 1; +// weight = ( centerPixelWeight > ( samplePixel.a + bleedingBias ) ) ? weight : 1; +// weight = saturate ( weight ); +// color += samplePixel * weight; +// totalWeight += weight; +//} +//return color / totalWeight; +//} + + +half4 frag_BokehFiltering ( v2f_img input ) : SV_Target +{ + const half bleedingBias = 0.02; + const half bleedingMult = 30; + + half4 centerPixel = tex2D ( _MainTex, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST )); + half centerDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ); + + half centerPixelWeight = CalculateBokehWeight ( centerDepth, _BokehParams.x, _BokehParams.y, _BokehParams.z, _ProjectionParams.z, _BokehParams.w ); + + half4 color = half4( 0,0,0,0 ); + half totalWeight = 0; + + half2 sampleCoords = half2( 0, 0 ); + half4 samplePixel = half4( 0,0,0,0 ); + half4 sampleDepth = half4( 0,0,0,0 ); + half weight = 0; + + //0 + sampleCoords = input.uv + _AnamorphicGlareWeights0.xy*centerPixelWeight; + samplePixel = tex2D ( _MainTex, UnityStereoScreenSpaceUVAdjust ( sampleCoords, _MainTex_ST )); + sampleDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, sampleCoords ); + weight = ( sampleDepth < centerDepth ) ? centerPixelWeight*bleedingMult : 1; + weight = ( centerPixelWeight > ( samplePixel.a + bleedingBias ) ) ? weight : 1; + weight = saturate ( weight ); + color += samplePixel * weight; + totalWeight += weight; + //1 + sampleCoords = input.uv + _AnamorphicGlareWeights1.xy*centerPixelWeight; + samplePixel = tex2D ( _MainTex, UnityStereoScreenSpaceUVAdjust ( sampleCoords, _MainTex_ST ) ); + sampleDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, sampleCoords ); + weight = ( sampleDepth < centerDepth ) ? centerPixelWeight*bleedingMult : 1; + weight = ( centerPixelWeight > ( samplePixel.a + bleedingBias ) ) ? weight : 1; + weight = saturate ( weight ); + color += samplePixel * weight; + totalWeight += weight; + //2 + sampleCoords = input.uv + _AnamorphicGlareWeights2.xy*centerPixelWeight; + samplePixel = tex2D ( _MainTex, UnityStereoScreenSpaceUVAdjust ( sampleCoords, _MainTex_ST ) ); + sampleDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, sampleCoords ); + weight = ( sampleDepth < centerDepth ) ? centerPixelWeight*bleedingMult : 1; + weight = ( centerPixelWeight > ( samplePixel.a + bleedingBias ) ) ? weight : 1; + weight = saturate ( weight ); + color += samplePixel * weight; + totalWeight += weight; + //3 + sampleCoords = input.uv + _AnamorphicGlareWeights3.xy*centerPixelWeight; + samplePixel = tex2D ( _MainTex, UnityStereoScreenSpaceUVAdjust ( sampleCoords, _MainTex_ST ) ); + sampleDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, sampleCoords ); + weight = ( sampleDepth < centerDepth ) ? centerPixelWeight*bleedingMult : 1; + weight = ( centerPixelWeight > ( samplePixel.a + bleedingBias ) ) ? weight : 1; + weight = saturate ( weight ); + color += samplePixel * weight; + totalWeight += weight; + //4 + sampleCoords = input.uv + _AnamorphicGlareWeights4.xy*centerPixelWeight; + samplePixel = tex2D ( _MainTex, UnityStereoScreenSpaceUVAdjust ( sampleCoords, _MainTex_ST ) ); + sampleDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, sampleCoords ); + weight = ( sampleDepth < centerDepth ) ? centerPixelWeight*bleedingMult : 1; + weight = ( centerPixelWeight > ( samplePixel.a + bleedingBias ) ) ? weight : 1; + weight = saturate ( weight ); + color += samplePixel * weight; + totalWeight += weight; + //5 + sampleCoords = input.uv + _AnamorphicGlareWeights5.xy*centerPixelWeight; + samplePixel = tex2D ( _MainTex, UnityStereoScreenSpaceUVAdjust ( sampleCoords, _MainTex_ST ) ); + sampleDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, sampleCoords ); + weight = ( sampleDepth < centerDepth ) ? centerPixelWeight*bleedingMult : 1; + weight = ( centerPixelWeight > ( samplePixel.a + bleedingBias ) ) ? weight : 1; + weight = saturate ( weight ); + color += samplePixel * weight; + totalWeight += weight; + //6 + sampleCoords = input.uv + _AnamorphicGlareWeights6.xy*centerPixelWeight; + samplePixel = tex2D ( _MainTex, UnityStereoScreenSpaceUVAdjust ( sampleCoords, _MainTex_ST ) ); + sampleDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, sampleCoords ); + weight = ( sampleDepth < centerDepth ) ? centerPixelWeight*bleedingMult : 1; + weight = ( centerPixelWeight > ( samplePixel.a + bleedingBias ) ) ? weight : 1; + weight = saturate ( weight ); + color += samplePixel * weight; + totalWeight += weight; + //7 + sampleCoords = input.uv + _AnamorphicGlareWeights7.xy*centerPixelWeight; + samplePixel = tex2D ( _MainTex, UnityStereoScreenSpaceUVAdjust ( sampleCoords, _MainTex_ST ) ); + sampleDepth = SAMPLE_DEPTH_TEXTURE ( _CameraDepthTexture, sampleCoords ); + weight = ( sampleDepth < centerDepth ) ? centerPixelWeight*bleedingMult : 1; + weight = ( centerPixelWeight > ( samplePixel.a + bleedingBias ) ) ? weight : 1; + weight = saturate ( weight ); + color += samplePixel * weight; + + + totalWeight += weight; + return color / totalWeight; +} + +half4 frag_BokehComposition2S ( v2f_img input ) : SV_Target +{ + return min ( tex2D ( _MainTex,UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) , tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); +} + +half4 frag_BokehComposition3S ( v2f_img input ) : SV_Target +{ + half4 colorMinA = min ( tex2D ( _MainTex,UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) , tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return min ( colorMinA,tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); +} + +half4 frag_BokehComposition4S ( v2f_img input ) : SV_Target +{ + half4 colorMin = min ( tex2D ( _MainTex,UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) , tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + colorMin = min ( colorMin, tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + colorMin = min ( colorMin, tex2D ( _AnamorphicRTS2, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return colorMin; +} + +half4 frag_BokehComposition5S ( v2f_img input ) : SV_Target +{ + half4 colorMin = min ( tex2D ( _MainTex,UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) , tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + colorMin = min ( colorMin, tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + colorMin = min ( colorMin, tex2D ( _AnamorphicRTS2, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + colorMin = min ( colorMin, tex2D ( _AnamorphicRTS3, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return colorMin; +} + +half4 frag_BokehComposition6S ( v2f_img input ) : SV_Target +{ + half4 colorMin = min ( tex2D ( _MainTex,UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) , tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + colorMin = min ( colorMin, tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + colorMin = min ( colorMin, tex2D ( _AnamorphicRTS2, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + colorMin = min ( colorMin, tex2D ( _AnamorphicRTS3, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + colorMin = min ( colorMin, tex2D ( _AnamorphicRTS4, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return colorMin; +} + +half4 frag_weightedAddPS1 ( v2f_img input ) : SV_Target +{ + half3 vColor = half3( 0,0,0 ); + vColor += _AnamorphicGlareWeights0 * DecodeColor ( tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return EncodeColor ( vColor ); +} + +half4 frag_weightedAddPS2 ( v2f_img input ) : SV_Target +{ + half3 vColor = half3( 0,0,0 ); + vColor += _AnamorphicGlareWeights0 * DecodeColor ( tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights1 * DecodeColor ( tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return EncodeColor ( vColor ); +} + +half4 frag_weightedAddPS3 ( v2f_img input ) : SV_Target +{ + half3 vColor = half3( 0,0,0 ); + vColor += _AnamorphicGlareWeights0 * DecodeColor ( tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights1 * DecodeColor ( tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights2 * DecodeColor ( tex2D ( _AnamorphicRTS2, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return EncodeColor ( vColor ); +} + +half4 frag_weightedAddPS4 ( v2f_img input ) : SV_Target +{ + half3 vColor = half3( 0,0,0 ); + vColor += _AnamorphicGlareWeights0 * DecodeColor ( tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights1 * DecodeColor ( tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights2 * DecodeColor ( tex2D ( _AnamorphicRTS2, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights3 * DecodeColor ( tex2D ( _AnamorphicRTS3, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return EncodeColor ( vColor ); +} + +half4 frag_weightedAddPS5 ( v2f_img input ) : SV_Target +{ + half3 vColor = half3( 0,0,0 ); + vColor += _AnamorphicGlareWeights0 * DecodeColor ( tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights1 * DecodeColor ( tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights2 * DecodeColor ( tex2D ( _AnamorphicRTS2, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights3 * DecodeColor ( tex2D ( _AnamorphicRTS3, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights4 * DecodeColor ( tex2D ( _AnamorphicRTS4, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return EncodeColor ( vColor ); +} + +half4 frag_weightedAddPS6 ( v2f_img input ) : SV_Target +{ + + half3 vColor = half3( 0,0,0 ); + vColor += _AnamorphicGlareWeights0 * DecodeColor ( tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights1 * DecodeColor ( tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights2 * DecodeColor ( tex2D ( _AnamorphicRTS2, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights3 * DecodeColor ( tex2D ( _AnamorphicRTS3, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights4 * DecodeColor ( tex2D ( _AnamorphicRTS4, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights5 * DecodeColor ( tex2D ( _AnamorphicRTS5, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return EncodeColor ( vColor ); +} + +half4 frag_weightedAddPS7 ( v2f_img input ) : SV_Target +{ + half3 vColor = half3( 0,0,0 ); + vColor += _AnamorphicGlareWeights0 * DecodeColor ( tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights1 * DecodeColor ( tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights2 * DecodeColor ( tex2D ( _AnamorphicRTS2, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights3 * DecodeColor ( tex2D ( _AnamorphicRTS3, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights4 * DecodeColor ( tex2D ( _AnamorphicRTS4, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights5 * DecodeColor ( tex2D ( _AnamorphicRTS5, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights6 * DecodeColor ( tex2D ( _AnamorphicRTS6, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return EncodeColor ( vColor ); +} + +half4 frag_weightedAddPS8 ( v2f_img input ) : SV_Target +{ + half3 vColor = half3( 0,0,0 ); + vColor += _AnamorphicGlareWeights0 * DecodeColor ( tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights1 * DecodeColor ( tex2D ( _AnamorphicRTS1, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights2 * DecodeColor ( tex2D ( _AnamorphicRTS2, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights3 * DecodeColor ( tex2D ( _AnamorphicRTS3, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights4 * DecodeColor ( tex2D ( _AnamorphicRTS4, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights5 * DecodeColor ( tex2D ( _AnamorphicRTS5, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights6 * DecodeColor ( tex2D ( _AnamorphicRTS6, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + vColor += _AnamorphicGlareWeights7 * DecodeColor ( tex2D ( _AnamorphicRTS7, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); + return EncodeColor ( vColor ); +} + +half4 frag_anamorphicGlare ( v2f_img input ) : SV_Target +{ + return AnamorphicGlareMat ( input.uv,_MainTex ); +} + +half4 frag_lensFlare0 ( v2f_img input ) : SV_Target +{ + return CalcLensFlare ( 0,_MainTex_TexelSize.xy, input.uv , _MainTex ); +} + +half4 frag_lensFlare1 ( v2f_img input ) : SV_Target +{ + return CalcLensFlare ( 1,_MainTex_TexelSize.xy, input.uv , _MainTex ); +} + +half4 frag_lensFlare2 ( v2f_img input ) : SV_Target +{ + return CalcLensFlare ( 2,_MainTex_TexelSize.xy, input.uv , _MainTex ); +} + +half4 frag_lensFlare3 ( v2f_img input ) : SV_Target +{ + return CalcLensFlare ( 3,_MainTex_TexelSize.xy, input.uv , _MainTex ); +} + +half4 frag_lensFlare4 ( v2f_img input ) : SV_Target +{ + return CalcLensFlare ( 4,_MainTex_TexelSize.xy, input.uv , _MainTex ); +} + +half4 frag_lensFlare5 ( v2f_img input ) : SV_Target +{ + return CalcLensFlare ( 5,_MainTex_TexelSize.xy, input.uv , _MainTex ); +} + +half4 frag_downsampler_with_karis ( v2f_img input ) : SV_Target +{ + return DownsampleWithKaris ( input.uv, _MainTex_TexelSize.xy, _MainTex ); +} + +half4 frag_downsampler_without_karis ( v2f_img input ) : SV_Target +{ + return DownsampleWithoutKaris ( input.uv, _MainTex_TexelSize.xy, _MainTex ); +} + +half4 frag_downsampler_temp_filter_with_karis ( v2f_img input ) : SV_Target +{ + half4 currentColor = DownsampleWithKaris ( input.uv, _MainTex_TexelSize.xy, _MainTex ); + half4 prevColor = tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ); + return lerp ( currentColor, prevColor, _TempFilterValue ); +} + +half4 frag_downsampler_temp_filter_without_karis ( v2f_img input ) : SV_Target +{ + half4 currentColor = DownsampleWithoutKaris ( input.uv, _MainTex_TexelSize.xy, _MainTex ); + half4 prevColor = tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ); + return lerp ( currentColor, prevColor, _TempFilterValue ); +} + +half4 frag_downsamplerNoWeightedAvg ( v2f_img input ) : SV_Target +{ + return DownsampleNoWeightedAvg ( input.uv, _MainTex_TexelSize.xy, _MainTex ); +} + +half4 frag_horizontal_gaussian_blur ( v2f_img input ) : SV_Target +{ + return NineTapGaussian ( input.uv, _MainTex,float2( _BlurRadius*_MainTex_TexelSize.x, 0 ) ); +} + +half4 frag_vertical_gaussian_blur ( v2f_img input ) : SV_Target +{ + return NineTapGaussian ( input.uv, _MainTex,float2( 0, _BlurRadius*_MainTex_TexelSize.y ) ); +} + +half4 frag_vertical_gaussian_blur_temp_filter ( v2f_img input ) : SV_Target +{ + half4 currentColor = NineTapGaussian ( input.uv, _MainTex, float2( 0, _BlurRadius*_MainTex_TexelSize.y ) ); + half4 prevColor = tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ); + return lerp ( currentColor, prevColor, _TempFilterValue ); +} + +half4 frag_upscaleTentFirstPass ( v2f_img input ) : SV_Target +{ + return FirstPassUpscaleBlurTent ( _MainTex, input.uv, _MainTex_TexelSize.xy, _BloomParams.z ); +} + +half4 frag_upscaleTent ( v2f_img input ) : SV_Target +{ + return UpscaleBlurTent ( _MainTex, _AnamorphicRTS0,input.uv, _MainTex_TexelSize.xy, _BloomParams.z ); +} + +half4 frag_add ( v2f_img input ) : SV_Target +{ + return ( tex2D ( _MainTex, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) + tex2D ( _AnamorphicRTS0, UnityStereoScreenSpaceUVAdjust ( input.uv, _MainTex_ST ) ) ); +} + +#endif diff --git a/Assets/AmplifyBloom/Resources/BloomFrag.cginc.meta b/Assets/AmplifyBloom/Resources/BloomFrag.cginc.meta new file mode 100644 index 0000000..4e19710 --- /dev/null +++ b/Assets/AmplifyBloom/Resources/BloomFrag.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 665ebe3047c653a49b9e5488b22582d8 +timeCreated: 1449156532 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Resources/BloomLib.cginc b/Assets/AmplifyBloom/Resources/BloomLib.cginc new file mode 100644 index 0000000..4d2f034 --- /dev/null +++ b/Assets/AmplifyBloom/Resources/BloomLib.cginc @@ -0,0 +1,557 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +#ifndef AMPLIFY_BLOOMLIB_INCLUDED +#define AMPLIFY_BLOOMLIB_INCLUDED + +#include "UnityCG.cginc" + + +uniform half4 _AnamorphicGlareWeights0; +uniform half4 _AnamorphicGlareWeights1; +uniform half4 _AnamorphicGlareWeights2; +uniform half4 _AnamorphicGlareWeights3; +uniform half4 _AnamorphicGlareWeights4; +uniform half4 _AnamorphicGlareWeights5; +uniform half4 _AnamorphicGlareWeights6; +uniform half4 _AnamorphicGlareWeights7; + + +uniform half4x4 _AnamorphicGlareOffsetsMat0; +uniform half4x4 _AnamorphicGlareOffsetsMat1; +uniform half4x4 _AnamorphicGlareOffsetsMat2; +uniform half4x4 _AnamorphicGlareOffsetsMat3; + +uniform half4x4 _AnamorphicGlareWeightsMat0; +uniform half4x4 _AnamorphicGlareWeightsMat1; +uniform half4x4 _AnamorphicGlareWeightsMat2; +uniform half4x4 _AnamorphicGlareWeightsMat3; + +uniform sampler2D _AnamorphicRTS0; +uniform sampler2D _AnamorphicRTS1; +uniform sampler2D _AnamorphicRTS2; +uniform sampler2D _AnamorphicRTS3; +uniform sampler2D _AnamorphicRTS4; +uniform sampler2D _AnamorphicRTS5; +uniform sampler2D _AnamorphicRTS6; +uniform sampler2D _AnamorphicRTS7; + + +uniform float4 _LensFlareGhostsParams; +uniform float4 _LensFlareHaloParams; +uniform float _LensFlareGhostChrDistortion; +uniform float _LensFlareHaloChrDistortion; + +uniform sampler2D _LensFlareLUT; + +half4 _MainTex_ST; + +// Enabling Stereo adjustment in versions prior to 4.5 +#ifndef UnityStereoScreenSpaceUVAdjust + #ifdef UNITY_SINGLE_PASS_STEREO + inline float2 UnityStereoScreenSpaceUVAdjustInternal ( float2 uv, float4 scaleAndOffset ) + { + return saturate ( uv.xy ) * scaleAndOffset.xy + scaleAndOffset.zw; + } + + inline float4 UnityStereoScreenSpaceUVAdjustInternal ( float4 uv, float4 scaleAndOffset ) + { + return float4( UnityStereoScreenSpaceUVAdjustInternal ( uv.xy, scaleAndOffset ), UnityStereoScreenSpaceUVAdjustInternal ( uv.zw, scaleAndOffset ) ); + } + #define UnityStereoScreenSpaceUVAdjust(x, y) UnityStereoScreenSpaceUVAdjustInternal(x, y) + #else + #define UnityStereoScreenSpaceUVAdjust(x, y) x + #endif +#endif + +// TONEMAP +inline half rcp ( half x ) { return 1.0 / x; } +inline half3 TonemapForward ( half3 c ) { return c * rcp ( 1.0 + Luminance ( c ) ); } +inline half3 TonemapInverse ( half3 c ) { return c * rcp ( 1.0 - Luminance ( saturate ( c ) ) ); } + +// ENCODE / DECODE +uniform half4 _BloomRange; // x - bloom range y - 1 / bloom range +inline half4 EncodeColor ( half3 color ) +{ +#ifdef AB_HIGH_PRECISION + return half4( color, 0 ); +#else + half4 enc = half4( 0, 0, 0, 0 ); + color *= _BloomRange.y; + enc.a = saturate ( max ( max ( color.r, color.g ), max ( color.b, 1e-6 ) ) ); + enc.a = ceil ( enc.a * 255.0 ) / 255.0; + enc.rgb = color / enc.a; + return enc; +#endif +} + +inline half3 DecodeColor ( half4 enc ) +{ +#ifdef AB_HIGH_PRECISION + return enc.rgb; +#else + return _BloomRange.x * enc.rgb * enc.a; +#endif +} + +// THRESHOLD +inline half4 CalcThreshold ( half threshold, float2 uv, sampler2D diffuseMap ) +{ + half4 color = tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uv, _MainTex_ST ) ); + +#ifdef AB_HIGH_PRECISION + return max ( color - threshold, 0 ); +#else + return EncodeColor ( clamp ( color.rgb - threshold.xxx, ( 0 ).xxx, _BloomRange.xxx ) ); +#endif +} + + +inline half4 CalcThresholdWithMask ( half threshold, float2 uv, sampler2D diffuseMap, sampler2D maskMap ) +{ + half4 color = tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uv, _MainTex_ST ) )*tex2D ( maskMap, uv ); + +#ifdef AB_HIGH_PRECISION + return max ( color - threshold, 0 ); +#else + return EncodeColor ( clamp ( color.rgb - threshold.xxx, ( 0 ).xxx, _BloomRange.xxx ) ); +#endif +} + +// BOKEH FILTER +inline half CalculateBokehWeight ( half depth, half aperture, half focalLength, half focalDistance, half FarPlane, half MaxCoCDiameter ) +{ + half S2 = depth * FarPlane; + half c = aperture *( abs ( S2 - focalDistance ) / S2 )*( focalLength / ( focalDistance - focalLength ) ); + half invSensorHeight = 41.667; + half percentOfSensor = c * invSensorHeight; + return clamp ( percentOfSensor, 0.0, MaxCoCDiameter ); +} + +// CHROMATIC ABERRATION +inline half3 CalcChromaticAberration ( sampler2D texMap, float2 uv, float2 dir, float3 distortion ) +{ + return half3( DecodeColor ( tex2D ( texMap, UnityStereoScreenSpaceUVAdjust ( uv + dir * distortion.r, _MainTex_ST ) ) ).r, + DecodeColor ( tex2D ( texMap, UnityStereoScreenSpaceUVAdjust ( uv + dir * distortion.g, _MainTex_ST ) ) ).g, + DecodeColor ( tex2D ( texMap, UnityStereoScreenSpaceUVAdjust ( uv + dir * distortion.b, _MainTex_ST ) ) ).b ); +} + +// PSEUDO - LENS FLARE +// Halo Params - x - strength y - width z - factor w - falloff +// Ghost Params - x - strength y - dispersal z - factor w - falloff + +inline half4 CalcLensFlare ( const int ghostsAmount, float2 texelSize, float2 uv, sampler2D thresholdMap ) +{ + half3 result = half3( 0, 0, 0 ); + float2 flippedUV = float2( 1, 1 ) - uv; + + //GHOST VECTOR TO IMAGE CENTER + float2 imageCenter = float2( 0.5, 0.5 ); + + const float imageCenterLength = 0.7071; + const float invImageCenterLength = 1.4142; + + float2 ghostVec = ( imageCenter - uv )*_LensFlareGhostsParams.y; + + float uvLen = length ( imageCenter - uv ) * invImageCenterLength; + float2 lutUV = float2( frac ( uvLen ), 0 ); + half3 lutColor = tex2D ( _LensFlareLUT, lutUV ); + + float2 chromaticDir = normalize ( ghostVec ); + float3 chromaticDistVec = float3( -texelSize.x*_LensFlareGhostChrDistortion, 0.0, texelSize.x*_LensFlareGhostChrDistortion ); + + // GHOSTS + UNITY_UNROLL + for ( int i = 0; i < ghostsAmount; i++ ) + { + float2 ghostUV = frac ( uv + ghostVec*( float ) i ); + float weight = length ( imageCenter - ghostUV ) *invImageCenterLength; + weight = pow ( ( 1 - weight )*_LensFlareGhostsParams.z, _LensFlareGhostsParams.w ); + weight = weight*weight; + result += CalcChromaticAberration ( thresholdMap, ghostUV, chromaticDir, chromaticDistVec ).rgb*weight*lutColor*_LensFlareGhostsParams.x; + } + + chromaticDistVec = float3( -texelSize.x*_LensFlareHaloChrDistortion, 0.0, texelSize.x*_LensFlareHaloChrDistortion ); + + // HALO + float2 haloVec = chromaticDir * _LensFlareHaloParams.y; + float haloWeight = length ( imageCenter - frac ( uv + haloVec ) )*invImageCenterLength; + haloWeight = pow ( ( 1 - haloWeight )*_LensFlareHaloParams.z, _LensFlareHaloParams.w ); + result += CalcChromaticAberration ( thresholdMap, frac ( uv + haloVec ), chromaticDir, chromaticDistVec ).rgb*haloWeight*_LensFlareHaloParams.x*lutColor; + + return EncodeColor ( result ); +} + +// ANAMORPHIC GLARE +//inline half4 AnamorphicGlareMat ( float2 uv, sampler2D diffuseMap ) +//{ +// half3 finalColor = half3( 0, 0, 0 ); +// UNITY_UNROLL +// for ( uint matIdx = 0; matIdx < 4; matIdx++ ) +// { +// UNITY_UNROLL +// for ( int vecIdx = 0; vecIdx < 4; vecIdx++ ) +// { +// float2 uvOffset = uv + _AnamorphicGlareOffsetsMat[ matIdx ][ vecIdx ].xy; +// half3 mainColor = DecodeColor ( tex2D ( diffuseMap, uvOffset ) ); +// finalColor.rgb += _AnamorphicGlareWeightsMat[ matIdx ][ vecIdx ].rgb*mainColor.rgb; +// } +// } +// return EncodeColor ( finalColor ); +//} + +inline half4 AnamorphicGlareMat ( float2 uv, sampler2D diffuseMap ) +{ + half3 finalColor = half3( 0, 0, 0 ); + float2 uvOffset = float2( 0, 0 ); + half3 mainColor = half3( 0, 0, 0 ); + + //MatIdx 0 + { + //vecIdx 0 + uvOffset = uv + _AnamorphicGlareOffsetsMat0[ 0 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat0[ 0 ].rgb*mainColor.rgb; + + //vecIdx 1 + uvOffset = uv + _AnamorphicGlareOffsetsMat0[ 1 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat0[ 1 ].rgb*mainColor.rgb; + + //vecIdx 2 + uvOffset = uv + _AnamorphicGlareOffsetsMat0[ 2 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat0[ 2 ].rgb*mainColor.rgb; + + //vecIdx 3 + uvOffset = uv + _AnamorphicGlareOffsetsMat0[ 3 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat0[ 3 ].rgb*mainColor.rgb; + + } + + //MatIdx 1 + { + //vecIdx 0 + uvOffset = uv + _AnamorphicGlareOffsetsMat1[ 0 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat1[ 0 ].rgb*mainColor.rgb; + + //vecIdx 1 + uvOffset = uv + _AnamorphicGlareOffsetsMat1[ 1 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat1[ 1 ].rgb*mainColor.rgb; + + //vecIdx 2 + uvOffset = uv + _AnamorphicGlareOffsetsMat1[ 2 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat1[ 2 ].rgb*mainColor.rgb; + + //vecIdx 3 + uvOffset = uv + _AnamorphicGlareOffsetsMat1[ 3 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat1[ 3 ].rgb*mainColor.rgb; + } + + //MatIdx 2 + { + //vecIdx 0 + uvOffset = uv + _AnamorphicGlareOffsetsMat2[ 0 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat2[ 0 ].rgb*mainColor.rgb; + + //vecIdx 1 + uvOffset = uv + _AnamorphicGlareOffsetsMat2[ 1 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat2[ 1 ].rgb*mainColor.rgb; + + //vecIdx 2 + uvOffset = uv + _AnamorphicGlareOffsetsMat2[ 2 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat2[ 2 ].rgb*mainColor.rgb; + + //vecIdx 3 + uvOffset = uv + _AnamorphicGlareOffsetsMat2[ 3 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat2[ 3 ].rgb*mainColor.rgb; + } + + //MatIdx 3 + { + //vecIdx 0 + uvOffset = uv + _AnamorphicGlareOffsetsMat3[ 0 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat3[ 0 ].rgb*mainColor.rgb; + + //vecIdx 1 + uvOffset = uv + _AnamorphicGlareOffsetsMat3[ 1 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat3[ 1 ].rgb*mainColor.rgb; + + //vecIdx 2 + uvOffset = uv + _AnamorphicGlareOffsetsMat3[ 2 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat3[ 2 ].rgb*mainColor.rgb; + + //vecIdx 3 + uvOffset = uv + _AnamorphicGlareOffsetsMat3[ 3 ].xy; + mainColor = DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uvOffset, _MainTex_ST ) ) ); + finalColor.rgb += _AnamorphicGlareWeightsMat3[ 3 ].rgb*mainColor.rgb; + } + + return EncodeColor ( finalColor ); +} + + +// GAUSSIAN FUNCTION +inline half4 NineTapGaussian ( float2 uv, sampler2D diffuseMap, float2 stride ) +{ + half4 color = half4( 0, 0, 0, 0 ); + color.rgb += DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uv, _MainTex_ST ) ) ) * 0.227027027; + + float2 d1 = stride * 1.3846153846; + color.rgb += DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uv + d1, _MainTex_ST ) ) ) * 0.3162162162; + color.rgb += DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uv - d1, _MainTex_ST ) ) ) * 0.3162162162; + + float2 d2 = stride * 3.2307692308; + color.rgb += DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uv + d2, _MainTex_ST ) ) ) * 0.0702702703; + color.rgb += DecodeColor ( tex2D ( diffuseMap, UnityStereoScreenSpaceUVAdjust ( uv - d2, _MainTex_ST ) ) ) * 0.0702702703; + + return EncodeColor ( color ); +} + +// UPSCALE FUNCTIONS +inline half4 FirstPassUpscaleBlurTent ( sampler2D currentMipRT, float2 uvCoords, float2 oneOverTexSize, float BlurRadius ) +{ + float2 TexelOffsets[ 9 ] = + { + float2( -1, -1 ), + float2( 0, -1 ), + float2( 1, -1 ), + float2( -1, 0 ), + float2( 0, 0 ), + float2( 1, 0 ), + float2( -1, 1 ), + float2( 0, 1 ), + float2( 1, 1 ) + }; + + half Weights[ 9 ] = + { + 0.0625, + 0.125, + 0.0625, + 0.125, + 0.25, + 0.125, + 0.0625, + 0.125, + 0.0625 + }; + + half4 color = half4( 0.0, 0.0, 0.0, 0.0 ); + + UNITY_UNROLL + for ( int i = 0; i < 9; i++ ) + { + float2 uv = uvCoords + TexelOffsets[ i ] * oneOverTexSize * BlurRadius; + color.rgb += DecodeColor ( tex2D ( currentMipRT, UnityStereoScreenSpaceUVAdjust ( uv, _MainTex_ST ) ) ) * Weights[ i ]; + } + + return EncodeColor ( color ); +} + +inline half4 UpscaleBlurTent ( sampler2D currentMipRT, sampler2D previousUpscale, float2 uvCoords, float2 oneOverTexSize, float BlurRadius ) +{ + float2 TexelOffsets[ 9 ] = + { + float2( -1, -1 ), + float2( 0, -1 ), + float2( 1, -1 ), + float2( -1, 0 ), + float2( 0, 0 ), + float2( 1, 0 ), + float2( -1, 1 ), + float2( 0, 1 ), + float2( 1, 1 ) + }; + + half Weights[ 9 ] = + { + 0.0625, + 0.125, + 0.0625, + 0.125, + 0.25, + 0.125, + 0.0625, + 0.125, + 0.0625 + }; + + half4 color = half4( 0.0, 0.0, 0.0, 0.0 ); + + UNITY_UNROLL + for ( int i = 0; i < 9; i++ ) + { + float2 uv = uvCoords + TexelOffsets[ i ] * oneOverTexSize * BlurRadius; + color.rgb += DecodeColor ( tex2D ( currentMipRT, UnityStereoScreenSpaceUVAdjust ( uv, _MainTex_ST ) ) ) * Weights[ i ]; + } + color.rgb += DecodeColor ( tex2D ( previousUpscale, UnityStereoScreenSpaceUVAdjust ( uvCoords, _MainTex_ST ) ) ); + + return EncodeColor ( color ); +} + +// DOWNSAMPLING FUNCTIONS +inline half4 DownsampleWithKaris ( float2 texcoord, float2 oneOverTextureSize, sampler2D DiffuseMap ) +{ + const int NUM_SAMPLES = 13; + float2 TexelOffsets[ NUM_SAMPLES ] = + { + float2( -1.0,-1.0 ), + float2( 1.0,-1.0 ), + float2( 1.0,1.0 ), + float2( -1.0,1.0 ), + float2( -2.0,-2.0 ), + float2( 0.0,-2.0 ), + float2( 2.0,-2.0 ), + float2( -2.0,0.0 ), + float2( 0.0,0.0 ), + float2( 2.0,0.0 ), + float2( -2.0,2.0 ), + float2( 0.0,2.0 ), + float2( 2.0,2.0 ) + }; + + + half4 redSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 yellowSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 greenSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 blueSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 purpleSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 texels[ NUM_SAMPLES ]; + + + half4 sum = half4( 1.0, 1.0, 1.0, 1.0 ); + UNITY_UNROLL + for ( int i = 0; i < NUM_SAMPLES; ++i ) + { + float2 uv = texcoord + ( TexelOffsets[ i ] * oneOverTextureSize ); + texels[ i ].rgb = DecodeColor ( tex2D ( DiffuseMap, UnityStereoScreenSpaceUVAdjust ( uv, _MainTex_ST ) ) ); + } + + redSum = ( texels[ 0 ] + texels[ 1 ] + texels[ 2 ] + texels[ 3 ] ) * 0.25; + yellowSum = ( texels[ 7 ] + texels[ 8 ] + texels[ 10 ] + texels[ 11 ] ) * 0.25; + greenSum = ( texels[ 8 ] + texels[ 9 ] + texels[ 11 ] + texels[ 12 ] ) * 0.25; + blueSum = ( texels[ 5 ] + texels[ 6 ] + texels[ 8 ] + texels[ 9 ] ) * 0.25; + purpleSum = ( texels[ 4 ] + texels[ 5 ] + texels[ 7 ] + texels[ 8 ] ) * 0.25; + + redSum.rgb = TonemapForward ( redSum.rgb ); + yellowSum.rgb = TonemapForward ( yellowSum.rgb ); + greenSum.rgb = TonemapForward ( greenSum.rgb ); + blueSum.rgb = TonemapForward ( blueSum.rgb ); + purpleSum.rgb = TonemapForward ( purpleSum.rgb ); + + sum = ( redSum * 0.5 ) + ( ( yellowSum + greenSum + blueSum + purpleSum ) * 0.125 ); + + return EncodeColor ( sum.rgb ); +} + + +inline half4 DownsampleWithoutKaris ( float2 texcoord, float2 oneOverTextureSize, sampler2D DiffuseMap ) +{ + const int NUM_SAMPLES = 13; + float2 TexelOffsets[ NUM_SAMPLES ] = + { + float2( -1.0,-1.0 ), + float2( 1.0,-1.0 ), + float2( 1.0,1.0 ), + float2( -1.0,1.0 ), + float2( -2.0,-2.0 ), + float2( 0.0,-2.0 ), + float2( 2.0,-2.0 ), + float2( -2.0,0.0 ), + float2( 0.0,0.0 ), + float2( 2.0,0.0 ), + float2( -2.0,2.0 ), + float2( 0.0,2.0 ), + float2( 2.0,2.0 ) + }; + + + half4 redSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 yellowSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 greenSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 blueSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 purpleSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 texels[ NUM_SAMPLES ]; + + + half4 sum = half4( 1.0, 1.0, 1.0, 1.0 ); + UNITY_UNROLL + for ( int i = 0; i < NUM_SAMPLES; ++i ) + { + float2 uv = texcoord + ( TexelOffsets[ i ] * oneOverTextureSize ); + texels[ i ].rgb = DecodeColor ( tex2D ( DiffuseMap, UnityStereoScreenSpaceUVAdjust ( uv, _MainTex_ST ) ) ); + } + + redSum = ( texels[ 0 ] + texels[ 1 ] + texels[ 2 ] + texels[ 3 ] ) * 0.25; + yellowSum = ( texels[ 7 ] + texels[ 8 ] + texels[ 10 ] + texels[ 11 ] ) * 0.25; + greenSum = ( texels[ 8 ] + texels[ 9 ] + texels[ 11 ] + texels[ 12 ] ) * 0.25; + blueSum = ( texels[ 5 ] + texels[ 6 ] + texels[ 8 ] + texels[ 9 ] ) * 0.25; + purpleSum = ( texels[ 4 ] + texels[ 5 ] + texels[ 7 ] + texels[ 8 ] ) * 0.25; + sum = ( redSum * 0.5 ) + ( ( yellowSum + greenSum + blueSum + purpleSum ) * 0.125 ); + return EncodeColor ( sum.rgb ); +} + + +inline half4 DownsampleNoWeightedAvg ( float2 texcoord, float2 oneOverTextureSize, sampler2D DiffuseMap ) +{ + const int NUM_SAMPLES = 13; + float2 TexelOffsets[ NUM_SAMPLES ] = + { + float2( -1.0, -1.0 ), + float2( 1.0, -1.0 ), + float2( 1.0, 1.0 ), + float2( -1.0, 1.0 ), + float2( -2.0, -2.0 ), + float2( 0.0, -2.0 ), + float2( 2.0, -2.0 ), + float2( -2.0, 0.0 ), + float2( 0.0, 0.0 ), + float2( 2.0, 0.0 ), + float2( -2.0, 2.0 ), + float2( 0.0, 2.0 ), + float2( 2.0, 2.0 ) + }; + + + half4 redSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 yellowSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 greenSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 blueSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 purpleSum = half4( 1.0, 1.0, 1.0, 1.0 ); + half4 texels[ NUM_SAMPLES ]; + + + half4 sum = half4( 1.0, 1.0, 1.0, 1.0 ); + UNITY_UNROLL + for ( int i = 0; i < NUM_SAMPLES; ++i ) + { + float2 uv = texcoord + ( TexelOffsets[ i ] * oneOverTextureSize ); + texels[ i ].rgb = DecodeColor ( tex2D ( DiffuseMap, UnityStereoScreenSpaceUVAdjust ( uv, _MainTex_ST ) ) ); + } + + redSum = ( texels[ 0 ] + texels[ 1 ] + texels[ 2 ] + texels[ 3 ] ) * 0.25; + yellowSum = ( texels[ 7 ] + texels[ 8 ] + texels[ 10 ] + texels[ 11 ] ) * 0.25; + greenSum = ( texels[ 8 ] + texels[ 9 ] + texels[ 11 ] + texels[ 12 ] ) * 0.25; + blueSum = ( texels[ 5 ] + texels[ 6 ] + texels[ 8 ] + texels[ 9 ] ) * 0.25; + purpleSum = ( texels[ 4 ] + texels[ 5 ] + texels[ 7 ] + texels[ 8 ] ) * 0.25; + + sum = ( redSum * 0.5 ) + ( ( yellowSum + greenSum + blueSum + purpleSum ) * 0.125 ); + + return EncodeColor ( sum.rgb ); +} + + +#endif diff --git a/Assets/AmplifyBloom/Resources/BloomLib.cginc.meta b/Assets/AmplifyBloom/Resources/BloomLib.cginc.meta new file mode 100644 index 0000000..5484125 --- /dev/null +++ b/Assets/AmplifyBloom/Resources/BloomLib.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f782f1bec37d58142b7029703e01e475 +timeCreated: 1447410955 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples.meta b/Assets/AmplifyBloom/Samples.meta new file mode 100644 index 0000000..8d9dd7f --- /dev/null +++ b/Assets/AmplifyBloom/Samples.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 758c62954f07d2c42845029d2cfc2eca +folderAsset: yes +timeCreated: 1447238913 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo.meta b/Assets/AmplifyBloom/Samples/Demo.meta new file mode 100644 index 0000000..e3a2fb6 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 00375e445d1673b46994eeac5abd65f9 +folderAsset: yes +timeCreated: 1453485190 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Demo.unity b/Assets/AmplifyBloom/Samples/Demo/Demo.unity new file mode 100644 index 0000000..bef4561 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Demo.unity @@ -0,0 +1,551 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: .25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + m_Fog: 0 + m_FogColor: {r: .5, g: .5, b: .5, a: 1} + m_FogMode: 3 + m_FogDensity: .00999999978 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: .211999997, g: .226999998, b: .259000003, a: 1} + m_AmbientEquatorColor: {r: .114, g: .125, b: .133000001, a: 1} + m_AmbientGroundColor: {r: .0469999984, g: .0430000015, b: .0350000001, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 2100000, guid: a654bcf02970eab4491147c5e2256af5, type: 2} + m_HaloStrength: .5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_GIWorkflowMode: 0 + m_LightmapsMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 3 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AOMaxDistance: 1 + m_Padding: 2 + m_CompAOExponent: 0 + m_LightmapParameters: {fileID: 0} + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherRayCount: 1024 + m_LightmapSnapshot: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: .5 + agentHeight: 2 + agentSlope: 45 + agentClimb: .400000006 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: .166666672 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!127 &5 +LevelGameManager: + m_ObjectHideFlags: 0 +--- !u!1 &460346662 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 460346664} + - 108: {fileID: 460346663} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &460346663 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 460346662} + m_Enabled: 1 + serializedVersion: 6 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: .270000011 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_Strength: 1 + m_Bias: .0500000007 + m_NormalBias: .400000006 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_AreaSize: {x: 1, y: 1} +--- !u!4 &460346664 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 460346662} + m_LocalRotation: {x: .0437849686, y: .0222284645, z: -.000974444905, w: .998793185} + m_LocalPosition: {x: -.131645009, y: -.329999924, z: .527892172} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1213239283} + m_RootOrder: 0 +--- !u!1 &1213239278 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1213239283} + - 20: {fileID: 1213239282} + - 92: {fileID: 1213239281} + - 124: {fileID: 1213239280} + - 81: {fileID: 1213239279} + - 114: {fileID: 1213239285} + - 114: {fileID: 1213239284} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1213239279 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1213239278} + m_Enabled: 1 +--- !u!124 &1213239280 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1213239278} + m_Enabled: 1 +--- !u!92 &1213239281 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1213239278} + m_Enabled: 1 +--- !u!20 &1213239282 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1213239278} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 1, g: 1, b: 1, a: 1} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 100 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: 3 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_HDR: 1 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 + m_StereoMirrorMode: 0 +--- !u!4 &1213239283 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1213239278} + m_LocalRotation: {x: 0, y: -.031672433, z: 0, w: .999498308} + m_LocalPosition: {x: 0, y: 5, z: 9.60000038} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 460346664} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &1213239284 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1213239278} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b8c208e531a26a41a4629789f4a706a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_maskTexture: {fileID: 0} + m_targetTexture: {fileID: 0} + m_showDebugMessages: 1 + m_softMaxdownscales: 6 + m_debugToScreen: 0 + m_highPrecision: 0 + m_bloomRange: {x: 500, y: .00200000009, z: 0, w: 0} + m_overallThreshold: .529999971 + m_bloomParams: {x: .800000012, y: .529999971, z: 1, w: 1} + m_temporalFilteringActive: 0 + m_temporalFilteringValue: .0500000007 + m_bloomDownsampleCount: 6 + m_temporalFilteringCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: .999000013 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_separateFeaturesThreshold: 0 + m_featuresThreshold: .0500000007 + m_lensFlare: + m_overallIntensity: 1 + m_normalizedGhostIntensity: .800000012 + m_normalizedHaloIntensity: .100000001 + m_applyLensFlare: 1 + m_lensFlareGhostAmount: 3 + m_lensFlareGhostsParams: {x: .800000012, y: .228, z: 1, w: 4} + m_lensFlareGhostChrDistortion: 2 + m_lensGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294901760 + key2: + serializedVersion: 2 + rgba: 4278255360 + key3: + serializedVersion: 2 + rgba: 4278512639 + key4: + serializedVersion: 2 + rgba: 4278190335 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 16384 + ctime2: 32768 + ctime3: 49151 + ctime4: 65535 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 16384 + atime2: 32768 + atime3: 49151 + atime4: 65535 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 5 + m_NumAlphaKeys: 5 + m_lensFlareGradTexture: {fileID: 1618320027} + m_lensFlareHaloParams: {x: .100000001, y: .573000014, z: 1, w: 128} + m_lensFlareHaloChrDistortion: 1.50999999 + m_lensFlareGaussianBlurAmount: 1 + m_applyLensDirt: 1 + m_lensDirtStrength: 2 + m_lensDirtTexture: {fileID: 2800000, guid: 7825356d1f1778140ad12b5dfe6b4d41, type: 3} + m_applyLensStardurst: 1 + m_lensStardurstTex: {fileID: 2800000, guid: c2216a0fed1c98742b826a85db28021c, type: 3} + m_lensStarburstStrength: 2 + m_anamorphicGlare: + m_customGlareDef: [] + m_customGlareDefIdx: 0 + m_customGlareDefAmount: 0 + m_applyGlare: 1 + _overallTint: {r: 1, g: 1, b: 1, a: 1} + m_cromaticAberrationGrad: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294901760 + key2: + serializedVersion: 2 + rgba: 4278255360 + key3: + serializedVersion: 2 + rgba: 4278512639 + key4: + serializedVersion: 2 + rgba: 4278190335 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 16384 + ctime2: 32768 + ctime3: 49151 + ctime4: 65535 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 16384 + atime2: 32768 + atime3: 49151 + atime4: 65535 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 5 + m_NumAlphaKeys: 5 + m_glareMaxPassCount: 4 + m_currentWidth: 539 + m_currentHeight: 366 + m_currentGlareType: 0 + m_currentGlareIdx: 0 + m_perPassDisplacement: 4 + m_intensity: .170000002 + m_overallStreakScale: 1 + m_bokehFilter: + m_isActive: 0 + m_applyOnBloomSource: 0 + m_bokehSampleRadius: .5 + m_bokehCameraProperties: {x: .0500000007, y: .0179999992, z: 1.34000003, w: .180000007} + m_offsetRotation: 0 + m_apertureShape: 1 + m_upscaleWeights: + - .0842000023 + - .128199995 + - .164800003 + - .219699994 + - .219699994 + - .1831 + m_gaussianRadius: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + m_gaussianSteps: 010000000100000001000000010000000100000001000000 + m_lensDirtWeights: + - .0670000017 + - .101999998 + - .131099999 + - .174899995 + - .233199999 + - .300000012 + m_lensStarburstWeights: + - .0670000017 + - .101999998 + - .131099999 + - .174899995 + - .233199999 + - .300000012 + m_downscaleSettingsFoldout: 000000000000 + m_featuresSourceId: 0 + m_upscaleQuality: 0 + m_mainThresholdSize: 0 +--- !u!114 &1213239285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1213239278} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 282a52626d19cf748a6759f335e58ee0, type: 3} + m_Name: + m_EditorClassIdentifier: + moveSpeed: 1 + yawSpeed: 3 + pitchSpeed: 3 +--- !u!1001 &1231976998 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 452210, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452210, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452210, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452210, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452210, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452210, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452210, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 452210, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22469430, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22422930, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22494758, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22406944, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22440432, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22481936, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22470800, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22489816, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 4dea98012db10d74e997f99b3d806cf7, type: 2} + m_IsPrefabParent: 0 +--- !u!28 &1618320027 +Texture2D: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_Width: 256 + m_Height: 1 + m_CompleteImageSize: 1024 + m_TextureFormat: 5 + m_MipMap: 0 + m_IsReadable: 1 + m_ReadAllowed: 1 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapMode: 0 + m_LightmapFormat: 0 + m_ColorSpace: 1 + image data: 1024 + _typelessdata: fffffffffffbfbfffff7f7fffff3f3ffffefefffffebebffffe7e7ffffe3e3ffffdfdfffffdbdbffffd7d7ffffd3d3ffffcfcfffffcbcbffffc7c7ffffc3c3ffffbfbfffffbbbbffffb7b7ffffb3b3ffffafafffffababffffa7a7ffffa3a3ffff9f9fffff9b9bffff9797ffff9393ffff8f8fffff8b8bffff8787ffff8383ffff7f7fffff7b7bffff7777ffff7373ffff6f6fffff6b6bffff6767ffff6363ffff5f5fffff5b5bffff5757ffff5353ffff4f4fffff4b4bffff4747ffff4343ffff3f3fffff3b3bffff3737ffff3333ffff2f2fffff2b2bffff2727ffff2323ffff1f1fffff1b1bffff1717ffff1313ffff0f0fffff0b0bffff0707ffff0303ffff0000feff0004faff0008f6ff000cf2ff0010eeff0014eaff0018e6ff001ce2ff0020deff0024daff0028d6ff002cd2ff0030ceff0034caff0038c6ff003cc2ff0040beff0044baff0048b6ff004cb2ff0050aeff0054aaff0058a6ff005ca2ff00609eff00649aff006896ff006c92ff00708eff00748aff007886ff007c82ff00807eff00847aff008876ff008c72ff00906eff00946aff009866ff009c62ff00a05eff00a45aff00a856ff00ac52ff00b04eff00b44aff00b846ff00bc42ff00c03eff00c43aff00c836ff00cc32ff00d02eff00d42aff00d826ff00dc22ff00e01eff00e41aff00e816ff00ec12ff00f00eff00f40aff00f806ff00fc02ff01fe00ff05fe00ff09fe00ff0dfd00ff11fd00ff15fd00ff19fc00ff1dfc00ff21fc00ff25fc00ff29fb00ff2dfb00ff31fb00ff35fa00ff39fa00ff3dfa00ff41f901ff45f901ff49f901ff4df801ff51f801ff55f801ff59f701ff5df701ff61f701ff65f701ff69f601ff6df601ff71f601ff75f501ff79f501ff7df501ff81f402ff85f402ff89f402ff8df302ff91f302ff95f302ff99f202ff9df202ffa1f202ffa5f202ffa9f102ffadf102ffb1f102ffb5f002ffb9f002ffbdf002ffc1ef03ffc5ef03ffc9ef03ffcdee03ffd1ee03ffd5ee03ffd9ed03ffdded03ffe1ed03ffe5ed03ffe9ec03ffedec03fff1ec03fff5eb03fff9eb03fffdeb03ffffe803ffffe403ffffe003ffffdd03ffffd903ffffd503ffffd203ffffce03ffffca03ffffc703ffffc303ffffbf03ffffbc03ffffb803ffffb403ffffb103ffffad02ffffa902ffffa602ffffa202ffff9e02ffff9b02ffff9702ffff9302ffff9002ffff8c02ffff8802ffff8502ffff8102ffff7d02ffff7a02ffff7602ffff7201ffff6f01ffff6b01ffff6701ffff6401ffff6001ffff5c01ffff5901ffff5501ffff5101ffff4e01ffff4a01ffff4601ffff4301ffff3f01ffff3b01ffff3700ffff3400ffff3000ffff2c00ffff2900ffff2500ffff2100ffff1e00ffff1a00ffff1600ffff1300ffff0f00ffff0b00ffff0800ffff0400ffff0000 diff --git a/Assets/AmplifyBloom/Samples/Demo/Demo.unity.meta b/Assets/AmplifyBloom/Samples/Demo/Demo.unity.meta new file mode 100644 index 0000000..6b2b07d --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Demo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7a79888e414cb434e9c0f3c2145157e3 +timeCreated: 1452012171 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/HDR.meta b/Assets/AmplifyBloom/Samples/Demo/HDR.meta new file mode 100644 index 0000000..f237d3f --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/HDR.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7abff15f538815e49adc1ccdaf63fc67 +folderAsset: yes +timeCreated: 1452011013 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/HDR/NightEnvironment.hdr b/Assets/AmplifyBloom/Samples/Demo/HDR/NightEnvironment.hdr new file mode 100644 index 0000000..e39b488 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Demo/HDR/NightEnvironment.hdr differ diff --git a/Assets/AmplifyBloom/Samples/Demo/HDR/NightEnvironment.hdr.meta b/Assets/AmplifyBloom/Samples/Demo/HDR/NightEnvironment.hdr.meta new file mode 100644 index 0000000..83e04e7 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/HDR/NightEnvironment.hdr.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: e842223bc31d70446bcda34d75264d2d +timeCreated: 1452016407 +licenseType: Store +TextureImporter: + fileIDToRecycleName: + 8900000: generatedCubemap + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 1 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: 3 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Materials.meta b/Assets/AmplifyBloom/Samples/Demo/Materials.meta new file mode 100644 index 0000000..c81e24f --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 97e1fd4ba8f7c8c47b9f570f4855f98c +folderAsset: yes +timeCreated: 1447239564 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Materials/HDRSkyBox.mat b/Assets/AmplifyBloom/Samples/Demo/Materials/HDRSkyBox.mat new file mode 100644 index 0000000..c3778ae --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Materials/HDRSkyBox.mat @@ -0,0 +1,199 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: HDRSkyBox + m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: 1000 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _Tex + second: + m_Texture: {fileID: 8900000, guid: e842223bc31d70446bcda34d75264d2d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _FrontTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BackTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _LeftTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _RightTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _UpTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DownTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Exposure + second: 0.28 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0.5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Rotation + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _Tint + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/AmplifyBloom/Samples/Demo/Materials/HDRSkyBox.mat.meta b/Assets/AmplifyBloom/Samples/Demo/Materials/HDRSkyBox.mat.meta new file mode 100644 index 0000000..5fc1525 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Materials/HDRSkyBox.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a654bcf02970eab4491147c5e2256af5 +timeCreated: 1452011182 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Prefabs.meta b/Assets/AmplifyBloom/Samples/Demo/Prefabs.meta new file mode 100644 index 0000000..fe13631 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f7afc990066e9724c96b7cbd52483120 +folderAsset: yes +timeCreated: 1452012107 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Prefabs/DemoMainUI.prefab b/Assets/AmplifyBloom/Samples/Demo/Prefabs/DemoMainUI.prefab new file mode 100644 index 0000000..70d1b01 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Prefabs/DemoMainUI.prefab @@ -0,0 +1,5070 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &104204 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22447648} + - 114: {fileID: 11416188} + - 114: {fileID: 11438918} + m_Layer: 0 + m_Name: LensFlare + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &107060 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22494338} + - 222: {fileID: 22206888} + - 114: {fileID: 11471558} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &107460 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22433552} + - 114: {fileID: 11482636} + - 114: {fileID: 11444934} + m_Layer: 0 + m_Name: IntensitySlider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &108234 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22453234} + - 222: {fileID: 22207426} + - 114: {fileID: 11476072} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109092 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22463638} + - 222: {fileID: 22214058} + - 114: {fileID: 11422974} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &110078 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22470678} + - 222: {fileID: 22278420} + - 114: {fileID: 11472888} + m_Layer: 0 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &110704 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22471186} + - 222: {fileID: 22213506} + - 114: {fileID: 11449472} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &112902 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22498550} + - 222: {fileID: 22230646} + - 114: {fileID: 11442498} + - 114: {fileID: 11471276} + m_Layer: 0 + m_Name: FrameRate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &113040 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 452210} + - 114: {fileID: 11495206} + m_Layer: 0 + m_Name: DemoMainUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &113596 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22494368} + - 222: {fileID: 22277736} + - 114: {fileID: 11476056} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &113604 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22494758} + - 222: {fileID: 22235358} + - 114: {fileID: 11412040} + m_Layer: 0 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &114892 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22403056} + - 222: {fileID: 22231910} + - 114: {fileID: 11444450} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &115590 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22435940} + - 222: {fileID: 22220508} + - 114: {fileID: 11484650} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &117130 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22428422} + - 114: {fileID: 11495378} + - 114: {fileID: 11417952} + m_Layer: 0 + m_Name: LensGlare + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &120598 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22469430} + - 222: {fileID: 22271602} + - 114: {fileID: 11484110} + m_Layer: 0 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &121032 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22422930} + - 222: {fileID: 22245582} + - 114: {fileID: 11428246} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &121506 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22418672} + - 222: {fileID: 22286408} + - 114: {fileID: 11442518} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &121680 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22492556} + - 222: {fileID: 22239712} + - 114: {fileID: 11490278} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &125714 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22454924} + - 222: {fileID: 22242272} + - 114: {fileID: 11448312} + m_Layer: 0 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &127162 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22453894} + m_Layer: 0 + m_Name: Group + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &127622 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22431222} + - 222: {fileID: 22264176} + - 114: {fileID: 11444002} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &127920 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22443916} + - 222: {fileID: 22283148} + - 114: {fileID: 11483982} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &128312 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22468662} + - 222: {fileID: 22299246} + - 114: {fileID: 11403416} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &131568 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22489966} + m_Layer: 0 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &132954 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22471686} + - 222: {fileID: 22265556} + - 114: {fileID: 11453202} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133612 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22483886} + - 114: {fileID: 11489076} + - 114: {fileID: 11476010} + m_Layer: 0 + m_Name: LensStarburst + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &135178 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22440432} + - 222: {fileID: 22285180} + - 114: {fileID: 11418360} + m_Layer: 0 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &135328 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22421150} + - 222: {fileID: 22216218} + - 114: {fileID: 11429580} + - 114: {fileID: 11440362} + m_Layer: 0 + m_Name: QuitButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &135588 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22489912} + - 222: {fileID: 22230214} + - 114: {fileID: 11456698} + m_Layer: 0 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &138296 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22408386} + - 222: {fileID: 22215856} + - 114: {fileID: 11495536} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &140802 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22434076} + - 222: {fileID: 22245958} + - 114: {fileID: 11455346} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &143546 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22458956} + - 222: {fileID: 22293406} + - 114: {fileID: 11430170} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &143716 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22475214} + - 114: {fileID: 11480498} + - 114: {fileID: 11433510} + m_Layer: 0 + m_Name: LensDirt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &144974 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22432526} + m_Layer: 0 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &145580 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22470800} + - 222: {fileID: 22242116} + - 114: {fileID: 11457186} + m_Layer: 0 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &145818 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22466744} + - 114: {fileID: 11432554} + - 114: {fileID: 11401172} + m_Layer: 0 + m_Name: TemporalFilter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &146716 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22474262} + - 222: {fileID: 22299734} + - 114: {fileID: 11464226} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &147796 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22472964} + - 222: {fileID: 22252080} + - 114: {fileID: 11406842} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148120 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22438670} + - 114: {fileID: 11452132} + - 114: {fileID: 11466226} + m_Layer: 0 + m_Name: BokehFilter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148234 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22494940} + - 114: {fileID: 11434340} + - 114: {fileID: 11403280} + m_Layer: 0 + m_Name: UpscaleType + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148892 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22460812} + - 222: {fileID: 22223134} + - 114: {fileID: 11425222} + m_Layer: 0 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152806 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22491034} + - 222: {fileID: 22243548} + - 114: {fileID: 11406804} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &153198 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22457688} + - 114: {fileID: 11402114} + - 114: {fileID: 11481870} + m_Layer: 0 + m_Name: DownscaleSlider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &153346 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22420536} + - 114: {fileID: 11487844} + - 114: {fileID: 11404060} + m_Layer: 0 + m_Name: Bloom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &157886 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22466966} + - 222: {fileID: 22210456} + - 114: {fileID: 11406110} + m_Layer: 0 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &158444 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22438076} + - 114: {fileID: 11410792} + - 114: {fileID: 11469416} + m_Layer: 0 + m_Name: ThresholdSourceSlider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &159700 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22493708} + - 222: {fileID: 22218458} + - 114: {fileID: 11489496} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &162284 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22484654} + - 223: {fileID: 22316490} + - 114: {fileID: 11444004} + - 114: {fileID: 11491092} + m_Layer: 0 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &162536 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22454694} + m_Layer: 0 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &165400 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22450872} + - 222: {fileID: 22298102} + - 114: {fileID: 11411228} + m_Layer: 0 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &167344 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22484150} + - 222: {fileID: 22209006} + - 114: {fileID: 11484504} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &169560 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22442476} + - 114: {fileID: 11413362} + - 114: {fileID: 11423536} + m_Layer: 0 + m_Name: ThresholdSlider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &174450 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22479394} + - 222: {fileID: 22243312} + - 114: {fileID: 11483444} + m_Layer: 0 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &174918 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22406944} + - 222: {fileID: 22295224} + - 114: {fileID: 11444568} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &180434 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22489816} + - 222: {fileID: 22200686} + - 114: {fileID: 11415122} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &181094 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22405748} + - 222: {fileID: 22204548} + - 114: {fileID: 11401620} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182040 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22479508} + - 222: {fileID: 22209852} + - 114: {fileID: 11416606} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182186 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22470414} + - 222: {fileID: 22221446} + - 114: {fileID: 11496236} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &183072 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22405104} + m_Layer: 0 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &183424 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400434} + m_Layer: 0 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &184328 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400242} + m_Layer: 0 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185748 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 410836} + - 114: {fileID: 11459822} + - 114: {fileID: 11457290} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &186984 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22402038} + - 222: {fileID: 22249820} + - 114: {fileID: 11406282} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &187710 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22480368} + m_Layer: 0 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &188166 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22431126} + - 222: {fileID: 22252252} + - 114: {fileID: 11416042} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &192228 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22437956} + - 114: {fileID: 11431454} + - 114: {fileID: 11418648} + m_Layer: 0 + m_Name: HighPrecision + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &193642 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22481882} + - 222: {fileID: 22278470} + - 114: {fileID: 11436298} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &194422 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22481936} + - 222: {fileID: 22279240} + - 114: {fileID: 11429642} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &196800 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22412548} + m_Layer: 0 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &196902 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22442698} + - 222: {fileID: 22283948} + - 114: {fileID: 11425358} + m_Layer: 0 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &198926 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22436644} + - 222: {fileID: 22205016} + - 114: {fileID: 11450790} + m_Layer: 0 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &410836 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185748} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 452210} + m_RootOrder: 1 +--- !u!4 &452210 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113040} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22484654} + - {fileID: 410836} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &11401172 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92428448a5b483b40a4c3b0b505fffe8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11401620 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181094} + 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: 0.31617647, g: 0.31617647, b: 0.31617647, 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!114 &11402114 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, 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: 11444568} + m_FillRect: {fileID: 22494758} + m_HandleRect: {fileID: 22406944} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 6 + m_WholeNumbers: 1 + 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 &11403280 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148234} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92428448a5b483b40a4c3b0b505fffe8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11403416 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128312} + 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: 0.31764707, g: 0.31764707, b: 0.31764707, 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 &11404060 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153346} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92428448a5b483b40a4c3b0b505fffe8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11406110 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157886} + 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: 0.625, g: 0.625, b: 0.625, 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 &11406282 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.625, g: 0.625, b: 0.625, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Bokeh Filter +--- !u!114 &11406804 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152806} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.625, g: 0.625, b: 0.625, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: High Precision +--- !u!114 &11406842 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.625, g: 0.625, b: 0.625, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Lens Starburst +--- !u!114 &11410792 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, 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: 11415122} + m_FillRect: {fileID: 22470800} + m_HandleRect: {fileID: 22489816} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 2 + m_WholeNumbers: 1 + 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 &11411228 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165400} + 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: 0.625, g: 0.625, b: 0.625, 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 &11412040 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113604} + 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: 0.62352943, g: 0.62352943, b: 0.62352943, 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!114 &11413362 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, 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: 11428246} + m_FillRect: {fileID: 22469430} + m_HandleRect: {fileID: 22422930} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 3 + 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 &11415122 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180434} + 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: 0.62352943, g: 0.62352943, b: 0.62352943, 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 &11416042 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188166} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.62352943, g: 0.62352943, b: 0.62352943, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Downscale Amount +--- !u!114 &11416188 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, 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: 11484650} + toggleTransition: 1 + graphic: {fileID: 11483444} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11416606 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182040} + 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: 0.31617647, g: 0.31617647, b: 0.31617647, 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!114 &11417952 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117130} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92428448a5b483b40a4c3b0b505fffe8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11418360 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135178} + 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: 0.62352943, g: 0.62352943, b: 0.62352943, 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!114 &11418648 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92428448a5b483b40a4c3b0b505fffe8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11422974 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109092} + 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: 0.31617647, g: 0.31617647, b: 0.31617647, 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!114 &11423536 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2b6843cc0fe106f468c72d877a73ab53, type: 3} + m_Name: + m_EditorClassIdentifier: + SingleStep: 0 +--- !u!114 &11425222 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148892} + 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: 0.625, g: 0.625, b: 0.625, 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 &11425358 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196902} + 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: 0.625, g: 0.625, b: 0.625, 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 &11428246 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121032} + 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: 0.62352943, g: 0.62352943, b: 0.62352943, 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 &11429580 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135328} + 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: 0.31764707, g: 0.31764707, b: 0.31764707, 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!114 &11429642 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194422} + 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: 0.62352943, g: 0.62352943, b: 0.62352943, 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 &11430170 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143546} + 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: 0.31764707, g: 0.31764707, b: 0.31764707, 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 &11431454 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, 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: 11401620} + toggleTransition: 1 + graphic: {fileID: 11425222} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11432554 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, 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: 11464226} + toggleTransition: 1 + graphic: {fileID: 11425358} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11433510 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143716} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92428448a5b483b40a4c3b0b505fffe8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11434340 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148234} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, 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: 11422974} + toggleTransition: 1 + graphic: {fileID: 11472888} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11436298 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 193642} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.62352943, g: 0.62352943, b: 0.62352943, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: ' Threshold Value' +--- !u!114 &11438918 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92428448a5b483b40a4c3b0b505fffe8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11440362 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135328} + 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: 11429580} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11495206} + m_MethodName: OnQuitButton + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11442498 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112902} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.625, g: 0.625, b: 0.625, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: FPS +--- !u!114 &11442518 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121506} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.625, g: 0.625, b: 0.625, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Lens Glare +--- !u!114 &11444002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127622} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.625, g: 0.625, b: 0.625, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Lens Dirt +--- !u!114 &11444004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &11444450 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114892} + 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: 0.31617647, g: 0.31617647, b: 0.31617647, 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!114 &11444568 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174918} + 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: 0.62352943, g: 0.62352943, b: 0.62352943, 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 &11444934 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2b6843cc0fe106f468c72d877a73ab53, type: 3} + m_Name: + m_EditorClassIdentifier: + SingleStep: 0 +--- !u!114 &11448312 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125714} + 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: 0.625, g: 0.625, b: 0.625, 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 &11449472 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110704} + 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: 0.31617647, g: 0.31617647, b: 0.31617647, 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!114 &11450790 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198926} + 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: 0.625, g: 0.625, b: 0.625, 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 &11452132 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, 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: 11449472} + toggleTransition: 1 + graphic: {fileID: 11411228} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11453202 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132954} + 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: 0.31617647, g: 0.31617647, b: 0.31617647, 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!114 &11455346 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140802} + 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: 0.31764707, g: 0.31764707, b: 0.31764707, 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 &11456698 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135588} + 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: 0.625, g: 0.625, b: 0.625, 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 &11457186 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145580} + 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: 0.62352943, g: 0.62352943, b: 0.62352943, 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!114 &11457290 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &11459822 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!114 &11464226 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 146716} + 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: 0.31617647, g: 0.31617647, b: 0.31617647, 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!114 &11466226 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92428448a5b483b40a4c3b0b505fffe8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11469416 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2b6843cc0fe106f468c72d877a73ab53, type: 3} + m_Name: + m_EditorClassIdentifier: + SingleStep: 1 +--- !u!114 &11471276 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112902} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f572620d698e1c449ab110744a2208d, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateInterval: 0.5 +--- !u!114 &11471558 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107060} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.62352943, g: 0.62352943, b: 0.62352943, 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: 15 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: X +--- !u!114 &11472888 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110078} + 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: 0.625, g: 0.625, b: 0.625, 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 &11476010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92428448a5b483b40a4c3b0b505fffe8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11476056 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113596} + 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: 0.31617647, g: 0.31617647, b: 0.31617647, 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!114 &11476072 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108234} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.625, g: 0.625, b: 0.625, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Bloom +--- !u!114 &11480498 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143716} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, 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: 11453202} + toggleTransition: 1 + graphic: {fileID: 11448312} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11481870 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2b6843cc0fe106f468c72d877a73ab53, type: 3} + m_Name: + m_EditorClassIdentifier: + SingleStep: 1 +--- !u!114 &11482636 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, 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: 11429642} + m_FillRect: {fileID: 22440432} + m_HandleRect: {fileID: 22481936} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 10 + 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 &11483444 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174450} + 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: 0.625, g: 0.625, b: 0.625, 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 &11483982 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.625, g: 0.625, b: 0.625, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Realistic Technique +--- !u!114 &11484110 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120598} + 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: 0.62352943, g: 0.62352943, b: 0.62352943, 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!114 &11484504 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167344} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.625, g: 0.625, b: 0.625, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Temporal Filter +--- !u!114 &11484650 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115590} + 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: 0.31617647, g: 0.31617647, b: 0.31617647, 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!114 &11487844 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153346} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, 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: 11444450} + toggleTransition: 1 + graphic: {fileID: 11406110} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11489076 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, 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: 11416606} + toggleTransition: 1 + graphic: {fileID: 11456698} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11489496 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159700} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.625, g: 0.625, b: 0.625, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Lens Flare +--- !u!114 &11490278 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121680} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.62352943, g: 0.62352943, b: 0.62352943, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Bloom Intensity +--- !u!114 &11491092 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11495206 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fe004816b94e2d4fb88359d1b543905, type: 3} + m_Name: + m_EditorClassIdentifier: + BloomToggle: {fileID: 11487844} + HighPrecision: {fileID: 11431454} + UpscaleType: {fileID: 11434340} + TemporalFilter: {fileID: 11432554} + BokehToggle: {fileID: 11452132} + LensFlareToggle: {fileID: 11416188} + LensGlareToggle: {fileID: 11495378} + LensDirtToggle: {fileID: 11480498} + LensStarburstToggle: {fileID: 11489076} + ThresholdSlider: {fileID: 11413362} + DownscaleAmountSlider: {fileID: 11402114} + IntensitySlider: {fileID: 11482636} + ThresholdSizeSlider: {fileID: 11410792} +--- !u!114 &11495378 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117130} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, 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: 11476056} + toggleTransition: 1 + graphic: {fileID: 11450790} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &11495536 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138296} + 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: 0.31764707, g: 0.31764707, b: 0.31764707, 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 &11496236 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.62352943, g: 0.62352943, b: 0.62352943, 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: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Source Downscale +--- !u!222 &22200686 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180434} +--- !u!222 &22204548 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181094} +--- !u!222 &22205016 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198926} +--- !u!222 &22206888 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107060} +--- !u!222 &22207426 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108234} +--- !u!222 &22209006 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167344} +--- !u!222 &22209852 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182040} +--- !u!222 &22210456 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157886} +--- !u!222 &22213506 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110704} +--- !u!222 &22214058 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109092} +--- !u!222 &22215856 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138296} +--- !u!222 &22216218 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135328} +--- !u!222 &22218458 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159700} +--- !u!222 &22220508 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115590} +--- !u!222 &22221446 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182186} +--- !u!222 &22223134 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148892} +--- !u!222 &22230214 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135588} +--- !u!222 &22230646 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112902} +--- !u!222 &22231910 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114892} +--- !u!222 &22235358 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113604} +--- !u!222 &22239712 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121680} +--- !u!222 &22242116 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145580} +--- !u!222 &22242272 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125714} +--- !u!222 &22243312 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174450} +--- !u!222 &22243548 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152806} +--- !u!222 &22245582 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121032} +--- !u!222 &22245958 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140802} +--- !u!222 &22249820 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186984} +--- !u!222 &22252080 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147796} +--- !u!222 &22252252 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188166} +--- !u!222 &22264176 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127622} +--- !u!222 &22265556 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132954} +--- !u!222 &22271602 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120598} +--- !u!222 &22277736 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113596} +--- !u!222 &22278420 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110078} +--- !u!222 &22278470 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 193642} +--- !u!222 &22279240 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194422} +--- !u!222 &22283148 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127920} +--- !u!222 &22283948 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196902} +--- !u!222 &22285180 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135178} +--- !u!222 &22286408 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121506} +--- !u!222 &22293406 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143546} +--- !u!222 &22295224 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174918} +--- !u!222 &22298102 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165400} +--- !u!222 &22299246 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128312} +--- !u!222 &22299734 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 146716} +--- !u!223 &22316490 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162284} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &22400242 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184328} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22489816} + m_Father: {fileID: 22438076} + m_RootOrder: 2 + 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 &22400434 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183424} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22422930} + m_Father: {fileID: 22442476} + m_RootOrder: 2 + 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 &22402038 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 186984} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22438670} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22403056 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114892} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22466966} + m_Father: {fileID: 22420536} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22405104 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183072} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22494758} + m_Father: {fileID: 22457688} + m_RootOrder: 1 + 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 &22405748 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181094} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22460812} + m_Father: {fileID: 22437956} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22406944 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174918} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22480368} + m_RootOrder: 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 &22408386 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 138296} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22457688} + m_RootOrder: 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 &22412548 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196800} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22440432} + m_Father: {fileID: 22433552} + m_RootOrder: 1 + 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 &22418672 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121506} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22428422} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22420536 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153346} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22403056} + - {fileID: 22453234} + m_Father: {fileID: 22453894} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 160, y: 21} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22421150 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135328} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22494338} + m_Father: {fileID: 22484654} + m_RootOrder: 1 + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 1, y: 1} +--- !u!224 &22422930 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121032} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22400434} + m_RootOrder: 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 &22428422 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 117130} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22494368} + - {fileID: 22418672} + m_Father: {fileID: 22453894} + m_RootOrder: 6 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -150} + m_SizeDelta: {x: 160, y: 21} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22431126 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 188166} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22457688} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 9.1} + m_SizeDelta: {x: 0, y: 18.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22431222 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127622} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22475214} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22432526 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 144974} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22469430} + m_Father: {fileID: 22442476} + m_RootOrder: 1 + 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 &22433552 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107460} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22458956} + - {fileID: 22412548} + - {fileID: 22454694} + - {fileID: 22492556} + m_Father: {fileID: 22453894} + m_RootOrder: 12 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -400} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22434076 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140802} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22442476} + m_RootOrder: 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 &22435940 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115590} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22479394} + m_Father: {fileID: 22447648} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22436644 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198926} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22494368} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22437956 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192228} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22405748} + - {fileID: 22491034} + m_Father: {fileID: 22453894} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -25} + m_SizeDelta: {x: 160, y: 21} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22438076 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158444} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22468662} + - {fileID: 22489966} + - {fileID: 22400242} + - {fileID: 22470414} + m_Father: {fileID: 22453894} + m_RootOrder: 9 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: -0.000012397766, y: -250} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22438670 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148120} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22471186} + - {fileID: 22402038} + m_Father: {fileID: 22453894} + m_RootOrder: 4 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -100} + m_SizeDelta: {x: 160, y: 21} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22440432 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135178} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22412548} + m_RootOrder: 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 &22442476 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 169560} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22434076} + - {fileID: 22432526} + - {fileID: 22400434} + - {fileID: 22481882} + m_Father: {fileID: 22453894} + m_RootOrder: 10 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -300} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22442698 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 196902} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22474262} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22443916 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127920} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22494940} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9.000003, y: -0.5} + m_SizeDelta: {x: -28.000006, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22447648 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104204} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22435940} + - {fileID: 22493708} + m_Father: {fileID: 22453894} + m_RootOrder: 5 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -125} + m_SizeDelta: {x: 160, y: 21} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22450872 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165400} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22471186} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22453234 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 108234} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22420536} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22453894 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 127162} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22420536} + - {fileID: 22437956} + - {fileID: 22494940} + - {fileID: 22466744} + - {fileID: 22438670} + - {fileID: 22447648} + - {fileID: 22428422} + - {fileID: 22475214} + - {fileID: 22483886} + - {fileID: 22438076} + - {fileID: 22442476} + - {fileID: 22457688} + - {fileID: 22433552} + m_Father: {fileID: 22484654} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -40} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22454694 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162536} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22481936} + m_Father: {fileID: 22433552} + m_RootOrder: 2 + 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 &22454924 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 125714} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22471686} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22457688 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153198} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22408386} + - {fileID: 22405104} + - {fileID: 22480368} + - {fileID: 22431126} + m_Father: {fileID: 22453894} + m_RootOrder: 11 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -350} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22458956 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143546} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22433552} + m_RootOrder: 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 &22460812 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148892} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22405748} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22463638 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109092} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22470678} + m_Father: {fileID: 22494940} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22466744 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145818} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22474262} + - {fileID: 22484150} + m_Father: {fileID: 22453894} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -75} + m_SizeDelta: {x: 160, y: 21} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22466966 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157886} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22403056} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22468662 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128312} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22438076} + m_RootOrder: 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 &22469430 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120598} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22432526} + m_RootOrder: 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 &22470414 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182186} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22438076} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 9.1} + m_SizeDelta: {x: 0, y: 18.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22470678 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110078} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22463638} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22470800 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145580} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22489966} + m_RootOrder: 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 &22471186 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110704} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22450872} + m_Father: {fileID: 22438670} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22471686 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132954} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22454924} + m_Father: {fileID: 22475214} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22472964 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147796} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22483886} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22474262 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 146716} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22442698} + m_Father: {fileID: 22466744} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22475214 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143716} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22471686} + - {fileID: 22431222} + m_Father: {fileID: 22453894} + m_RootOrder: 7 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -175} + m_SizeDelta: {x: 160, y: 21} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22479394 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174450} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22435940} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22479508 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182040} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22489912} + m_Father: {fileID: 22483886} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22480368 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187710} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22406944} + m_Father: {fileID: 22457688} + m_RootOrder: 2 + 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 &22481882 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 193642} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22442476} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 9.1} + m_SizeDelta: {x: 0, y: 18.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22481936 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 194422} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22454694} + m_RootOrder: 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 &22483886 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133612} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22479508} + - {fileID: 22472964} + m_Father: {fileID: 22453894} + m_RootOrder: 8 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -200} + m_SizeDelta: {x: 160, y: 21} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22484150 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167344} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22466744} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9.000003, y: -0.5} + m_SizeDelta: {x: -28.000006, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22484654 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162284} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22453894} + - {fileID: 22421150} + - {fileID: 22498550} + m_Father: {fileID: 452210} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22489816 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180434} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22400242} + m_RootOrder: 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 &22489912 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135588} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22479508} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22489966 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 131568} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22470800} + m_Father: {fileID: 22438076} + m_RootOrder: 1 + 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 &22491034 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152806} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22437956} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22492556 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121680} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22433552} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 9.1} + m_SizeDelta: {x: 0, y: 18.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22493708 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159700} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22447648} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22494338 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 107060} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22421150} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22494368 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113596} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22436644} + m_Father: {fileID: 22428422} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22494758 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113604} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22405104} + m_RootOrder: 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 &22494940 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148234} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22463638} + - {fileID: 22443916} + m_Father: {fileID: 22453894} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -50} + m_SizeDelta: {x: 160, y: 21} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22498550 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112902} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22484654} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -15} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0, y: 1} +--- !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: 113040} + m_IsPrefabParent: 1 diff --git a/Assets/AmplifyBloom/Samples/Demo/Prefabs/DemoMainUI.prefab.meta b/Assets/AmplifyBloom/Samples/Demo/Prefabs/DemoMainUI.prefab.meta new file mode 100644 index 0000000..295881a --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Prefabs/DemoMainUI.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4dea98012db10d74e997f99b3d806cf7 +timeCreated: 1452012112 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts.meta b/Assets/AmplifyBloom/Samples/Demo/Scripts.meta new file mode 100644 index 0000000..de14668 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f6375a116bab6b1448aebae387de06f7 +folderAsset: yes +timeCreated: 1447754018 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoCameraMovement.cs b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoCameraMovement.cs new file mode 100644 index 0000000..6c1e0eb --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoCameraMovement.cs @@ -0,0 +1,120 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +using UnityEngine.EventSystems; + +namespace AmplifyBloom +{ + public class DemoCameraMovement : MonoBehaviour + { + + private const string X_AXIS_KEYBOARD = "Mouse X"; + private const string Y_AXIS_KEYBOARD = "Mouse Y"; + + private const string X_AXIS_GAMEPAD = "Horizontal"; + private const string Y_AXIS_GAMEPAD = "Vertical"; + + private bool m_gamePadMode = false; + + public float moveSpeed = 1f; + public float yawSpeed = 3; + public float pitchSpeed = 3; + + private float _yaw = 0; + private float _pitch = 0; + + private Transform _transform; + + void Start() + { + _transform = transform; + + _pitch = _transform.localEulerAngles.x; + _yaw = _transform.localEulerAngles.y; + +#if UNITY_IOS || UNITY_ANDROID + m_gamePadMode = false; +#else + if ( Input.GetJoystickNames().Length > 0 ) + { + m_gamePadMode = true; + } +#endif + + } + + void Update() + { +#if UNITY_IOS || UNITY_ANDROID + + if ( !EventSystem.current.IsPointerOverGameObject() ) + { + if ( Input.touchCount > 0 ) + { + Vector2 deltaPos = Input.GetTouch( 0 ).deltaPosition; + ChangeYaw( deltaPos.x * yawSpeed ); + ChangePitch( -deltaPos.y * pitchSpeed ); + } + } + +#else + if ( m_gamePadMode ) + { + ChangeYaw( Input.GetAxisRaw( X_AXIS_GAMEPAD ) * yawSpeed ); + ChangePitch( -Input.GetAxisRaw( Y_AXIS_GAMEPAD ) * pitchSpeed ); + } + else + { + if ( Input.GetMouseButton( 0 ) && !EventSystem.current.IsPointerOverGameObject() ) + { + ChangeYaw( Input.GetAxisRaw( X_AXIS_KEYBOARD ) * yawSpeed ); + ChangePitch( -Input.GetAxisRaw( Y_AXIS_KEYBOARD ) * pitchSpeed ); + } + } +#endif + } + + void MoveForwards( float delta ) + { + _transform.position += delta * _transform.forward; + } + + void Strafe( float delta ) + { + transform.position += delta * _transform.right; + } + + void ChangeYaw( float delta ) + { + _yaw += delta; + WrapAngle( ref _yaw ); + _transform.localEulerAngles = new Vector3( _pitch, _yaw, 0 ); + } + + void ChangePitch( float delta ) + { + _pitch += delta; + WrapAngle( ref _pitch ); + _transform.localEulerAngles = new Vector3( _pitch, _yaw, 0 ); + } + + public void WrapAngle( ref float angle ) + { + if ( angle < 0 ) + angle = 360 + angle; + + if ( angle > 360 ) + angle = angle - 360; + } + + public bool GamePadMode + { + get + { + return m_gamePadMode; + } + } + + } +} diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoCameraMovement.cs.meta b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoCameraMovement.cs.meta new file mode 100644 index 0000000..4aa87c3 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoCameraMovement.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 282a52626d19cf748a6759f335e58ee0 +timeCreated: 1448905484 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoFPSCounter.cs b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoFPSCounter.cs new file mode 100644 index 0000000..4616c55 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoFPSCounter.cs @@ -0,0 +1,50 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +using UnityEngine.UI; +namespace AmplifyBloom +{ + public class DemoFPSCounter : MonoBehaviour + { + public float UpdateInterval = 0.5F; + private Text m_fpsText; + + private float m_accum = 0; // FPS accumulated over the interval + private int m_frames = 0; // Frames drawn over the interval + private float m_timeleft; // Left time for current interval + private float m_fps; + private string m_format; + + void Start() + { + m_fpsText = GetComponent(); + m_timeleft = UpdateInterval; + } + + void Update() + { + m_timeleft -= Time.deltaTime; + m_accum += Time.timeScale / Time.deltaTime; + ++m_frames; + if ( m_timeleft <= 0.0 ) + { + m_fps = m_accum / m_frames; + m_format = System.String.Format( "{0:F2} FPS", m_fps ); + m_fpsText.text = m_format; + + if ( m_fps < 50 ) + m_fpsText.color = Color.yellow; + else + if ( m_fps < 30 ) + m_fpsText.color = Color.red; + else + m_fpsText.color = Color.green; + + m_timeleft = UpdateInterval; + m_accum = 0.0F; + m_frames = 0; + } + } + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoFPSCounter.cs.meta b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoFPSCounter.cs.meta new file mode 100644 index 0000000..dd56710 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoFPSCounter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5f572620d698e1c449ab110744a2208d +timeCreated: 1452778446 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoMainUI.cs b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoMainUI.cs new file mode 100644 index 0000000..dfe5068 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoMainUI.cs @@ -0,0 +1,277 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +using UnityEngine.UI; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace AmplifyBloom +{ + public class DemoMainUI : MonoBehaviour + { + private const string VERTICAL_GAMEPAD = "Vertical"; + private const string HORIZONTAL_GAMEPAD = "Horizontal"; + private const string SUBMIT_BUTTON = "Submit"; + + public Toggle BloomToggle; + public Toggle HighPrecision; + public Toggle UpscaleType; + public Toggle TemporalFilter; + public Toggle BokehToggle; + public Toggle LensFlareToggle; + public Toggle LensGlareToggle; + public Toggle LensDirtToggle; + public Toggle LensStarburstToggle; + public Slider ThresholdSlider; + public Slider DownscaleAmountSlider; + public Slider IntensitySlider; + public Slider ThresholdSizeSlider; + private AmplifyBloomEffect _amplifyBloomEffect; + private Camera _camera; + + private DemoUIElement[] m_uiElements; + + private bool m_gamePadMode = false; + + private int m_currentOption = 0; + private int m_lastOption = 0; + + private int m_lastAxisValue = 0; + + void Awake() + { + _camera = Camera.main; +#if UNITY_EDITOR + if ( PlayerSettings.colorSpace == ColorSpace.Gamma ) + { + Debug.LogWarning("Detected Gamma Color Space. For better visual results please switch to Linear Color Space by going to Player Settings > Other Settings > Rendering Path > Color Space > Linear."); + } + + if ( !_camera.hdr ) + { + Debug.LogWarning( "Detected LDR on camera. For better visual results please switch to HDR by hitting the HDR toggle on the Camera component." ); + } +#endif + _amplifyBloomEffect = _camera.GetComponent(); + + BloomToggle.isOn = _amplifyBloomEffect.enabled; + HighPrecision.isOn = _amplifyBloomEffect.HighPrecision; + UpscaleType.isOn = (_amplifyBloomEffect.UpscaleQuality == UpscaleQualityEnum.Realistic); + TemporalFilter.isOn = _amplifyBloomEffect.TemporalFilteringActive; + BokehToggle.isOn = _amplifyBloomEffect.BokehFilterInstance.ApplyBokeh; + LensFlareToggle.isOn = _amplifyBloomEffect.LensFlareInstance.ApplyLensFlare; + LensGlareToggle.isOn = _amplifyBloomEffect.LensGlareInstance.ApplyLensGlare; + LensDirtToggle.isOn = _amplifyBloomEffect.ApplyLensDirt; + LensStarburstToggle.isOn = _amplifyBloomEffect.ApplyLensStardurst; + + BloomToggle.onValueChanged.AddListener( OnBloomToggle ); + HighPrecision.onValueChanged.AddListener( OnHighPrecisionToggle ); + UpscaleType.onValueChanged.AddListener( OnUpscaleTypeToogle ); + TemporalFilter.onValueChanged.AddListener( OnTemporalFilterToggle ); + BokehToggle.onValueChanged.AddListener( OnBokehFilterToggle ); + LensFlareToggle.onValueChanged.AddListener( OnLensFlareToggle ); + LensGlareToggle.onValueChanged.AddListener( OnLensGlareToggle ); + LensDirtToggle.onValueChanged.AddListener( OnLensDirtToggle ); + LensStarburstToggle.onValueChanged.AddListener( OnLensStarburstToggle ); + + ThresholdSlider.value = _amplifyBloomEffect.OverallThreshold; + ThresholdSlider.onValueChanged.AddListener( OnThresholdSlider ); + + DownscaleAmountSlider.value = _amplifyBloomEffect.BloomDownsampleCount; + DownscaleAmountSlider.onValueChanged.AddListener( OnDownscaleAmount ); + + IntensitySlider.value = _amplifyBloomEffect.OverallIntensity; + IntensitySlider.onValueChanged.AddListener( OnIntensitySlider ); + + ThresholdSizeSlider.value = ( float ) _amplifyBloomEffect.MainThresholdSize; + ThresholdSizeSlider.onValueChanged.AddListener( OnThresholdSize ); + + if ( Input.GetJoystickNames().Length > 0 ) + { + m_gamePadMode = true; + m_uiElements = new DemoUIElement[ 13 ]; + m_uiElements[ 0 ] = BloomToggle.GetComponent(); + m_uiElements[ 1 ] = HighPrecision.GetComponent(); + m_uiElements[ 2 ] = UpscaleType.GetComponent(); + m_uiElements[ 3 ] = TemporalFilter.GetComponent(); + m_uiElements[ 4 ] = BokehToggle.GetComponent(); + m_uiElements[ 5 ] = LensFlareToggle.GetComponent(); + m_uiElements[ 6 ] = LensGlareToggle.GetComponent(); + m_uiElements[ 7 ] = LensDirtToggle.GetComponent(); + m_uiElements[ 8 ] = LensStarburstToggle.GetComponent(); + m_uiElements[ 9 ] = ThresholdSlider.GetComponent(); + m_uiElements[ 10 ] = DownscaleAmountSlider.GetComponent(); + m_uiElements[ 11 ] = IntensitySlider.GetComponent(); + m_uiElements[ 12 ] = ThresholdSizeSlider.GetComponent(); + + for ( int i = 0; i < m_uiElements.Length; i++ ) + { + m_uiElements[ i ].Init(); + } + + m_uiElements[ m_currentOption ].Select = true; + } + + } + + public void OnThresholdSize( float selection ) + { + _amplifyBloomEffect.MainThresholdSize = ( MainThresholdSizeEnum ) selection; + } + + public void OnThresholdSlider( float value ) + { + _amplifyBloomEffect.OverallThreshold = value; + } + + public void OnDownscaleAmount( float value ) + { + _amplifyBloomEffect.BloomDownsampleCount = ( int ) value; + } + + public void OnIntensitySlider( float value ) + { + _amplifyBloomEffect.OverallIntensity = value; + } + + public void OnBloomToggle( bool value ) + { + _amplifyBloomEffect.enabled = BloomToggle.isOn; + } + + public void OnHighPrecisionToggle( bool value ) + { + _amplifyBloomEffect.HighPrecision = value; + } + + public void OnUpscaleTypeToogle( bool value ) + { + _amplifyBloomEffect.UpscaleQuality = (value)? UpscaleQualityEnum.Realistic:UpscaleQualityEnum.Natural; + } + + public void OnTemporalFilterToggle( bool value ) + { + _amplifyBloomEffect.TemporalFilteringActive = value; + } + + public void OnBokehFilterToggle( bool value ) + { + _amplifyBloomEffect.BokehFilterInstance.ApplyBokeh = BokehToggle.isOn; + } + public void OnLensFlareToggle( bool value ) + { + _amplifyBloomEffect.LensFlareInstance.ApplyLensFlare = LensFlareToggle.isOn; + } + public void OnLensGlareToggle( bool value ) + { + _amplifyBloomEffect.LensGlareInstance.ApplyLensGlare = LensGlareToggle.isOn; + } + public void OnLensDirtToggle( bool value ) + { + _amplifyBloomEffect.ApplyLensDirt = LensDirtToggle.isOn; + } + public void OnLensStarburstToggle( bool value ) + { + _amplifyBloomEffect.ApplyLensStardurst = LensStarburstToggle.isOn; + } + + public void OnQuitButton() + { + Application.Quit(); + } + + void Update() + { + if ( m_gamePadMode ) + { + int axisValue = ( int ) Input.GetAxis( VERTICAL_GAMEPAD ); + if ( axisValue != m_lastAxisValue ) + { + m_lastAxisValue = axisValue; + + if ( axisValue == 1 ) + { + m_currentOption = ( m_currentOption + 1 ) % m_uiElements.Length; + } + else if ( axisValue == -1 ) + { + m_currentOption = ( m_currentOption == 0 ) ? ( m_uiElements.Length - 1 ) : ( m_currentOption - 1 ); + } + m_uiElements[ m_lastOption ].Select = false; + m_uiElements[ m_currentOption ].Select = true; + m_lastOption = m_currentOption; + } + + if ( Input.GetButtonDown( SUBMIT_BUTTON ) ) + { + m_uiElements[ m_currentOption ].DoAction( DemoUIElementAction.Press ); + } + + float slideValue = Input.GetAxis( HORIZONTAL_GAMEPAD ); + if ( Mathf.Abs( slideValue ) > 0 ) + { + m_uiElements[ m_currentOption ].DoAction( DemoUIElementAction.Slide, slideValue * Time.deltaTime ); + } + else + { + m_uiElements[ m_currentOption ].Idle(); + } + } + if ( Input.GetKey( KeyCode.LeftAlt ) && Input.GetKey( KeyCode.Q ) ) + { + OnQuitButton(); + } + + if ( Input.GetKeyDown( KeyCode.Alpha0 ) ) + { + _camera.orthographic = !_camera.orthographic; + } + + if ( Input.GetKeyDown( KeyCode.Alpha1 ) ) + { + _amplifyBloomEffect.enabled = BloomToggle.isOn = !BloomToggle.isOn; + } + + BokehToggle.interactable = + LensFlareToggle.interactable = + LensGlareToggle.interactable = + LensDirtToggle.interactable = + LensStarburstToggle.interactable = + ThresholdSlider.interactable = + DownscaleAmountSlider.interactable = + HighPrecision.interactable = + IntensitySlider.interactable = BloomToggle.isOn; + + if ( BloomToggle.isOn ) + { + if ( Input.GetKeyDown( KeyCode.Alpha2 ) ) + { + _amplifyBloomEffect.BokehFilterInstance.ApplyBokeh = BokehToggle.isOn = !BokehToggle.isOn; + } + + if ( Input.GetKeyDown( KeyCode.Alpha3 ) ) + { + _amplifyBloomEffect.LensFlareInstance.ApplyLensFlare = LensFlareToggle.isOn = !LensFlareToggle.isOn; + } + + if ( Input.GetKeyDown( KeyCode.Alpha4 ) ) + { + _amplifyBloomEffect.LensGlareInstance.ApplyLensGlare = LensGlareToggle.isOn = !LensGlareToggle.isOn; + } + + if ( Input.GetKeyDown( KeyCode.Alpha5 ) ) + { + _amplifyBloomEffect.ApplyLensDirt = LensDirtToggle.isOn = !LensDirtToggle.isOn; + } + + if ( Input.GetKeyDown( KeyCode.Alpha6 ) ) + { + _amplifyBloomEffect.ApplyLensStardurst = LensStarburstToggle.isOn = !LensStarburstToggle.isOn; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoMainUI.cs.meta b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoMainUI.cs.meta new file mode 100644 index 0000000..3e84360 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoMainUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2fe004816b94e2d4fb88359d1b543905 +timeCreated: 1452003864 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIElement.cs b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIElement.cs new file mode 100644 index 0000000..93dd1a9 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIElement.cs @@ -0,0 +1,48 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine; +using UnityEngine.UI; + +namespace AmplifyBloom +{ + public enum DemoUIElementAction + { + Press = 0, + Slide + }; + + public class DemoUIElement : MonoBehaviour + { + private bool m_isSelected = false; + private Text m_text; + private Color m_selectedColor = new Color( 1, 1, 1 ); + private Color m_unselectedColor; + + public void Init() + { + m_text = transform.GetComponentInChildren(); + m_unselectedColor = m_text.color; + } + + virtual public void DoAction( DemoUIElementAction action, params object[] vars ) + { + + } + + virtual public void Idle() + { + } + + public bool Select + { + get { return m_isSelected; } + set + { + m_isSelected = value; + m_text.color = value ? m_selectedColor : m_unselectedColor; + } + } + + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIElement.cs.meta b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIElement.cs.meta new file mode 100644 index 0000000..321066e --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIElement.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f796ec024277c3946b375c14da383de6 +timeCreated: 1452700701 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUISlider.cs b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUISlider.cs new file mode 100644 index 0000000..27a2e15 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUISlider.cs @@ -0,0 +1,58 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda +using UnityEngine; +using UnityEngine.UI; + +namespace AmplifyBloom +{ + public sealed class DemoUISlider : DemoUIElement + { + public bool SingleStep = false; + private Slider m_slider; + private bool m_lastStep = false; + void Start() + { + m_slider = GetComponent(); + } + + public override void DoAction( DemoUIElementAction action, params object[] vars ) + { + if ( !m_slider.IsInteractable() ) + return; + + if ( action == DemoUIElementAction.Slide ) + { + float slideAmount = ( float ) vars[ 0 ]; + if ( SingleStep ) + { + if ( m_lastStep ) + { + return; + } + m_lastStep = true; + } + + if ( m_slider.wholeNumbers ) + { + if ( slideAmount > 0 ) + { + m_slider.value += 1; + } + else if ( slideAmount < 0 ) + { + m_slider.value -= 1; + } + } + else + { + m_slider.value += slideAmount; + } + } + } + + public override void Idle() + { + m_lastStep = false; + } + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUISlider.cs.meta b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUISlider.cs.meta new file mode 100644 index 0000000..9dbc7ae --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUISlider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b6843cc0fe106f468c72d877a73ab53 +timeCreated: 1452705062 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIToggle.cs b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIToggle.cs new file mode 100644 index 0000000..d3a76d3 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIToggle.cs @@ -0,0 +1,29 @@ +// Amplify Bloom - Advanced Bloom Post-Effect for Unity +// Copyright (c) Amplify Creations, Lda + +using UnityEngine.UI; + +namespace AmplifyBloom +{ + + public sealed class DemoUIToggle : DemoUIElement + { + private Toggle m_toggle; + + void Start() + { + m_toggle = GetComponent(); + } + + public override void DoAction( DemoUIElementAction action, params object[] vars ) + { + if ( !m_toggle.IsInteractable() ) + return; + + if ( action == DemoUIElementAction.Press ) + { + m_toggle.isOn = !m_toggle.isOn; + } + } + } +} \ No newline at end of file diff --git a/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIToggle.cs.meta b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIToggle.cs.meta new file mode 100644 index 0000000..da18c9b --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Demo/Scripts/DemoUIToggle.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 92428448a5b483b40a4c3b0b505fffe8 +timeCreated: 1452705052 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures.meta b/Assets/AmplifyBloom/Samples/Textures.meta new file mode 100644 index 0000000..578cc2e --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0096d0d95d7c6f24aa3fc0b7803663f2 +folderAsset: yes +timeCreated: 1447695137 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt.meta new file mode 100644 index 0000000..ff4e6cd --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 42e8ebf19a3c75a4b850eec65a5458c8 +folderAsset: yes +timeCreated: 1452622397 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtHighContrast.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtHighContrast.png new file mode 100644 index 0000000..d470b94 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtHighContrast.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtHighContrast.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtHighContrast.png.meta new file mode 100644 index 0000000..0f3601b --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtHighContrast.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 7825356d1f1778140ad12b5dfe6b4d41 +timeCreated: 1450091865 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtLowContrast.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtLowContrast.png new file mode 100644 index 0000000..763728d Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtLowContrast.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtLowContrast.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtLowContrast.png.meta new file mode 100644 index 0000000..17d8c33 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/DirtLowContrast.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: c0575617e448bb14396354527b9f5b68 +timeCreated: 1450091865 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_1.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_1.png new file mode 100644 index 0000000..8614561 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_1.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_1.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_1.png.meta new file mode 100644 index 0000000..22abb66 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_1.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 8fe8fae6feccd7947af36b04d69c4470 +timeCreated: 1453216696 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_2.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_2.png new file mode 100644 index 0000000..8a1aec3 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_2.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_2.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_2.png.meta new file mode 100644 index 0000000..7a9c4e7 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_2.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 6940980a0023f844ebb70a72a5e1b157 +timeCreated: 1453216692 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_3.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_3.png new file mode 100644 index 0000000..a25c965 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_3.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_3.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_3.png.meta new file mode 100644 index 0000000..644bc58 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_3.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 68d976f013539264aaf3ef3de23ea30d +timeCreated: 1453216692 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_4.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_4.png new file mode 100644 index 0000000..3f9e2ed Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_4.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_4.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_4.png.meta new file mode 100644 index 0000000..3ec842b --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_4.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 2d2a24e6ba394474c8eeb4e803c86ece +timeCreated: 1453216690 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_5.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_5.png new file mode 100644 index 0000000..82865aa Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_5.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_5.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_5.png.meta new file mode 100644 index 0000000..c77282f --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_5.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 69d7195054ec55345a0558bc64bb5b73 +timeCreated: 1453216693 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_6.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_6.png new file mode 100644 index 0000000..0e7880f Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_6.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_6.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_6.png.meta new file mode 100644 index 0000000..58cacda --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_6.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 87b6dffc85cfc0740832426e1ad87025 +timeCreated: 1453216694 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_7.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_7.png new file mode 100644 index 0000000..34b6697 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_7.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_7.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_7.png.meta new file mode 100644 index 0000000..ed0f6b7 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_7.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: a19b0cd735dd895469fd4b002642e65a +timeCreated: 1453832180 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_8.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_8.png new file mode 100644 index 0000000..5885028 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_8.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_8.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_8.png.meta new file mode 100644 index 0000000..5dd9320 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_8.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: a45a421fb0aa30a448304155b840362d +timeCreated: 1453832180 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_9.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_9.png new file mode 100644 index 0000000..8cac717 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_9.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_9.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_9.png.meta new file mode 100644 index 0000000..d0716c8 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_9.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 71b07509a44fb6541b7d82946456007c +timeCreated: 1453832179 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_1.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_1.png new file mode 100644 index 0000000..35672b1 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_1.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_1.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_1.png.meta new file mode 100644 index 0000000..1dd8fee --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_1.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 0514dfa2df1b0a5478052591a9dcc01b +timeCreated: 1453216684 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_2.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_2.png new file mode 100644 index 0000000..bcc71a8 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_2.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_2.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_2.png.meta new file mode 100644 index 0000000..5acb96a --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_2.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 782202d6752f9fc45b7d69ef0b20ff2d +timeCreated: 1453216694 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_3.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_3.png new file mode 100644 index 0000000..43d754b Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_3.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_3.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_3.png.meta new file mode 100644 index 0000000..a3bde6d --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_3.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 8aec15173b59c5f4b8f9825c442dc6b4 +timeCreated: 1453216695 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_4.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_4.png new file mode 100644 index 0000000..2c6601a Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_4.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_4.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_4.png.meta new file mode 100644 index 0000000..b2b36a5 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_4.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: be65d2bfcb1b7e543a9d17bb5b61babb +timeCreated: 1453216699 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_5.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_5.png new file mode 100644 index 0000000..2467cf9 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_5.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_5.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_5.png.meta new file mode 100644 index 0000000..1e09348 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_5.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: c4c4557e036f4414d8aeb0cdb25bcf06 +timeCreated: 1453216700 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_6.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_6.png new file mode 100644 index 0000000..095cc9e Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_6.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_6.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_6.png.meta new file mode 100644 index 0000000..f0001a7 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Dirt_Simple_Color_6.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 09963f11e1974fb47903d8204a1c225a +timeCreated: 1453216685 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_1.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_1.png new file mode 100644 index 0000000..a880860 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_1.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_1.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_1.png.meta new file mode 100644 index 0000000..7ef8256 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_1.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 92d697ab16c0bbc47b5feba4c02b62d3 +timeCreated: 1453216697 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_2.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_2.png new file mode 100644 index 0000000..5a6682a Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_2.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_2.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_2.png.meta new file mode 100644 index 0000000..6851f5d --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_2.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: c6798fc27405b944ea21de875691695a +timeCreated: 1453216702 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_3.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_3.png new file mode 100644 index 0000000..fa51918 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_3.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_3.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_3.png.meta new file mode 100644 index 0000000..7058d29 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_3.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 1cc45abfe84c8e54a9d1b053c68eb158 +timeCreated: 1453216690 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_4.png b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_4.png new file mode 100644 index 0000000..65944a7 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_4.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_4.png.meta b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_4.png.meta new file mode 100644 index 0000000..936e2bd --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Dirt/Lens_Old_4.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 0a521275480b89c4cb773e47af54798e +timeCreated: 1453216687 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst.meta b/Assets/AmplifyBloom/Samples/Textures/Starburst.meta new file mode 100644 index 0000000..ee80ff1 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Starburst.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ece07c10fbf6ffe4fb2c80a036b909c7 +folderAsset: yes +timeCreated: 1452622421 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst.png b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst.png new file mode 100644 index 0000000..1fcac12 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst.png.meta b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst.png.meta new file mode 100644 index 0000000..16127e6 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: c2216a0fed1c98742b826a85db28021c +timeCreated: 1448633391 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_1.png b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_1.png new file mode 100644 index 0000000..926d038 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_1.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_1.png.meta b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_1.png.meta new file mode 100644 index 0000000..ad7c53f --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_1.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 15bdd382da2ef66499b0d183079b093b +timeCreated: 1453216688 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_2.png b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_2.png new file mode 100644 index 0000000..9b756b5 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_2.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_2.png.meta b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_2.png.meta new file mode 100644 index 0000000..87c5b62 --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Color_2.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: a12aa7f34946fdf41ab3efacc272eeff +timeCreated: 1453216699 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_1.png b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_1.png new file mode 100644 index 0000000..ad8606a Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_1.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_1.png.meta b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_1.png.meta new file mode 100644 index 0000000..8f0e86a --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_1.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 9e6e62ff8694cde4393e09541432dcad +timeCreated: 1453216697 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_2.png b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_2.png new file mode 100644 index 0000000..c3cb16b Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_2.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_2.png.meta b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_2.png.meta new file mode 100644 index 0000000..ed6862f --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Old_2.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 361dafa1969db224d9a7789adf3eddeb +timeCreated: 1453216691 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Simple_1.png b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Simple_1.png new file mode 100644 index 0000000..a344d40 Binary files /dev/null and b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Simple_1.png differ diff --git a/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Simple_1.png.meta b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Simple_1.png.meta new file mode 100644 index 0000000..e4ee4ea --- /dev/null +++ b/Assets/AmplifyBloom/Samples/Textures/Starburst/Starburst_Simple_1.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: fc118380bd95ac545968b6b3f1bfe15c +timeCreated: 1453216703 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Textures.meta b/Assets/AmplifyBloom/Textures.meta new file mode 100644 index 0000000..ada30e7 --- /dev/null +++ b/Assets/AmplifyBloom/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 843ad131855e65a4e9ac4c982f9c340f +folderAsset: yes +timeCreated: 1454426634 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AmplifyBloom/Textures/About.png b/Assets/AmplifyBloom/Textures/About.png new file mode 100644 index 0000000..909cf37 Binary files /dev/null and b/Assets/AmplifyBloom/Textures/About.png differ diff --git a/Assets/AmplifyBloom/Textures/About.png.meta b/Assets/AmplifyBloom/Textures/About.png.meta new file mode 100644 index 0000000..2b341db --- /dev/null +++ b/Assets/AmplifyBloom/Textures/About.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 418cb17cf3bdd854a8221f6b6c430702 +timeCreated: 1454426642 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 512 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/Editor.meta b/Assets/Photon Unity Networking/Editor.meta new file mode 100644 index 0000000..e283462 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 742dff193c4972b4eb2e08e8637d672a +folderAsset: yes +timeCreated: 1488120601 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork.meta new file mode 100644 index 0000000..fd1c75a --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5238374c7bd6f594489368dbee97417c +folderAsset: yes +timeCreated: 1488120601 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/AccountService.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/AccountService.cs new file mode 100644 index 0000000..eae0366 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/AccountService.cs @@ -0,0 +1,234 @@ +// ---------------------------------------------------------------------------- +// +// Photon Cloud Account Service - Copyright (C) 2012 Exit Games GmbH +// +// +// Provides methods to register a new user-account for the Photon Cloud and +// get the resulting appId. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +#if UNITY_EDITOR +//#define PHOTON_VOICE + +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; + + +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; + +using Newtonsoft.Json; + +public class AccountService +{ + private const string ServiceUrl = "https://service.exitgames.com/AccountExt/AccountServiceExt.aspx"; + + private Action registrationCallback; // optional (when using async reg) + + public string Message { get; private set; } // msg from server (in case of success, this is the appid) + + protected internal Exception Exception { get; set; } // exceptions in account-server communication + + public string AppId { get; private set; } + + public string AppId2 { get; private set; } + + public int ReturnCode { get; private set; } // 0 = OK. anything else is a error with Message + + public enum Origin : byte { ServerWeb = 1, CloudWeb = 2, Pun = 3, Playmaker = 4 }; + + /// + /// Creates a instance of the Account Service to register Photon Cloud accounts. + /// + public AccountService() + { + WebRequest.DefaultWebProxy = null; + ServicePointManager.ServerCertificateValidationCallback = Validator; + } + + public static bool Validator(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) + { + return true; // any certificate is ok in this case + } + + /// + /// Attempts to create a Photon Cloud Account. + /// Check ReturnCode, Message and AppId to get the result of this attempt. + /// + /// Email of the account. + /// Marks which channel created the new account (if it's new). + /// Defines which type of Photon-service is being requested. + public void RegisterByEmail(string email, Origin origin, string serviceType = null) + { + this.registrationCallback = null; + this.AppId = string.Empty; + this.AppId2 = string.Empty; + this.Message = string.Empty; + this.ReturnCode = -1; + + string result; + try + { + WebRequest req = HttpWebRequest.Create(this.RegistrationUri(email, (byte)origin, serviceType)); + HttpWebResponse resp = req.GetResponse() as HttpWebResponse; + + // now read result + StreamReader reader = new StreamReader(resp.GetResponseStream()); + result = reader.ReadToEnd(); + } + catch (Exception ex) + { + this.Message = "Failed to connect to Cloud Account Service. Please register via account website."; + this.Exception = ex; + return; + } + + this.ParseResult(result); + } + + /// + /// Attempts to create a Photon Cloud Account asynchronously. + /// Once your callback is called, check ReturnCode, Message and AppId to get the result of this attempt. + /// + /// Email of the account. + /// Marks which channel created the new account (if it's new). + /// Defines which type of Photon-service is being requested. + /// Called when the result is available. + public void RegisterByEmailAsync(string email, Origin origin, string serviceType, Action callback = null) + { + this.registrationCallback = callback; + this.AppId = string.Empty; + this.AppId2 = string.Empty; + this.Message = string.Empty; + this.ReturnCode = -1; + + try + { + HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(this.RegistrationUri(email, (byte)origin, serviceType)); + req.Timeout = 5000; + req.BeginGetResponse(this.OnRegisterByEmailCompleted, req); + } + catch (Exception ex) + { + this.Message = "Failed to connect to Cloud Account Service. Please register via account website."; + this.Exception = ex; + if (this.registrationCallback != null) + { + this.registrationCallback(this); + } + } + } + + /// + /// Internal callback with result of async HttpWebRequest (in RegisterByEmailAsync). + /// + /// + private void OnRegisterByEmailCompleted(IAsyncResult ar) + { + try + { + HttpWebRequest request = (HttpWebRequest)ar.AsyncState; + HttpWebResponse response = request.EndGetResponse(ar) as HttpWebResponse; + + if (response != null && response.StatusCode == HttpStatusCode.OK) + { + // no error. use the result + StreamReader reader = new StreamReader(response.GetResponseStream()); + string result = reader.ReadToEnd(); + + this.ParseResult(result); + } + else + { + // a response but some error on server. show message + this.Message = "Failed to connect to Cloud Account Service. Please register via account website."; + } + } + catch (Exception ex) + { + // not even a response. show message + this.Message = "Failed to connect to Cloud Account Service. Please register via account website."; + this.Exception = ex; + } + + if (this.registrationCallback != null) + { + this.registrationCallback(this); + } + } + + /// + /// Creates the service-call Uri, escaping the email for security reasons. + /// + /// Email of the account. + /// 1 = server-web, 2 = cloud-web, 3 = PUN, 4 = playmaker + /// Defines which type of Photon-service is being requested. Options: "", "voice", "chat" + /// Uri to call. + private Uri RegistrationUri(string email, byte origin, string serviceType) + { + if (serviceType == null) + { + serviceType = string.Empty; + } + + string emailEncoded = Uri.EscapeDataString(email); + string uriString = string.Format("{0}?email={1}&origin={2}&serviceType={3}", ServiceUrl, emailEncoded, origin, serviceType); + + return new Uri(uriString); + } + + /// + /// Reads the Json response and applies it to local properties. + /// + /// + private void ParseResult(string result) + { + if (string.IsNullOrEmpty(result)) + { + this.Message = "Server's response was empty. Please register through account website during this service interruption."; + return; + } + + Dictionary values = JsonConvert.DeserializeObject>(result); + if (values == null) + { + this.Message = "Service temporarily unavailable. Please register through account website."; + return; + } + + int returnCodeInt = -1; + string returnCodeString = string.Empty; + string message; + string messageDetailed; + + values.TryGetValue("ReturnCode", out returnCodeString); + values.TryGetValue("Message", out message); + values.TryGetValue("MessageDetailed", out messageDetailed); + + int.TryParse(returnCodeString, out returnCodeInt); + + this.ReturnCode = returnCodeInt; + if (returnCodeInt == 0) + { + // returnCode == 0 means: all ok. message is new AppId + this.AppId = message; + #if PHOTON_VOICE + this.AppId2 = messageDetailed; + #endif + } + else + { + // any error gives returnCode != 0 + this.AppId = string.Empty; + #if PHOTON_VOICE + this.AppId2 = string.Empty; + #endif + this.Message = message; + } + } +} +#endif diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/AccountService.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/AccountService.cs.meta new file mode 100644 index 0000000..a070b17 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/AccountService.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 166dfe22956ef0341b28e18d0499e363 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/CullAreaEditor.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/CullAreaEditor.cs new file mode 100644 index 0000000..bf87a4a --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/CullAreaEditor.cs @@ -0,0 +1,232 @@ +using UnityEditor; +using UnityEngine; + +[CanEditMultipleObjects] +[CustomEditor(typeof(CullArea))] +public class CullAreaEditor : Editor +{ + private bool alignEditorCamera; + + private CullArea cullArea; + + private enum UP_AXIS_OPTIONS + { + SideScrollerMode = 0, + TopDownOr3DMode = 1 + } + + private UP_AXIS_OPTIONS upAxisOptions; + + public void OnEnable() + { + cullArea = (CullArea) target; + + // Destroying the newly created cull area if there is already one existing + if (FindObjectsOfType().Length > 1) + { + Debug.LogWarning("Destroying newly created cull area because there is already one existing in the scene."); + + DestroyImmediate(cullArea); + + return; + } + + // Prevents the dropdown from resetting + if (cullArea != null) + { + upAxisOptions = cullArea.YIsUpAxis ? UP_AXIS_OPTIONS.SideScrollerMode : UP_AXIS_OPTIONS.TopDownOr3DMode; + } + } + + public override void OnInspectorGUI() + { + EditorGUILayout.BeginVertical(); + + if (Application.isEditor && !Application.isPlaying) + { + OnInspectorGUIEditMode(); + } + else + { + OnInspectorGUIPlayMode(); + } + + EditorGUILayout.EndVertical(); + } + + /// + /// Represents the inspector GUI when edit mode is active. + /// + private void OnInspectorGUIEditMode() + { + EditorGUI.BeginChangeCheck(); + + #region DEFINE_UP_AXIS + + { + EditorGUILayout.BeginVertical(); + EditorGUILayout.LabelField("Select game type", EditorStyles.boldLabel); + upAxisOptions = (UP_AXIS_OPTIONS) EditorGUILayout.EnumPopup("Game type", upAxisOptions); + cullArea.YIsUpAxis = (upAxisOptions == UP_AXIS_OPTIONS.SideScrollerMode); + EditorGUILayout.EndVertical(); + } + + #endregion + + EditorGUILayout.Space(); + + #region SUBDIVISION + + { + EditorGUILayout.BeginVertical(); + EditorGUILayout.LabelField("Set the number of subdivisions", EditorStyles.boldLabel); + cullArea.NumberOfSubdivisions = EditorGUILayout.IntSlider("Number of subdivisions", cullArea.NumberOfSubdivisions, 0, CullArea.MAX_NUMBER_OF_SUBDIVISIONS); + EditorGUILayout.EndVertical(); + + EditorGUILayout.Space(); + + if (cullArea.NumberOfSubdivisions != 0) + { + for (int index = 0; index < cullArea.Subdivisions.Length; ++index) + { + if ((index + 1) <= cullArea.NumberOfSubdivisions) + { + string countMessage = (index + 1) + ". Subdivision: row / column count"; + + EditorGUILayout.BeginVertical(); + cullArea.Subdivisions[index] = EditorGUILayout.Vector2Field(countMessage, cullArea.Subdivisions[index]); + EditorGUILayout.EndVertical(); + + EditorGUILayout.Space(); + } + else + { + cullArea.Subdivisions[index] = new UnityEngine.Vector2(1, 1); + } + } + } + } + + #endregion + + EditorGUILayout.Space(); + + #region UPDATING_MAIN_CAMERA + + { + EditorGUILayout.BeginVertical(); + + EditorGUILayout.LabelField("View and camera options", EditorStyles.boldLabel); + alignEditorCamera = EditorGUILayout.Toggle("Automatically align editor view with grid", alignEditorCamera); + + if (Camera.main != null) + { + if (GUILayout.Button("Align main camera with grid")) + { + Undo.RecordObject(Camera.main.transform, "Align main camera with grid."); + + float yCoord = cullArea.YIsUpAxis ? cullArea.Center.y : Mathf.Max(cullArea.Size.x, cullArea.Size.y); + float zCoord = cullArea.YIsUpAxis ? -Mathf.Max(cullArea.Size.x, cullArea.Size.y) : cullArea.Center.y; + + Camera.main.transform.position = new Vector3(cullArea.Center.x, yCoord, zCoord); + Camera.main.transform.LookAt(cullArea.transform.position); + } + + EditorGUILayout.LabelField("Current main camera position is " + Camera.main.transform.position.ToString()); + } + + EditorGUILayout.EndVertical(); + } + + #endregion + + if (EditorGUI.EndChangeCheck()) + { + cullArea.RecreateCellHierarchy = true; + + AlignEditorView(); + } + } + + /// + /// Represents the inspector GUI when play mode is active. + /// + private void OnInspectorGUIPlayMode() + { + EditorGUILayout.LabelField("No changes allowed when game is running. Please exit play mode first.", EditorStyles.boldLabel); + } + + public void OnSceneGUI() + { + Handles.BeginGUI(); + GUILayout.BeginArea(new Rect(Screen.width - 110, Screen.height - 90, 100, 60)); + + if (GUILayout.Button("Reset position")) + { + cullArea.transform.position = Vector3.zero; + } + + if (GUILayout.Button("Reset scaling")) + { + cullArea.transform.localScale = new Vector3(25.0f, 25.0f, 25.0f); + } + + GUILayout.EndArea(); + Handles.EndGUI(); + + // Checking for changes of the transform + if (cullArea.transform.hasChanged) + { + // Resetting position + float posX = cullArea.transform.position.x; + float posY = cullArea.YIsUpAxis ? cullArea.transform.position.y : 0.0f; + float posZ = !cullArea.YIsUpAxis ? cullArea.transform.position.z : 0.0f; + + cullArea.transform.position = new Vector3(posX, posY, posZ); + + // Resetting scaling + if (cullArea.Size.x < 1.0f || cullArea.Size.y < 1.0f) + { + float scaleX = (cullArea.transform.localScale.x < 1.0f) ? 1.0f : cullArea.transform.localScale.x; + float scaleY = (cullArea.transform.localScale.y < 1.0f) ? 1.0f : cullArea.transform.localScale.y; + float scaleZ = (cullArea.transform.localScale.z < 1.0f) ? 1.0f : cullArea.transform.localScale.z; + + cullArea.transform.localScale = new Vector3(scaleX, scaleY, scaleZ); + + Debug.LogWarning("Scaling on a single axis can not be lower than 1. Resetting..."); + } + + cullArea.RecreateCellHierarchy = true; + + AlignEditorView(); + } + } + + /// + /// Aligns the editor view with the created grid. + /// + private void AlignEditorView() + { + if (!alignEditorCamera) + { + return; + } + + // This creates a temporary game object in order to align the editor view. + // The created game object is destroyed afterwards. + GameObject tmpGo = new GameObject(); + + float yCoord = cullArea.YIsUpAxis ? cullArea.Center.y : Mathf.Max(cullArea.Size.x, cullArea.Size.y); + float zCoord = cullArea.YIsUpAxis ? -Mathf.Max(cullArea.Size.x, cullArea.Size.y) : cullArea.Center.y; + + tmpGo.transform.position = new Vector3(cullArea.Center.x, yCoord, zCoord); + tmpGo.transform.LookAt(cullArea.transform.position); + + if (SceneView.lastActiveSceneView != null) + { + SceneView.lastActiveSceneView.AlignViewToObject(tmpGo.transform); + } + + DestroyImmediate(tmpGo); + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/CullAreaEditor.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/CullAreaEditor.cs.meta new file mode 100644 index 0000000..7d72143 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/CullAreaEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: abadaa451a7bff0489078ed9eec61133 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Newtonsoft.Json.dll b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Newtonsoft.Json.dll new file mode 100644 index 0000000..664b5b5 Binary files /dev/null and b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Newtonsoft.Json.dll differ diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Newtonsoft.Json.dll.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Newtonsoft.Json.dll.meta new file mode 100644 index 0000000..bda4c00 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Newtonsoft.Json.dll.meta @@ -0,0 +1,28 @@ +fileFormatVersion: 2 +guid: 0268f98d7c649564a818b0768fc68d4b +labels: +- ExitGames +- PUN +- Photon +- Networking +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonConverter.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonConverter.cs new file mode 100644 index 0000000..279d3e0 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonConverter.cs @@ -0,0 +1,444 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2011 Exit Games GmbH +// +// +// Script to convert a Unity Networking project to PhotonNetwork. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +#if UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 +#define UNITY_MIN_5_3 +#endif + + +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System.IO; +using System.Text.RegularExpressions; + +public class PhotonConverter : Photon.MonoBehaviour +{ + public static void RunConversion() + { + //Ask if user has made a backup. + int option = EditorUtility.DisplayDialogComplex("Conversion", "Attempt automatic conversion from Unity Networking to Photon Unity Networking \"PUN\"?", "Yes", "No!", "Pick Script Folder"); + switch (option) + { + case 0: + break; + case 1: + return; + case 2: + PickFolderAndConvertScripts(); + return; + default: + return; + } + + //REAAAALY? + bool result = EditorUtility.DisplayDialog("Conversion", "Disclaimer: The code conversion feature is quite crude, but should do it's job well (see the sourcecode). A backup is therefore strongly recommended!", "Yes, I've made a backup: GO", "Abort"); + if (!result) + { + return; + } + Output(EditorApplication.timeSinceStartup + " Started conversion of Unity networking -> Photon"); + + //Ask to save current scene (optional) + EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo(); + + EditorUtility.DisplayProgressBar("Converting..", "Starting.", 0); + + //Convert NetworkViews to PhotonViews in Project prefabs + //Ask the user if we can move all prefabs to a resources folder + bool movePrefabs = EditorUtility.DisplayDialog("Conversion", "Can all prefabs that use a PhotonView be moved to a Resources/ folder? You need this if you use Network.Instantiate.", "Yes", "No"); + + + string[] prefabs = Directory.GetFiles("Assets/", "*.prefab", SearchOption.AllDirectories); + foreach (string prefab in prefabs) + { + EditorUtility.DisplayProgressBar("Converting..", "Object:" + prefab, 0.6f); + + Object[] objs = (Object[])AssetDatabase.LoadAllAssetsAtPath(prefab); + int converted = 0; + foreach (Object obj in objs) + { + if (obj != null && obj.GetType() == typeof(GameObject)) + converted += ConvertNetworkView(((GameObject)obj).GetComponents(), false); + } + if (movePrefabs && converted > 0) + { + //This prefab needs to be under the root of a Resources folder! + string path = prefab.Replace("\\", "/"); + int lastSlash = path.LastIndexOf("/"); + int resourcesIndex = path.LastIndexOf("/Resources/"); + if (resourcesIndex != lastSlash - 10) + { + if (path.Contains("/Resources/")) + { + Debug.LogWarning("Warning, prefab [" + prefab + "] was already in a resources folder. But has been placed in the root of another one!"); + } + //This prefab NEEDS to be placed under a resources folder + string resourcesFolder = path.Substring(0, lastSlash) + "/Resources/"; + EnsureFolder(resourcesFolder); + string newPath = resourcesFolder + path.Substring(lastSlash + 1); + string error = AssetDatabase.MoveAsset(prefab, newPath); + if (error != "") + Debug.LogError(error); + Output("Fixed prefab [" + prefab + "] by moving it into a resources folder."); + } + } + } + + //Convert NetworkViews to PhotonViews in scenes + string[] sceneFiles = Directory.GetFiles("Assets/", "*.unity", SearchOption.AllDirectories); + foreach (string sceneName in sceneFiles) + { + EditorSceneManager.OpenScene(sceneName); + EditorUtility.DisplayProgressBar("Converting..", "Scene:" + sceneName, 0.2f); + + int converted2 = ConvertNetworkView((NetworkView[])GameObject.FindObjectsOfType(typeof(NetworkView)), true); + if (converted2 > 0) + { + //This will correct all prefabs: The prefabs have gotten new components, but the correct ID's were lost in this case + PhotonViewHandler.HierarchyChange(); //TODO: most likely this is triggered on change or on save + + Output("Replaced " + converted2 + " NetworkViews with PhotonViews in scene: " + sceneName); + EditorSceneManager.SaveOpenScenes(); + } + } + + //Convert C#/JS scripts (API stuff) + List scripts = GetScriptsInFolder("Assets"); + + EditorUtility.DisplayProgressBar("Converting..", "Scripts..", 0.9f); + ConvertScripts(scripts); + + Output(EditorApplication.timeSinceStartup + " Completed conversion!"); + EditorUtility.ClearProgressBar(); + + EditorUtility.DisplayDialog("Completed the conversion", "Don't forget to add \"PhotonNetwork.ConnectWithDefaultSettings();\" to connect to the Photon server before using any multiplayer functionality.", "OK"); + } + + public static void PickFolderAndConvertScripts() + { + string folderPath = EditorUtility.OpenFolderPanel("Pick source folder to convert", Directory.GetCurrentDirectory(), ""); + if (string.IsNullOrEmpty(folderPath)) + { + EditorUtility.DisplayDialog("Script Conversion", "No folder was selected. No files were changed. Please start over.", "Ok."); + return; + } + + bool result = EditorUtility.DisplayDialog("Script Conversion", "Scripts in this folder will be modified:\n\n" + folderPath + "\n\nMake sure you have backups of these scripts.\nConversion is not guaranteed to work!", "Backup done. Go!", "Abort"); + if (!result) + { + return; + } + + List scripts = GetScriptsInFolder(folderPath); + ConvertScripts(scripts); + + EditorUtility.DisplayDialog("Script Conversion", "Scripts are now converted to PUN.\n\nYou will need to update\n- scenes\n- components\n- prefabs and\n- add \"PhotonNetwork.ConnectWithDefaultSettings();\"", "Ok"); + } + + + public static List GetScriptsInFolder(string folder) + { + List scripts = new List(); + + try + { + scripts.AddRange(Directory.GetFiles(folder, "*.cs", SearchOption.AllDirectories)); + scripts.AddRange(Directory.GetFiles(folder, "*.js", SearchOption.AllDirectories)); + scripts.AddRange(Directory.GetFiles(folder, "*.boo", SearchOption.AllDirectories)); + } + catch (System.Exception ex) + { + Debug.Log("Getting script list from folder " + folder + " failed. Exception:\n" + ex.ToString()); + } + + return scripts; + } + + static void ConvertScripts(List scriptPathList) + { + bool ignoreWarningIsLogged = false; + + foreach (string script in scriptPathList) + { + if (script.Contains("PhotonNetwork")) //Don't convert this file (and others) + { + if (!ignoreWarningIsLogged) + { + ignoreWarningIsLogged = true; + Debug.LogWarning("Conversion to PUN ignores all files with \"PhotonNetwork\" in their file-path.\nCheck: " + script); + } + continue; + } + if (script.Contains("Image Effects")) + { + continue; + } + + ConvertToPhotonAPI(script); + } + + foreach (string script in scriptPathList) + { + AssetDatabase.ImportAsset(script, ImportAssetOptions.ForceUpdate); + } + } + + static void ConvertToPhotonAPI(string file) + { + string text = File.ReadAllText(file); + + bool isJS = file.Contains(".js"); + + file = file.Replace("\\", "/"); // Get Class name for JS + string className = file.Substring(file.LastIndexOf("/")+1); + className = className.Substring(0, className.IndexOf(".")); + + + //REGEXP STUFF + //Valid are: Space { } , /n /r + //string NOT_VAR = @"([^A-Za-z0-9_\[\]\.]+)"; + string NOT_VAR_WITH_DOT = @"([^A-Za-z0-9_]+)"; + + //string VAR_NONARRAY = @"[^A-Za-z0-9_]"; + + + //NetworkView + { + text = PregReplace(text, NOT_VAR_WITH_DOT + "NetworkView" + NOT_VAR_WITH_DOT, "$1PhotonView$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "networkView" + NOT_VAR_WITH_DOT, "$1photonView$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "stateSynchronization" + NOT_VAR_WITH_DOT, "$1synchronization$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "NetworkStateSynchronization" + NOT_VAR_WITH_DOT, "$1ViewSynchronization$2"); // map Unity enum to ours + //.RPC + text = PregReplace(text, NOT_VAR_WITH_DOT + "RPCMode.Server" + NOT_VAR_WITH_DOT, "$1PhotonTargets.MasterClient$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "RPCMode" + NOT_VAR_WITH_DOT, "$1PhotonTargets$2"); + } + + //NetworkMessageInfo: 100% + { + text = PregReplace(text, NOT_VAR_WITH_DOT + "NetworkMessageInfo" + NOT_VAR_WITH_DOT, "$1PhotonMessageInfo$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "networkView" + NOT_VAR_WITH_DOT, "$1photonView$2"); + } + + //NetworkViewID: + { + text = PregReplace(text, NOT_VAR_WITH_DOT + "NetworkViewID" + NOT_VAR_WITH_DOT, "$1int$2"); //We simply use an int + } + + //NetworkPlayer + { + text = PregReplace(text, NOT_VAR_WITH_DOT + "NetworkPlayer" + NOT_VAR_WITH_DOT, "$1PhotonPlayer$2"); + } + + //Network + { + //Monobehaviour callbacks + { + text = PregReplace(text, NOT_VAR_WITH_DOT + "OnPlayerConnected" + NOT_VAR_WITH_DOT, "$1OnPhotonPlayerConnected$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "OnPlayerDisconnected" + NOT_VAR_WITH_DOT, "$1OnPhotonPlayerDisconnected$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "OnNetworkInstantiate" + NOT_VAR_WITH_DOT, "$1OnPhotonInstantiate$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "OnSerializeNetworkView" + NOT_VAR_WITH_DOT, "$1OnPhotonSerializeView$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "BitStream" + NOT_VAR_WITH_DOT, "$1PhotonStream$2"); + + //Not completely the same meaning + text = PregReplace(text, NOT_VAR_WITH_DOT + "OnServerInitialized" + NOT_VAR_WITH_DOT, "$1OnCreatedRoom$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "OnConnectedToServer" + NOT_VAR_WITH_DOT, "$1OnJoinedRoom$2"); + + text = PregReplace(text, NOT_VAR_WITH_DOT + "OnFailedToConnectToMasterServer" + NOT_VAR_WITH_DOT, "$1OnFailedToConnectToPhoton$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "OnFailedToConnect" + NOT_VAR_WITH_DOT, "$1OnFailedToConnect_OBSELETE$2"); + } + + //Variables + { + + text = PregReplace(text, NOT_VAR_WITH_DOT + "Network.connections" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.playerList$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "Network.isServer" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.isMasterClient$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "Network.isClient" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.isNonMasterClientInRoom$2"); + + text = PregReplace(text, NOT_VAR_WITH_DOT + "NetworkPeerType" + NOT_VAR_WITH_DOT, "$1ConnectionState$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "Network.peerType" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.connectionState$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "ConnectionState.Server" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.isMasterClient$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "ConnectionState.Client" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.isNonMasterClientInRoom$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "PhotonNetwork.playerList.Length" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.playerList.Count$2"); + + /*DROPPED: + minimumAllocatableViewIDs + natFacilitatorIP is dropped + natFacilitatorPort is dropped + connectionTesterIP + connectionTesterPort + proxyIP + proxyPort + useProxy + proxyPassword + */ + } + + //Methods + { + text = PregReplace(text, NOT_VAR_WITH_DOT + "Network.InitializeServer" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.CreateRoom$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "Network.Connect" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.JoinRoom$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "Network.GetAveragePing" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.GetPing$2"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "Network.GetLastPing" + NOT_VAR_WITH_DOT, "$1PhotonNetwork.GetPing$2"); + /*DROPPED: + TestConnection + TestConnectionNAT + HavePublicAddress + */ + } + + //Overall + text = PregReplace(text, NOT_VAR_WITH_DOT + "Network" + NOT_VAR_WITH_DOT, "$1PhotonNetwork$2"); + + + //Changed methods + string ignoreMe = @"([A-Za-z0-9_\[\]\(\) ]+)"; + + text = PregReplace(text, NOT_VAR_WITH_DOT + "PhotonNetwork.GetPing\\(" + ignoreMe+"\\);", "$1PhotonNetwork.GetPing();"); + text = PregReplace(text, NOT_VAR_WITH_DOT + "PhotonNetwork.CloseConnection\\(" + ignoreMe+","+ignoreMe+"\\);", "$1PhotonNetwork.CloseConnection($2);"); + + } + + //General + { + if (text.Contains("Photon")) //Only use the PhotonMonoBehaviour if we use photonView and friends. + { + if (isJS)//JS + { + if (text.Contains("extends MonoBehaviour")) + text = PregReplace(text, "extends MonoBehaviour", "extends Photon.MonoBehaviour"); + else + text = "class " + className + " extends Photon.MonoBehaviour {\n" + text + "\n}"; + } + else //C# + text = PregReplace(text, ": MonoBehaviour", ": Photon.MonoBehaviour"); + } + } + + File.WriteAllText(file, text); + } + + + /// default path: "Assets" + public static void ConvertRpcAttribute(string path) + { + if (string.IsNullOrEmpty(path)) + { + path = "Assets"; + } + + List scripts = GetScriptsInFolder(path); + foreach (string file in scripts) + { + string text = File.ReadAllText(file); + string textCopy = text; + if (file.EndsWith("PhotonConverter.cs")) + { + continue; + } + + text = text.Replace("[RPC]", "[PunRPC]"); + text = text.Replace("@RPC", "@PunRPC"); + + if (!text.Equals(textCopy)) + { + File.WriteAllText(file, text); + Debug.Log("Converted RPC to PunRPC in: " + file); + } + } + } + + static string PregReplace(string input, string[] pattern, string[] replacements) + { + if (replacements.Length != pattern.Length) + Debug.LogError("Replacement and Pattern Arrays must be balanced"); + + for (var i = 0; i < pattern.Length; i++) + { + input = Regex.Replace(input, pattern[i], replacements[i]); + } + + return input; + } + static string PregReplace(string input, string pattern, string replacement) + { + return Regex.Replace(input, pattern, replacement); + + } + + static void EnsureFolder(string path) + { + if (!Directory.Exists(path)) + { + Directory.CreateDirectory(path); + AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate); + AssetDatabase.Refresh(); + } + } + + static int ConvertNetworkView(NetworkView[] netViews, bool isScene) + { + for (int i = netViews.Length - 1; i >= 0; i--) + { + NetworkView netView = netViews[i]; + PhotonView view = netView.gameObject.AddComponent(); + Undo.RecordObject(view, null); + + if (isScene) + { + //Get scene ID + string str = netView.viewID.ToString().Replace("SceneID: ", ""); + int firstSpace = str.IndexOf(" "); + str = str.Substring(0, firstSpace); + int oldViewID = int.Parse(str); + + view.viewID = oldViewID; + + #if !UNITY_MIN_5_3 + EditorUtility.SetDirty(view); + EditorUtility.SetDirty(view.gameObject); + #endif + } + + view.ObservedComponents = new List(); + view.ObservedComponents.Add(netView.observed); + + if (netView.stateSynchronization == NetworkStateSynchronization.Unreliable) + { + view.synchronization = ViewSynchronization.Unreliable; + } + else if (netView.stateSynchronization == NetworkStateSynchronization.ReliableDeltaCompressed) + { + view.synchronization = ViewSynchronization.ReliableDeltaCompressed; + } + else + { + view.synchronization = ViewSynchronization.Off; + } + DestroyImmediate(netView, true); + } + AssetDatabase.Refresh(); + AssetDatabase.SaveAssets(); + + return netViews.Length; + } + + static void Output(string str) + { + Debug.Log(((int)EditorApplication.timeSinceStartup) + " " + str); + } + + static void ConversionError(string file, string str) + { + Debug.LogError("Scrip conversion[" + file + "]: " + str); + } + +} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonConverter.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonConverter.cs.meta new file mode 100644 index 0000000..dc6b834 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonConverter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 15757b26cd9b53247be86da9e8da19dd +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonEditor.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonEditor.cs new file mode 100644 index 0000000..cc21fbd --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonEditor.cs @@ -0,0 +1,767 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2011 Exit Games GmbH +// +// +// MenuItems and in-Editor scripts for PhotonNetwork. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +//#define PHOTON_VOICE + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; + +public class PunWizardText +{ + public string WindowTitle = "PUN Wizard"; + public string SetupWizardWarningTitle = "Warning"; + public string SetupWizardWarningMessage = "You have not yet run the Photon setup wizard! Your game won't be able to connect. See Windows -> Photon Unity Networking."; + public string MainMenuButton = "Main Menu"; + public string SetupWizardTitle = "PUN Setup"; + public string SetupWizardInfo = "Thanks for importing Photon Unity Networking.\nThis window should set you up.\n\n- To use an existing Photon Cloud App, enter your AppId.\n- To register an account or access an existing one, enter the account's mail address.\n- To use Photon OnPremise, skip this step."; + public string EmailOrAppIdLabel = "AppId or Email"; + public string AlreadyRegisteredInfo = "The email is registered so we can't fetch your AppId (without password).\n\nPlease login online to get your AppId and paste it above."; + public string SkipRegistrationInfo = "Skipping? No problem:\nEdit your server settings in the PhotonServerSettings file."; + public string RegisteredNewAccountInfo = "We created a (free) account and fetched you an AppId.\nWelcome. Your PUN project is setup."; + public string AppliedToSettingsInfo = "Your AppId is now applied to this project."; + public string SetupCompleteInfo = "Done!\nAll connection settings can be edited in the PhotonServerSettings now.\nHave a look."; + public string CloseWindowButton = "Close"; + public string SkipButton = "Skip"; + public string SetupButton = "Setup Project"; + public string MobileExportNoteLabel = "Build for mobiles impossible. Get PUN+ or Unity Pro for mobile or use Unity 5."; + public string MobilePunPlusExportNoteLabel = "PUN+ available. Using native sockets for iOS/Android."; + public string CancelButton = "Cancel"; + public string PUNWizardLabel = "PUN Wizard"; + public string SettingsButton = "Settings"; + public string SetupServerCloudLabel = "Setup wizard for setting up your own server or the cloud."; + public string WarningPhotonDisconnect = ""; + public string ConverterLabel = "Converter"; + public string StartButton = "Start"; + public string UNtoPUNLabel = "Converts pure Unity Networking to Photon Unity Networking."; + public string LocateSettingsButton = "Locate PhotonServerSettings"; + public string SettingsHighlightLabel = "Highlights the used photon settings file in the project."; + public string DocumentationLabel = "Documentation"; + public string OpenPDFText = "Reference PDF"; + public string OpenPDFTooltip = "Opens the local documentation pdf."; + public string OpenDevNetText = "DevNet / Manual"; + public string OpenDevNetTooltip = "Online documentation for Photon."; + public string OpenCloudDashboardText = "Cloud Dashboard Login"; + public string OpenCloudDashboardTooltip = "Review Cloud App information and statistics."; + public string OpenForumText = "Open Forum"; + public string OpenForumTooltip = "Online support for Photon."; + public string OkButton = "Ok"; + public string OwnHostCloudCompareLabel = "I am not quite sure how 'my own host' compares to 'cloud'."; + public string ComparisonPageButton = "Cloud versus OnPremise"; + public string ConnectionTitle = "Connecting"; + public string ConnectionInfo = "Connecting to the account service..."; + public string ErrorTextTitle = "Error"; + public string IncorrectRPCListTitle = "Warning: RPC-list becoming incompatible!"; + public string IncorrectRPCListLabel = "Your project's RPC-list is full, so we can't add some RPCs just compiled.\n\nBy removing outdated RPCs, the list will be long enough but incompatible with older client builds!\n\nMake sure you change the game version where you use PhotonNetwork.ConnectUsingSettings()."; + public string RemoveOutdatedRPCsLabel = "Remove outdated RPCs"; + public string FullRPCListTitle = "Warning: RPC-list is full!"; + public string FullRPCListLabel = "Your project's RPC-list is too long for PUN.\n\nYou can change PUN's source to use short-typed RPC index. Look for comments 'LIMITS RPC COUNT'\n\nAlternatively, remove some RPC methods (use more parameters per RPC maybe).\n\nAfter a RPC-list refresh, make sure you change the game version where you use PhotonNetwork.ConnectUsingSettings()."; + public string SkipRPCListUpdateLabel = "Skip RPC-list update"; + public string PUNNameReplaceTitle = "Warning: RPC-list Compatibility"; + public string PUNNameReplaceLabel = "PUN replaces RPC names with numbers by using the RPC-list. All clients must use the same list for that.\n\nClearing it most likely makes your client incompatible with previous versions! Change your game version or make sure the RPC-list matches other clients."; + public string RPCListCleared = "Clear RPC-list"; + public string ServerSettingsCleanedWarning = "Cleared the PhotonServerSettings.RpcList! This makes new builds incompatible with older ones. Better change game version in PhotonNetwork.ConnectUsingSettings()."; + public string RpcFoundMessage = "Some code uses the obsolete RPC attribute. PUN now requires the PunRPC attribute to mark remote-callable methods.\nThe Editor can search and replace that code which will modify your source."; + public string RpcFoundDialogTitle = "RPC Attribute Outdated"; + public string RpcReplaceButton = "Replace. I got a backup."; + public string RpcSkipReplace = "Not now."; + public string WizardMainWindowInfo = "This window should help you find important settings for PUN, as well as documentation."; +} + + +[InitializeOnLoad] +public class PhotonEditor : EditorWindow +{ + protected static Type WindowType = typeof (PhotonEditor); + + protected Vector2 scrollPos = Vector2.zero; + + private readonly Vector2 preferredSize = new Vector2(350, 400); + + private static Texture2D BackgroundImage; + + public static PunWizardText CurrentLang = new PunWizardText(); + + + protected static AccountService.Origin RegisterOrigin = AccountService.Origin.Pun; + + protected static string DocumentationLocation = "Assets/Photon Unity Networking/PhotonNetwork-Documentation.pdf"; + + protected static string UrlFreeLicense = "https://www.photonengine.com/dashboard/OnPremise"; + + protected static string UrlDevNet = "http://doc.photonengine.com/en/pun/current"; + + protected static string UrlForum = "http://forum.exitgames.com"; + + protected static string UrlCompare = "http://doc.photonengine.com/en/realtime/current/getting-started/onpremise-or-saas"; + + protected static string UrlHowToSetup = "http://doc.photonengine.com/en/onpremise/current/getting-started/photon-server-in-5min"; + + protected static string UrlAppIDExplained = "http://doc.photonengine.com/en/realtime/current/getting-started/obtain-your-app-id"; + + protected static string UrlAccountPage = "https://www.photonengine.com/Account/SignIn?email="; // opened in browser + + protected static string UrlCloudDashboard = "https://www.photonengine.com/dashboard?email="; + + + private enum PhotonSetupStates + { + MainUi, + + RegisterForPhotonCloud, + + EmailAlreadyRegistered, + + GoEditPhotonServerSettings + } + + private bool isSetupWizard = false; + + private PhotonSetupStates photonSetupState = PhotonSetupStates.RegisterForPhotonCloud; + + + private bool minimumInput = false; + private bool useMail = false; + private bool useAppId = false; + private bool useSkip = false; + private bool highlightedSettings = false; + private bool close = false; + private string mailOrAppId = string.Empty; + + + private static double lastWarning = 0; + private static bool postCompileActionsDone; + + private static bool isPunPlus; + private static bool androidLibExists; + private static bool iphoneLibExists; + + + // setup once on load + static PhotonEditor() + { + EditorApplication.projectWindowChanged += EditorUpdate; + EditorApplication.hierarchyWindowChanged += EditorUpdate; + EditorApplication.playmodeStateChanged += PlaymodeStateChanged; + EditorApplication.update += OnUpdate; + + // detect optional packages + PhotonEditor.CheckPunPlus(); + } + + // setup per window + public PhotonEditor() + { + minSize = this.preferredSize; + } + + [MenuItem("Window/Photon Unity Networking/PUN Wizard &p", false, 0)] + protected static void MenuItemOpenWizard() + { + PhotonEditor win = GetWindow(WindowType, false, CurrentLang.WindowTitle, true) as PhotonEditor; + win.photonSetupState = PhotonSetupStates.MainUi; + win.isSetupWizard = false; + } + + [MenuItem("Window/Photon Unity Networking/Highlight Server Settings %#&p", false, 1)] + protected static void MenuItemHighlightSettings() + { + HighlightSettings(); + } + + /// Creates an Editor window, showing the cloud-registration wizard for Photon (entry point to setup PUN). + protected static void ShowRegistrationWizard() + { + PhotonEditor win = GetWindow(WindowType, false, CurrentLang.WindowTitle, true) as PhotonEditor; + win.photonSetupState = PhotonSetupStates.RegisterForPhotonCloud; + win.isSetupWizard = true; + } + + + // called 100 times / sec + private static void OnUpdate() + { + // after a compile, check RPCs to create a cache-list + if (!postCompileActionsDone && !EditorApplication.isCompiling && !EditorApplication.isPlayingOrWillChangePlaymode && PhotonNetwork.PhotonServerSettings != null) + { + #if UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_5 || UNITY_5_0 + if (EditorApplication.isUpdating) + { + return; + } + #endif + + PhotonEditor.UpdateRpcList(); + postCompileActionsDone = true; // on compile, this falls back to false (without actively doing anything) + + #if UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_5 || UNITY_5_0 + PhotonEditor.ImportWin8Support(); + #endif + } + } + + + // called in editor, opens wizard for initial setup, keeps scene PhotonViews up to date and closes connections when compiling (to avoid issues) + private static void EditorUpdate() + { + if (PhotonNetwork.PhotonServerSettings == null) + { + PhotonNetwork.CreateSettings(); + } + if (PhotonNetwork.PhotonServerSettings == null) + { + return; + } + + // serverSetting is null when the file gets deleted. otherwise, the wizard should only run once and only if hosting option is not (yet) set + if (!PhotonNetwork.PhotonServerSettings.DisableAutoOpenWizard && PhotonNetwork.PhotonServerSettings.HostType == ServerSettings.HostingOption.NotSet) + { + ShowRegistrationWizard(); + PhotonNetwork.PhotonServerSettings.DisableAutoOpenWizard = true; + PhotonEditor.SaveSettings(); + } + + // Workaround for TCP crash. Plus this surpresses any other recompile errors. + if (EditorApplication.isCompiling) + { + if (PhotonNetwork.connected) + { + if (lastWarning > EditorApplication.timeSinceStartup - 3) + { + // Prevent error spam + Debug.LogWarning(CurrentLang.WarningPhotonDisconnect); + lastWarning = EditorApplication.timeSinceStartup; + } + + PhotonNetwork.Disconnect(); + } + } + } + + + // called in editor on change of play-mode (used to show a message popup that connection settings are incomplete) + private static void PlaymodeStateChanged() + { + if (EditorApplication.isPlaying || !EditorApplication.isPlayingOrWillChangePlaymode) + { + return; + } + + if (PhotonNetwork.PhotonServerSettings.HostType == ServerSettings.HostingOption.NotSet) + { + EditorUtility.DisplayDialog(CurrentLang.SetupWizardWarningTitle, CurrentLang.SetupWizardWarningMessage, CurrentLang.OkButton); + } + } + + + #region GUI and Wizard + + // Window Update() callback. On-demand, when Window is open + protected void Update() + { + if (this.close) + { + Close(); + } + } + + protected virtual void OnGUI() + { + if (BackgroundImage == null) + { + BackgroundImage = AssetDatabase.LoadAssetAtPath("Assets/Photon Unity Networking/Editor/PhotonNetwork/background.jpg", typeof(Texture2D)) as Texture2D; + } + + PhotonSetupStates oldGuiState = this.photonSetupState; // used to fix an annoying Editor input field issue: wont refresh until focus is changed. + + GUI.SetNextControlName(""); + this.scrollPos = GUILayout.BeginScrollView(this.scrollPos); + + + if (this.photonSetupState == PhotonSetupStates.MainUi) + { + UiMainWizard(); + } + else + { + UiSetupApp(); + } + + + GUILayout.EndScrollView(); + + if (oldGuiState != this.photonSetupState) + { + GUI.FocusControl(""); + } + } + + + protected virtual void UiSetupApp() + { + GUI.skin.label.wordWrap = true; + if (!this.isSetupWizard) + { + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(CurrentLang.MainMenuButton, GUILayout.ExpandWidth(false))) + { + this.photonSetupState = PhotonSetupStates.MainUi; + } + + GUILayout.EndHorizontal(); + } + + + // setup header + UiTitleBox(CurrentLang.SetupWizardTitle, BackgroundImage); + + // setup info text + GUI.skin.label.richText = true; + GUILayout.Label(CurrentLang.SetupWizardInfo); + + // input of appid or mail + EditorGUILayout.Separator(); + GUILayout.Label(CurrentLang.EmailOrAppIdLabel); + this.mailOrAppId = EditorGUILayout.TextField(this.mailOrAppId).Trim(); // note: we trim all input + + if (this.mailOrAppId.Contains("@")) + { + // this should be a mail address + this.minimumInput = (this.mailOrAppId.Length >= 5 && this.mailOrAppId.Contains(".")); + this.useMail = this.minimumInput; + this.useAppId = false; + } + else + { + // this should be an appId + this.minimumInput = ServerSettings.IsAppId(this.mailOrAppId); + this.useMail = false; + this.useAppId = this.minimumInput; + } + + // button to skip setup + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(CurrentLang.SkipButton, GUILayout.Width(100))) + { + this.photonSetupState = PhotonSetupStates.GoEditPhotonServerSettings; + this.useSkip = true; + this.useMail = false; + this.useAppId = false; + } + + // SETUP button + EditorGUI.BeginDisabledGroup(!this.minimumInput); + if (GUILayout.Button(CurrentLang.SetupButton, GUILayout.Width(100))) + { + this.useSkip = false; + GUIUtility.keyboardControl = 0; + if (this.useMail) + { + RegisterWithEmail(this.mailOrAppId); // sets state + } + if (this.useAppId) + { + this.photonSetupState = PhotonSetupStates.GoEditPhotonServerSettings; + Undo.RecordObject(PhotonNetwork.PhotonServerSettings, "Update PhotonServerSettings for PUN"); + PhotonNetwork.PhotonServerSettings.UseCloud(this.mailOrAppId); + PhotonEditor.SaveSettings(); + } + } + EditorGUI.EndDisabledGroup(); + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + + + // existing account needs to fetch AppId online + if (this.photonSetupState == PhotonSetupStates.EmailAlreadyRegistered) + { + // button to open dashboard and get the AppId + GUILayout.Space(15); + GUILayout.Label(CurrentLang.AlreadyRegisteredInfo); + + + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(new GUIContent(CurrentLang.OpenCloudDashboardText, CurrentLang.OpenCloudDashboardTooltip), GUILayout.Width(205))) + { + Application.OpenURL(UrlCloudDashboard + Uri.EscapeUriString(this.mailOrAppId)); + this.mailOrAppId = ""; + } + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + } + + + if (this.photonSetupState == PhotonSetupStates.GoEditPhotonServerSettings) + { + if (!this.highlightedSettings) + { + this.highlightedSettings = true; + HighlightSettings(); + } + + GUILayout.Space(15); + if (this.useSkip) + { + GUILayout.Label(CurrentLang.SkipRegistrationInfo); + } + else if (this.useMail) + { + GUILayout.Label(CurrentLang.RegisteredNewAccountInfo); + } + else if (this.useAppId) + { + GUILayout.Label(CurrentLang.AppliedToSettingsInfo); + } + + + // setup-complete info + GUILayout.Space(15); + GUILayout.Label(CurrentLang.SetupCompleteInfo); + + + // close window (done) + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(CurrentLang.CloseWindowButton, GUILayout.Width(205))) + { + this.close = true; + } + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + } + GUI.skin.label.richText = false; + } + + private void UiTitleBox(string title, Texture2D bgIcon) + { + GUIStyle bgStyle = new GUIStyle(GUI.skin.GetStyle("Label")); + bgStyle.normal.background = bgIcon; + bgStyle.fontSize = 22; + bgStyle.fontStyle = FontStyle.Bold; + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + Rect scale = GUILayoutUtility.GetLastRect(); + scale.height = 30; + + GUI.Label(scale, title, bgStyle); + GUILayout.Space(scale.height+5); + } + + protected virtual void UiMainWizard() + { + GUILayout.Space(15); + + // title + UiTitleBox(CurrentLang.PUNWizardLabel, BackgroundImage); + + // wizard info text + GUILayout.Label(CurrentLang.WizardMainWindowInfo); + GUILayout.Space(15); + + + // pun+ info + if (isPunPlus) + { + GUILayout.Label(CurrentLang.MobilePunPlusExportNoteLabel); + GUILayout.Space(15); + } +#if !(UNITY_5_0 || UNITY_5) + else if (!InternalEditorUtility.HasAdvancedLicenseOnBuildTarget(BuildTarget.Android) || !InternalEditorUtility.HasAdvancedLicenseOnBuildTarget(BuildTarget.iPhone)) + { + GUILayout.Label(CurrentLang.MobileExportNoteLabel); + GUILayout.Space(15); + } +#endif + + // settings button + GUILayout.BeginHorizontal(); + GUILayout.Label(CurrentLang.SettingsButton, EditorStyles.boldLabel, GUILayout.Width(100)); + GUILayout.BeginVertical(); + if (GUILayout.Button(new GUIContent(CurrentLang.LocateSettingsButton, CurrentLang.SettingsHighlightLabel))) + { + HighlightSettings(); + } + if (GUILayout.Button(new GUIContent(CurrentLang.OpenCloudDashboardText, CurrentLang.OpenCloudDashboardTooltip))) + { + Application.OpenURL(UrlCloudDashboard + Uri.EscapeUriString(this.mailOrAppId)); + } + if (GUILayout.Button(new GUIContent(CurrentLang.SetupButton, CurrentLang.SetupServerCloudLabel))) + { + this.photonSetupState = PhotonSetupStates.RegisterForPhotonCloud; + } + GUILayout.EndVertical(); + GUILayout.EndHorizontal(); + GUILayout.Space(15); + + + // converter + GUILayout.BeginHorizontal(); + GUILayout.Label(CurrentLang.ConverterLabel, EditorStyles.boldLabel, GUILayout.Width(100)); + if (GUILayout.Button(new GUIContent(CurrentLang.StartButton, CurrentLang.UNtoPUNLabel))) + { + PhotonConverter.RunConversion(); + } + + GUILayout.EndHorizontal(); + EditorGUILayout.Separator(); + + + // documentation + GUILayout.BeginHorizontal(); + GUILayout.Label(CurrentLang.DocumentationLabel, EditorStyles.boldLabel, GUILayout.Width(100)); + GUILayout.BeginVertical(); + if (GUILayout.Button(new GUIContent(CurrentLang.OpenPDFText, CurrentLang.OpenPDFTooltip))) + { + EditorUtility.OpenWithDefaultApp(DocumentationLocation); + } + + if (GUILayout.Button(new GUIContent(CurrentLang.OpenDevNetText, CurrentLang.OpenDevNetTooltip))) + { + Application.OpenURL(UrlDevNet); + } + + GUI.skin.label.wordWrap = true; + GUILayout.Label(CurrentLang.OwnHostCloudCompareLabel); + if (GUILayout.Button(CurrentLang.ComparisonPageButton)) + { + Application.OpenURL(UrlCompare); + } + + + if (GUILayout.Button(new GUIContent(CurrentLang.OpenForumText, CurrentLang.OpenForumTooltip))) + { + Application.OpenURL(UrlForum); + } + + GUILayout.EndVertical(); + GUILayout.EndHorizontal(); + } + + #endregion + + + protected virtual void RegisterWithEmail(string email) + { + EditorUtility.DisplayProgressBar(CurrentLang.ConnectionTitle, CurrentLang.ConnectionInfo, 0.5f); + + string accountServiceType = string.Empty; + #if PHOTON_VOICE + accountServiceType = "voice"; + #endif + + AccountService client = new AccountService(); + client.RegisterByEmail(email, RegisterOrigin, accountServiceType); // this is the synchronous variant using the static RegisterOrigin. "result" is in the client + + EditorUtility.ClearProgressBar(); + if (client.ReturnCode == 0) + { + this.mailOrAppId = client.AppId; + PhotonNetwork.PhotonServerSettings.UseCloud(this.mailOrAppId, 0); + #if PHOTON_VOICE + PhotonNetwork.PhotonServerSettings.VoiceAppID = client.AppId2; + #endif + PhotonEditor.SaveSettings(); + + this.photonSetupState = PhotonSetupStates.GoEditPhotonServerSettings; + } + else + { + PhotonNetwork.PhotonServerSettings.HostType = ServerSettings.HostingOption.PhotonCloud; + PhotonEditor.SaveSettings(); + + Debug.LogWarning(client.Message + " ReturnCode: " + client.ReturnCode); + if (client.Message.Contains("registered")) + { + this.photonSetupState = PhotonSetupStates.EmailAlreadyRegistered; + } + else + { + EditorUtility.DisplayDialog(CurrentLang.ErrorTextTitle, client.Message, CurrentLang.OkButton); + this.photonSetupState = PhotonSetupStates.RegisterForPhotonCloud; + } + } + } + + + protected internal static bool CheckPunPlus() + { + androidLibExists = File.Exists("Assets/Plugins/Android/armeabi-v7a/libPhotonSocketPlugin.so") && + File.Exists("Assets/Plugins/Android/x86/libPhotonSocketPlugin.so"); + + + iphoneLibExists = File.Exists("Assets/Plugins/IOS/libPhotonSocketPlugin.a"); + + isPunPlus = androidLibExists || iphoneLibExists; + return isPunPlus; + } + + + private static void ImportWin8Support() + { + if (EditorApplication.isCompiling || EditorApplication.isPlayingOrWillChangePlaymode) + { + return; // don't import while compiling + } + + #if UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_5 || UNITY_5_0 + const string win8Package = "Assets/Plugins/Photon3Unity3D-Win8.unitypackage"; + + bool win8LibsExist = File.Exists("Assets/Plugins/WP8/Photon3Unity3D.dll") && File.Exists("Assets/Plugins/Metro/Photon3Unity3D.dll"); + if (!win8LibsExist && File.Exists(win8Package)) + { + AssetDatabase.ImportPackage(win8Package, false); + } + #endif + } + + + // Pings PhotonServerSettings and makes it selected (show in Inspector) + private static void HighlightSettings() + { + Selection.objects = new UnityEngine.Object[] { PhotonNetwork.PhotonServerSettings }; + EditorGUIUtility.PingObject(PhotonNetwork.PhotonServerSettings); + } + + + // Marks settings object as dirty, so it gets saved. + // unity 5.3 changes the usecase for SetDirty(). but here we don't modify a scene object! so it's ok to use + private static void SaveSettings() + { + EditorUtility.SetDirty(PhotonNetwork.PhotonServerSettings); + } + + + #region RPC List Handling + + public static void UpdateRpcList() + { + List additionalRpcs = new List(); + HashSet currentRpcs = new HashSet(); + + var types = GetAllSubTypesInScripts(typeof(MonoBehaviour)); + + int countOldRpcs = 0; + foreach (var mono in types) + { + MethodInfo[] methods = mono.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); + + foreach (MethodInfo method in methods) + { + bool isOldRpc = false; + #pragma warning disable 618 + // we let the Editor check for outdated RPC attributes in code. that should not cause a compile warning + if (method.IsDefined(typeof (RPC), false)) + { + countOldRpcs++; + isOldRpc = true; + } + #pragma warning restore 618 + + if (isOldRpc || method.IsDefined(typeof(PunRPC), false)) + { + currentRpcs.Add(method.Name); + + if (!additionalRpcs.Contains(method.Name) && !PhotonNetwork.PhotonServerSettings.RpcList.Contains(method.Name)) + { + additionalRpcs.Add(method.Name); + } + } + } + } + + if (additionalRpcs.Count > 0) + { + // LIMITS RPC COUNT + if (additionalRpcs.Count + PhotonNetwork.PhotonServerSettings.RpcList.Count >= byte.MaxValue) + { + if (currentRpcs.Count <= byte.MaxValue) + { + bool clearList = EditorUtility.DisplayDialog(CurrentLang.IncorrectRPCListTitle, CurrentLang.IncorrectRPCListLabel, CurrentLang.RemoveOutdatedRPCsLabel, CurrentLang.CancelButton); + if (clearList) + { + PhotonNetwork.PhotonServerSettings.RpcList.Clear(); + PhotonNetwork.PhotonServerSettings.RpcList.AddRange(currentRpcs); + } + else + { + return; + } + } + else + { + EditorUtility.DisplayDialog(CurrentLang.FullRPCListTitle, CurrentLang.FullRPCListLabel, CurrentLang.SkipRPCListUpdateLabel); + return; + } + } + + additionalRpcs.Sort(); + Undo.RecordObject(PhotonNetwork.PhotonServerSettings, "Update PUN RPC-list"); + PhotonNetwork.PhotonServerSettings.RpcList.AddRange(additionalRpcs); + PhotonEditor.SaveSettings(); + } + + if (countOldRpcs > 0) + { + bool convertRPCs = EditorUtility.DisplayDialog(CurrentLang.RpcFoundDialogTitle, CurrentLang.RpcFoundMessage, CurrentLang.RpcReplaceButton, CurrentLang.RpcSkipReplace); + if (convertRPCs) + { + PhotonConverter.ConvertRpcAttribute(""); + } + } + } + + public static void ClearRpcList() + { + bool clearList = EditorUtility.DisplayDialog(CurrentLang.PUNNameReplaceTitle, CurrentLang.PUNNameReplaceLabel, CurrentLang.RPCListCleared, CurrentLang.CancelButton); + if (clearList) + { + PhotonNetwork.PhotonServerSettings.RpcList.Clear(); + Debug.LogWarning(CurrentLang.ServerSettingsCleanedWarning); + } + } + + public static System.Type[] GetAllSubTypesInScripts(System.Type aBaseClass) + { + var result = new System.Collections.Generic.List(); + System.Reflection.Assembly[] AS = System.AppDomain.CurrentDomain.GetAssemblies(); + foreach (var A in AS) + { + // this skips all but the Unity-scripted assemblies for RPC-list creation. You could remove this to search all assemblies in project + if (!A.FullName.StartsWith("Assembly-")) + { + // Debug.Log("Skipping Assembly: " + A); + continue; + } + + //Debug.Log("Assembly: " + A.FullName); + System.Type[] types = A.GetTypes(); + foreach (var T in types) + { + if (T.IsSubclassOf(aBaseClass)) + { + result.Add(T); + } + } + } + return result.ToArray(); + } + + #endregion + +} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonEditor.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonEditor.cs.meta new file mode 100644 index 0000000..beda65a --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dabbbed2a74eac44dac281f20d706ba8 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonGUI.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonGUI.cs new file mode 100644 index 0000000..e57b7b2 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonGUI.cs @@ -0,0 +1,280 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; +using Rotorz.ReorderableList.Internal; + +public class PhotonGUI +{ + #region Styles + static GUIStyle m_DefaultTitleStyle; + public static GUIStyle DefaultTitleStyle + { + get + { + if( m_DefaultTitleStyle == null ) + { + m_DefaultTitleStyle = new GUIStyle(); + m_DefaultTitleStyle.border = new RectOffset( 2, 2, 2, 1 ); + m_DefaultTitleStyle.margin = new RectOffset( 5, 5, 5, 0 ); + m_DefaultTitleStyle.padding = new RectOffset( 5, 5, 0, 0 ); + m_DefaultTitleStyle.alignment = TextAnchor.MiddleLeft; + m_DefaultTitleStyle.normal.background = ReorderableListResources.texTitleBackground; + m_DefaultTitleStyle.normal.textColor = EditorGUIUtility.isProSkin + ? new Color( 0.8f, 0.8f, 0.8f ) + : new Color( 0.2f, 0.2f, 0.2f ); + } + + return m_DefaultTitleStyle; + } + } + + static GUIStyle m_DefaultContainerStyle; + public static GUIStyle DefaultContainerStyle + { + get + { + if( m_DefaultContainerStyle == null ) + { + m_DefaultContainerStyle = new GUIStyle(); + m_DefaultContainerStyle.border = new RectOffset( 2, 2, 1, 2 ); + m_DefaultContainerStyle.margin = new RectOffset( 5, 5, 5, 5 ); + m_DefaultContainerStyle.padding = new RectOffset( 1, 1, 2, 2 ); + m_DefaultContainerStyle.normal.background = ReorderableListResources.texContainerBackground; + } + + return m_DefaultContainerStyle; + } + } + + static GUIStyle m_DefaultAddButtonStyle; + public static GUIStyle DefaultAddButtonStyle + { + get + { + if( m_DefaultAddButtonStyle == null ) + { + m_DefaultAddButtonStyle = new GUIStyle(); + m_DefaultAddButtonStyle.fixedWidth = 30; + m_DefaultAddButtonStyle.fixedHeight = 16; + m_DefaultAddButtonStyle.normal.background = ReorderableListResources.texAddButton; + m_DefaultAddButtonStyle.active.background = ReorderableListResources.texAddButtonActive; + } + + return m_DefaultAddButtonStyle; + } + } + + static GUIStyle m_DefaultRemoveButtonStyle; + public static GUIStyle DefaultRemoveButtonStyle + { + get + { + if( m_DefaultRemoveButtonStyle == null ) + { + m_DefaultRemoveButtonStyle = new GUIStyle(); + m_DefaultRemoveButtonStyle.fixedWidth = 30; + m_DefaultRemoveButtonStyle.fixedHeight = 20; + m_DefaultRemoveButtonStyle.active.background = ReorderableListResources.CreatePixelTexture( "Dark Pixel (List GUI)", new Color32( 18, 18, 18, 255 ) ); + m_DefaultRemoveButtonStyle.imagePosition = ImagePosition.ImageOnly; + m_DefaultRemoveButtonStyle.alignment = TextAnchor.MiddleCenter; + } + + return m_DefaultRemoveButtonStyle; + } + } + + static GUIStyle m_DefaultContainerRowStyle; + public static GUIStyle DefaultContainerRowStyle + { + get + { + if( m_DefaultContainerRowStyle == null ) + { + m_DefaultContainerRowStyle = new GUIStyle(); + m_DefaultContainerRowStyle.border = new RectOffset( 2, 2, 2, 2 ); + + m_DefaultContainerRowStyle.margin = new RectOffset( 5, 5, 5, 5 ); + m_DefaultContainerRowStyle.padding = new RectOffset( 1, 1, 2, 2 ); + m_DefaultContainerRowStyle.normal.background = ReorderableListResources.texContainerBackground; + } + + return m_DefaultContainerRowStyle; + } + } + + static GUIStyle m_FoldoutBold; + public static GUIStyle FoldoutBold + { + get + { + if( m_FoldoutBold == null ) + { + m_FoldoutBold = new GUIStyle( EditorStyles.foldout ); + m_FoldoutBold.fontStyle = FontStyle.Bold; + } + + return m_FoldoutBold; + } + } + + static GUIStyle m_RichLabel; + public static GUIStyle RichLabel + { + get + { + if( m_RichLabel == null ) + { + m_RichLabel = new GUIStyle( GUI.skin.label ); + m_RichLabel.richText = true; + m_RichLabel.wordWrap = true; + } + + return m_RichLabel; + } + } + #endregion + + static Texture2D m_HelpIcon; + public static Texture2D HelpIcon + { + get + { + if( m_HelpIcon == null ) + { + m_HelpIcon = AssetDatabase.LoadAssetAtPath( "Assets/Photon Unity Networking/Editor/PhotonNetwork/help.png", typeof( Texture2D ) ) as Texture2D; + } + + return m_HelpIcon; + } + } + + #region Interface + public static void ContainerHeader( string headline ) + { + DoContainerHeader( headline, 27, 0 ); + } + + public static bool ContainerHeaderToggle( string headline, bool toggle ) + { + return DoContainerHeaderToggle( headline, toggle ); + } + + public static bool ContainerHeaderFoldout( string headline, bool foldout ) + { + return DoContainerHeaderFoldout( headline, foldout ); + } + + public static Rect ContainerBody( float height ) + { + return DoContainerBody( height ); + } + + public static bool AddButton() + { + Rect controlRect = EditorGUILayout.GetControlRect( false, DefaultAddButtonStyle.fixedHeight - 5 ); + controlRect.yMin -= 5; + controlRect.yMax -= 5; + + Rect addButtonRect = new Rect( controlRect.xMax - DefaultAddButtonStyle.fixedWidth, + controlRect.yMin, + DefaultAddButtonStyle.fixedWidth, + DefaultAddButtonStyle.fixedHeight ); + + return GUI.Button( addButtonRect, "", DefaultAddButtonStyle ); + } + + public static void DrawSplitter( Rect position ) + { + ReorderableListResources.DrawTexture( position, ReorderableListResources.texItemSplitter ); + } + + public static void DrawGizmoOptions( + Rect position, + string label, + SerializedProperty gizmoEnabledProperty, + SerializedProperty gizmoColorProperty, + SerializedProperty gizmoTypeProperty, + SerializedProperty gizmoSizeProperty ) + { + float height = EditorGUIUtility.singleLineHeight; + float flexibleWidth = Mathf.Max( 40, position.width - EditorGUIUtility.labelWidth - 20 - 75 - 5 - 40 - 5 ); + + Rect labelRect = new Rect( position.xMin, position.yMin, EditorGUIUtility.labelWidth, height ); + GUI.Label( labelRect, label ); + + Rect enabledRect = new Rect( labelRect.xMax, labelRect.yMin, 20, height ); + EditorGUI.PropertyField( enabledRect, gizmoEnabledProperty, GUIContent.none ); + + bool oldGUIEnabled = GUI.enabled; + GUI.enabled = gizmoEnabledProperty.boolValue; + + Rect colorRect = new Rect( enabledRect.xMax + 5, labelRect.yMin, 70, height ); + EditorGUI.PropertyField( colorRect, gizmoColorProperty, GUIContent.none ); + + Rect typeRect = new Rect( colorRect.xMax + 5, labelRect.yMin, flexibleWidth * 0.7f, height ); + EditorGUI.PropertyField( typeRect, gizmoTypeProperty, GUIContent.none ); + + Rect sizeLabelRect = new Rect( typeRect.xMax + 10, labelRect.yMin, 30, height ); + GUI.Label( sizeLabelRect, "Size" ); + + Rect sizeRect = new Rect( sizeLabelRect.xMax + 5, labelRect.yMin, flexibleWidth * 0.3f, height ); + EditorGUI.PropertyField( sizeRect, gizmoSizeProperty, GUIContent.none ); + + GUI.enabled = oldGUIEnabled; + } + + #endregion + + #region Implementation + static Rect DoContainerBody( float height ) + { + Rect controlRect = EditorGUILayout.GetControlRect( false, height ); + controlRect.yMin -= 3; + controlRect.yMax -= 2; + + int controlID = GUIUtility.GetControlID( FocusType.Passive, controlRect ); + + if( Event.current.type == EventType.Repaint ) + { + PhotonGUI.DefaultContainerStyle.Draw( controlRect, GUIContent.none, controlID ); + } + + return controlRect; + } + + static bool DoContainerHeaderToggle( string headline, bool toggle ) + { + Rect rect = DoContainerHeader( headline, 27, 15 ); + Rect toggleRect = new Rect( rect.xMin + 5, rect.yMin + 5, EditorGUIUtility.labelWidth, rect.height ); + + return EditorGUI.Toggle( toggleRect, toggle ); + } + + + static bool DoContainerHeaderFoldout( string headline, bool foldout ) + { + Rect rect = DoContainerHeader( "", 27, 0f ); + Rect foldoutRect = new Rect( rect.xMin + 15, rect.yMin + 5, rect.width, rect.height ); + + return EditorGUI.Foldout( foldoutRect, foldout, headline, FoldoutBold ); + } + + static Rect DoContainerHeader( string headline, float height, float contentOffset ) + { + GUILayout.Space( 5 ); + Rect controlRect = EditorGUILayout.GetControlRect( false, height ); + + int controlID = GUIUtility.GetControlID( FocusType.Passive, controlRect ); + + if( Event.current.type == EventType.Repaint ) + { + PhotonGUI.DefaultTitleStyle.Draw( controlRect, GUIContent.none, controlID ); + + Rect labelRect = new Rect( controlRect.xMin + 5 + contentOffset, controlRect.yMin + 5, controlRect.width, controlRect.height ); + GUI.Label( labelRect, headline, EditorStyles.boldLabel ); + } + + return controlRect; + } + #endregion +} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonGUI.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonGUI.cs.meta new file mode 100644 index 0000000..247a4eb --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonGUI.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d2cadb1ccf05074e8ce96b1393846cf +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewHandler.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewHandler.cs new file mode 100644 index 0000000..f1eb1ef --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewHandler.cs @@ -0,0 +1,194 @@ +#if UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 +#define UNITY_MIN_5_3 +#endif + +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using UnityEditor; +using UnityEngine; +using System.Collections; +using Debug = UnityEngine.Debug; +using UnityEditor.SceneManagement; + +[InitializeOnLoad] +public class PhotonViewHandler : EditorWindow +{ + private static bool CheckSceneForStuckHandlers = true; + + static PhotonViewHandler() + { + // hierarchyWindowChanged is called on hierarchy changed and on save. It's even called when hierarchy-window is closed and if a prefab with instances is changed. + // this is not called when you edit a instance's value but: on save + EditorApplication.hierarchyWindowChanged += HierarchyChange; + } + + // this method corrects the IDs for photonviews in the scene and in prefabs + // make sure prefabs always use viewID 0 + // make sure instances never use a owner + // this is a editor class that should only run if not playing + internal static void HierarchyChange() + { + if (Application.isPlaying) + { + //Debug.Log("HierarchyChange ignored, while running."); + CheckSceneForStuckHandlers = true; // done once AFTER play mode. + return; + } + + if (CheckSceneForStuckHandlers) + { + CheckSceneForStuckHandlers = false; + PhotonNetwork.InternalCleanPhotonMonoFromSceneIfStuck(); + } + + HashSet pvInstances = new HashSet(); + HashSet usedInstanceViewNumbers = new HashSet(); + bool fixedSomeId = false; + + //// the following code would be an option if we only checked scene objects (but we can check all PVs) + //PhotonView[] pvObjects = GameObject.FindSceneObjectsOfType(typeof(PhotonView)) as PhotonView[]; + //Debug.Log("HierarchyChange. PV Count: " + pvObjects.Length); + + string levelName = SceneManagerHelper.ActiveSceneName; + #if UNITY_EDITOR + levelName = SceneManagerHelper.EditorActiveSceneName; + #endif + int minViewIdInThisScene = PunSceneSettings.MinViewIdForScene(levelName); + //Debug.Log("Level '" + Application.loadedLevelName + "' has a minimum ViewId of: " + minViewIdInThisScene); + + PhotonView[] pvObjects = Resources.FindObjectsOfTypeAll(typeof(PhotonView)) as PhotonView[]; + + foreach (PhotonView view in pvObjects) + { + // first pass: fix prefabs to viewID 0 if they got a view number assigned (cause they should not have one!) + if (EditorUtility.IsPersistent(view.gameObject)) + { + if (view.viewID != 0 || view.prefixBackup != -1 || view.instantiationId != -1) + { + Debug.LogWarning("PhotonView on persistent object being fixed (id and prefix must be 0). Was: " + view); + view.viewID = 0; + view.prefixBackup = -1; + view.instantiationId = -1; + EditorUtility.SetDirty(view); // even in Unity 5.3+ it's OK to SetDirty() for non-scene objects. + fixedSomeId = true; + } + } + else + { + // keep all scene-instanced PVs for later re-check + pvInstances.Add(view); + } + } + + Dictionary idPerObject = new Dictionary(); + + // second pass: check all used-in-scene viewIDs for duplicate viewIDs (only checking anything non-prefab) + // scene-PVs must have user == 0 (scene/room) and a subId != 0 + foreach (PhotonView view in pvInstances) + { + if (view.ownerId > 0) + { + Debug.Log("Re-Setting Owner ID of: " + view); + } + view.ownerId = 0; // simply make sure no owner is set (cause room always uses 0) + view.prefix = -1; // TODO: prefix could be settable via inspector per scene?! + + if (view.viewID != 0) + { + if (view.viewID < minViewIdInThisScene || usedInstanceViewNumbers.Contains(view.viewID)) + { + view.viewID = 0; // avoid duplicates and negative values by assigning 0 as (temporary) number to be fixed in next pass + } + else + { + usedInstanceViewNumbers.Add(view.viewID); // builds a list of currently used viewIDs + + int instId = 0; + if (idPerObject.TryGetValue(view.gameObject, out instId)) + { + view.instantiationId = instId; + } + else + { + view.instantiationId = view.viewID; + idPerObject[view.gameObject] = view.instantiationId; + } + } + } + + } + + // third pass: anything that's now 0 must get a new (not yet used) ID (starting at 0) + int lastUsedId = (minViewIdInThisScene > 0) ? minViewIdInThisScene - 1 : 0; + + foreach (PhotonView view in pvInstances) + { + if (view.viewID == 0) + { + Undo.RecordObject(view, "Automatic viewID change for: "+view.gameObject.name); + + // Debug.LogWarning("setting scene ID: " + view.gameObject.name + " ID: " + view.subId.ID + " scene ID: " + view.GetSceneID() + " IsPersistent: " + EditorUtility.IsPersistent(view.gameObject) + " IsSceneViewIDFree: " + IsSceneViewIDFree(view.subId.ID, view)); + int nextViewId = PhotonViewHandler.GetID(lastUsedId, usedInstanceViewNumbers); + + view.viewID = nextViewId; + + int instId = 0; + if (idPerObject.TryGetValue(view.gameObject, out instId)) + { + view.instantiationId = instId; + } + else + { + view.instantiationId = view.viewID; + idPerObject[view.gameObject] = nextViewId; + } + + lastUsedId = nextViewId; + fixedSomeId = true; + + #if !UNITY_MIN_5_3 + EditorUtility.SetDirty(view); + #endif + } + } + + + if (fixedSomeId) + { + //Debug.LogWarning("Some subId was adjusted."); // this log is only interesting for Exit Games + } + } + + // TODO fail if no ID was available anymore + // TODO look up lower numbers if offset hits max?! + public static int GetID(int idOffset, HashSet usedInstanceViewNumbers) + { + while (idOffset < PhotonNetwork.MAX_VIEW_IDS) + { + idOffset++; + if (!usedInstanceViewNumbers.Contains(idOffset)) + { + break; + } + } + + return idOffset; + } + + //TODO: check if this can be internal protected (as source in editor AND as dll) + public static void LoadAllScenesToFix() + { + string[] scenes = System.IO.Directory.GetFiles(".", "*.unity", SearchOption.AllDirectories); + + foreach (string scene in scenes) + { + EditorSceneManager.OpenScene(scene); + PhotonViewHandler.HierarchyChange();//NOTE: most likely on load also triggers a hierarchy change + EditorSceneManager.SaveOpenScenes(); + } + + Debug.Log("Corrected scene views where needed."); + } +} + diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewHandler.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewHandler.cs.meta new file mode 100644 index 0000000..74dfe3f --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewHandler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 57b538e62a0ca6248bfd354def935e57 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewInspector.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewInspector.cs new file mode 100644 index 0000000..7acafc2 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewInspector.cs @@ -0,0 +1,274 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2011 Exit Games GmbH +// +// +// Custom inspector for the PhotonView component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +#if UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 +#define UNITY_MIN_5_3 +#endif + + +using System; +using Rotorz.ReorderableList.Internal; +using UnityEditor; +using UnityEngine; + +[CustomEditor(typeof (PhotonView))] +public class PhotonViewInspector : Editor +{ + private PhotonView m_Target; + + public override void OnInspectorGUI() + { + this.m_Target = (PhotonView)target; + bool isProjectPrefab = EditorUtility.IsPersistent(this.m_Target.gameObject); + + if (this.m_Target.ObservedComponents == null) + { + this.m_Target.ObservedComponents = new System.Collections.Generic.List(); + } + + if (this.m_Target.ObservedComponents.Count == 0) + { + this.m_Target.ObservedComponents.Add(null); + } + + EditorGUILayout.BeginHorizontal(); + // Owner + if (isProjectPrefab) + { + EditorGUILayout.LabelField("Owner:", "Set at runtime"); + } + else if (!this.m_Target.isOwnerActive) + { + EditorGUILayout.LabelField("Owner", "Scene"); + } + else + { + PhotonPlayer owner = this.m_Target.owner; + string ownerInfo = (owner != null) ? owner.NickName : ""; + + if (string.IsNullOrEmpty(ownerInfo)) + { + ownerInfo = ""; + } + + EditorGUILayout.LabelField("Owner", "[" + this.m_Target.ownerId + "] " + ownerInfo); + } + + // ownership requests + EditorGUI.BeginDisabledGroup(Application.isPlaying); + OwnershipOption own = (OwnershipOption)EditorGUILayout.EnumPopup(this.m_Target.ownershipTransfer, GUILayout.Width(100)); + if (own != this.m_Target.ownershipTransfer) + { + // jf: fixed 5 and up prefab not accepting changes if you quit Unity straight after change. + // not touching the define nor the rest of the code to avoid bringing more problem than solving. + EditorUtility.SetDirty(this.m_Target); + + Undo.RecordObject(this.m_Target, "Change PhotonView Ownership Transfer"); + this.m_Target.ownershipTransfer = own; + } + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.EndHorizontal(); + + + // View ID + if (isProjectPrefab) + { + EditorGUILayout.LabelField("View ID", "Set at runtime"); + } + else if (EditorApplication.isPlaying) + { + EditorGUILayout.LabelField("View ID", this.m_Target.viewID.ToString()); + } + else + { + int idValue = EditorGUILayout.IntField("View ID [1.." + (PhotonNetwork.MAX_VIEW_IDS - 1) + "]", this.m_Target.viewID); + if (this.m_Target.viewID != idValue) + { + Undo.RecordObject(this.m_Target, "Change PhotonView viewID"); + this.m_Target.viewID = idValue; + } + } + + // Locally Controlled + if (EditorApplication.isPlaying) + { + string masterClientHint = PhotonNetwork.isMasterClient ? "(master)" : ""; + EditorGUILayout.Toggle("Controlled locally: " + masterClientHint, this.m_Target.isMine); + } + + // ViewSynchronization (reliability) + if (this.m_Target.synchronization == ViewSynchronization.Off) + { + GUI.color = Color.grey; + } + + EditorGUILayout.PropertyField(serializedObject.FindProperty("synchronization"), new GUIContent("Observe option:")); + + if (this.m_Target.synchronization != ViewSynchronization.Off && this.m_Target.ObservedComponents.FindAll(item => item != null).Count == 0) + { + GUILayout.BeginVertical(GUI.skin.box); + GUILayout.Label("Warning", EditorStyles.boldLabel); + GUILayout.Label("Setting the synchronization option only makes sense if you observe something."); + GUILayout.EndVertical(); + } + + DrawSpecificTypeSerializationOptions(); + + GUI.color = Color.white; + DrawObservedComponentsList(); + + // Cleanup: save and fix look + if (GUI.changed) + { + #if !UNITY_MIN_5_3 + EditorUtility.SetDirty(this.m_Target); + #endif + PhotonViewHandler.HierarchyChange(); // TODO: check if needed + } + + GUI.color = Color.white; + #if !UNITY_MIN_5_3 + EditorGUIUtility.LookLikeControls(); + #endif + } + + private void DrawSpecificTypeSerializationOptions() + { + if (this.m_Target.ObservedComponents.FindAll(item => item != null && item.GetType() == typeof (Transform)).Count > 0) + { + this.m_Target.onSerializeTransformOption = (OnSerializeTransform)EditorGUILayout.EnumPopup("Transform Serialization:", this.m_Target.onSerializeTransformOption); + } + else if (this.m_Target.ObservedComponents.FindAll(item => item != null && item.GetType() == typeof (Rigidbody)).Count > 0 || + this.m_Target.ObservedComponents.FindAll(item => item != null && item.GetType() == typeof (Rigidbody2D)).Count > 0) + { + this.m_Target.onSerializeRigidBodyOption = (OnSerializeRigidBody)EditorGUILayout.EnumPopup("Rigidbody Serialization:", this.m_Target.onSerializeRigidBodyOption); + } + } + + + private int GetObservedComponentsCount() + { + int count = 0; + + for (int i = 0; i < this.m_Target.ObservedComponents.Count; ++i) + { + if (this.m_Target.ObservedComponents[i] != null) + { + count++; + } + } + + return count; + } + + private void DrawObservedComponentsList() + { + GUILayout.Space(5); + SerializedProperty listProperty = serializedObject.FindProperty("ObservedComponents"); + + if (listProperty == null) + { + return; + } + + float containerElementHeight = 22; + float containerHeight = listProperty.arraySize*containerElementHeight; + + bool isOpen = PhotonGUI.ContainerHeaderFoldout("Observed Components (" + GetObservedComponentsCount() + ")", serializedObject.FindProperty("ObservedComponentsFoldoutOpen").boolValue); + serializedObject.FindProperty("ObservedComponentsFoldoutOpen").boolValue = isOpen; + + if (isOpen == false) + { + containerHeight = 0; + } + + //Texture2D statsIcon = AssetDatabase.LoadAssetAtPath( "Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewStats.png", typeof( Texture2D ) ) as Texture2D; + + Rect containerRect = PhotonGUI.ContainerBody(containerHeight); + bool wasObservedComponentsEmpty = this.m_Target.ObservedComponents.FindAll(item => item != null).Count == 0; + if (isOpen == true) + { + for (int i = 0; i < listProperty.arraySize; ++i) + { + Rect elementRect = new Rect(containerRect.xMin, containerRect.yMin + containerElementHeight*i, containerRect.width, containerElementHeight); + { + Rect texturePosition = new Rect(elementRect.xMin + 6, elementRect.yMin + elementRect.height/2f - 1, 9, 5); + ReorderableListResources.DrawTexture(texturePosition, ReorderableListResources.texGrabHandle); + + Rect propertyPosition = new Rect(elementRect.xMin + 20, elementRect.yMin + 3, elementRect.width - 45, 16); + EditorGUI.PropertyField(propertyPosition, listProperty.GetArrayElementAtIndex(i), new GUIContent()); + + //Debug.Log( listProperty.GetArrayElementAtIndex( i ).objectReferenceValue.GetType() ); + //Rect statsPosition = new Rect( propertyPosition.xMax + 7, propertyPosition.yMin, statsIcon.width, statsIcon.height ); + //ReorderableListResources.DrawTexture( statsPosition, statsIcon ); + + Rect removeButtonRect = new Rect(elementRect.xMax - PhotonGUI.DefaultRemoveButtonStyle.fixedWidth, + elementRect.yMin + 2, + PhotonGUI.DefaultRemoveButtonStyle.fixedWidth, + PhotonGUI.DefaultRemoveButtonStyle.fixedHeight); + + GUI.enabled = listProperty.arraySize > 1; + if (GUI.Button(removeButtonRect, new GUIContent(ReorderableListResources.texRemoveButton), PhotonGUI.DefaultRemoveButtonStyle)) + { + listProperty.DeleteArrayElementAtIndex(i); + } + GUI.enabled = true; + + if (i < listProperty.arraySize - 1) + { + texturePosition = new Rect(elementRect.xMin + 2, elementRect.yMax, elementRect.width - 4, 1); + PhotonGUI.DrawSplitter(texturePosition); + } + } + } + } + + if (PhotonGUI.AddButton()) + { + listProperty.InsertArrayElementAtIndex(Mathf.Max(0, listProperty.arraySize - 1)); + } + + serializedObject.ApplyModifiedProperties(); + + bool isObservedComponentsEmpty = this.m_Target.ObservedComponents.FindAll(item => item != null).Count == 0; + + if (wasObservedComponentsEmpty == true && isObservedComponentsEmpty == false && this.m_Target.synchronization == ViewSynchronization.Off) + { + Undo.RecordObject(this.m_Target, "Change PhotonView"); + this.m_Target.synchronization = ViewSynchronization.UnreliableOnChange; + #if !UNITY_MIN_5_3 + EditorUtility.SetDirty(this.m_Target); + #endif + serializedObject.Update(); + } + + if (wasObservedComponentsEmpty == false && isObservedComponentsEmpty == true) + { + Undo.RecordObject(this.m_Target, "Change PhotonView"); + this.m_Target.synchronization = ViewSynchronization.Off; + #if !UNITY_MIN_5_3 + EditorUtility.SetDirty(this.m_Target); + #endif + serializedObject.Update(); + } + } + + private static GameObject GetPrefabParent(GameObject mp) + { + #if UNITY_2_6_1 || UNITY_2_6 || UNITY_3_0 || UNITY_3_0_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 + // Unity 3.4 and older use EditorUtility + return (EditorUtility.GetPrefabParent(mp) as GameObject); + #else + // Unity 3.5 uses PrefabUtility + return PrefabUtility.GetPrefabParent(mp) as GameObject; + #endif + } +} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewInspector.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewInspector.cs.meta new file mode 100644 index 0000000..200b1ee --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewInspector.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e73a30c46df19194f873ea7a9ce12753 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewPrefabApply.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewPrefabApply.cs new file mode 100644 index 0000000..ee00ab1 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewPrefabApply.cs @@ -0,0 +1,3 @@ +// This file can safely be removed. It's in the package for users who update from older code. + + diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewPrefabApply.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewPrefabApply.cs.meta new file mode 100644 index 0000000..d952176 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewPrefabApply.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 93a99bc46f8582340a05ab492c448ecd +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettings.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettings.cs new file mode 100644 index 0000000..264e195 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettings.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; + +[Serializable] +public class SceneSetting +{ + public string sceneName; + public int minViewId; +} + +public class PunSceneSettings : ScriptableObject +{ + [SerializeField] public List MinViewIdPerScene = new List(); + + private const string SceneSettingsFileName = "PunSceneSettingsFile.asset"; + + // we use the path to PunSceneSettings.cs as path to create a scene settings file + private static string punSceneSettingsCsPath; + public static string PunSceneSettingsCsPath + { + get + { + if (!string.IsNullOrEmpty(punSceneSettingsCsPath)) + { + return punSceneSettingsCsPath; + } + + // Unity 4.3.4 does not yet have AssetDatabase.FindAssets(). Would be easier. + var result = Directory.GetFiles(Application.dataPath, "PunSceneSettings.cs", SearchOption.AllDirectories); + if (result.Length >= 1) + { + punSceneSettingsCsPath = Path.GetDirectoryName(result[0]); + punSceneSettingsCsPath = punSceneSettingsCsPath.Replace('\\', '/'); + punSceneSettingsCsPath = punSceneSettingsCsPath.Replace(Application.dataPath, "Assets"); + + // AssetDatabase paths have to use '/' and are relative to the project's folder. Always. + punSceneSettingsCsPath = punSceneSettingsCsPath + "/" + SceneSettingsFileName; + } + + return punSceneSettingsCsPath; + } + } + + + private static PunSceneSettings instanceField; + public static PunSceneSettings Instance + { + get + { + if (instanceField != null) + { + return instanceField; + } + + instanceField = (PunSceneSettings)AssetDatabase.LoadAssetAtPath(PunSceneSettingsCsPath, typeof(PunSceneSettings)); + if (instanceField == null) + { + instanceField = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(instanceField, PunSceneSettingsCsPath); + } + + return instanceField; + } + } + + + public static int MinViewIdForScene(string scene) + { + if (string.IsNullOrEmpty(scene)) + { + return 0; + } + + PunSceneSettings pss = Instance; + if (pss == null) + { + Debug.LogError("pss cant be null"); + return 0; + } + + foreach (SceneSetting setting in pss.MinViewIdPerScene) + { + if (setting.sceneName.Equals(scene)) + { + return setting.minViewId; + } + } + return 0; + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettings.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettings.cs.meta new file mode 100644 index 0000000..065e2d8 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettings.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fc3284eace5a64d4bb516df7d7effdb9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettingsFile.asset b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettingsFile.asset new file mode 100644 index 0000000..075cd61 Binary files /dev/null and b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettingsFile.asset differ diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettingsFile.asset.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettingsFile.asset.meta new file mode 100644 index 0000000..5125fa9 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/PunSceneSettingsFile.asset.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d0aacb83307022d449e90a09d28222ae diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/ReorderableListResources.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/ReorderableListResources.cs new file mode 100644 index 0000000..1a19c14 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/ReorderableListResources.cs @@ -0,0 +1,237 @@ +// Copyright (c) 2012-2013 Rotorz Limited. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +using UnityEngine; +using UnityEditor; + +using System; + +namespace Rotorz.ReorderableList.Internal +{ + + /// + /// Resources to assist with reorderable list control. + /// + internal static class ReorderableListResources + { + + static ReorderableListResources() + { + GenerateSpecialTextures(); + LoadResourceAssets(); + } + + #region Texture Resources + + private enum ResourceName + { + add_button = 0, + add_button_active, + container_background, + grab_handle, + remove_button, + remove_button_active, + title_background, + } + + /// + /// Resource assets for light skin. + /// + /// + /// Resource assets are PNG images which have been encoded using a base-64 + /// string so that actual asset files are not necessary. + /// + private static string[] s_LightSkin = { + "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAYAAAABOs/SAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAW0lEQVRIS+3NywnAQAhF0anI4mzVCmzBBl7QEBgGE5JFhBAXd+OHM5gZZgYRKcktNxu+HRFF2e6qhtOjtQM7K/tZ+xY89wSbazg9eqOfw6oag4rcChjY8coAjA2l1RxFDY8IFAAAAABJRU5ErkJggg==", + "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAYAAAABOs/SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpiFBER+f/jxw8GNjY2BnqAX79+MXBwcDAwMQwQGHoWnzp1CoxHjo8pBSykBi8+MTMzs2HmY2QfwXxKii9HExdZgNwgHuFB/efPH7pZCLOL8f///wyioqL/6enbL1++MAIEGABvGSLA+9GPZwAAAABJRU5ErkJggg==", + "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAMElEQVQYV2P4//8/Q1FR0X8YBvHBAp8+ffp/+fJlMA3igwUfPnwIFgDRYEFM7f8ZAG1EOYL9INrfAAAAAElFTkSuQmCC", + "iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAIElEQVQYV2P49OnTf0KYobCw8D8hzPD/P2FMLesK/wMAs5yJpK+6aN4AAAAASUVORK5CYII=", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAAACCAIAAADq9gq6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUeNpiVFZWZsAGmBhwAIAAAwAURgBt4C03ZwAAAABJRU5ErkJggg==", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAAACCAIAAADq9gq6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUeNpivHPnDgM2wMSAAwAEGAB8VgKYlvqkBwAAAABJRU5ErkJggg==", + "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpi/P//P0NxcfF/BgRgZP78+fN/VVVVhpCQEAZjY2OGs2fPNrCApBwdHRkePHgAVwoWnDVrFgMyAAgwAAt4E1dCq1obAAAAAElFTkSuQmCC" + }; + /// + /// Resource assets for dark skin. + /// + /// + /// Resource assets are PNG images which have been encoded using a base-64 + /// string so that actual asset files are not necessary. + /// + private static string[] s_DarkSkin = { + "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAYAAAABOs/SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIBJREFUeNpiVFZW/u/i4sLw4sULBnoACQkJhj179jAwMQwQGHoWl5aWgvHI8TGlgIXU4MUn1t3dPcx8HB8fD2cvXLgQQ0xHR4c2FmMzmBTLhl5QYwt2cn1MtsXkWjg4gvrt27fgWoMeAGQXCDD+//+fQUVF5T89fXvnzh1GgAADAFmSI1Ed3FqgAAAAAElFTkSuQmCC", + "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAYAAAABOs/SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHlJREFUeNpiFBER+f/jxw8GNjY2BnqAX79+MXBwcDAwMQwQGHoWv3nzBoxHjo8pBSykBi8+MWAOGWY+5uLigrO/ffuGIYbMppnF5Fg2tFM1yKfk+pbkoKZGEA+OVP3nzx+6WQizi/H///8MoqKi/+np2y9fvjACBBgAoTYjgvihfz0AAAAASUVORK5CYII=", + "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpi/P//P4OKisp/Bii4c+cOIwtIwMXFheHFixcMEhISYAVMINm3b9+CBUA0CDCiazc0NGQECDAAdH0YelA27kgAAAAASUVORK5CYII=", + "iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUeNpizM3N/c9AADAqKysTVMTi5eXFSFAREFPHOoAAAwBCfwcAO8g48QAAAABJRU5ErkJggg==", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAYAAACzzX7wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi/P//PwM+wHL06FG8KpgYCABGZWVlvCYABBgA7/sHvGw+cz8AAAAASUVORK5CYII=", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAYAAACzzX7wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi/P//PwM+wPKfgAomBgKAhYuLC68CgAADAAxjByOjCHIRAAAAAElFTkSuQmCC", + "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADtJREFUeNpi/P//P4OKisp/Bii4c+cOIwtIQE9Pj+HLly9gQRCfBcQACbx69QqmmAEseO/ePQZkABBgAD04FXsmmijSAAAAAElFTkSuQmCC" + }; + + /// + /// Gets light or dark texture "add_button.png". + /// + public static Texture2D texAddButton + { + get { return s_Cached[ (int)ResourceName.add_button ]; } + } + /// + /// Gets light or dark texture "add_button_active.png". + /// + public static Texture2D texAddButtonActive + { + get { return s_Cached[ (int)ResourceName.add_button_active ]; } + } + /// + /// Gets light or dark texture "container_background.png". + /// + public static Texture2D texContainerBackground + { + get { return s_Cached[ (int)ResourceName.container_background ]; } + } + /// + /// Gets light or dark texture "grab_handle.png". + /// + public static Texture2D texGrabHandle + { + get { return s_Cached[ (int)ResourceName.grab_handle ]; } + } + /// + /// Gets light or dark texture "remove_button.png". + /// + public static Texture2D texRemoveButton + { + get { return s_Cached[ (int)ResourceName.remove_button ]; } + } + /// + /// Gets light or dark texture "remove_button_active.png". + /// + public static Texture2D texRemoveButtonActive + { + get { return s_Cached[ (int)ResourceName.remove_button_active ]; } + } + /// + /// Gets light or dark texture "title_background.png". + /// + public static Texture2D texTitleBackground + { + get { return s_Cached[ (int)ResourceName.title_background ]; } + } + + #endregion + + #region Generated Resources + + public static Texture2D texItemSplitter { get; private set; } + + /// + /// Generate special textures. + /// + private static void GenerateSpecialTextures() + { + var splitterColor = EditorGUIUtility.isProSkin + ? new Color( 1f, 1f, 1f, 0.14f ) + : new Color( 0.59f, 0.59f, 0.59f, 0.55f ) + ; + texItemSplitter = CreatePixelTexture( "(Generated) Item Splitter", splitterColor ); + } + + /// + /// Create 1x1 pixel texture of specified color. + /// + /// Name for texture object. + /// Pixel color. + /// + /// The new Texture2D instance. + /// + public static Texture2D CreatePixelTexture( string name, Color color ) + { + var tex = new Texture2D( 1, 1, TextureFormat.ARGB32, false, true ); + tex.name = name; + tex.hideFlags = HideFlags.HideAndDontSave; + tex.filterMode = FilterMode.Point; + tex.SetPixel( 0, 0, color ); + tex.Apply(); + return tex; + } + + #endregion + + #region Load PNG from Base-64 Encoded String + + private static Texture2D[] s_Cached; + + /// + /// Read textures from base-64 encoded strings. Automatically selects assets based + /// upon whether the light or dark (pro) skin is active. + /// + private static void LoadResourceAssets() + { + var skin = EditorGUIUtility.isProSkin ? s_DarkSkin : s_LightSkin; + s_Cached = new Texture2D[ skin.Length ]; + + for( int i = 0; i < s_Cached.Length; ++i ) + { + // Get image data (PNG) from base64 encoded strings. + byte[] imageData = Convert.FromBase64String( skin[ i ] ); + + // Gather image size from image data. + int texWidth, texHeight; + GetImageSize( imageData, out texWidth, out texHeight ); + + // Generate texture asset. + var tex = new Texture2D( texWidth, texHeight, TextureFormat.ARGB32, false, true ); + tex.hideFlags = HideFlags.HideAndDontSave; + tex.name = "(Generated) ReorderableList:" + i; + tex.filterMode = FilterMode.Point; + tex.LoadImage( imageData ); + + s_Cached[ i ] = tex; + } + + s_LightSkin = null; + s_DarkSkin = null; + } + + /// + /// Read width and height if PNG file in pixels. + /// + /// PNG image data. + /// Width of image in pixels. + /// Height of image in pixels. + private static void GetImageSize( byte[] imageData, out int width, out int height ) + { + width = ReadInt( imageData, 3 + 15 ); + height = ReadInt( imageData, 3 + 15 + 2 + 2 ); + } + + private static int ReadInt( byte[] imageData, int offset ) + { + return ( imageData[ offset ] << 8 ) | imageData[ offset + 1 ]; + } + + #endregion + + #region GUI Helper + private static GUIStyle s_TempStyle = new GUIStyle(); + + /// + /// Draw texture using to workaround bug in Unity where + /// flickers when embedded inside a property drawer. + /// + /// Position of which to draw texture in space of GUI. + /// Texture. + public static void DrawTexture( Rect position, Texture2D texture ) + { + if( Event.current.type != EventType.Repaint ) + return; + + s_TempStyle.normal.background = texture; + + s_TempStyle.Draw( position, GUIContent.none, false, false, false, false ); + } + #endregion + + } + +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/ReorderableListResources.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/ReorderableListResources.cs.meta new file mode 100644 index 0000000..7f43a21 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/ReorderableListResources.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60c609ded101b0a468fb5cf27b31cf27 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/ServerSettingsInspector.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/ServerSettingsInspector.cs new file mode 100644 index 0000000..e0ec712 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/ServerSettingsInspector.cs @@ -0,0 +1,289 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// This is a custom editor for the ServerSettings scriptable object. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +//#define PHOTON_VOICE + +using System; +using ExitGames.Client.Photon; +using UnityEditor; +using UnityEngine; + +[CustomEditor(typeof (ServerSettings))] +public class ServerSettingsInspector : Editor +{ + public enum ProtocolChoices + { + Udp = ConnectionProtocol.Udp, + Tcp = ConnectionProtocol.Tcp + } // has to be extended when rHTTP becomes available + + private bool showMustHaveRegion; + + private bool hasVoice = false; + private bool hasChat = false; + + [ExecuteInEditMode] + public void OnEnable() + { + this.hasVoice = Type.GetType("ExitGames.Client.Photon.Voice.VoiceClient, Assembly-CSharp") != null || Type.GetType("ExitGames.Client.Photon.Voice.VoiceClient, Assembly-CSharp-firstpass") != null; + this.hasChat = Type.GetType("ExitGames.Client.Photon.Chat.ChatClient, Assembly-CSharp") != null || Type.GetType("ExitGames.Client.Photon.Chat.ChatClient, Assembly-CSharp-firstpass") != null; + } + + + public override void OnInspectorGUI() + { + ServerSettings settings = (ServerSettings) target; + Undo.RecordObject(settings, "Edit PhotonServerSettings"); + + settings.HostType = (ServerSettings.HostingOption) EditorGUILayout.EnumPopup("Hosting", settings.HostType); + EditorGUI.indentLevel = 1; + + switch (settings.HostType) + { + case ServerSettings.HostingOption.BestRegion: + case ServerSettings.HostingOption.PhotonCloud: + // region selection + if (settings.HostType == ServerSettings.HostingOption.PhotonCloud) + { + settings.PreferredRegion = (CloudRegionCode)EditorGUILayout.EnumPopup("Region", settings.PreferredRegion); + } + else + { + CloudRegionFlag valRegions = (CloudRegionFlag)EditorGUILayout.EnumMaskField("Enabled Regions", settings.EnabledRegions); + + if (valRegions != settings.EnabledRegions) + { + settings.EnabledRegions = valRegions; + this.showMustHaveRegion = valRegions == 0; + } + if (this.showMustHaveRegion) + { + EditorGUILayout.HelpBox("You should enable at least two regions for 'Best Region' hosting.", MessageType.Warning); + } + } + + // appid + string valAppId = EditorGUILayout.TextField("AppId", settings.AppID); + if (valAppId != settings.AppID) + { + settings.AppID = valAppId.Trim(); + } + if (!ServerSettings.IsAppId(settings.AppID)) + { + EditorGUILayout.HelpBox("PUN needs an AppId (GUID).\nFind it online in the Dashboard.", MessageType.Warning); + } + + // protocol + ProtocolChoices valProtocol = settings.Protocol == ConnectionProtocol.Tcp ? ProtocolChoices.Tcp : ProtocolChoices.Udp; + valProtocol = (ProtocolChoices) EditorGUILayout.EnumPopup("Protocol", valProtocol); + settings.Protocol = (ConnectionProtocol) valProtocol; + #if UNITY_WEBGL + EditorGUILayout.HelpBox("WebGL always use Secure WebSockets as protocol.\nThis setting gets ignored in current export.", MessageType.Warning); + #endif + break; + + case ServerSettings.HostingOption.SelfHosted: + // address and port (depends on protocol below) + bool hidePort = false; + if (settings.Protocol == ConnectionProtocol.Udp && (settings.ServerPort == 4530 || settings.ServerPort == 0)) + { + settings.ServerPort = 5055; + } + else if (settings.Protocol == ConnectionProtocol.Tcp && (settings.ServerPort == 5055 || settings.ServerPort == 0)) + { + settings.ServerPort = 4530; + } + #if RHTTP + if (settings.Protocol == ConnectionProtocol.RHttp) + { + settings.ServerPort = 0; + hidePort = true; + } + #endif + settings.ServerAddress = EditorGUILayout.TextField("Server Address", settings.ServerAddress); + settings.ServerAddress = settings.ServerAddress.Trim(); + if (!hidePort) + { + settings.ServerPort = EditorGUILayout.IntField("Server Port", settings.ServerPort); + } + // protocol + valProtocol = settings.Protocol == ConnectionProtocol.Tcp ? ProtocolChoices.Tcp : ProtocolChoices.Udp; + valProtocol = (ProtocolChoices) EditorGUILayout.EnumPopup("Protocol", valProtocol); + settings.Protocol = (ConnectionProtocol) valProtocol; + #if UNITY_WEBGL + EditorGUILayout.HelpBox("WebGL always use Secure WebSockets as protocol.\nThis setting gets ignored in current export.", MessageType.Warning); + #endif + + // appid + settings.AppID = EditorGUILayout.TextField("AppId", settings.AppID); + settings.AppID = settings.AppID.Trim(); + break; + + case ServerSettings.HostingOption.OfflineMode: + EditorGUI.indentLevel = 0; + EditorGUILayout.HelpBox("In 'Offline Mode', the client does not communicate with a server.\nAll settings are hidden currently.", MessageType.Info); + break; + + case ServerSettings.HostingOption.NotSet: + EditorGUI.indentLevel = 0; + EditorGUILayout.HelpBox("Hosting is 'Not Set'.\nConnectUsingSettings() will not be able to connect.\nSelect another option or run the PUN Wizard.", MessageType.Info); + break; + + default: + DrawDefaultInspector(); + break; + } + + if (PhotonEditor.CheckPunPlus()) + { + settings.Protocol = ConnectionProtocol.Udp; + EditorGUILayout.HelpBox("You seem to use PUN+.\nPUN+ only supports reliable UDP so the protocol is locked.", MessageType.Info); + } + + + + // CHAT SETTINGS + if (this.hasChat) + { + GUILayout.Space(5); + EditorGUI.indentLevel = 0; + EditorGUILayout.LabelField("Photon Chat Settings"); + EditorGUI.indentLevel = 1; + string valChatAppid = EditorGUILayout.TextField("Chat AppId", settings.ChatAppID); + if (valChatAppid != settings.ChatAppID) + { + settings.ChatAppID = valChatAppid.Trim(); + } + if (!ServerSettings.IsAppId(settings.ChatAppID)) + { + EditorGUILayout.HelpBox("Photon Chat needs an AppId (GUID).\nFind it online in the Dashboard.", MessageType.Warning); + } + + EditorGUI.indentLevel = 0; + } + + + + // VOICE SETTINGS + if (this.hasVoice) + { + GUILayout.Space(5); + EditorGUI.indentLevel = 0; + EditorGUILayout.LabelField("Photon Voice Settings"); + EditorGUI.indentLevel = 1; + switch (settings.HostType) + { + case ServerSettings.HostingOption.BestRegion: + case ServerSettings.HostingOption.PhotonCloud: + // voice appid + string valVoiceAppId = EditorGUILayout.TextField("Voice AppId", settings.VoiceAppID); + if (valVoiceAppId != settings.VoiceAppID) + { + settings.VoiceAppID = valVoiceAppId.Trim(); + } + if (!ServerSettings.IsAppId(settings.VoiceAppID)) + { + EditorGUILayout.HelpBox("Photon Voice needs an AppId (GUID).\nFind it online in the Dashboard.", MessageType.Warning); + } + break; + case ServerSettings.HostingOption.SelfHosted: + if (settings.VoiceServerPort == 0) + { + settings.VoiceServerPort = 5055; + } + settings.VoiceServerPort = EditorGUILayout.IntField("Server Port UDP", settings.VoiceServerPort); + break; + case ServerSettings.HostingOption.OfflineMode: + case ServerSettings.HostingOption.NotSet: + break; + } + EditorGUI.indentLevel = 0; + } + + + + // PUN Client Settings + GUILayout.Space(5); + EditorGUI.indentLevel = 0; + EditorGUILayout.LabelField("Client Settings"); + EditorGUI.indentLevel = 1; + //EditorGUILayout.LabelField("game version"); + settings.JoinLobby = EditorGUILayout.Toggle("Auto-Join Lobby", settings.JoinLobby); + settings.EnableLobbyStatistics = EditorGUILayout.Toggle("Enable Lobby Stats", settings.EnableLobbyStatistics); + + settings.PunLogging = (PhotonLogLevel)EditorGUILayout.EnumPopup("Pun Logging", settings.PunLogging); // TODO: update at runtime + settings.NetworkLogging = (DebugLevel)EditorGUILayout.EnumPopup("Network Logging", settings.NetworkLogging); // TODO: update at runtime + //EditorGUILayout.LabelField("automaticallySyncScene"); + //EditorGUILayout.LabelField("autoCleanUpPlayerObjects"); + //EditorGUILayout.LabelField("lobby stats"); + //EditorGUILayout.LabelField("sendrate / serialize rate"); + //EditorGUILayout.LabelField("quick resends"); + //EditorGUILayout.LabelField("max resends"); + //EditorGUILayout.LabelField("enable crc checking"); + + + // Application settings + GUILayout.Space(5); + EditorGUI.indentLevel = 0; + EditorGUILayout.LabelField("Build Settings"); + EditorGUI.indentLevel = 1; + + settings.RunInBackground = EditorGUILayout.Toggle("Run In Background", settings.RunInBackground); + + + // RPC-shortcut list + GUILayout.Space(5); + EditorGUI.indentLevel = 0; + SerializedObject sObj = new SerializedObject(target); + SerializedProperty sRpcs = sObj.FindProperty("RpcList"); + EditorGUILayout.PropertyField(sRpcs, true); + sObj.ApplyModifiedProperties(); + + GUILayout.BeginHorizontal(); + GUILayout.Space(20); + if (GUILayout.Button("Refresh RPCs")) + { + PhotonEditor.UpdateRpcList(); + Repaint(); + } + if (GUILayout.Button("Clear RPCs")) + { + PhotonEditor.ClearRpcList(); + } + if (GUILayout.Button("Log HashCode")) + { + Debug.Log("RPC-List HashCode: " + RpcListHashCode() + ". Make sure clients that send each other RPCs have the same RPC-List."); + } + GUILayout.Space(20); + GUILayout.EndHorizontal(); + + + //SerializedProperty sp = serializedObject.FindProperty("RpcList"); + //EditorGUILayout.PropertyField(sp, true); + + if (GUI.changed) + { + EditorUtility.SetDirty(target); // even in Unity 5.3+ it's OK to SetDirty() for non-scene objects. + } + } + + private int RpcListHashCode() + { + // this is a hashcode generated to (more) easily compare this Editor's RPC List with some other + int hashCode = PhotonNetwork.PhotonServerSettings.RpcList.Count + 1; + foreach (string s in PhotonNetwork.PhotonServerSettings.RpcList) + { + int h1 = s.GetHashCode(); + hashCode = ((h1 << 5) + h1) ^ hashCode; + } + + return hashCode; + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/ServerSettingsInspector.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/ServerSettingsInspector.cs.meta new file mode 100644 index 0000000..d9f769d --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/ServerSettingsInspector.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 21239ba77ac4b534f958e8617ef13ede +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views.meta new file mode 100644 index 0000000..0e31ed9 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ea3ba5d2f8caabe48b34655024369850 +folderAsset: yes +timeCreated: 1488120601 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonAnimatorViewEditor.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonAnimatorViewEditor.cs new file mode 100644 index 0000000..3deca52 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonAnimatorViewEditor.cs @@ -0,0 +1,350 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// This is a custom editor for the AnimatorView component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +#if UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 +#define UNITY_MIN_5_3 +#endif + + +using UnityEditor; +using UnityEngine; +using System.Collections.Generic; + +#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 +using UnityEditorInternal; +#elif UNITY_5 || UNITY_5_0 +using UnityEditor.Animations; +#endif + + +[CustomEditor(typeof (PhotonAnimatorView))] +public class PhotonAnimatorViewEditor : Editor +{ + private Animator m_Animator; + private PhotonAnimatorView m_Target; + +#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_5 || UNITY_5_0 + private AnimatorController m_Controller; +#endif + + private const string TRIGGER_HELP_URL = "https://doc.photonengine.com/en/pun/current/reference/animatorviewtriggerhelp"; + + public override void OnInspectorGUI() + { + //base.OnInspectorGUI(); + + if (this.m_Animator == null) + { + GUILayout.BeginVertical(GUI.skin.box); + GUILayout.Label("GameObject doesn't have an Animator component to synchronize"); + GUILayout.EndVertical(); + return; + } + + DrawWeightInspector(); + + if (GetLayerCount() == 0) + { + GUILayout.BeginVertical(GUI.skin.box); + GUILayout.Label("Animator doesn't have any layers setup to synchronize"); + GUILayout.EndVertical(); + } + + DrawParameterInspector(); + + if (GetParameterCount() == 0) + { + GUILayout.BeginVertical(GUI.skin.box); + GUILayout.Label("Animator doesn't have any parameters setup to synchronize"); + GUILayout.EndVertical(); + } + + serializedObject.ApplyModifiedProperties(); + + //GUILayout.Label( "m_SynchronizeLayers " + serializedObject.FindProperty( "m_SynchronizeLayers" ).arraySize ); + //GUILayout.Label( "m_SynchronizeParameters " + serializedObject.FindProperty( "m_SynchronizeParameters" ).arraySize ); + } + + + private int GetLayerCount() + { + #if UNITY_5 || UNITY_5_0 + return (this.m_Controller == null) ? 0 : this.m_Controller.layers.Length; + #else + return (this.m_Controller == null) ? 0 : this.m_Controller.layerCount; + #endif + } + + +#if UNITY_5 || UNITY_5_0 + private RuntimeAnimatorController GetEffectiveController(Animator animator) + { + RuntimeAnimatorController controller = animator.runtimeAnimatorController; + + AnimatorOverrideController overrideController = controller as AnimatorOverrideController; + while (overrideController != null) + { + controller = overrideController.runtimeAnimatorController; + overrideController = controller as AnimatorOverrideController; + } + + return controller; + } +#endif + + + private void OnEnable() + { + this.m_Target = (PhotonAnimatorView) target; + this.m_Animator = this.m_Target.GetComponent(); + +#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 + this.m_Controller = AnimatorController.GetEffectiveAnimatorController(this.m_Animator); +#elif UNITY_5 || UNITY_5_0 + this.m_Controller = this.GetEffectiveController(this.m_Animator) as AnimatorController; +#endif + + CheckIfStoredParametersExist(); + } + + private void DrawWeightInspector() + { + SerializedProperty foldoutProperty = serializedObject.FindProperty("ShowLayerWeightsInspector"); + foldoutProperty.boolValue = PhotonGUI.ContainerHeaderFoldout("Synchronize Layer Weights", foldoutProperty.boolValue); + + if (foldoutProperty.boolValue == false) + { + return; + } + + float lineHeight = 20; + Rect containerRect = PhotonGUI.ContainerBody(this.GetLayerCount()*lineHeight); + + for (int i = 0; i < this.GetLayerCount(); ++i) + { + if (this.m_Target.DoesLayerSynchronizeTypeExist(i) == false) + { + this.m_Target.SetLayerSynchronized(i, PhotonAnimatorView.SynchronizeType.Disabled); + + #if !UNITY_MIN_5_3 + EditorUtility.SetDirty(this.m_Target); + #endif + } + + PhotonAnimatorView.SynchronizeType syncType = this.m_Target.GetLayerSynchronizeType(i); + + Rect elementRect = new Rect(containerRect.xMin, containerRect.yMin + i*lineHeight, containerRect.width, lineHeight); + + Rect labelRect = new Rect(elementRect.xMin + 5, elementRect.yMin + 2, EditorGUIUtility.labelWidth - 5, elementRect.height); + GUI.Label(labelRect, "Layer " + i); + + Rect popupRect = new Rect(elementRect.xMin + EditorGUIUtility.labelWidth, elementRect.yMin + 2, elementRect.width - EditorGUIUtility.labelWidth - 5, EditorGUIUtility.singleLineHeight); + syncType = (PhotonAnimatorView.SynchronizeType) EditorGUI.EnumPopup(popupRect, syncType); + + if (i < this.GetLayerCount() - 1) + { + Rect splitterRect = new Rect(elementRect.xMin + 2, elementRect.yMax, elementRect.width - 4, 1); + PhotonGUI.DrawSplitter(splitterRect); + } + + if (syncType != this.m_Target.GetLayerSynchronizeType(i)) + { + Undo.RecordObject(target, "Modify Synchronize Layer Weights"); + this.m_Target.SetLayerSynchronized(i, syncType); + + #if !UNITY_MIN_5_3 + EditorUtility.SetDirty(this.m_Target); + #endif + } + } + } + + private int GetParameterCount() + { + #if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 + return (this.m_Controller == null) ? 0 : this.m_Controller.parameterCount; + #elif UNITY_5 || UNITY_5_0 + return (this.m_Controller == null) ? 0 : this.m_Controller.parameters.Length; + #else + return (m_Animator == null) ? 0 : m_Animator.parameters.Length; + #endif + } + + private AnimatorControllerParameter GetAnimatorControllerParameter(int i) + { + #if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 + return this.m_Controller.GetParameter(i); + #elif UNITY_5 || UNITY_5_0 + return this.m_Controller.parameters[i]; + #else + return m_Animator.parameters[i]; + #endif + } + + private bool DoesParameterExist(string name) + { + for (int i = 0; i < this.GetParameterCount(); ++i) + { + if (GetAnimatorControllerParameter(i).name == name) + { + return true; + } + } + + return false; + } + + private void CheckIfStoredParametersExist() + { + var syncedParams = this.m_Target.GetSynchronizedParameters(); + List paramsToRemove = new List(); + + for (int i = 0; i < syncedParams.Count; ++i) + { + string parameterName = syncedParams[i].Name; + if (DoesParameterExist(parameterName) == false) + { + Debug.LogWarning("Parameter '" + this.m_Target.GetSynchronizedParameters()[i].Name + "' doesn't exist anymore. Removing it from the list of synchronized parameters"); + paramsToRemove.Add(parameterName); + } + } + if (paramsToRemove.Count > 0) + { + foreach (string param in paramsToRemove) + { + this.m_Target.GetSynchronizedParameters().RemoveAll(item => item.Name == param); + } + + #if !UNITY_MIN_5_3 + EditorUtility.SetDirty(this.m_Target); + #endif + } + } + + + private void DrawParameterInspector() + { + // flag to expose a note in Interface if one or more trigger(s) are synchronized + bool isUsingTriggers = false; + + SerializedProperty foldoutProperty = serializedObject.FindProperty("ShowParameterInspector"); + foldoutProperty.boolValue = PhotonGUI.ContainerHeaderFoldout("Synchronize Parameters", foldoutProperty.boolValue); + + if (foldoutProperty.boolValue == false) + { + return; + } + + float lineHeight = 20; + Rect containerRect = PhotonGUI.ContainerBody(GetParameterCount()*lineHeight); + + for (int i = 0; i < GetParameterCount(); i++) + { + AnimatorControllerParameter parameter = null; + parameter = GetAnimatorControllerParameter(i); + + string defaultValue = ""; + + if (parameter.type == AnimatorControllerParameterType.Bool) + { + if (Application.isPlaying && m_Animator.gameObject.activeInHierarchy) + { + defaultValue += m_Animator.GetBool(parameter.name); + }else{ + defaultValue += parameter.defaultBool.ToString(); + } + } + else if (parameter.type == AnimatorControllerParameterType.Float) + { + if (Application.isPlaying && m_Animator.gameObject.activeInHierarchy) + { + defaultValue += m_Animator.GetFloat(parameter.name).ToString("0.00"); + }else{ + defaultValue += parameter.defaultFloat.ToString(); + } + } + else if (parameter.type == AnimatorControllerParameterType.Int) + { + if (Application.isPlaying && m_Animator.gameObject.activeInHierarchy) + { + defaultValue += m_Animator.GetInteger(parameter.name); + }else{ + defaultValue += parameter.defaultInt.ToString(); + } + } + else if (parameter.type == AnimatorControllerParameterType.Trigger) + { + if (Application.isPlaying && m_Animator.gameObject.activeInHierarchy) + { + defaultValue += m_Animator.GetBool(parameter.name); + }else{ + defaultValue += parameter.defaultBool.ToString(); + } + } + + if (this.m_Target.DoesParameterSynchronizeTypeExist(parameter.name) == false) + { + this.m_Target.SetParameterSynchronized(parameter.name, (PhotonAnimatorView.ParameterType) parameter.type, PhotonAnimatorView.SynchronizeType.Disabled); + + #if !UNITY_MIN_5_3 + EditorUtility.SetDirty(this.m_Target); + #endif + } + + PhotonAnimatorView.SynchronizeType value = this.m_Target.GetParameterSynchronizeType(parameter.name); + + // check if using trigger and actually synchronizing it + if (value!=PhotonAnimatorView.SynchronizeType.Disabled &¶meter.type == AnimatorControllerParameterType.Trigger) + { + isUsingTriggers = true; + } + + Rect elementRect = new Rect(containerRect.xMin, containerRect.yMin + i*lineHeight, containerRect.width, lineHeight); + + Rect labelRect = new Rect(elementRect.xMin + 5, elementRect.yMin + 2, EditorGUIUtility.labelWidth - 5, elementRect.height); + GUI.Label(labelRect, parameter.name + " (" + defaultValue + ")"); + + Rect popupRect = new Rect(elementRect.xMin + EditorGUIUtility.labelWidth, elementRect.yMin + 2, elementRect.width - EditorGUIUtility.labelWidth - 5, EditorGUIUtility.singleLineHeight); + value = (PhotonAnimatorView.SynchronizeType) EditorGUI.EnumPopup(popupRect, value); + + if (i < GetParameterCount() - 1) + { + Rect splitterRect = new Rect(elementRect.xMin + 2, elementRect.yMax, elementRect.width - 4, 1); + PhotonGUI.DrawSplitter(splitterRect); + } + + + + if (value != this.m_Target.GetParameterSynchronizeType(parameter.name)) + { + Undo.RecordObject(target, "Modify Synchronize Parameter " + parameter.name); + this.m_Target.SetParameterSynchronized(parameter.name, (PhotonAnimatorView.ParameterType) parameter.type, value); + + #if !UNITY_MIN_5_3 + EditorUtility.SetDirty(this.m_Target); + #endif + } + } + + // display note when synchronized triggers are detected. + if (isUsingTriggers) + { + GUILayout.BeginHorizontal(GUI.skin.box); + GUILayout.Label("When using triggers, make sure this component is last in the stack"); + if (GUILayout.Button(PhotonGUI.HelpIcon,GUIStyle.none,GUILayout.Width(16)) ) + { + Application.OpenURL(TRIGGER_HELP_URL); + } + GUILayout.EndHorizontal(); + } + + } +} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonAnimatorViewEditor.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonAnimatorViewEditor.cs.meta new file mode 100644 index 0000000..c6e48af --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonAnimatorViewEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3f61bade114730459f7ad45f5f292c1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbody2DViewEditor.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbody2DViewEditor.cs new file mode 100644 index 0000000..c806e59 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbody2DViewEditor.cs @@ -0,0 +1,19 @@ +using UnityEditor; +using UnityEngine; + +[CustomEditor(typeof (PhotonRigidbody2DView))] +public class PhotonRigidbody2DViewEditor : Editor +{ + public override void OnInspectorGUI() + { + PhotonGUI.ContainerHeader("Options"); + + Rect containerRect = PhotonGUI.ContainerBody(EditorGUIUtility.singleLineHeight*2 + 10); + + Rect propertyRect = new Rect(containerRect.xMin + 5, containerRect.yMin + 5, containerRect.width, EditorGUIUtility.singleLineHeight); + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_SynchronizeVelocity"), new GUIContent("Synchronize Velocity")); + + propertyRect.y += EditorGUIUtility.singleLineHeight; + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_SynchronizeAngularVelocity"), new GUIContent("Synchronize Angular Velocity")); + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbody2DViewEditor.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbody2DViewEditor.cs.meta new file mode 100644 index 0000000..9e50961 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbody2DViewEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3a82e8e86b9eecb40ac3f6ebc949f6ef +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbodyViewEditor.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbodyViewEditor.cs new file mode 100644 index 0000000..8e1e540 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbodyViewEditor.cs @@ -0,0 +1,19 @@ +using UnityEditor; +using UnityEngine; + +[CustomEditor(typeof (PhotonRigidbodyView))] +public class PhotonRigidbodyViewEditor : Editor +{ + public override void OnInspectorGUI() + { + PhotonGUI.ContainerHeader("Options"); + + Rect containerRect = PhotonGUI.ContainerBody(EditorGUIUtility.singleLineHeight*2 + 10); + + Rect propertyRect = new Rect(containerRect.xMin + 5, containerRect.yMin + 5, containerRect.width, EditorGUIUtility.singleLineHeight); + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_SynchronizeVelocity"), new GUIContent("Synchronize Velocity")); + + propertyRect.y += EditorGUIUtility.singleLineHeight; + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_SynchronizeAngularVelocity"), new GUIContent("Synchronize Angular Velocity")); + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbodyViewEditor.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbodyViewEditor.cs.meta new file mode 100644 index 0000000..b4fa5b9 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonRigidbodyViewEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4bcfebc9a2f1074488adedd1fe84e6c9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonTransformViewEditor.cs b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonTransformViewEditor.cs new file mode 100644 index 0000000..9d282e1 --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonTransformViewEditor.cs @@ -0,0 +1,434 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// This is a custom editor for the TransformView component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +#if UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 +#define UNITY_MIN_5_3 +#endif + + +using UnityEditor; +using UnityEngine; + +[CustomEditor(typeof (PhotonTransformView))] +public class PhotonTransformViewEditor : Editor +{ + //private PhotonTransformView m_Target; + + private SerializedProperty m_SynchronizePositionProperty; + private SerializedProperty m_SynchronizeRotationProperty; + private SerializedProperty m_SynchronizeScaleProperty; + + private bool m_InterpolateHelpOpen; + private bool m_ExtrapolateHelpOpen; + private bool m_InterpolateRotationHelpOpen; + private bool m_InterpolateScaleHelpOpen; + + private const int EDITOR_LINE_HEIGHT = 20; + + private const string INTERPOLATE_TOOLTIP = + "Choose between synchronizing the value directly (by disabling interpolation) or smoothly move it towards the newest update."; + + private const string INTERPOLATE_HELP = + "You can use interpolation to smoothly move your GameObject towards a new position that is received via the network. " + + "This helps to reduce the stuttering movement that results because the network updates only arrive 10 times per second.\n" + + "As a side effect, the GameObject is always lagging behind the actual position a little bit. This can be addressed with extrapolation."; + + private const string EXTRAPOLATE_TOOLTIP = "Extrapolation is used to predict where the GameObject actually is"; + + private const string EXTRAPOLATE_HELP = + "Whenever you deal with network values, all values you receive will be a little bit out of date since that data needs " + + "to reach you first. You can use extrapolation to try to predict where the player actually is, based on the movement data you have received.\n" + + + "This has to be tweaked carefully for each specific game in order to insure the optimal prediction. Sometimes it is very easy to extrapolate states, because " + + + "the GameObject behaves very predictable (for example for vehicles). Other times it can be very hard because the user input is translated directly to the game " + + "and you cannot really predict what the user is going to do (for example in fighting games)"; + + private const string INTERPOLATE_HELP_URL = "http://doc.exitgames.com/en/pun/current/tutorials/rpg-movement"; + private const string EXTRAPOLATE_HELP_URL = "http://doc.exitgames.com/en/pun/current/tutorials/rpg-movement"; + + public void OnEnable() + { + SetupSerializedProperties(); + } + + public override void OnInspectorGUI() + { + serializedObject.Update (); + + //this.m_Target = (PhotonTransformView) target; + + DrawIsPlayingWarning(); + GUI.enabled = !Application.isPlaying; + + DrawSynchronizePositionHeader(); + DrawSynchronizePositionData(); + + GUI.enabled = !Application.isPlaying; + DrawSynchronizeRotationHeader(); + DrawSynchronizeRotationData(); + + GUI.enabled = !Application.isPlaying; + DrawSynchronizeScaleHeader(); + DrawSynchronizeScaleData(); + + serializedObject.ApplyModifiedProperties(); + + GUI.enabled = true; + } + + private void DrawIsPlayingWarning() + { + if (Application.isPlaying == false) + { + return; + } + + GUILayout.BeginVertical(GUI.skin.box); + { + GUILayout.Label("Editing is disabled in play mode so the two objects don't go out of sync"); + } + GUILayout.EndVertical(); + } + + private void SetupSerializedProperties() + { + this.m_SynchronizePositionProperty = serializedObject.FindProperty("m_PositionModel.SynchronizeEnabled"); + this.m_SynchronizeRotationProperty = serializedObject.FindProperty("m_RotationModel.SynchronizeEnabled"); + this.m_SynchronizeScaleProperty = serializedObject.FindProperty("m_ScaleModel.SynchronizeEnabled"); + } + + private void DrawSynchronizePositionHeader() + { + DrawHeader("Synchronize Position", this.m_SynchronizePositionProperty); + } + + private void DrawSynchronizePositionData() + { + if (this.m_SynchronizePositionProperty == null || this.m_SynchronizePositionProperty.boolValue == false) + { + return; + } + + SerializedProperty interpolatePositionProperty = serializedObject.FindProperty("m_PositionModel.InterpolateOption"); + PhotonTransformViewPositionModel.InterpolateOptions interpolateOption = (PhotonTransformViewPositionModel.InterpolateOptions)interpolatePositionProperty.enumValueIndex; + + SerializedProperty extrapolatePositionProperty = serializedObject.FindProperty("m_PositionModel.ExtrapolateOption"); + PhotonTransformViewPositionModel.ExtrapolateOptions extrapolateOption = (PhotonTransformViewPositionModel.ExtrapolateOptions)extrapolatePositionProperty.enumValueIndex; + + float containerHeight = 155; + + switch (interpolateOption) + { + case PhotonTransformViewPositionModel.InterpolateOptions.FixedSpeed: + case PhotonTransformViewPositionModel.InterpolateOptions.Lerp: + containerHeight += EDITOR_LINE_HEIGHT; + break; + /*case PhotonTransformViewPositionModel.InterpolateOptions.MoveTowardsComplex: + containerHeight += EDITOR_LINE_HEIGHT*3; + break;*/ + } + + if (extrapolateOption != PhotonTransformViewPositionModel.ExtrapolateOptions.Disabled) + { + containerHeight += EDITOR_LINE_HEIGHT; + } + + switch (extrapolateOption) + { + case PhotonTransformViewPositionModel.ExtrapolateOptions.FixedSpeed: + containerHeight += EDITOR_LINE_HEIGHT; + break; + } + + if (this.m_InterpolateHelpOpen == true) + { + containerHeight += GetInterpolateHelpBoxHeight(); + } + + if (this.m_ExtrapolateHelpOpen == true) + { + containerHeight += GetExtrapolateHelpBoxHeight(); + } + + // removed Gizmo Options. -3 lines, -1 splitter + containerHeight -= EDITOR_LINE_HEIGHT * 2; + + Rect rect = PhotonGUI.ContainerBody(containerHeight); + + Rect propertyRect = new Rect(rect.xMin + 5, rect.yMin + 2, rect.width - 10, EditorGUIUtility.singleLineHeight); + + DrawTeleport(ref propertyRect); + DrawSplitter(ref propertyRect); + + DrawSynchronizePositionDataInterpolation(ref propertyRect, interpolatePositionProperty, interpolateOption); + DrawSplitter(ref propertyRect); + + DrawSynchronizePositionDataExtrapolation(ref propertyRect, extrapolatePositionProperty, extrapolateOption); + DrawSplitter(ref propertyRect); + + DrawSynchronizePositionDataGizmos(ref propertyRect); + } + + private float GetInterpolateHelpBoxHeight() + { + return PhotonGUI.RichLabel.CalcHeight(new GUIContent(INTERPOLATE_HELP), Screen.width - 54) + 35; + } + + private float GetExtrapolateHelpBoxHeight() + { + return PhotonGUI.RichLabel.CalcHeight(new GUIContent(EXTRAPOLATE_HELP), Screen.width - 54) + 35; + } + + private void DrawSplitter(ref Rect propertyRect) + { + Rect splitterRect = new Rect(propertyRect.xMin - 3, propertyRect.yMin, propertyRect.width + 6, 1); + PhotonGUI.DrawSplitter(splitterRect); + + propertyRect.y += 5; + } + + private void DrawSynchronizePositionDataGizmos(ref Rect propertyRect) + { + GUI.enabled = true; + /*PhotonGUI.DrawGizmoOptions(propertyRect, "Synchronized Position Gizmo", + serializedObject.FindProperty("m_PositionModel.DrawNetworkGizmo"), + serializedObject.FindProperty("m_PositionModel.NetworkGizmoColor"), + serializedObject.FindProperty("m_PositionModel.NetworkGizmoType"), + serializedObject.FindProperty("m_PositionModel.NetworkGizmoSize")); + propertyRect.y += EDITOR_LINE_HEIGHT; + + PhotonGUI.DrawGizmoOptions(propertyRect, "Extrapolated Position Gizmo", + serializedObject.FindProperty("m_PositionModel.DrawExtrapolatedGizmo"), + serializedObject.FindProperty("m_PositionModel.ExtrapolatedGizmoColor"), + serializedObject.FindProperty("m_PositionModel.ExtrapolatedGizmoType"), + serializedObject.FindProperty("m_PositionModel.ExtrapolatedGizmoSize")); + propertyRect.y += EDITOR_LINE_HEIGHT;*/ + + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.DrawErrorGizmo"), + new GUIContent("Draw synchronized position error")); + propertyRect.y += EDITOR_LINE_HEIGHT; + } + + private void DrawHelpBox(ref Rect propertyRect, bool isOpen, float height, string helpText, string url) + { + if (isOpen == true) + { + Rect helpRect = new Rect(propertyRect.xMin, propertyRect.yMin, propertyRect.width, height - 5); + GUI.BeginGroup(helpRect, GUI.skin.box); + GUI.Label(new Rect(5, 5, propertyRect.width - 10, height - 30), helpText, PhotonGUI.RichLabel); + if (GUI.Button(new Rect(5, height - 30, propertyRect.width - 10, 20), "Read more in our documentation")) + { + Application.OpenURL(url); + } + GUI.EndGroup(); + + propertyRect.y += height; + } + } + + private void DrawPropertyWithHelpIcon(ref Rect propertyRect, ref bool isHelpOpen, SerializedProperty property, string tooltip) + { + Rect propertyFieldRect = new Rect(propertyRect.xMin, propertyRect.yMin, propertyRect.width - 20, propertyRect.height); + string propertyName = ObjectNames.NicifyVariableName(property.name); + EditorGUI.PropertyField(propertyFieldRect, property, new GUIContent(propertyName, tooltip)); + + Rect helpIconRect = new Rect(propertyFieldRect.xMax + 5, propertyFieldRect.yMin, 20, propertyFieldRect.height); + isHelpOpen = GUI.Toggle(helpIconRect, isHelpOpen, PhotonGUI.HelpIcon, GUIStyle.none); + + propertyRect.y += EDITOR_LINE_HEIGHT; + } + + private void DrawSynchronizePositionDataExtrapolation(ref Rect propertyRect, SerializedProperty extrapolatePositionProperty, PhotonTransformViewPositionModel.ExtrapolateOptions extrapolateOption) + { + DrawPropertyWithHelpIcon(ref propertyRect, ref this.m_ExtrapolateHelpOpen, extrapolatePositionProperty, EXTRAPOLATE_TOOLTIP); + DrawHelpBox(ref propertyRect, this.m_ExtrapolateHelpOpen, GetExtrapolateHelpBoxHeight(), EXTRAPOLATE_HELP, EXTRAPOLATE_HELP_URL); + + if (extrapolateOption != PhotonTransformViewPositionModel.ExtrapolateOptions.Disabled) + { + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.ExtrapolateIncludingRoundTripTime")); + propertyRect.y += EDITOR_LINE_HEIGHT; + } + + switch (extrapolateOption) + { + case PhotonTransformViewPositionModel.ExtrapolateOptions.FixedSpeed: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.ExtrapolateSpeed")); + propertyRect.y += EDITOR_LINE_HEIGHT; + break; + } + } + + private void DrawTeleport(ref Rect propertyRect) + { + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.TeleportEnabled"), + new GUIContent("Enable teleport for great distances")); + propertyRect.y += EDITOR_LINE_HEIGHT; + + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.TeleportIfDistanceGreaterThan"), + new GUIContent("Teleport if distance greater than")); + propertyRect.y += EDITOR_LINE_HEIGHT; + } + + private void DrawSynchronizePositionDataInterpolation(ref Rect propertyRect, SerializedProperty interpolatePositionProperty, + PhotonTransformViewPositionModel.InterpolateOptions interpolateOption) + { + DrawPropertyWithHelpIcon(ref propertyRect, ref this.m_InterpolateHelpOpen, interpolatePositionProperty, INTERPOLATE_TOOLTIP); + DrawHelpBox(ref propertyRect, this.m_InterpolateHelpOpen, GetInterpolateHelpBoxHeight(), INTERPOLATE_HELP, INTERPOLATE_HELP_URL); + + switch (interpolateOption) + { + case PhotonTransformViewPositionModel.InterpolateOptions.FixedSpeed: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.InterpolateMoveTowardsSpeed"), + new GUIContent("MoveTowards Speed")); + propertyRect.y += EDITOR_LINE_HEIGHT; + break; + + case PhotonTransformViewPositionModel.InterpolateOptions.Lerp: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.InterpolateLerpSpeed"), new GUIContent("Lerp Speed")); + propertyRect.y += EDITOR_LINE_HEIGHT; + break; + + /*case PhotonTransformViewPositionModel.InterpolateOptions.MoveTowardsComplex: + Rect curveRect = new Rect(propertyRect.xMin, propertyRect.yMin, propertyRect.width - 100, propertyRect.height); + EditorGUI.PropertyField(curveRect, serializedObject.FindProperty("m_PositionModel.InterpolateSpeedCurve"), new GUIContent("MoveTowards Speed Curve")); + + Rect labelRect = new Rect(propertyRect.xMax - 95, propertyRect.yMin, 10, propertyRect.height); + GUI.Label(labelRect, "x"); + + Rect multiplierRect = new Rect(propertyRect.xMax - 80, propertyRect.yMin, 80, propertyRect.height); + EditorGUI.PropertyField(multiplierRect, serializedObject.FindProperty("m_PositionModel.InterpolateMoveTowardsSpeed"), GUIContent.none); + propertyRect.y += EDITOR_LINE_HEIGHT; + + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.InterpolateMoveTowardsAcceleration"), + new GUIContent("Acceleration")); + propertyRect.y += EDITOR_LINE_HEIGHT; + + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.InterpolateMoveTowardsDeceleration"), + new GUIContent("Deceleration")); + propertyRect.y += EDITOR_LINE_HEIGHT; + break;*/ + } + } + + private void DrawSynchronizeRotationHeader() + { + DrawHeader("Synchronize Rotation", this.m_SynchronizeRotationProperty); + } + + private void DrawSynchronizeRotationData() + { + if (this.m_SynchronizeRotationProperty == null || this.m_SynchronizeRotationProperty.boolValue == false) + { + return; + } + + SerializedProperty interpolateRotationProperty = serializedObject.FindProperty("m_RotationModel.InterpolateOption"); + PhotonTransformViewRotationModel.InterpolateOptions interpolateOption = + (PhotonTransformViewRotationModel.InterpolateOptions) interpolateRotationProperty.enumValueIndex; + + float containerHeight = 20; + + switch (interpolateOption) + { + case PhotonTransformViewRotationModel.InterpolateOptions.RotateTowards: + case PhotonTransformViewRotationModel.InterpolateOptions.Lerp: + containerHeight += EDITOR_LINE_HEIGHT; + break; + } + + if (this.m_InterpolateRotationHelpOpen == true) + { + containerHeight += GetInterpolateHelpBoxHeight(); + } + + Rect rect = PhotonGUI.ContainerBody(containerHeight); + Rect propertyRect = new Rect(rect.xMin + 5, rect.yMin + 2, rect.width - 10, EditorGUIUtility.singleLineHeight); + + DrawPropertyWithHelpIcon(ref propertyRect, ref this.m_InterpolateRotationHelpOpen, interpolateRotationProperty, INTERPOLATE_TOOLTIP); + DrawHelpBox(ref propertyRect, this.m_InterpolateRotationHelpOpen, GetInterpolateHelpBoxHeight(), INTERPOLATE_HELP, INTERPOLATE_HELP_URL); + + switch (interpolateOption) + { + case PhotonTransformViewRotationModel.InterpolateOptions.RotateTowards: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_RotationModel.InterpolateRotateTowardsSpeed"), + new GUIContent("RotateTowards Speed")); + break; + case PhotonTransformViewRotationModel.InterpolateOptions.Lerp: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_RotationModel.InterpolateLerpSpeed"), new GUIContent("Lerp Speed")); + break; + } + } + + private void DrawSynchronizeScaleHeader() + { + DrawHeader("Synchronize Scale", this.m_SynchronizeScaleProperty); + } + + private void DrawSynchronizeScaleData() + { + if (this.m_SynchronizeScaleProperty == null || this.m_SynchronizeScaleProperty.boolValue == false) + { + return; + } + + SerializedProperty interpolateScaleProperty = serializedObject.FindProperty("m_ScaleModel.InterpolateOption"); + PhotonTransformViewScaleModel.InterpolateOptions interpolateOption = (PhotonTransformViewScaleModel.InterpolateOptions) interpolateScaleProperty.enumValueIndex; + + float containerHeight = EDITOR_LINE_HEIGHT; + + switch (interpolateOption) + { + case PhotonTransformViewScaleModel.InterpolateOptions.MoveTowards: + case PhotonTransformViewScaleModel.InterpolateOptions.Lerp: + containerHeight += EDITOR_LINE_HEIGHT; + break; + } + + if (this.m_InterpolateScaleHelpOpen == true) + { + containerHeight += GetInterpolateHelpBoxHeight(); + } + + Rect rect = PhotonGUI.ContainerBody(containerHeight); + Rect propertyRect = new Rect(rect.xMin + 5, rect.yMin + 2, rect.width - 10, EditorGUIUtility.singleLineHeight); + + DrawPropertyWithHelpIcon(ref propertyRect, ref this.m_InterpolateScaleHelpOpen, interpolateScaleProperty, INTERPOLATE_TOOLTIP); + DrawHelpBox(ref propertyRect, this.m_InterpolateScaleHelpOpen, GetInterpolateHelpBoxHeight(), INTERPOLATE_HELP, INTERPOLATE_HELP_URL); + + switch (interpolateOption) + { + case PhotonTransformViewScaleModel.InterpolateOptions.MoveTowards: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_ScaleModel.InterpolateMoveTowardsSpeed"), + new GUIContent("MoveTowards Speed")); + break; + case PhotonTransformViewScaleModel.InterpolateOptions.Lerp: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_ScaleModel.InterpolateLerpSpeed"), new GUIContent("Lerp Speed")); + break; + } + } + + private void DrawHeader(string label, SerializedProperty property) + { + if (property == null) + { + return; + } + + bool newValue = PhotonGUI.ContainerHeaderToggle(label, property.boolValue); + + if (newValue != property.boolValue) + { + property.boolValue = newValue; + property.serializedObject.ApplyModifiedProperties(); + } + } +} diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonTransformViewEditor.cs.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonTransformViewEditor.cs.meta new file mode 100644 index 0000000..58d59ef --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/Views/PhotonTransformViewEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22292ca8ffb574945bedfaf49266672e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/background.jpg b/Assets/Photon Unity Networking/Editor/PhotonNetwork/background.jpg new file mode 100644 index 0000000..74d3ce8 Binary files /dev/null and b/Assets/Photon Unity Networking/Editor/PhotonNetwork/background.jpg differ diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/background.jpg.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/background.jpg.meta new file mode 100644 index 0000000..48f073e --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/background.jpg.meta @@ -0,0 +1,45 @@ +fileFormatVersion: 2 +guid: 1faa1cf0448470c4ebbb23b97759ab50 +TextureImporter: + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/help.png b/Assets/Photon Unity Networking/Editor/PhotonNetwork/help.png new file mode 100644 index 0000000..a421667 Binary files /dev/null and b/Assets/Photon Unity Networking/Editor/PhotonNetwork/help.png differ diff --git a/Assets/Photon Unity Networking/Editor/PhotonNetwork/help.png.meta b/Assets/Photon Unity Networking/Editor/PhotonNetwork/help.png.meta new file mode 100644 index 0000000..cb312ac --- /dev/null +++ b/Assets/Photon Unity Networking/Editor/PhotonNetwork/help.png.meta @@ -0,0 +1,45 @@ +fileFormatVersion: 2 +guid: 9f1212502533cb34188dd6ef094188cb +TextureImporter: + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Photon Unity Networking/PhotonCloud-icon.png b/Assets/Photon Unity Networking/PhotonCloud-icon.png new file mode 100644 index 0000000..aff02a4 Binary files /dev/null and b/Assets/Photon Unity Networking/PhotonCloud-icon.png differ diff --git a/Assets/Photon Unity Networking/PhotonCloud-icon.png.meta b/Assets/Photon Unity Networking/PhotonCloud-icon.png.meta new file mode 100644 index 0000000..173f520 --- /dev/null +++ b/Assets/Photon Unity Networking/PhotonCloud-icon.png.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 8425b95fef16c3f4194e3a20e245cb67 +labels: +- ExitGames +- PUN +- Photon +- Networking +TextureImporter: + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + textureFormat: -1 + maxTextureSize: 128 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + textureType: 2 + buildTargetSettings: [] diff --git a/Assets/Photon Unity Networking/PhotonNetwork-Documentation.chm b/Assets/Photon Unity Networking/PhotonNetwork-Documentation.chm new file mode 100644 index 0000000..5894486 Binary files /dev/null and b/Assets/Photon Unity Networking/PhotonNetwork-Documentation.chm differ diff --git a/Assets/Photon Unity Networking/PhotonNetwork-Documentation.chm.meta b/Assets/Photon Unity Networking/PhotonNetwork-Documentation.chm.meta new file mode 100644 index 0000000..1e4153f --- /dev/null +++ b/Assets/Photon Unity Networking/PhotonNetwork-Documentation.chm.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d93cfd57d52f80543b09a3f2ce724f84 diff --git a/Assets/Photon Unity Networking/PhotonNetwork-Documentation.pdf b/Assets/Photon Unity Networking/PhotonNetwork-Documentation.pdf new file mode 100644 index 0000000..5d84e75 --- /dev/null +++ b/Assets/Photon Unity Networking/PhotonNetwork-Documentation.pdf @@ -0,0 +1,74574 @@ +%PDF-1.5 +% +1 0 obj +<< /S /GoTo /D (chapter.1) >> +endobj +4 0 obj +(\376\377\0001\000\040\000M\000a\000i\000n\000\040\000P\000a\000g\000e) +endobj +5 0 obj +<< /S /GoTo /D (chapter.2) >> +endobj +8 0 obj +(\376\377\0002\000\040\000G\000e\000n\000e\000r\000a\000l\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +9 0 obj +<< /S /GoTo /D (section.2.1) >> +endobj +12 0 obj +(\376\377\0002\000.\0001\000\040\000P\000h\000o\000t\000o\000n) +endobj +13 0 obj +<< /S /GoTo /D (subsection.2.1.1) >> +endobj +16 0 obj +(\376\377\0002\000.\0001\000.\0001\000\040\000M\000a\000s\000t\000e\000r\000\040\000S\000e\000r\000v\000e\000r\000\040\000A\000n\000d\000\040\000L\000o\000b\000b\000y) +endobj +17 0 obj +<< /S /GoTo /D (subsection.2.1.2) >> +endobj +20 0 obj +(\376\377\0002\000.\0001\000.\0002\000\040\000R\000e\000m\000o\000t\000e\000\040\000P\000r\000o\000c\000e\000d\000u\000r\000e\000\040\000C\000a\000l\000l\000s) +endobj +21 0 obj +<< /S /GoTo /D (subsection.2.1.3) >> +endobj +24 0 obj +(\376\377\0002\000.\0001\000.\0003\000\040\000I\000n\000s\000t\000a\000n\000t\000i\000a\000t\000i\000n\000g\000\040\000N\000e\000t\000w\000o\000r\000k\000e\000d\000\040\000O\000b\000j\000e\000c\000t\000s) +endobj +25 0 obj +<< /S /GoTo /D (chapter.3) >> +endobj +28 0 obj +(\376\377\0003\000\040\000N\000e\000t\000w\000o\000r\000k\000\040\000S\000i\000m\000u\000l\000a\000t\000i\000o\000n\000\040\000G\000U\000I) +endobj +29 0 obj +<< /S /GoTo /D (chapter.4) >> +endobj +32 0 obj +(\376\377\0004\000\040\000N\000e\000t\000w\000o\000r\000k\000\040\000S\000t\000a\000t\000i\000s\000t\000i\000c\000s\000\040\000G\000U\000I) +endobj +33 0 obj +<< /S /GoTo /D (chapter.5) >> +endobj +36 0 obj +(\376\377\0005\000\040\000P\000u\000b\000l\000i\000c\000\040\000A\000P\000I\000\040\000M\000o\000d\000u\000l\000e) +endobj +37 0 obj +<< /S /GoTo /D (chapter.6) >> +endobj +40 0 obj +(\376\377\0006\000\040\000M\000o\000d\000u\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +41 0 obj +<< /S /GoTo /D (section.6.1) >> +endobj +44 0 obj +(\376\377\0006\000.\0001\000\040\000P\000u\000b\000l\000i\000c\000\040\000A\000P\000I) +endobj +45 0 obj +<< /S /GoTo /D (subsection.6.1.1) >> +endobj +48 0 obj +(\376\377\0006\000.\0001\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +49 0 obj +<< /S /GoTo /D (subsection.6.1.2) >> +endobj +52 0 obj +(\376\377\0006\000.\0001\000.\0002\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000T\000y\000p\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +53 0 obj +<< /S /GoTo /D (subsubsection.6.1.2.1) >> +endobj +56 0 obj +(\376\377\0006\000.\0001\000.\0002\000.\0001\000\040\000C\000l\000i\000e\000n\000t\000S\000t\000a\000t\000e) +endobj +57 0 obj +<< /S /GoTo /D (subsubsection.6.1.2.2) >> +endobj +60 0 obj +(\376\377\0006\000.\0001\000.\0002\000.\0002\000\040\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t\000C\000a\000u\000s\000e) +endobj +61 0 obj +<< /S /GoTo /D (subsubsection.6.1.2.3) >> +endobj +64 0 obj +(\376\377\0006\000.\0001\000.\0002\000.\0003\000\040\000P\000h\000o\000t\000o\000n\000L\000o\000g\000L\000e\000v\000e\000l) +endobj +65 0 obj +<< /S /GoTo /D (subsubsection.6.1.2.4) >> +endobj +68 0 obj +(\376\377\0006\000.\0001\000.\0002\000.\0004\000\040\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000M\000e\000s\000s\000a\000g\000e) +endobj +69 0 obj +<< /S /GoTo /D (subsubsection.6.1.2.5) >> +endobj +72 0 obj +(\376\377\0006\000.\0001\000.\0002\000.\0005\000\040\000P\000h\000o\000t\000o\000n\000T\000a\000r\000g\000e\000t\000s) +endobj +73 0 obj +<< /S /GoTo /D (subsection.6.1.3) >> +endobj +76 0 obj +(\376\377\0006\000.\0001\000.\0003\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +77 0 obj +<< /S /GoTo /D (subsubsection.6.1.3.1) >> +endobj +80 0 obj +(\376\377\0006\000.\0001\000.\0003\000.\0001\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000V\000i\000e\000w) +endobj +81 0 obj +<< /S /GoTo /D (section.6.2) >> +endobj +84 0 obj +(\376\377\0006\000.\0002\000\040\000O\000p\000t\000i\000o\000n\000a\000l\000\040\000G\000u\000i\000\040\000E\000l\000e\000m\000e\000n\000t\000s) +endobj +85 0 obj +<< /S /GoTo /D (subsection.6.2.1) >> +endobj +88 0 obj +(\376\377\0006\000.\0002\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +89 0 obj +<< /S /GoTo /D (chapter.7) >> +endobj +92 0 obj +(\376\377\0007\000\040\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +93 0 obj +<< /S /GoTo /D (section.7.1) >> +endobj +96 0 obj +(\376\377\0007\000.\0001\000\040\000P\000a\000c\000k\000a\000g\000e\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s) +endobj +97 0 obj +<< /S /GoTo /D (section.7.2) >> +endobj +100 0 obj +(\376\377\0007\000.\0002\000\040\000P\000a\000c\000k\000a\000g\000e\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t) +endobj +101 0 obj +<< /S /GoTo /D (section.7.3) >> +endobj +104 0 obj +(\376\377\0007\000.\0003\000\040\000P\000a\000c\000k\000a\000g\000e\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000G\000U\000I) +endobj +105 0 obj +<< /S /GoTo /D (subsection.7.3.1) >> +endobj +108 0 obj +(\376\377\0007\000.\0003\000.\0001\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000T\000y\000p\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +109 0 obj +<< /S /GoTo /D (subsubsection.7.3.1.1) >> +endobj +112 0 obj +(\376\377\0007\000.\0003\000.\0001\000.\0001\000\040\000G\000i\000z\000m\000o\000T\000y\000p\000e) +endobj +113 0 obj +<< /S /GoTo /D (section.7.4) >> +endobj +116 0 obj +(\376\377\0007\000.\0004\000\040\000P\000a\000c\000k\000a\000g\000e\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n) +endobj +117 0 obj +<< /S /GoTo /D (section.7.5) >> +endobj +120 0 obj +(\376\377\0007\000.\0005\000\040\000P\000a\000c\000k\000a\000g\000e\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t) +endobj +121 0 obj +<< /S /GoTo /D (subsection.7.5.1) >> +endobj +124 0 obj +(\376\377\0007\000.\0005\000.\0001\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000T\000y\000p\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +125 0 obj +<< /S /GoTo /D (subsubsection.7.5.1.1) >> +endobj +128 0 obj +(\376\377\0007\000.\0005\000.\0001\000.\0001\000\040\000C\000h\000a\000t\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t\000C\000a\000u\000s\000e) +endobj +129 0 obj +<< /S /GoTo /D (subsubsection.7.5.1.2) >> +endobj +132 0 obj +(\376\377\0007\000.\0005\000.\0001\000.\0002\000\040\000C\000h\000a\000t\000S\000t\000a\000t\000e) +endobj +133 0 obj +<< /S /GoTo /D (subsubsection.7.5.1.3) >> +endobj +136 0 obj +(\376\377\0007\000.\0005\000.\0001\000.\0003\000\040\000C\000u\000s\000t\000o\000m\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000T\000y\000p\000e) +endobj +137 0 obj +<< /S /GoTo /D (section.7.6) >> +endobj +140 0 obj +(\376\377\0007\000.\0006\000\040\000P\000a\000c\000k\000a\000g\000e\000\040\000P\000h\000o\000t\000o\000n) +endobj +141 0 obj +<< /S /GoTo /D (subsection.7.6.1) >> +endobj +144 0 obj +(\376\377\0007\000.\0006\000.\0001\000\040\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +145 0 obj +<< /S /GoTo /D (subsubsection.7.6.1.1) >> +endobj +148 0 obj +(\376\377\0007\000.\0006\000.\0001\000.\0001\000\040\000H\000a\000s\000h\000t\000a\000b\000l\000e) +endobj +149 0 obj +<< /S /GoTo /D (section.7.7) >> +endobj +152 0 obj +(\376\377\0007\000.\0007\000\040\000P\000a\000c\000k\000a\000g\000e\000\040\000U\000n\000i\000t\000y\000E\000n\000g\000i\000n\000e) +endobj +153 0 obj +<< /S /GoTo /D (section.7.8) >> +endobj +156 0 obj +(\376\377\0007\000.\0008\000\040\000P\000a\000c\000k\000a\000g\000e\000\040\000U\000n\000i\000t\000y\000E\000n\000g\000i\000n\000e\000.\000S\000c\000e\000n\000e\000M\000a\000n\000a\000g\000e\000m\000e\000n\000t) +endobj +157 0 obj +<< /S /GoTo /D (chapter.8) >> +endobj +160 0 obj +(\376\377\0008\000\040\000C\000l\000a\000s\000s\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +161 0 obj +<< /S /GoTo /D (section.8.1) >> +endobj +164 0 obj +(\376\377\0008\000.\0001\000\040\000A\000c\000t\000o\000r\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +165 0 obj +<< /S /GoTo /D (subsection.8.1.1) >> +endobj +168 0 obj +(\376\377\0008\000.\0001\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +169 0 obj +<< /S /GoTo /D (subsection.8.1.2) >> +endobj +172 0 obj +(\376\377\0008\000.\0001\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +173 0 obj +<< /S /GoTo /D (subsubsection.8.1.2.1) >> +endobj +176 0 obj +(\376\377\0008\000.\0001\000.\0002\000.\0001\000\040\000I\000s\000I\000n\000a\000c\000t\000i\000v\000e) +endobj +177 0 obj +<< /S /GoTo /D (subsubsection.8.1.2.2) >> +endobj +180 0 obj +(\376\377\0008\000.\0001\000.\0002\000.\0002\000\040\000P\000l\000a\000y\000e\000r\000N\000a\000m\000e) +endobj +181 0 obj +<< /S /GoTo /D (subsubsection.8.1.2.3) >> +endobj +184 0 obj +(\376\377\0008\000.\0001\000.\0002\000.\0003\000\040\000U\000s\000e\000r\000I\000d) +endobj +185 0 obj +<< /S /GoTo /D (section.8.2) >> +endobj +188 0 obj +(\376\377\0008\000.\0002\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000V\000a\000l\000u\000e\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +189 0 obj +<< /S /GoTo /D (subsection.8.2.1) >> +endobj +192 0 obj +(\376\377\0008\000.\0002\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +193 0 obj +<< /S /GoTo /D (subsection.8.2.2) >> +endobj +196 0 obj +(\376\377\0008\000.\0002\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +197 0 obj +<< /S /GoTo /D (subsubsection.8.2.2.1) >> +endobj +200 0 obj +(\376\377\0008\000.\0002\000.\0002\000.\0001\000\040\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000V\000a\000l\000u\000e\000s) +endobj +201 0 obj +<< /S /GoTo /D (subsubsection.8.2.2.2) >> +endobj +204 0 obj +(\376\377\0008\000.\0002\000.\0002\000.\0002\000\040\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000V\000a\000l\000u\000e\000s) +endobj +205 0 obj +<< /S /GoTo /D (subsection.8.2.3) >> +endobj +208 0 obj +(\376\377\0008\000.\0002\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +209 0 obj +<< /S /GoTo /D (subsubsection.8.2.3.1) >> +endobj +212 0 obj +(\376\377\0008\000.\0002\000.\0003\000.\0001\000\040\000A\000d\000d\000A\000u\000t\000h\000P\000a\000r\000a\000m\000e\000t\000e\000r) +endobj +213 0 obj +<< /S /GoTo /D (subsubsection.8.2.3.2) >> +endobj +216 0 obj +(\376\377\0008\000.\0002\000.\0003\000.\0002\000\040\000S\000e\000t\000A\000u\000t\000h\000P\000o\000s\000t\000D\000a\000t\000a) +endobj +217 0 obj +<< /S /GoTo /D (subsubsection.8.2.3.3) >> +endobj +220 0 obj +(\376\377\0008\000.\0002\000.\0003\000.\0003\000\040\000S\000e\000t\000A\000u\000t\000h\000P\000o\000s\000t\000D\000a\000t\000a) +endobj +221 0 obj +<< /S /GoTo /D (subsubsection.8.2.3.4) >> +endobj +224 0 obj +(\376\377\0008\000.\0002\000.\0003\000.\0004\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +225 0 obj +<< /S /GoTo /D (subsection.8.2.4) >> +endobj +228 0 obj +(\376\377\0008\000.\0002\000.\0004\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +229 0 obj +<< /S /GoTo /D (subsubsection.8.2.4.1) >> +endobj +232 0 obj +(\376\377\0008\000.\0002\000.\0004\000.\0001\000\040\000A\000u\000t\000h\000G\000e\000t\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s) +endobj +233 0 obj +<< /S /GoTo /D (subsubsection.8.2.4.2) >> +endobj +236 0 obj +(\376\377\0008\000.\0002\000.\0004\000.\0002\000\040\000A\000u\000t\000h\000P\000o\000s\000t\000D\000a\000t\000a) +endobj +237 0 obj +<< /S /GoTo /D (subsubsection.8.2.4.3) >> +endobj +240 0 obj +(\376\377\0008\000.\0002\000.\0004\000.\0003\000\040\000A\000u\000t\000h\000T\000y\000p\000e) +endobj +241 0 obj +<< /S /GoTo /D (subsubsection.8.2.4.4) >> +endobj +244 0 obj +(\376\377\0008\000.\0002\000.\0004\000.\0004\000\040\000T\000o\000k\000e\000n) +endobj +245 0 obj +<< /S /GoTo /D (subsubsection.8.2.4.5) >> +endobj +248 0 obj +(\376\377\0008\000.\0002\000.\0004\000.\0005\000\040\000U\000s\000e\000r\000I\000d) +endobj +249 0 obj +<< /S /GoTo /D (section.8.3) >> +endobj +252 0 obj +(\376\377\0008\000.\0003\000\040\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000V\000a\000l\000u\000e\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +253 0 obj +<< /S /GoTo /D (subsection.8.3.1) >> +endobj +256 0 obj +(\376\377\0008\000.\0003\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +257 0 obj +<< /S /GoTo /D (subsection.8.3.2) >> +endobj +260 0 obj +(\376\377\0008\000.\0003\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +261 0 obj +<< /S /GoTo /D (subsubsection.8.3.2.1) >> +endobj +264 0 obj +(\376\377\0008\000.\0003\000.\0002\000.\0001\000\040\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000V\000a\000l\000u\000e\000s) +endobj +265 0 obj +<< /S /GoTo /D (subsubsection.8.3.2.2) >> +endobj +268 0 obj +(\376\377\0008\000.\0003\000.\0002\000.\0002\000\040\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000V\000a\000l\000u\000e\000s) +endobj +269 0 obj +<< /S /GoTo /D (subsection.8.3.3) >> +endobj +272 0 obj +(\376\377\0008\000.\0003\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +273 0 obj +<< /S /GoTo /D (subsubsection.8.3.3.1) >> +endobj +276 0 obj +(\376\377\0008\000.\0003\000.\0003\000.\0001\000\040\000A\000d\000d\000A\000u\000t\000h\000P\000a\000r\000a\000m\000e\000t\000e\000r) +endobj +277 0 obj +<< /S /GoTo /D (subsubsection.8.3.3.2) >> +endobj +280 0 obj +(\376\377\0008\000.\0003\000.\0003\000.\0002\000\040\000S\000e\000t\000A\000u\000t\000h\000P\000o\000s\000t\000D\000a\000t\000a) +endobj +281 0 obj +<< /S /GoTo /D (subsubsection.8.3.3.3) >> +endobj +284 0 obj +(\376\377\0008\000.\0003\000.\0003\000.\0003\000\040\000S\000e\000t\000A\000u\000t\000h\000P\000o\000s\000t\000D\000a\000t\000a) +endobj +285 0 obj +<< /S /GoTo /D (subsubsection.8.3.3.4) >> +endobj +288 0 obj +(\376\377\0008\000.\0003\000.\0003\000.\0004\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +289 0 obj +<< /S /GoTo /D (subsection.8.3.4) >> +endobj +292 0 obj +(\376\377\0008\000.\0003\000.\0004\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +293 0 obj +<< /S /GoTo /D (subsubsection.8.3.4.1) >> +endobj +296 0 obj +(\376\377\0008\000.\0003\000.\0004\000.\0001\000\040\000A\000u\000t\000h\000G\000e\000t\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s) +endobj +297 0 obj +<< /S /GoTo /D (subsubsection.8.3.4.2) >> +endobj +300 0 obj +(\376\377\0008\000.\0003\000.\0004\000.\0002\000\040\000A\000u\000t\000h\000P\000o\000s\000t\000D\000a\000t\000a) +endobj +301 0 obj +<< /S /GoTo /D (subsubsection.8.3.4.3) >> +endobj +304 0 obj +(\376\377\0008\000.\0003\000.\0004\000.\0003\000\040\000A\000u\000t\000h\000T\000y\000p\000e) +endobj +305 0 obj +<< /S /GoTo /D (subsubsection.8.3.4.4) >> +endobj +308 0 obj +(\376\377\0008\000.\0003\000.\0004\000.\0004\000\040\000T\000o\000k\000e\000n) +endobj +309 0 obj +<< /S /GoTo /D (subsubsection.8.3.4.5) >> +endobj +312 0 obj +(\376\377\0008\000.\0003\000.\0004\000.\0005\000\040\000U\000s\000e\000r\000I\000d) +endobj +313 0 obj +<< /S /GoTo /D (section.8.4) >> +endobj +316 0 obj +(\376\377\0008\000.\0004\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000C\000h\000a\000t\000C\000h\000a\000n\000n\000e\000l\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +317 0 obj +<< /S /GoTo /D (subsection.8.4.1) >> +endobj +320 0 obj +(\376\377\0008\000.\0004\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +321 0 obj +<< /S /GoTo /D (subsection.8.4.2) >> +endobj +324 0 obj +(\376\377\0008\000.\0004\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +325 0 obj +<< /S /GoTo /D (subsubsection.8.4.2.1) >> +endobj +328 0 obj +(\376\377\0008\000.\0004\000.\0002\000.\0001\000\040\000C\000h\000a\000t\000C\000h\000a\000n\000n\000e\000l) +endobj +329 0 obj +<< /S /GoTo /D (subsection.8.4.3) >> +endobj +332 0 obj +(\376\377\0008\000.\0004\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +333 0 obj +<< /S /GoTo /D (subsubsection.8.4.3.1) >> +endobj +336 0 obj +(\376\377\0008\000.\0004\000.\0003\000.\0001\000\040\000A\000d\000d) +endobj +337 0 obj +<< /S /GoTo /D (subsubsection.8.4.3.2) >> +endobj +340 0 obj +(\376\377\0008\000.\0004\000.\0003\000.\0002\000\040\000A\000d\000d) +endobj +341 0 obj +<< /S /GoTo /D (subsubsection.8.4.3.3) >> +endobj +344 0 obj +(\376\377\0008\000.\0004\000.\0003\000.\0003\000\040\000C\000l\000e\000a\000r\000M\000e\000s\000s\000a\000g\000e\000s) +endobj +345 0 obj +<< /S /GoTo /D (subsubsection.8.4.3.4) >> +endobj +348 0 obj +(\376\377\0008\000.\0004\000.\0003\000.\0004\000\040\000T\000o\000S\000t\000r\000i\000n\000g\000M\000e\000s\000s\000a\000g\000e\000s) +endobj +349 0 obj +<< /S /GoTo /D (subsubsection.8.4.3.5) >> +endobj +352 0 obj +(\376\377\0008\000.\0004\000.\0003\000.\0005\000\040\000T\000r\000u\000n\000c\000a\000t\000e\000M\000e\000s\000s\000a\000g\000e\000s) +endobj +353 0 obj +<< /S /GoTo /D (subsection.8.4.4) >> +endobj +356 0 obj +(\376\377\0008\000.\0004\000.\0004\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +357 0 obj +<< /S /GoTo /D (subsubsection.8.4.4.1) >> +endobj +360 0 obj +(\376\377\0008\000.\0004\000.\0004\000.\0001\000\040\000M\000e\000s\000s\000a\000g\000e\000L\000i\000m\000i\000t) +endobj +361 0 obj +<< /S /GoTo /D (subsubsection.8.4.4.2) >> +endobj +364 0 obj +(\376\377\0008\000.\0004\000.\0004\000.\0002\000\040\000M\000e\000s\000s\000a\000g\000e\000s) +endobj +365 0 obj +<< /S /GoTo /D (subsubsection.8.4.4.3) >> +endobj +368 0 obj +(\376\377\0008\000.\0004\000.\0004\000.\0003\000\040\000N\000a\000m\000e) +endobj +369 0 obj +<< /S /GoTo /D (subsubsection.8.4.4.4) >> +endobj +372 0 obj +(\376\377\0008\000.\0004\000.\0004\000.\0004\000\040\000S\000e\000n\000d\000e\000r\000s) +endobj +373 0 obj +<< /S /GoTo /D (subsection.8.4.5) >> +endobj +376 0 obj +(\376\377\0008\000.\0004\000.\0005\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +377 0 obj +<< /S /GoTo /D (subsubsection.8.4.5.1) >> +endobj +380 0 obj +(\376\377\0008\000.\0004\000.\0005\000.\0001\000\040\000I\000s\000P\000r\000i\000v\000a\000t\000e) +endobj +381 0 obj +<< /S /GoTo /D (subsubsection.8.4.5.2) >> +endobj +384 0 obj +(\376\377\0008\000.\0004\000.\0005\000.\0002\000\040\000M\000e\000s\000s\000a\000g\000e\000C\000o\000u\000n\000t) +endobj +385 0 obj +<< /S /GoTo /D (section.8.5) >> +endobj +388 0 obj +(\376\377\0008\000.\0005\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000C\000h\000a\000t\000C\000l\000i\000e\000n\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +389 0 obj +<< /S /GoTo /D (subsection.8.5.1) >> +endobj +392 0 obj +(\376\377\0008\000.\0005\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +393 0 obj +<< /S /GoTo /D (subsection.8.5.2) >> +endobj +396 0 obj +(\376\377\0008\000.\0005\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +397 0 obj +<< /S /GoTo /D (subsubsection.8.5.2.1) >> +endobj +400 0 obj +(\376\377\0008\000.\0005\000.\0002\000.\0001\000\040\000C\000h\000a\000t\000C\000l\000i\000e\000n\000t) +endobj +401 0 obj +<< /S /GoTo /D (subsection.8.5.3) >> +endobj +404 0 obj +(\376\377\0008\000.\0005\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +405 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.1) >> +endobj +408 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\000\040\000A\000d\000d\000F\000r\000i\000e\000n\000d\000s) +endobj +409 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.2) >> +endobj +412 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0002\000\040\000C\000a\000n\000C\000h\000a\000t\000I\000n\000C\000h\000a\000n\000n\000e\000l) +endobj +413 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.3) >> +endobj +416 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0003\000\040\000C\000o\000n\000n\000e\000c\000t) +endobj +417 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.4) >> +endobj +420 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0004\000\040\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t) +endobj +421 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.5) >> +endobj +424 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0005\000\040\000G\000e\000t\000P\000r\000i\000v\000a\000t\000e\000C\000h\000a\000n\000n\000e\000l\000N\000a\000m\000e\000B\000y\000U\000s\000e\000r) +endobj +425 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.6) >> +endobj +428 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0006\000\040\000P\000u\000b\000l\000i\000s\000h\000M\000e\000s\000s\000a\000g\000e) +endobj +429 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.7) >> +endobj +432 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0007\000\040\000R\000e\000m\000o\000v\000e\000F\000r\000i\000e\000n\000d\000s) +endobj +433 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.8) >> +endobj +436 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0008\000\040\000S\000e\000n\000d\000A\000c\000k\000s\000O\000n\000l\000y) +endobj +437 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.9) >> +endobj +440 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0009\000\040\000S\000e\000n\000d\000P\000r\000i\000v\000a\000t\000e\000M\000e\000s\000s\000a\000g\000e) +endobj +441 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.10) >> +endobj +444 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\0000\000\040\000S\000e\000n\000d\000P\000r\000i\000v\000a\000t\000e\000M\000e\000s\000s\000a\000g\000e) +endobj +445 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.11) >> +endobj +448 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\0001\000\040\000S\000e\000r\000v\000i\000c\000e) +endobj +449 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.12) >> +endobj +452 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\0002\000\040\000S\000e\000t\000O\000n\000l\000i\000n\000e\000S\000t\000a\000t\000u\000s) +endobj +453 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.13) >> +endobj +456 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\0003\000\040\000S\000e\000t\000O\000n\000l\000i\000n\000e\000S\000t\000a\000t\000u\000s) +endobj +457 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.14) >> +endobj +460 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\0004\000\040\000S\000t\000o\000p\000T\000h\000r\000e\000a\000d) +endobj +461 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.15) >> +endobj +464 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\0005\000\040\000S\000u\000b\000s\000c\000r\000i\000b\000e) +endobj +465 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.16) >> +endobj +468 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\0006\000\040\000S\000u\000b\000s\000c\000r\000i\000b\000e) +endobj +469 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.17) >> +endobj +472 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\0007\000\040\000T\000r\000y\000G\000e\000t\000C\000h\000a\000n\000n\000e\000l) +endobj +473 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.18) >> +endobj +476 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\0008\000\040\000T\000r\000y\000G\000e\000t\000C\000h\000a\000n\000n\000e\000l) +endobj +477 0 obj +<< /S /GoTo /D (subsubsection.8.5.3.19) >> +endobj +480 0 obj +(\376\377\0008\000.\0005\000.\0003\000.\0001\0009\000\040\000U\000n\000s\000u\000b\000s\000c\000r\000i\000b\000e) +endobj +481 0 obj +<< /S /GoTo /D (subsection.8.5.4) >> +endobj +484 0 obj +(\376\377\0008\000.\0005\000.\0004\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +485 0 obj +<< /S /GoTo /D (subsubsection.8.5.4.1) >> +endobj +488 0 obj +(\376\377\0008\000.\0005\000.\0004\000.\0001\000\040\000c\000h\000a\000t\000P\000e\000e\000r) +endobj +489 0 obj +<< /S /GoTo /D (subsubsection.8.5.4.2) >> +endobj +492 0 obj +(\376\377\0008\000.\0005\000.\0004\000.\0002\000\040\000M\000e\000s\000s\000a\000g\000e\000L\000i\000m\000i\000t) +endobj +493 0 obj +<< /S /GoTo /D (subsubsection.8.5.4.3) >> +endobj +496 0 obj +(\376\377\0008\000.\0005\000.\0004\000.\0003\000\040\000P\000r\000i\000v\000a\000t\000e\000C\000h\000a\000n\000n\000e\000l\000s) +endobj +497 0 obj +<< /S /GoTo /D (subsubsection.8.5.4.4) >> +endobj +500 0 obj +(\376\377\0008\000.\0005\000.\0004\000.\0004\000\040\000P\000u\000b\000l\000i\000c\000C\000h\000a\000n\000n\000e\000l\000s) +endobj +501 0 obj +<< /S /GoTo /D (subsection.8.5.5) >> +endobj +504 0 obj +(\376\377\0008\000.\0005\000.\0005\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +505 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.1) >> +endobj +508 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0001\000\040\000A\000p\000p\000I\000d) +endobj +509 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.2) >> +endobj +512 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0002\000\040\000A\000p\000p\000V\000e\000r\000s\000i\000o\000n) +endobj +513 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.3) >> +endobj +516 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0003\000\040\000A\000u\000t\000h\000V\000a\000l\000u\000e\000s) +endobj +517 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.4) >> +endobj +520 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0004\000\040\000C\000a\000n\000C\000h\000a\000t) +endobj +521 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.5) >> +endobj +524 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0005\000\040\000C\000h\000a\000t\000R\000e\000g\000i\000o\000n) +endobj +525 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.6) >> +endobj +528 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0006\000\040\000D\000e\000b\000u\000g\000O\000u\000t) +endobj +529 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.7) >> +endobj +532 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0007\000\040\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t\000e\000d\000C\000a\000u\000s\000e) +endobj +533 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.8) >> +endobj +536 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0008\000\040\000F\000r\000o\000n\000t\000e\000n\000d\000A\000d\000d\000r\000e\000s\000s) +endobj +537 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.9) >> +endobj +540 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0009\000\040\000N\000a\000m\000e\000S\000e\000r\000v\000e\000r\000A\000d\000d\000r\000e\000s\000s) +endobj +541 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.10) >> +endobj +544 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0001\0000\000\040\000S\000t\000a\000t\000e) +endobj +545 0 obj +<< /S /GoTo /D (subsubsection.8.5.5.11) >> +endobj +548 0 obj +(\376\377\0008\000.\0005\000.\0005\000.\0001\0001\000\040\000U\000s\000e\000r\000I\000d) +endobj +549 0 obj +<< /S /GoTo /D (section.8.6) >> +endobj +552 0 obj +(\376\377\0008\000.\0006\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000C\000h\000a\000t\000E\000v\000e\000n\000t\000C\000o\000d\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +553 0 obj +<< /S /GoTo /D (subsection.8.6.1) >> +endobj +556 0 obj +(\376\377\0008\000.\0006\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +557 0 obj +<< /S /GoTo /D (subsection.8.6.2) >> +endobj +560 0 obj +(\376\377\0008\000.\0006\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +561 0 obj +<< /S /GoTo /D (subsubsection.8.6.2.1) >> +endobj +564 0 obj +(\376\377\0008\000.\0006\000.\0002\000.\0001\000\040\000C\000h\000a\000t\000M\000e\000s\000s\000a\000g\000e\000s) +endobj +565 0 obj +<< /S /GoTo /D (subsubsection.8.6.2.2) >> +endobj +568 0 obj +(\376\377\0008\000.\0006\000.\0002\000.\0002\000\040\000F\000r\000i\000e\000n\000d\000s\000L\000i\000s\000t) +endobj +569 0 obj +<< /S /GoTo /D (subsubsection.8.6.2.3) >> +endobj +572 0 obj +(\376\377\0008\000.\0006\000.\0002\000.\0003\000\040\000P\000r\000i\000v\000a\000t\000e\000M\000e\000s\000s\000a\000g\000e) +endobj +573 0 obj +<< /S /GoTo /D (subsubsection.8.6.2.4) >> +endobj +576 0 obj +(\376\377\0008\000.\0006\000.\0002\000.\0004\000\040\000S\000t\000a\000t\000u\000s\000U\000p\000d\000a\000t\000e) +endobj +577 0 obj +<< /S /GoTo /D (subsubsection.8.6.2.5) >> +endobj +580 0 obj +(\376\377\0008\000.\0006\000.\0002\000.\0005\000\040\000S\000u\000b\000s\000c\000r\000i\000b\000e) +endobj +581 0 obj +<< /S /GoTo /D (subsubsection.8.6.2.6) >> +endobj +584 0 obj +(\376\377\0008\000.\0006\000.\0002\000.\0006\000\040\000U\000n\000s\000u\000b\000s\000c\000r\000i\000b\000e) +endobj +585 0 obj +<< /S /GoTo /D (subsubsection.8.6.2.7) >> +endobj +588 0 obj +(\376\377\0008\000.\0006\000.\0002\000.\0007\000\040\000U\000s\000e\000r\000s) +endobj +589 0 obj +<< /S /GoTo /D (section.8.7) >> +endobj +592 0 obj +(\376\377\0008\000.\0007\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000C\000h\000a\000t\000O\000p\000e\000r\000a\000t\000i\000o\000n\000C\000o\000d\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +593 0 obj +<< /S /GoTo /D (subsection.8.7.1) >> +endobj +596 0 obj +(\376\377\0008\000.\0007\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +597 0 obj +<< /S /GoTo /D (subsection.8.7.2) >> +endobj +600 0 obj +(\376\377\0008\000.\0007\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +601 0 obj +<< /S /GoTo /D (subsubsection.8.7.2.1) >> +endobj +604 0 obj +(\376\377\0008\000.\0007\000.\0002\000.\0001\000\040\000A\000d\000d\000F\000r\000i\000e\000n\000d\000s) +endobj +605 0 obj +<< /S /GoTo /D (subsubsection.8.7.2.2) >> +endobj +608 0 obj +(\376\377\0008\000.\0007\000.\0002\000.\0002\000\040\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000e) +endobj +609 0 obj +<< /S /GoTo /D (subsubsection.8.7.2.3) >> +endobj +612 0 obj +(\376\377\0008\000.\0007\000.\0002\000.\0003\000\040\000C\000h\000a\000n\000n\000e\000l\000H\000i\000s\000t\000o\000r\000y) +endobj +613 0 obj +<< /S /GoTo /D (subsubsection.8.7.2.4) >> +endobj +616 0 obj +(\376\377\0008\000.\0007\000.\0002\000.\0004\000\040\000P\000u\000b\000l\000i\000s\000h) +endobj +617 0 obj +<< /S /GoTo /D (subsubsection.8.7.2.5) >> +endobj +620 0 obj +(\376\377\0008\000.\0007\000.\0002\000.\0005\000\040\000R\000e\000m\000o\000v\000e\000F\000r\000i\000e\000n\000d\000s) +endobj +621 0 obj +<< /S /GoTo /D (subsubsection.8.7.2.6) >> +endobj +624 0 obj +(\376\377\0008\000.\0007\000.\0002\000.\0006\000\040\000S\000e\000n\000d\000P\000r\000i\000v\000a\000t\000e) +endobj +625 0 obj +<< /S /GoTo /D (subsubsection.8.7.2.7) >> +endobj +628 0 obj +(\376\377\0008\000.\0007\000.\0002\000.\0007\000\040\000S\000u\000b\000s\000c\000r\000i\000b\000e) +endobj +629 0 obj +<< /S /GoTo /D (subsubsection.8.7.2.8) >> +endobj +632 0 obj +(\376\377\0008\000.\0007\000.\0002\000.\0008\000\040\000U\000n\000s\000u\000b\000s\000c\000r\000i\000b\000e) +endobj +633 0 obj +<< /S /GoTo /D (subsubsection.8.7.2.9) >> +endobj +636 0 obj +(\376\377\0008\000.\0007\000.\0002\000.\0009\000\040\000U\000p\000d\000a\000t\000e\000S\000t\000a\000t\000u\000s) +endobj +637 0 obj +<< /S /GoTo /D (section.8.8) >> +endobj +640 0 obj +(\376\377\0008\000.\0008\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000C\000h\000a\000t\000P\000a\000r\000a\000m\000e\000t\000e\000r\000C\000o\000d\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +641 0 obj +<< /S /GoTo /D (subsection.8.8.1) >> +endobj +644 0 obj +(\376\377\0008\000.\0008\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +645 0 obj +<< /S /GoTo /D (subsection.8.8.2) >> +endobj +648 0 obj +(\376\377\0008\000.\0008\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +649 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.1) >> +endobj +652 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0001\000\040\000C\000h\000a\000n\000n\000e\000l) +endobj +653 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.2) >> +endobj +656 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0002\000\040\000C\000h\000a\000n\000n\000e\000l\000s) +endobj +657 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.3) >> +endobj +660 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0003\000\040\000C\000h\000a\000n\000n\000e\000l\000U\000s\000e\000r\000C\000o\000u\000n\000t) +endobj +661 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.4) >> +endobj +664 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0004\000\040\000F\000r\000i\000e\000n\000d\000s) +endobj +665 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.5) >> +endobj +668 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0005\000\040\000H\000i\000s\000t\000o\000r\000y\000L\000e\000n\000g\000t\000h) +endobj +669 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.6) >> +endobj +672 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0006\000\040\000M\000e\000s\000s\000a\000g\000e) +endobj +673 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.7) >> +endobj +676 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0007\000\040\000M\000e\000s\000s\000a\000g\000e\000s) +endobj +677 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.8) >> +endobj +680 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0008\000\040\000M\000s\000g\000I\000d) +endobj +681 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.9) >> +endobj +684 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0009\000\040\000M\000s\000g\000I\000d\000s) +endobj +685 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.10) >> +endobj +688 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0001\0000\000\040\000S\000e\000c\000r\000e\000t) +endobj +689 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.11) >> +endobj +692 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0001\0001\000\040\000S\000e\000n\000d\000e\000r) +endobj +693 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.12) >> +endobj +696 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0001\0002\000\040\000S\000e\000n\000d\000e\000r\000s) +endobj +697 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.13) >> +endobj +700 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0001\0003\000\040\000S\000k\000i\000p\000M\000e\000s\000s\000a\000g\000e) +endobj +701 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.14) >> +endobj +704 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0001\0004\000\040\000S\000t\000a\000t\000u\000s) +endobj +705 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.15) >> +endobj +708 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0001\0005\000\040\000S\000u\000b\000s\000c\000r\000i\000b\000e\000R\000e\000s\000u\000l\000t\000s) +endobj +709 0 obj +<< /S /GoTo /D (subsubsection.8.8.2.16) >> +endobj +712 0 obj +(\376\377\0008\000.\0008\000.\0002\000.\0001\0006\000\040\000U\000s\000e\000r\000I\000d) +endobj +713 0 obj +<< /S /GoTo /D (section.8.9) >> +endobj +716 0 obj +(\376\377\0008\000.\0009\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000C\000h\000a\000t\000P\000e\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +717 0 obj +<< /S /GoTo /D (subsection.8.9.1) >> +endobj +720 0 obj +(\376\377\0008\000.\0009\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +721 0 obj +<< /S /GoTo /D (subsection.8.9.2) >> +endobj +724 0 obj +(\376\377\0008\000.\0009\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +725 0 obj +<< /S /GoTo /D (subsubsection.8.9.2.1) >> +endobj +728 0 obj +(\376\377\0008\000.\0009\000.\0002\000.\0001\000\040\000C\000h\000a\000t\000P\000e\000e\000r) +endobj +729 0 obj +<< /S /GoTo /D (subsection.8.9.3) >> +endobj +732 0 obj +(\376\377\0008\000.\0009\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +733 0 obj +<< /S /GoTo /D (subsubsection.8.9.3.1) >> +endobj +736 0 obj +(\376\377\0008\000.\0009\000.\0003\000.\0001\000\040\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000e\000O\000n\000N\000a\000m\000e\000S\000e\000r\000v\000e\000r) +endobj +737 0 obj +<< /S /GoTo /D (subsubsection.8.9.3.2) >> +endobj +740 0 obj +(\376\377\0008\000.\0009\000.\0003\000.\0002\000\040\000C\000o\000n\000n\000e\000c\000t) +endobj +741 0 obj +<< /S /GoTo /D (subsection.8.9.4) >> +endobj +744 0 obj +(\376\377\0008\000.\0009\000.\0004\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +745 0 obj +<< /S /GoTo /D (subsubsection.8.9.4.1) >> +endobj +748 0 obj +(\376\377\0008\000.\0009\000.\0004\000.\0001\000\040\000N\000a\000m\000e\000S\000e\000r\000v\000e\000r\000H\000o\000s\000t) +endobj +749 0 obj +<< /S /GoTo /D (subsubsection.8.9.4.2) >> +endobj +752 0 obj +(\376\377\0008\000.\0009\000.\0004\000.\0002\000\040\000N\000a\000m\000e\000S\000e\000r\000v\000e\000r\000H\000t\000t\000p) +endobj +753 0 obj +<< /S /GoTo /D (subsection.8.9.5) >> +endobj +756 0 obj +(\376\377\0008\000.\0009\000.\0005\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +757 0 obj +<< /S /GoTo /D (subsubsection.8.9.5.1) >> +endobj +760 0 obj +(\376\377\0008\000.\0009\000.\0005\000.\0001\000\040\000N\000a\000m\000e\000S\000e\000r\000v\000e\000r\000A\000d\000d\000r\000e\000s\000s) +endobj +761 0 obj +<< /S /GoTo /D (section.8.10) >> +endobj +764 0 obj +(\376\377\0008\000.\0001\0000\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000C\000h\000a\000t\000U\000s\000e\000r\000S\000t\000a\000t\000u\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +765 0 obj +<< /S /GoTo /D (subsection.8.10.1) >> +endobj +768 0 obj +(\376\377\0008\000.\0001\0000\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +769 0 obj +<< /S /GoTo /D (subsection.8.10.2) >> +endobj +772 0 obj +(\376\377\0008\000.\0001\0000\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +773 0 obj +<< /S /GoTo /D (subsubsection.8.10.2.1) >> +endobj +776 0 obj +(\376\377\0008\000.\0001\0000\000.\0002\000.\0001\000\040\000A\000w\000a\000y) +endobj +777 0 obj +<< /S /GoTo /D (subsubsection.8.10.2.2) >> +endobj +780 0 obj +(\376\377\0008\000.\0001\0000\000.\0002\000.\0002\000\040\000D\000N\000D) +endobj +781 0 obj +<< /S /GoTo /D (subsubsection.8.10.2.3) >> +endobj +784 0 obj +(\376\377\0008\000.\0001\0000\000.\0002\000.\0003\000\040\000I\000n\000v\000i\000s\000i\000b\000l\000e) +endobj +785 0 obj +<< /S /GoTo /D (subsubsection.8.10.2.4) >> +endobj +788 0 obj +(\376\377\0008\000.\0001\0000\000.\0002\000.\0004\000\040\000L\000F\000G) +endobj +789 0 obj +<< /S /GoTo /D (subsubsection.8.10.2.5) >> +endobj +792 0 obj +(\376\377\0008\000.\0001\0000\000.\0002\000.\0005\000\040\000O\000f\000f\000l\000i\000n\000e) +endobj +793 0 obj +<< /S /GoTo /D (subsubsection.8.10.2.6) >> +endobj +796 0 obj +(\376\377\0008\000.\0001\0000\000.\0002\000.\0006\000\040\000O\000n\000l\000i\000n\000e) +endobj +797 0 obj +<< /S /GoTo /D (subsubsection.8.10.2.7) >> +endobj +800 0 obj +(\376\377\0008\000.\0001\0000\000.\0002\000.\0007\000\040\000P\000l\000a\000y\000i\000n\000g) +endobj +801 0 obj +<< /S /GoTo /D (section.8.11) >> +endobj +804 0 obj +(\376\377\0008\000.\0001\0001\000\040\000E\000n\000c\000r\000y\000p\000t\000i\000o\000n\000D\000a\000t\000a\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +805 0 obj +<< /S /GoTo /D (subsection.8.11.1) >> +endobj +808 0 obj +(\376\377\0008\000.\0001\0001\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +809 0 obj +<< /S /GoTo /D (subsubsection.8.11.1.1) >> +endobj +812 0 obj +(\376\377\0008\000.\0001\0001\000.\0001\000.\0001\000\040\000M\000o\000d\000e) +endobj +813 0 obj +<< /S /GoTo /D (subsubsection.8.11.1.2) >> +endobj +816 0 obj +(\376\377\0008\000.\0001\0001\000.\0001\000.\0002\000\040\000S\000e\000c\000r\000e\000t\0001) +endobj +817 0 obj +<< /S /GoTo /D (subsubsection.8.11.1.3) >> +endobj +820 0 obj +(\376\377\0008\000.\0001\0001\000.\0001\000.\0003\000\040\000S\000e\000c\000r\000e\000t\0002) +endobj +821 0 obj +<< /S /GoTo /D (section.8.12) >> +endobj +824 0 obj +(\376\377\0008\000.\0001\0002\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000E\000r\000r\000o\000r\000C\000o\000d\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +825 0 obj +<< /S /GoTo /D (subsection.8.12.1) >> +endobj +828 0 obj +(\376\377\0008\000.\0001\0002\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +829 0 obj +<< /S /GoTo /D (subsection.8.12.2) >> +endobj +832 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +833 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.1) >> +endobj +836 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0001\000\040\000C\000u\000s\000t\000o\000m\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000F\000a\000i\000l\000e\000d) +endobj +837 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.2) >> +endobj +840 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0002\000\040\000G\000a\000m\000e\000C\000l\000o\000s\000e\000d) +endobj +841 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.3) >> +endobj +844 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0003\000\040\000G\000a\000m\000e\000D\000o\000e\000s\000N\000o\000t\000E\000x\000i\000s\000t) +endobj +845 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.4) >> +endobj +848 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0004\000\040\000G\000a\000m\000e\000F\000u\000l\000l) +endobj +849 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.5) >> +endobj +852 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0005\000\040\000G\000a\000m\000e\000I\000d\000A\000l\000r\000e\000a\000d\000y\000E\000x\000i\000s\000t\000s) +endobj +853 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.6) >> +endobj +856 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0006\000\040\000I\000n\000t\000e\000r\000n\000a\000l\000S\000e\000r\000v\000e\000r\000E\000r\000r\000o\000r) +endobj +857 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.7) >> +endobj +860 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0007\000\040\000I\000n\000v\000a\000l\000i\000d\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n) +endobj +861 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.8) >> +endobj +864 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0008\000\040\000I\000n\000v\000a\000l\000i\000d\000O\000p\000e\000r\000a\000t\000i\000o\000n\000C\000o\000d\000e) +endobj +865 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.9) >> +endobj +868 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0009\000\040\000I\000n\000v\000a\000l\000i\000d\000R\000e\000g\000i\000o\000n) +endobj +869 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.10) >> +endobj +872 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0001\0000\000\040\000M\000a\000x\000C\000c\000u\000R\000e\000a\000c\000h\000e\000d) +endobj +873 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.11) >> +endobj +876 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0001\0001\000\040\000N\000o\000R\000a\000n\000d\000o\000m\000M\000a\000t\000c\000h\000F\000o\000u\000n\000d) +endobj +877 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.12) >> +endobj +880 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0001\0002\000\040\000O\000k) +endobj +881 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.13) >> +endobj +884 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0001\0003\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000N\000o\000t\000A\000l\000l\000o\000w\000e\000d\000I\000n\000C\000u\000r\000r\000e\000n\000t\000S\000t\000a\000t\000e) +endobj +885 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.14) >> +endobj +888 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0001\0004\000\040\000S\000e\000r\000v\000e\000r\000F\000u\000l\000l) +endobj +889 0 obj +<< /S /GoTo /D (subsubsection.8.12.2.15) >> +endobj +892 0 obj +(\376\377\0008\000.\0001\0002\000.\0002\000.\0001\0005\000\040\000U\000s\000e\000r\000B\000l\000o\000c\000k\000e\000d) +endobj +893 0 obj +<< /S /GoTo /D (section.8.13) >> +endobj +896 0 obj +(\376\377\0008\000.\0001\0003\000\040\000E\000r\000r\000o\000r\000C\000o\000d\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +897 0 obj +<< /S /GoTo /D (subsection.8.13.1) >> +endobj +900 0 obj +(\376\377\0008\000.\0001\0003\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +901 0 obj +<< /S /GoTo /D (subsection.8.13.2) >> +endobj +904 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +905 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.1) >> +endobj +908 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\000\040\000A\000l\000r\000e\000a\000d\000y\000M\000a\000t\000c\000h\000e\000d) +endobj +909 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.2) >> +endobj +912 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\000\040\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000T\000i\000c\000k\000e\000t\000E\000x\000p\000i\000r\000e\000d) +endobj +913 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.3) >> +endobj +916 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0003\000\040\000C\000u\000s\000t\000o\000m\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000F\000a\000i\000l\000e\000d) +endobj +917 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.4) >> +endobj +920 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0004\000\040\000E\000x\000t\000e\000r\000n\000a\000l\000H\000t\000t\000p\000C\000a\000l\000l\000F\000a\000i\000l\000e\000d) +endobj +921 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.5) >> +endobj +924 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0005\000\040\000G\000a\000m\000e\000C\000l\000o\000s\000e\000d) +endobj +925 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.6) >> +endobj +928 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0006\000\040\000G\000a\000m\000e\000D\000o\000e\000s\000N\000o\000t\000E\000x\000i\000s\000t) +endobj +929 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.7) >> +endobj +932 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0007\000\040\000G\000a\000m\000e\000F\000u\000l\000l) +endobj +933 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.8) >> +endobj +936 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0008\000\040\000G\000a\000m\000e\000I\000d\000A\000l\000r\000e\000a\000d\000y\000E\000x\000i\000s\000t\000s) +endobj +937 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.9) >> +endobj +940 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0009\000\040\000H\000t\000t\000p\000L\000i\000m\000i\000t\000R\000e\000a\000c\000h\000e\000d) +endobj +941 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.10) >> +endobj +944 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\0000\000\040\000I\000n\000t\000e\000r\000n\000a\000l\000S\000e\000r\000v\000e\000r\000E\000r\000r\000o\000r) +endobj +945 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.11) >> +endobj +948 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\0001\000\040\000I\000n\000v\000a\000l\000i\000d\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n) +endobj +949 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.12) >> +endobj +952 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\0002\000\040\000I\000n\000v\000a\000l\000i\000d\000E\000n\000c\000r\000y\000p\000t\000i\000o\000n\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s) +endobj +953 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.13) >> +endobj +956 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\0003\000\040\000I\000n\000v\000a\000l\000i\000d\000O\000p\000e\000r\000a\000t\000i\000o\000n) +endobj +957 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.14) >> +endobj +960 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\0004\000\040\000I\000n\000v\000a\000l\000i\000d\000O\000p\000e\000r\000a\000t\000i\000o\000n\000C\000o\000d\000e) +endobj +961 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.15) >> +endobj +964 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\0005\000\040\000I\000n\000v\000a\000l\000i\000d\000R\000e\000g\000i\000o\000n) +endobj +965 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.16) >> +endobj +968 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\0006\000\040\000J\000o\000i\000n\000F\000a\000i\000l\000e\000d\000F\000o\000u\000n\000d\000A\000c\000t\000i\000v\000e\000J\000o\000i\000n\000e\000r) +endobj +969 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.17) >> +endobj +972 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\0007\000\040\000J\000o\000i\000n\000F\000a\000i\000l\000e\000d\000F\000o\000u\000n\000d\000E\000x\000c\000l\000u\000d\000e\000d\000U\000s\000e\000r\000I\000d) +endobj +973 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.18) >> +endobj +976 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\0008\000\040\000J\000o\000i\000n\000F\000a\000i\000l\000e\000d\000F\000o\000u\000n\000d\000I\000n\000a\000c\000t\000i\000v\000e\000J\000o\000i\000n\000e\000r) +endobj +977 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.19) >> +endobj +980 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0001\0009\000\040\000J\000o\000i\000n\000F\000a\000i\000l\000e\000d\000P\000e\000e\000r\000A\000l\000r\000e\000a\000d\000y\000J\000o\000i\000n\000e\000d) +endobj +981 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.20) >> +endobj +984 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\0000\000\040\000J\000o\000i\000n\000F\000a\000i\000l\000e\000d\000W\000i\000t\000h\000R\000e\000j\000o\000i\000n\000e\000r\000N\000o\000t\000F\000o\000u\000n\000d) +endobj +985 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.21) >> +endobj +988 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\0001\000\040\000M\000a\000x\000C\000c\000u\000R\000e\000a\000c\000h\000e\000d) +endobj +989 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.22) >> +endobj +992 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\0002\000\040\000N\000o\000R\000a\000n\000d\000o\000m\000M\000a\000t\000c\000h\000F\000o\000u\000n\000d) +endobj +993 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.23) >> +endobj +996 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\0003\000\040\000O\000k) +endobj +997 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.24) >> +endobj +1000 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\0004\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000N\000o\000t\000A\000l\000l\000o\000w\000e\000d\000I\000n\000C\000u\000r\000r\000e\000n\000t\000S\000t\000a\000t\000e) +endobj +1001 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.25) >> +endobj +1004 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\0005\000\040\000P\000l\000u\000g\000i\000n\000M\000i\000s\000m\000a\000t\000c\000h) +endobj +1005 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.26) >> +endobj +1008 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\0006\000\040\000P\000l\000u\000g\000i\000n\000R\000e\000p\000o\000r\000t\000e\000d\000E\000r\000r\000o\000r) +endobj +1009 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.27) >> +endobj +1012 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\0007\000\040\000S\000e\000r\000v\000e\000r\000F\000u\000l\000l) +endobj +1013 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.28) >> +endobj +1016 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\0008\000\040\000S\000l\000o\000t\000E\000r\000r\000o\000r) +endobj +1017 0 obj +<< /S /GoTo /D (subsubsection.8.13.2.29) >> +endobj +1020 0 obj +(\376\377\0008\000.\0001\0003\000.\0002\000.\0002\0009\000\040\000U\000s\000e\000r\000B\000l\000o\000c\000k\000e\000d) +endobj +1021 0 obj +<< /S /GoTo /D (section.8.14) >> +endobj +1024 0 obj +(\376\377\0008\000.\0001\0004\000\040\000E\000v\000e\000n\000t\000C\000o\000d\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1025 0 obj +<< /S /GoTo /D (subsection.8.14.1) >> +endobj +1028 0 obj +(\376\377\0008\000.\0001\0004\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1029 0 obj +<< /S /GoTo /D (subsection.8.14.2) >> +endobj +1032 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1033 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.1) >> +endobj +1036 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0001\000\040\000A\000p\000p\000S\000t\000a\000t\000s) +endobj +1037 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.2) >> +endobj +1040 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0002\000\040\000A\000u\000t\000h\000E\000v\000e\000n\000t) +endobj +1041 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.3) >> +endobj +1044 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0003\000\040\000A\000z\000u\000r\000e\000N\000o\000d\000e\000I\000n\000f\000o) +endobj +1045 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.4) >> +endobj +1048 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0004\000\040\000C\000a\000c\000h\000e\000S\000l\000i\000c\000e\000C\000h\000a\000n\000g\000e\000d) +endobj +1049 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.5) >> +endobj +1052 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0005\000\040\000E\000r\000r\000o\000r\000I\000n\000f\000o) +endobj +1053 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.6) >> +endobj +1056 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0006\000\040\000G\000a\000m\000e\000L\000i\000s\000t) +endobj +1057 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.7) >> +endobj +1060 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0007\000\040\000G\000a\000m\000e\000L\000i\000s\000t\000U\000p\000d\000a\000t\000e) +endobj +1061 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.8) >> +endobj +1064 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0008\000\040\000J\000o\000i\000n) +endobj +1065 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.9) >> +endobj +1068 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0009\000\040\000L\000e\000a\000v\000e) +endobj +1069 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.10) >> +endobj +1072 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0001\0000\000\040\000L\000o\000b\000b\000y\000S\000t\000a\000t\000s) +endobj +1073 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.11) >> +endobj +1076 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0001\0001\000\040\000M\000a\000t\000c\000h) +endobj +1077 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.12) >> +endobj +1080 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0001\0002\000\040\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s\000C\000h\000a\000n\000g\000e\000d) +endobj +1081 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.13) >> +endobj +1084 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0001\0003\000\040\000Q\000u\000e\000u\000e\000S\000t\000a\000t\000e) +endobj +1085 0 obj +<< /S /GoTo /D (subsubsection.8.14.2.14) >> +endobj +1088 0 obj +(\376\377\0008\000.\0001\0004\000.\0002\000.\0001\0004\000\040\000S\000e\000t\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +1089 0 obj +<< /S /GoTo /D (section.8.15) >> +endobj +1092 0 obj +(\376\377\0008\000.\0001\0005\000\040\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1093 0 obj +<< /S /GoTo /D (subsection.8.15.1) >> +endobj +1096 0 obj +(\376\377\0008\000.\0001\0005\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1097 0 obj +<< /S /GoTo /D (subsection.8.15.2) >> +endobj +1100 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1101 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.1) >> +endobj +1104 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0001\000\040\000A\000l\000m\000o\000s\000t\000E\000q\000u\000a\000l\000s) +endobj +1105 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.2) >> +endobj +1108 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0002\000\040\000A\000l\000m\000o\000s\000t\000E\000q\000u\000a\000l\000s) +endobj +1109 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.3) >> +endobj +1112 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0003\000\040\000A\000l\000m\000o\000s\000t\000E\000q\000u\000a\000l\000s) +endobj +1113 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.4) >> +endobj +1116 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0004\000\040\000A\000l\000m\000o\000s\000t\000E\000q\000u\000a\000l\000s) +endobj +1117 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.5) >> +endobj +1120 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0005\000\040\000C\000o\000n\000t\000a\000i\000n\000s) +endobj +1121 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.6) >> +endobj +1124 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0006\000\040\000G\000e\000t\000C\000a\000c\000h\000e\000d\000P\000a\000r\000e\000m\000e\000t\000e\000r\000s) +endobj +1125 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.7) >> +endobj +1128 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0007\000\040\000G\000e\000t\000P\000h\000o\000t\000o\000n\000V\000i\000e\000w) +endobj +1129 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.8) >> +endobj +1132 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0008\000\040\000G\000e\000t\000P\000h\000o\000t\000o\000n\000V\000i\000e\000w\000s\000I\000n\000C\000h\000i\000l\000d\000r\000e\000n) +endobj +1133 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.9) >> +endobj +1136 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0009\000\040\000M\000e\000r\000g\000e) +endobj +1137 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.10) >> +endobj +1140 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0001\0000\000\040\000M\000e\000r\000g\000e\000S\000t\000r\000i\000n\000g\000K\000e\000y\000s) +endobj +1141 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.11) >> +endobj +1144 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0001\0001\000\040\000S\000t\000r\000i\000p\000K\000e\000y\000s\000W\000i\000t\000h\000N\000u\000l\000l\000V\000a\000l\000u\000e\000s) +endobj +1145 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.12) >> +endobj +1148 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0001\0002\000\040\000S\000t\000r\000i\000p\000T\000o\000S\000t\000r\000i\000n\000g\000K\000e\000y\000s) +endobj +1149 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.13) >> +endobj +1152 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0001\0003\000\040\000T\000o\000S\000t\000r\000i\000n\000g\000F\000u\000l\000l) +endobj +1153 0 obj +<< /S /GoTo /D (subsubsection.8.15.2.14) >> +endobj +1156 0 obj +(\376\377\0008\000.\0001\0005\000.\0002\000.\0001\0004\000\040\000T\000o\000S\000t\000r\000i\000n\000g\000F\000u\000l\000l) +endobj +1157 0 obj +<< /S /GoTo /D (subsection.8.15.3) >> +endobj +1160 0 obj +(\376\377\0008\000.\0001\0005\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1161 0 obj +<< /S /GoTo /D (subsubsection.8.15.3.1) >> +endobj +1164 0 obj +(\376\377\0008\000.\0001\0005\000.\0003\000.\0001\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s\000O\000f\000M\000e\000t\000h\000o\000d\000s) +endobj +1165 0 obj +<< /S /GoTo /D (section.8.16) >> +endobj +1168 0 obj +(\376\377\0008\000.\0001\0006\000\040\000F\000r\000i\000e\000n\000d\000I\000n\000f\000o\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1169 0 obj +<< /S /GoTo /D (subsection.8.16.1) >> +endobj +1172 0 obj +(\376\377\0008\000.\0001\0006\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1173 0 obj +<< /S /GoTo /D (subsection.8.16.2) >> +endobj +1176 0 obj +(\376\377\0008\000.\0001\0006\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1177 0 obj +<< /S /GoTo /D (subsubsection.8.16.2.1) >> +endobj +1180 0 obj +(\376\377\0008\000.\0001\0006\000.\0002\000.\0001\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +1181 0 obj +<< /S /GoTo /D (subsection.8.16.3) >> +endobj +1184 0 obj +(\376\377\0008\000.\0001\0006\000.\0003\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1185 0 obj +<< /S /GoTo /D (subsubsection.8.16.3.1) >> +endobj +1188 0 obj +(\376\377\0008\000.\0001\0006\000.\0003\000.\0001\000\040\000I\000s\000I\000n\000R\000o\000o\000m) +endobj +1189 0 obj +<< /S /GoTo /D (subsubsection.8.16.3.2) >> +endobj +1192 0 obj +(\376\377\0008\000.\0001\0006\000.\0003\000.\0002\000\040\000I\000s\000O\000n\000l\000i\000n\000e) +endobj +1193 0 obj +<< /S /GoTo /D (subsubsection.8.16.3.3) >> +endobj +1196 0 obj +(\376\377\0008\000.\0001\0006\000.\0003\000.\0003\000\040\000N\000a\000m\000e) +endobj +1197 0 obj +<< /S /GoTo /D (subsubsection.8.16.3.4) >> +endobj +1200 0 obj +(\376\377\0008\000.\0001\0006\000.\0003\000.\0004\000\040\000R\000o\000o\000m) +endobj +1201 0 obj +<< /S /GoTo /D (section.8.17) >> +endobj +1204 0 obj +(\376\377\0008\000.\0001\0007\000\040\000G\000a\000m\000e\000O\000b\000j\000e\000c\000t\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1205 0 obj +<< /S /GoTo /D (subsection.8.17.1) >> +endobj +1208 0 obj +(\376\377\0008\000.\0001\0007\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1209 0 obj +<< /S /GoTo /D (subsection.8.17.2) >> +endobj +1212 0 obj +(\376\377\0008\000.\0001\0007\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1213 0 obj +<< /S /GoTo /D (subsubsection.8.17.2.1) >> +endobj +1216 0 obj +(\376\377\0008\000.\0001\0007\000.\0002\000.\0001\000\040\000G\000e\000t\000A\000c\000t\000i\000v\000e) +endobj +1217 0 obj +<< /S /GoTo /D (section.8.18) >> +endobj +1220 0 obj +(\376\377\0008\000.\0001\0008\000\040\000G\000a\000m\000e\000P\000r\000o\000p\000e\000r\000t\000y\000K\000e\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1221 0 obj +<< /S /GoTo /D (subsection.8.18.1) >> +endobj +1224 0 obj +(\376\377\0008\000.\0001\0008\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1225 0 obj +<< /S /GoTo /D (subsection.8.18.2) >> +endobj +1228 0 obj +(\376\377\0008\000.\0001\0008\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1229 0 obj +<< /S /GoTo /D (subsubsection.8.18.2.1) >> +endobj +1232 0 obj +(\376\377\0008\000.\0001\0008\000.\0002\000.\0001\000\040\000C\000l\000e\000a\000n\000u\000p\000C\000a\000c\000h\000e\000O\000n\000L\000e\000a\000v\000e) +endobj +1233 0 obj +<< /S /GoTo /D (subsubsection.8.18.2.2) >> +endobj +1236 0 obj +(\376\377\0008\000.\0001\0008\000.\0002\000.\0002\000\040\000E\000x\000p\000e\000c\000t\000e\000d\000U\000s\000e\000r\000s) +endobj +1237 0 obj +<< /S /GoTo /D (subsubsection.8.18.2.3) >> +endobj +1240 0 obj +(\376\377\0008\000.\0001\0008\000.\0002\000.\0003\000\040\000I\000s\000O\000p\000e\000n) +endobj +1241 0 obj +<< /S /GoTo /D (subsubsection.8.18.2.4) >> +endobj +1244 0 obj +(\376\377\0008\000.\0001\0008\000.\0002\000.\0004\000\040\000I\000s\000V\000i\000s\000i\000b\000l\000e) +endobj +1245 0 obj +<< /S /GoTo /D (subsubsection.8.18.2.5) >> +endobj +1248 0 obj +(\376\377\0008\000.\0001\0008\000.\0002\000.\0005\000\040\000M\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t\000I\000d) +endobj +1249 0 obj +<< /S /GoTo /D (subsubsection.8.18.2.6) >> +endobj +1252 0 obj +(\376\377\0008\000.\0001\0008\000.\0002\000.\0006\000\040\000M\000a\000x\000P\000l\000a\000y\000e\000r\000s) +endobj +1253 0 obj +<< /S /GoTo /D (subsubsection.8.18.2.7) >> +endobj +1256 0 obj +(\376\377\0008\000.\0001\0008\000.\0002\000.\0007\000\040\000P\000l\000a\000y\000e\000r\000C\000o\000u\000n\000t) +endobj +1257 0 obj +<< /S /GoTo /D (subsubsection.8.18.2.8) >> +endobj +1260 0 obj +(\376\377\0008\000.\0001\0008\000.\0002\000.\0008\000\040\000P\000r\000o\000p\000s\000L\000i\000s\000t\000e\000d\000I\000n\000L\000o\000b\000b\000y) +endobj +1261 0 obj +<< /S /GoTo /D (subsubsection.8.18.2.9) >> +endobj +1264 0 obj +(\376\377\0008\000.\0001\0008\000.\0002\000.\0009\000\040\000R\000e\000m\000o\000v\000e\000d) +endobj +1265 0 obj +<< /S /GoTo /D (section.8.19) >> +endobj +1268 0 obj +(\376\377\0008\000.\0001\0009\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000G\000U\000I\000.\000G\000i\000z\000m\000o\000T\000y\000p\000e\000D\000r\000a\000w\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1269 0 obj +<< /S /GoTo /D (subsection.8.19.1) >> +endobj +1272 0 obj +(\376\377\0008\000.\0001\0009\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1273 0 obj +<< /S /GoTo /D (subsubsection.8.19.1.1) >> +endobj +1276 0 obj +(\376\377\0008\000.\0001\0009\000.\0001\000.\0001\000\040\000D\000r\000a\000w) +endobj +1277 0 obj +<< /S /GoTo /D (section.8.20) >> +endobj +1280 0 obj +(\376\377\0008\000.\0002\0000\000\040\000H\000e\000l\000p\000U\000R\000L\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1281 0 obj +<< /S /GoTo /D (subsection.8.20.1) >> +endobj +1284 0 obj +(\376\377\0008\000.\0002\0000\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1285 0 obj +<< /S /GoTo /D (subsection.8.20.2) >> +endobj +1288 0 obj +(\376\377\0008\000.\0002\0000\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1289 0 obj +<< /S /GoTo /D (subsubsection.8.20.2.1) >> +endobj +1292 0 obj +(\376\377\0008\000.\0002\0000\000.\0002\000.\0001\000\040\000H\000e\000l\000p\000U\000R\000L) +endobj +1293 0 obj +<< /S /GoTo /D (section.8.21) >> +endobj +1296 0 obj +(\376\377\0008\000.\0002\0001\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000I\000C\000h\000a\000t\000C\000l\000i\000e\000n\000t\000L\000i\000s\000t\000e\000n\000e\000r\000\040\000I\000n\000t\000e\000r\000f\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1297 0 obj +<< /S /GoTo /D (subsection.8.21.1) >> +endobj +1300 0 obj +(\376\377\0008\000.\0002\0001\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1301 0 obj +<< /S /GoTo /D (subsection.8.21.2) >> +endobj +1304 0 obj +(\376\377\0008\000.\0002\0001\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1305 0 obj +<< /S /GoTo /D (subsubsection.8.21.2.1) >> +endobj +1308 0 obj +(\376\377\0008\000.\0002\0001\000.\0002\000.\0001\000\040\000D\000e\000b\000u\000g\000R\000e\000t\000u\000r\000n) +endobj +1309 0 obj +<< /S /GoTo /D (subsubsection.8.21.2.2) >> +endobj +1312 0 obj +(\376\377\0008\000.\0002\0001\000.\0002\000.\0002\000\040\000O\000n\000C\000h\000a\000t\000S\000t\000a\000t\000e\000C\000h\000a\000n\000g\000e) +endobj +1313 0 obj +<< /S /GoTo /D (subsubsection.8.21.2.3) >> +endobj +1316 0 obj +(\376\377\0008\000.\0002\0001\000.\0002\000.\0003\000\040\000O\000n\000C\000o\000n\000n\000e\000c\000t\000e\000d) +endobj +1317 0 obj +<< /S /GoTo /D (subsubsection.8.21.2.4) >> +endobj +1320 0 obj +(\376\377\0008\000.\0002\0001\000.\0002\000.\0004\000\040\000O\000n\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t\000e\000d) +endobj +1321 0 obj +<< /S /GoTo /D (subsubsection.8.21.2.5) >> +endobj +1324 0 obj +(\376\377\0008\000.\0002\0001\000.\0002\000.\0005\000\040\000O\000n\000G\000e\000t\000M\000e\000s\000s\000a\000g\000e\000s) +endobj +1325 0 obj +<< /S /GoTo /D (subsubsection.8.21.2.6) >> +endobj +1328 0 obj +(\376\377\0008\000.\0002\0001\000.\0002\000.\0006\000\040\000O\000n\000P\000r\000i\000v\000a\000t\000e\000M\000e\000s\000s\000a\000g\000e) +endobj +1329 0 obj +<< /S /GoTo /D (subsubsection.8.21.2.7) >> +endobj +1332 0 obj +(\376\377\0008\000.\0002\0001\000.\0002\000.\0007\000\040\000O\000n\000S\000t\000a\000t\000u\000s\000U\000p\000d\000a\000t\000e) +endobj +1333 0 obj +<< /S /GoTo /D (subsubsection.8.21.2.8) >> +endobj +1336 0 obj +(\376\377\0008\000.\0002\0001\000.\0002\000.\0008\000\040\000O\000n\000S\000u\000b\000s\000c\000r\000i\000b\000e\000d) +endobj +1337 0 obj +<< /S /GoTo /D (subsubsection.8.21.2.9) >> +endobj +1340 0 obj +(\376\377\0008\000.\0002\0001\000.\0002\000.\0009\000\040\000O\000n\000U\000n\000s\000u\000b\000s\000c\000r\000i\000b\000e\000d) +endobj +1341 0 obj +<< /S /GoTo /D (section.8.22) >> +endobj +1344 0 obj +(\376\377\0008\000.\0002\0002\000\040\000I\000P\000u\000n\000C\000a\000l\000l\000b\000a\000c\000k\000s\000\040\000I\000n\000t\000e\000r\000f\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1345 0 obj +<< /S /GoTo /D (subsection.8.22.1) >> +endobj +1348 0 obj +(\376\377\0008\000.\0002\0002\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1349 0 obj +<< /S /GoTo /D (subsection.8.22.2) >> +endobj +1352 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1353 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.1) >> +endobj +1356 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\000\040\000O\000n\000C\000o\000n\000n\000e\000c\000t\000e\000d\000T\000o\000M\000a\000s\000t\000e\000r) +endobj +1357 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.2) >> +endobj +1360 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0002\000\040\000O\000n\000C\000o\000n\000n\000e\000c\000t\000e\000d\000T\000o\000P\000h\000o\000t\000o\000n) +endobj +1361 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.3) >> +endobj +1364 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0003\000\040\000O\000n\000C\000o\000n\000n\000e\000c\000t\000i\000o\000n\000F\000a\000i\000l) +endobj +1365 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.4) >> +endobj +1368 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0004\000\040\000O\000n\000C\000r\000e\000a\000t\000e\000d\000R\000o\000o\000m) +endobj +1369 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.5) >> +endobj +1372 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0005\000\040\000O\000n\000C\000u\000s\000t\000o\000m\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000F\000a\000i\000l\000e\000d) +endobj +1373 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.6) >> +endobj +1376 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0006\000\040\000O\000n\000C\000u\000s\000t\000o\000m\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000R\000e\000s\000p\000o\000n\000s\000e) +endobj +1377 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.7) >> +endobj +1380 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0007\000\040\000O\000n\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t\000e\000d\000F\000r\000o\000m\000P\000h\000o\000t\000o\000n) +endobj +1381 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.8) >> +endobj +1384 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0008\000\040\000O\000n\000F\000a\000i\000l\000e\000d\000T\000o\000C\000o\000n\000n\000e\000c\000t\000T\000o\000P\000h\000o\000t\000o\000n) +endobj +1385 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.9) >> +endobj +1388 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0009\000\040\000O\000n\000J\000o\000i\000n\000e\000d\000L\000o\000b\000b\000y) +endobj +1389 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.10) >> +endobj +1392 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\0000\000\040\000O\000n\000J\000o\000i\000n\000e\000d\000R\000o\000o\000m) +endobj +1393 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.11) >> +endobj +1396 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\0001\000\040\000O\000n\000L\000e\000f\000t\000L\000o\000b\000b\000y) +endobj +1397 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.12) >> +endobj +1400 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\0002\000\040\000O\000n\000L\000e\000f\000t\000R\000o\000o\000m) +endobj +1401 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.13) >> +endobj +1404 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\0003\000\040\000O\000n\000L\000o\000b\000b\000y\000S\000t\000a\000t\000i\000s\000t\000i\000c\000s\000U\000p\000d\000a\000t\000e) +endobj +1405 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.14) >> +endobj +1408 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\0004\000\040\000O\000n\000M\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t\000S\000w\000i\000t\000c\000h\000e\000d) +endobj +1409 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.15) >> +endobj +1412 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\0005\000\040\000O\000n\000O\000w\000n\000e\000r\000s\000h\000i\000p\000R\000e\000q\000u\000e\000s\000t) +endobj +1413 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.16) >> +endobj +1416 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\0006\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000C\000r\000e\000a\000t\000e\000R\000o\000o\000m\000F\000a\000i\000l\000e\000d) +endobj +1417 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.17) >> +endobj +1420 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\0007\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000C\000u\000s\000t\000o\000m\000R\000o\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s\000C\000h\000a\000n\000g\000e\000d) +endobj +1421 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.18) >> +endobj +1424 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\0008\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000I\000n\000s\000t\000a\000n\000t\000i\000a\000t\000e) +endobj +1425 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.19) >> +endobj +1428 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0001\0009\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000J\000o\000i\000n\000R\000o\000o\000m\000F\000a\000i\000l\000e\000d) +endobj +1429 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.20) >> +endobj +1432 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0002\0000\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000M\000a\000x\000C\000c\000c\000u\000R\000e\000a\000c\000h\000e\000d) +endobj +1433 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.21) >> +endobj +1436 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0002\0001\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000P\000l\000a\000y\000e\000r\000C\000o\000n\000n\000e\000c\000t\000e\000d) +endobj +1437 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.22) >> +endobj +1440 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0002\0002\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000P\000l\000a\000y\000e\000r\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t\000e\000d) +endobj +1441 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.23) >> +endobj +1444 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0002\0003\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000P\000l\000a\000y\000e\000r\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s\000C\000h\000a\000n\000g\000e\000d) +endobj +1445 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.24) >> +endobj +1448 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0002\0004\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000R\000a\000n\000d\000o\000m\000J\000o\000i\000n\000F\000a\000i\000l\000e\000d) +endobj +1449 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.25) >> +endobj +1452 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0002\0005\000\040\000O\000n\000R\000e\000c\000e\000i\000v\000e\000d\000R\000o\000o\000m\000L\000i\000s\000t\000U\000p\000d\000a\000t\000e) +endobj +1453 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.26) >> +endobj +1456 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0002\0006\000\040\000O\000n\000U\000p\000d\000a\000t\000e\000d\000F\000r\000i\000e\000n\000d\000L\000i\000s\000t) +endobj +1457 0 obj +<< /S /GoTo /D (subsubsection.8.22.2.27) >> +endobj +1460 0 obj +(\376\377\0008\000.\0002\0002\000.\0002\000.\0002\0007\000\040\000O\000n\000W\000e\000b\000R\000p\000c\000R\000e\000s\000p\000o\000n\000s\000e) +endobj +1461 0 obj +<< /S /GoTo /D (section.8.23) >> +endobj +1464 0 obj +(\376\377\0008\000.\0002\0003\000\040\000I\000P\000u\000n\000O\000b\000s\000e\000r\000v\000a\000b\000l\000e\000\040\000I\000n\000t\000e\000r\000f\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1465 0 obj +<< /S /GoTo /D (subsection.8.23.1) >> +endobj +1468 0 obj +(\376\377\0008\000.\0002\0003\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1469 0 obj +<< /S /GoTo /D (section.8.24) >> +endobj +1472 0 obj +(\376\377\0008\000.\0002\0004\000\040\000I\000P\000u\000n\000P\000r\000e\000f\000a\000b\000P\000o\000o\000l\000\040\000I\000n\000t\000e\000r\000f\000a\000c\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1473 0 obj +<< /S /GoTo /D (subsection.8.24.1) >> +endobj +1476 0 obj +(\376\377\0008\000.\0002\0004\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1477 0 obj +<< /S /GoTo /D (subsection.8.24.2) >> +endobj +1480 0 obj +(\376\377\0008\000.\0002\0004\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1481 0 obj +<< /S /GoTo /D (subsubsection.8.24.2.1) >> +endobj +1484 0 obj +(\376\377\0008\000.\0002\0004\000.\0002\000.\0001\000\040\000D\000e\000s\000t\000r\000o\000y) +endobj +1485 0 obj +<< /S /GoTo /D (subsubsection.8.24.2.2) >> +endobj +1488 0 obj +(\376\377\0008\000.\0002\0004\000.\0002\000.\0002\000\040\000I\000n\000s\000t\000a\000n\000t\000i\000a\000t\000e) +endobj +1489 0 obj +<< /S /GoTo /D (section.8.25) >> +endobj +1492 0 obj +(\376\377\0008\000.\0002\0005\000\040\000P\000h\000o\000t\000o\000n\000.\000M\000o\000n\000o\000B\000e\000h\000a\000v\000i\000o\000u\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1493 0 obj +<< /S /GoTo /D (subsection.8.25.1) >> +endobj +1496 0 obj +(\376\377\0008\000.\0002\0005\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1497 0 obj +<< /S /GoTo /D (subsection.8.25.2) >> +endobj +1500 0 obj +(\376\377\0008\000.\0002\0005\000.\0002\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1501 0 obj +<< /S /GoTo /D (subsubsection.8.25.2.1) >> +endobj +1504 0 obj +(\376\377\0008\000.\0002\0005\000.\0002\000.\0001\000\040\000n\000e\000t\000w\000o\000r\000k\000V\000i\000e\000w) +endobj +1505 0 obj +<< /S /GoTo /D (subsubsection.8.25.2.2) >> +endobj +1508 0 obj +(\376\377\0008\000.\0002\0005\000.\0002\000.\0002\000\040\000p\000h\000o\000t\000o\000n\000V\000i\000e\000w) +endobj +1509 0 obj +<< /S /GoTo /D (section.8.26) >> +endobj +1512 0 obj +(\376\377\0008\000.\0002\0006\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000C\000o\000d\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1513 0 obj +<< /S /GoTo /D (subsection.8.26.1) >> +endobj +1516 0 obj +(\376\377\0008\000.\0002\0006\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1517 0 obj +<< /S /GoTo /D (subsection.8.26.2) >> +endobj +1520 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1521 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.1) >> +endobj +1524 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\000\040\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000e) +endobj +1525 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.2) >> +endobj +1528 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0002\000\040\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000e\000O\000n\000c\000e) +endobj +1529 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.3) >> +endobj +1532 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0003\000\040\000C\000h\000a\000n\000g\000e\000G\000r\000o\000u\000p\000s) +endobj +1533 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.4) >> +endobj +1536 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0004\000\040\000C\000r\000e\000a\000t\000e\000G\000a\000m\000e) +endobj +1537 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.5) >> +endobj +1540 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0005\000\040\000E\000x\000c\000h\000a\000n\000g\000e\000K\000e\000y\000s\000F\000o\000r\000E\000n\000c\000r\000y\000p\000t\000i\000o\000n) +endobj +1541 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.6) >> +endobj +1544 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0006\000\040\000F\000i\000n\000d\000F\000r\000i\000e\000n\000d\000s) +endobj +1545 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.7) >> +endobj +1548 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0007\000\040\000G\000e\000t\000L\000o\000b\000b\000y\000S\000t\000a\000t\000s) +endobj +1549 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.8) >> +endobj +1552 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0008\000\040\000G\000e\000t\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +1553 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.9) >> +endobj +1556 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0009\000\040\000G\000e\000t\000R\000e\000g\000i\000o\000n\000s) +endobj +1557 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.10) >> +endobj +1560 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\0000\000\040\000J\000o\000i\000n) +endobj +1561 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.11) >> +endobj +1564 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\0001\000\040\000J\000o\000i\000n\000G\000a\000m\000e) +endobj +1565 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.12) >> +endobj +1568 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\0002\000\040\000J\000o\000i\000n\000L\000o\000b\000b\000y) +endobj +1569 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.13) >> +endobj +1572 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\0003\000\040\000J\000o\000i\000n\000R\000a\000n\000d\000o\000m\000G\000a\000m\000e) +endobj +1573 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.14) >> +endobj +1576 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\0004\000\040\000L\000e\000a\000v\000e) +endobj +1577 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.15) >> +endobj +1580 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\0005\000\040\000L\000e\000a\000v\000e\000L\000o\000b\000b\000y) +endobj +1581 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.16) >> +endobj +1584 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\0006\000\040\000R\000a\000i\000s\000e\000E\000v\000e\000n\000t) +endobj +1585 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.17) >> +endobj +1588 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\0007\000\040\000S\000e\000r\000v\000e\000r\000S\000e\000t\000t\000i\000n\000g\000s) +endobj +1589 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.18) >> +endobj +1592 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\0008\000\040\000S\000e\000t\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +1593 0 obj +<< /S /GoTo /D (subsubsection.8.26.2.19) >> +endobj +1596 0 obj +(\376\377\0008\000.\0002\0006\000.\0002\000.\0001\0009\000\040\000W\000e\000b\000R\000p\000c) +endobj +1597 0 obj +<< /S /GoTo /D (section.8.27) >> +endobj +1600 0 obj +(\376\377\0008\000.\0002\0007\000\040\000E\000x\000i\000t\000G\000a\000m\000e\000s\000.\000C\000l\000i\000e\000n\000t\000.\000P\000h\000o\000t\000o\000n\000.\000C\000h\000a\000t\000.\000P\000a\000r\000a\000m\000e\000t\000e\000r\000C\000o\000d\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1601 0 obj +<< /S /GoTo /D (subsection.8.27.1) >> +endobj +1604 0 obj +(\376\377\0008\000.\0002\0007\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1605 0 obj +<< /S /GoTo /D (subsubsection.8.27.1.1) >> +endobj +1608 0 obj +(\376\377\0008\000.\0002\0007\000.\0001\000.\0001\000\040\000A\000d\000d\000r\000e\000s\000s) +endobj +1609 0 obj +<< /S /GoTo /D (subsubsection.8.27.1.2) >> +endobj +1612 0 obj +(\376\377\0008\000.\0002\0007\000.\0001\000.\0002\000\040\000A\000p\000p\000l\000i\000c\000a\000t\000i\000o\000n\000I\000d) +endobj +1613 0 obj +<< /S /GoTo /D (subsubsection.8.27.1.3) >> +endobj +1616 0 obj +(\376\377\0008\000.\0002\0007\000.\0001\000.\0003\000\040\000A\000p\000p\000V\000e\000r\000s\000i\000o\000n) +endobj +1617 0 obj +<< /S /GoTo /D (subsubsection.8.27.1.4) >> +endobj +1620 0 obj +(\376\377\0008\000.\0002\0007\000.\0001\000.\0004\000\040\000C\000l\000i\000e\000n\000t\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000D\000a\000t\000a) +endobj +1621 0 obj +<< /S /GoTo /D (subsubsection.8.27.1.5) >> +endobj +1624 0 obj +(\376\377\0008\000.\0002\0007\000.\0001\000.\0005\000\040\000C\000l\000i\000e\000n\000t\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000P\000a\000r\000a\000m\000s) +endobj +1625 0 obj +<< /S /GoTo /D (subsubsection.8.27.1.6) >> +endobj +1628 0 obj +(\376\377\0008\000.\0002\0007\000.\0001\000.\0006\000\040\000C\000l\000i\000e\000n\000t\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000T\000y\000p\000e) +endobj +1629 0 obj +<< /S /GoTo /D (subsubsection.8.27.1.7) >> +endobj +1632 0 obj +(\376\377\0008\000.\0002\0007\000.\0001\000.\0007\000\040\000R\000e\000g\000i\000o\000n) +endobj +1633 0 obj +<< /S /GoTo /D (subsubsection.8.27.1.8) >> +endobj +1636 0 obj +(\376\377\0008\000.\0002\0007\000.\0001\000.\0008\000\040\000S\000e\000c\000r\000e\000t) +endobj +1637 0 obj +<< /S /GoTo /D (subsubsection.8.27.1.9) >> +endobj +1640 0 obj +(\376\377\0008\000.\0002\0007\000.\0001\000.\0009\000\040\000U\000s\000e\000r\000I\000d) +endobj +1641 0 obj +<< /S /GoTo /D (section.8.28) >> +endobj +1644 0 obj +(\376\377\0008\000.\0002\0008\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000C\000o\000d\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1645 0 obj +<< /S /GoTo /D (subsection.8.28.1) >> +endobj +1648 0 obj +(\376\377\0008\000.\0002\0008\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1649 0 obj +<< /S /GoTo /D (subsection.8.28.2) >> +endobj +1652 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1653 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.1) >> +endobj +1656 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\000\040\000A\000c\000t\000o\000r\000L\000i\000s\000t) +endobj +1657 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.2) >> +endobj +1660 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\000\040\000A\000c\000t\000o\000r\000N\000r) +endobj +1661 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.3) >> +endobj +1664 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\000\040\000A\000d\000d) +endobj +1665 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.4) >> +endobj +1668 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\000\040\000A\000d\000d\000r\000e\000s\000s) +endobj +1669 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.5) >> +endobj +1672 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\000\040\000A\000p\000p\000l\000i\000c\000a\000t\000i\000o\000n\000I\000d) +endobj +1673 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.6) >> +endobj +1676 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0006\000\040\000A\000p\000p\000V\000e\000r\000s\000i\000o\000n) +endobj +1677 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.7) >> +endobj +1680 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0007\000\040\000A\000z\000u\000r\000e\000L\000o\000c\000a\000l\000N\000o\000d\000e\000I\000d) +endobj +1681 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.8) >> +endobj +1684 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0008\000\040\000A\000z\000u\000r\000e\000M\000a\000s\000t\000e\000r\000N\000o\000d\000e\000I\000d) +endobj +1685 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.9) >> +endobj +1688 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0009\000\040\000A\000z\000u\000r\000e\000N\000o\000d\000e\000I\000n\000f\000o) +endobj +1689 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.10) >> +endobj +1692 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\0000\000\040\000B\000r\000o\000a\000d\000c\000a\000s\000t) +endobj +1693 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.11) >> +endobj +1696 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\0001\000\040\000C\000a\000c\000h\000e) +endobj +1697 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.12) >> +endobj +1700 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\0002\000\040\000C\000a\000c\000h\000e\000S\000l\000i\000c\000e\000I\000n\000d\000e\000x) +endobj +1701 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.13) >> +endobj +1704 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\0003\000\040\000C\000h\000e\000c\000k\000U\000s\000e\000r\000O\000n\000J\000o\000i\000n) +endobj +1705 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.14) >> +endobj +1708 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\0004\000\040\000C\000l\000e\000a\000n\000u\000p\000C\000a\000c\000h\000e\000O\000n\000L\000e\000a\000v\000e) +endobj +1709 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.15) >> +endobj +1712 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\0005\000\040\000C\000l\000i\000e\000n\000t\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000D\000a\000t\000a) +endobj +1713 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.16) >> +endobj +1716 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\0006\000\040\000C\000l\000i\000e\000n\000t\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000P\000a\000r\000a\000m\000s) +endobj +1717 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.17) >> +endobj +1720 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\0007\000\040\000C\000l\000i\000e\000n\000t\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000T\000y\000p\000e) +endobj +1721 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.18) >> +endobj +1724 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\0008\000\040\000C\000o\000d\000e) +endobj +1725 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.19) >> +endobj +1728 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0001\0009\000\040\000C\000u\000s\000t\000o\000m\000E\000v\000e\000n\000t\000C\000o\000n\000t\000e\000n\000t) +endobj +1729 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.20) >> +endobj +1732 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\0000\000\040\000C\000u\000s\000t\000o\000m\000I\000n\000i\000t\000D\000a\000t\000a) +endobj +1733 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.21) >> +endobj +1736 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\0001\000\040\000D\000a\000t\000a) +endobj +1737 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.22) >> +endobj +1740 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\0002\000\040\000E\000m\000p\000t\000y\000R\000o\000o\000m\000T\000T\000L) +endobj +1741 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.23) >> +endobj +1744 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\0003\000\040\000E\000n\000c\000r\000y\000p\000t\000i\000o\000n\000D\000a\000t\000a) +endobj +1745 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.24) >> +endobj +1748 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\0004\000\040\000E\000n\000c\000r\000y\000p\000t\000i\000o\000n\000M\000o\000d\000e) +endobj +1749 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.25) >> +endobj +1752 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\0005\000\040\000E\000v\000e\000n\000t\000F\000o\000r\000w\000a\000r\000d) +endobj +1753 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.26) >> +endobj +1756 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\0006\000\040\000E\000x\000p\000e\000c\000t\000e\000d\000P\000r\000o\000t\000o\000c\000o\000l) +endobj +1757 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.27) >> +endobj +1760 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\0007\000\040\000E\000x\000p\000e\000c\000t\000e\000d\000V\000a\000l\000u\000e\000s) +endobj +1761 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.28) >> +endobj +1764 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\0008\000\040\000F\000i\000n\000d\000F\000r\000i\000e\000n\000d\000s\000R\000e\000q\000u\000e\000s\000t\000L\000i\000s\000t) +endobj +1765 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.29) >> +endobj +1768 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0002\0009\000\040\000F\000i\000n\000d\000F\000r\000i\000e\000n\000d\000s\000R\000e\000s\000p\000o\000n\000s\000e\000O\000n\000l\000i\000n\000e\000L\000i\000s\000t) +endobj +1769 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.30) >> +endobj +1772 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\0000\000\040\000F\000i\000n\000d\000F\000r\000i\000e\000n\000d\000s\000R\000e\000s\000p\000o\000n\000s\000e\000R\000o\000o\000m\000I\000d\000L\000i\000s\000t) +endobj +1773 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.31) >> +endobj +1776 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\0001\000\040\000G\000a\000m\000e\000C\000o\000u\000n\000t) +endobj +1777 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.32) >> +endobj +1780 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\0002\000\040\000G\000a\000m\000e\000L\000i\000s\000t) +endobj +1781 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.33) >> +endobj +1784 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\0003\000\040\000G\000a\000m\000e\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +1785 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.34) >> +endobj +1788 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\0004\000\040\000G\000r\000o\000u\000p) +endobj +1789 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.35) >> +endobj +1792 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\0005\000\040\000I\000n\000f\000o) +endobj +1793 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.36) >> +endobj +1796 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\0006\000\040\000I\000s\000C\000o\000m\000i\000n\000g\000B\000a\000c\000k) +endobj +1797 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.37) >> +endobj +1800 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\0007\000\040\000I\000s\000I\000n\000a\000c\000t\000i\000v\000e) +endobj +1801 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.38) >> +endobj +1804 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\0008\000\040\000J\000o\000i\000n\000M\000o\000d\000e) +endobj +1805 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.39) >> +endobj +1808 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0003\0009\000\040\000L\000o\000b\000b\000y\000N\000a\000m\000e) +endobj +1809 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.40) >> +endobj +1812 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\0000\000\040\000L\000o\000b\000b\000y\000S\000t\000a\000t\000s) +endobj +1813 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.41) >> +endobj +1816 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\0001\000\040\000L\000o\000b\000b\000y\000T\000y\000p\000e) +endobj +1817 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.42) >> +endobj +1820 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\0002\000\040\000M\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t\000I\000d) +endobj +1821 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.43) >> +endobj +1824 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\0003\000\040\000M\000a\000s\000t\000e\000r\000P\000e\000e\000r\000C\000o\000u\000n\000t) +endobj +1825 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.44) >> +endobj +1828 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\0004\000\040\000M\000a\000t\000c\000h\000M\000a\000k\000i\000n\000g\000T\000y\000p\000e) +endobj +1829 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.45) >> +endobj +1832 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\0005\000\040\000N\000i\000c\000k\000N\000a\000m\000e) +endobj +1833 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.46) >> +endobj +1836 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\0006\000\040\000P\000e\000e\000r\000C\000o\000u\000n\000t) +endobj +1837 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.47) >> +endobj +1840 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\0007\000\040\000P\000l\000a\000y\000e\000r\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +1841 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.48) >> +endobj +1844 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\0008\000\040\000P\000l\000a\000y\000e\000r\000T\000T\000L) +endobj +1845 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.49) >> +endobj +1848 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0004\0009\000\040\000P\000l\000u\000g\000i\000n\000N\000a\000m\000e) +endobj +1849 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.50) >> +endobj +1852 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\0000\000\040\000P\000l\000u\000g\000i\000n\000s) +endobj +1853 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.51) >> +endobj +1856 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\0001\000\040\000P\000l\000u\000g\000i\000n\000V\000e\000r\000s\000i\000o\000n) +endobj +1857 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.52) >> +endobj +1860 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\0002\000\040\000P\000o\000s\000i\000t\000i\000o\000n) +endobj +1861 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.53) >> +endobj +1864 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\0003\000\040\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +1865 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.54) >> +endobj +1868 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\0004\000\040\000P\000u\000b\000l\000i\000s\000h\000U\000s\000e\000r\000I\000d) +endobj +1869 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.55) >> +endobj +1872 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\0005\000\040\000R\000e\000c\000e\000i\000v\000e\000r\000G\000r\000o\000u\000p) +endobj +1873 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.56) >> +endobj +1876 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\0006\000\040\000R\000e\000g\000i\000o\000n) +endobj +1877 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.57) >> +endobj +1880 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\0007\000\040\000R\000e\000m\000o\000v\000e) +endobj +1881 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.58) >> +endobj +1884 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\0008\000\040\000R\000o\000o\000m\000N\000a\000m\000e) +endobj +1885 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.59) >> +endobj +1888 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0005\0009\000\040\000S\000e\000c\000r\000e\000t) +endobj +1889 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.60) >> +endobj +1892 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0006\0000\000\040\000S\000u\000p\000p\000r\000e\000s\000s\000R\000o\000o\000m\000E\000v\000e\000n\000t\000s) +endobj +1893 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.61) >> +endobj +1896 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0006\0001\000\040\000T\000a\000r\000g\000e\000t\000A\000c\000t\000o\000r\000N\000r) +endobj +1897 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.62) >> +endobj +1900 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0006\0002\000\040\000U\000r\000i\000P\000a\000t\000h) +endobj +1901 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.63) >> +endobj +1904 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0006\0003\000\040\000U\000s\000e\000r\000I\000d) +endobj +1905 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.64) >> +endobj +1908 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0006\0004\000\040\000W\000e\000b\000R\000p\000c\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s) +endobj +1909 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.65) >> +endobj +1912 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0006\0005\000\040\000W\000e\000b\000R\000p\000c\000R\000e\000t\000u\000r\000n\000C\000o\000d\000e) +endobj +1913 0 obj +<< /S /GoTo /D (subsubsection.8.28.2.66) >> +endobj +1916 0 obj +(\376\377\0008\000.\0002\0008\000.\0002\000.\0006\0006\000\040\000W\000e\000b\000R\000p\000c\000R\000e\000t\000u\000r\000n\000M\000e\000s\000s\000a\000g\000e) +endobj +1917 0 obj +<< /S /GoTo /D (section.8.29) >> +endobj +1920 0 obj +(\376\377\0008\000.\0002\0009\000\040\000P\000h\000o\000t\000o\000n\000A\000n\000i\000m\000a\000t\000o\000r\000V\000i\000e\000w\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1921 0 obj +<< /S /GoTo /D (subsection.8.29.1) >> +endobj +1924 0 obj +(\376\377\0008\000.\0002\0009\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1925 0 obj +<< /S /GoTo /D (subsection.8.29.2) >> +endobj +1928 0 obj +(\376\377\0008\000.\0002\0009\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1929 0 obj +<< /S /GoTo /D (subsubsection.8.29.2.1) >> +endobj +1932 0 obj +(\376\377\0008\000.\0002\0009\000.\0002\000.\0001\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000T\000y\000p\000e) +endobj +1933 0 obj +<< /S /GoTo /D (subsubsection.8.29.2.2) >> +endobj +1936 0 obj +(\376\377\0008\000.\0002\0009\000.\0002\000.\0002\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000T\000y\000p\000e) +endobj +1937 0 obj +<< /S /GoTo /D (subsection.8.29.3) >> +endobj +1940 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1941 0 obj +<< /S /GoTo /D (subsubsection.8.29.3.1) >> +endobj +1944 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000.\0001\000\040\000C\000a\000c\000h\000e\000D\000i\000s\000c\000r\000e\000t\000e\000T\000r\000i\000g\000g\000e\000r\000s) +endobj +1945 0 obj +<< /S /GoTo /D (subsubsection.8.29.3.2) >> +endobj +1948 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000.\0002\000\040\000D\000o\000e\000s\000L\000a\000y\000e\000r\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000T\000y\000p\000e\000E\000x\000i\000s\000t) +endobj +1949 0 obj +<< /S /GoTo /D (subsubsection.8.29.3.3) >> +endobj +1952 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000.\0003\000\040\000D\000o\000e\000s\000P\000a\000r\000a\000m\000e\000t\000e\000r\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000T\000y\000p\000e\000E\000x\000i\000s\000t) +endobj +1953 0 obj +<< /S /GoTo /D (subsubsection.8.29.3.4) >> +endobj +1956 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000.\0004\000\040\000G\000e\000t\000L\000a\000y\000e\000r\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000T\000y\000p\000e) +endobj +1957 0 obj +<< /S /GoTo /D (subsubsection.8.29.3.5) >> +endobj +1960 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000.\0005\000\040\000G\000e\000t\000P\000a\000r\000a\000m\000e\000t\000e\000r\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000T\000y\000p\000e) +endobj +1961 0 obj +<< /S /GoTo /D (subsubsection.8.29.3.6) >> +endobj +1964 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000.\0006\000\040\000G\000e\000t\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000d\000L\000a\000y\000e\000r\000s) +endobj +1965 0 obj +<< /S /GoTo /D (subsubsection.8.29.3.7) >> +endobj +1968 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000.\0007\000\040\000G\000e\000t\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000d\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s) +endobj +1969 0 obj +<< /S /GoTo /D (subsubsection.8.29.3.8) >> +endobj +1972 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000.\0008\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000V\000i\000e\000w) +endobj +1973 0 obj +<< /S /GoTo /D (subsubsection.8.29.3.9) >> +endobj +1976 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000.\0009\000\040\000S\000e\000t\000L\000a\000y\000e\000r\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000d) +endobj +1977 0 obj +<< /S /GoTo /D (subsubsection.8.29.3.10) >> +endobj +1980 0 obj +(\376\377\0008\000.\0002\0009\000.\0003\000.\0001\0000\000\040\000S\000e\000t\000P\000a\000r\000a\000m\000e\000t\000e\000r\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000d) +endobj +1981 0 obj +<< /S /GoTo /D (section.8.30) >> +endobj +1984 0 obj +(\376\377\0008\000.\0003\0000\000\040\000P\000h\000o\000t\000o\000n\000L\000a\000g\000S\000i\000m\000u\000l\000a\000t\000i\000o\000n\000G\000u\000i\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1985 0 obj +<< /S /GoTo /D (subsection.8.30.1) >> +endobj +1988 0 obj +(\376\377\0008\000.\0003\0000\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1989 0 obj +<< /S /GoTo /D (subsection.8.30.2) >> +endobj +1992 0 obj +(\376\377\0008\000.\0003\0000\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1993 0 obj +<< /S /GoTo /D (subsubsection.8.30.2.1) >> +endobj +1996 0 obj +(\376\377\0008\000.\0003\0000\000.\0002\000.\0001\000\040\000O\000n\000G\000U\000I) +endobj +1997 0 obj +<< /S /GoTo /D (subsubsection.8.30.2.2) >> +endobj +2000 0 obj +(\376\377\0008\000.\0003\0000\000.\0002\000.\0002\000\040\000S\000t\000a\000r\000t) +endobj +2001 0 obj +<< /S /GoTo /D (subsection.8.30.3) >> +endobj +2004 0 obj +(\376\377\0008\000.\0003\0000\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2005 0 obj +<< /S /GoTo /D (subsubsection.8.30.3.1) >> +endobj +2008 0 obj +(\376\377\0008\000.\0003\0000\000.\0003\000.\0001\000\040\000V\000i\000s\000i\000b\000l\000e) +endobj +2009 0 obj +<< /S /GoTo /D (subsubsection.8.30.3.2) >> +endobj +2012 0 obj +(\376\377\0008\000.\0003\0000\000.\0003\000.\0002\000\040\000W\000i\000n\000d\000o\000w\000I\000d) +endobj +2013 0 obj +<< /S /GoTo /D (subsubsection.8.30.3.3) >> +endobj +2016 0 obj +(\376\377\0008\000.\0003\0000\000.\0003\000.\0003\000\040\000W\000i\000n\000d\000o\000w\000R\000e\000c\000t) +endobj +2017 0 obj +<< /S /GoTo /D (subsection.8.30.4) >> +endobj +2020 0 obj +(\376\377\0008\000.\0003\0000\000.\0004\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2021 0 obj +<< /S /GoTo /D (subsubsection.8.30.4.1) >> +endobj +2024 0 obj +(\376\377\0008\000.\0003\0000\000.\0004\000.\0001\000\040\000P\000e\000e\000r) +endobj +2025 0 obj +<< /S /GoTo /D (section.8.31) >> +endobj +2028 0 obj +(\376\377\0008\000.\0003\0001\000\040\000P\000h\000o\000t\000o\000n\000M\000e\000s\000s\000a\000g\000e\000I\000n\000f\000o\000\040\000S\000t\000r\000u\000c\000t\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2029 0 obj +<< /S /GoTo /D (subsection.8.31.1) >> +endobj +2032 0 obj +(\376\377\0008\000.\0003\0001\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2033 0 obj +<< /S /GoTo /D (subsection.8.31.2) >> +endobj +2036 0 obj +(\376\377\0008\000.\0003\0001\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2037 0 obj +<< /S /GoTo /D (subsubsection.8.31.2.1) >> +endobj +2040 0 obj +(\376\377\0008\000.\0003\0001\000.\0002\000.\0001\000\040\000P\000h\000o\000t\000o\000n\000M\000e\000s\000s\000a\000g\000e\000I\000n\000f\000o) +endobj +2041 0 obj +<< /S /GoTo /D (subsection.8.31.3) >> +endobj +2044 0 obj +(\376\377\0008\000.\0003\0001\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2045 0 obj +<< /S /GoTo /D (subsubsection.8.31.3.1) >> +endobj +2048 0 obj +(\376\377\0008\000.\0003\0001\000.\0003\000.\0001\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +2049 0 obj +<< /S /GoTo /D (subsection.8.31.4) >> +endobj +2052 0 obj +(\376\377\0008\000.\0003\0001\000.\0004\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2053 0 obj +<< /S /GoTo /D (subsubsection.8.31.4.1) >> +endobj +2056 0 obj +(\376\377\0008\000.\0003\0001\000.\0004\000.\0001\000\040\000p\000h\000o\000t\000o\000n\000V\000i\000e\000w) +endobj +2057 0 obj +<< /S /GoTo /D (subsubsection.8.31.4.2) >> +endobj +2060 0 obj +(\376\377\0008\000.\0003\0001\000.\0004\000.\0002\000\040\000s\000e\000n\000d\000e\000r) +endobj +2061 0 obj +<< /S /GoTo /D (subsection.8.31.5) >> +endobj +2064 0 obj +(\376\377\0008\000.\0003\0001\000.\0005\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2065 0 obj +<< /S /GoTo /D (subsubsection.8.31.5.1) >> +endobj +2068 0 obj +(\376\377\0008\000.\0003\0001\000.\0005\000.\0001\000\040\000t\000i\000m\000e\000s\000t\000a\000m\000p) +endobj +2069 0 obj +<< /S /GoTo /D (section.8.32) >> +endobj +2072 0 obj +(\376\377\0008\000.\0003\0002\000\040\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2073 0 obj +<< /S /GoTo /D (subsection.8.32.1) >> +endobj +2076 0 obj +(\376\377\0008\000.\0003\0002\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2077 0 obj +<< /S /GoTo /D (subsection.8.32.2) >> +endobj +2080 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2081 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.1) >> +endobj +2084 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\000\040\000A\000l\000l\000o\000c\000a\000t\000e\000S\000c\000e\000n\000e\000V\000i\000e\000w\000I\000D) +endobj +2085 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.2) >> +endobj +2088 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\000\040\000A\000l\000l\000o\000c\000a\000t\000e\000V\000i\000e\000w\000I\000D) +endobj +2089 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.3) >> +endobj +2092 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\000\040\000C\000a\000c\000h\000e\000S\000e\000n\000d\000M\000o\000n\000o\000M\000e\000s\000s\000a\000g\000e\000T\000a\000r\000g\000e\000t\000s) +endobj +2093 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.4) >> +endobj +2096 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\000\040\000C\000l\000o\000s\000e\000C\000o\000n\000n\000e\000c\000t\000i\000o\000n) +endobj +2097 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.5) >> +endobj +2100 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\000\040\000C\000o\000n\000n\000e\000c\000t\000T\000o\000B\000e\000s\000t\000C\000l\000o\000u\000d\000S\000e\000r\000v\000e\000r) +endobj +2101 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.6) >> +endobj +2104 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0006\000\040\000C\000o\000n\000n\000e\000c\000t\000T\000o\000M\000a\000s\000t\000e\000r) +endobj +2105 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.7) >> +endobj +2108 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0007\000\040\000C\000o\000n\000n\000e\000c\000t\000T\000o\000R\000e\000g\000i\000o\000n) +endobj +2109 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.8) >> +endobj +2112 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0008\000\040\000C\000o\000n\000n\000e\000c\000t\000U\000s\000i\000n\000g\000S\000e\000t\000t\000i\000n\000g\000s) +endobj +2113 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.9) >> +endobj +2116 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0009\000\040\000C\000r\000e\000a\000t\000e\000R\000o\000o\000m) +endobj +2117 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.10) >> +endobj +2120 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\0000\000\040\000C\000r\000e\000a\000t\000e\000R\000o\000o\000m) +endobj +2121 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.11) >> +endobj +2124 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\0001\000\040\000C\000r\000e\000a\000t\000e\000R\000o\000o\000m) +endobj +2125 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.12) >> +endobj +2128 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\0002\000\040\000D\000e\000s\000t\000r\000o\000y) +endobj +2129 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.13) >> +endobj +2132 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\0003\000\040\000D\000e\000s\000t\000r\000o\000y) +endobj +2133 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.14) >> +endobj +2136 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\0004\000\040\000D\000e\000s\000t\000r\000o\000y\000A\000l\000l) +endobj +2137 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.15) >> +endobj +2140 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\0005\000\040\000D\000e\000s\000t\000r\000o\000y\000P\000l\000a\000y\000e\000r\000O\000b\000j\000e\000c\000t\000s) +endobj +2141 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.16) >> +endobj +2144 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\0006\000\040\000D\000e\000s\000t\000r\000o\000y\000P\000l\000a\000y\000e\000r\000O\000b\000j\000e\000c\000t\000s) +endobj +2145 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.17) >> +endobj +2148 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\0007\000\040\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t) +endobj +2149 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.18) >> +endobj +2152 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\0008\000\040\000E\000v\000e\000n\000t\000C\000a\000l\000l\000b\000a\000c\000k) +endobj +2153 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.19) >> +endobj +2156 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0001\0009\000\040\000F\000e\000t\000c\000h\000S\000e\000r\000v\000e\000r\000T\000i\000m\000e\000s\000t\000a\000m\000p) +endobj +2157 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.20) >> +endobj +2160 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\0000\000\040\000F\000i\000n\000d\000F\000r\000i\000e\000n\000d\000s) +endobj +2161 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.21) >> +endobj +2164 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\0001\000\040\000F\000i\000n\000d\000G\000a\000m\000e\000O\000b\000j\000e\000c\000t\000s\000W\000i\000t\000h\000C\000o\000m\000p\000o\000n\000e\000n\000t) +endobj +2165 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.22) >> +endobj +2168 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\0002\000\040\000G\000e\000t\000P\000i\000n\000g) +endobj +2169 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.23) >> +endobj +2172 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\0003\000\040\000G\000e\000t\000R\000o\000o\000m\000L\000i\000s\000t) +endobj +2173 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.24) >> +endobj +2176 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\0004\000\040\000I\000n\000i\000t\000i\000a\000l\000i\000z\000e\000S\000e\000c\000u\000r\000i\000t\000y) +endobj +2177 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.25) >> +endobj +2180 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\0005\000\040\000I\000n\000s\000t\000a\000n\000t\000i\000a\000t\000e) +endobj +2181 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.26) >> +endobj +2184 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\0006\000\040\000I\000n\000s\000t\000a\000n\000t\000i\000a\000t\000e) +endobj +2185 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.27) >> +endobj +2188 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\0007\000\040\000I\000n\000s\000t\000a\000n\000t\000i\000a\000t\000e\000S\000c\000e\000n\000e\000O\000b\000j\000e\000c\000t) +endobj +2189 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.28) >> +endobj +2192 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\0008\000\040\000J\000o\000i\000n\000L\000o\000b\000b\000y) +endobj +2193 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.29) >> +endobj +2196 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0002\0009\000\040\000J\000o\000i\000n\000L\000o\000b\000b\000y) +endobj +2197 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.30) >> +endobj +2200 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\0000\000\040\000J\000o\000i\000n\000O\000r\000C\000r\000e\000a\000t\000e\000R\000o\000o\000m) +endobj +2201 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.31) >> +endobj +2204 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\0001\000\040\000J\000o\000i\000n\000O\000r\000C\000r\000e\000a\000t\000e\000R\000o\000o\000m) +endobj +2205 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.32) >> +endobj +2208 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\0002\000\040\000J\000o\000i\000n\000R\000a\000n\000d\000o\000m\000R\000o\000o\000m) +endobj +2209 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.33) >> +endobj +2212 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\0003\000\040\000J\000o\000i\000n\000R\000a\000n\000d\000o\000m\000R\000o\000o\000m) +endobj +2213 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.34) >> +endobj +2216 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\0004\000\040\000J\000o\000i\000n\000R\000a\000n\000d\000o\000m\000R\000o\000o\000m) +endobj +2217 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.35) >> +endobj +2220 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\0005\000\040\000J\000o\000i\000n\000R\000o\000o\000m) +endobj +2221 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.36) >> +endobj +2224 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\0006\000\040\000J\000o\000i\000n\000R\000o\000o\000m) +endobj +2225 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.37) >> +endobj +2228 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\0007\000\040\000L\000e\000a\000v\000e\000L\000o\000b\000b\000y) +endobj +2229 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.38) >> +endobj +2232 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\0008\000\040\000L\000e\000a\000v\000e\000R\000o\000o\000m) +endobj +2233 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.39) >> +endobj +2236 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0003\0009\000\040\000L\000o\000a\000d\000L\000e\000v\000e\000l) +endobj +2237 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.40) >> +endobj +2240 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\0000\000\040\000L\000o\000a\000d\000L\000e\000v\000e\000l) +endobj +2241 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.41) >> +endobj +2244 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\0001\000\040\000N\000e\000t\000w\000o\000r\000k\000S\000t\000a\000t\000i\000s\000t\000i\000c\000s\000R\000e\000s\000e\000t) +endobj +2245 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.42) >> +endobj +2248 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\0002\000\040\000N\000e\000t\000w\000o\000r\000k\000S\000t\000a\000t\000i\000s\000t\000i\000c\000s\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +2249 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.43) >> +endobj +2252 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\0003\000\040\000O\000v\000e\000r\000r\000i\000d\000e\000B\000e\000s\000t\000C\000l\000o\000u\000d\000S\000e\000r\000v\000e\000r) +endobj +2253 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.44) >> +endobj +2256 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\0004\000\040\000R\000a\000i\000s\000e\000E\000v\000e\000n\000t) +endobj +2257 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.45) >> +endobj +2260 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\0005\000\040\000R\000e\000c\000o\000n\000n\000e\000c\000t) +endobj +2261 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.46) >> +endobj +2264 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\0006\000\040\000R\000e\000c\000o\000n\000n\000e\000c\000t\000A\000n\000d\000R\000e\000j\000o\000i\000n) +endobj +2265 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.47) >> +endobj +2268 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\0007\000\040\000R\000e\000f\000r\000e\000s\000h\000C\000l\000o\000u\000d\000S\000e\000r\000v\000e\000r\000R\000a\000t\000i\000n\000g) +endobj +2269 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.48) >> +endobj +2272 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\0008\000\040\000R\000e\000J\000o\000i\000n\000R\000o\000o\000m) +endobj +2273 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.49) >> +endobj +2276 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0004\0009\000\040\000R\000e\000m\000o\000v\000e\000P\000l\000a\000y\000e\000r\000C\000u\000s\000t\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +2277 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.50) >> +endobj +2280 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\0000\000\040\000R\000e\000m\000o\000v\000e\000R\000P\000C\000s) +endobj +2281 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.51) >> +endobj +2284 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\0001\000\040\000R\000e\000m\000o\000v\000e\000R\000P\000C\000s) +endobj +2285 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.52) >> +endobj +2288 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\0002\000\040\000R\000e\000m\000o\000v\000e\000R\000P\000C\000s\000I\000n\000G\000r\000o\000u\000p) +endobj +2289 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.53) >> +endobj +2292 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\0003\000\040\000S\000e\000n\000d\000O\000u\000t\000g\000o\000i\000n\000g\000C\000o\000m\000m\000a\000n\000d\000s) +endobj +2293 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.54) >> +endobj +2296 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\0004\000\040\000S\000e\000t\000L\000e\000v\000e\000l\000P\000r\000e\000f\000i\000x) +endobj +2297 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.55) >> +endobj +2300 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\0005\000\040\000S\000e\000t\000M\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t) +endobj +2301 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.56) >> +endobj +2304 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\0006\000\040\000S\000e\000t\000P\000l\000a\000y\000e\000r\000C\000u\000s\000t\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +2305 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.57) >> +endobj +2308 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\0007\000\040\000S\000e\000t\000R\000e\000c\000e\000i\000v\000i\000n\000g\000E\000n\000a\000b\000l\000e\000d) +endobj +2309 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.58) >> +endobj +2312 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\0008\000\040\000S\000e\000t\000R\000e\000c\000e\000i\000v\000i\000n\000g\000E\000n\000a\000b\000l\000e\000d) +endobj +2313 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.59) >> +endobj +2316 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0005\0009\000\040\000S\000e\000t\000S\000e\000n\000d\000i\000n\000g\000E\000n\000a\000b\000l\000e\000d) +endobj +2317 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.60) >> +endobj +2320 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0006\0000\000\040\000S\000e\000t\000S\000e\000n\000d\000i\000n\000g\000E\000n\000a\000b\000l\000e\000d) +endobj +2321 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.61) >> +endobj +2324 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0006\0001\000\040\000S\000w\000i\000t\000c\000h\000T\000o\000P\000r\000o\000t\000o\000c\000o\000l) +endobj +2325 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.62) >> +endobj +2328 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0006\0002\000\040\000U\000n\000A\000l\000l\000o\000c\000a\000t\000e\000V\000i\000e\000w\000I\000D) +endobj +2329 0 obj +<< /S /GoTo /D (subsubsection.8.32.2.63) >> +endobj +2332 0 obj +(\376\377\0008\000.\0003\0002\000.\0002\000.\0006\0003\000\040\000W\000e\000b\000R\000p\000c) +endobj +2333 0 obj +<< /S /GoTo /D (subsection.8.32.3) >> +endobj +2336 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2337 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.1) >> +endobj +2340 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0001\000\040\000B\000a\000c\000k\000g\000r\000o\000u\000n\000d\000T\000i\000m\000e\000o\000u\000t) +endobj +2341 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.2) >> +endobj +2344 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0002\000\040\000I\000n\000s\000t\000a\000n\000t\000i\000a\000t\000e\000I\000n\000R\000o\000o\000m\000O\000n\000l\000y) +endobj +2345 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.3) >> +endobj +2348 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0003\000\040\000l\000o\000g\000L\000e\000v\000e\000l) +endobj +2349 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.4) >> +endobj +2352 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0004\000\040\000M\000A\000X\000\137\000V\000I\000E\000W\000\137\000I\000D\000S) +endobj +2353 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.5) >> +endobj +2356 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0005\000\040\000m\000a\000x\000C\000o\000n\000n\000e\000c\000t\000i\000o\000n\000s) +endobj +2357 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.6) >> +endobj +2360 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0006\000\040\000O\000n\000E\000v\000e\000n\000t\000C\000a\000l\000l) +endobj +2361 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.7) >> +endobj +2364 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0007\000\040\000P\000h\000o\000t\000o\000n\000S\000e\000r\000v\000e\000r\000S\000e\000t\000t\000i\000n\000g\000s) +endobj +2365 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.8) >> +endobj +2368 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0008\000\040\000p\000r\000e\000c\000i\000s\000i\000o\000n\000F\000o\000r\000F\000l\000o\000a\000t\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000a\000t\000i\000o\000n) +endobj +2369 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.9) >> +endobj +2372 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0009\000\040\000p\000r\000e\000c\000i\000s\000i\000o\000n\000F\000o\000r\000Q\000u\000a\000t\000e\000r\000n\000i\000o\000n\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000a\000t\000i\000o\000n) +endobj +2373 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.10) >> +endobj +2376 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0001\0000\000\040\000p\000r\000e\000c\000i\000s\000i\000o\000n\000F\000o\000r\000V\000e\000c\000t\000o\000r\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000a\000t\000i\000o\000n) +endobj +2377 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.11) >> +endobj +2380 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0001\0001\000\040\000P\000r\000e\000f\000a\000b\000C\000a\000c\000h\000e) +endobj +2381 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.12) >> +endobj +2384 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0001\0002\000\040\000S\000e\000n\000d\000M\000o\000n\000o\000M\000e\000s\000s\000a\000g\000e\000T\000a\000r\000g\000e\000t\000s) +endobj +2385 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.13) >> +endobj +2388 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0001\0003\000\040\000S\000e\000n\000d\000M\000o\000n\000o\000M\000e\000s\000s\000a\000g\000e\000T\000a\000r\000g\000e\000t\000T\000y\000p\000e) +endobj +2389 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.14) >> +endobj +2392 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0001\0004\000\040\000S\000t\000a\000r\000t\000R\000p\000c\000s\000A\000s\000C\000o\000r\000o\000u\000t\000i\000n\000e) +endobj +2393 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.15) >> +endobj +2396 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0001\0005\000\040\000U\000s\000e\000P\000r\000e\000f\000a\000b\000C\000a\000c\000h\000e) +endobj +2397 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.16) >> +endobj +2400 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0001\0006\000\040\000U\000s\000e\000R\000p\000c\000M\000o\000n\000o\000B\000e\000h\000a\000v\000i\000o\000u\000r\000C\000a\000c\000h\000e) +endobj +2401 0 obj +<< /S /GoTo /D (subsubsection.8.32.3.17) >> +endobj +2404 0 obj +(\376\377\0008\000.\0003\0002\000.\0003\000.\0001\0007\000\040\000v\000e\000r\000s\000i\000o\000n\000P\000U\000N) +endobj +2405 0 obj +<< /S /GoTo /D (subsection.8.32.4) >> +endobj +2408 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2409 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.1) >> +endobj +2412 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\000\040\000A\000u\000t\000h\000V\000a\000l\000u\000e\000s) +endobj +2413 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.2) >> +endobj +2416 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\000\040\000a\000u\000t\000o\000C\000l\000e\000a\000n\000U\000p\000P\000l\000a\000y\000e\000r\000O\000b\000j\000e\000c\000t\000s) +endobj +2417 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.3) >> +endobj +2420 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\000\040\000a\000u\000t\000o\000J\000o\000i\000n\000L\000o\000b\000b\000y) +endobj +2421 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.4) >> +endobj +2424 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0004\000\040\000a\000u\000t\000o\000m\000a\000t\000i\000c\000a\000l\000l\000y\000S\000y\000n\000c\000S\000c\000e\000n\000e) +endobj +2425 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.5) >> +endobj +2428 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0005\000\040\000c\000o\000n\000n\000e\000c\000t\000e\000d) +endobj +2429 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.6) >> +endobj +2432 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0006\000\040\000c\000o\000n\000n\000e\000c\000t\000e\000d\000A\000n\000d\000R\000e\000a\000d\000y) +endobj +2433 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.7) >> +endobj +2436 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0007\000\040\000c\000o\000n\000n\000e\000c\000t\000i\000n\000g) +endobj +2437 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.8) >> +endobj +2440 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0008\000\040\000c\000o\000n\000n\000e\000c\000t\000i\000o\000n\000S\000t\000a\000t\000e) +endobj +2441 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.9) >> +endobj +2444 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0009\000\040\000c\000o\000n\000n\000e\000c\000t\000i\000o\000n\000S\000t\000a\000t\000e\000D\000e\000t\000a\000i\000l\000e\000d) +endobj +2445 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.10) >> +endobj +2448 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\0000\000\040\000c\000o\000u\000n\000t\000O\000f\000P\000l\000a\000y\000e\000r\000s) +endobj +2449 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.11) >> +endobj +2452 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\0001\000\040\000c\000o\000u\000n\000t\000O\000f\000P\000l\000a\000y\000e\000r\000s\000I\000n\000R\000o\000o\000m\000s) +endobj +2453 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.12) >> +endobj +2456 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\0002\000\040\000c\000o\000u\000n\000t\000O\000f\000P\000l\000a\000y\000e\000r\000s\000O\000n\000M\000a\000s\000t\000e\000r) +endobj +2457 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.13) >> +endobj +2460 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\0003\000\040\000c\000o\000u\000n\000t\000O\000f\000R\000o\000o\000m\000s) +endobj +2461 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.14) >> +endobj +2464 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\0004\000\040\000C\000r\000c\000C\000h\000e\000c\000k\000E\000n\000a\000b\000l\000e\000d) +endobj +2465 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.15) >> +endobj +2468 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\0005\000\040\000E\000n\000a\000b\000l\000e\000L\000o\000b\000b\000y\000S\000t\000a\000t\000i\000s\000t\000i\000c\000s) +endobj +2469 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.16) >> +endobj +2472 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\0006\000\040\000F\000r\000i\000e\000n\000d\000s) +endobj +2473 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.17) >> +endobj +2476 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\0007\000\040\000F\000r\000i\000e\000n\000d\000s\000L\000i\000s\000t\000A\000g\000e) +endobj +2477 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.18) >> +endobj +2480 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\0008\000\040\000g\000a\000m\000e\000V\000e\000r\000s\000i\000o\000n) +endobj +2481 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.19) >> +endobj +2484 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0001\0009\000\040\000i\000n\000R\000o\000o\000m) +endobj +2485 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.20) >> +endobj +2488 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\0000\000\040\000i\000n\000s\000i\000d\000e\000L\000o\000b\000b\000y) +endobj +2489 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.21) >> +endobj +2492 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\0001\000\040\000i\000s\000M\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t) +endobj +2493 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.22) >> +endobj +2496 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\0002\000\040\000i\000s\000M\000e\000s\000s\000a\000g\000e\000Q\000u\000e\000u\000e\000R\000u\000n\000n\000i\000n\000g) +endobj +2497 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.23) >> +endobj +2500 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\0003\000\040\000i\000s\000N\000o\000n\000M\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t\000I\000n\000R\000o\000o\000m) +endobj +2501 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.24) >> +endobj +2504 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\0004\000\040\000l\000o\000b\000b\000y) +endobj +2505 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.25) >> +endobj +2508 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\0005\000\040\000L\000o\000b\000b\000y\000S\000t\000a\000t\000i\000s\000t\000i\000c\000s) +endobj +2509 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.26) >> +endobj +2512 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\0006\000\040\000m\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t) +endobj +2513 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.27) >> +endobj +2516 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\0007\000\040\000M\000a\000x\000R\000e\000s\000e\000n\000d\000s\000B\000e\000f\000o\000r\000e\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t) +endobj +2517 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.28) >> +endobj +2520 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\0008\000\040\000N\000e\000t\000w\000o\000r\000k\000S\000t\000a\000t\000i\000s\000t\000i\000c\000s\000E\000n\000a\000b\000l\000e\000d) +endobj +2521 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.29) >> +endobj +2524 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0002\0009\000\040\000o\000f\000f\000l\000i\000n\000e\000M\000o\000d\000e) +endobj +2525 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.30) >> +endobj +2528 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\0000\000\040\000o\000t\000h\000e\000r\000P\000l\000a\000y\000e\000r\000s) +endobj +2529 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.31) >> +endobj +2532 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\0001\000\040\000P\000a\000c\000k\000e\000t\000L\000o\000s\000s\000B\000y\000C\000r\000c\000C\000h\000e\000c\000k) +endobj +2533 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.32) >> +endobj +2536 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\0002\000\040\000p\000l\000a\000y\000e\000r) +endobj +2537 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.33) >> +endobj +2540 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\0003\000\040\000p\000l\000a\000y\000e\000r\000L\000i\000s\000t) +endobj +2541 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.34) >> +endobj +2544 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\0004\000\040\000p\000l\000a\000y\000e\000r\000N\000a\000m\000e) +endobj +2545 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.35) >> +endobj +2548 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\0005\000\040\000P\000r\000e\000f\000a\000b\000P\000o\000o\000l) +endobj +2549 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.36) >> +endobj +2552 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\0006\000\040\000Q\000u\000i\000c\000k\000R\000e\000s\000e\000n\000d\000s) +endobj +2553 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.37) >> +endobj +2556 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\0007\000\040\000R\000e\000s\000e\000n\000t\000R\000e\000l\000i\000a\000b\000l\000e\000C\000o\000m\000m\000a\000n\000d\000s) +endobj +2557 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.38) >> +endobj +2560 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\0008\000\040\000r\000o\000o\000m) +endobj +2561 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.39) >> +endobj +2564 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0003\0009\000\040\000s\000e\000n\000d\000R\000a\000t\000e) +endobj +2565 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.40) >> +endobj +2568 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0004\0000\000\040\000s\000e\000n\000d\000R\000a\000t\000e\000O\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2569 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.41) >> +endobj +2572 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0004\0001\000\040\000S\000e\000r\000v\000e\000r) +endobj +2573 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.42) >> +endobj +2576 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0004\0002\000\040\000S\000e\000r\000v\000e\000r\000A\000d\000d\000r\000e\000s\000s) +endobj +2577 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.43) >> +endobj +2580 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0004\0003\000\040\000S\000e\000r\000v\000e\000r\000T\000i\000m\000e\000s\000t\000a\000m\000p) +endobj +2581 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.44) >> +endobj +2584 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0004\0004\000\040\000t\000i\000m\000e) +endobj +2585 0 obj +<< /S /GoTo /D (subsubsection.8.32.4.45) >> +endobj +2588 0 obj +(\376\377\0008\000.\0003\0002\000.\0004\000.\0004\0005\000\040\000u\000n\000r\000e\000l\000i\000a\000b\000l\000e\000C\000o\000m\000m\000a\000n\000d\000s\000L\000i\000m\000i\000t) +endobj +2589 0 obj +<< /S /GoTo /D (section.8.33) >> +endobj +2592 0 obj +(\376\377\0008\000.\0003\0003\000\040\000P\000h\000o\000t\000o\000n\000P\000i\000n\000g\000M\000a\000n\000a\000g\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2593 0 obj +<< /S /GoTo /D (subsection.8.33.1) >> +endobj +2596 0 obj +(\376\377\0008\000.\0003\0003\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2597 0 obj +<< /S /GoTo /D (subsubsection.8.33.1.1) >> +endobj +2600 0 obj +(\376\377\0008\000.\0003\0003\000.\0001\000.\0001\000\040\000P\000i\000n\000g\000S\000o\000c\000k\000e\000t) +endobj +2601 0 obj +<< /S /GoTo /D (subsubsection.8.33.1.2) >> +endobj +2604 0 obj +(\376\377\0008\000.\0003\0003\000.\0001\000.\0002\000\040\000R\000e\000s\000o\000l\000v\000e\000H\000o\000s\000t) +endobj +2605 0 obj +<< /S /GoTo /D (subsection.8.33.2) >> +endobj +2608 0 obj +(\376\377\0008\000.\0003\0003\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2609 0 obj +<< /S /GoTo /D (subsubsection.8.33.2.1) >> +endobj +2612 0 obj +(\376\377\0008\000.\0003\0003\000.\0002\000.\0001\000\040\000A\000t\000t\000e\000m\000p\000t\000s) +endobj +2613 0 obj +<< /S /GoTo /D (subsubsection.8.33.2.2) >> +endobj +2616 0 obj +(\376\377\0008\000.\0003\0003\000.\0002\000.\0002\000\040\000I\000g\000n\000o\000r\000e\000I\000n\000i\000t\000i\000a\000l\000A\000t\000t\000e\000m\000p\000t) +endobj +2617 0 obj +<< /S /GoTo /D (subsubsection.8.33.2.3) >> +endobj +2620 0 obj +(\376\377\0008\000.\0003\0003\000.\0002\000.\0003\000\040\000M\000a\000x\000M\000i\000l\000l\000i\000s\000e\000c\000o\000n\000s\000P\000e\000r\000P\000i\000n\000g) +endobj +2621 0 obj +<< /S /GoTo /D (subsubsection.8.33.2.4) >> +endobj +2624 0 obj +(\376\377\0008\000.\0003\0003\000.\0002\000.\0004\000\040\000U\000s\000e\000N\000a\000t\000i\000v\000e) +endobj +2625 0 obj +<< /S /GoTo /D (subsection.8.33.3) >> +endobj +2628 0 obj +(\376\377\0008\000.\0003\0003\000.\0003\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2629 0 obj +<< /S /GoTo /D (subsubsection.8.33.3.1) >> +endobj +2632 0 obj +(\376\377\0008\000.\0003\0003\000.\0003\000.\0001\000\040\000B\000e\000s\000t\000R\000e\000g\000i\000o\000n) +endobj +2633 0 obj +<< /S /GoTo /D (subsubsection.8.33.3.2) >> +endobj +2636 0 obj +(\376\377\0008\000.\0003\0003\000.\0003\000.\0002\000\040\000D\000o\000n\000e) +endobj +2637 0 obj +<< /S /GoTo /D (section.8.34) >> +endobj +2640 0 obj +(\376\377\0008\000.\0003\0004\000\040\000P\000h\000o\000t\000o\000n\000P\000l\000a\000y\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2641 0 obj +<< /S /GoTo /D (subsection.8.34.1) >> +endobj +2644 0 obj +(\376\377\0008\000.\0003\0004\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2645 0 obj +<< /S /GoTo /D (subsection.8.34.2) >> +endobj +2648 0 obj +(\376\377\0008\000.\0003\0004\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2649 0 obj +<< /S /GoTo /D (subsubsection.8.34.2.1) >> +endobj +2652 0 obj +(\376\377\0008\000.\0003\0004\000.\0002\000.\0001\000\040\000P\000h\000o\000t\000o\000n\000P\000l\000a\000y\000e\000r) +endobj +2653 0 obj +<< /S /GoTo /D (subsection.8.34.3) >> +endobj +2656 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2657 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.1) >> +endobj +2660 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0001\000\040\000C\000o\000m\000p\000a\000r\000e\000T\000o) +endobj +2661 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.2) >> +endobj +2664 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0002\000\040\000C\000o\000m\000p\000a\000r\000e\000T\000o) +endobj +2665 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.3) >> +endobj +2668 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0003\000\040\000E\000q\000u\000a\000l\000s) +endobj +2669 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.4) >> +endobj +2672 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0004\000\040\000E\000q\000u\000a\000l\000s) +endobj +2673 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.5) >> +endobj +2676 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0005\000\040\000E\000q\000u\000a\000l\000s) +endobj +2677 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.6) >> +endobj +2680 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0006\000\040\000F\000i\000n\000d) +endobj +2681 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.7) >> +endobj +2684 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0007\000\040\000G\000e\000t) +endobj +2685 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.8) >> +endobj +2688 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0008\000\040\000G\000e\000t\000H\000a\000s\000h\000C\000o\000d\000e) +endobj +2689 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.9) >> +endobj +2692 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0009\000\040\000G\000e\000t\000N\000e\000x\000t) +endobj +2693 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.10) >> +endobj +2696 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0001\0000\000\040\000G\000e\000t\000N\000e\000x\000t\000F\000o\000r) +endobj +2697 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.11) >> +endobj +2700 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0001\0001\000\040\000G\000e\000t\000N\000e\000x\000t\000F\000o\000r) +endobj +2701 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.12) >> +endobj +2704 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0001\0002\000\040\000S\000e\000t\000C\000u\000s\000t\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +2705 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.13) >> +endobj +2708 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0001\0003\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +2709 0 obj +<< /S /GoTo /D (subsubsection.8.34.3.14) >> +endobj +2712 0 obj +(\376\377\0008\000.\0003\0004\000.\0003\000.\0001\0004\000\040\000T\000o\000S\000t\000r\000i\000n\000g\000F\000u\000l\000l) +endobj +2713 0 obj +<< /S /GoTo /D (subsection.8.34.4) >> +endobj +2716 0 obj +(\376\377\0008\000.\0003\0004\000.\0004\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2717 0 obj +<< /S /GoTo /D (subsubsection.8.34.4.1) >> +endobj +2720 0 obj +(\376\377\0008\000.\0003\0004\000.\0004\000.\0001\000\040\000I\000s\000L\000o\000c\000a\000l) +endobj +2721 0 obj +<< /S /GoTo /D (subsubsection.8.34.4.2) >> +endobj +2724 0 obj +(\376\377\0008\000.\0003\0004\000.\0004\000.\0002\000\040\000T\000a\000g\000O\000b\000j\000e\000c\000t) +endobj +2725 0 obj +<< /S /GoTo /D (subsection.8.34.5) >> +endobj +2728 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2729 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.1) >> +endobj +2732 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0001\000\040\000A\000l\000l\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +2733 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.2) >> +endobj +2736 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0002\000\040\000a\000l\000l\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +2737 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.3) >> +endobj +2740 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0003\000\040\000C\000u\000s\000t\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +2741 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.4) >> +endobj +2744 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0004\000\040\000c\000u\000s\000t\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +2745 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.5) >> +endobj +2748 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0005\000\040\000I\000D) +endobj +2749 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.6) >> +endobj +2752 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0006\000\040\000I\000s\000I\000n\000a\000c\000t\000i\000v\000e) +endobj +2753 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.7) >> +endobj +2756 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0007\000\040\000i\000s\000I\000n\000a\000c\000t\000i\000v\000e) +endobj +2757 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.8) >> +endobj +2760 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0008\000\040\000i\000s\000L\000o\000c\000a\000l) +endobj +2761 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.9) >> +endobj +2764 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0009\000\040\000I\000s\000M\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t) +endobj +2765 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.10) >> +endobj +2768 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0001\0000\000\040\000i\000s\000M\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t) +endobj +2769 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.11) >> +endobj +2772 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0001\0001\000\040\000n\000a\000m\000e) +endobj +2773 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.12) >> +endobj +2776 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0001\0002\000\040\000N\000i\000c\000k\000N\000a\000m\000e) +endobj +2777 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.13) >> +endobj +2780 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0001\0003\000\040\000U\000s\000e\000r\000I\000d) +endobj +2781 0 obj +<< /S /GoTo /D (subsubsection.8.34.5.14) >> +endobj +2784 0 obj +(\376\377\0008\000.\0003\0004\000.\0005\000.\0001\0004\000\040\000u\000s\000e\000r\000I\000d) +endobj +2785 0 obj +<< /S /GoTo /D (section.8.35) >> +endobj +2788 0 obj +(\376\377\0008\000.\0003\0005\000\040\000P\000h\000o\000t\000o\000n\000R\000i\000g\000i\000d\000b\000o\000d\000y\0002\000D\000V\000i\000e\000w\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2789 0 obj +<< /S /GoTo /D (subsection.8.35.1) >> +endobj +2792 0 obj +(\376\377\0008\000.\0003\0005\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2793 0 obj +<< /S /GoTo /D (subsection.8.35.2) >> +endobj +2796 0 obj +(\376\377\0008\000.\0003\0005\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2797 0 obj +<< /S /GoTo /D (subsubsection.8.35.2.1) >> +endobj +2800 0 obj +(\376\377\0008\000.\0003\0005\000.\0002\000.\0001\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000V\000i\000e\000w) +endobj +2801 0 obj +<< /S /GoTo /D (section.8.36) >> +endobj +2804 0 obj +(\376\377\0008\000.\0003\0006\000\040\000P\000h\000o\000t\000o\000n\000R\000i\000g\000i\000d\000b\000o\000d\000y\000V\000i\000e\000w\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2805 0 obj +<< /S /GoTo /D (subsection.8.36.1) >> +endobj +2808 0 obj +(\376\377\0008\000.\0003\0006\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2809 0 obj +<< /S /GoTo /D (subsection.8.36.2) >> +endobj +2812 0 obj +(\376\377\0008\000.\0003\0006\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2813 0 obj +<< /S /GoTo /D (subsubsection.8.36.2.1) >> +endobj +2816 0 obj +(\376\377\0008\000.\0003\0006\000.\0002\000.\0001\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000V\000i\000e\000w) +endobj +2817 0 obj +<< /S /GoTo /D (section.8.37) >> +endobj +2820 0 obj +(\376\377\0008\000.\0003\0007\000\040\000P\000h\000o\000t\000o\000n\000S\000t\000a\000t\000s\000G\000u\000i\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2821 0 obj +<< /S /GoTo /D (subsection.8.37.1) >> +endobj +2824 0 obj +(\376\377\0008\000.\0003\0007\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2825 0 obj +<< /S /GoTo /D (subsection.8.37.2) >> +endobj +2828 0 obj +(\376\377\0008\000.\0003\0007\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2829 0 obj +<< /S /GoTo /D (subsubsection.8.37.2.1) >> +endobj +2832 0 obj +(\376\377\0008\000.\0003\0007\000.\0002\000.\0001\000\040\000O\000n\000G\000U\000I) +endobj +2833 0 obj +<< /S /GoTo /D (subsubsection.8.37.2.2) >> +endobj +2836 0 obj +(\376\377\0008\000.\0003\0007\000.\0002\000.\0002\000\040\000S\000t\000a\000r\000t) +endobj +2837 0 obj +<< /S /GoTo /D (subsubsection.8.37.2.3) >> +endobj +2840 0 obj +(\376\377\0008\000.\0003\0007\000.\0002\000.\0003\000\040\000T\000r\000a\000f\000f\000i\000c\000S\000t\000a\000t\000s\000W\000i\000n\000d\000o\000w) +endobj +2841 0 obj +<< /S /GoTo /D (subsubsection.8.37.2.4) >> +endobj +2844 0 obj +(\376\377\0008\000.\0003\0007\000.\0002\000.\0004\000\040\000U\000p\000d\000a\000t\000e) +endobj +2845 0 obj +<< /S /GoTo /D (subsection.8.37.3) >> +endobj +2848 0 obj +(\376\377\0008\000.\0003\0007\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2849 0 obj +<< /S /GoTo /D (subsubsection.8.37.3.1) >> +endobj +2852 0 obj +(\376\377\0008\000.\0003\0007\000.\0003\000.\0001\000\040\000b\000u\000t\000t\000o\000n\000s\000O\000n) +endobj +2853 0 obj +<< /S /GoTo /D (subsubsection.8.37.3.2) >> +endobj +2856 0 obj +(\376\377\0008\000.\0003\0007\000.\0003\000.\0002\000\040\000h\000e\000a\000l\000t\000h\000S\000t\000a\000t\000s\000V\000i\000s\000i\000b\000l\000e) +endobj +2857 0 obj +<< /S /GoTo /D (subsubsection.8.37.3.3) >> +endobj +2860 0 obj +(\376\377\0008\000.\0003\0007\000.\0003\000.\0003\000\040\000s\000t\000a\000t\000s\000O\000n) +endobj +2861 0 obj +<< /S /GoTo /D (subsubsection.8.37.3.4) >> +endobj +2864 0 obj +(\376\377\0008\000.\0003\0007\000.\0003\000.\0004\000\040\000s\000t\000a\000t\000s\000R\000e\000c\000t) +endobj +2865 0 obj +<< /S /GoTo /D (subsubsection.8.37.3.5) >> +endobj +2868 0 obj +(\376\377\0008\000.\0003\0007\000.\0003\000.\0005\000\040\000s\000t\000a\000t\000s\000W\000i\000n\000d\000o\000w\000O\000n) +endobj +2869 0 obj +<< /S /GoTo /D (subsubsection.8.37.3.6) >> +endobj +2872 0 obj +(\376\377\0008\000.\0003\0007\000.\0003\000.\0006\000\040\000t\000r\000a\000f\000f\000i\000c\000S\000t\000a\000t\000s\000O\000n) +endobj +2873 0 obj +<< /S /GoTo /D (subsubsection.8.37.3.7) >> +endobj +2876 0 obj +(\376\377\0008\000.\0003\0007\000.\0003\000.\0007\000\040\000W\000i\000n\000d\000o\000w\000I\000d) +endobj +2877 0 obj +<< /S /GoTo /D (section.8.38) >> +endobj +2880 0 obj +(\376\377\0008\000.\0003\0008\000\040\000P\000h\000o\000t\000o\000n\000S\000t\000r\000e\000a\000m\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2881 0 obj +<< /S /GoTo /D (subsection.8.38.1) >> +endobj +2884 0 obj +(\376\377\0008\000.\0003\0008\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2885 0 obj +<< /S /GoTo /D (subsection.8.38.2) >> +endobj +2888 0 obj +(\376\377\0008\000.\0003\0008\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2889 0 obj +<< /S /GoTo /D (subsubsection.8.38.2.1) >> +endobj +2892 0 obj +(\376\377\0008\000.\0003\0008\000.\0002\000.\0001\000\040\000P\000h\000o\000t\000o\000n\000S\000t\000r\000e\000a\000m) +endobj +2893 0 obj +<< /S /GoTo /D (subsection.8.38.3) >> +endobj +2896 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2897 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.1) >> +endobj +2900 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0001\000\040\000P\000e\000e\000k\000N\000e\000x\000t) +endobj +2901 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.2) >> +endobj +2904 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0002\000\040\000R\000e\000c\000e\000i\000v\000e\000N\000e\000x\000t) +endobj +2905 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.3) >> +endobj +2908 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0003\000\040\000S\000e\000n\000d\000N\000e\000x\000t) +endobj +2909 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.4) >> +endobj +2912 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0004\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2913 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.5) >> +endobj +2916 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0005\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2917 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.6) >> +endobj +2920 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0006\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2921 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.7) >> +endobj +2924 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0007\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2925 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.8) >> +endobj +2928 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0008\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2929 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.9) >> +endobj +2932 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0009\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2933 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.10) >> +endobj +2936 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0001\0000\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2937 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.11) >> +endobj +2940 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0001\0001\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2941 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.12) >> +endobj +2944 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0001\0002\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2945 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.13) >> +endobj +2948 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0001\0003\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2949 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.14) >> +endobj +2952 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0001\0004\000\040\000S\000e\000t\000R\000e\000a\000d\000S\000t\000r\000e\000a\000m) +endobj +2953 0 obj +<< /S /GoTo /D (subsubsection.8.38.3.15) >> +endobj +2956 0 obj +(\376\377\0008\000.\0003\0008\000.\0003\000.\0001\0005\000\040\000T\000o\000A\000r\000r\000a\000y) +endobj +2957 0 obj +<< /S /GoTo /D (subsection.8.38.4) >> +endobj +2960 0 obj +(\376\377\0008\000.\0003\0008\000.\0004\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2961 0 obj +<< /S /GoTo /D (subsubsection.8.38.4.1) >> +endobj +2964 0 obj +(\376\377\0008\000.\0003\0008\000.\0004\000.\0001\000\040\000C\000o\000u\000n\000t) +endobj +2965 0 obj +<< /S /GoTo /D (subsubsection.8.38.4.2) >> +endobj +2968 0 obj +(\376\377\0008\000.\0003\0008\000.\0004\000.\0002\000\040\000i\000s\000R\000e\000a\000d\000i\000n\000g) +endobj +2969 0 obj +<< /S /GoTo /D (subsubsection.8.38.4.3) >> +endobj +2972 0 obj +(\376\377\0008\000.\0003\0008\000.\0004\000.\0003\000\040\000i\000s\000W\000r\000i\000t\000i\000n\000g) +endobj +2973 0 obj +<< /S /GoTo /D (section.8.39) >> +endobj +2976 0 obj +(\376\377\0008\000.\0003\0009\000\040\000P\000h\000o\000t\000o\000n\000S\000t\000r\000e\000a\000m\000Q\000u\000e\000u\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2977 0 obj +<< /S /GoTo /D (subsection.8.39.1) >> +endobj +2980 0 obj +(\376\377\0008\000.\0003\0009\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2981 0 obj +<< /S /GoTo /D (subsection.8.39.2) >> +endobj +2984 0 obj +(\376\377\0008\000.\0003\0009\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2985 0 obj +<< /S /GoTo /D (subsubsection.8.39.2.1) >> +endobj +2988 0 obj +(\376\377\0008\000.\0003\0009\000.\0002\000.\0001\000\040\000P\000h\000o\000t\000o\000n\000S\000t\000r\000e\000a\000m\000Q\000u\000e\000u\000e) +endobj +2989 0 obj +<< /S /GoTo /D (subsection.8.39.3) >> +endobj +2992 0 obj +(\376\377\0008\000.\0003\0009\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2993 0 obj +<< /S /GoTo /D (subsubsection.8.39.3.1) >> +endobj +2996 0 obj +(\376\377\0008\000.\0003\0009\000.\0003\000.\0001\000\040\000D\000e\000s\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +2997 0 obj +<< /S /GoTo /D (subsubsection.8.39.3.2) >> +endobj +3000 0 obj +(\376\377\0008\000.\0003\0009\000.\0003\000.\0002\000\040\000H\000a\000s\000Q\000u\000e\000u\000e\000d\000O\000b\000j\000e\000c\000t\000s) +endobj +3001 0 obj +<< /S /GoTo /D (subsubsection.8.39.3.3) >> +endobj +3004 0 obj +(\376\377\0008\000.\0003\0009\000.\0003\000.\0003\000\040\000R\000e\000c\000e\000i\000v\000e\000N\000e\000x\000t) +endobj +3005 0 obj +<< /S /GoTo /D (subsubsection.8.39.3.4) >> +endobj +3008 0 obj +(\376\377\0008\000.\0003\0009\000.\0003\000.\0004\000\040\000R\000e\000s\000e\000t) +endobj +3009 0 obj +<< /S /GoTo /D (subsubsection.8.39.3.5) >> +endobj +3012 0 obj +(\376\377\0008\000.\0003\0009\000.\0003\000.\0005\000\040\000S\000e\000n\000d\000N\000e\000x\000t) +endobj +3013 0 obj +<< /S /GoTo /D (subsubsection.8.39.3.6) >> +endobj +3016 0 obj +(\376\377\0008\000.\0003\0009\000.\0003\000.\0006\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e) +endobj +3017 0 obj +<< /S /GoTo /D (section.8.40) >> +endobj +3020 0 obj +(\376\377\0008\000.\0004\0000\000\040\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3021 0 obj +<< /S /GoTo /D (subsection.8.40.1) >> +endobj +3024 0 obj +(\376\377\0008\000.\0004\0000\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +3025 0 obj +<< /S /GoTo /D (subsection.8.40.2) >> +endobj +3028 0 obj +(\376\377\0008\000.\0004\0000\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3029 0 obj +<< /S /GoTo /D (subsubsection.8.40.2.1) >> +endobj +3032 0 obj +(\376\377\0008\000.\0004\0000\000.\0002\000.\0001\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000V\000i\000e\000w) +endobj +3033 0 obj +<< /S /GoTo /D (subsubsection.8.40.2.2) >> +endobj +3036 0 obj +(\376\377\0008\000.\0004\0000\000.\0002\000.\0002\000\040\000S\000e\000t\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000d\000V\000a\000l\000u\000e\000s) +endobj +3037 0 obj +<< /S /GoTo /D (section.8.41) >> +endobj +3040 0 obj +(\376\377\0008\000.\0004\0001\000\040\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000P\000o\000s\000i\000t\000i\000o\000n\000C\000o\000n\000t\000r\000o\000l\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3041 0 obj +<< /S /GoTo /D (subsection.8.41.1) >> +endobj +3044 0 obj +(\376\377\0008\000.\0004\0001\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3045 0 obj +<< /S /GoTo /D (subsubsection.8.41.1.1) >> +endobj +3048 0 obj +(\376\377\0008\000.\0004\0001\000.\0001\000.\0001\000\040\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000P\000o\000s\000i\000t\000i\000o\000n\000C\000o\000n\000t\000r\000o\000l) +endobj +3049 0 obj +<< /S /GoTo /D (subsection.8.41.2) >> +endobj +3052 0 obj +(\376\377\0008\000.\0004\0001\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3053 0 obj +<< /S /GoTo /D (subsubsection.8.41.2.1) >> +endobj +3056 0 obj +(\376\377\0008\000.\0004\0001\000.\0002\000.\0001\000\040\000G\000e\000t\000E\000x\000t\000r\000a\000p\000o\000l\000a\000t\000e\000d\000P\000o\000s\000i\000t\000i\000o\000n\000O\000f\000f\000s\000e\000t) +endobj +3057 0 obj +<< /S /GoTo /D (subsubsection.8.41.2.2) >> +endobj +3060 0 obj +(\376\377\0008\000.\0004\0001\000.\0002\000.\0002\000\040\000G\000e\000t\000N\000e\000t\000w\000o\000r\000k\000P\000o\000s\000i\000t\000i\000o\000n) +endobj +3061 0 obj +<< /S /GoTo /D (subsubsection.8.41.2.3) >> +endobj +3064 0 obj +(\376\377\0008\000.\0004\0001\000.\0002\000.\0003\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000V\000i\000e\000w) +endobj +3065 0 obj +<< /S /GoTo /D (subsubsection.8.41.2.4) >> +endobj +3068 0 obj +(\376\377\0008\000.\0004\0001\000.\0002\000.\0004\000\040\000S\000e\000t\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000d\000V\000a\000l\000u\000e\000s) +endobj +3069 0 obj +<< /S /GoTo /D (subsubsection.8.41.2.5) >> +endobj +3072 0 obj +(\376\377\0008\000.\0004\0001\000.\0002\000.\0005\000\040\000U\000p\000d\000a\000t\000e\000P\000o\000s\000i\000t\000i\000o\000n) +endobj +3073 0 obj +<< /S /GoTo /D (section.8.42) >> +endobj +3076 0 obj +(\376\377\0008\000.\0004\0002\000\040\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000P\000o\000s\000i\000t\000i\000o\000n\000M\000o\000d\000e\000l\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3077 0 obj +<< /S /GoTo /D (subsection.8.42.1) >> +endobj +3080 0 obj +(\376\377\0008\000.\0004\0002\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3081 0 obj +<< /S /GoTo /D (subsubsection.8.42.1.1) >> +endobj +3084 0 obj +(\376\377\0008\000.\0004\0002\000.\0001\000.\0001\000\040\000E\000x\000t\000r\000a\000p\000o\000l\000a\000t\000e\000O\000p\000t\000i\000o\000n\000s) +endobj +3085 0 obj +<< /S /GoTo /D (subsubsection.8.42.1.2) >> +endobj +3088 0 obj +(\376\377\0008\000.\0004\0002\000.\0001\000.\0002\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000O\000p\000t\000i\000o\000n\000s) +endobj +3089 0 obj +<< /S /GoTo /D (subsection.8.42.2) >> +endobj +3092 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3093 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.1) >> +endobj +3096 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0001\000\040\000D\000r\000a\000w\000E\000r\000r\000o\000r\000G\000i\000z\000m\000o) +endobj +3097 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.2) >> +endobj +3100 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0002\000\040\000E\000x\000t\000r\000a\000p\000o\000l\000a\000t\000e\000I\000n\000c\000l\000u\000d\000i\000n\000g\000R\000o\000u\000n\000d\000T\000r\000i\000p\000T\000i\000m\000e) +endobj +3101 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.3) >> +endobj +3104 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0003\000\040\000E\000x\000t\000r\000a\000p\000o\000l\000a\000t\000e\000N\000u\000m\000b\000e\000r\000O\000f\000S\000t\000o\000r\000e\000d\000P\000o\000s\000i\000t\000i\000o\000n\000s) +endobj +3105 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.4) >> +endobj +3108 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0004\000\040\000E\000x\000t\000r\000a\000p\000o\000l\000a\000t\000e\000O\000p\000t\000i\000o\000n) +endobj +3109 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.5) >> +endobj +3112 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0005\000\040\000E\000x\000t\000r\000a\000p\000o\000l\000a\000t\000e\000S\000p\000e\000e\000d) +endobj +3113 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.6) >> +endobj +3116 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0006\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000L\000e\000r\000p\000S\000p\000e\000e\000d) +endobj +3117 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.7) >> +endobj +3120 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0007\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000M\000o\000v\000e\000T\000o\000w\000a\000r\000d\000s\000A\000c\000c\000e\000l\000e\000r\000a\000t\000i\000o\000n) +endobj +3121 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.8) >> +endobj +3124 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0008\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000M\000o\000v\000e\000T\000o\000w\000a\000r\000d\000s\000D\000e\000c\000e\000l\000e\000r\000a\000t\000i\000o\000n) +endobj +3125 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.9) >> +endobj +3128 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0009\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000M\000o\000v\000e\000T\000o\000w\000a\000r\000d\000s\000S\000p\000e\000e\000d) +endobj +3129 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.10) >> +endobj +3132 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0001\0000\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000O\000p\000t\000i\000o\000n) +endobj +3133 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.11) >> +endobj +3136 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0001\0001\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000S\000p\000e\000e\000d\000C\000u\000r\000v\000e) +endobj +3137 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.12) >> +endobj +3140 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0001\0002\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000E\000n\000a\000b\000l\000e\000d) +endobj +3141 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.13) >> +endobj +3144 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0001\0003\000\040\000T\000e\000l\000e\000p\000o\000r\000t\000E\000n\000a\000b\000l\000e\000d) +endobj +3145 0 obj +<< /S /GoTo /D (subsubsection.8.42.2.14) >> +endobj +3148 0 obj +(\376\377\0008\000.\0004\0002\000.\0002\000.\0001\0004\000\040\000T\000e\000l\000e\000p\000o\000r\000t\000I\000f\000D\000i\000s\000t\000a\000n\000c\000e\000G\000r\000e\000a\000t\000e\000r\000T\000h\000a\000n) +endobj +3149 0 obj +<< /S /GoTo /D (section.8.43) >> +endobj +3152 0 obj +(\376\377\0008\000.\0004\0003\000\040\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000R\000o\000t\000a\000t\000i\000o\000n\000C\000o\000n\000t\000r\000o\000l\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3153 0 obj +<< /S /GoTo /D (subsection.8.43.1) >> +endobj +3156 0 obj +(\376\377\0008\000.\0004\0003\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3157 0 obj +<< /S /GoTo /D (subsubsection.8.43.1.1) >> +endobj +3160 0 obj +(\376\377\0008\000.\0004\0003\000.\0001\000.\0001\000\040\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000R\000o\000t\000a\000t\000i\000o\000n\000C\000o\000n\000t\000r\000o\000l) +endobj +3161 0 obj +<< /S /GoTo /D (subsection.8.43.2) >> +endobj +3164 0 obj +(\376\377\0008\000.\0004\0003\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3165 0 obj +<< /S /GoTo /D (subsubsection.8.43.2.1) >> +endobj +3168 0 obj +(\376\377\0008\000.\0004\0003\000.\0002\000.\0001\000\040\000G\000e\000t\000N\000e\000t\000w\000o\000r\000k\000R\000o\000t\000a\000t\000i\000o\000n) +endobj +3169 0 obj +<< /S /GoTo /D (subsubsection.8.43.2.2) >> +endobj +3172 0 obj +(\376\377\0008\000.\0004\0003\000.\0002\000.\0002\000\040\000G\000e\000t\000R\000o\000t\000a\000t\000i\000o\000n) +endobj +3173 0 obj +<< /S /GoTo /D (subsubsection.8.43.2.3) >> +endobj +3176 0 obj +(\376\377\0008\000.\0004\0003\000.\0002\000.\0003\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000V\000i\000e\000w) +endobj +3177 0 obj +<< /S /GoTo /D (section.8.44) >> +endobj +3180 0 obj +(\376\377\0008\000.\0004\0004\000\040\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000R\000o\000t\000a\000t\000i\000o\000n\000M\000o\000d\000e\000l\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3181 0 obj +<< /S /GoTo /D (subsection.8.44.1) >> +endobj +3184 0 obj +(\376\377\0008\000.\0004\0004\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3185 0 obj +<< /S /GoTo /D (subsubsection.8.44.1.1) >> +endobj +3188 0 obj +(\376\377\0008\000.\0004\0004\000.\0001\000.\0001\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000O\000p\000t\000i\000o\000n\000s) +endobj +3189 0 obj +<< /S /GoTo /D (subsection.8.44.2) >> +endobj +3192 0 obj +(\376\377\0008\000.\0004\0004\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3193 0 obj +<< /S /GoTo /D (subsubsection.8.44.2.1) >> +endobj +3196 0 obj +(\376\377\0008\000.\0004\0004\000.\0002\000.\0001\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000L\000e\000r\000p\000S\000p\000e\000e\000d) +endobj +3197 0 obj +<< /S /GoTo /D (subsubsection.8.44.2.2) >> +endobj +3200 0 obj +(\376\377\0008\000.\0004\0004\000.\0002\000.\0002\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000O\000p\000t\000i\000o\000n) +endobj +3201 0 obj +<< /S /GoTo /D (subsubsection.8.44.2.3) >> +endobj +3204 0 obj +(\376\377\0008\000.\0004\0004\000.\0002\000.\0003\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000R\000o\000t\000a\000t\000e\000T\000o\000w\000a\000r\000d\000s\000S\000p\000e\000e\000d) +endobj +3205 0 obj +<< /S /GoTo /D (subsubsection.8.44.2.4) >> +endobj +3208 0 obj +(\376\377\0008\000.\0004\0004\000.\0002\000.\0004\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000E\000n\000a\000b\000l\000e\000d) +endobj +3209 0 obj +<< /S /GoTo /D (section.8.45) >> +endobj +3212 0 obj +(\376\377\0008\000.\0004\0005\000\040\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000S\000c\000a\000l\000e\000C\000o\000n\000t\000r\000o\000l\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3213 0 obj +<< /S /GoTo /D (subsection.8.45.1) >> +endobj +3216 0 obj +(\376\377\0008\000.\0004\0005\000.\0001\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3217 0 obj +<< /S /GoTo /D (subsubsection.8.45.1.1) >> +endobj +3220 0 obj +(\376\377\0008\000.\0004\0005\000.\0001\000.\0001\000\040\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000S\000c\000a\000l\000e\000C\000o\000n\000t\000r\000o\000l) +endobj +3221 0 obj +<< /S /GoTo /D (subsection.8.45.2) >> +endobj +3224 0 obj +(\376\377\0008\000.\0004\0005\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3225 0 obj +<< /S /GoTo /D (subsubsection.8.45.2.1) >> +endobj +3228 0 obj +(\376\377\0008\000.\0004\0005\000.\0002\000.\0001\000\040\000G\000e\000t\000N\000e\000t\000w\000o\000r\000k\000S\000c\000a\000l\000e) +endobj +3229 0 obj +<< /S /GoTo /D (subsubsection.8.45.2.2) >> +endobj +3232 0 obj +(\376\377\0008\000.\0004\0005\000.\0002\000.\0002\000\040\000G\000e\000t\000S\000c\000a\000l\000e) +endobj +3233 0 obj +<< /S /GoTo /D (subsubsection.8.45.2.3) >> +endobj +3236 0 obj +(\376\377\0008\000.\0004\0005\000.\0002\000.\0003\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000V\000i\000e\000w) +endobj +3237 0 obj +<< /S /GoTo /D (section.8.46) >> +endobj +3240 0 obj +(\376\377\0008\000.\0004\0006\000\040\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000S\000c\000a\000l\000e\000M\000o\000d\000e\000l\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3241 0 obj +<< /S /GoTo /D (subsection.8.46.1) >> +endobj +3244 0 obj +(\376\377\0008\000.\0004\0006\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3245 0 obj +<< /S /GoTo /D (subsubsection.8.46.1.1) >> +endobj +3248 0 obj +(\376\377\0008\000.\0004\0006\000.\0001\000.\0001\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000O\000p\000t\000i\000o\000n\000s) +endobj +3249 0 obj +<< /S /GoTo /D (subsection.8.46.2) >> +endobj +3252 0 obj +(\376\377\0008\000.\0004\0006\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3253 0 obj +<< /S /GoTo /D (subsubsection.8.46.2.1) >> +endobj +3256 0 obj +(\376\377\0008\000.\0004\0006\000.\0002\000.\0001\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000L\000e\000r\000p\000S\000p\000e\000e\000d) +endobj +3257 0 obj +<< /S /GoTo /D (subsubsection.8.46.2.2) >> +endobj +3260 0 obj +(\376\377\0008\000.\0004\0006\000.\0002\000.\0002\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000M\000o\000v\000e\000T\000o\000w\000a\000r\000d\000s\000S\000p\000e\000e\000d) +endobj +3261 0 obj +<< /S /GoTo /D (subsubsection.8.46.2.3) >> +endobj +3264 0 obj +(\376\377\0008\000.\0004\0006\000.\0002\000.\0003\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000e\000O\000p\000t\000i\000o\000n) +endobj +3265 0 obj +<< /S /GoTo /D (subsubsection.8.46.2.4) >> +endobj +3268 0 obj +(\376\377\0008\000.\0004\0006\000.\0002\000.\0004\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000E\000n\000a\000b\000l\000e\000d) +endobj +3269 0 obj +<< /S /GoTo /D (section.8.47) >> +endobj +3272 0 obj +(\376\377\0008\000.\0004\0007\000\040\000P\000h\000o\000t\000o\000n\000V\000i\000e\000w\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3273 0 obj +<< /S /GoTo /D (subsection.8.47.1) >> +endobj +3276 0 obj +(\376\377\0008\000.\0004\0007\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +3277 0 obj +<< /S /GoTo /D (subsection.8.47.2) >> +endobj +3280 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3281 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.1) >> +endobj +3284 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0001\000\040\000D\000e\000s\000e\000r\000i\000a\000l\000i\000z\000e\000V\000i\000e\000w) +endobj +3285 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.2) >> +endobj +3288 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0002\000\040\000F\000i\000n\000d) +endobj +3289 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.3) >> +endobj +3292 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0003\000\040\000G\000e\000t) +endobj +3293 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.4) >> +endobj +3296 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0004\000\040\000G\000e\000t) +endobj +3297 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.5) >> +endobj +3300 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0005\000\040\000O\000n\000M\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t\000S\000w\000i\000t\000c\000h\000e\000d) +endobj +3301 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.6) >> +endobj +3304 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0006\000\040\000R\000e\000f\000r\000e\000s\000h\000R\000p\000c\000M\000o\000n\000o\000B\000e\000h\000a\000v\000i\000o\000u\000r\000C\000a\000c\000h\000e) +endobj +3305 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.7) >> +endobj +3308 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0007\000\040\000R\000e\000q\000u\000e\000s\000t\000O\000w\000n\000e\000r\000s\000h\000i\000p) +endobj +3309 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.8) >> +endobj +3312 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0008\000\040\000R\000P\000C) +endobj +3313 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.9) >> +endobj +3316 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0009\000\040\000R\000P\000C) +endobj +3317 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.10) >> +endobj +3320 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0001\0000\000\040\000R\000p\000c\000S\000e\000c\000u\000r\000e) +endobj +3321 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.11) >> +endobj +3324 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0001\0001\000\040\000R\000p\000c\000S\000e\000c\000u\000r\000e) +endobj +3325 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.12) >> +endobj +3328 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0001\0002\000\040\000S\000e\000r\000i\000a\000l\000i\000z\000e\000V\000i\000e\000w) +endobj +3329 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.13) >> +endobj +3332 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0001\0003\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +3333 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.14) >> +endobj +3336 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0001\0004\000\040\000T\000r\000a\000n\000s\000f\000e\000r\000O\000w\000n\000e\000r\000s\000h\000i\000p) +endobj +3337 0 obj +<< /S /GoTo /D (subsubsection.8.47.2.15) >> +endobj +3340 0 obj +(\376\377\0008\000.\0004\0007\000.\0002\000.\0001\0005\000\040\000T\000r\000a\000n\000s\000f\000e\000r\000O\000w\000n\000e\000r\000s\000h\000i\000p) +endobj +3341 0 obj +<< /S /GoTo /D (subsection.8.47.3) >> +endobj +3344 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3345 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.1) >> +endobj +3348 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0001\000\040\000c\000u\000r\000r\000e\000n\000t\000M\000a\000s\000t\000e\000r\000I\000D) +endobj +3349 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.2) >> +endobj +3352 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0002\000\040\000g\000r\000o\000u\000p) +endobj +3353 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.3) >> +endobj +3356 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0003\000\040\000i\000n\000s\000t\000a\000n\000t\000i\000a\000t\000i\000o\000n\000I\000d) +endobj +3357 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.4) >> +endobj +3360 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0004\000\040\000O\000b\000s\000e\000r\000v\000e\000d\000C\000o\000m\000p\000o\000n\000e\000n\000t\000s) +endobj +3361 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.5) >> +endobj +3364 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0005\000\040\000o\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000R\000i\000g\000i\000d\000B\000o\000d\000y\000O\000p\000t\000i\000o\000n) +endobj +3365 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.6) >> +endobj +3368 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0006\000\040\000o\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000T\000r\000a\000n\000s\000f\000o\000r\000m\000O\000p\000t\000i\000o\000n) +endobj +3369 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.7) >> +endobj +3372 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0007\000\040\000o\000w\000n\000e\000r\000I\000d) +endobj +3373 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.8) >> +endobj +3376 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0008\000\040\000o\000w\000n\000e\000r\000s\000h\000i\000p\000T\000r\000a\000n\000s\000f\000e\000r) +endobj +3377 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.9) >> +endobj +3380 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0009\000\040\000O\000w\000n\000e\000r\000S\000h\000i\000p\000W\000a\000s\000T\000r\000a\000n\000s\000f\000e\000r\000e\000d) +endobj +3381 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.10) >> +endobj +3384 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0001\0000\000\040\000p\000r\000e\000f\000i\000x\000B\000a\000c\000k\000u\000p) +endobj +3385 0 obj +<< /S /GoTo /D (subsubsection.8.47.3.11) >> +endobj +3388 0 obj +(\376\377\0008\000.\0004\0007\000.\0003\000.\0001\0001\000\040\000s\000y\000n\000c\000h\000r\000o\000n\000i\000z\000a\000t\000i\000o\000n) +endobj +3389 0 obj +<< /S /GoTo /D (subsection.8.47.4) >> +endobj +3392 0 obj +(\376\377\0008\000.\0004\0007\000.\0004\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3393 0 obj +<< /S /GoTo /D (subsubsection.8.47.4.1) >> +endobj +3396 0 obj +(\376\377\0008\000.\0004\0007\000.\0004\000.\0001\000\040\000C\000r\000e\000a\000t\000o\000r\000A\000c\000t\000o\000r\000N\000r) +endobj +3397 0 obj +<< /S /GoTo /D (subsubsection.8.47.4.2) >> +endobj +3400 0 obj +(\376\377\0008\000.\0004\0007\000.\0004\000.\0002\000\040\000i\000n\000s\000t\000a\000n\000t\000i\000a\000t\000i\000o\000n\000D\000a\000t\000a) +endobj +3401 0 obj +<< /S /GoTo /D (subsubsection.8.47.4.3) >> +endobj +3404 0 obj +(\376\377\0008\000.\0004\0007\000.\0004\000.\0003\000\040\000i\000s\000M\000i\000n\000e) +endobj +3405 0 obj +<< /S /GoTo /D (subsubsection.8.47.4.4) >> +endobj +3408 0 obj +(\376\377\0008\000.\0004\0007\000.\0004\000.\0004\000\040\000i\000s\000O\000w\000n\000e\000r\000A\000c\000t\000i\000v\000e) +endobj +3409 0 obj +<< /S /GoTo /D (subsubsection.8.47.4.5) >> +endobj +3412 0 obj +(\376\377\0008\000.\0004\0007\000.\0004\000.\0005\000\040\000i\000s\000S\000c\000e\000n\000e\000V\000i\000e\000w) +endobj +3413 0 obj +<< /S /GoTo /D (subsubsection.8.47.4.6) >> +endobj +3416 0 obj +(\376\377\0008\000.\0004\0007\000.\0004\000.\0006\000\040\000o\000w\000n\000e\000r) +endobj +3417 0 obj +<< /S /GoTo /D (subsubsection.8.47.4.7) >> +endobj +3420 0 obj +(\376\377\0008\000.\0004\0007\000.\0004\000.\0007\000\040\000O\000w\000n\000e\000r\000A\000c\000t\000o\000r\000N\000r) +endobj +3421 0 obj +<< /S /GoTo /D (subsubsection.8.47.4.8) >> +endobj +3424 0 obj +(\376\377\0008\000.\0004\0007\000.\0004\000.\0008\000\040\000p\000r\000e\000f\000i\000x) +endobj +3425 0 obj +<< /S /GoTo /D (subsubsection.8.47.4.9) >> +endobj +3428 0 obj +(\376\377\0008\000.\0004\0007\000.\0004\000.\0009\000\040\000v\000i\000e\000w\000I\000D) +endobj +3429 0 obj +<< /S /GoTo /D (section.8.48) >> +endobj +3432 0 obj +(\376\377\0008\000.\0004\0008\000\040\000P\000i\000n\000g\000M\000o\000n\000o\000E\000d\000i\000t\000o\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3433 0 obj +<< /S /GoTo /D (subsection.8.48.1) >> +endobj +3436 0 obj +(\376\377\0008\000.\0004\0008\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +3437 0 obj +<< /S /GoTo /D (subsection.8.48.2) >> +endobj +3440 0 obj +(\376\377\0008\000.\0004\0008\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3441 0 obj +<< /S /GoTo /D (subsubsection.8.48.2.1) >> +endobj +3444 0 obj +(\376\377\0008\000.\0004\0008\000.\0002\000.\0001\000\040\000D\000i\000s\000p\000o\000s\000e) +endobj +3445 0 obj +<< /S /GoTo /D (subsubsection.8.48.2.2) >> +endobj +3448 0 obj +(\376\377\0008\000.\0004\0008\000.\0002\000.\0002\000\040\000D\000o\000n\000e) +endobj +3449 0 obj +<< /S /GoTo /D (subsubsection.8.48.2.3) >> +endobj +3452 0 obj +(\376\377\0008\000.\0004\0008\000.\0002\000.\0003\000\040\000S\000t\000a\000r\000t\000P\000i\000n\000g) +endobj +3453 0 obj +<< /S /GoTo /D (section.8.49) >> +endobj +3456 0 obj +(\376\377\0008\000.\0004\0009\000\040\000P\000h\000o\000t\000o\000n\000.\000P\000u\000n\000B\000e\000h\000a\000v\000i\000o\000u\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3457 0 obj +<< /S /GoTo /D (subsection.8.49.1) >> +endobj +3460 0 obj +(\376\377\0008\000.\0004\0009\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +3461 0 obj +<< /S /GoTo /D (subsection.8.49.2) >> +endobj +3464 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3465 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.1) >> +endobj +3468 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\000\040\000O\000n\000C\000o\000n\000n\000e\000c\000t\000e\000d\000T\000o\000M\000a\000s\000t\000e\000r) +endobj +3469 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.2) >> +endobj +3472 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0002\000\040\000O\000n\000C\000o\000n\000n\000e\000c\000t\000e\000d\000T\000o\000P\000h\000o\000t\000o\000n) +endobj +3473 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.3) >> +endobj +3476 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0003\000\040\000O\000n\000C\000o\000n\000n\000e\000c\000t\000i\000o\000n\000F\000a\000i\000l) +endobj +3477 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.4) >> +endobj +3480 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0004\000\040\000O\000n\000C\000r\000e\000a\000t\000e\000d\000R\000o\000o\000m) +endobj +3481 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.5) >> +endobj +3484 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0005\000\040\000O\000n\000C\000u\000s\000t\000o\000m\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000F\000a\000i\000l\000e\000d) +endobj +3485 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.6) >> +endobj +3488 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0006\000\040\000O\000n\000C\000u\000s\000t\000o\000m\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000R\000e\000s\000p\000o\000n\000s\000e) +endobj +3489 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.7) >> +endobj +3492 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0007\000\040\000O\000n\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t\000e\000d\000F\000r\000o\000m\000P\000h\000o\000t\000o\000n) +endobj +3493 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.8) >> +endobj +3496 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0008\000\040\000O\000n\000F\000a\000i\000l\000e\000d\000T\000o\000C\000o\000n\000n\000e\000c\000t\000T\000o\000P\000h\000o\000t\000o\000n) +endobj +3497 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.9) >> +endobj +3500 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0009\000\040\000O\000n\000J\000o\000i\000n\000e\000d\000L\000o\000b\000b\000y) +endobj +3501 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.10) >> +endobj +3504 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\0000\000\040\000O\000n\000J\000o\000i\000n\000e\000d\000R\000o\000o\000m) +endobj +3505 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.11) >> +endobj +3508 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\0001\000\040\000O\000n\000L\000e\000f\000t\000L\000o\000b\000b\000y) +endobj +3509 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.12) >> +endobj +3512 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\0002\000\040\000O\000n\000L\000e\000f\000t\000R\000o\000o\000m) +endobj +3513 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.13) >> +endobj +3516 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\0003\000\040\000O\000n\000L\000o\000b\000b\000y\000S\000t\000a\000t\000i\000s\000t\000i\000c\000s\000U\000p\000d\000a\000t\000e) +endobj +3517 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.14) >> +endobj +3520 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\0004\000\040\000O\000n\000M\000a\000s\000t\000e\000r\000C\000l\000i\000e\000n\000t\000S\000w\000i\000t\000c\000h\000e\000d) +endobj +3521 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.15) >> +endobj +3524 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\0005\000\040\000O\000n\000O\000w\000n\000e\000r\000s\000h\000i\000p\000R\000e\000q\000u\000e\000s\000t) +endobj +3525 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.16) >> +endobj +3528 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\0006\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000C\000r\000e\000a\000t\000e\000R\000o\000o\000m\000F\000a\000i\000l\000e\000d) +endobj +3529 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.17) >> +endobj +3532 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\0007\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000C\000u\000s\000t\000o\000m\000R\000o\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s\000C\000h\000a\000n\000g\000e\000d) +endobj +3533 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.18) >> +endobj +3536 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\0008\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000I\000n\000s\000t\000a\000n\000t\000i\000a\000t\000e) +endobj +3537 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.19) >> +endobj +3540 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0001\0009\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000J\000o\000i\000n\000R\000o\000o\000m\000F\000a\000i\000l\000e\000d) +endobj +3541 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.20) >> +endobj +3544 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0002\0000\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000M\000a\000x\000C\000c\000c\000u\000R\000e\000a\000c\000h\000e\000d) +endobj +3545 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.21) >> +endobj +3548 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0002\0001\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000P\000l\000a\000y\000e\000r\000C\000o\000n\000n\000e\000c\000t\000e\000d) +endobj +3549 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.22) >> +endobj +3552 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0002\0002\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000P\000l\000a\000y\000e\000r\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t\000e\000d) +endobj +3553 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.23) >> +endobj +3556 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0002\0003\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000P\000l\000a\000y\000e\000r\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s\000C\000h\000a\000n\000g\000e\000d) +endobj +3557 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.24) >> +endobj +3560 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0002\0004\000\040\000O\000n\000P\000h\000o\000t\000o\000n\000R\000a\000n\000d\000o\000m\000J\000o\000i\000n\000F\000a\000i\000l\000e\000d) +endobj +3561 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.25) >> +endobj +3564 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0002\0005\000\040\000O\000n\000R\000e\000c\000e\000i\000v\000e\000d\000R\000o\000o\000m\000L\000i\000s\000t\000U\000p\000d\000a\000t\000e) +endobj +3565 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.26) >> +endobj +3568 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0002\0006\000\040\000O\000n\000U\000p\000d\000a\000t\000e\000d\000F\000r\000i\000e\000n\000d\000L\000i\000s\000t) +endobj +3569 0 obj +<< /S /GoTo /D (subsubsection.8.49.2.27) >> +endobj +3572 0 obj +(\376\377\0008\000.\0004\0009\000.\0002\000.\0002\0007\000\040\000O\000n\000W\000e\000b\000R\000p\000c\000R\000e\000s\000p\000o\000n\000s\000e) +endobj +3573 0 obj +<< /S /GoTo /D (section.8.50) >> +endobj +3576 0 obj +(\376\377\0008\000.\0005\0000\000\040\000P\000u\000n\000R\000P\000C\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3577 0 obj +<< /S /GoTo /D (subsection.8.50.1) >> +endobj +3580 0 obj +(\376\377\0008\000.\0005\0000\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +3581 0 obj +<< /S /GoTo /D (section.8.51) >> +endobj +3584 0 obj +(\376\377\0008\000.\0005\0001\000\040\000R\000a\000i\000s\000e\000E\000v\000e\000n\000t\000O\000p\000t\000i\000o\000n\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3585 0 obj +<< /S /GoTo /D (subsection.8.51.1) >> +endobj +3588 0 obj +(\376\377\0008\000.\0005\0001\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +3589 0 obj +<< /S /GoTo /D (subsection.8.51.2) >> +endobj +3592 0 obj +(\376\377\0008\000.\0005\0001\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3593 0 obj +<< /S /GoTo /D (subsubsection.8.51.2.1) >> +endobj +3596 0 obj +(\376\377\0008\000.\0005\0001\000.\0002\000.\0001\000\040\000C\000a\000c\000h\000i\000n\000g\000O\000p\000t\000i\000o\000n) +endobj +3597 0 obj +<< /S /GoTo /D (subsubsection.8.51.2.2) >> +endobj +3600 0 obj +(\376\377\0008\000.\0005\0001\000.\0002\000.\0002\000\040\000D\000e\000f\000a\000u\000l\000t) +endobj +3601 0 obj +<< /S /GoTo /D (subsubsection.8.51.2.3) >> +endobj +3604 0 obj +(\376\377\0008\000.\0005\0001\000.\0002\000.\0003\000\040\000E\000n\000c\000r\000y\000p\000t) +endobj +3605 0 obj +<< /S /GoTo /D (subsubsection.8.51.2.4) >> +endobj +3608 0 obj +(\376\377\0008\000.\0005\0001\000.\0002\000.\0004\000\040\000F\000o\000r\000w\000a\000r\000d\000T\000o\000W\000e\000b\000h\000o\000o\000k) +endobj +3609 0 obj +<< /S /GoTo /D (subsubsection.8.51.2.5) >> +endobj +3612 0 obj +(\376\377\0008\000.\0005\0001\000.\0002\000.\0005\000\040\000I\000n\000t\000e\000r\000e\000s\000t\000G\000r\000o\000u\000p) +endobj +3613 0 obj +<< /S /GoTo /D (subsubsection.8.51.2.6) >> +endobj +3616 0 obj +(\376\377\0008\000.\0005\0001\000.\0002\000.\0006\000\040\000R\000e\000c\000e\000i\000v\000e\000r\000s) +endobj +3617 0 obj +<< /S /GoTo /D (subsubsection.8.51.2.7) >> +endobj +3620 0 obj +(\376\377\0008\000.\0005\0001\000.\0002\000.\0007\000\040\000S\000e\000q\000u\000e\000n\000c\000e\000C\000h\000a\000n\000n\000e\000l) +endobj +3621 0 obj +<< /S /GoTo /D (subsubsection.8.51.2.8) >> +endobj +3624 0 obj +(\376\377\0008\000.\0005\0001\000.\0002\000.\0008\000\040\000T\000a\000r\000g\000e\000t\000A\000c\000t\000o\000r\000s) +endobj +3625 0 obj +<< /S /GoTo /D (section.8.52) >> +endobj +3628 0 obj +(\376\377\0008\000.\0005\0002\000\040\000R\000e\000g\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3629 0 obj +<< /S /GoTo /D (subsection.8.52.1) >> +endobj +3632 0 obj +(\376\377\0008\000.\0005\0002\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3633 0 obj +<< /S /GoTo /D (subsubsection.8.52.1.1) >> +endobj +3636 0 obj +(\376\377\0008\000.\0005\0002\000.\0001\000.\0001\000\040\000P\000a\000r\000s\000e) +endobj +3637 0 obj +<< /S /GoTo /D (subsubsection.8.52.1.2) >> +endobj +3640 0 obj +(\376\377\0008\000.\0005\0002\000.\0001\000.\0002\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +3641 0 obj +<< /S /GoTo /D (subsection.8.52.2) >> +endobj +3644 0 obj +(\376\377\0008\000.\0005\0002\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3645 0 obj +<< /S /GoTo /D (subsubsection.8.52.2.1) >> +endobj +3648 0 obj +(\376\377\0008\000.\0005\0002\000.\0002\000.\0001\000\040\000C\000o\000d\000e) +endobj +3649 0 obj +<< /S /GoTo /D (subsubsection.8.52.2.2) >> +endobj +3652 0 obj +(\376\377\0008\000.\0005\0002\000.\0002\000.\0002\000\040\000H\000o\000s\000t\000A\000n\000d\000P\000o\000r\000t) +endobj +3653 0 obj +<< /S /GoTo /D (subsubsection.8.52.2.3) >> +endobj +3656 0 obj +(\376\377\0008\000.\0005\0002\000.\0002\000.\0003\000\040\000P\000i\000n\000g) +endobj +3657 0 obj +<< /S /GoTo /D (section.8.53) >> +endobj +3660 0 obj +(\376\377\0008\000.\0005\0003\000\040\000R\000o\000o\000m\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3661 0 obj +<< /S /GoTo /D (subsection.8.53.1) >> +endobj +3664 0 obj +(\376\377\0008\000.\0005\0003\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +3665 0 obj +<< /S /GoTo /D (subsection.8.53.2) >> +endobj +3668 0 obj +(\376\377\0008\000.\0005\0003\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3669 0 obj +<< /S /GoTo /D (subsubsection.8.53.2.1) >> +endobj +3672 0 obj +(\376\377\0008\000.\0005\0003\000.\0002\000.\0001\000\040\000C\000l\000e\000a\000r\000E\000x\000p\000e\000c\000t\000e\000d\000U\000s\000e\000r\000s) +endobj +3673 0 obj +<< /S /GoTo /D (subsubsection.8.53.2.2) >> +endobj +3676 0 obj +(\376\377\0008\000.\0005\0003\000.\0002\000.\0002\000\040\000S\000e\000t\000C\000u\000s\000t\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +3677 0 obj +<< /S /GoTo /D (subsubsection.8.53.2.3) >> +endobj +3680 0 obj +(\376\377\0008\000.\0005\0003\000.\0002\000.\0003\000\040\000S\000e\000t\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s\000L\000i\000s\000t\000e\000d\000I\000n\000L\000o\000b\000b\000y) +endobj +3681 0 obj +<< /S /GoTo /D (subsubsection.8.53.2.4) >> +endobj +3684 0 obj +(\376\377\0008\000.\0005\0003\000.\0002\000.\0004\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +3685 0 obj +<< /S /GoTo /D (subsubsection.8.53.2.5) >> +endobj +3688 0 obj +(\376\377\0008\000.\0005\0003\000.\0002\000.\0005\000\040\000T\000o\000S\000t\000r\000i\000n\000g\000F\000u\000l\000l) +endobj +3689 0 obj +<< /S /GoTo /D (subsection.8.53.3) >> +endobj +3692 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3693 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.1) >> +endobj +3696 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0001\000\040\000A\000u\000t\000o\000C\000l\000e\000a\000n\000U\000p) +endobj +3697 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.2) >> +endobj +3700 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0002\000\040\000a\000u\000t\000o\000C\000l\000e\000a\000n\000U\000p) +endobj +3701 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.3) >> +endobj +3704 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0003\000\040\000E\000x\000p\000e\000c\000t\000e\000d\000U\000s\000e\000r\000s) +endobj +3705 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.4) >> +endobj +3708 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0004\000\040\000e\000x\000p\000e\000c\000t\000e\000d\000U\000s\000e\000r\000s) +endobj +3709 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.5) >> +endobj +3712 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0005\000\040\000I\000s\000O\000p\000e\000n) +endobj +3713 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.6) >> +endobj +3716 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0006\000\040\000I\000s\000V\000i\000s\000i\000b\000l\000e) +endobj +3717 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.7) >> +endobj +3720 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0007\000\040\000M\000a\000x\000P\000l\000a\000y\000e\000r\000s) +endobj +3721 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.8) >> +endobj +3724 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0008\000\040\000m\000a\000x\000P\000l\000a\000y\000e\000r\000s) +endobj +3725 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.9) >> +endobj +3728 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0009\000\040\000N\000a\000m\000e) +endobj +3729 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.10) >> +endobj +3732 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0001\0000\000\040\000n\000a\000m\000e) +endobj +3733 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.11) >> +endobj +3736 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0001\0001\000\040\000o\000p\000e\000n) +endobj +3737 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.12) >> +endobj +3740 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0001\0002\000\040\000P\000l\000a\000y\000e\000r\000C\000o\000u\000n\000t) +endobj +3741 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.13) >> +endobj +3744 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0001\0003\000\040\000p\000l\000a\000y\000e\000r\000C\000o\000u\000n\000t) +endobj +3745 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.14) >> +endobj +3748 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0001\0004\000\040\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s\000L\000i\000s\000t\000e\000d\000I\000n\000L\000o\000b\000b\000y) +endobj +3749 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.15) >> +endobj +3752 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0001\0005\000\040\000p\000r\000o\000p\000e\000r\000t\000i\000e\000s\000L\000i\000s\000t\000e\000d\000I\000n\000L\000o\000b\000b\000y) +endobj +3753 0 obj +<< /S /GoTo /D (subsubsection.8.53.3.16) >> +endobj +3756 0 obj +(\376\377\0008\000.\0005\0003\000.\0003\000.\0001\0006\000\040\000v\000i\000s\000i\000b\000l\000e) +endobj +3757 0 obj +<< /S /GoTo /D (section.8.54) >> +endobj +3760 0 obj +(\376\377\0008\000.\0005\0004\000\040\000R\000o\000o\000m\000I\000n\000f\000o\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3761 0 obj +<< /S /GoTo /D (subsection.8.54.1) >> +endobj +3764 0 obj +(\376\377\0008\000.\0005\0004\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +3765 0 obj +<< /S /GoTo /D (subsection.8.54.2) >> +endobj +3768 0 obj +(\376\377\0008\000.\0005\0004\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3769 0 obj +<< /S /GoTo /D (subsubsection.8.54.2.1) >> +endobj +3772 0 obj +(\376\377\0008\000.\0005\0004\000.\0002\000.\0001\000\040\000E\000q\000u\000a\000l\000s) +endobj +3773 0 obj +<< /S /GoTo /D (subsubsection.8.54.2.2) >> +endobj +3776 0 obj +(\376\377\0008\000.\0005\0004\000.\0002\000.\0002\000\040\000G\000e\000t\000H\000a\000s\000h\000C\000o\000d\000e) +endobj +3777 0 obj +<< /S /GoTo /D (subsubsection.8.54.2.3) >> +endobj +3780 0 obj +(\376\377\0008\000.\0005\0004\000.\0002\000.\0003\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +3781 0 obj +<< /S /GoTo /D (subsubsection.8.54.2.4) >> +endobj +3784 0 obj +(\376\377\0008\000.\0005\0004\000.\0002\000.\0004\000\040\000T\000o\000S\000t\000r\000i\000n\000g\000F\000u\000l\000l) +endobj +3785 0 obj +<< /S /GoTo /D (subsection.8.54.3) >> +endobj +3788 0 obj +(\376\377\0008\000.\0005\0004\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3789 0 obj +<< /S /GoTo /D (subsubsection.8.54.3.1) >> +endobj +3792 0 obj +(\376\377\0008\000.\0005\0004\000.\0003\000.\0001\000\040\000a\000u\000t\000o\000C\000l\000e\000a\000n\000U\000p\000F\000i\000e\000l\000d) +endobj +3793 0 obj +<< /S /GoTo /D (subsubsection.8.54.3.2) >> +endobj +3796 0 obj +(\376\377\0008\000.\0005\0004\000.\0003\000.\0002\000\040\000e\000x\000p\000e\000c\000t\000e\000d\000U\000s\000e\000r\000s\000F\000i\000e\000l\000d) +endobj +3797 0 obj +<< /S /GoTo /D (subsubsection.8.54.3.3) >> +endobj +3800 0 obj +(\376\377\0008\000.\0005\0004\000.\0003\000.\0003\000\040\000m\000a\000x\000P\000l\000a\000y\000e\000r\000s\000F\000i\000e\000l\000d) +endobj +3801 0 obj +<< /S /GoTo /D (subsubsection.8.54.3.4) >> +endobj +3804 0 obj +(\376\377\0008\000.\0005\0004\000.\0003\000.\0004\000\040\000n\000a\000m\000e\000F\000i\000e\000l\000d) +endobj +3805 0 obj +<< /S /GoTo /D (subsubsection.8.54.3.5) >> +endobj +3808 0 obj +(\376\377\0008\000.\0005\0004\000.\0003\000.\0005\000\040\000o\000p\000e\000n\000F\000i\000e\000l\000d) +endobj +3809 0 obj +<< /S /GoTo /D (subsubsection.8.54.3.6) >> +endobj +3812 0 obj +(\376\377\0008\000.\0005\0004\000.\0003\000.\0006\000\040\000v\000i\000s\000i\000b\000l\000e\000F\000i\000e\000l\000d) +endobj +3813 0 obj +<< /S /GoTo /D (subsection.8.54.4) >> +endobj +3816 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3817 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.1) >> +endobj +3820 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0001\000\040\000C\000u\000s\000t\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +3821 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.2) >> +endobj +3824 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0002\000\040\000c\000u\000s\000t\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +3825 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.3) >> +endobj +3828 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0003\000\040\000I\000s\000L\000o\000c\000a\000l\000C\000l\000i\000e\000n\000t\000I\000n\000s\000i\000d\000e) +endobj +3829 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.4) >> +endobj +3832 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0004\000\040\000i\000s\000L\000o\000c\000a\000l\000C\000l\000i\000e\000n\000t\000I\000n\000s\000i\000d\000e) +endobj +3833 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.5) >> +endobj +3836 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0005\000\040\000I\000s\000O\000p\000e\000n) +endobj +3837 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.6) >> +endobj +3840 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0006\000\040\000I\000s\000V\000i\000s\000i\000b\000l\000e) +endobj +3841 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.7) >> +endobj +3844 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0007\000\040\000M\000a\000x\000P\000l\000a\000y\000e\000r\000s) +endobj +3845 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.8) >> +endobj +3848 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0008\000\040\000m\000a\000x\000P\000l\000a\000y\000e\000r\000s) +endobj +3849 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.9) >> +endobj +3852 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0009\000\040\000N\000a\000m\000e) +endobj +3853 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.10) >> +endobj +3856 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0001\0000\000\040\000n\000a\000m\000e) +endobj +3857 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.11) >> +endobj +3860 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0001\0001\000\040\000o\000p\000e\000n) +endobj +3861 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.12) >> +endobj +3864 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0001\0002\000\040\000P\000l\000a\000y\000e\000r\000C\000o\000u\000n\000t) +endobj +3865 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.13) >> +endobj +3868 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0001\0003\000\040\000p\000l\000a\000y\000e\000r\000C\000o\000u\000n\000t) +endobj +3869 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.14) >> +endobj +3872 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0001\0004\000\040\000r\000e\000m\000o\000v\000e\000d\000F\000r\000o\000m\000L\000i\000s\000t) +endobj +3873 0 obj +<< /S /GoTo /D (subsubsection.8.54.4.15) >> +endobj +3876 0 obj +(\376\377\0008\000.\0005\0004\000.\0004\000.\0001\0005\000\040\000v\000i\000s\000i\000b\000l\000e) +endobj +3877 0 obj +<< /S /GoTo /D (section.8.55) >> +endobj +3880 0 obj +(\376\377\0008\000.\0005\0005\000\040\000R\000o\000o\000m\000O\000p\000t\000i\000o\000n\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3881 0 obj +<< /S /GoTo /D (subsection.8.55.1) >> +endobj +3884 0 obj +(\376\377\0008\000.\0005\0005\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +3885 0 obj +<< /S /GoTo /D (subsection.8.55.2) >> +endobj +3888 0 obj +(\376\377\0008\000.\0005\0005\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3889 0 obj +<< /S /GoTo /D (subsubsection.8.55.2.1) >> +endobj +3892 0 obj +(\376\377\0008\000.\0005\0005\000.\0002\000.\0001\000\040\000C\000u\000s\000t\000o\000m\000R\000o\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +3893 0 obj +<< /S /GoTo /D (subsubsection.8.55.2.2) >> +endobj +3896 0 obj +(\376\377\0008\000.\0005\0005\000.\0002\000.\0002\000\040\000C\000u\000s\000t\000o\000m\000R\000o\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s\000F\000o\000r\000L\000o\000b\000b\000y) +endobj +3897 0 obj +<< /S /GoTo /D (subsubsection.8.55.2.3) >> +endobj +3900 0 obj +(\376\377\0008\000.\0005\0005\000.\0002\000.\0003\000\040\000E\000m\000p\000t\000y\000R\000o\000o\000m\000T\000t\000l) +endobj +3901 0 obj +<< /S /GoTo /D (subsubsection.8.55.2.4) >> +endobj +3904 0 obj +(\376\377\0008\000.\0005\0005\000.\0002\000.\0004\000\040\000M\000a\000x\000P\000l\000a\000y\000e\000r\000s) +endobj +3905 0 obj +<< /S /GoTo /D (subsubsection.8.55.2.5) >> +endobj +3908 0 obj +(\376\377\0008\000.\0005\0005\000.\0002\000.\0005\000\040\000P\000l\000a\000y\000e\000r\000T\000t\000l) +endobj +3909 0 obj +<< /S /GoTo /D (subsubsection.8.55.2.6) >> +endobj +3912 0 obj +(\376\377\0008\000.\0005\0005\000.\0002\000.\0006\000\040\000P\000l\000u\000g\000i\000n\000s) +endobj +3913 0 obj +<< /S /GoTo /D (subsection.8.55.3) >> +endobj +3916 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3917 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.1) >> +endobj +3920 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0001\000\040\000C\000l\000e\000a\000n\000u\000p\000C\000a\000c\000h\000e\000O\000n\000L\000e\000a\000v\000e) +endobj +3921 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.2) >> +endobj +3924 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0002\000\040\000c\000l\000e\000a\000n\000u\000p\000C\000a\000c\000h\000e\000O\000n\000L\000e\000a\000v\000e) +endobj +3925 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.3) >> +endobj +3928 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0003\000\040\000c\000u\000s\000t\000o\000m\000R\000o\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s) +endobj +3929 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.4) >> +endobj +3932 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0004\000\040\000c\000u\000s\000t\000o\000m\000R\000o\000o\000m\000P\000r\000o\000p\000e\000r\000t\000i\000e\000s\000F\000o\000r\000L\000o\000b\000b\000y) +endobj +3933 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.5) >> +endobj +3936 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0005\000\040\000I\000s\000O\000p\000e\000n) +endobj +3937 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.6) >> +endobj +3940 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0006\000\040\000i\000s\000O\000p\000e\000n) +endobj +3941 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.7) >> +endobj +3944 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0007\000\040\000I\000s\000V\000i\000s\000i\000b\000l\000e) +endobj +3945 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.8) >> +endobj +3948 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0008\000\040\000i\000s\000V\000i\000s\000i\000b\000l\000e) +endobj +3949 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.9) >> +endobj +3952 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0009\000\040\000m\000a\000x\000P\000l\000a\000y\000e\000r\000s) +endobj +3953 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.10) >> +endobj +3956 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0001\0000\000\040\000p\000l\000u\000g\000i\000n\000s) +endobj +3957 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.11) >> +endobj +3960 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0001\0001\000\040\000P\000u\000b\000l\000i\000s\000h\000U\000s\000e\000r\000I\000d) +endobj +3961 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.12) >> +endobj +3964 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0001\0002\000\040\000p\000u\000b\000l\000i\000s\000h\000U\000s\000e\000r\000I\000d) +endobj +3965 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.13) >> +endobj +3968 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0001\0003\000\040\000S\000u\000p\000p\000r\000e\000s\000s\000R\000o\000o\000m\000E\000v\000e\000n\000t\000s) +endobj +3969 0 obj +<< /S /GoTo /D (subsubsection.8.55.3.14) >> +endobj +3972 0 obj +(\376\377\0008\000.\0005\0005\000.\0003\000.\0001\0004\000\040\000s\000u\000p\000p\000r\000e\000s\000s\000R\000o\000o\000m\000E\000v\000e\000n\000t\000s) +endobj +3973 0 obj +<< /S /GoTo /D (section.8.56) >> +endobj +3976 0 obj +(\376\377\0008\000.\0005\0006\000\040\000U\000n\000i\000t\000y\000E\000n\000g\000i\000n\000e\000.\000S\000c\000e\000n\000e\000M\000a\000n\000a\000g\000e\000m\000e\000n\000t\000.\000S\000c\000e\000n\000e\000M\000a\000n\000a\000g\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3977 0 obj +<< /S /GoTo /D (subsection.8.56.1) >> +endobj +3980 0 obj +(\376\377\0008\000.\0005\0006\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +3981 0 obj +<< /S /GoTo /D (subsection.8.56.2) >> +endobj +3984 0 obj +(\376\377\0008\000.\0005\0006\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +3985 0 obj +<< /S /GoTo /D (subsubsection.8.56.2.1) >> +endobj +3988 0 obj +(\376\377\0008\000.\0005\0006\000.\0002\000.\0001\000\040\000L\000o\000a\000d\000S\000c\000e\000n\000e) +endobj +3989 0 obj +<< /S /GoTo /D (subsubsection.8.56.2.2) >> +endobj +3992 0 obj +(\376\377\0008\000.\0005\0006\000.\0002\000.\0002\000\040\000L\000o\000a\000d\000S\000c\000e\000n\000e) +endobj +3993 0 obj +<< /S /GoTo /D (section.8.57) >> +endobj +3996 0 obj +(\376\377\0008\000.\0005\0007\000\040\000S\000c\000e\000n\000e\000M\000a\000n\000a\000g\000e\000r\000H\000e\000l\000p\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +3997 0 obj +<< /S /GoTo /D (subsection.8.57.1) >> +endobj +4000 0 obj +(\376\377\0008\000.\0005\0007\000.\0001\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4001 0 obj +<< /S /GoTo /D (subsubsection.8.57.1.1) >> +endobj +4004 0 obj +(\376\377\0008\000.\0005\0007\000.\0001\000.\0001\000\040\000A\000c\000t\000i\000v\000e\000S\000c\000e\000n\000e\000B\000u\000i\000l\000d\000I\000n\000d\000e\000x) +endobj +4005 0 obj +<< /S /GoTo /D (subsubsection.8.57.1.2) >> +endobj +4008 0 obj +(\376\377\0008\000.\0005\0007\000.\0001\000.\0002\000\040\000A\000c\000t\000i\000v\000e\000S\000c\000e\000n\000e\000N\000a\000m\000e) +endobj +4009 0 obj +<< /S /GoTo /D (section.8.58) >> +endobj +4012 0 obj +(\376\377\0008\000.\0005\0008\000\040\000S\000e\000r\000v\000e\000r\000S\000e\000t\000t\000i\000n\000g\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4013 0 obj +<< /S /GoTo /D (subsection.8.58.1) >> +endobj +4016 0 obj +(\376\377\0008\000.\0005\0008\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4017 0 obj +<< /S /GoTo /D (subsection.8.58.2) >> +endobj +4020 0 obj +(\376\377\0008\000.\0005\0008\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4021 0 obj +<< /S /GoTo /D (subsubsection.8.58.2.1) >> +endobj +4024 0 obj +(\376\377\0008\000.\0005\0008\000.\0002\000.\0001\000\040\000H\000o\000s\000t\000i\000n\000g\000O\000p\000t\000i\000o\000n) +endobj +4025 0 obj +<< /S /GoTo /D (subsection.8.58.3) >> +endobj +4028 0 obj +(\376\377\0008\000.\0005\0008\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4029 0 obj +<< /S /GoTo /D (subsubsection.8.58.3.1) >> +endobj +4032 0 obj +(\376\377\0008\000.\0005\0008\000.\0003\000.\0001\000\040\000I\000s\000A\000p\000p\000I\000d) +endobj +4033 0 obj +<< /S /GoTo /D (subsubsection.8.58.3.2) >> +endobj +4036 0 obj +(\376\377\0008\000.\0005\0008\000.\0003\000.\0002\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +4037 0 obj +<< /S /GoTo /D (subsubsection.8.58.3.3) >> +endobj +4040 0 obj +(\376\377\0008\000.\0005\0008\000.\0003\000.\0003\000\040\000U\000s\000e\000C\000l\000o\000u\000d) +endobj +4041 0 obj +<< /S /GoTo /D (subsubsection.8.58.3.4) >> +endobj +4044 0 obj +(\376\377\0008\000.\0005\0008\000.\0003\000.\0004\000\040\000U\000s\000e\000C\000l\000o\000u\000d) +endobj +4045 0 obj +<< /S /GoTo /D (subsubsection.8.58.3.5) >> +endobj +4048 0 obj +(\376\377\0008\000.\0005\0008\000.\0003\000.\0005\000\040\000U\000s\000e\000C\000l\000o\000u\000d\000B\000e\000s\000t\000R\000e\000g\000i\000o\000n) +endobj +4049 0 obj +<< /S /GoTo /D (subsubsection.8.58.3.6) >> +endobj +4052 0 obj +(\376\377\0008\000.\0005\0008\000.\0003\000.\0006\000\040\000U\000s\000e\000M\000y\000S\000e\000r\000v\000e\000r) +endobj +4053 0 obj +<< /S /GoTo /D (subsection.8.58.4) >> +endobj +4056 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4057 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.1) >> +endobj +4060 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0001\000\040\000A\000p\000p\000I\000D) +endobj +4061 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.2) >> +endobj +4064 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0002\000\040\000C\000h\000a\000t\000A\000p\000p\000I\000D) +endobj +4065 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.3) >> +endobj +4068 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0003\000\040\000D\000i\000s\000a\000b\000l\000e\000A\000u\000t\000o\000O\000p\000e\000n\000W\000i\000z\000a\000r\000d) +endobj +4069 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.4) >> +endobj +4072 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0004\000\040\000E\000n\000a\000b\000l\000e\000d\000R\000e\000g\000i\000o\000n\000s) +endobj +4073 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.5) >> +endobj +4076 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0005\000\040\000E\000n\000a\000b\000l\000e\000L\000o\000b\000b\000y\000S\000t\000a\000t\000i\000s\000t\000i\000c\000s) +endobj +4077 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.6) >> +endobj +4080 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0006\000\040\000H\000o\000s\000t\000T\000y\000p\000e) +endobj +4081 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.7) >> +endobj +4084 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0007\000\040\000J\000o\000i\000n\000L\000o\000b\000b\000y) +endobj +4085 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.8) >> +endobj +4088 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0008\000\040\000N\000e\000t\000w\000o\000r\000k\000L\000o\000g\000g\000i\000n\000g) +endobj +4089 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.9) >> +endobj +4092 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0009\000\040\000P\000r\000e\000f\000e\000r\000r\000e\000d\000R\000e\000g\000i\000o\000n) +endobj +4093 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.10) >> +endobj +4096 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0001\0000\000\040\000P\000r\000o\000t\000o\000c\000o\000l) +endobj +4097 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.11) >> +endobj +4100 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0001\0001\000\040\000P\000u\000n\000L\000o\000g\000g\000i\000n\000g) +endobj +4101 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.12) >> +endobj +4104 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0001\0002\000\040\000R\000p\000c\000L\000i\000s\000t) +endobj +4105 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.13) >> +endobj +4108 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0001\0003\000\040\000R\000u\000n\000I\000n\000B\000a\000c\000k\000g\000r\000o\000u\000n\000d) +endobj +4109 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.14) >> +endobj +4112 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0001\0004\000\040\000S\000e\000r\000v\000e\000r\000A\000d\000d\000r\000e\000s\000s) +endobj +4113 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.15) >> +endobj +4116 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0001\0005\000\040\000S\000e\000r\000v\000e\000r\000P\000o\000r\000t) +endobj +4117 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.16) >> +endobj +4120 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0001\0006\000\040\000V\000o\000i\000c\000e\000A\000p\000p\000I\000D) +endobj +4121 0 obj +<< /S /GoTo /D (subsubsection.8.58.4.17) >> +endobj +4124 0 obj +(\376\377\0008\000.\0005\0008\000.\0004\000.\0001\0007\000\040\000V\000o\000i\000c\000e\000S\000e\000r\000v\000e\000r\000P\000o\000r\000t) +endobj +4125 0 obj +<< /S /GoTo /D (section.8.59) >> +endobj +4128 0 obj +(\376\377\0008\000.\0005\0009\000\040\000P\000h\000o\000t\000o\000n\000A\000n\000i\000m\000a\000t\000o\000r\000V\000i\000e\000w\000.\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000d\000L\000a\000y\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4129 0 obj +<< /S /GoTo /D (subsection.8.59.1) >> +endobj +4132 0 obj +(\376\377\0008\000.\0005\0009\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4133 0 obj +<< /S /GoTo /D (subsubsection.8.59.1.1) >> +endobj +4136 0 obj +(\376\377\0008\000.\0005\0009\000.\0001\000.\0001\000\040\000L\000a\000y\000e\000r\000I\000n\000d\000e\000x) +endobj +4137 0 obj +<< /S /GoTo /D (subsubsection.8.59.1.2) >> +endobj +4140 0 obj +(\376\377\0008\000.\0005\0009\000.\0001\000.\0002\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000T\000y\000p\000e) +endobj +4141 0 obj +<< /S /GoTo /D (section.8.60) >> +endobj +4144 0 obj +(\376\377\0008\000.\0006\0000\000\040\000P\000h\000o\000t\000o\000n\000A\000n\000i\000m\000a\000t\000o\000r\000V\000i\000e\000w\000.\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000d\000P\000a\000r\000a\000m\000e\000t\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4145 0 obj +<< /S /GoTo /D (subsection.8.60.1) >> +endobj +4148 0 obj +(\376\377\0008\000.\0006\0000\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4149 0 obj +<< /S /GoTo /D (subsubsection.8.60.1.1) >> +endobj +4152 0 obj +(\376\377\0008\000.\0006\0000\000.\0001\000.\0001\000\040\000N\000a\000m\000e) +endobj +4153 0 obj +<< /S /GoTo /D (subsubsection.8.60.1.2) >> +endobj +4156 0 obj +(\376\377\0008\000.\0006\0000\000.\0001\000.\0002\000\040\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000e\000T\000y\000p\000e) +endobj +4157 0 obj +<< /S /GoTo /D (subsubsection.8.60.1.3) >> +endobj +4160 0 obj +(\376\377\0008\000.\0006\0000\000.\0001\000.\0003\000\040\000T\000y\000p\000e) +endobj +4161 0 obj +<< /S /GoTo /D (section.8.61) >> +endobj +4164 0 obj +(\376\377\0008\000.\0006\0001\000\040\000T\000y\000p\000e\000d\000L\000o\000b\000b\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4165 0 obj +<< /S /GoTo /D (subsection.8.61.1) >> +endobj +4168 0 obj +(\376\377\0008\000.\0006\0001\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4169 0 obj +<< /S /GoTo /D (subsection.8.61.2) >> +endobj +4172 0 obj +(\376\377\0008\000.\0006\0001\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4173 0 obj +<< /S /GoTo /D (subsubsection.8.61.2.1) >> +endobj +4176 0 obj +(\376\377\0008\000.\0006\0001\000.\0002\000.\0001\000\040\000T\000y\000p\000e\000d\000L\000o\000b\000b\000y) +endobj +4177 0 obj +<< /S /GoTo /D (subsubsection.8.61.2.2) >> +endobj +4180 0 obj +(\376\377\0008\000.\0006\0001\000.\0002\000.\0002\000\040\000T\000y\000p\000e\000d\000L\000o\000b\000b\000y) +endobj +4181 0 obj +<< /S /GoTo /D (subsection.8.61.3) >> +endobj +4184 0 obj +(\376\377\0008\000.\0006\0001\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4185 0 obj +<< /S /GoTo /D (subsubsection.8.61.3.1) >> +endobj +4188 0 obj +(\376\377\0008\000.\0006\0001\000.\0003\000.\0001\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +4189 0 obj +<< /S /GoTo /D (subsection.8.61.4) >> +endobj +4192 0 obj +(\376\377\0008\000.\0006\0001\000.\0004\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4193 0 obj +<< /S /GoTo /D (subsubsection.8.61.4.1) >> +endobj +4196 0 obj +(\376\377\0008\000.\0006\0001\000.\0004\000.\0001\000\040\000D\000e\000f\000a\000u\000l\000t) +endobj +4197 0 obj +<< /S /GoTo /D (subsubsection.8.61.4.2) >> +endobj +4200 0 obj +(\376\377\0008\000.\0006\0001\000.\0004\000.\0002\000\040\000N\000a\000m\000e) +endobj +4201 0 obj +<< /S /GoTo /D (subsubsection.8.61.4.3) >> +endobj +4204 0 obj +(\376\377\0008\000.\0006\0001\000.\0004\000.\0003\000\040\000T\000y\000p\000e) +endobj +4205 0 obj +<< /S /GoTo /D (subsection.8.61.5) >> +endobj +4208 0 obj +(\376\377\0008\000.\0006\0001\000.\0005\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4209 0 obj +<< /S /GoTo /D (subsubsection.8.61.5.1) >> +endobj +4212 0 obj +(\376\377\0008\000.\0006\0001\000.\0005\000.\0001\000\040\000I\000s\000D\000e\000f\000a\000u\000l\000t) +endobj +4213 0 obj +<< /S /GoTo /D (section.8.62) >> +endobj +4216 0 obj +(\376\377\0008\000.\0006\0002\000\040\000T\000y\000p\000e\000d\000L\000o\000b\000b\000y\000I\000n\000f\000o\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4217 0 obj +<< /S /GoTo /D (subsection.8.62.1) >> +endobj +4220 0 obj +(\376\377\0008\000.\0006\0002\000.\0001\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4221 0 obj +<< /S /GoTo /D (subsubsection.8.62.1.1) >> +endobj +4224 0 obj +(\376\377\0008\000.\0006\0002\000.\0001\000.\0001\000\040\000T\000o\000S\000t\000r\000i\000n\000g) +endobj +4225 0 obj +<< /S /GoTo /D (subsection.8.62.2) >> +endobj +4228 0 obj +(\376\377\0008\000.\0006\0002\000.\0002\000\040\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4229 0 obj +<< /S /GoTo /D (subsubsection.8.62.2.1) >> +endobj +4232 0 obj +(\376\377\0008\000.\0006\0002\000.\0002\000.\0001\000\040\000P\000l\000a\000y\000e\000r\000C\000o\000u\000n\000t) +endobj +4233 0 obj +<< /S /GoTo /D (subsubsection.8.62.2.2) >> +endobj +4236 0 obj +(\376\377\0008\000.\0006\0002\000.\0002\000.\0002\000\040\000R\000o\000o\000m\000C\000o\000u\000n\000t) +endobj +4237 0 obj +<< /S /GoTo /D (section.8.63) >> +endobj +4240 0 obj +(\376\377\0008\000.\0006\0003\000\040\000W\000e\000b\000R\000p\000c\000R\000e\000s\000p\000o\000n\000s\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4241 0 obj +<< /S /GoTo /D (subsection.8.63.1) >> +endobj +4244 0 obj +(\376\377\0008\000.\0006\0003\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4245 0 obj +<< /S /GoTo /D (subsection.8.63.2) >> +endobj +4248 0 obj +(\376\377\0008\000.\0006\0003\000.\0002\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000\046\000\040\000D\000e\000s\000t\000r\000u\000c\000t\000o\000r\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4249 0 obj +<< /S /GoTo /D (subsubsection.8.63.2.1) >> +endobj +4252 0 obj +(\376\377\0008\000.\0006\0003\000.\0002\000.\0001\000\040\000W\000e\000b\000R\000p\000c\000R\000e\000s\000p\000o\000n\000s\000e) +endobj +4253 0 obj +<< /S /GoTo /D (subsection.8.63.3) >> +endobj +4256 0 obj +(\376\377\0008\000.\0006\0003\000.\0003\000\040\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4257 0 obj +<< /S /GoTo /D (subsubsection.8.63.3.1) >> +endobj +4260 0 obj +(\376\377\0008\000.\0006\0003\000.\0003\000.\0001\000\040\000T\000o\000S\000t\000r\000i\000n\000g\000F\000u\000l\000l) +endobj +4261 0 obj +<< /S /GoTo /D (subsection.8.63.4) >> +endobj +4264 0 obj +(\376\377\0008\000.\0006\0003\000.\0004\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4265 0 obj +<< /S /GoTo /D (subsubsection.8.63.4.1) >> +endobj +4268 0 obj +(\376\377\0008\000.\0006\0003\000.\0004\000.\0001\000\040\000D\000e\000b\000u\000g\000M\000e\000s\000s\000a\000g\000e) +endobj +4269 0 obj +<< /S /GoTo /D (subsubsection.8.63.4.2) >> +endobj +4272 0 obj +(\376\377\0008\000.\0006\0003\000.\0004\000.\0002\000\040\000N\000a\000m\000e) +endobj +4273 0 obj +<< /S /GoTo /D (subsubsection.8.63.4.3) >> +endobj +4276 0 obj +(\376\377\0008\000.\0006\0003\000.\0004\000.\0003\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s) +endobj +4277 0 obj +<< /S /GoTo /D (subsubsection.8.63.4.4) >> +endobj +4280 0 obj +(\376\377\0008\000.\0006\0003\000.\0004\000.\0004\000\040\000R\000e\000t\000u\000r\000n\000C\000o\000d\000e) +endobj +4281 0 obj +<< /S /GoTo /D (chapter.9) >> +endobj +4284 0 obj +(\376\377\0009\000\040\000F\000i\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4285 0 obj +<< /S /GoTo /D (section.9.1) >> +endobj +4288 0 obj +(\376\377\0009\000.\0001\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000\137\000D\000o\000c\000/\000g\000e\000n\000e\000r\000a\000l\000.\000m\000d\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4289 0 obj +<< /S /GoTo /D (section.9.2) >> +endobj +4292 0 obj +(\376\377\0009\000.\0002\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000\137\000D\000o\000c\000/\000m\000a\000i\000n\000.\000m\000d\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4293 0 obj +<< /S /GoTo /D (section.9.3) >> +endobj +4296 0 obj +(\376\377\0009\000.\0003\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000\137\000D\000o\000c\000/\000o\000p\000t\000i\000o\000n\000a\000l\000G\000u\000i\000.\000m\000d\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4297 0 obj +<< /S /GoTo /D (section.9.4) >> +endobj +4300 0 obj +(\376\377\0009\000.\0004\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000\137\000D\000o\000c\000/\000p\000h\000o\000t\000o\000n\000S\000t\000a\000t\000s\000G\000u\000i\000.\000m\000d\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4301 0 obj +<< /S /GoTo /D (section.9.5) >> +endobj +4304 0 obj +(\376\377\0009\000.\0005\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000\137\000D\000o\000c\000/\000p\000u\000b\000l\000i\000c\000A\000p\000i\000.\000m\000d\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4305 0 obj +<< /S /GoTo /D (section.9.6) >> +endobj +4308 0 obj +(\376\377\0009\000.\0006\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000C\000u\000s\000t\000o\000m\000T\000y\000p\000e\000s\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4309 0 obj +<< /S /GoTo /D (subsection.9.6.1) >> +endobj +4312 0 obj +(\376\377\0009\000.\0006\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4313 0 obj +<< /S /GoTo /D (section.9.7) >> +endobj +4316 0 obj +(\376\377\0009\000.\0007\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000E\000n\000u\000m\000s\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4317 0 obj +<< /S /GoTo /D (subsection.9.7.1) >> +endobj +4320 0 obj +(\376\377\0009\000.\0007\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4321 0 obj +<< /S /GoTo /D (subsection.9.7.2) >> +endobj +4324 0 obj +(\376\377\0009\000.\0007\000.\0002\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000T\000y\000p\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4325 0 obj +<< /S /GoTo /D (subsubsection.9.7.2.1) >> +endobj +4328 0 obj +(\376\377\0009\000.\0007\000.\0002\000.\0001\000\040\000C\000l\000o\000u\000d\000R\000e\000g\000i\000o\000n\000C\000o\000d\000e) +endobj +4329 0 obj +<< /S /GoTo /D (subsubsection.9.7.2.2) >> +endobj +4332 0 obj +(\376\377\0009\000.\0007\000.\0002\000.\0002\000\040\000C\000l\000o\000u\000d\000R\000e\000g\000i\000o\000n\000F\000l\000a\000g) +endobj +4333 0 obj +<< /S /GoTo /D (subsubsection.9.7.2.3) >> +endobj +4336 0 obj +(\376\377\0009\000.\0007\000.\0002\000.\0003\000\040\000C\000o\000n\000n\000e\000c\000t\000i\000o\000n\000S\000t\000a\000t\000e) +endobj +4337 0 obj +<< /S /GoTo /D (subsubsection.9.7.2.4) >> +endobj +4340 0 obj +(\376\377\0009\000.\0007\000.\0002\000.\0004\000\040\000E\000n\000c\000r\000y\000p\000t\000i\000o\000n\000M\000o\000d\000e) +endobj +4341 0 obj +<< /S /GoTo /D (section.9.8) >> +endobj +4344 0 obj +(\376\377\0009\000.\0008\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4345 0 obj +<< /S /GoTo /D (subsection.9.8.1) >> +endobj +4348 0 obj +(\376\377\0009\000.\0008\000.\0001\000\040\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4349 0 obj +<< /S /GoTo /D (subsubsection.9.8.1.1) >> +endobj +4352 0 obj +(\376\377\0009\000.\0008\000.\0001\000.\0001\000\040\000H\000a\000s\000h\000t\000a\000b\000l\000e) +endobj +4353 0 obj +<< /S /GoTo /D (subsubsection.9.8.1.2) >> +endobj +4356 0 obj +(\376\377\0009\000.\0008\000.\0001\000.\0002\000\040\000S\000u\000p\000p\000o\000r\000t\000C\000l\000a\000s\000s\000P\000u\000n) +endobj +4357 0 obj +<< /S /GoTo /D (section.9.9) >> +endobj +4360 0 obj +(\376\377\0009\000.\0009\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000F\000r\000i\000e\000n\000d\000I\000n\000f\000o\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4361 0 obj +<< /S /GoTo /D (section.9.10) >> +endobj +4364 0 obj +(\376\377\0009\000.\0001\0000\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000G\000i\000z\000m\000o\000T\000y\000p\000e\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4365 0 obj +<< /S /GoTo /D (section.9.11) >> +endobj +4368 0 obj +(\376\377\0009\000.\0001\0001\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000L\000o\000a\000d\000b\000a\000l\000a\000n\000c\000i\000n\000g\000P\000e\000e\000r\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4369 0 obj +<< /S /GoTo /D (subsection.9.11.1) >> +endobj +4372 0 obj +(\376\377\0009\000.\0001\0001\000.\0001\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000T\000y\000p\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4373 0 obj +<< /S /GoTo /D (subsubsection.9.11.1.1) >> +endobj +4376 0 obj +(\376\377\0009\000.\0001\0001\000.\0001\000.\0001\000\040\000A\000u\000t\000h\000M\000o\000d\000e\000O\000p\000t\000i\000o\000n) +endobj +4377 0 obj +<< /S /GoTo /D (subsubsection.9.11.1.2) >> +endobj +4380 0 obj +(\376\377\0009\000.\0001\0001\000.\0001\000.\0002\000\040\000C\000u\000s\000t\000o\000m\000A\000u\000t\000h\000e\000n\000t\000i\000c\000a\000t\000i\000o\000n\000T\000y\000p\000e) +endobj +4381 0 obj +<< /S /GoTo /D (subsubsection.9.11.1.3) >> +endobj +4384 0 obj +(\376\377\0009\000.\0001\0001\000.\0001\000.\0003\000\040\000E\000v\000e\000n\000t\000C\000a\000c\000h\000i\000n\000g) +endobj +4385 0 obj +<< /S /GoTo /D (subsubsection.9.11.1.4) >> +endobj +4388 0 obj +(\376\377\0009\000.\0001\0001\000.\0001\000.\0004\000\040\000J\000o\000i\000n\000M\000o\000d\000e) +endobj +4389 0 obj +<< /S /GoTo /D (subsubsection.9.11.1.5) >> +endobj +4392 0 obj +(\376\377\0009\000.\0001\0001\000.\0001\000.\0005\000\040\000L\000o\000b\000b\000y\000T\000y\000p\000e) +endobj +4393 0 obj +<< /S /GoTo /D (subsubsection.9.11.1.6) >> +endobj +4396 0 obj +(\376\377\0009\000.\0001\0001\000.\0001\000.\0006\000\040\000M\000a\000t\000c\000h\000m\000a\000k\000i\000n\000g\000M\000o\000d\000e) +endobj +4397 0 obj +<< /S /GoTo /D (subsubsection.9.11.1.7) >> +endobj +4400 0 obj +(\376\377\0009\000.\0001\0001\000.\0001\000.\0007\000\040\000P\000r\000o\000p\000e\000r\000t\000y\000T\000y\000p\000e\000F\000l\000a\000g) +endobj +4401 0 obj +<< /S /GoTo /D (subsubsection.9.11.1.8) >> +endobj +4404 0 obj +(\376\377\0009\000.\0001\0001\000.\0001\000.\0008\000\040\000R\000e\000c\000e\000i\000v\000e\000r\000G\000r\000o\000u\000p) +endobj +4405 0 obj +<< /S /GoTo /D (section.9.12) >> +endobj +4408 0 obj +(\376\377\0009\000.\0001\0002\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000P\000e\000e\000r\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4409 0 obj +<< /S /GoTo /D (subsection.9.12.1) >> +endobj +4412 0 obj +(\376\377\0009\000.\0001\0002\000.\0001\000\040\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4413 0 obj +<< /S /GoTo /D (subsubsection.9.12.1.1) >> +endobj +4416 0 obj +(\376\377\0009\000.\0001\0002\000.\0001\000.\0001\000\040\000H\000a\000s\000h\000t\000a\000b\000l\000e) +endobj +4417 0 obj +<< /S /GoTo /D (subsubsection.9.12.1.2) >> +endobj +4420 0 obj +(\376\377\0009\000.\0001\0002\000.\0001\000.\0002\000\040\000S\000u\000p\000p\000o\000r\000t\000C\000l\000a\000s\000s\000P\000u\000n) +endobj +4421 0 obj +<< /S /GoTo /D (subsection.9.12.2) >> +endobj +4424 0 obj +(\376\377\0009\000.\0001\0002\000.\0002\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000T\000y\000p\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4425 0 obj +<< /S /GoTo /D (subsubsection.9.12.2.1) >> +endobj +4428 0 obj +(\376\377\0009\000.\0001\0002\000.\0002\000.\0001\000\040\000S\000e\000r\000v\000e\000r\000C\000o\000n\000n\000e\000c\000t\000i\000o\000n) +endobj +4429 0 obj +<< /S /GoTo /D (section.9.13) >> +endobj +4432 0 obj +(\376\377\0009\000.\0001\0003\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000P\000h\000o\000t\000o\000n\000C\000l\000a\000s\000s\000e\000s\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4433 0 obj +<< /S /GoTo /D (subsection.9.13.1) >> +endobj +4436 0 obj +(\376\377\0009\000.\0001\0003\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4437 0 obj +<< /S /GoTo /D (subsection.9.13.2) >> +endobj +4440 0 obj +(\376\377\0009\000.\0001\0003\000.\0002\000\040\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4441 0 obj +<< /S /GoTo /D (subsubsection.9.13.2.1) >> +endobj +4444 0 obj +(\376\377\0009\000.\0001\0003\000.\0002\000.\0001\000\040\000H\000a\000s\000h\000t\000a\000b\000l\000e) +endobj +4445 0 obj +<< /S /GoTo /D (subsubsection.9.13.2.2) >> +endobj +4448 0 obj +(\376\377\0009\000.\0001\0003\000.\0002\000.\0002\000\040\000S\000u\000p\000p\000o\000r\000t\000C\000l\000a\000s\000s\000P\000u\000n) +endobj +4449 0 obj +<< /S /GoTo /D (section.9.14) >> +endobj +4452 0 obj +(\376\377\0009\000.\0001\0004\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000P\000h\000o\000t\000o\000n\000H\000a\000n\000d\000l\000e\000r\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4453 0 obj +<< /S /GoTo /D (subsection.9.14.1) >> +endobj +4456 0 obj +(\376\377\0009\000.\0001\0004\000.\0001\000\040\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4457 0 obj +<< /S /GoTo /D (subsubsection.9.14.1.1) >> +endobj +4460 0 obj +(\376\377\0009\000.\0001\0004\000.\0001\000.\0001\000\040\000D\000e\000b\000u\000g) +endobj +4461 0 obj +<< /S /GoTo /D (subsubsection.9.14.1.2) >> +endobj +4464 0 obj +(\376\377\0009\000.\0001\0004\000.\0001\000.\0002\000\040\000H\000a\000s\000h\000t\000a\000b\000l\000e) +endobj +4465 0 obj +<< /S /GoTo /D (subsubsection.9.14.1.3) >> +endobj +4468 0 obj +(\376\377\0009\000.\0001\0004\000.\0001\000.\0003\000\040\000S\000u\000p\000p\000o\000r\000t\000C\000l\000a\000s\000s\000P\000u\000n) +endobj +4469 0 obj +<< /S /GoTo /D (section.9.15) >> +endobj +4472 0 obj +(\376\377\0009\000.\0001\0005\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000P\000h\000o\000t\000o\000n\000L\000a\000g\000S\000i\000m\000u\000l\000a\000t\000i\000o\000n\000G\000u\000i\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4473 0 obj +<< /S /GoTo /D (subsection.9.15.1) >> +endobj +4476 0 obj +(\376\377\0009\000.\0001\0005\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4477 0 obj +<< /S /GoTo /D (section.9.16) >> +endobj +4480 0 obj +(\376\377\0009\000.\0001\0006\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4481 0 obj +<< /S /GoTo /D (subsection.9.16.1) >> +endobj +4484 0 obj +(\376\377\0009\000.\0001\0006\000.\0001\000\040\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4485 0 obj +<< /S /GoTo /D (subsubsection.9.16.1.1) >> +endobj +4488 0 obj +(\376\377\0009\000.\0001\0006\000.\0001\000.\0001\000\040\000D\000e\000b\000u\000g) +endobj +4489 0 obj +<< /S /GoTo /D (subsubsection.9.16.1.2) >> +endobj +4492 0 obj +(\376\377\0009\000.\0001\0006\000.\0001\000.\0002\000\040\000H\000a\000s\000h\000t\000a\000b\000l\000e) +endobj +4493 0 obj +<< /S /GoTo /D (section.9.17) >> +endobj +4496 0 obj +(\376\377\0009\000.\0001\0007\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000P\000h\000o\000t\000o\000n\000P\000l\000a\000y\000e\000r\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4497 0 obj +<< /S /GoTo /D (subsection.9.17.1) >> +endobj +4500 0 obj +(\376\377\0009\000.\0001\0007\000.\0001\000\040\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4501 0 obj +<< /S /GoTo /D (subsubsection.9.17.1.1) >> +endobj +4504 0 obj +(\376\377\0009\000.\0001\0007\000.\0001\000.\0001\000\040\000H\000a\000s\000h\000t\000a\000b\000l\000e) +endobj +4505 0 obj +<< /S /GoTo /D (section.9.18) >> +endobj +4508 0 obj +(\376\377\0009\000.\0001\0008\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000P\000h\000o\000t\000o\000n\000S\000t\000a\000t\000s\000G\000u\000i\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4509 0 obj +<< /S /GoTo /D (subsection.9.18.1) >> +endobj +4512 0 obj +(\376\377\0009\000.\0001\0008\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4513 0 obj +<< /S /GoTo /D (section.9.19) >> +endobj +4516 0 obj +(\376\377\0009\000.\0001\0009\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000P\000h\000o\000t\000o\000n\000S\000t\000r\000e\000a\000m\000Q\000u\000e\000u\000e\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4517 0 obj +<< /S /GoTo /D (section.9.20) >> +endobj +4520 0 obj +(\376\377\0009\000.\0002\0000\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000P\000h\000o\000t\000o\000n\000V\000i\000e\000w\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4521 0 obj +<< /S /GoTo /D (subsection.9.20.1) >> +endobj +4524 0 obj +(\376\377\0009\000.\0002\0000\000.\0001\000\040\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000T\000y\000p\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4525 0 obj +<< /S /GoTo /D (subsubsection.9.20.1.1) >> +endobj +4528 0 obj +(\376\377\0009\000.\0002\0000\000.\0001\000.\0001\000\040\000O\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000R\000i\000g\000i\000d\000B\000o\000d\000y) +endobj +4529 0 obj +<< /S /GoTo /D (subsubsection.9.20.1.2) >> +endobj +4532 0 obj +(\376\377\0009\000.\0002\0000\000.\0001\000.\0002\000\040\000O\000n\000S\000e\000r\000i\000a\000l\000i\000z\000e\000T\000r\000a\000n\000s\000f\000o\000r\000m) +endobj +4533 0 obj +<< /S /GoTo /D (subsubsection.9.20.1.3) >> +endobj +4536 0 obj +(\376\377\0009\000.\0002\0000\000.\0001\000.\0003\000\040\000O\000w\000n\000e\000r\000s\000h\000i\000p\000O\000p\000t\000i\000o\000n) +endobj +4537 0 obj +<< /S /GoTo /D (subsubsection.9.20.1.4) >> +endobj +4540 0 obj +(\376\377\0009\000.\0002\0000\000.\0001\000.\0004\000\040\000V\000i\000e\000w\000S\000y\000n\000c\000h\000r\000o\000n\000i\000z\000a\000t\000i\000o\000n) +endobj +4541 0 obj +<< /S /GoTo /D (section.9.21) >> +endobj +4544 0 obj +(\376\377\0009\000.\0002\0001\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000P\000i\000n\000g\000C\000l\000o\000u\000d\000R\000e\000g\000i\000o\000n\000s\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4545 0 obj +<< /S /GoTo /D (subsection.9.21.1) >> +endobj +4548 0 obj +(\376\377\0009\000.\0002\0001\000.\0001\000\040\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +4549 0 obj +<< /S /GoTo /D (subsubsection.9.21.1.1) >> +endobj +4552 0 obj +(\376\377\0009\000.\0002\0001\000.\0001\000.\0001\000\040\000D\000e\000b\000u\000g) +endobj +4553 0 obj +<< /S /GoTo /D (subsubsection.9.21.1.2) >> +endobj +4556 0 obj +(\376\377\0009\000.\0002\0001\000.\0001\000.\0002\000\040\000S\000u\000p\000p\000o\000r\000t\000C\000l\000a\000s\000s\000P\000u\000n) +endobj +4557 0 obj +<< /S /GoTo /D (section.9.22) >> +endobj +4560 0 obj +(\376\377\0009\000.\0002\0002\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000R\000o\000o\000m\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4561 0 obj +<< /S /GoTo /D (section.9.23) >> +endobj +4564 0 obj +(\376\377\0009\000.\0002\0003\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000R\000o\000o\000m\000I\000n\000f\000o\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4565 0 obj +<< /S /GoTo /D (section.9.24) >> +endobj +4568 0 obj +(\376\377\0009\000.\0002\0004\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000R\000P\000C\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4569 0 obj +<< /S /GoTo /D (subsection.9.24.1) >> +endobj +4572 0 obj +(\376\377\0009\000.\0002\0004\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4573 0 obj +<< /S /GoTo /D (section.9.25) >> +endobj +4576 0 obj +(\376\377\0009\000.\0002\0005\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000R\000p\000c\000I\000n\000d\000e\000x\000C\000o\000m\000p\000o\000n\000e\000n\000t\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4577 0 obj +<< /S /GoTo /D (subsection.9.25.1) >> +endobj +4580 0 obj +(\376\377\0009\000.\0002\0005\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4581 0 obj +<< /S /GoTo /D (section.9.26) >> +endobj +4584 0 obj +(\376\377\0009\000.\0002\0006\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000S\000e\000r\000v\000e\000r\000S\000e\000t\000t\000i\000n\000g\000s\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4585 0 obj +<< /S /GoTo /D (subsection.9.26.1) >> +endobj +4588 0 obj +(\376\377\0009\000.\0002\0006\000.\0001\000\040\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +4589 0 obj +<< /S /GoTo /D (section.9.27) >> +endobj +4592 0 obj +(\376\377\0009\000.\0002\0007\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000S\000o\000c\000k\000e\000t\000W\000e\000b\000T\000c\000p\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4593 0 obj +<< /S /GoTo /D (section.9.28) >> +endobj +4596 0 obj +(\376\377\0009\000.\0002\0008\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000V\000i\000e\000w\000s\000/\000P\000h\000o\000t\000o\000n\000A\000n\000i\000m\000a\000t\000o\000r\000V\000i\000e\000w\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4597 0 obj +<< /S /GoTo /D (section.9.29) >> +endobj +4600 0 obj +(\376\377\0009\000.\0002\0009\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000V\000i\000e\000w\000s\000/\000P\000h\000o\000t\000o\000n\000R\000i\000g\000i\000d\000b\000o\000d\000y\0002\000D\000V\000i\000e\000w\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4601 0 obj +<< /S /GoTo /D (section.9.30) >> +endobj +4604 0 obj +(\376\377\0009\000.\0003\0000\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000V\000i\000e\000w\000s\000/\000P\000h\000o\000t\000o\000n\000R\000i\000g\000i\000d\000b\000o\000d\000y\000V\000i\000e\000w\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4605 0 obj +<< /S /GoTo /D (section.9.31) >> +endobj +4608 0 obj +(\376\377\0009\000.\0003\0001\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000V\000i\000e\000w\000s\000/\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4609 0 obj +<< /S /GoTo /D (section.9.32) >> +endobj +4612 0 obj +(\376\377\0009\000.\0003\0002\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000V\000i\000e\000w\000s\000/\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000P\000o\000s\000i\000t\000i\000o\000n\000C\000o\000n\000t\000r\000o\000l\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4613 0 obj +<< /S /GoTo /D (section.9.33) >> +endobj +4616 0 obj +(\376\377\0009\000.\0003\0003\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000V\000i\000e\000w\000s\000/\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000P\000o\000s\000i\000t\000i\000o\000n\000M\000o\000d\000e\000l\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4617 0 obj +<< /S /GoTo /D (section.9.34) >> +endobj +4620 0 obj +(\376\377\0009\000.\0003\0004\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000V\000i\000e\000w\000s\000/\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000R\000o\000t\000a\000t\000i\000o\000n\000C\000o\000n\000t\000r\000o\000l\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4621 0 obj +<< /S /GoTo /D (section.9.35) >> +endobj +4624 0 obj +(\376\377\0009\000.\0003\0005\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000V\000i\000e\000w\000s\000/\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000R\000o\000t\000a\000t\000i\000o\000n\000M\000o\000d\000e\000l\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4625 0 obj +<< /S /GoTo /D (section.9.36) >> +endobj +4628 0 obj +(\376\377\0009\000.\0003\0006\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000V\000i\000e\000w\000s\000/\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000S\000c\000a\000l\000e\000C\000o\000n\000t\000r\000o\000l\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4629 0 obj +<< /S /GoTo /D (section.9.37) >> +endobj +4632 0 obj +(\376\377\0009\000.\0003\0007\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000\040\000U\000n\000i\000t\000y\000\040\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000P\000l\000u\000g\000i\000n\000s\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000/\000V\000i\000e\000w\000s\000/\000P\000h\000o\000t\000o\000n\000T\000r\000a\000n\000s\000f\000o\000r\000m\000V\000i\000e\000w\000S\000c\000a\000l\000e\000M\000o\000d\000e\000l\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4633 0 obj +<< /S /GoTo /D (section.9.38) >> +endobj +4636 0 obj +(\376\377\0009\000.\0003\0008\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000C\000h\000a\000t\000A\000p\000i\000/\000C\000h\000a\000t\000C\000h\000a\000n\000n\000e\000l\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4637 0 obj +<< /S /GoTo /D (section.9.39) >> +endobj +4640 0 obj +(\376\377\0009\000.\0003\0009\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000C\000h\000a\000t\000A\000p\000i\000/\000C\000h\000a\000t\000C\000l\000i\000e\000n\000t\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4641 0 obj +<< /S /GoTo /D (section.9.40) >> +endobj +4644 0 obj +(\376\377\0009\000.\0004\0000\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000C\000h\000a\000t\000A\000p\000i\000/\000C\000h\000a\000t\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t\000C\000a\000u\000s\000e\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4645 0 obj +<< /S /GoTo /D (section.9.41) >> +endobj +4648 0 obj +(\376\377\0009\000.\0004\0001\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000C\000h\000a\000t\000A\000p\000i\000/\000C\000h\000a\000t\000E\000v\000e\000n\000t\000C\000o\000d\000e\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4649 0 obj +<< /S /GoTo /D (section.9.42) >> +endobj +4652 0 obj +(\376\377\0009\000.\0004\0002\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000C\000h\000a\000t\000A\000p\000i\000/\000C\000h\000a\000t\000O\000p\000e\000r\000a\000t\000i\000o\000n\000C\000o\000d\000e\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4653 0 obj +<< /S /GoTo /D (section.9.43) >> +endobj +4656 0 obj +(\376\377\0009\000.\0004\0003\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000C\000h\000a\000t\000A\000p\000i\000/\000C\000h\000a\000t\000P\000a\000r\000a\000m\000e\000t\000e\000r\000C\000o\000d\000e\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4657 0 obj +<< /S /GoTo /D (section.9.44) >> +endobj +4660 0 obj +(\376\377\0009\000.\0004\0004\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000C\000h\000a\000t\000A\000p\000i\000/\000C\000h\000a\000t\000P\000e\000e\000r\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4661 0 obj +<< /S /GoTo /D (section.9.45) >> +endobj +4664 0 obj +(\376\377\0009\000.\0004\0005\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000C\000h\000a\000t\000A\000p\000i\000/\000C\000h\000a\000t\000S\000t\000a\000t\000e\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4665 0 obj +<< /S /GoTo /D (section.9.46) >> +endobj +4668 0 obj +(\376\377\0009\000.\0004\0006\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000C\000h\000a\000t\000A\000p\000i\000/\000C\000h\000a\000t\000U\000s\000e\000r\000S\000t\000a\000t\000u\000s\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4669 0 obj +<< /S /GoTo /D (section.9.47) >> +endobj +4672 0 obj +(\376\377\0009\000.\0004\0007\000\040\000C\000:\000/\000D\000e\000v\000/\000p\000h\000o\000t\000o\000n\000-\000s\000d\000k\000-\000d\000o\000t\000n\000e\000t\000/\000U\000n\000i\000t\000y\000/\000P\000h\000o\000t\000o\000n\000N\000e\000t\000w\000o\000r\000k\000i\000n\000g\000/\000A\000s\000s\000e\000t\000s\000/\000P\000h\000o\000t\000o\000n\000C\000h\000a\000t\000A\000p\000i\000/\000I\000C\000h\000a\000t\000C\000l\000i\000e\000n\000t\000L\000i\000s\000t\000e\000n\000e\000r\000.\000c\000s\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +4673 0 obj +<< /S /GoTo /D [4674 0 R /Fit] >> +endobj +4676 0 obj << +/Length 218 +/Filter /FlateDecode +>> +stream +xڅ;O1 !ytJ !Lp*IB"&[}  vOܤ궏#@zk 6"y'pi|}?5ڰqsHB/B=J` T̊&1 e*iK'ݓ -BrX(MKصJ&Z\AM"Pj +endstream +endobj +4674 0 obj << +/Type /Page +/Contents 4676 0 R +/Resources 4675 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 4679 0 R +>> endobj +4677 0 obj << +/D [4674 0 R /XYZ 70.866 771.024 null] +>> endobj +4675 0 obj << +/Font << /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4682 0 obj << +/Length 19 +/Filter /FlateDecode +>> +stream +x3PHW0Pp2Ac( +endstream +endobj +4681 0 obj << +/Type /Page +/Contents 4682 0 R +/Resources 4680 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 4679 0 R +>> endobj +4680 0 obj << +/ProcSet [ /PDF ] +>> endobj +4714 0 obj << +/Length 936 +/Filter /FlateDecode +>> +stream +xMs0"m><$M&u{@`hJlv c-zwch-hM`}ꦾLO9Ț~8>c0YәugI.[>LOH\iQ =௥jQI:t#qEl/tVgyxvv+eA ^F`\v-̇C lgr[ϋ$\P$㕦_'s +G8㨆I}x&Fx`NJ >jSD!L,NL\ާOc]ATBC:^=_Q>o) 2> endobj +4683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 605.106 130.881 615.635] +/A << /S /GoTo /D (chapter.1) >> +>> endobj +4684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 579.247 187.942 587.892] +/A << /S /GoTo /D (chapter.2) >> +>> endobj +4685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 561.519 138.125 570.084] +/A << /S /GoTo /D (section.2.1) >> +>> endobj +4686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 542.159 243.018 552.634] +/A << /S /GoTo /D (subsection.2.1.1) >> +>> endobj +4687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 526.207 239.244 534.978] +/A << /S /GoTo /D (subsection.2.1.2) >> +>> endobj +4688 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 506.74 268.025 517.322] +/A << /S /GoTo /D (subsection.2.1.3) >> +>> endobj +4689 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 480.88 188.578 489.525] +/A << /S /GoTo /D (chapter.3) >> +>> endobj +4690 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 453.137 182.786 461.783] +/A << /S /GoTo /D (chapter.4) >> +>> endobj +4691 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 425.395 164.934 434.04] +/A << /S /GoTo /D (chapter.5) >> +>> endobj +4692 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 397.652 185.933 406.298] +/A << /S /GoTo /D (chapter.6) >> +>> endobj +4693 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 379.924 150.893 388.489] +/A << /S /GoTo /D (section.6.1) >> +>> endobj +4694 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 360.565 221.939 370.833] +/A << /S /GoTo /D (subsection.6.1.1) >> +>> endobj +4695 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 342.909 276.373 353.177] +/A << /S /GoTo /D (subsection.6.1.2) >> +>> endobj +4696 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 326.956 226.274 335.727] +/A << /S /GoTo /D (subsubsection.6.1.2.1) >> +>> endobj +4697 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 309.3 252.68 318.071] +/A << /S /GoTo /D (subsubsection.6.1.2.2) >> +>> endobj +4698 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 289.833 246.726 300.209] +/A << /S /GoTo /D (subsubsection.6.1.2.3) >> +>> endobj +4699 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 272.177 292.095 282.553] +/A << /S /GoTo /D (subsubsection.6.1.2.4) >> +>> endobj +4700 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 254.521 240.154 264.897] +/A << /S /GoTo /D (subsubsection.6.1.2.5) >> +>> endobj +4701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 238.677 238.76 247.241] +/A << /S /GoTo /D (subsection.6.1.3) >> +>> endobj +4702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 221.021 276.422 229.792] +/A << /S /GoTo /D (subsubsection.6.1.3.1) >> +>> endobj +4703 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 201.661 199.409 212.136] +/A << /S /GoTo /D (section.6.2) >> +>> endobj +4704 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 184.005 221.939 194.273] +/A << /S /GoTo /D (subsection.6.2.1) >> +>> endobj +4705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 156.294 204.386 166.683] +/A << /S /GoTo /D (chapter.7) >> +>> endobj +4706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 138.499 190.398 149.081] +/A << /S /GoTo /D (section.7.1) >> +>> endobj +4707 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 120.843 215.674 131.425] +/A << /S /GoTo /D (section.7.2) >> +>> endobj +4708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 103.187 234.108 113.769] +/A << /S /GoTo /D (section.7.3) >> +>> endobj +4709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 85.639 276.373 95.907] +/A << /S /GoTo /D (subsection.7.3.1) >> +>> endobj +4710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 227.18 78.457] +/A << /S /GoTo /D (subsubsection.7.3.1.1) >> +>> endobj +4715 0 obj << +/D [4713 0 R /XYZ 70.866 771.024 null] +>> endobj +4712 0 obj << +/Font << /F73 4716 0 R /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4759 0 obj << +/Length 1212 +/Filter /FlateDecode +>> +stream +xMF~ +N)8wmw2[2{OTB ?/4КZк6?Y.s0OG;|(cO.;~<cwCB)S+XBk} ~d#e0J5كmYN~.nx[7*P_#;uuqf?8~`h?S+P 8`0e,Vqc >cFznm uzG..+))Wut*^Vhҿ$A^-2*V;H_o@T>W@qTQU4Mb,@W:0 (D֩1Br6xp5m̠ P]<;$%U{hoW3a w!p>nP)n',>*tU6ͫUYD>%6odo' \)):ҙ/QhFp<FNCZjO~RcI4Ьz4Ǻ*' ..s?I^jJu@Xw +>՗&b"tn*^>,]4Pu[u \(03qڄhQ4DHs9)f]&(|Ӯk(*'wFW)c7V]r +;ن0P /ߛoU?T{i{ap#{TJ-+/\M *|l"34x _m"B䓷pph.sA%*ǻJޜ/z \;QnA L:G14Y%ٓXEyAGF]:. 7=7~' 4Y]kNqt,|$'v +m":dTi{L@i4^$(F󖲮:scEYAеC52[fVNvHQ -uU+6.1dŵsj_%2luTψxZ&۳5LeGxmo5h(RخAK)0dנ}cw4M正%(id \.H\e٪ Xby;Z|{JRC%˛l{~ÞfH/[YUa\CH-5= +endstream +endobj +4758 0 obj << +/Type /Page +/Contents 4759 0 R +/Resources 4757 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 4679 0 R +/Annots [ 4711 0 R 4718 0 R 4719 0 R 4720 0 R 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R 4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R ] +>> endobj +4711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 758.07 246.58 768.652] +/A << /S /GoTo /D (section.7.4) >> +>> endobj +4718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 740.195 268.01 750.777] +/A << /S /GoTo /D (section.7.5) >> +>> endobj +4719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 722.428 276.373 732.697] +/A << /S /GoTo /D (subsection.7.5.1) >> +>> endobj +4720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.257 271.617 715.028] +/A << /S /GoTo /D (subsubsection.7.5.1.1) >> +>> endobj +4721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 688.383 222.293 697.154] +/A << /S /GoTo /D (subsubsection.7.5.1.2) >> +>> endobj +4722 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 668.805 288.715 679.279] +/A << /S /GoTo /D (subsubsection.7.5.1.3) >> +>> endobj +4723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 650.822 174.967 661.198] +/A << /S /GoTo /D (section.7.6) >> +>> endobj +4724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 633.055 235.693 643.53] +/A << /S /GoTo /D (subsection.7.6.1) >> +>> endobj +4725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 616.884 222.607 625.449] +/A << /S /GoTo /D (subsubsection.7.6.1.1) >> +>> endobj +4726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 597.199 194.89 607.575] +/A << /S /GoTo /D (section.7.7) >> +>> endobj +4727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 579.324 274.995 589.906] +/A << /S /GoTo /D (section.7.8) >> +>> endobj +4728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 552.371 178.473 561.017] +/A << /S /GoTo /D (chapter.8) >> +>> endobj +4729 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 532.721 240.349 543.196] +/A << /S /GoTo /D (section.8.1) >> +>> endobj +4730 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 514.847 221.939 525.115] +/A << /S /GoTo /D (subsection.8.1.1) >> +>> endobj +4731 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 498.676 258.682 507.241] +/A << /S /GoTo /D (subsection.8.1.2) >> +>> endobj +4732 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 480.801 220.07 489.366] +/A << /S /GoTo /D (subsubsection.8.1.2.1) >> +>> endobj +4733 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 461.223 231.296 471.491] +/A << /S /GoTo /D (subsubsection.8.1.2.2) >> +>> endobj +4734 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 445.052 208.826 453.617] +/A << /S /GoTo /D (subsubsection.8.1.2.3) >> +>> endobj +4735 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 427.178 385.485 435.949] +/A << /S /GoTo /D (section.8.2) >> +>> endobj +4736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 407.599 221.939 417.868] +/A << /S /GoTo /D (subsection.8.2.1) >> +>> endobj +4737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 391.428 303.298 400.199] +/A << /S /GoTo /D (subsection.8.2.2) >> +>> endobj +4738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 373.554 265.753 382.119] +/A << /S /GoTo /D (subsubsection.8.2.2.1) >> +>> endobj +4739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 355.679 265.753 364.244] +/A << /S /GoTo /D (subsubsection.8.2.2.2) >> +>> endobj +4740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 337.805 274.131 346.369] +/A << /S /GoTo /D (subsection.8.2.3) >> +>> endobj +4741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 319.93 257.952 328.495] +/A << /S /GoTo /D (subsubsection.8.2.3.1) >> +>> endobj +4742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 302.056 250.483 310.827] +/A << /S /GoTo /D (subsubsection.8.2.3.2) >> +>> endobj +4743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 284.181 250.483 292.952] +/A << /S /GoTo /D (subsubsection.8.2.3.3) >> +>> endobj +4744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.495 215.362 275.077] +/A << /S /GoTo /D (subsubsection.8.2.3.4) >> +>> endobj +4745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 246.728 238.616 256.997] +/A << /S /GoTo /D (subsection.8.2.4) >> +>> endobj +4746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 230.557 260.938 239.328] +/A << /S /GoTo /D (subsubsection.8.2.4.1) >> +>> endobj +4747 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 212.683 237.025 221.247] +/A << /S /GoTo /D (subsubsection.8.2.4.2) >> +>> endobj +4748 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.105 219.451 203.373] +/A << /S /GoTo /D (subsubsection.8.2.4.3) >> +>> endobj +4749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 176.934 206.083 185.498] +/A << /S /GoTo /D (subsubsection.8.2.4.4) >> +>> endobj +4750 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 159.059 208.826 167.624] +/A << /S /GoTo /D (subsubsection.8.2.4.5) >> +>> endobj +4751 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 141.184 261.536 149.955] +/A << /S /GoTo /D (section.8.3) >> +>> endobj +4752 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 121.606 221.939 131.875] +/A << /S /GoTo /D (subsection.8.3.1) >> +>> endobj +4753 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 105.435 303.298 114.206] +/A << /S /GoTo /D (subsection.8.3.2) >> +>> endobj +4754 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 87.561 265.753 96.125] +/A << /S /GoTo /D (subsubsection.8.3.2.1) >> +>> endobj +4755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 69.686 265.753 78.251] +/A << /S /GoTo /D (subsubsection.8.3.2.2) >> +>> endobj +4757 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4802 0 obj << +/Length 1137 +/Filter /FlateDecode +>> +stream +xrHz^MB=}./ģ+ 6 @#!!5 O&<$`r< L{99\'cr.c}0ןcԗG9`BΨ^d<֜N׮# =́'0DՕJH!uR|P/j'efQ['I8 ]W_ q@w9/_Ӷ1Ovة1CaMb(= +؃j !? t֥Yfwc!'XX/*Ӏ /ј"SqJek9IY$@W@7Z Љxi܉&K<ܐך0Ƌ>SZW=3;0!CчsBXB,hLw +^-FtJTK}WMLVo`+m3}uRb#I}^T-.- +lx$i sRW'kp4twIptdBűhiQ*۲CK>_fyu IT~{Wfc'{}$GIafB>hK른=u(WkyQ%tB7-~9u>v]$VhJb-q;L|Vg +id]~5zԎk ތvdR3 s7MwM > endobj +4756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 759.881 274.131 768.446] +/A << /S /GoTo /D (subsection.8.3.3) >> +>> endobj +4760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 257.952 750.748] +/A << /S /GoTo /D (subsubsection.8.3.3.1) >> +>> endobj +4761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 250.483 733.257] +/A << /S /GoTo /D (subsubsection.8.3.3.2) >> +>> endobj +4762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 250.483 715.56] +/A << /S /GoTo /D (subsubsection.8.3.3.3) >> +>> endobj +4763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 687.281 215.362 697.863] +/A << /S /GoTo /D (subsubsection.8.3.3.4) >> +>> endobj +4764 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 669.691 238.616 679.959] +/A << /S /GoTo /D (subsection.8.3.4) >> +>> endobj +4765 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 260.938 662.468] +/A << /S /GoTo /D (subsubsection.8.3.4.1) >> +>> endobj +4766 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 636 237.025 644.565] +/A << /S /GoTo /D (subsubsection.8.3.4.2) >> +>> endobj +4767 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 616.599 219.451 626.867] +/A << /S /GoTo /D (subsubsection.8.3.4.3) >> +>> endobj +4768 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 206.083 609.17] +/A << /S /GoTo /D (subsubsection.8.3.4.4) >> +>> endobj +4769 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 208.826 591.473] +/A << /S /GoTo /D (subsubsection.8.3.4.5) >> +>> endobj +4770 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 565.211 354.48 573.982] +/A << /S /GoTo /D (section.8.4) >> +>> endobj +4771 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 545.81 221.939 556.078] +/A << /S /GoTo /D (subsection.8.4.1) >> +>> endobj +4772 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 529.816 303.298 538.587] +/A << /S /GoTo /D (subsection.8.4.2) >> +>> endobj +4773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 234.748 520.89] +/A << /S /GoTo /D (subsubsection.8.4.2.1) >> +>> endobj +4774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 494.421 274.131 502.986] +/A << /S /GoTo /D (subsection.8.4.3) >> +>> endobj +4775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 198.372 485.289] +/A << /S /GoTo /D (subsubsection.8.4.3.1) >> +>> endobj +4776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 198.372 467.592] +/A << /S /GoTo /D (subsubsection.8.4.3.2) >> +>> endobj +4777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.518 244.7 450.1] +/A << /S /GoTo /D (subsubsection.8.4.3.3) >> +>> endobj +4778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.821 256.222 432.403] +/A << /S /GoTo /D (subsubsection.8.4.3.4) >> +>> endobj +4779 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.124 257.719 414.5] +/A << /S /GoTo /D (subsubsection.8.4.3.5) >> +>> endobj +4780 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 388.238 258.682 396.802] +/A << /S /GoTo /D (subsection.8.4.4) >> +>> endobj +4781 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 368.729 237.724 379.105] +/A << /S /GoTo /D (subsubsection.8.4.4.1) >> +>> endobj +4782 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.032 223.28 361.408] +/A << /S /GoTo /D (subsubsection.8.4.4.2) >> +>> endobj +4783 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 335.146 206.334 343.71] +/A << /S /GoTo /D (subsubsection.8.4.4.3) >> +>> endobj +4784 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 317.448 215.811 326.219] +/A << /S /GoTo /D (subsubsection.8.4.4.4) >> +>> endobj +4785 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 298.047 238.616 308.316] +/A << /S /GoTo /D (subsection.8.4.5) >> +>> endobj +4786 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 217.209 290.618] +/A << /S /GoTo /D (subsubsection.8.4.5.1) >> +>> endobj +4787 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.545 242.719 273.127] +/A << /S /GoTo /D (subsubsection.8.4.5.2) >> +>> endobj +4788 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 246.659 344.007 255.43] +/A << /S /GoTo /D (section.8.5) >> +>> endobj +4789 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 227.258 221.939 237.527] +/A << /S /GoTo /D (subsection.8.5.1) >> +>> endobj +4790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 211.265 303.298 220.036] +/A << /S /GoTo /D (subsection.8.5.2) >> +>> endobj +4791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.567 224.275 202.338] +/A << /S /GoTo /D (subsubsection.8.5.2.1) >> +>> endobj +4792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 175.87 274.131 184.435] +/A << /S /GoTo /D (subsection.8.5.3) >> +>> endobj +4793 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 227.996 166.737] +/A << /S /GoTo /D (subsubsection.8.5.3.1) >> +>> endobj +4794 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 140.475 258.669 149.246] +/A << /S /GoTo /D (subsubsection.8.5.3.2) >> +>> endobj +4795 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 215.811 131.549] +/A << /S /GoTo /D (subsubsection.8.5.3.3) >> +>> endobj +4796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 105.081 226.768 113.645] +/A << /S /GoTo /D (subsubsection.8.5.3.4) >> +>> endobj +4797 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.68 311.382 96.154] +/A << /S /GoTo /D (subsubsection.8.5.3.5) >> +>> endobj +4798 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.875 248.018 78.251] +/A << /S /GoTo /D (subsubsection.8.5.3.6) >> +>> endobj +4800 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4845 0 obj << +/Length 1181 +/Filter /FlateDecode +>> +stream +xw8+8Z-y&ل/+@\SMZ|Gtt'?^ HsNHcΝ)>o +)ן./:79 &L> !%:jr:>Ɓ\_r(#Q 4Ռ̀FuBtG*okI&Wzrʘfmaީj`̷CЛZ~?9jixjO Q~C/5nAa&)r3A i%dE¸'92ts_D&=[/gxH'M.x"LSzWi3i;@N Rwju_,{ˢJ:JKx R;dhWҀ{ 9VgycFMVI9 ыb`++&z D?>5(mn2D[f<3*U9Ax@ ~Vb]:Y G%—ɔʋK8pmىUئ\tF /#/EY6Ȼ 5&{;"6P,v+h;0N"t*B zvٶY4 +YZVqkM;H$̶"\n1%RB˩F*g2׶#PPkI +-!qtgٗ<~lWRPYY-rŪ)-̖vzU:l!r/dدJ* M5Eu,rgI̶%pr|޷k-?twJjV6C౺QVե-obmT:FoeOͶըAv\D-?m!ʶ<ѶUJL e~OKYI tk]LF<>kiaR_ UrЉo VDNm[m1ZC#yPt3T7ٿMvB>&9Vׂ5J}yԧyiW[ +endstream +endobj +4844 0 obj << +/Type /Page +/Contents 4845 0 R +/Resources 4843 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 4679 0 R +/Annots [ 4799 0 R 4803 0 R 4804 0 R 4805 0 R 4806 0 R 4807 0 R 4808 0 R 4809 0 R 4810 0 R 4811 0 R 4812 0 R 4813 0 R 4814 0 R 4815 0 R 4816 0 R 4817 0 R 4818 0 R 4819 0 R 4820 0 R 4821 0 R 4822 0 R 4823 0 R 4824 0 R 4825 0 R 4826 0 R 4827 0 R 4828 0 R 4829 0 R 4830 0 R 4831 0 R 4832 0 R 4833 0 R 4834 0 R 4835 0 R 4836 0 R 4837 0 R 4838 0 R 4839 0 R 4840 0 R 4841 0 R ] +>> endobj +4799 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 759.881 245.068 768.446] +/A << /S /GoTo /D (subsubsection.8.5.3.7) >> +>> endobj +4803 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 740.48 241.042 750.955] +/A << /S /GoTo /D (subsubsection.8.5.3.8) >> +>> endobj +4804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.675 267.546 733.257] +/A << /S /GoTo /D (subsubsection.8.5.3.9) >> +>> endobj +4805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 704.978 267.546 715.56] +/A << /S /GoTo /D (subsubsection.8.5.3.10) >> +>> endobj +4806 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 212.583 697.863] +/A << /S /GoTo /D (subsubsection.8.5.3.11) >> +>> endobj +4807 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 247.21 680.165] +/A << /S /GoTo /D (subsubsection.8.5.3.12) >> +>> endobj +4808 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 247.21 662.468] +/A << /S /GoTo /D (subsubsection.8.5.3.13) >> +>> endobj +4809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.296 229.269 644.771] +/A << /S /GoTo /D (subsubsection.8.5.3.14) >> +>> endobj +4810 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 222.419 627.074] +/A << /S /GoTo /D (subsubsection.8.5.3.15) >> +>> endobj +4811 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 222.419 609.376] +/A << /S /GoTo /D (subsubsection.8.5.3.16) >> +>> endobj +4812 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 581.204 242.405 591.679] +/A << /S /GoTo /D (subsubsection.8.5.3.17) >> +>> endobj +4813 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 242.405 573.982] +/A << /S /GoTo /D (subsubsection.8.5.3.18) >> +>> endobj +4814 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 547.513 232.381 556.078] +/A << /S /GoTo /D (subsubsection.8.5.3.19) >> +>> endobj +4815 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 529.816 258.682 538.381] +/A << /S /GoTo /D (subsection.8.5.4) >> +>> endobj +4816 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 217.855 520.683] +/A << /S /GoTo /D (subsubsection.8.5.4.1) >> +>> endobj +4817 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 492.61 237.724 502.986] +/A << /S /GoTo /D (subsubsection.8.5.4.2) >> +>> endobj +4818 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 248.107 485.495] +/A << /S /GoTo /D (subsubsection.8.5.4.3) >> +>> endobj +4819 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 244.53 467.798] +/A << /S /GoTo /D (subsubsection.8.5.4.4) >> +>> endobj +4820 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 439.626 238.616 449.894] +/A << /S /GoTo /D (subsection.8.5.5) >> +>> endobj +4821 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.929 205.849 432.197] +/A << /S /GoTo /D (subsubsection.8.5.5.1) >> +>> endobj +4822 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.231 228.05 414.5] +/A << /S /GoTo /D (subsubsection.8.5.5.2) >> +>> endobj +4823 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 227.377 396.802] +/A << /S /GoTo /D (subsubsection.8.5.5.3) >> +>> endobj +4824 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 217.801 379.311] +/A << /S /GoTo /D (subsubsection.8.5.5.4) >> +>> endobj +4825 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.032 229.762 361.614] +/A << /S /GoTo /D (subsubsection.8.5.5.5) >> +>> endobj +4826 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.334 223.109 343.917] +/A << /S /GoTo /D (subsubsection.8.5.5.6) >> +>> endobj +4827 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 317.448 262.651 326.219] +/A << /S /GoTo /D (subsubsection.8.5.5.7) >> +>> endobj +4828 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 250.788 308.316] +/A << /S /GoTo /D (subsubsection.8.5.5.8) >> +>> endobj +4829 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 265.672 290.825] +/A << /S /GoTo /D (subsubsection.8.5.5.9) >> +>> endobj +4830 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.356 203.357 273.127] +/A << /S /GoTo /D (subsubsection.8.5.5.10) >> +>> endobj +4831 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 246.659 208.826 255.224] +/A << /S /GoTo /D (subsubsection.8.5.5.11) >> +>> endobj +4832 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 228.962 365.221 237.733] +/A << /S /GoTo /D (section.8.6) >> +>> endobj +4833 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 209.561 221.939 219.829] +/A << /S /GoTo /D (subsection.8.6.1) >> +>> endobj +4834 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 193.567 258.682 202.132] +/A << /S /GoTo /D (subsection.8.6.2) >> +>> endobj +4835 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 174.059 242.217 184.641] +/A << /S /GoTo /D (subsubsection.8.6.2.1) >> +>> endobj +4836 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 225.997 166.737] +/A << /S /GoTo /D (subsubsection.8.6.2.2) >> +>> endobj +4837 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.664 246.61 149.04] +/A << /S /GoTo /D (subsubsection.8.6.2.3) >> +>> endobj +4838 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 121.074 236.747 131.549] +/A << /S /GoTo /D (subsubsection.8.6.2.4) >> +>> endobj +4839 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 105.081 222.419 113.852] +/A << /S /GoTo /D (subsubsection.8.6.2.5) >> +>> endobj +4840 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 87.383 232.381 95.948] +/A << /S /GoTo /D (subsubsection.8.6.2.6) >> +>> endobj +4841 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 69.686 205.832 78.251] +/A << /S /GoTo /D (subsubsection.8.6.2.7) >> +>> endobj +4843 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4888 0 obj << +/Length 1129 +/Filter /FlateDecode +>> +stream +xMs8v`$$$&v6/;L-ͷ8;D /=z^ttNN3p w&r&s&Gge!ڷ$)N&HZ98bp:ف^~s{#Eosg> endobj +4842 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 758.177 381.8 768.652] +/A << /S /GoTo /D (section.8.7) >> +>> endobj +4846 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 740.48 221.939 750.748] +/A << /S /GoTo /D (subsection.8.7.1) >> +>> endobj +4847 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 724.486 258.682 733.051] +/A << /S /GoTo /D (subsection.8.7.2) >> +>> endobj +4848 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 227.996 715.354] +/A << /S /GoTo /D (subsubsection.8.7.2.1) >> +>> endobj +4849 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 231.995 697.656] +/A << /S /GoTo /D (subsubsection.8.7.2.2) >> +>> endobj +4850 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 669.691 243.974 680.165] +/A << /S /GoTo /D (subsubsection.8.7.2.3) >> +>> endobj +4851 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 211.642 662.262] +/A << /S /GoTo /D (subsubsection.8.7.2.4) >> +>> endobj +4852 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 636 245.068 644.565] +/A << /S /GoTo /D (subsubsection.8.7.2.5) >> +>> endobj +4853 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 231.17 627.074] +/A << /S /GoTo /D (subsubsection.8.7.2.6) >> +>> endobj +4854 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 222.419 609.376] +/A << /S /GoTo /D (subsubsection.8.7.2.7) >> +>> endobj +4855 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 232.381 591.473] +/A << /S /GoTo /D (subsubsection.8.7.2.8) >> +>> endobj +4856 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 236.747 573.982] +/A << /S /GoTo /D (subsubsection.8.7.2.9) >> +>> endobj +4857 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 547.513 383.925 556.284] +/A << /S /GoTo /D (section.8.8) >> +>> endobj +4858 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 528.112 221.939 538.381] +/A << /S /GoTo /D (subsection.8.8.1) >> +>> endobj +4859 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 512.119 258.682 520.683] +/A << /S /GoTo /D (subsection.8.8.2) >> +>> endobj +4860 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 494.421 215.811 503.192] +/A << /S /GoTo /D (subsubsection.8.8.2.1) >> +>> endobj +4861 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 220.294 485.495] +/A << /S /GoTo /D (subsubsection.8.8.2.2) >> +>> endobj +4862 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 258.661 467.798] +/A << /S /GoTo /D (subsubsection.8.8.2.3) >> +>> endobj +4863 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 441.329 212.045 449.894] +/A << /S /GoTo /D (subsubsection.8.8.2.4) >> +>> endobj +4864 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.821 238.002 432.197] +/A << /S /GoTo /D (subsubsection.8.8.2.5) >> +>> endobj +4865 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.124 218.797 414.5] +/A << /S /GoTo /D (subsubsection.8.8.2.6) >> +>> endobj +4866 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 386.426 223.28 396.802] +/A << /S /GoTo /D (subsubsection.8.8.2.7) >> +>> endobj +4867 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 368.729 206.836 379.105] +/A << /S /GoTo /D (subsubsection.8.8.2.8) >> +>> endobj +4868 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.032 211.319 361.408] +/A << /S /GoTo /D (subsubsection.8.8.2.9) >> +>> endobj +4869 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 335.146 208.333 343.917] +/A << /S /GoTo /D (subsubsection.8.8.2.10) >> +>> endobj +4870 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 317.448 211.328 326.219] +/A << /S /GoTo /D (subsubsection.8.8.2.11) >> +>> endobj +4871 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 215.811 308.522] +/A << /S /GoTo /D (subsubsection.8.8.2.12) >> +>> endobj +4872 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 280.243 236.236 290.825] +/A << /S /GoTo /D (subsubsection.8.8.2.13) >> +>> endobj +4873 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.356 207.84 273.127] +/A << /S /GoTo /D (subsubsection.8.8.2.14) >> +>> endobj +4874 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 246.659 252.312 255.43] +/A << /S /GoTo /D (subsubsection.8.8.2.15) >> +>> endobj +4875 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 228.962 208.826 237.527] +/A << /S /GoTo /D (subsubsection.8.8.2.16) >> +>> endobj +4876 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 211.265 339.578 220.036] +/A << /S /GoTo /D (section.8.9) >> +>> endobj +4877 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 191.864 221.939 202.132] +/A << /S /GoTo /D (subsection.8.9.1) >> +>> endobj +4878 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 175.87 303.298 184.641] +/A << /S /GoTo /D (subsection.8.9.2) >> +>> endobj +4879 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 219.846 166.944] +/A << /S /GoTo /D (subsubsection.8.9.2.1) >> +>> endobj +4880 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 140.475 274.131 149.04] +/A << /S /GoTo /D (subsection.8.9.3) >> +>> endobj +4881 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 294.319 131.549] +/A << /S /GoTo /D (subsubsection.8.9.3.1) >> +>> endobj +4882 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 105.081 215.811 113.852] +/A << /S /GoTo /D (subsubsection.8.9.3.2) >> +>> endobj +4883 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 87.383 258.682 95.948] +/A << /S /GoTo /D (subsection.8.9.4) >> +>> endobj +4884 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 69.686 251.219 78.457] +/A << /S /GoTo /D (subsubsection.8.9.4.1) >> +>> endobj +4886 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4932 0 obj << +/Length 1231 +/Filter /FlateDecode +>> +stream +xKw8Z;ݥe3q2tAA9$~$ djt0NFgߎ0A9>\;8v>(wV'tvefG4Pb +  H| o.e2JqFP`8m3e_{T"Ȥ{V_)ݱG}LR;&bV=!@ww|'Кul 91=/2}+!sg Sc!,\.TZemySƘ+Al6D)FcЁ7ƺc{Ho.Mf~8=lcYoԘOSWs,,5 i.Yĭ_ySϬ|~B$Ny,)rX?aERqzI7uC8TyMu XU%&w0 _.TEG|g`*@[lƀ]U%gYeȦo RaJ-u2~H5ʣ<+zG¶qp~l;2}qeQfcriayB-vmp? {'IVt9v**YOQvE7}fwLc6!Bw3 U=VL| *^3' *GRZi/H;[0*"3'=IUD⥺yqdf9 &RἛ^bI-qӰ7eF,(2۬5-ojۅ6ih]$Ifn椊N2u7+;ADŽhM7U9ʊpK?jf$ M43nLZfIK] +4_;vwN%vwdB--OU*uw/xkXpj^KMsRtq)Z~6_|LXjy9C> 6nL{WizikwfWuZ!6w +endstream +endobj +4931 0 obj << +/Type /Page +/Contents 4932 0 R +/Resources 4930 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 4889 0 R +/Annots [ 4885 0 R 4890 0 R 4891 0 R 4892 0 R 4893 0 R 4894 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4899 0 R 4900 0 R 4901 0 R 4902 0 R 4903 0 R 4904 0 R 4905 0 R 4906 0 R 4907 0 R 4908 0 R 4909 0 R 4910 0 R 4911 0 R 4912 0 R 4913 0 R 4914 0 R 4915 0 R 4916 0 R 4917 0 R 4918 0 R 4919 0 R 4920 0 R 4921 0 R 4922 0 R 4923 0 R 4924 0 R 4925 0 R 4926 0 R 4927 0 R 4928 0 R ] +>> endobj +4885 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.177 249.228 768.652] +/A << /S /GoTo /D (subsubsection.8.9.4.2) >> +>> endobj +4890 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 740.48 238.616 750.748] +/A << /S /GoTo /D (subsection.8.9.5) >> +>> endobj +4891 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 265.672 733.257] +/A << /S /GoTo /D (subsubsection.8.9.5.1) >> +>> endobj +4892 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 706.789 365.436 715.56] +/A << /S /GoTo /D (section.8.10) >> +>> endobj +4893 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 687.388 221.939 697.656] +/A << /S /GoTo /D (subsection.8.10.1) >> +>> endobj +4894 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 671.394 258.682 679.959] +/A << /S /GoTo /D (subsection.8.10.2) >> +>> endobj +4895 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 651.994 203.581 662.262] +/A << /S /GoTo /D (subsubsection.8.10.2.1) >> +>> endobj +4896 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 636 201.842 644.565] +/A << /S /GoTo /D (subsubsection.8.10.2.2) >> +>> endobj +4897 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 214.448 626.867] +/A << /S /GoTo /D (subsubsection.8.10.2.3) >> +>> endobj +4898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 199.86 609.376] +/A << /S /GoTo /D (subsubsection.8.10.2.4) >> +>> endobj +4899 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 208.333 591.679] +/A << /S /GoTo /D (subsubsection.8.10.2.5) >> +>> endobj +4900 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 565.211 208.333 573.982] +/A << /S /GoTo /D (subsubsection.8.10.2.6) >> +>> endobj +4901 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 545.702 211.552 556.078] +/A << /S /GoTo /D (subsubsection.8.10.2.7) >> +>> endobj +4902 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 528.112 285.655 538.587] +/A << /S /GoTo /D (section.8.11) >> +>> endobj +4903 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 512.119 258.682 520.683] +/A << /S /GoTo /D (subsection.8.11.1) >> +>> endobj +4904 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 494.421 204.845 502.986] +/A << /S /GoTo /D (subsubsection.8.11.1.1) >> +>> endobj +4905 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 213.318 485.495] +/A << /S /GoTo /D (subsubsection.8.11.1.2) >> +>> endobj +4906 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 213.318 467.798] +/A << /S /GoTo /D (subsubsection.8.11.1.3) >> +>> endobj +4907 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 441.329 343.505 450.1] +/A << /S /GoTo /D (section.8.12) >> +>> endobj +4908 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 421.929 221.939 432.197] +/A << /S /GoTo /D (subsection.8.12.1) >> +>> endobj +4909 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 405.935 258.682 414.5] +/A << /S /GoTo /D (subsection.8.12.2) >> +>> endobj +4910 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 293.826 397.009] +/A << /S /GoTo /D (subsubsection.8.12.2.1) >> +>> endobj +4911 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 234.739 379.311] +/A << /S /GoTo /D (subsubsection.8.12.2.2) >> +>> endobj +4912 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 261.144 361.614] +/A << /S /GoTo /D (subsubsection.8.12.2.3) >> +>> endobj +4913 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 335.146 221.28 343.917] +/A << /S /GoTo /D (subsubsection.8.12.2.4) >> +>> endobj +4914 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 315.745 268.622 326.219] +/A << /S /GoTo /D (subsubsection.8.12.2.5) >> +>> endobj +4915 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 258.92 308.522] +/A << /S /GoTo /D (subsubsection.8.12.2.6) >> +>> endobj +4916 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 264.479 290.618] +/A << /S /GoTo /D (subsubsection.8.12.2.7) >> +>> endobj +4917 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.653 268.64 273.127] +/A << /S /GoTo /D (subsubsection.8.12.2.8) >> +>> endobj +4918 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 244.848 236.335 255.224] +/A << /S /GoTo /D (subsubsection.8.12.2.9) >> +>> endobj +4919 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 228.962 251.183 237.733] +/A << /S /GoTo /D (subsubsection.8.12.2.10) >> +>> endobj +4920 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 211.265 277.328 219.829] +/A << /S /GoTo /D (subsubsection.8.12.2.11) >> +>> endobj +4921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.567 193.88 202.338] +/A << /S /GoTo /D (subsubsection.8.12.2.12) >> +>> endobj +4922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 174.166 325.127 184.641] +/A << /S /GoTo /D (subsubsection.8.12.2.13) >> +>> endobj +4923 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 223.316 166.944] +/A << /S /GoTo /D (subsubsection.8.12.2.14) >> +>> endobj +4924 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 140.475 232.883 149.04] +/A << /S /GoTo /D (subsubsection.8.12.2.15) >> +>> endobj +4925 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 122.778 219.556 131.549] +/A << /S /GoTo /D (section.8.13) >> +>> endobj +4926 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 103.377 221.939 113.645] +/A << /S /GoTo /D (subsection.8.13.1) >> +>> endobj +4927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 87.383 258.682 95.948] +/A << /S /GoTo /D (subsection.8.13.2) >> +>> endobj +4928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 247.202 78.251] +/A << /S /GoTo /D (subsubsection.8.13.2.1) >> +>> endobj +4930 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4975 0 obj << +/Length 1247 +/Filter /FlateDecode +>> +stream +x][8)!䍹sjug/|悁زRBX|M +RgYG)!sN ǃoGqA1mи2Gx2Y_BP}mT`<=pd'0!DF\}F(;5z̸-\6Fll۪zQ۹Q3fPҷlǵ y`,Ē'" +|< +,x2OՐȿ!Ƹ:G%dNSGas+l" I C+#b"6YCďb=\?>{S+>Ӽ a}?{#J;* 2+!xodtOƒ8~xWj3oznܼr-_U$MK!t5t2O_=SMǒ<gYա:gN:ZK8 +Ɔ7']'l9NJwk’6,G~q*]C綢;_ +T)x^:JCtAq+)_q:r_zF;i#|" U.]][\:F]YbM!/s-K 5Ş%t/ʭu:0 6dyV3Tac36XFb9^n ^z~r:87x"ƅ u;QGt'a:E|RYWII܇vQ˽~>-'JyEUpR>>hݖwB=gְb}WʍDEnAov t){،MInoV&N_U{S\=7ߋO;IJo6 D_ETWT"pG-dRP pnLu]eJ<%Eޢ];_Z +, ,{tc%09>otѥwzfJZ/ܿ?モ@U>m_q"6ℰMy3i]t,C8_P:G!P%(e OH]> endobj +4929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.177 292.92 768.446] +/A << /S /GoTo /D (subsubsection.8.13.2.2) >> +>> endobj +4933 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 293.826 750.955] +/A << /S /GoTo /D (subsubsection.8.13.2.3) >> +>> endobj +4934 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.783 271.383 733.257] +/A << /S /GoTo /D (subsubsection.8.13.2.4) >> +>> endobj +4935 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 234.739 715.56] +/A << /S /GoTo /D (subsubsection.8.13.2.5) >> +>> endobj +4936 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 261.144 697.863] +/A << /S /GoTo /D (subsubsection.8.13.2.6) >> +>> endobj +4937 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 221.28 680.165] +/A << /S /GoTo /D (subsubsection.8.13.2.7) >> +>> endobj +4938 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 651.994 268.622 662.468] +/A << /S /GoTo /D (subsubsection.8.13.2.8) >> +>> endobj +4939 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.296 253.675 644.565] +/A << /S /GoTo /D (subsubsection.8.13.2.9) >> +>> endobj +4940 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 258.92 627.074] +/A << /S /GoTo /D (subsubsection.8.13.2.10) >> +>> endobj +4941 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 264.479 609.17] +/A << /S /GoTo /D (subsubsection.8.13.2.11) >> +>> endobj +4942 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 581.204 296.444 591.473] +/A << /S /GoTo /D (subsubsection.8.13.2.12) >> +>> endobj +4943 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 247.21 573.982] +/A << /S /GoTo /D (subsubsection.8.13.2.13) >> +>> endobj +4944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 545.81 268.64 556.284] +/A << /S /GoTo /D (subsubsection.8.13.2.14) >> +>> endobj +4945 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 528.005 236.335 538.381] +/A << /S /GoTo /D (subsubsection.8.13.2.15) >> +>> endobj +4946 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 296.588 520.683] +/A << /S /GoTo /D (subsubsection.8.13.2.16) >> +>> endobj +4947 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 494.421 311.265 502.986] +/A << /S /GoTo /D (subsubsection.8.13.2.17) >> +>> endobj +4948 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 303.07 485.289] +/A << /S /GoTo /D (subsubsection.8.13.2.18) >> +>> endobj +4949 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.323 298.13 467.592] +/A << /S /GoTo /D (subsubsection.8.13.2.19) >> +>> endobj +4950 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.626 313.247 449.894] +/A << /S /GoTo /D (subsubsection.8.13.2.20) >> +>> endobj +4951 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 423.632 251.183 432.403] +/A << /S /GoTo /D (subsubsection.8.13.2.21) >> +>> endobj +4952 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 405.935 277.328 414.5] +/A << /S /GoTo /D (subsubsection.8.13.2.22) >> +>> endobj +4953 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 193.88 397.009] +/A << /S /GoTo /D (subsubsection.8.13.2.23) >> +>> endobj +4954 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 368.837 325.127 379.311] +/A << /S /GoTo /D (subsubsection.8.13.2.24) >> +>> endobj +4955 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.032 245.695 361.408] +/A << /S /GoTo /D (subsubsection.8.13.2.25) >> +>> endobj +4956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.334 264.497 343.71] +/A << /S /GoTo /D (subsubsection.8.13.2.26) >> +>> endobj +4957 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 317.448 223.316 326.219] +/A << /S /GoTo /D (subsubsection.8.13.2.27) >> +>> endobj +4958 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 217.792 308.522] +/A << /S /GoTo /D (subsubsection.8.13.2.28) >> +>> endobj +4959 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 232.883 290.618] +/A << /S /GoTo /D (subsubsection.8.13.2.29) >> +>> endobj +4960 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 264.356 222.336 273.127] +/A << /S /GoTo /D (section.8.14) >> +>> endobj +4961 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 244.956 221.939 255.224] +/A << /S /GoTo /D (subsection.8.14.1) >> +>> endobj +4962 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 228.962 258.682 237.527] +/A << /S /GoTo /D (subsection.8.14.2) >> +>> endobj +4963 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 209.561 218.806 220.036] +/A << /S /GoTo /D (subsubsection.8.14.2.1) >> +>> endobj +4964 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.567 223.298 202.132] +/A << /S /GoTo /D (subsubsection.8.14.2.2) >> +>> endobj +4965 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 175.87 241.956 184.641] +/A << /S /GoTo /D (subsubsection.8.14.2.3) >> +>> endobj +4966 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 156.361 264.148 166.944] +/A << /S /GoTo /D (subsubsection.8.14.2.4) >> +>> endobj +4967 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 140.475 217.03 149.246] +/A << /S /GoTo /D (subsubsection.8.14.2.5) >> +>> endobj +4968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 220.787 131.549] +/A << /S /GoTo /D (subsubsection.8.14.2.6) >> +>> endobj +4969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 103.377 249.694 113.852] +/A << /S /GoTo /D (subsubsection.8.14.2.7) >> +>> endobj +4970 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 87.383 198.865 95.948] +/A << /S /GoTo /D (subsubsection.8.14.2.8) >> +>> endobj +4971 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 69.686 206.441 78.251] +/A << /S /GoTo /D (subsubsection.8.14.2.9) >> +>> endobj +4973 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5018 0 obj << +/Length 1125 +/Filter /FlateDecode +>> +stream +xK{6 +/g7% ӆd.€nI}[EVF8?}9GԁN˕>>8ɹ#| 8r}8R8ٹ/A~u9lh!} :)[ߡ3׾8_:Oŝs2%z?r-X=UbZ5xW='מQI%@!^H<ݑ2Ȃ,-M/7(GGmMk" ^oHM¨$|d6T989c-r1..GY,j "4dJJ_jrP6[UH*iY[Pی!w/3a^ v vԃG*+5A MAcC4z(* HkABc-m1N ?%k5ΑZp=/*V:Ő 2s4O2v80goRnĖ:9 iRK=4;d AK]uLMn=},\ejaAda ^Β,*Y=Uoeڋ;0̝;duS33M4:] dUHO}g+u٬oЃO4sSE 1noczH#L*U +i%m{6^ii3wCR8|Yu%f"Ȃ:,@;R(/SetpY21k1剛LVyY2(sI/.$aNd{lEoTQVVmD*ql($\(lȮ&x=X_6@! +M:襽.If kқ8 +I3K }=6 +zF**r>j" }3KȷWppܙ 8dgz&VGWe5<\[myʕnDkCמG5 {?ҚxMڻ&Mt@{ߧ_qWh(\;-/bCpŸ[ \vq|rJW\.f):sWSyyҪ87Z3$7} is W/? +endstream +endobj +5017 0 obj << +/Type /Page +/Contents 5018 0 R +/Resources 5016 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 4889 0 R +/Annots [ 4972 0 R 4976 0 R 4977 0 R 4978 0 R 4979 0 R 4980 0 R 4981 0 R 4982 0 R 4983 0 R 4984 0 R 4985 0 R 4986 0 R 4987 0 R 4988 0 R 4989 0 R 4990 0 R 4991 0 R 4992 0 R 4993 0 R 4994 0 R 4995 0 R 4996 0 R 4997 0 R 4998 0 R 4999 0 R 5000 0 R 5001 0 R 5002 0 R 5003 0 R 5004 0 R 5005 0 R 5006 0 R 5007 0 R 5008 0 R 5009 0 R 5010 0 R 5011 0 R 5012 0 R 5013 0 R 5014 0 R ] +>> endobj +4972 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.177 227.01 768.652] +/A << /S /GoTo /D (subsubsection.8.14.2.10) >> +>> endobj +4976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 206.836 750.748] +/A << /S /GoTo /D (subsubsection.8.14.2.11) >> +>> endobj +4977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.675 260.023 733.257] +/A << /S /GoTo /D (subsubsection.8.14.2.12) >> +>> endobj +4978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.471 230.273 715.56] +/A << /S /GoTo /D (subsubsection.8.14.2.13) >> +>> endobj +4979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 687.388 237.096 697.863] +/A << /S /GoTo /D (subsubsection.8.14.2.14) >> +>> endobj +4980 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 671.394 222.058 680.165] +/A << /S /GoTo /D (section.8.15) >> +>> endobj +4981 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 651.994 221.939 662.262] +/A << /S /GoTo /D (subsection.8.15.1) >> +>> endobj +4982 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 636 274.131 644.565] +/A << /S /GoTo /D (subsection.8.15.2) >> +>> endobj +4983 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 616.599 237.231 626.867] +/A << /S /GoTo /D (subsubsection.8.15.2.1) >> +>> endobj +4984 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 598.902 237.231 609.17] +/A << /S /GoTo /D (subsubsection.8.15.2.2) >> +>> endobj +4985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 581.204 237.231 591.473] +/A << /S /GoTo /D (subsubsection.8.15.2.3) >> +>> endobj +4986 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 237.231 573.775] +/A << /S /GoTo /D (subsubsection.8.15.2.4) >> +>> endobj +4987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 547.513 217.801 556.284] +/A << /S /GoTo /D (subsubsection.8.15.2.5) >> +>> endobj +4988 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 529.816 273.751 538.587] +/A << /S /GoTo /D (subsubsection.8.15.2.6) >> +>> endobj +4989 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 244.539 520.89] +/A << /S /GoTo /D (subsubsection.8.15.2.7) >> +>> endobj +4990 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 494.421 289.881 503.192] +/A << /S /GoTo /D (subsubsection.8.15.2.8) >> +>> endobj +4991 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 474.913 207.831 485.289] +/A << /S /GoTo /D (subsubsection.8.15.2.9) >> +>> endobj +4992 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.216 250.779 467.798] +/A << /S /GoTo /D (subsubsection.8.15.2.10) >> +>> endobj +4993 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.626 280.538 450.1] +/A << /S /GoTo /D (subsubsection.8.15.2.11) >> +>> endobj +4994 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.821 253.325 432.403] +/A << /S /GoTo /D (subsubsection.8.15.2.12) >> +>> endobj +4995 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.124 229.807 414.706] +/A << /S /GoTo /D (subsubsection.8.15.2.13) >> +>> endobj +4996 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 386.426 229.807 397.009] +/A << /S /GoTo /D (subsubsection.8.15.2.14) >> +>> endobj +4997 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 370.54 258.682 379.105] +/A << /S /GoTo /D (subsection.8.15.3) >> +>> endobj +4998 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 272.164 361.614] +/A << /S /GoTo /D (subsubsection.8.15.3.1) >> +>> endobj +4999 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 335.146 218.032 343.917] +/A << /S /GoTo /D (section.8.16) >> +>> endobj +5000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 315.745 221.939 326.013] +/A << /S /GoTo /D (subsection.8.16.1) >> +>> endobj +5001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 299.751 274.131 308.316] +/A << /S /GoTo /D (subsection.8.16.2) >> +>> endobj +5002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 280.243 215.362 290.825] +/A << /S /GoTo /D (subsubsection.8.16.2.1) >> +>> endobj +5003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 262.653 238.616 272.921] +/A << /S /GoTo /D (subsection.8.16.3) >> +>> endobj +5004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 246.659 220.787 255.224] +/A << /S /GoTo /D (subsubsection.8.16.3.1) >> +>> endobj +5005 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 228.962 215.309 237.733] +/A << /S /GoTo /D (subsubsection.8.16.3.2) >> +>> endobj +5006 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 211.265 206.334 219.829] +/A << /S /GoTo /D (subsubsection.8.16.3.3) >> +>> endobj +5007 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.567 206.334 202.132] +/A << /S /GoTo /D (subsubsection.8.16.3.4) >> +>> endobj +5008 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 174.166 272.385 184.641] +/A << /S /GoTo /D (section.8.17) >> +>> endobj +5009 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 156.469 221.939 166.737] +/A << /S /GoTo /D (subsection.8.17.1) >> +>> endobj +5010 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 140.475 274.131 149.04] +/A << /S /GoTo /D (subsection.8.17.2) >> +>> endobj +5011 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 221.065 131.549] +/A << /S /GoTo /D (subsubsection.8.17.2.1) >> +>> endobj +5012 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 103.377 251.772 113.852] +/A << /S /GoTo /D (section.8.18) >> +>> endobj +5013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 85.68 221.939 95.948] +/A << /S /GoTo /D (subsection.8.18.1) >> +>> endobj +5014 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 69.686 258.682 78.251] +/A << /S /GoTo /D (subsection.8.18.2) >> +>> endobj +5016 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5061 0 obj << +/Length 1249 +/Filter /FlateDecode +>> +stream +xMw6 +zE\I֗gג&g(g@n-i1Wl`-`uZ[3lqקԳ.b>r)#n\Ϯw1usQ~uo݂ a+k]X|n=WN-L<`O'](37B \¹(T*]]BnOD lGq#/E ` bWZ'uN!zC7ѷ/yޏbmTmO sV! y&T'i,cS/*Lż@ ZNJ pbmrQъgH)͑W9|]~ީ`!xXbX~er#O$܆spH`,y~L@q7FZa-kbTcX:f||ɒl8}|1$_p̆}h$XD@&b60ߚEqwo3&a}v,&Q?_0Pk22^=u뢱~dAjl[ka?l>]%繣> endobj +5015 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.177 277.615 768.652] +/A << /S /GoTo /D (subsubsection.8.18.2.1) >> +>> endobj +5019 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 740.48 243.212 750.748] +/A << /S /GoTo /D (subsubsection.8.18.2.2) >> +>> endobj +5020 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.783 211.328 733.257] +/A << /S /GoTo /D (subsubsection.8.18.2.3) >> +>> endobj +5021 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 215.623 715.354] +/A << /S /GoTo /D (subsubsection.8.18.2.4) >> +>> endobj +5022 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 240.217 697.863] +/A << /S /GoTo /D (subsubsection.8.18.2.5) >> +>> endobj +5023 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 669.691 228.803 679.959] +/A << /S /GoTo /D (subsubsection.8.18.2.6) >> +>> endobj +5024 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 651.994 231.305 662.468] +/A << /S /GoTo /D (subsubsection.8.18.2.7) >> +>> endobj +5025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.296 261.395 644.565] +/A << /S /GoTo /D (subsubsection.8.18.2.8) >> +>> endobj +5026 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 220.429 626.867] +/A << /S /GoTo /D (subsubsection.8.18.2.9) >> +>> endobj +5027 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 598.902 341.542 609.376] +/A << /S /GoTo /D (section.8.19) >> +>> endobj +5028 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 582.908 274.131 591.473] +/A << /S /GoTo /D (subsection.8.19.1) >> +>> endobj +5029 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 565.211 203.07 573.775] +/A << /S /GoTo /D (subsubsection.8.19.1.1) >> +>> endobj +5030 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 545.81 214.571 556.284] +/A << /S /GoTo /D (section.8.20) >> +>> endobj +5031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 528.112 221.939 538.381] +/A << /S /GoTo /D (subsection.8.20.1) >> +>> endobj +5032 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 512.119 303.298 520.89] +/A << /S /GoTo /D (subsection.8.20.2) >> +>> endobj +5033 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 492.718 218.788 502.986] +/A << /S /GoTo /D (subsubsection.8.20.2.1) >> +>> endobj +5034 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 476.724 390.595 485.495] +/A << /S /GoTo /D (section.8.21) >> +>> endobj +5035 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 457.323 221.939 467.592] +/A << /S /GoTo /D (subsection.8.21.1) >> +>> endobj +5036 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 441.329 274.131 449.894] +/A << /S /GoTo /D (subsection.8.21.2) >> +>> endobj +5037 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.821 235.788 432.197] +/A << /S /GoTo /D (subsubsection.8.21.2.1) >> +>> endobj +5038 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.124 265.654 414.706] +/A << /S /GoTo /D (subsubsection.8.21.2.2) >> +>> endobj +5039 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 237.742 397.009] +/A << /S /GoTo /D (subsubsection.8.21.2.3) >> +>> endobj +5040 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 248.699 379.311] +/A << /S /GoTo /D (subsubsection.8.21.2.4) >> +>> endobj +5041 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.032 249.694 361.614] +/A << /S /GoTo /D (subsubsection.8.21.2.5) >> +>> endobj +5042 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.334 258.571 343.917] +/A << /S /GoTo /D (subsubsection.8.21.2.6) >> +>> endobj +5043 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 315.745 248.708 326.219] +/A << /S /GoTo /D (subsubsection.8.21.2.7) >> +>> endobj +5044 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 239.365 308.522] +/A << /S /GoTo /D (subsubsection.8.21.2.8) >> +>> endobj +5045 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 249.327 290.825] +/A << /S /GoTo /D (subsubsection.8.21.2.9) >> +>> endobj +5046 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 264.356 247.531 273.127] +/A << /S /GoTo /D (section.8.22) >> +>> endobj +5047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 244.956 221.939 255.224] +/A << /S /GoTo /D (subsection.8.22.1) >> +>> endobj +5048 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 228.962 274.131 237.527] +/A << /S /GoTo /D (subsection.8.22.2) >> +>> endobj +5049 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 211.265 274.531 220.036] +/A << /S /GoTo /D (subsubsection.8.22.2.1) >> +>> endobj +5050 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.567 275.544 202.338] +/A << /S /GoTo /D (subsubsection.8.22.2.2) >> +>> endobj +5051 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 175.87 253.729 184.641] +/A << /S /GoTo /D (subsubsection.8.22.2.3) >> +>> endobj +5052 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 250.187 166.944] +/A << /S /GoTo /D (subsubsection.8.22.2.4) >> +>> endobj +5053 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 140.475 305.787 149.246] +/A << /S /GoTo /D (subsubsection.8.22.2.5) >> +>> endobj +5054 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 121.074 322.186 131.549] +/A << /S /GoTo /D (subsubsection.8.22.2.6) >> +>> endobj +5055 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 105.081 297.628 113.852] +/A << /S /GoTo /D (subsubsection.8.22.2.7) >> +>> endobj +5056 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 87.383 298.928 96.154] +/A << /S /GoTo /D (subsubsection.8.22.2.8) >> +>> endobj +5057 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 244.951 78.457] +/A << /S /GoTo /D (subsubsection.8.22.2.9) >> +>> endobj +5059 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5104 0 obj << +/Length 1262 +/Filter /FlateDecode +>> +stream +xMwH +)ML:ƞY9U6`'SEAE=a&+>E{{oQYKa!: RЧ3:7Cx؇0?,v_Ƨ_Xt !O;s 8S}> +s_p0A>HϝPޗNzW^pT) +_iO8w |P+wC?^qJZYs u !vx߽ƅ]6e7`> :Ǡx)nK5N<M$o=[dM4`G䊞uI'qu9rəSnlveH{D>㙘n҂c HY+0hm8ST4Fɼ.QbVY0UKz] <Yoɻ:1D,dlIX!lu~dx#ږ X'v=x5v 7c#~@WZtPR8(h @p$w!M[hW: Er&)BeDSi>H~zv Rz@t6T["Ӿ+ UMK,<)"OdG"[*V3kq3={>\$3i],"5*mBsrH"2qf|@/m]ԵYdZ 76Cty546r4w.+w+ϓ"7/?ar}=*Bnj@Õ-|jxp{K Lr-rAOME3okrlAN뙃nkN|Mf1,Z'.Qx&D%zEUMTUւ $eM-~"7fj ]{&|]p۩Z>"mVS`ρt3>W,ә"5SlZVU3,!0ӓ=puk*ka;i׿ʤb1Ӿ'+?) g!!7QP +endstream +endobj +5103 0 obj << +/Type /Page +/Contents 5104 0 R +/Resources 5102 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 4889 0 R +/Annots [ 5058 0 R 5062 0 R 5063 0 R 5064 0 R 5065 0 R 5066 0 R 5067 0 R 5068 0 R 5069 0 R 5070 0 R 5071 0 R 5072 0 R 5073 0 R 5074 0 R 5075 0 R 5076 0 R 5077 0 R 5078 0 R 5079 0 R 5080 0 R 5081 0 R 5082 0 R 5083 0 R 5084 0 R 5085 0 R 5086 0 R 5087 0 R 5088 0 R 5089 0 R 5090 0 R 5091 0 R 5092 0 R 5093 0 R 5094 0 R 5095 0 R 5096 0 R 5097 0 R 5098 0 R 5099 0 R 5100 0 R ] +>> endobj +5058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 759.881 244.709 768.652] +/A << /S /GoTo /D (subsubsection.8.22.2.10) >> +>> endobj +5062 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 740.48 233.492 750.955] +/A << /S /GoTo /D (subsubsection.8.22.2.11) >> +>> endobj +5063 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 233.25 733.257] +/A << /S /GoTo /D (subsubsection.8.22.2.12) >> +>> endobj +5064 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 705.085 283.318 715.56] +/A << /S /GoTo /D (subsubsection.8.22.2.13) >> +>> endobj +5065 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 281.076 697.863] +/A << /S /GoTo /D (subsubsection.8.22.2.14) >> +>> endobj +5066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 669.691 270.621 680.165] +/A << /S /GoTo /D (subsubsection.8.22.2.15) >> +>> endobj +5067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 297.583 662.468] +/A << /S /GoTo /D (subsubsection.8.22.2.16) >> +>> endobj +5068 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.189 355.2 644.771] +/A << /S /GoTo /D (subsubsection.8.22.2.17) >> +>> endobj +5069 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 264.165 627.074] +/A << /S /GoTo /D (subsubsection.8.22.2.18) >> +>> endobj +5070 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 287.119 609.376] +/A << /S /GoTo /D (subsubsection.8.22.2.19) >> +>> endobj +5071 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 296.041 591.679] +/A << /S /GoTo /D (subsubsection.8.22.2.20) >> +>> endobj +5072 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 291.118 573.982] +/A << /S /GoTo /D (subsubsection.8.22.2.21) >> +>> endobj +5073 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 545.81 302.075 556.284] +/A << /S /GoTo /D (subsubsection.8.22.2.22) >> +>> endobj +5074 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 528.005 325.36 538.587] +/A << /S /GoTo /D (subsubsection.8.22.2.23) >> +>> endobj +5075 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 297.09 520.89] +/A << /S /GoTo /D (subsubsection.8.22.2.24) >> +>> endobj +5076 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 492.718 298.3 503.192] +/A << /S /GoTo /D (subsubsection.8.22.2.25) >> +>> endobj +5077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 475.021 267.367 485.495] +/A << /S /GoTo /D (subsubsection.8.22.2.26) >> +>> endobj +5078 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.323 268.855 467.798] +/A << /S /GoTo /D (subsubsection.8.22.2.27) >> +>> endobj +5079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 441.329 254.56 450.1] +/A << /S /GoTo /D (section.8.23) >> +>> endobj +5080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 421.929 221.939 432.197] +/A << /S /GoTo /D (subsection.8.23.1) >> +>> endobj +5081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 405.935 252.489 414.706] +/A << /S /GoTo /D (section.8.24) >> +>> endobj +5082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 386.534 221.939 396.802] +/A << /S /GoTo /D (subsection.8.24.1) >> +>> endobj +5083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 370.54 274.131 379.105] +/A << /S /GoTo /D (subsection.8.24.2) >> +>> endobj +5084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.139 213.04 361.408] +/A << /S /GoTo /D (subsubsection.8.24.2.1) >> +>> endobj +5085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 335.146 223.791 343.71] +/A << /S /GoTo /D (subsubsection.8.24.2.2) >> +>> endobj +5086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 317.448 271.722 326.219] +/A << /S /GoTo /D (section.8.25) >> +>> endobj +5087 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 298.047 221.939 308.316] +/A << /S /GoTo /D (subsection.8.25.1) >> +>> endobj +5088 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 280.35 238.616 290.618] +/A << /S /GoTo /D (subsection.8.25.2) >> +>> endobj +5089 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.356 233.107 272.921] +/A << /S /GoTo /D (subsubsection.8.25.2.1) >> +>> endobj +5090 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 244.956 229.09 255.224] +/A << /S /GoTo /D (subsubsection.8.25.2.2) >> +>> endobj +5091 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 227.258 238.914 237.733] +/A << /S /GoTo /D (section.8.26) >> +>> endobj +5092 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 209.561 221.939 219.829] +/A << /S /GoTo /D (subsection.8.26.1) >> +>> endobj +5093 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 193.567 258.682 202.132] +/A << /S /GoTo /D (subsection.8.26.2) >> +>> endobj +5094 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 175.87 231.995 184.435] +/A << /S /GoTo /D (subsubsection.8.26.2.1) >> +>> endobj +5095 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 253.424 166.944] +/A << /S /GoTo /D (subsubsection.8.26.2.2) >> +>> endobj +5096 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.664 243.221 149.246] +/A << /S /GoTo /D (subsubsection.8.26.2.3) >> +>> endobj +5097 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 233.743 131.549] +/A << /S /GoTo /D (subsubsection.8.26.2.4) >> +>> endobj +5098 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 103.27 297.493 113.645] +/A << /S /GoTo /D (subsubsection.8.26.2.5) >> +>> endobj +5099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 87.383 229.484 95.948] +/A << /S /GoTo /D (subsubsection.8.26.2.6) >> +>> endobj +5100 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 241.463 78.457] +/A << /S /GoTo /D (subsubsection.8.26.2.7) >> +>> endobj +5102 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5147 0 obj << +/Length 1152 +/Filter /FlateDecode +>> +stream +xKw8 +/$˺t4grR:±)،mIH$L$ ,_0ׯ} q8J=g|08P#ۿOy|HwDZ9wA'pLp޹ H;w wG{'jϜQ;V'']JWaTu, vd1K2s{je^v'Z=ԊrQ$=l G:8M Ÿ<bK*sǑe1UZnF>[ HF6v<> +_b6l 3Y|YgS.3s~ @d>hWA Đ>G [BWބd3!CǪ0?^E@dw':ܲig0ݒ&: X]afqn kv/^;Ȍɮ [{y} 2'l1̳i+ؼm^ڼ)NT|[f" @m| W[;C O+%eEnL'z'lfiZ<@Mq?&_1^AܟP_~щˤ*/G)%=vm p_h`FhT-ʻq&EU!@OM6Y/1 oHvYZ!2)9/q25uҲ4;K B&L +endstream +endobj +5146 0 obj << +/Type /Page +/Contents 5147 0 R +/Resources 5145 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5148 0 R +/Annots [ 5101 0 R 5105 0 R 5106 0 R 5107 0 R 5108 0 R 5109 0 R 5110 0 R 5111 0 R 5112 0 R 5113 0 R 5114 0 R 5115 0 R 5116 0 R 5117 0 R 5118 0 R 5119 0 R 5120 0 R 5121 0 R 5122 0 R 5123 0 R 5124 0 R 5125 0 R 5126 0 R 5127 0 R 5128 0 R 5129 0 R 5130 0 R 5131 0 R 5132 0 R 5133 0 R 5134 0 R 5135 0 R 5136 0 R 5137 0 R 5138 0 R 5139 0 R 5140 0 R 5141 0 R 5142 0 R 5143 0 R ] +>> endobj +5101 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.177 238.092 768.652] +/A << /S /GoTo /D (subsubsection.8.26.2.8) >> +>> endobj +5105 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 740.372 229.762 750.955] +/A << /S /GoTo /D (subsubsection.8.26.2.9) >> +>> endobj +5106 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 198.865 733.051] +/A << /S /GoTo /D (subsubsection.8.26.2.10) >> +>> endobj +5107 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 223.28 715.56] +/A << /S /GoTo /D (subsubsection.8.26.2.11) >> +>> endobj +5108 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 687.388 223.02 697.656] +/A << /S /GoTo /D (subsubsection.8.26.2.12) >> +>> endobj +5109 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 257.163 680.165] +/A << /S /GoTo /D (subsubsection.8.26.2.13) >> +>> endobj +5110 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 206.441 662.262] +/A << /S /GoTo /D (subsubsection.8.26.2.14) >> +>> endobj +5111 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.296 230.596 644.565] +/A << /S /GoTo /D (subsubsection.8.26.2.15) >> +>> endobj +5112 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 228.041 626.867] +/A << /S /GoTo /D (subsubsection.8.26.2.16) >> +>> endobj +5113 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 598.794 241.266 609.376] +/A << /S /GoTo /D (subsubsection.8.26.2.17) >> +>> endobj +5114 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 581.204 237.096 591.679] +/A << /S /GoTo /D (subsubsection.8.26.2.18) >> +>> endobj +5115 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 216.528 573.775] +/A << /S /GoTo /D (subsubsection.8.26.2.19) >> +>> endobj +5116 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 547.513 364.988 556.284] +/A << /S /GoTo /D (section.8.27) >> +>> endobj +5117 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 529.816 258.682 538.381] +/A << /S /GoTo /D (subsection.8.27.1) >> +>> endobj +5118 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 215.309 520.683] +/A << /S /GoTo /D (subsubsection.8.27.1.1) >> +>> endobj +5119 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 492.718 233.752 502.986] +/A << /S /GoTo /D (subsubsection.8.27.1.2) >> +>> endobj +5120 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 475.021 228.05 485.289] +/A << /S /GoTo /D (subsubsection.8.27.1.3) >> +>> endobj +5121 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 280.825 467.798] +/A << /S /GoTo /D (subsubsection.8.27.1.4) >> +>> endobj +5122 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 441.329 292.329 450.1] +/A << /S /GoTo /D (subsubsection.8.27.1.5) >> +>> endobj +5123 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.929 280.744 432.403] +/A << /S /GoTo /D (subsubsection.8.27.1.6) >> +>> endobj +5124 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.124 210.826 414.5] +/A << /S /GoTo /D (subsubsection.8.27.1.7) >> +>> endobj +5125 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 208.333 397.009] +/A << /S /GoTo /D (subsubsection.8.27.1.8) >> +>> endobj +5126 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 208.826 379.105] +/A << /S /GoTo /D (subsubsection.8.27.1.9) >> +>> endobj +5127 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 352.843 241.039 361.614] +/A << /S /GoTo /D (section.8.28) >> +>> endobj +5128 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 333.442 221.939 343.71] +/A << /S /GoTo /D (subsection.8.28.1) >> +>> endobj +5129 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 317.448 258.682 326.013] +/A << /S /GoTo /D (subsection.8.28.2) >> +>> endobj +5130 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 217.299 308.316] +/A << /S /GoTo /D (subsubsection.8.28.2.1) >> +>> endobj +5131 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 212.807 290.618] +/A << /S /GoTo /D (subsubsection.8.28.2.2) >> +>> endobj +5132 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.356 198.372 272.921] +/A << /S /GoTo /D (subsubsection.8.28.2.3) >> +>> endobj +5133 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 246.659 215.309 255.224] +/A << /S /GoTo /D (subsubsection.8.28.2.4) >> +>> endobj +5134 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 227.258 233.752 237.527] +/A << /S /GoTo /D (subsubsection.8.28.2.5) >> +>> endobj +5135 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 209.561 228.05 219.829] +/A << /S /GoTo /D (subsubsection.8.28.2.6) >> +>> endobj +5136 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.567 256.177 202.132] +/A << /S /GoTo /D (subsubsection.8.28.2.7) >> +>> endobj +5137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 175.87 262.148 184.435] +/A << /S /GoTo /D (subsubsection.8.28.2.8) >> +>> endobj +5138 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 241.956 166.944] +/A << /S /GoTo /D (subsubsection.8.28.2.9) >> +>> endobj +5139 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 140.475 222.787 149.04] +/A << /S /GoTo /D (subsubsection.8.28.2.10) >> +>> endobj +5140 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 208.333 131.549] +/A << /S /GoTo /D (subsubsection.8.28.2.11) >> +>> endobj +5141 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 105.081 249.425 113.852] +/A << /S /GoTo /D (subsubsection.8.28.2.12) >> +>> endobj +5142 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 87.383 254.985 96.154] +/A << /S /GoTo /D (subsubsection.8.28.2.13) >> +>> endobj +5143 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 277.615 78.457] +/A << /S /GoTo /D (subsubsection.8.28.2.14) >> +>> endobj +5145 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5191 0 obj << +/Length 1095 +/Filter /FlateDecode +>> +stream +xMs@~ +pMLbmB{@DZXڪF㡭;Ep%? G8a# |N)tعwӟ! ۝cnтp989"pҺ +XrwgN`? X]S ̈́JXRHp0 +}V#kcN8M2H2hq/t"ATڴGrք+G7m2 +F7p܃uRlBlull7ЃiR3;i~q Q@K- YCʹ#37#gnXeRՔH Zn+D"ďcadQ;0%[[1b1zTfmu$Y{)iyӐG-=id~Q2`KFOv Y#dxK%r\#Je:/qrh~Z遦7ӱn4N/gY_qT6ꀺ{Gȕ7qmx ` b xf z *Һۮ 6x E*z݊e2hBEpBݾ"8ŵ4q&l`bHz@GZhZR0CT-xQ1JeSQq]&YG*6be Gj!Vr]UE\&x-1{o+jg0j9,UjOSuZƫ2Ys}ܑmB5 +endstream +endobj +5190 0 obj << +/Type /Page +/Contents 5191 0 R +/Resources 5189 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5148 0 R +/Annots [ 5144 0 R 5149 0 R 5150 0 R 5151 0 R 5152 0 R 5153 0 R 5154 0 R 5155 0 R 5156 0 R 5157 0 R 5158 0 R 5159 0 R 5160 0 R 5161 0 R 5162 0 R 5163 0 R 5164 0 R 5165 0 R 5166 0 R 5167 0 R 5168 0 R 5169 0 R 5170 0 R 5171 0 R 5172 0 R 5173 0 R 5174 0 R 5175 0 R 5176 0 R 5177 0 R 5178 0 R 5179 0 R 5180 0 R 5181 0 R 5182 0 R 5183 0 R 5184 0 R 5185 0 R 5186 0 R 5187 0 R ] +>> endobj +5144 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 759.881 280.825 768.652] +/A << /S /GoTo /D (subsubsection.8.28.2.15) >> +>> endobj +5149 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 292.329 750.955] +/A << /S /GoTo /D (subsubsection.8.28.2.16) >> +>> endobj +5150 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.783 280.744 733.257] +/A << /S /GoTo /D (subsubsection.8.28.2.17) >> +>> endobj +5151 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 203.85 715.56] +/A << /S /GoTo /D (subsubsection.8.28.2.18) >> +>> endobj +5152 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 267.411 697.863] +/A << /S /GoTo /D (subsubsection.8.28.2.19) >> +>> endobj +5153 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 244.207 680.165] +/A << /S /GoTo /D (subsubsection.8.28.2.20) >> +>> endobj +5154 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 201.357 662.262] +/A << /S /GoTo /D (subsubsection.8.28.2.21) >> +>> endobj +5155 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.296 247.686 644.565] +/A << /S /GoTo /D (subsubsection.8.28.2.22) >> +>> endobj +5156 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 616.599 243.983 626.867] +/A << /S /GoTo /D (subsubsection.8.28.2.23) >> +>> endobj +5157 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 598.902 247.471 609.17] +/A << /S /GoTo /D (subsubsection.8.28.2.24) >> +>> endobj +5158 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 237.599 591.473] +/A << /S /GoTo /D (subsubsection.8.28.2.25) >> +>> endobj +5159 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 252.689 573.775] +/A << /S /GoTo /D (subsubsection.8.28.2.26) >> +>> endobj +5160 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 545.81 246.583 556.078] +/A << /S /GoTo /D (subsubsection.8.28.2.27) >> +>> endobj +5161 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 528.112 276.826 538.381] +/A << /S /GoTo /D (subsubsection.8.28.2.28) >> +>> endobj +5162 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 510.415 309.714 520.89] +/A << /S /GoTo /D (subsubsection.8.28.2.29) >> +>> endobj +5163 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 492.718 315.193 502.986] +/A << /S /GoTo /D (subsubsection.8.28.2.30) >> +>> endobj +5164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 230.758 485.495] +/A << /S /GoTo /D (subsubsection.8.28.2.31) >> +>> endobj +5165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 220.787 467.798] +/A << /S /GoTo /D (subsubsection.8.28.2.32) >> +>> endobj +5166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.626 248.053 450.1] +/A << /S /GoTo /D (subsubsection.8.28.2.33) >> +>> endobj +5167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.929 207.338 432.403] +/A << /S /GoTo /D (subsubsection.8.28.2.34) >> +>> endobj +5168 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 405.935 197.107 414.706] +/A << /S /GoTo /D (subsubsection.8.28.2.35) >> +>> endobj +5169 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 386.426 240.038 397.009] +/A << /S /GoTo /D (subsubsection.8.28.2.36) >> +>> endobj +5170 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 220.07 379.105] +/A << /S /GoTo /D (subsubsection.8.28.2.37) >> +>> endobj +5171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 221.289 361.408] +/A << /S /GoTo /D (subsubsection.8.28.2.38) >> +>> endobj +5172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.442 230.489 343.71] +/A << /S /GoTo /D (subsubsection.8.28.2.39) >> +>> endobj +5173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 315.745 227.01 326.219] +/A << /S /GoTo /D (subsubsection.8.28.2.40) >> +>> endobj +5174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 298.047 225.432 308.316] +/A << /S /GoTo /D (subsubsection.8.28.2.41) >> +>> endobj +5175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 240.217 290.825] +/A << /S /GoTo /D (subsubsection.8.28.2.42) >> +>> endobj +5176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.356 252.232 273.127] +/A << /S /GoTo /D (subsubsection.8.28.2.43) >> +>> endobj +5177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 244.848 254.59 255.224] +/A << /S /GoTo /D (subsubsection.8.28.2.44) >> +>> endobj +5178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 228.962 223.585 237.527] +/A << /S /GoTo /D (subsubsection.8.28.2.45) >> +>> endobj +5179 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 211.265 224.831 220.036] +/A << /S /GoTo /D (subsubsection.8.28.2.46) >> +>> endobj +5180 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 191.864 248.6 202.132] +/A << /S /GoTo /D (subsubsection.8.28.2.47) >> +>> endobj +5181 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 174.166 223.325 184.435] +/A << /S /GoTo /D (subsubsection.8.28.2.48) >> +>> endobj +5182 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 156.361 231.251 166.737] +/A << /S /GoTo /D (subsubsection.8.28.2.49) >> +>> endobj +5183 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.664 211.821 149.04] +/A << /S /GoTo /D (subsubsection.8.28.2.50) >> +>> endobj +5184 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 120.967 237.016 131.343] +/A << /S /GoTo /D (subsubsection.8.28.2.51) >> +>> endobj +5185 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 105.081 213.865 113.645] +/A << /S /GoTo /D (subsubsection.8.28.2.52) >> +>> endobj +5186 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.68 223.638 95.948] +/A << /S /GoTo /D (subsubsection.8.28.2.53) >> +>> endobj +5187 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 69.686 238.047 78.251] +/A << /S /GoTo /D (subsubsection.8.28.2.54) >> +>> endobj +5189 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5234 0 obj << +/Length 1230 +/Filter /FlateDecode +>> +stream +x[sH\ⅽyfcLU3s C 8뷡D['bfOHU* *!~:S:ί/8qag|pc`O[r|~9u?:`@9.{o휏;tޅ@x oЙ>:`)sP3l:u`yXf?ɴO+4G;ZECGJ& ɾA*^Ui>*YtG}19II +r\y?V'?Vy=}QpAgPV\X< YP?0ܴ2wDbZlMk dC|hGFz>tLW6cS\W=TY]zaE$n冁,kNhrV"!,\z Fj 1|94OGἘ̊j ka3'WިvT7;X{`CZodFWª%׃0zj + Og(?<Or ]| .Zgv41 4a4)}oAmmC^.UٓRku/TVT%yKuW;hˉcT0?l[.%GiE^m]NQ4MUOq1qF^oorK=FS(֮iBZ6A + +endstream +endobj +5233 0 obj << +/Type /Page +/Contents 5234 0 R +/Resources 5232 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5148 0 R +/Annots [ 5188 0 R 5192 0 R 5193 0 R 5194 0 R 5195 0 R 5196 0 R 5197 0 R 5198 0 R 5199 0 R 5200 0 R 5201 0 R 5202 0 R 5203 0 R 5204 0 R 5205 0 R 5206 0 R 5207 0 R 5208 0 R 5209 0 R 5210 0 R 5211 0 R 5212 0 R 5213 0 R 5214 0 R 5215 0 R 5216 0 R 5217 0 R 5218 0 R 5219 0 R 5220 0 R 5221 0 R 5222 0 R 5223 0 R 5224 0 R 5225 0 R 5226 0 R 5227 0 R 5228 0 R 5229 0 R 5230 0 R ] +>> endobj +5188 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.177 242.485 768.652] +/A << /S /GoTo /D (subsubsection.8.28.2.55) >> +>> endobj +5192 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 740.372 210.826 750.748] +/A << /S /GoTo /D (subsubsection.8.28.2.56) >> +>> endobj +5193 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 215.444 733.051] +/A << /S /GoTo /D (subsubsection.8.28.2.57) >> +>> endobj +5194 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 230.247 715.354] +/A << /S /GoTo /D (subsubsection.8.28.2.58) >> +>> endobj +5195 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 208.333 697.863] +/A << /S /GoTo /D (subsubsection.8.28.2.59) >> +>> endobj +5196 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 669.691 271.393 680.165] +/A << /S /GoTo /D (subsubsection.8.28.2.60) >> +>> endobj +5197 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 651.886 237.644 662.262] +/A << /S /GoTo /D (subsubsection.8.28.2.61) >> +>> endobj +5198 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 636 212.09 644.565] +/A << /S /GoTo /D (subsubsection.8.28.2.62) >> +>> endobj +5199 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 208.826 626.867] +/A << /S /GoTo /D (subsubsection.8.28.2.63) >> +>> endobj +5200 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 598.902 262.418 609.17] +/A << /S /GoTo /D (subsubsection.8.28.2.64) >> +>> endobj +5201 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 581.204 265.089 591.679] +/A << /S /GoTo /D (subsubsection.8.28.2.65) >> +>> endobj +5202 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.399 280.036 573.775] +/A << /S /GoTo /D (subsubsection.8.28.2.66) >> +>> endobj +5203 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 547.513 261.742 556.284] +/A << /S /GoTo /D (section.8.29) >> +>> endobj +5204 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 528.112 221.939 538.381] +/A << /S /GoTo /D (subsection.8.29.1) >> +>> endobj +5205 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 512.119 290.396 520.683] +/A << /S /GoTo /D (subsection.8.29.2) >> +>> endobj +5206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 492.718 242.683 502.986] +/A << /S /GoTo /D (subsubsection.8.29.2.1) >> +>> endobj +5207 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 475.021 250.475 485.495] +/A << /S /GoTo /D (subsubsection.8.29.2.2) >> +>> endobj +5208 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 459.027 274.131 467.592] +/A << /S /GoTo /D (subsection.8.29.3) >> +>> endobj +5209 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.518 273.15 450.1] +/A << /S /GoTo /D (subsubsection.8.29.3.1) >> +>> endobj +5210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.929 312.808 432.403] +/A << /S /GoTo /D (subsubsection.8.29.3.2) >> +>> endobj +5211 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.231 332.238 414.706] +/A << /S /GoTo /D (subsubsection.8.29.3.3) >> +>> endobj +5212 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 386.534 286.904 397.009] +/A << /S /GoTo /D (subsubsection.8.29.3.4) >> +>> endobj +5213 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 368.837 306.334 379.311] +/A << /S /GoTo /D (subsubsection.8.29.3.5) >> +>> endobj +5214 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.139 277.517 361.614] +/A << /S /GoTo /D (subsubsection.8.29.3.6) >> +>> endobj +5215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.442 296.946 343.917] +/A << /S /GoTo /D (subsubsection.8.29.3.7) >> +>> endobj +5216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 317.448 276.422 326.219] +/A << /S /GoTo /D (subsubsection.8.29.3.8) >> +>> endobj +5217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 298.047 272.038 308.522] +/A << /S /GoTo /D (subsubsection.8.29.3.9) >> +>> endobj +5218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 280.35 291.468 290.825] +/A << /S /GoTo /D (subsubsection.8.29.3.10) >> +>> endobj +5219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 262.545 277.29 273.127] +/A << /S /GoTo /D (section.8.30) >> +>> endobj +5220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 244.956 221.939 255.224] +/A << /S /GoTo /D (subsection.8.30.1) >> +>> endobj +5221 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 228.962 274.131 237.527] +/A << /S /GoTo /D (subsection.8.30.2) >> +>> endobj +5222 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 211.265 210.324 220.036] +/A << /S /GoTo /D (subsubsection.8.30.2.1) >> +>> endobj +5223 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.567 201.716 202.338] +/A << /S /GoTo /D (subsubsection.8.30.2.2) >> +>> endobj +5224 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 175.87 258.682 184.435] +/A << /S /GoTo /D (subsection.8.30.3) >> +>> endobj +5225 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 208.647 166.737] +/A << /S /GoTo /D (subsubsection.8.30.3.1) >> +>> endobj +5226 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 140.475 221.648 149.04] +/A << /S /GoTo /D (subsubsection.8.30.3.2) >> +>> endobj +5227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 232.605 131.343] +/A << /S /GoTo /D (subsubsection.8.30.3.3) >> +>> endobj +5228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 103.377 238.616 113.645] +/A << /S /GoTo /D (subsection.8.30.4) >> +>> endobj +5229 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 87.383 200.909 95.948] +/A << /S /GoTo /D (subsubsection.8.30.4.1) >> +>> endobj +5230 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 67.875 258.819 78.457] +/A << /S /GoTo /D (section.8.31) >> +>> endobj +5232 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5277 0 obj << +/Length 1205 +/Filter /FlateDecode +>> +stream +xKW6^ċg ÜPiYGD2 -9DS$:,|Eǯ>`~G q0 8KPDa0ݯ_CJ/֧/Aus<Ձb #pM;ןA0> GQC,(2J ˻B\e:g6AXG$W[(\Lo\f̶+O˟M+ =CvrN-d ǮlR Y82ƍj{.BGwsUǕ믰Bb c.gCe4qUj>"PTW +&8b9 +fB=P&7BOҲ4WwLL8Fs5E H\> W! ksV qv[dRdLHlgGN"\eV= C_-uUMN t{^VfLZB`^mآRlc)/N^I,HV[8TG!їhQZnfMRvc0^a+?RzBXp3#:N]5hGRNzpQ|Б_CvAӖ 5EcĝXQOZ%Ij䌪Ǜ?uD[⃦f "oEf)ef~'~YnjTt2IJr=ݦ}bkk*[+* [L?6:$ĤkЄjNoE~{NA_L +K7D$iI&GB]nhHUs*5/}a=VϙUNCm @dsk+Փ#x[vRUNS 7h_ j0m{ ",QZT# + +q1#oTiA͛&T5j@Uxmv5>IMjWv_E*ĢI9>KPr?wS +endstream +endobj +5276 0 obj << +/Type /Page +/Contents 5277 0 R +/Resources 5275 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5148 0 R +/Annots [ 5231 0 R 5235 0 R 5236 0 R 5237 0 R 5238 0 R 5239 0 R 5240 0 R 5241 0 R 5242 0 R 5243 0 R 5244 0 R 5245 0 R 5246 0 R 5247 0 R 5248 0 R 5249 0 R 5250 0 R 5251 0 R 5252 0 R 5253 0 R 5254 0 R 5255 0 R 5256 0 R 5257 0 R 5258 0 R 5259 0 R 5260 0 R 5261 0 R 5262 0 R 5263 0 R 5264 0 R 5265 0 R 5266 0 R 5267 0 R 5268 0 R 5269 0 R 5270 0 R 5271 0 R 5272 0 R 5273 0 R ] +>> endobj +5231 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 758.177 221.939 768.446] +/A << /S /GoTo /D (subsection.8.31.1) >> +>> endobj +5235 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 742.184 303.298 750.955] +/A << /S /GoTo /D (subsection.8.31.2) >> +>> endobj +5236 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.675 261.897 733.257] +/A << /S /GoTo /D (subsubsection.8.31.2.1) >> +>> endobj +5237 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 706.789 274.131 715.354] +/A << /S /GoTo /D (subsection.8.31.3) >> +>> endobj +5238 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 687.281 215.362 697.863] +/A << /S /GoTo /D (subsubsection.8.31.3.1) >> +>> endobj +5239 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 671.394 258.682 679.959] +/A << /S /GoTo /D (subsection.8.31.4) >> +>> endobj +5240 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 651.994 229.09 662.262] +/A << /S /GoTo /D (subsubsection.8.31.4.1) >> +>> endobj +5241 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 636 209.83 644.565] +/A << /S /GoTo /D (subsubsection.8.31.4.2) >> +>> endobj +5242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 616.599 238.616 626.867] +/A << /S /GoTo /D (subsection.8.31.5) >> +>> endobj +5243 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 598.902 223.773 609.17] +/A << /S /GoTo /D (subsubsection.8.31.5.1) >> +>> endobj +5244 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 582.908 239.542 591.679] +/A << /S /GoTo /D (section.8.32) >> +>> endobj +5245 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 563.507 221.939 573.775] +/A << /S /GoTo /D (subsection.8.32.1) >> +>> endobj +5246 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 547.513 274.131 556.078] +/A << /S /GoTo /D (subsection.8.32.2) >> +>> endobj +5247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 529.816 267.949 538.587] +/A << /S /GoTo /D (subsubsection.8.32.2.1) >> +>> endobj +5248 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 242.53 520.683] +/A << /S /GoTo /D (subsubsection.8.32.2.2) >> +>> endobj +5249 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 492.61 317.389 503.192] +/A << /S /GoTo /D (subsubsection.8.32.2.3) >> +>> endobj +5250 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 250.69 485.495] +/A << /S /GoTo /D (subsubsection.8.32.2.4) >> +>> endobj +5251 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 293.01 467.798] +/A << /S /GoTo /D (subsubsection.8.32.2.5) >> +>> endobj +5252 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 441.329 252.599 450.1] +/A << /S /GoTo /D (subsubsection.8.32.2.6) >> +>> endobj +5253 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.821 253.604 432.403] +/A << /S /GoTo /D (subsubsection.8.32.2.7) >> +>> endobj +5254 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.124 271.123 414.706] +/A << /S /GoTo /D (subsubsection.8.32.2.8) >> +>> endobj +5255 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 233.241 397.009] +/A << /S /GoTo /D (subsubsection.8.32.2.9) >> +>> endobj +5256 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 233.241 379.311] +/A << /S /GoTo /D (subsubsection.8.32.2.10) >> +>> endobj +5257 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 233.241 361.614] +/A << /S /GoTo /D (subsubsection.8.32.2.11) >> +>> endobj +5258 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.442 213.04 343.71] +/A << /S /GoTo /D (subsubsection.8.32.2.12) >> +>> endobj +5259 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 315.745 213.04 326.013] +/A << /S /GoTo /D (subsubsection.8.32.2.13) >> +>> endobj +5260 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 298.047 223.002 308.316] +/A << /S /GoTo /D (subsubsection.8.32.2.14) >> +>> endobj +5261 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 280.35 268.398 290.825] +/A << /S /GoTo /D (subsubsection.8.32.2.15) >> +>> endobj +5262 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.653 268.398 273.127] +/A << /S /GoTo /D (subsubsection.8.32.2.16) >> +>> endobj +5263 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 246.659 226.768 255.224] +/A << /S /GoTo /D (subsubsection.8.32.2.17) >> +>> endobj +5264 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 228.962 239.32 237.733] +/A << /S /GoTo /D (subsubsection.8.32.2.18) >> +>> endobj +5265 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 209.561 275.365 220.036] +/A << /S /GoTo /D (subsubsection.8.32.2.19) >> +>> endobj +5266 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.567 229.484 202.132] +/A << /S /GoTo /D (subsubsection.8.32.2.20) >> +>> endobj +5267 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 174.166 318.949 184.641] +/A << /S /GoTo /D (subsubsection.8.32.2.21) >> +>> endobj +5268 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 156.361 214.816 166.944] +/A << /S /GoTo /D (subsubsection.8.32.2.22) >> +>> endobj +5269 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 140.475 234.739 149.246] +/A << /S /GoTo /D (subsubsection.8.32.2.23) >> +>> endobj +5270 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 121.074 247.193 131.549] +/A << /S /GoTo /D (subsubsection.8.32.2.24) >> +>> endobj +5271 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 105.081 223.791 113.645] +/A << /S /GoTo /D (subsubsection.8.32.2.25) >> +>> endobj +5272 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 87.383 223.791 95.948] +/A << /S /GoTo /D (subsubsection.8.32.2.26) >> +>> endobj +5273 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 275.122 78.457] +/A << /S /GoTo /D (subsubsection.8.32.2.27) >> +>> endobj +5275 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5320 0 obj << +/Length 1128 +/Filter /FlateDecode +>> +stream +xMW8^&xa}28$Y0][8 +?b;hŽ{+:9M:<>ؙ8 RȥЙDUwpy19{?&gK8׿]<{z㼽s<ׁ8p .G&3cvwuXO65PbP.X {3A@wY vWB OٯZB *w}CRm-7c 2d"Pb$eR `^UZz/衖3QF2ibG=E-[Ԡg V |meιz-RcVr&+ I>[ĭ7jN$kй s+*Ycv<`R{2]\t*P\|$B58(di|-|9WU$NUÎq. H" ݶ@R4x.KHi-d1Kr?Ee2dsĿ_ի V +M&M)rO km𞩰-R4=]K gA>K_FSd\d\]Xsam:` w LyKh$ZA㫄2cF 5յf:IQMԼ+3?Cndɚ`t w7$鷌g&ء`is'ӠΙh^j )5ut MQ` %Xf_ +%CY۷B>>"ܚ$ϳ %E./uAzH9;Lj}X$.h瀷^cr3F_Er / +̝ *Enouoi5?ryML.h'B.jEmJE%tT:lYW$grVyMm[=3]}Oc,om^4?WR?IKU&ʥ +endstream +endobj +5319 0 obj << +/Type /Page +/Contents 5320 0 R +/Resources 5318 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5148 0 R +/Annots [ 5274 0 R 5278 0 R 5279 0 R 5280 0 R 5281 0 R 5282 0 R 5283 0 R 5284 0 R 5285 0 R 5286 0 R 5287 0 R 5288 0 R 5289 0 R 5290 0 R 5291 0 R 5292 0 R 5293 0 R 5294 0 R 5295 0 R 5296 0 R 5297 0 R 5298 0 R 5299 0 R 5300 0 R 5301 0 R 5302 0 R 5303 0 R 5304 0 R 5305 0 R 5306 0 R 5307 0 R 5308 0 R 5309 0 R 5310 0 R 5311 0 R 5312 0 R 5313 0 R 5314 0 R 5315 0 R 5316 0 R ] +>> endobj +5274 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.177 223.02 768.446] +/A << /S /GoTo /D (subsubsection.8.32.2.28) >> +>> endobj +5278 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 740.48 223.02 750.748] +/A << /S /GoTo /D (subsubsection.8.32.2.29) >> +>> endobj +5279 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 259.647 733.257] +/A << /S /GoTo /D (subsubsection.8.32.2.30) >> +>> endobj +5280 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 259.647 715.56] +/A << /S /GoTo /D (subsubsection.8.32.2.31) >> +>> endobj +5281 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 256.661 697.656] +/A << /S /GoTo /D (subsubsection.8.32.2.32) >> +>> endobj +5282 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 256.661 679.959] +/A << /S /GoTo /D (subsubsection.8.32.2.33) >> +>> endobj +5283 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 256.661 662.262] +/A << /S /GoTo /D (subsubsection.8.32.2.34) >> +>> endobj +5284 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 636 222.778 644.565] +/A << /S /GoTo /D (subsubsection.8.32.2.35) >> +>> endobj +5285 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 222.778 626.867] +/A << /S /GoTo /D (subsubsection.8.32.2.36) >> +>> endobj +5286 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 598.902 230.596 609.17] +/A << /S /GoTo /D (subsubsection.8.32.2.37) >> +>> endobj +5287 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 230.354 591.473] +/A << /S /GoTo /D (subsubsection.8.32.2.38) >> +>> endobj +5288 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 565.211 223.298 573.775] +/A << /S /GoTo /D (subsubsection.8.32.2.39) >> +>> endobj +5289 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 547.513 223.298 556.078] +/A << /S /GoTo /D (subsubsection.8.32.2.40) >> +>> endobj +5290 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 529.816 274.638 538.587] +/A << /S /GoTo /D (subsubsection.8.32.2.41) >> +>> endobj +5291 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 510.307 284.16 520.89] +/A << /S /GoTo /D (subsubsection.8.32.2.42) >> +>> endobj +5292 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 494.421 284.519 503.192] +/A << /S /GoTo /D (subsubsection.8.32.2.43) >> +>> endobj +5293 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 228.041 485.289] +/A << /S /GoTo /D (subsubsection.8.32.2.44) >> +>> endobj +5294 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 225.279 467.592] +/A << /S /GoTo /D (subsubsection.8.32.2.45) >> +>> endobj +5295 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.626 266.64 449.894] +/A << /S /GoTo /D (subsubsection.8.32.2.46) >> +>> endobj +5296 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.821 289.594 432.403] +/A << /S /GoTo /D (subsubsection.8.32.2.47) >> +>> endobj +5297 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 405.935 234.237 414.5] +/A << /S /GoTo /D (subsubsection.8.32.2.48) >> +>> endobj +5298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 386.534 312.512 397.009] +/A << /S /GoTo /D (subsubsection.8.32.2.49) >> +>> endobj +5299 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 238.854 379.311] +/A << /S /GoTo /D (subsubsection.8.32.2.50) >> +>> endobj +5300 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 238.854 361.614] +/A << /S /GoTo /D (subsubsection.8.32.2.51) >> +>> endobj +5301 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.442 271.249 343.917] +/A << /S /GoTo /D (subsubsection.8.32.2.52) >> +>> endobj +5302 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 315.637 285.577 326.219] +/A << /S /GoTo /D (subsubsection.8.32.2.53) >> +>> endobj +5303 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 239.733 308.522] +/A << /S /GoTo /D (subsubsection.8.32.2.54) >> +>> endobj +5304 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 246.197 290.825] +/A << /S /GoTo /D (subsubsection.8.32.2.55) >> +>> endobj +5305 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.653 292.947 273.127] +/A << /S /GoTo /D (subsubsection.8.32.2.56) >> +>> endobj +5306 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 244.848 267.958 255.43] +/A << /S /GoTo /D (subsubsection.8.32.2.57) >> +>> endobj +5307 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 227.151 267.958 237.733] +/A << /S /GoTo /D (subsubsection.8.32.2.58) >> +>> endobj +5308 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 209.453 261.494 220.036] +/A << /S /GoTo /D (subsubsection.8.32.2.59) >> +>> endobj +5309 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 191.756 261.494 202.338] +/A << /S /GoTo /D (subsubsection.8.32.2.60) >> +>> endobj +5310 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 175.87 251.102 184.641] +/A << /S /GoTo /D (subsubsection.8.32.2.61) >> +>> endobj +5311 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 253.989 166.737] +/A << /S /GoTo /D (subsubsection.8.32.2.62) >> +>> endobj +5312 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.772 216.528 149.04] +/A << /S /GoTo /D (subsubsection.8.32.2.63) >> +>> endobj +5313 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 122.778 258.682 131.343] +/A << /S /GoTo /D (subsection.8.32.3) >> +>> endobj +5314 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 103.27 262.382 113.645] +/A << /S /GoTo /D (subsubsection.8.32.3.1) >> +>> endobj +5315 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.68 273.616 96.154] +/A << /S /GoTo /D (subsubsection.8.32.3.2) >> +>> endobj +5316 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.875 215.318 78.251] +/A << /S /GoTo /D (subsubsection.8.32.3.3) >> +>> endobj +5318 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5363 0 obj << +/Length 1218 +/Filter /FlateDecode +>> +stream +x]s8+4f%$!ѻI:4vt:+6[,eH,dW1=9L|اa^8x,^Ĺ%I~:`Cuxw<sqTף01;w8u +m͹ Fj?uF̌Mϫ{E{x1e=awb?`/6W;WL`s v;ևUR/Eb(ΣE"E͑͑mp wE1tu&Ojd!ňg!xQ$bj#& یI{Ueʨ-D<ˤHG:-b6sVFVP> +mHf [P.]j3kN/ΕmQ.tMZ{_D,kfc¬?mzNrUZj U_|ŤH ;lCw?QIug3 e i4f )pMcЙ/3qLZh3)Mz?LvBkfYK~^ +Qۻk9,u,CԺz|[c*ҧE›g ZP/ְ{PMYx> ~gS%.xu˵"*]ndzZ> endobj +5317 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.989 249.685 768.652] +/A << /S /GoTo /D (subsubsection.8.32.3.4) >> +>> endobj +5321 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 249.192 750.955] +/A << /S /GoTo /D (subsubsection.8.32.3.5) >> +>> endobj +5322 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 232.524 733.257] +/A << /S /GoTo /D (subsubsection.8.32.3.6) >> +>> endobj +5323 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 704.978 269.68 715.56] +/A << /S /GoTo /D (subsubsection.8.32.3.7) >> +>> endobj +5324 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 687.388 315.193 697.863] +/A << /S /GoTo /D (subsubsection.8.32.3.8) >> +>> endobj +5325 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 669.691 339.841 680.165] +/A << /S /GoTo /D (subsubsection.8.32.3.9) >> +>> endobj +5326 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 651.994 320.456 662.468] +/A << /S /GoTo /D (subsubsection.8.32.3.10) >> +>> endobj +5327 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 636 234.479 644.771] +/A << /S /GoTo /D (subsubsection.8.32.3.11) >> +>> endobj +5328 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 616.491 291.477 627.074] +/A << /S /GoTo /D (subsubsection.8.32.3.12) >> +>> endobj +5329 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 598.794 305.85 609.376] +/A << /S /GoTo /D (subsubsection.8.32.3.13) >> +>> endobj +5330 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 581.204 271.473 591.679] +/A << /S /GoTo /D (subsubsection.8.32.3.14) >> +>> endobj +5331 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 565.211 250.421 573.982] +/A << /S /GoTo /D (subsubsection.8.32.3.15) >> +>> endobj +5332 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 545.81 302.828 556.284] +/A << /S /GoTo /D (subsubsection.8.32.3.16) >> +>> endobj +5333 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 529.816 230.023 538.381] +/A << /S /GoTo /D (subsubsection.8.32.3.17) >> +>> endobj +5334 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 510.415 238.616 520.683] +/A << /S /GoTo /D (subsection.8.32.4) >> +>> endobj +5335 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 494.421 227.377 502.986] +/A << /S /GoTo /D (subsubsection.8.32.4.1) >> +>> endobj +5336 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 475.021 290.105 485.495] +/A << /S /GoTo /D (subsubsection.8.32.4.2) >> +>> endobj +5337 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.323 240.468 467.592] +/A << /S /GoTo /D (subsubsection.8.32.4.3) >> +>> endobj +5338 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.626 280.09 450.1] +/A << /S /GoTo /D (subsubsection.8.32.4.4) >> +>> endobj +5339 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 423.632 223.791 432.197] +/A << /S /GoTo /D (subsubsection.8.32.4.5) >> +>> endobj +5340 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.231 265.654 414.5] +/A << /S /GoTo /D (subsubsection.8.32.4.6) >> +>> endobj +5341 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 386.426 225.781 396.802] +/A << /S /GoTo /D (subsubsection.8.32.4.7) >> +>> endobj +5342 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 246.717 379.311] +/A << /S /GoTo /D (subsubsection.8.32.4.8) >> +>> endobj +5343 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 279.605 361.614] +/A << /S /GoTo /D (subsubsection.8.32.4.9) >> +>> endobj +5344 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.442 243.266 343.917] +/A << /S /GoTo /D (subsubsection.8.32.4.10) >> +>> endobj +5345 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 315.745 279.139 326.219] +/A << /S /GoTo /D (subsubsection.8.32.4.11) >> +>> endobj +5346 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 298.047 282.627 308.522] +/A << /S /GoTo /D (subsubsection.8.32.4.12) >> +>> endobj +5347 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 242.216 290.825] +/A << /S /GoTo /D (subsubsection.8.32.4.13) >> +>> endobj +5348 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.356 254.312 273.127] +/A << /S /GoTo /D (subsubsection.8.32.4.14) >> +>> endobj +5349 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 244.956 270.182 255.43] +/A << /S /GoTo /D (subsubsection.8.32.4.15) >> +>> endobj +5350 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 228.962 212.045 237.527] +/A << /S /GoTo /D (subsubsection.8.32.4.16) >> +>> endobj +5351 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 209.453 241.947 219.829] +/A << /S /GoTo /D (subsubsection.8.32.4.17) >> +>> endobj +5352 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 191.756 234.524 202.132] +/A << /S /GoTo /D (subsubsection.8.32.4.18) >> +>> endobj +5353 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 175.87 213.309 184.435] +/A << /S /GoTo /D (subsubsection.8.32.4.19) >> +>> endobj +5354 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 156.469 229.996 166.737] +/A << /S /GoTo /D (subsubsection.8.32.4.20) >> +>> endobj +5355 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 140.475 239.213 149.246] +/A << /S /GoTo /D (subsubsection.8.32.4.21) >> +>> endobj +5356 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 120.967 285.577 131.549] +/A << /S /GoTo /D (subsubsection.8.32.4.22) >> +>> endobj +5357 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 105.081 287.048 113.852] +/A << /S /GoTo /D (subsubsection.8.32.4.23) >> +>> endobj +5358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.68 203.581 95.948] +/A << /S /GoTo /D (subsubsection.8.32.4.24) >> +>> endobj +5359 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 242.45 78.457] +/A << /S /GoTo /D (subsubsection.8.32.4.25) >> +>> endobj +5361 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5406 0 obj << +/Length 1250 +/Filter /FlateDecode +>> +stream +xMw8Œ':q:*Ӆ@.d~Ip'9 l}>f?"nȚ]X!pIXafs}=N/ƞ r}:FGρ'G^@l ("֯}:|fZ:Ţങ(M @N*qt g3Z +V҄增g0:C&xQӗ m:kzDaj,A;Lʘ95Ļ t脉_Wqqo_ +*R$qys;euNaD;"_Jr6s &64p%+&)VM(@f#O84^l1/˃Q.Y3nBIі e'4!G}ȏOcG0>n6hS^QB%|2:Z}R6ԷU 5C!8MUS&mI0YF{z`) +3|G&x:赠ljmOМ }:^ xL&9r7®ȪIׁ~O@o +{a Vjp}Wud4[jy&Ah*d=ٶULrQTYV,zw nHND O|19]TbR*uޝҕ,ޣzuoBF ٺ2CEa"::*4y~DKBY0=0F> "Յ +y כFD}PC*#$" {!XIFܧ Մϋs } RziRegEee=~r.k}/ىEeGZE0͎#M +I7#{o5֜X)lk9tsM3-'Hņl" `gZ-/ m2AQL%Ь2;OFL(X&E{0]2|Wvv +h +vI-s4|x9Ri& zt6O3p_n7rM{'&݌Xq{]o.XjZ0^MþM}d9+hsVg6Վ-^ЌwEmUϓ?vUnm_> endobj +5360 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 759.881 232.739 768.652] +/A << /S /GoTo /D (subsubsection.8.32.4.26) >> +>> endobj +5364 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 305.231 750.955] +/A << /S /GoTo /D (subsubsection.8.32.4.27) >> +>> endobj +5365 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 283.936 733.257] +/A << /S /GoTo /D (subsubsection.8.32.4.28) >> +>> endobj +5366 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 228.767 715.56] +/A << /S /GoTo /D (subsubsection.8.32.4.29) >> +>> endobj +5367 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 687.388 232.3 697.656] +/A << /S /GoTo /D (subsubsection.8.32.4.30) >> +>> endobj +5368 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 669.691 277.687 680.165] +/A << /S /GoTo /D (subsubsection.8.32.4.31) >> +>> endobj +5369 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 651.994 206.388 662.262] +/A << /S /GoTo /D (subsubsection.8.32.4.32) >> +>> endobj +5370 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.296 220.339 644.565] +/A << /S /GoTo /D (subsubsection.8.32.4.33) >> +>> endobj +5371 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 616.599 230.301 626.867] +/A << /S /GoTo /D (subsubsection.8.32.4.34) >> +>> endobj +5372 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 226.059 609.376] +/A << /S /GoTo /D (subsubsection.8.32.4.35) >> +>> endobj +5373 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.59 240.54 591.679] +/A << /S /GoTo /D (subsubsection.8.32.4.36) >> +>> endobj +5374 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 565.211 288.868 573.982] +/A << /S /GoTo /D (subsubsection.8.32.4.37) >> +>> endobj +5375 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 547.513 202.846 556.078] +/A << /S /GoTo /D (subsubsection.8.32.4.38) >> +>> endobj +5376 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 529.816 220.796 538.381] +/A << /S /GoTo /D (subsubsection.8.32.4.39) >> +>> endobj +5377 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 267.134 520.89] +/A << /S /GoTo /D (subsubsection.8.32.4.40) >> +>> endobj +5378 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 494.421 208.871 503.192] +/A << /S /GoTo /D (subsubsection.8.32.4.41) >> +>> endobj +5379 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 241.759 485.495] +/A << /S /GoTo /D (subsubsection.8.32.4.42) >> +>> endobj +5380 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.323 253.209 467.798] +/A << /S /GoTo /D (subsubsection.8.32.4.43) >> +>> endobj +5381 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 441.329 199.358 449.894] +/A << /S /GoTo /D (subsubsection.8.32.4.44) >> +>> endobj +5382 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 423.632 285.873 432.403] +/A << /S /GoTo /D (subsubsection.8.32.4.45) >> +>> endobj +5383 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 404.124 259.94 414.706] +/A << /S /GoTo /D (section.8.33) >> +>> endobj +5384 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 388.238 274.131 396.802] +/A << /S /GoTo /D (subsection.8.33.1) >> +>> endobj +5385 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 368.729 227.413 379.311] +/A << /S /GoTo /D (subsubsection.8.33.1.1) >> +>> endobj +5386 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 233.017 361.408] +/A << /S /GoTo /D (subsubsection.8.33.1.2) >> +>> endobj +5387 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 335.146 258.682 343.71] +/A << /S /GoTo /D (subsection.8.33.2) >> +>> endobj +5388 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 315.745 217.801 326.013] +/A << /S /GoTo /D (subsubsection.8.33.2.1) >> +>> endobj +5389 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 297.94 259.664 308.316] +/A << /S /GoTo /D (subsubsection.8.33.2.2) >> +>> endobj +5390 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 280.243 274.638 290.618] +/A << /S /GoTo /D (subsubsection.8.33.2.3) >> +>> endobj +5391 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.356 223.549 272.921] +/A << /S /GoTo /D (subsubsection.8.33.2.4) >> +>> endobj +5392 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 244.956 238.616 255.224] +/A << /S /GoTo /D (subsection.8.33.3) >> +>> endobj +5393 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 227.151 228.767 237.527] +/A << /S /GoTo /D (subsubsection.8.33.3.1) >> +>> endobj +5394 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 211.265 203.85 219.829] +/A << /S /GoTo /D (subsubsection.8.33.3.2) >> +>> endobj +5395 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 191.864 231.58 202.338] +/A << /S /GoTo /D (section.8.34) >> +>> endobj +5396 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 174.166 221.939 184.435] +/A << /S /GoTo /D (subsection.8.34.1) >> +>> endobj +5397 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 158.173 303.298 166.944] +/A << /S /GoTo /D (subsection.8.34.2) >> +>> endobj +5398 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.772 235.797 149.04] +/A << /S /GoTo /D (subsubsection.8.34.2.1) >> +>> endobj +5399 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 122.778 274.131 131.343] +/A << /S /GoTo /D (subsection.8.34.3) >> +>> endobj +5400 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 103.377 228.678 113.852] +/A << /S /GoTo /D (subsubsection.8.34.3.1) >> +>> endobj +5401 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.68 228.678 96.154] +/A << /S /GoTo /D (subsubsection.8.34.3.2) >> +>> endobj +5402 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 209.83 78.251] +/A << /S /GoTo /D (subsubsection.8.34.3.3) >> +>> endobj +5404 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5450 0 obj << +/Length 1065 +/Filter /FlateDecode +>> +stream +xKs: +-ޒ%!M%v1 +[lȦCxIVј92#IAMW2` + TB(0 w{| 1HH`79 {~yugpіDyos.?յ!a*NͶ%;XX8.KŲOt̙Vs uC:[)"i".XV6UlpdeД1Gx~b3͋lymQĺ1z 0rCZz€܋QN aցNd;)J b)I/KVM:-"eDCn {'v(v̢K7ux"$5D8:OG/=w[Aq|x}UkUK #1.kA +8YYjn5{O^#~U 8Ǫpz14 "5 xU-"~tq꩚vŧ0/fЬV8:D0Os;U47ʑ38{op%c۪4%דŐNjJLW2nq JElsx/9R76 IJ~DDiD0CKW%4m;d)XNQJ̙Pg7Dzuwap=60[зeէYuKlK׫|z}/];櫀f+!l̖.C`0 +endstream +endobj +5449 0 obj << +/Type /Page +/Contents 5450 0 R +/Resources 5448 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5407 0 R +/Annots [ 5403 0 R 5408 0 R 5409 0 R 5410 0 R 5411 0 R 5412 0 R 5413 0 R 5414 0 R 5415 0 R 5416 0 R 5417 0 R 5418 0 R 5419 0 R 5420 0 R 5421 0 R 5422 0 R 5423 0 R 5424 0 R 5425 0 R 5426 0 R 5427 0 R 5428 0 R 5429 0 R 5430 0 R 5431 0 R 5432 0 R 5433 0 R 5434 0 R 5435 0 R 5436 0 R 5437 0 R 5438 0 R 5439 0 R 5440 0 R 5441 0 R 5442 0 R 5443 0 R 5444 0 R 5445 0 R 5446 0 R ] +>> endobj +5403 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.177 209.83 768.446] +/A << /S /GoTo /D (subsubsection.8.34.3.4) >> +>> endobj +5408 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 740.48 209.83 750.748] +/A << /S /GoTo /D (subsubsection.8.34.3.5) >> +>> endobj +5409 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 199.86 733.051] +/A << /S /GoTo /D (subsubsection.8.34.3.6) >> +>> endobj +5410 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 196.874 715.56] +/A << /S /GoTo /D (subsubsection.8.34.3.7) >> +>> endobj +5411 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 239.231 697.863] +/A << /S /GoTo /D (subsubsection.8.34.3.8) >> +>> endobj +5412 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 215.04 680.165] +/A << /S /GoTo /D (subsubsection.8.34.3.9) >> +>> endobj +5413 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 228.22 662.468] +/A << /S /GoTo /D (subsubsection.8.34.3.10) >> +>> endobj +5414 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 636 228.22 644.771] +/A << /S /GoTo /D (subsubsection.8.34.3.11) >> +>> endobj +5415 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 616.599 267.985 627.074] +/A << /S /GoTo /D (subsubsection.8.34.3.12) >> +>> endobj +5416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 598.794 215.362 609.376] +/A << /S /GoTo /D (subsubsection.8.34.3.13) >> +>> endobj +5417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 581.097 229.807 591.679] +/A << /S /GoTo /D (subsubsection.8.34.3.14) >> +>> endobj +5418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 565.211 258.682 573.775] +/A << /S /GoTo /D (subsection.8.34.4) >> +>> endobj +5419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 547.513 210.826 556.078] +/A << /S /GoTo /D (subsubsection.8.34.4.1) >> +>> endobj +5420 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 528.005 222.706 538.587] +/A << /S /GoTo /D (subsubsection.8.34.4.2) >> +>> endobj +5421 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 510.415 238.616 520.683] +/A << /S /GoTo /D (subsection.8.34.5) >> +>> endobj +5422 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 492.718 233.6 502.986] +/A << /S /GoTo /D (subsubsection.8.34.5.1) >> +>> endobj +5423 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 475.021 232.604 485.289] +/A << /S /GoTo /D (subsubsection.8.34.5.2) >> +>> endobj +5424 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.323 254.527 467.798] +/A << /S /GoTo /D (subsubsection.8.34.5.3) >> +>> endobj +5425 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.626 252.536 449.894] +/A << /S /GoTo /D (subsubsection.8.34.5.4) >> +>> endobj +5426 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 423.632 191.387 432.197] +/A << /S /GoTo /D (subsubsection.8.34.5.5) >> +>> endobj +5427 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 405.935 220.07 414.5] +/A << /S /GoTo /D (subsubsection.8.34.5.6) >> +>> endobj +5428 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 219.568 396.802] +/A << /S /GoTo /D (subsubsection.8.34.5.7) >> +>> endobj +5429 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 210.324 379.105] +/A << /S /GoTo /D (subsubsection.8.34.5.8) >> +>> endobj +5430 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 239.715 361.614] +/A << /S /GoTo /D (subsubsection.8.34.5.9) >> +>> endobj +5431 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 335.146 239.213 343.917] +/A << /S /GoTo /D (subsubsection.8.34.5.10) >> +>> endobj +5432 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 317.448 204.845 326.013] +/A << /S /GoTo /D (subsubsection.8.34.5.11) >> +>> endobj +5433 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 223.585 308.316] +/A << /S /GoTo /D (subsubsection.8.34.5.12) >> +>> endobj +5434 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 208.826 290.618] +/A << /S /GoTo /D (subsubsection.8.34.5.13) >> +>> endobj +5435 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.356 207.338 272.921] +/A << /S /GoTo /D (subsubsection.8.34.5.14) >> +>> endobj +5436 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 244.848 277.191 255.43] +/A << /S /GoTo /D (section.8.35) >> +>> endobj +5437 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 227.258 221.939 237.527] +/A << /S /GoTo /D (subsection.8.35.1) >> +>> endobj +5438 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 211.265 274.131 219.829] +/A << /S /GoTo /D (subsection.8.35.2) >> +>> endobj +5439 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.567 276.422 202.338] +/A << /S /GoTo /D (subsubsection.8.35.2.1) >> +>> endobj +5440 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 174.059 265.732 184.641] +/A << /S /GoTo /D (section.8.36) >> +>> endobj +5441 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 156.469 221.939 166.737] +/A << /S /GoTo /D (subsection.8.36.1) >> +>> endobj +5442 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 140.475 274.131 149.04] +/A << /S /GoTo /D (subsection.8.36.2) >> +>> endobj +5443 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 276.422 131.549] +/A << /S /GoTo /D (subsubsection.8.36.2.1) >> +>> endobj +5444 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 105.081 241.003 113.852] +/A << /S /GoTo /D (section.8.37) >> +>> endobj +5445 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 85.68 221.939 95.948] +/A << /S /GoTo /D (subsection.8.37.1) >> +>> endobj +5446 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 69.686 274.131 78.251] +/A << /S /GoTo /D (subsection.8.37.2) >> +>> endobj +5448 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5493 0 obj << +/Length 1079 +/Filter /FlateDecode +>> +stream +xr6z +:B(@g:'Xtp`(D\ <}A%tEQ'2VH<:+x[AsK "1"8:=ߜģsP![wwYqu&=*x5PFg{ Qܖߜd  >P5-7(QkA&%NDp( +NwŐ pw>TC[ X@d,ymh!P01 +˿R,>exbn?gڡ`ꘞߌ1l{ JRVB=UDBTgt9չq6˷A$Kx%Yn]wRr_Bk +KcfQ2(6w v.]l' >jZ$DyntNewgއX)bpQr4b&M݉pTnBSlB!pȑ +>\l52sL]z4I wz/C=y'( +eikmlU!³#JLOw7Yĺ#@wYB߼hFRHCq-Kcxd[2OK +1sG;isJ!Kz54+Ӆ]PXl"ˆ j+£eZF:w1Ha/'5*J&ٷ"hB2oO<0g9sދ1 +DR^G~M<见&=A9ɸ)=|ϱfgQoTߤoCrL]|v.JƲ[%lEeZf4[o~3u]9[VW'lowuU9[| BWCoQ.REpGK>~ g ͍|u~J7阀V{MWa$8]{2| :ԖQ7UZȩ;)r!̫+Bh药;?ϳ:>}kĖʞU\^n[6?6 > endobj +5447 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 759.881 210.324 768.652] +/A << /S /GoTo /D (subsubsection.8.37.2.1) >> +>> endobj +5451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 201.716 750.955] +/A << /S /GoTo /D (subsubsection.8.37.2.2) >> +>> endobj +5452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 258.347 733.257] +/A << /S /GoTo /D (subsubsection.8.37.2.3) >> +>> endobj +5453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 705.085 211.328 715.354] +/A << /S /GoTo /D (subsubsection.8.37.2.4) >> +>> endobj +5454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 689.092 258.682 697.656] +/A << /S /GoTo /D (subsection.8.37.3) >> +>> endobj +5455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 223.611 680.165] +/A << /S /GoTo /D (subsubsection.8.37.3.1) >> +>> endobj +5456 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 253.505 662.468] +/A << /S /GoTo /D (subsubsection.8.37.3.2) >> +>> endobj +5457 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 636 213.318 644.771] +/A << /S /GoTo /D (subsubsection.8.37.3.3) >> +>> endobj +5458 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 219.792 626.867] +/A << /S /GoTo /D (subsubsection.8.37.3.4) >> +>> endobj +5459 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 245.068 609.376] +/A << /S /GoTo /D (subsubsection.8.37.3.5) >> +>> endobj +5460 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 236.648 591.679] +/A << /S /GoTo /D (subsubsection.8.37.3.6) >> +>> endobj +5461 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 565.211 221.648 573.775] +/A << /S /GoTo /D (subsubsection.8.37.3.7) >> +>> endobj +5462 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 547.513 235.516 556.284] +/A << /S /GoTo /D (section.8.38) >> +>> endobj +5463 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 528.112 221.939 538.381] +/A << /S /GoTo /D (subsection.8.38.1) >> +>> endobj +5464 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 512.119 303.298 520.89] +/A << /S /GoTo /D (subsection.8.38.2) >> +>> endobj +5465 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 494.421 239.733 503.192] +/A << /S /GoTo /D (subsubsection.8.38.2.1) >> +>> endobj +5466 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 476.724 274.131 485.289] +/A << /S /GoTo /D (subsection.8.38.3) >> +>> endobj +5467 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 220.572 467.592] +/A << /S /GoTo /D (subsubsection.8.38.3.1) >> +>> endobj +5468 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 441.329 232.748 449.894] +/A << /S /GoTo /D (subsubsection.8.38.3.2) >> +>> endobj +5469 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 423.632 221.522 432.403] +/A << /S /GoTo /D (subsubsection.8.38.3.3) >> +>> endobj +5470 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 405.935 216.797 414.706] +/A << /S /GoTo /D (subsubsection.8.38.3.4) >> +>> endobj +5471 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 216.797 397.009] +/A << /S /GoTo /D (subsubsection.8.38.3.5) >> +>> endobj +5472 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 216.797 379.311] +/A << /S /GoTo /D (subsubsection.8.38.3.6) >> +>> endobj +5473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 216.797 361.614] +/A << /S /GoTo /D (subsubsection.8.38.3.7) >> +>> endobj +5474 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 335.146 216.797 343.917] +/A << /S /GoTo /D (subsubsection.8.38.3.8) >> +>> endobj +5475 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 317.448 216.797 326.219] +/A << /S /GoTo /D (subsubsection.8.38.3.9) >> +>> endobj +5476 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 216.797 308.522] +/A << /S /GoTo /D (subsubsection.8.38.3.10) >> +>> endobj +5477 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 216.797 290.825] +/A << /S /GoTo /D (subsubsection.8.38.3.11) >> +>> endobj +5478 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.356 216.797 273.127] +/A << /S /GoTo /D (subsubsection.8.38.3.12) >> +>> endobj +5479 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 246.659 216.797 255.43] +/A << /S /GoTo /D (subsubsection.8.38.3.13) >> +>> endobj +5480 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 228.962 246.206 237.733] +/A << /S /GoTo /D (subsubsection.8.38.3.14) >> +>> endobj +5481 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 209.561 212.87 219.829] +/A << /S /GoTo /D (subsubsection.8.38.3.15) >> +>> endobj +5482 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 191.864 238.616 202.132] +/A << /S /GoTo /D (subsection.8.38.4) >> +>> endobj +5483 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 175.87 206.343 184.641] +/A << /S /GoTo /D (subsubsection.8.38.4.1) >> +>> endobj +5484 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 156.361 222.285 166.737] +/A << /S /GoTo /D (subsubsection.8.38.4.2) >> +>> endobj +5485 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.664 216.923 149.04] +/A << /S /GoTo /D (subsubsection.8.38.4.3) >> +>> endobj +5486 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 122.46 262.433 131.549] +/A << /S /GoTo /D (section.8.39) >> +>> endobj +5487 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 103.377 221.939 113.645] +/A << /S /GoTo /D (subsection.8.39.1) >> +>> endobj +5488 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 87.383 303.298 96.154] +/A << /S /GoTo /D (subsection.8.39.2) >> +>> endobj +5489 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 69.368 266.649 78.457] +/A << /S /GoTo /D (subsubsection.8.39.2.1) >> +>> endobj +5491 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5536 0 obj << +/Length 1259 +/Filter /FlateDecode +>> +stream +xMw8Œ$Ew3I4ncMN䄩 M_?$LmA`ߏ^0 `gKcx3Sj0^h\Qd}>`!W~?{so Wpns`1P`qqW00ql=7P^'.'(/q.n3H F rz۱X\"8ȣ${$X.DŐC7mkHu{-'{ .ﴎp͙c !AP~s$2E3OKn:7xp%b1҈KY/wqϮnfw!sa9(szWh3р8hSl_`Ĵb\b6ƙl<$fic` )pO7IĞ0S ӏ2D 1b.F’;Y7/DqHE4~8httlMJ);EX[߶ \hx#RK֨*:1l*Ȫ:\4*JE0p2ҝZUi->M%d̝/E~`nѓaL"r0W$q&n Um/uLBJBMkG^yRV9ylktއF14JUh|uK_BۑZs>%ݭRd"\lpfJ hNJttN^{#]T+NLZۗPƹmp~ ޵^!?&(^k~ g+Rh;7nGyeuMLX,8{T Ks[n%I8In,`P[3swFOǯ +"Ռ4IOa{tJZ=2dUhH׸zsrU/sOfn>*{Rf!;+DFb^f3m*g,ПXalU kfY- $Hp7Sv_8fH8{__ZAJu(; +endstream +endobj +5535 0 obj << +/Type /Page +/Contents 5536 0 R +/Resources 5534 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5407 0 R +/Annots [ 5490 0 R 5494 0 R 5495 0 R 5496 0 R 5497 0 R 5498 0 R 5499 0 R 5500 0 R 5501 0 R 5502 0 R 5503 0 R 5504 0 R 5505 0 R 5506 0 R 5507 0 R 5508 0 R 5509 0 R 5510 0 R 5511 0 R 5512 0 R 5513 0 R 5514 0 R 5515 0 R 5516 0 R 5517 0 R 5518 0 R 5519 0 R 5520 0 R 5521 0 R 5522 0 R 5523 0 R 5524 0 R 5525 0 R 5526 0 R 5527 0 R 5528 0 R 5529 0 R 5530 0 R 5531 0 R 5532 0 R ] +>> endobj +5490 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 759.881 274.131 768.446] +/A << /S /GoTo /D (subsection.8.39.3) >> +>> endobj +5494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 226.759 750.748] +/A << /S /GoTo /D (subsubsection.8.39.3.1) >> +>> endobj +5495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.783 260.66 733.257] +/A << /S /GoTo /D (subsubsection.8.39.3.2) >> +>> endobj +5496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 232.748 715.354] +/A << /S /GoTo /D (subsubsection.8.39.3.3) >> +>> endobj +5497 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 205.841 697.656] +/A << /S /GoTo /D (subsubsection.8.39.3.4) >> +>> endobj +5498 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 221.522 680.165] +/A << /S /GoTo /D (subsubsection.8.39.3.5) >> +>> endobj +5499 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 216.797 662.468] +/A << /S /GoTo /D (subsubsection.8.39.3.6) >> +>> endobj +5500 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 636 265.508 644.771] +/A << /S /GoTo /D (section.8.40) >> +>> endobj +5501 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 616.599 221.939 626.867] +/A << /S /GoTo /D (subsection.8.40.1) >> +>> endobj +5502 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 600.605 274.131 609.17] +/A << /S /GoTo /D (subsection.8.40.2) >> +>> endobj +5503 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 276.422 591.679] +/A << /S /GoTo /D (subsubsection.8.40.2.1) >> +>> endobj +5504 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 276.844 573.982] +/A << /S /GoTo /D (subsubsection.8.40.2.2) >> +>> endobj +5505 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 547.513 325.851 556.284] +/A << /S /GoTo /D (section.8.41) >> +>> endobj +5506 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 529.816 303.298 538.587] +/A << /S /GoTo /D (subsection.8.41.1) >> +>> endobj +5507 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 330.067 520.89] +/A << /S /GoTo /D (subsubsection.8.41.1.1) >> +>> endobj +5508 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 494.421 274.131 502.986] +/A << /S /GoTo /D (subsection.8.41.2) >> +>> endobj +5509 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 475.021 302.487 485.495] +/A << /S /GoTo /D (subsubsection.8.41.2.1) >> +>> endobj +5510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 261.243 467.798] +/A << /S /GoTo /D (subsubsection.8.41.2.2) >> +>> endobj +5511 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 441.329 276.422 450.1] +/A << /S /GoTo /D (subsubsection.8.41.2.3) >> +>> endobj +5512 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.929 276.844 432.403] +/A << /S /GoTo /D (subsubsection.8.41.2.4) >> +>> endobj +5513 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.231 242.772 414.5] +/A << /S /GoTo /D (subsubsection.8.41.2.5) >> +>> endobj +5514 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 388.238 321.368 397.009] +/A << /S /GoTo /D (section.8.42) >> +>> endobj +5515 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 370.54 290.396 379.105] +/A << /S /GoTo /D (subsection.8.42.1) >> +>> endobj +5516 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.139 258.58 361.614] +/A << /S /GoTo /D (subsubsection.8.42.1.1) >> +>> endobj +5517 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.442 255.952 343.917] +/A << /S /GoTo /D (subsubsection.8.42.1.2) >> +>> endobj +5518 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 317.448 258.682 326.013] +/A << /S /GoTo /D (subsection.8.42.2) >> +>> endobj +5519 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 248.896 308.522] +/A << /S /GoTo /D (subsubsection.8.42.2.1) >> +>> endobj +5520 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 280.243 324.401 290.618] +/A << /S /GoTo /D (subsubsection.8.42.2.2) >> +>> endobj +5521 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.653 331.376 273.127] +/A << /S /GoTo /D (subsubsection.8.42.2.3) >> +>> endobj +5522 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 244.956 254.096 255.43] +/A << /S /GoTo /D (subsubsection.8.42.2.4) >> +>> endobj +5523 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 227.258 253.603 237.733] +/A << /S /GoTo /D (subsubsection.8.42.2.5) >> +>> endobj +5524 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 209.561 269.186 220.036] +/A << /S /GoTo /D (subsubsection.8.42.2.6) >> +>> endobj +5525 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 191.864 328.893 202.132] +/A << /S /GoTo /D (subsubsection.8.42.2.7) >> +>> endobj +5526 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 174.166 329.888 184.435] +/A << /S /GoTo /D (subsubsection.8.42.2.8) >> +>> endobj +5527 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 156.469 305.572 166.944] +/A << /S /GoTo /D (subsubsection.8.42.2.9) >> +>> endobj +5528 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.772 251.469 149.246] +/A << /S /GoTo /D (subsubsection.8.42.2.10) >> +>> endobj +5529 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 121.074 274.934 131.549] +/A << /S /GoTo /D (subsubsection.8.42.2.11) >> +>> endobj +5530 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 103.377 264.336 113.852] +/A << /S /GoTo /D (subsubsection.8.42.2.12) >> +>> endobj +5531 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.68 247.309 95.948] +/A << /S /GoTo /D (subsubsection.8.42.2.13) >> +>> endobj +5532 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 305.285 78.457] +/A << /S /GoTo /D (subsubsection.8.42.2.14) >> +>> endobj +5534 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5579 0 obj << +/Length 1117 +/Filter /FlateDecode +>> +stream +xMH~>mA~%8/:M.S9(8OQ7bt7OGu'@Xc` pǶ 77˛8~ ft:;{z}?]{_zH\EKxG&-vXeBE Vuwbg^TfAx7 0ȆFd"hA`bhٷ1KSM0A3Ʌ1qw2;MF2dMa}J^{e ކ +lr[k2SCA Qc%:/5}@3ƅ᩟ס(&CܢH4RMZuC9$s=]-/ҏՅ Ts%er#UPυ1d ];Udq63ё5@χ#u3I ůOŅ]H8p"9L;|)|fŹ Rh{36!k&HRJMp&v+-QSDlЅ{uR?h!d*笕 +5cՏ'z"k'M2+R0uDMZubBh`FaY %d Ø64#ϝɃ26vqٱj4= .+s{h̎2UAYJMKY-; +{rb]Ϝ6hUv +ĺ bS qwh,j$c+ ]Y>6`5,4D|JF.yʌ y!O5[Dm^$1/>usﲦ w(6PJj].LIMZZ4Z@xod&6-աE`櫊6Z7zb[n>-)xzaS7d_p \'>{9͗U x/Bv7wʖ3.S_r-}7) mOź DֆG+_|!u^Ou31g?xDzsaӳBjal32 +endstream +endobj +5578 0 obj << +/Type /Page +/Contents 5579 0 R +/Resources 5577 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5407 0 R +/Annots [ 5533 0 R 5537 0 R 5538 0 R 5539 0 R 5540 0 R 5541 0 R 5542 0 R 5543 0 R 5544 0 R 5545 0 R 5546 0 R 5547 0 R 5548 0 R 5549 0 R 5550 0 R 5551 0 R 5552 0 R 5553 0 R 5554 0 R 5555 0 R 5556 0 R 5557 0 R 5558 0 R 5559 0 R 5560 0 R 5561 0 R 5562 0 R 5563 0 R 5564 0 R 5565 0 R 5566 0 R 5567 0 R 5568 0 R 5569 0 R 5570 0 R 5571 0 R 5572 0 R 5573 0 R 5574 0 R 5575 0 R ] +>> endobj +5533 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 759.881 327.796 768.652] +/A << /S /GoTo /D (section.8.43) >> +>> endobj +5537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 742.184 303.298 750.955] +/A << /S /GoTo /D (subsection.8.43.1) >> +>> endobj +5538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 332.013 733.257] +/A << /S /GoTo /D (subsubsection.8.43.1.1) >> +>> endobj +5539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 706.789 274.131 715.354] +/A << /S /GoTo /D (subsection.8.43.2) >> +>> endobj +5540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 263.188 697.863] +/A << /S /GoTo /D (subsubsection.8.43.2.1) >> +>> endobj +5541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 230.264 680.165] +/A << /S /GoTo /D (subsubsection.8.43.2.2) >> +>> endobj +5542 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 276.422 662.468] +/A << /S /GoTo /D (subsubsection.8.43.2.3) >> +>> endobj +5543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 636 323.313 644.771] +/A << /S /GoTo /D (section.8.44) >> +>> endobj +5544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 618.303 290.396 626.867] +/A << /S /GoTo /D (subsection.8.44.1) >> +>> endobj +5545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 598.902 255.952 609.376] +/A << /S /GoTo /D (subsubsection.8.44.1.1) >> +>> endobj +5546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 582.908 258.682 591.473] +/A << /S /GoTo /D (subsection.8.44.2) >> +>> endobj +5547 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 269.186 573.982] +/A << /S /GoTo /D (subsubsection.8.44.2.1) >> +>> endobj +5548 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 545.81 251.469 556.284] +/A << /S /GoTo /D (subsubsection.8.44.2.2) >> +>> endobj +5549 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 528.112 310.422 538.587] +/A << /S /GoTo /D (subsubsection.8.44.2.3) >> +>> endobj +5550 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 510.415 264.336 520.89] +/A << /S /GoTo /D (subsubsection.8.44.2.4) >> +>> endobj +5551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 494.421 316.831 503.192] +/A << /S /GoTo /D (section.8.45) >> +>> endobj +5552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 476.724 303.298 485.495] +/A << /S /GoTo /D (subsection.8.45.1) >> +>> endobj +5553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 321.047 467.798] +/A << /S /GoTo /D (subsubsection.8.45.1.1) >> +>> endobj +5554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 441.329 274.131 449.894] +/A << /S /GoTo /D (subsection.8.45.2) >> +>> endobj +5555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 423.632 252.223 432.403] +/A << /S /GoTo /D (subsubsection.8.45.2.1) >> +>> endobj +5556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 405.935 219.299 414.706] +/A << /S /GoTo /D (subsubsection.8.45.2.2) >> +>> endobj +5557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 276.422 397.009] +/A << /S /GoTo /D (subsubsection.8.45.2.3) >> +>> endobj +5558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 370.54 312.348 379.311] +/A << /S /GoTo /D (section.8.46) >> +>> endobj +5559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 352.843 290.396 361.408] +/A << /S /GoTo /D (subsection.8.46.1) >> +>> endobj +5560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.442 255.952 343.917] +/A << /S /GoTo /D (subsubsection.8.46.1.1) >> +>> endobj +5561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 317.448 258.682 326.013] +/A << /S /GoTo /D (subsection.8.46.2) >> +>> endobj +5562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 298.047 269.186 308.522] +/A << /S /GoTo /D (subsubsection.8.46.2.1) >> +>> endobj +5563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 280.35 305.572 290.825] +/A << /S /GoTo /D (subsubsection.8.46.2.2) >> +>> endobj +5564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.653 251.469 273.127] +/A << /S /GoTo /D (subsubsection.8.46.2.3) >> +>> endobj +5565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 244.956 264.336 255.43] +/A << /S /GoTo /D (subsubsection.8.46.2.4) >> +>> endobj +5566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 228.962 225.869 237.733] +/A << /S /GoTo /D (section.8.47) >> +>> endobj +5567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 209.561 221.939 219.829] +/A << /S /GoTo /D (subsection.8.47.1) >> +>> endobj +5568 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 193.567 274.131 202.132] +/A << /S /GoTo /D (subsection.8.47.2) >> +>> endobj +5569 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 175.87 246.009 184.435] +/A << /S /GoTo /D (subsubsection.8.47.2.1) >> +>> endobj +5570 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 199.86 166.737] +/A << /S /GoTo /D (subsubsection.8.47.2.2) >> +>> endobj +5571 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 140.475 196.874 149.246] +/A << /S /GoTo /D (subsubsection.8.47.2.3) >> +>> endobj +5572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 196.874 131.549] +/A << /S /GoTo /D (subsubsection.8.47.2.4) >> +>> endobj +5573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 105.081 281.076 113.852] +/A << /S /GoTo /D (subsubsection.8.47.2.5) >> +>> endobj +5574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.68 318.277 96.154] +/A << /S /GoTo /D (subsubsection.8.47.2.6) >> +>> endobj +5575 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 258.661 78.457] +/A << /S /GoTo /D (subsubsection.8.47.2.7) >> +>> endobj +5577 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5622 0 obj << +/Length 1188 +/Filter /FlateDecode +>> +stream +xKw8,aa]=9.2]؜ƒp.#Hm[M'^}'ϝaO ;apJ"g8rn>`7{WË\ ;v ؉{_;O'& 8g+IeUpUp0^̀ 1t7U:]/K]9pT]DqN_̡żf 3_ 8vx y* V`W! z]D$zH~z!NCN:E!(=yA^:2^z"~"&ɬcl#J,}v8 Zj=`bzgTg=lx>2D:YS6]@E3T3\_'VKo/@͐Oռ9!`Dfy$d1Ahynq<2zz|юzj:SR CvȔuH +~J6]A?'35zMP?2YK̴Oi;Di[VB4Lr@3akMޚ7b# u ԲC Ϣh4 vUt Ϣԝ~4sNhgfU5^d> endobj +5576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 759.881 201.349 768.652] +/A << /S /GoTo /D (subsubsection.8.47.2.8) >> +>> endobj +5580 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 201.349 750.955] +/A << /S /GoTo /D (subsubsection.8.47.2.9) >> +>> endobj +5581 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.783 226.768 733.257] +/A << /S /GoTo /D (subsubsection.8.47.2.10) >> +>> endobj +5582 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 705.085 226.768 715.56] +/A << /S /GoTo /D (subsubsection.8.47.2.11) >> +>> endobj +5583 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 236.048 697.863] +/A << /S /GoTo /D (subsubsection.8.47.2.12) >> +>> endobj +5584 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 669.583 215.362 680.165] +/A << /S /GoTo /D (subsubsection.8.47.2.13) >> +>> endobj +5585 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 651.994 257.217 662.468] +/A << /S /GoTo /D (subsubsection.8.47.2.14) >> +>> endobj +5586 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.296 257.217 644.771] +/A << /S /GoTo /D (subsubsection.8.47.2.15) >> +>> endobj +5587 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 618.303 258.682 626.867] +/A << /S /GoTo /D (subsection.8.47.3) >> +>> endobj +5588 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 246.691 609.17] +/A << /S /GoTo /D (subsubsection.8.47.3.1) >> +>> endobj +5589 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 581.097 205.258 591.473] +/A << /S /GoTo /D (subsubsection.8.47.3.2) >> +>> endobj +5590 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 565.211 237.742 573.775] +/A << /S /GoTo /D (subsubsection.8.47.3.3) >> +>> endobj +5591 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 545.81 272.164 556.284] +/A << /S /GoTo /D (subsubsection.8.47.3.4) >> +>> endobj +5592 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 528.005 294.041 538.587] +/A << /S /GoTo /D (subsubsection.8.47.3.5) >> +>> endobj +5593 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 510.415 292.822 520.89] +/A << /S /GoTo /D (subsubsection.8.47.3.6) >> +>> endobj +5594 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 494.421 214.179 502.986] +/A << /S /GoTo /D (subsubsection.8.47.3.7) >> +>> endobj +5595 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 475.021 255.092 485.495] +/A << /S /GoTo /D (subsubsection.8.47.3.8) >> +>> endobj +5596 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.323 286.259 467.798] +/A << /S /GoTo /D (subsubsection.8.47.3.9) >> +>> endobj +5597 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.626 234.066 450.1] +/A << /S /GoTo /D (subsubsection.8.47.3.10) >> +>> endobj +5598 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.929 244.709 432.197] +/A << /S /GoTo /D (subsubsection.8.47.3.11) >> +>> endobj +5599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 404.231 238.616 414.5] +/A << /S /GoTo /D (subsection.8.47.4) >> +>> endobj +5600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 242.701 397.009] +/A << /S /GoTo /D (subsubsection.8.47.4.1) >> +>> endobj +5601 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 249.201 379.105] +/A << /S /GoTo /D (subsubsection.8.47.4.2) >> +>> endobj +5602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 208.324 361.408] +/A << /S /GoTo /D (subsubsection.8.47.4.3) >> +>> endobj +5603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 335.146 239.491 343.917] +/A << /S /GoTo /D (subsubsection.8.47.4.4) >> +>> endobj +5604 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 317.448 233.564 326.219] +/A << /S /GoTo /D (subsubsection.8.47.4.5) >> +>> endobj +5605 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 299.751 206.701 308.316] +/A << /S /GoTo /D (subsubsection.8.47.4.6) >> +>> endobj +5606 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 282.054 239.213 290.825] +/A << /S /GoTo /D (subsubsection.8.47.4.7) >> +>> endobj +5607 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.653 204.343 273.127] +/A << /S /GoTo /D (subsubsection.8.47.4.8) >> +>> endobj +5608 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 246.659 209.14 255.224] +/A << /S /GoTo /D (subsubsection.8.47.4.9) >> +>> endobj +5609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 227.151 241.99 237.733] +/A << /S /GoTo /D (section.8.48) >> +>> endobj +5610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 209.561 221.939 219.829] +/A << /S /GoTo /D (subsection.8.48.1) >> +>> endobj +5611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 193.567 274.131 202.132] +/A << /S /GoTo /D (subsection.8.48.2) >> +>> endobj +5612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 174.166 214.807 184.435] +/A << /S /GoTo /D (subsubsection.8.48.2.1) >> +>> endobj +5613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 203.85 166.737] +/A << /S /GoTo /D (subsubsection.8.48.2.2) >> +>> endobj +5614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.664 219.657 149.246] +/A << /S /GoTo /D (subsubsection.8.48.2.3) >> +>> endobj +5615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 122.778 265.248 131.549] +/A << /S /GoTo /D (section.8.49) >> +>> endobj +5616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 103.377 221.939 113.645] +/A << /S /GoTo /D (subsection.8.49.1) >> +>> endobj +5617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 87.383 274.131 95.948] +/A << /S /GoTo /D (subsection.8.49.2) >> +>> endobj +5618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 69.686 274.531 78.457] +/A << /S /GoTo /D (subsubsection.8.49.2.1) >> +>> endobj +5620 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5665 0 obj << +/Length 1245 +/Filter /FlateDecode +>> +stream +xKsH veG+W%*(0o3<%dwkm ocarl'cacdp`;E6ln<22vl8꯳s//lmQ`=v1 0ܕl:sv ۔`2G@\}EqCxR=)$ {Π gulF%&q@̂t8_д14߰_Ǘ + 9(^ +SmǐpZG̻d1*?ҷoMtqxʥd:z`7JGho?+gލswiolt x'ϖl)2e0Iq2A?͢upu p{ܬ]DRw bE{b+d!@uUAT$bNY-*;cjr[ Eaʏs8#{j3FRD"ѕ|-eF;Fop";,Z~Q(_[!˾d'?Vt˫:*gԢa +endstream +endobj +5664 0 obj << +/Type /Page +/Contents 5665 0 R +/Resources 5663 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5666 0 R +/Annots [ 5619 0 R 5623 0 R 5624 0 R 5625 0 R 5626 0 R 5627 0 R 5628 0 R 5629 0 R 5630 0 R 5631 0 R 5632 0 R 5633 0 R 5634 0 R 5635 0 R 5636 0 R 5637 0 R 5638 0 R 5639 0 R 5640 0 R 5641 0 R 5642 0 R 5643 0 R 5644 0 R 5645 0 R 5646 0 R 5647 0 R 5648 0 R 5649 0 R 5650 0 R 5651 0 R 5652 0 R 5653 0 R 5654 0 R 5655 0 R 5656 0 R 5657 0 R 5658 0 R 5659 0 R 5660 0 R 5661 0 R ] +>> endobj +5619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 759.881 275.544 768.652] +/A << /S /GoTo /D (subsubsection.8.49.2.2) >> +>> endobj +5623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 253.729 750.955] +/A << /S /GoTo /D (subsubsection.8.49.2.3) >> +>> endobj +5624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 250.187 733.257] +/A << /S /GoTo /D (subsubsection.8.49.2.4) >> +>> endobj +5625 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 305.787 715.56] +/A << /S /GoTo /D (subsubsection.8.49.2.5) >> +>> endobj +5626 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 687.388 322.186 697.863] +/A << /S /GoTo /D (subsubsection.8.49.2.6) >> +>> endobj +5627 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 297.628 680.165] +/A << /S /GoTo /D (subsubsection.8.49.2.7) >> +>> endobj +5628 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 653.697 298.928 662.468] +/A << /S /GoTo /D (subsubsection.8.49.2.8) >> +>> endobj +5629 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.296 244.951 644.771] +/A << /S /GoTo /D (subsubsection.8.49.2.9) >> +>> endobj +5630 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 618.303 244.709 627.074] +/A << /S /GoTo /D (subsubsection.8.49.2.10) >> +>> endobj +5631 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 598.902 233.492 609.376] +/A << /S /GoTo /D (subsubsection.8.49.2.11) >> +>> endobj +5632 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 233.25 591.679] +/A << /S /GoTo /D (subsubsection.8.49.2.12) >> +>> endobj +5633 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 283.318 573.982] +/A << /S /GoTo /D (subsubsection.8.49.2.13) >> +>> endobj +5634 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 547.513 281.076 556.284] +/A << /S /GoTo /D (subsubsection.8.49.2.14) >> +>> endobj +5635 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 528.112 270.621 538.587] +/A << /S /GoTo /D (subsubsection.8.49.2.15) >> +>> endobj +5636 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 297.583 520.89] +/A << /S /GoTo /D (subsubsection.8.49.2.16) >> +>> endobj +5637 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 492.61 355.2 503.192] +/A << /S /GoTo /D (subsubsection.8.49.2.17) >> +>> endobj +5638 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 264.165 485.495] +/A << /S /GoTo /D (subsubsection.8.49.2.18) >> +>> endobj +5639 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 459.027 287.119 467.798] +/A << /S /GoTo /D (subsubsection.8.49.2.19) >> +>> endobj +5640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 441.329 296.041 450.1] +/A << /S /GoTo /D (subsubsection.8.49.2.20) >> +>> endobj +5641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.929 291.118 432.403] +/A << /S /GoTo /D (subsubsection.8.49.2.21) >> +>> endobj +5642 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.231 302.075 414.706] +/A << /S /GoTo /D (subsubsection.8.49.2.22) >> +>> endobj +5643 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 386.426 325.36 397.009] +/A << /S /GoTo /D (subsubsection.8.49.2.23) >> +>> endobj +5644 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 297.09 379.311] +/A << /S /GoTo /D (subsubsection.8.49.2.24) >> +>> endobj +5645 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.139 298.3 361.614] +/A << /S /GoTo /D (subsubsection.8.49.2.25) >> +>> endobj +5646 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.442 267.367 343.917] +/A << /S /GoTo /D (subsubsection.8.49.2.26) >> +>> endobj +5647 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 315.745 268.855 326.219] +/A << /S /GoTo /D (subsubsection.8.49.2.27) >> +>> endobj +5648 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 299.751 213.083 308.522] +/A << /S /GoTo /D (section.8.50) >> +>> endobj +5649 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 280.35 221.939 290.618] +/A << /S /GoTo /D (subsection.8.50.1) >> +>> endobj +5650 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 262.653 254.722 273.127] +/A << /S /GoTo /D (section.8.51) >> +>> endobj +5651 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 244.956 221.939 255.224] +/A << /S /GoTo /D (subsection.8.51.1) >> +>> endobj +5652 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 228.962 258.682 237.527] +/A << /S /GoTo /D (subsection.8.51.2) >> +>> endobj +5653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 209.453 241.723 220.036] +/A << /S /GoTo /D (subsubsection.8.51.2.1) >> +>> endobj +5654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 193.567 210.557 202.338] +/A << /S /GoTo /D (subsubsection.8.51.2.2) >> +>> endobj +5655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 174.166 213.085 184.435] +/A << /S /GoTo /D (subsubsection.8.51.2.3) >> +>> endobj +5656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 158.173 261.889 166.737] +/A << /S /GoTo /D (subsubsection.8.51.2.4) >> +>> endobj +5657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.772 237.24 149.246] +/A << /S /GoTo /D (subsubsection.8.51.2.5) >> +>> endobj +5658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 222.052 131.343] +/A << /S /GoTo /D (subsubsection.8.51.2.6) >> +>> endobj +5659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 103.377 256.186 113.852] +/A << /S /GoTo /D (subsubsection.8.51.2.7) >> +>> endobj +5660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.572 232.667 95.948] +/A << /S /GoTo /D (subsubsection.8.51.2.8) >> +>> endobj +5661 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 67.875 206.609 78.457] +/A << /S /GoTo /D (section.8.52) >> +>> endobj +5663 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5709 0 obj << +/Length 1083 +/Filter /FlateDecode +>> +stream +xKw8 +-/uȥiS&!%)6mG0&9=E/(J@Ǚd@A-{ TB  F6xz_C /{_.XtF00tn"0>V `BΨ>ם:CUuT/]*F +J́"w +rqؕ.*8'(03 kZ"9;nBFk>1yͨʄ&V6d,3u{܇la6hv45܌n23֩1@uř‹SzZbw=<@6v9滹 gl>s +oQe e_~[$p9MjܘKhR^^:Oj2v'%l<4yq˪ciZ +}&oE(Jߛf+n*`/ɢ#ݱCQ_ұȎ%̗t 8m̗tȰaNt~GޛP^nqS.{,gIWezmZ\=_,[Mk߸-Hm(B3-.ҹI,ʝsb8wnX~)'AEgCOZ=cnؕ\Gy?-U*wY(i/ +endstream +endobj +5708 0 obj << +/Type /Page +/Contents 5709 0 R +/Resources 5707 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5666 0 R +/Annots [ 5662 0 R 5667 0 R 5668 0 R 5669 0 R 5670 0 R 5671 0 R 5672 0 R 5673 0 R 5674 0 R 5675 0 R 5676 0 R 5677 0 R 5678 0 R 5679 0 R 5680 0 R 5681 0 R 5682 0 R 5683 0 R 5684 0 R 5685 0 R 5686 0 R 5687 0 R 5688 0 R 5689 0 R 5690 0 R 5691 0 R 5692 0 R 5693 0 R 5694 0 R 5695 0 R 5696 0 R 5697 0 R 5698 0 R 5699 0 R 5700 0 R 5701 0 R 5702 0 R 5703 0 R 5704 0 R 5705 0 R ] +>> endobj +5662 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 759.881 274.131 768.446] +/A << /S /GoTo /D (subsection.8.52.1) >> +>> endobj +5667 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 205.482 750.748] +/A << /S /GoTo /D (subsubsection.8.52.1.1) >> +>> endobj +5668 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.675 215.362 733.257] +/A << /S /GoTo /D (subsubsection.8.52.1.2) >> +>> endobj +5669 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 706.789 258.682 715.354] +/A << /S /GoTo /D (subsection.8.52.2) >> +>> endobj +5670 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 689.092 203.85 697.863] +/A << /S /GoTo /D (subsubsection.8.52.2.1) >> +>> endobj +5671 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 233.16 679.959] +/A << /S /GoTo /D (subsubsection.8.52.2.2) >> +>> endobj +5672 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 651.886 200.362 662.262] +/A << /S /GoTo /D (subsubsection.8.52.2.3) >> +>> endobj +5673 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 636 202.117 644.771] +/A << /S /GoTo /D (section.8.53) >> +>> endobj +5674 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 616.599 221.939 626.867] +/A << /S /GoTo /D (subsection.8.53.1) >> +>> endobj +5675 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 600.605 274.131 609.17] +/A << /S /GoTo /D (subsection.8.53.2) >> +>> endobj +5676 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 581.204 264.632 591.679] +/A << /S /GoTo /D (subsubsection.8.53.2.1) >> +>> endobj +5677 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 267.985 573.982] +/A << /S /GoTo /D (subsubsection.8.53.2.2) >> +>> endobj +5678 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 545.81 292.651 556.284] +/A << /S /GoTo /D (subsubsection.8.53.2.3) >> +>> endobj +5679 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 528.005 215.362 538.587] +/A << /S /GoTo /D (subsubsection.8.53.2.4) >> +>> endobj +5680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 510.307 229.807 520.89] +/A << /S /GoTo /D (subsubsection.8.53.2.5) >> +>> endobj +5681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 492.718 238.616 502.986] +/A << /S /GoTo /D (subsection.8.53.3) >> +>> endobj +5682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 475.021 235.474 485.495] +/A << /S /GoTo /D (subsubsection.8.53.3.1) >> +>> endobj +5683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.323 234.748 467.798] +/A << /S /GoTo /D (subsubsection.8.53.3.2) >> +>> endobj +5684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.626 243.212 449.894] +/A << /S /GoTo /D (subsubsection.8.53.3.3) >> +>> endobj +5685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.929 241.948 432.197] +/A << /S /GoTo /D (subsubsection.8.53.3.4) >> +>> endobj +5686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.231 211.328 414.706] +/A << /S /GoTo /D (subsubsection.8.53.3.5) >> +>> endobj +5687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 215.623 396.802] +/A << /S /GoTo /D (subsubsection.8.53.3.6) >> +>> endobj +5688 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 368.837 228.803 379.105] +/A << /S /GoTo /D (subsubsection.8.53.3.7) >> +>> endobj +5689 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.139 228.803 361.408] +/A << /S /GoTo /D (subsubsection.8.53.3.8) >> +>> endobj +5690 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 335.146 206.334 343.71] +/A << /S /GoTo /D (subsubsection.8.53.3.9) >> +>> endobj +5691 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 317.448 204.845 326.013] +/A << /S /GoTo /D (subsubsection.8.53.3.10) >> +>> endobj +5692 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 298.047 202.362 308.316] +/A << /S /GoTo /D (subsubsection.8.53.3.11) >> +>> endobj +5693 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 280.35 231.305 290.825] +/A << /S /GoTo /D (subsubsection.8.53.3.12) >> +>> endobj +5694 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.653 230.309 273.127] +/A << /S /GoTo /D (subsubsection.8.53.3.13) >> +>> endobj +5695 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 244.956 279.193 255.224] +/A << /S /GoTo /D (subsubsection.8.53.3.14) >> +>> endobj +5696 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 227.258 278.198 237.527] +/A << /S /GoTo /D (subsubsection.8.53.3.15) >> +>> endobj +5697 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 211.265 207.15 219.829] +/A << /S /GoTo /D (subsubsection.8.53.3.16) >> +>> endobj +5698 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 193.567 216.804 202.338] +/A << /S /GoTo /D (section.8.54) >> +>> endobj +5699 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 174.166 221.939 184.435] +/A << /S /GoTo /D (subsection.8.54.1) >> +>> endobj +5700 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 158.173 274.131 166.737] +/A << /S /GoTo /D (subsection.8.54.2) >> +>> endobj +5701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.772 209.83 149.04] +/A << /S /GoTo /D (subsubsection.8.54.2.1) >> +>> endobj +5702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 239.231 131.549] +/A << /S /GoTo /D (subsubsection.8.54.2.2) >> +>> endobj +5703 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 103.27 215.362 113.852] +/A << /S /GoTo /D (subsubsection.8.54.2.3) >> +>> endobj +5704 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.572 229.807 96.154] +/A << /S /GoTo /D (subsubsection.8.54.2.4) >> +>> endobj +5705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 69.686 258.682 78.251] +/A << /S /GoTo /D (subsection.8.54.3) >> +>> endobj +5707 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5752 0 obj << +/Length 1100 +/Filter /FlateDecode +>> +stream +xMw8,ao.Mzړ&ԙMN+ |x N?m1NsZa-իWpn|=ủ#1LnC0LΕ;>;Nx_'qV^]{xO}at479 p~9]^|3uL9ۺ8\+$ B84ChQTF8tUΕvϧ?΢1 +R?6Yu!X7"Pz3WrzYy R@b 2!Ei1.= d~m!I 7HimV)x>V@yЀ.: +eXP MajXنZv.ƒԽuS EvU Ǔ ^ī=\Ҿ"jB@^Ev6mi\q y%Ce^#P"G(A؊p]\핿UrZ䲌瞯#u9r`!'pPj֟ev=騊v@Xbd'tf۱b~R\{oB)ćqYԘ&U݇V&Fk=I#d9"6a3k0/nk a.U{scWKcugN'2 +b֐+ caD,5񮹻Q+_/fPb;ځX k.w7X4Q3Y _ @c⌬@#4`zed.Q*_'w=@VxGo7={~WTMQy 3Ne[ߚsuZCViP1_ +endstream +endobj +5751 0 obj << +/Type /Page +/Contents 5752 0 R +/Resources 5750 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5666 0 R +/Annots [ 5706 0 R 5710 0 R 5711 0 R 5712 0 R 5713 0 R 5714 0 R 5715 0 R 5716 0 R 5717 0 R 5718 0 R 5719 0 R 5720 0 R 5721 0 R 5722 0 R 5723 0 R 5724 0 R 5725 0 R 5726 0 R 5727 0 R 5728 0 R 5729 0 R 5730 0 R 5731 0 R 5732 0 R 5733 0 R 5734 0 R 5735 0 R 5736 0 R 5737 0 R 5738 0 R 5739 0 R 5740 0 R 5741 0 R 5742 0 R 5743 0 R 5744 0 R 5745 0 R 5746 0 R 5747 0 R 5748 0 R ] +>> endobj +5706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.177 254.177 768.652] +/A << /S /GoTo /D (subsubsection.8.54.3.1) >> +>> endobj +5710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 740.48 261.377 750.748] +/A << /S /GoTo /D (subsubsection.8.54.3.2) >> +>> endobj +5711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.783 248.233 733.051] +/A << /S /GoTo /D (subsubsection.8.54.3.3) >> +>> endobj +5712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 224.275 715.354] +/A << /S /GoTo /D (subsubsection.8.54.3.4) >> +>> endobj +5713 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 687.388 221.791 697.656] +/A << /S /GoTo /D (subsubsection.8.54.3.5) >> +>> endobj +5714 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 671.394 226.579 679.959] +/A << /S /GoTo /D (subsubsection.8.54.3.6) >> +>> endobj +5715 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 651.994 238.616 662.262] +/A << /S /GoTo /D (subsection.8.54.4) >> +>> endobj +5716 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.296 254.527 644.771] +/A << /S /GoTo /D (subsubsection.8.54.4.1) >> +>> endobj +5717 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 616.599 252.536 626.867] +/A << /S /GoTo /D (subsubsection.8.54.4.2) >> +>> endobj +5718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 257.665 609.376] +/A << /S /GoTo /D (subsubsection.8.54.4.3) >> +>> endobj +5719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 257.163 591.679] +/A << /S /GoTo /D (subsubsection.8.54.4.4) >> +>> endobj +5720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 211.328 573.982] +/A << /S /GoTo /D (subsubsection.8.54.4.5) >> +>> endobj +5721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 547.513 215.623 556.078] +/A << /S /GoTo /D (subsubsection.8.54.4.6) >> +>> endobj +5722 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 528.112 228.803 538.381] +/A << /S /GoTo /D (subsubsection.8.54.4.7) >> +>> endobj +5723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 510.415 228.803 520.683] +/A << /S /GoTo /D (subsubsection.8.54.4.8) >> +>> endobj +5724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 494.421 206.334 502.986] +/A << /S /GoTo /D (subsubsection.8.54.4.9) >> +>> endobj +5725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.724 204.845 485.289] +/A << /S /GoTo /D (subsubsection.8.54.4.10) >> +>> endobj +5726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.323 202.362 467.592] +/A << /S /GoTo /D (subsubsection.8.54.4.11) >> +>> endobj +5727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.626 231.305 450.1] +/A << /S /GoTo /D (subsubsection.8.54.4.12) >> +>> endobj +5728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.929 230.309 432.403] +/A << /S /GoTo /D (subsubsection.8.54.4.13) >> +>> endobj +5729 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 405.935 251.407 414.5] +/A << /S /GoTo /D (subsubsection.8.54.4.14) >> +>> endobj +5730 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 207.15 396.802] +/A << /S /GoTo /D (subsubsection.8.54.4.15) >> +>> endobj +5731 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 368.837 233.015 379.311] +/A << /S /GoTo /D (section.8.55) >> +>> endobj +5732 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 351.139 221.939 361.408] +/A << /S /GoTo /D (subsection.8.55.1) >> +>> endobj +5733 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 335.146 258.682 343.71] +/A << /S /GoTo /D (subsection.8.55.2) >> +>> endobj +5734 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 315.745 278.44 326.219] +/A << /S /GoTo /D (subsubsection.8.55.2.1) >> +>> endobj +5735 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 298.047 315.775 308.522] +/A << /S /GoTo /D (subsubsection.8.55.2.2) >> +>> endobj +5736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 280.35 241.705 290.618] +/A << /S /GoTo /D (subsubsection.8.55.2.3) >> +>> endobj +5737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.653 228.803 272.921] +/A << /S /GoTo /D (subsubsection.8.55.2.4) >> +>> endobj +5738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 244.956 217.344 255.224] +/A << /S /GoTo /D (subsubsection.8.55.2.5) >> +>> endobj +5739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 227.151 211.821 237.527] +/A << /S /GoTo /D (subsubsection.8.55.2.6) >> +>> endobj +5740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 209.561 238.616 219.829] +/A << /S /GoTo /D (subsection.8.55.3) >> +>> endobj +5741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 191.864 277.615 202.338] +/A << /S /GoTo /D (subsubsection.8.55.3.1) >> +>> endobj +5742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 174.166 275.625 184.641] +/A << /S /GoTo /D (subsubsection.8.55.3.2) >> +>> endobj +5743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 156.469 276.449 166.737] +/A << /S /GoTo /D (subsubsection.8.55.3.3) >> +>> endobj +5744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.772 313.785 149.04] +/A << /S /GoTo /D (subsubsection.8.55.3.4) >> +>> endobj +5745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 121.074 211.328 131.549] +/A << /S /GoTo /D (subsubsection.8.55.3.5) >> +>> endobj +5746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 103.377 210.826 113.852] +/A << /S /GoTo /D (subsubsection.8.55.3.6) >> +>> endobj +5747 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 87.383 215.623 95.948] +/A << /S /GoTo /D (subsubsection.8.55.3.7) >> +>> endobj +5748 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 69.686 215.121 78.251] +/A << /S /GoTo /D (subsubsection.8.55.3.8) >> +>> endobj +5750 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5795 0 obj << +/Length 1209 +/Filter /FlateDecode +>> +stream +xMw:~ +07 !$3ӞNU{gS˩/LO-3֬)|_КX9uNk,Fs (Fc~|E}tnH\mqrԻ sިoSBa +unCkΝ[Y?o,#ڟZX^'ʋuE1˧r<t9,xODžIZ\l_. Q]C+6b$]mt.#|D"HCf_Fu*6n Җťn_B i;f:\HAz?Bf5k)bG4;E u=|kNBn_([ +Dɝp +)28qTg4HS;wy !C $` 8u(@ _]Ȃh*>OEW|yŲnx|0U7pk š{.r=!] ]ּPe'q0.flm2rפmh.QM\w_ǟ嫘2Vqlm ~I\ UΖ-LyPCW;2lH,xr>^D\ C`Wq#`VNt=YidW,ȲHN<^|>gUoQ}J0L}P5b|R$AV-#պP Oo1D'R?g\ˡzW=U|V&eXT*܆y%( +endstream +endobj +5794 0 obj << +/Type /Page +/Contents 5795 0 R +/Resources 5793 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5666 0 R +/Annots [ 5749 0 R 5753 0 R 5754 0 R 5755 0 R 5756 0 R 5757 0 R 5758 0 R 5759 0 R 5760 0 R 5761 0 R 5762 0 R 5763 0 R 5764 0 R 5765 0 R 5766 0 R 5767 0 R 5768 0 R 5769 0 R 5770 0 R 5771 0 R 5772 0 R 5773 0 R 5774 0 R 5775 0 R 5776 0 R 5777 0 R 5778 0 R 5779 0 R 5780 0 R 5781 0 R 5782 0 R 5783 0 R 5784 0 R 5785 0 R 5786 0 R 5787 0 R 5788 0 R 5789 0 R 5790 0 R 5791 0 R ] +>> endobj +5749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 758.177 228.803 768.446] +/A << /S /GoTo /D (subsubsection.8.55.3.9) >> +>> endobj +5753 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 740.372 210.826 750.748] +/A << /S /GoTo /D (subsubsection.8.55.3.10) >> +>> endobj +5754 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 724.486 238.047 733.051] +/A << /S /GoTo /D (subsubsection.8.55.3.11) >> +>> endobj +5755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 705.085 237.052 715.354] +/A << /S /GoTo /D (subsubsection.8.55.3.12) >> +>> endobj +5756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 687.388 271.393 697.863] +/A << /S /GoTo /D (subsubsection.8.55.3.13) >> +>> endobj +5757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 669.691 269.895 679.959] +/A << /S /GoTo /D (subsubsection.8.55.3.14) >> +>> endobj +5758 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 651.886 369.938 662.468] +/A << /S /GoTo /D (section.8.56) >> +>> endobj +5759 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 634.296 221.939 644.565] +/A << /S /GoTo /D (subsection.8.56.1) >> +>> endobj +5760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 618.303 274.131 626.867] +/A << /S /GoTo /D (subsection.8.56.2) >> +>> endobj +5761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 600.605 227.781 609.376] +/A << /S /GoTo /D (subsubsection.8.56.2.1) >> +>> endobj +5762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 227.781 591.679] +/A << /S /GoTo /D (subsubsection.8.56.2.2) >> +>> endobj +5763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 563.399 265.41 573.982] +/A << /S /GoTo /D (section.8.57) >> +>> endobj +5764 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 545.81 238.616 556.078] +/A << /S /GoTo /D (subsection.8.57.1) >> +>> endobj +5765 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 529.816 273.625 538.587] +/A << /S /GoTo /D (subsubsection.8.57.1.1) >> +>> endobj +5766 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 512.119 255.944 520.89] +/A << /S /GoTo /D (subsubsection.8.57.1.2) >> +>> endobj +5767 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 492.61 237.049 503.192] +/A << /S /GoTo /D (section.8.58) >> +>> endobj +5768 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 475.021 221.939 485.289] +/A << /S /GoTo /D (subsection.8.58.1) >> +>> endobj +5769 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 459.027 290.396 467.592] +/A << /S /GoTo /D (subsection.8.58.2) >> +>> endobj +5770 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 439.518 239.231 450.1] +/A << /S /GoTo /D (subsubsection.8.58.2.1) >> +>> endobj +5771 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 423.632 274.131 432.197] +/A << /S /GoTo /D (subsection.8.58.3) >> +>> endobj +5772 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 404.231 212.825 414.5] +/A << /S /GoTo /D (subsubsection.8.58.3.1) >> +>> endobj +5773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 386.426 215.362 397.009] +/A << /S /GoTo /D (subsubsection.8.58.3.2) >> +>> endobj +5774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 221.783 379.311] +/A << /S /GoTo /D (subsubsection.8.58.3.3) >> +>> endobj +5775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 352.843 221.783 361.614] +/A << /S /GoTo /D (subsubsection.8.58.3.4) >> +>> endobj +5776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 333.334 268.129 343.917] +/A << /S /GoTo /D (subsubsection.8.58.3.5) >> +>> endobj +5777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 315.745 236.765 326.219] +/A << /S /GoTo /D (subsubsection.8.58.3.6) >> +>> endobj +5778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 299.751 258.682 308.316] +/A << /S /GoTo /D (subsection.8.58.4) >> +>> endobj +5779 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 280.35 207.338 290.618] +/A << /S /GoTo /D (subsubsection.8.58.4.1) >> +>> endobj +5780 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.653 226.274 273.127] +/A << /S /GoTo /D (subsubsection.8.58.4.2) >> +>> endobj +5781 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 244.956 280.135 255.43] +/A << /S /GoTo /D (subsubsection.8.58.4.3) >> +>> endobj +5782 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 227.151 248.027 237.527] +/A << /S /GoTo /D (subsubsection.8.58.4.4) >> +>> endobj +5783 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 209.561 270.182 220.036] +/A << /S /GoTo /D (subsubsection.8.58.4.5) >> +>> endobj +5784 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 191.864 219.711 202.132] +/A << /S /GoTo /D (subsubsection.8.58.4.6) >> +>> endobj +5785 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 174.166 223.02 184.435] +/A << /S /GoTo /D (subsubsection.8.58.4.7) >> +>> endobj +5786 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 156.361 247.246 166.737] +/A << /S /GoTo /D (subsubsection.8.58.4.8) >> +>> endobj +5787 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.664 247.928 149.246] +/A << /S /GoTo /D (subsubsection.8.58.4.9) >> +>> endobj +5788 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 122.778 215.309 131.343] +/A << /S /GoTo /D (subsubsection.8.58.4.10) >> +>> endobj +5789 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 103.27 230.273 113.645] +/A << /S /GoTo /D (subsubsection.8.58.4.11) >> +>> endobj +5790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.68 212.314 95.948] +/A << /S /GoTo /D (subsubsection.8.58.4.12) >> +>> endobj +5791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.875 253.917 78.251] +/A << /S /GoTo /D (subsubsection.8.58.4.13) >> +>> endobj +5793 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5838 0 obj << +/Length 1131 +/Filter /FlateDecode +>> +stream +xMs6| +:%- !(`ScO_-$`Yy@sQÉd@AO +F@"#P`0sѧ9y:v{fO_lw7Q +*@0D`l}ROS8QӞa*OrUpP>*V3R@ + QtA1sT1g@.NDWλa]EqO<{k.YqcK(<Εow9rbŐ +Z2p@f:]Άekc\Y.gP*Ҡ]<qtS?v rn\8\FuG?.6_} 2B6H7J72>"r~!C^c{])MO/*=?V,:J4: b,R M8CifnXg@qZ +lks|b{9kN`A-G$U֒wTmeURt +*Uv +T;yS,9g+]H [*cc/2gte;gąƠ>b•A\aO~8y`Qp bĘRcrX<-.4._7=Pti@àmQQ_dx> endobj +5792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 759.881 241.759 768.652] +/A << /S /GoTo /D (subsubsection.8.58.4.14) >> +>> endobj +5796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 742.184 225.225 750.955] +/A << /S /GoTo /D (subsubsection.8.58.4.15) >> +>> endobj +5797 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 722.783 229.045 733.051] +/A << /S /GoTo /D (subsubsection.8.58.4.16) >> +>> endobj +5798 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 706.789 246.932 715.56] +/A << /S /GoTo /D (subsubsection.8.58.4.17) >> +>> endobj +5799 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 687.388 339.856 697.863] +/A << /S /GoTo /D (section.8.59) >> +>> endobj +5800 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 671.394 258.682 679.959] +/A << /S /GoTo /D (subsection.8.59.1) >> +>> endobj +5801 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 651.994 226.059 662.262] +/A << /S /GoTo /D (subsubsection.8.59.1.1) >> +>> endobj +5802 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 634.296 250.475 644.771] +/A << /S /GoTo /D (subsubsection.8.59.1.2) >> +>> endobj +5803 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 616.599 359.286 627.074] +/A << /S /GoTo /D (section.8.60) >> +>> endobj +5804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 600.605 258.682 609.17] +/A << /S /GoTo /D (subsection.8.60.1) >> +>> endobj +5805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 582.908 206.334 591.473] +/A << /S /GoTo /D (subsubsection.8.60.1.1) >> +>> endobj +5806 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 563.507 250.475 573.982] +/A << /S /GoTo /D (subsubsection.8.60.1.2) >> +>> endobj +5807 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 545.81 201.277 556.078] +/A << /S /GoTo /D (subsubsection.8.60.1.3) >> +>> endobj +5808 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 528.112 226.2 538.587] +/A << /S /GoTo /D (section.8.61) >> +>> endobj +5809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 510.415 221.939 520.683] +/A << /S /GoTo /D (subsection.8.61.1) >> +>> endobj +5810 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 494.421 303.298 503.192] +/A << /S /GoTo /D (subsection.8.61.2) >> +>> endobj +5811 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 475.021 230.417 485.289] +/A << /S /GoTo /D (subsubsection.8.61.2.1) >> +>> endobj +5812 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.323 230.417 467.592] +/A << /S /GoTo /D (subsubsection.8.61.2.2) >> +>> endobj +5813 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 441.329 274.131 449.894] +/A << /S /GoTo /D (subsection.8.61.3) >> +>> endobj +5814 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 421.821 215.362 432.403] +/A << /S /GoTo /D (subsubsection.8.61.3.1) >> +>> endobj +5815 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 405.935 258.682 414.5] +/A << /S /GoTo /D (subsection.8.61.4) >> +>> endobj +5816 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 388.238 210.557 397.009] +/A << /S /GoTo /D (subsubsection.8.61.4.1) >> +>> endobj +5817 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 370.54 206.334 379.105] +/A << /S /GoTo /D (subsubsection.8.61.4.2) >> +>> endobj +5818 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 351.139 201.277 361.408] +/A << /S /GoTo /D (subsubsection.8.61.4.3) >> +>> endobj +5819 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 333.442 238.616 343.71] +/A << /S /GoTo /D (subsection.8.61.5) >> +>> endobj +5820 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 317.448 217.532 326.219] +/A << /S /GoTo /D (subsubsection.8.61.5.1) >> +>> endobj +5821 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 298.047 240.887 308.522] +/A << /S /GoTo /D (section.8.62) >> +>> endobj +5822 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 282.054 274.131 290.618] +/A << /S /GoTo /D (subsection.8.62.1) >> +>> endobj +5823 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 262.545 215.362 273.127] +/A << /S /GoTo /D (subsubsection.8.62.1.1) >> +>> endobj +5824 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 246.659 258.682 255.224] +/A << /S /GoTo /D (subsection.8.62.2) >> +>> endobj +5825 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 227.258 231.305 237.733] +/A << /S /GoTo /D (subsubsection.8.62.2.1) >> +>> endobj +5826 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 211.265 230.256 220.036] +/A << /S /GoTo /D (subsubsection.8.62.2.2) >> +>> endobj +5827 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 191.864 252.678 202.338] +/A << /S /GoTo /D (section.8.63) >> +>> endobj +5828 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 174.166 221.939 184.435] +/A << /S /GoTo /D (subsection.8.63.1) >> +>> endobj +5829 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 158.173 303.298 166.944] +/A << /S /GoTo /D (subsection.8.63.2) >> +>> endobj +5830 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 138.772 256.894 149.04] +/A << /S /GoTo /D (subsubsection.8.63.2.1) >> +>> endobj +5831 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 122.778 274.131 131.343] +/A << /S /GoTo /D (subsection.8.63.3) >> +>> endobj +5832 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 103.27 229.807 113.852] +/A << /S /GoTo /D (subsubsection.8.63.3.1) >> +>> endobj +5833 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 85.68 238.616 95.948] +/A << /S /GoTo /D (subsection.8.63.4) >> +>> endobj +5834 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.875 245.032 78.251] +/A << /S /GoTo /D (subsubsection.8.63.4.1) >> +>> endobj +5836 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5875 0 obj << +/Length 1320 +/Filter /FlateDecode +>> +stream +xKwF,ahR$k4̉ί r$D8jO-1Bچ G/qm7I@:g8_O ;ׅ^ =5E BtMZXbn!W@`C!#d c!,.:-"uؔ()o R_^V!߲8gdx]VdiO>Hu1#MUuR_eFt:|ȇ~:g`>qyٵ?:[2k|=(;y]dުM?bGTw`ª,]IO"oS޻_~ 0gIjѽp{k`Nz=WrԸLqqQ(R+'еV H6k2YRf(\ʼy`΂8h冿̫8BOu@xOu;ɢˌX>o!@Ai7TR{XΟeC֔~Eo?ZdEZ֍v|\a_E򸀚I +V04LG\멡Z/92]kq,͞VӮ +a:k G6I!EZE P5SM]$_3Eԁh_BאЛ,|fQ](E/g BA.lUP-T-WfUYقc*嫸BddCԈ0+>JU*u ujE^v97FQ|g|`+D"u%SGYu Kگ`Bw&hOU?> endobj +5835 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 759.881 206.334 768.446] +/A << /S /GoTo /D (subsubsection.8.63.4.2) >> +>> endobj +5839 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 741.53 228.31 750.094] +/A << /S /GoTo /D (subsubsection.8.63.4.3) >> +>> endobj +5840 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 723.178 230.982 731.949] +/A << /S /GoTo /D (subsubsection.8.63.4.4) >> +>> endobj +5841 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 692.03 170 700.676] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +5842 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 671.796 470.906 682.378] +/A << /S /GoTo /D (section.9.1) >> +>> endobj +5843 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 653.445 460.523 664.027] +/A << /S /GoTo /D (section.9.2) >> +>> endobj +5844 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 635.093 486.444 645.675] +/A << /S /GoTo /D (section.9.3) >> +>> endobj +5845 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 616.742 502.897 627.324] +/A << /S /GoTo /D (section.9.4) >> +>> endobj +5846 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 598.39 477.29 608.973] +/A << /S /GoTo /D (section.9.5) >> +>> endobj +5847 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 580.039 525.406 590.621] +/A << /S /GoTo /D (section.9.6) >> +>> endobj +5878 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 568.191 299.616 578.666] +/A << /S /GoTo /D (section.9.6) >> +>> endobj +5848 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 549.84 221.939 560.108] +/A << /S /GoTo /D (subsection.9.6.1) >> +>> endobj +5849 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 531.381 525.406 541.963] +/A << /S /GoTo /D (section.9.7) >> +>> endobj +5879 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 521.237 273.201 530.008] +/A << /S /GoTo /D (section.9.7) >> +>> endobj +5850 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 501.182 221.939 511.45] +/A << /S /GoTo /D (subsection.9.7.1) >> +>> endobj +5851 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 482.831 276.373 493.099] +/A << /S /GoTo /D (subsection.9.7.2) >> +>> endobj +5852 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 464.372 255.675 474.954] +/A << /S /GoTo /D (subsubsection.9.7.2.1) >> +>> endobj +5853 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 446.02 251.685 456.603] +/A << /S /GoTo /D (subsubsection.9.7.2.2) >> +>> endobj +5854 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 429.48 248.708 438.251] +/A << /S /GoTo /D (subsubsection.9.7.2.3) >> +>> endobj +5855 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 409.425 247.471 419.694] +/A << /S /GoTo /D (subsubsection.9.7.2.4) >> +>> endobj +5856 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 390.966 525.406 401.548] +/A << /S /GoTo /D (section.9.8) >> +>> endobj +5880 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 380.822 289.242 389.593] +/A << /S /GoTo /D (section.9.8) >> +>> endobj +5857 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 360.767 235.693 371.242] +/A << /S /GoTo /D (subsection.9.8.1) >> +>> endobj +5858 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 344.12 222.607 352.684] +/A << /S /GoTo /D (subsubsection.9.8.1.1) >> +>> endobj +5859 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 324.065 252.545 334.539] +/A << /S /GoTo /D (subsubsection.9.8.1.2) >> +>> endobj +5860 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 305.606 525.406 316.188] +/A << /S /GoTo /D (section.9.9) >> +>> endobj +5881 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 295.462 284.991 304.233] +/A << /S /GoTo /D (section.9.9) >> +>> endobj +5861 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 275.299 525.406 285.881] +/A << /S /GoTo /D (section.9.10) >> +>> endobj +5882 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 263.452 290.147 273.926] +/A << /S /GoTo /D (section.9.10) >> +>> endobj +5862 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 244.992 525.406 255.575] +/A << /S /GoTo /D (section.9.11) >> +>> endobj +5883 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 233.037 321.878 243.62] +/A << /S /GoTo /D (section.9.11) >> +>> endobj +5863 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 214.794 276.373 225.062] +/A << /S /GoTo /D (subsection.9.11.1) >> +>> endobj +5864 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 196.442 249.434 206.917] +/A << /S /GoTo /D (subsubsection.9.11.1.1) >> +>> endobj +5865 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 178.091 288.715 188.565] +/A << /S /GoTo /D (subsubsection.9.11.1.2) >> +>> endobj +5866 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 159.632 238.011 170.214] +/A << /S /GoTo /D (subsubsection.9.11.1.3) >> +>> endobj +5867 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 143.092 221.289 151.656] +/A << /S /GoTo /D (subsubsection.9.11.1.4) >> +>> endobj +5868 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 123.037 225.432 133.305] +/A << /S /GoTo /D (subsubsection.9.11.1.5) >> +>> endobj +5869 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 104.578 258.158 114.954] +/A << /S /GoTo /D (subsubsection.9.11.1.6) >> +>> endobj +5870 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 86.226 252.958 96.602] +/A << /S /GoTo /D (subsubsection.9.11.1.7) >> +>> endobj +5871 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 242.485 78.457] +/A << /S /GoTo /D (subsubsection.9.11.1.8) >> +>> endobj +5873 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5920 0 obj << +/Length 1133 +/Filter /FlateDecode +>> +stream +x[Kw8+n陓&Ӆ)Iɏ0ƔtZBƾ+F`i* =!Ao˻m}p3{=??Ƕuk +M7ASП>#00}%S>r(#Qbcm}jĊ̇S%jT%_!Dչ*b?Hy+۞4 `0Hl:{CM~2K ۿr&y>e{>b'ia@C%gJJ +E(F q5&(l\p@V)!T#w_E{)v|<{y(&8lcsOѝKN}4U_J:W: 2Rt/gj0DXkYYKyTy|TM^:^([PP.%ta-"2u-+/q>}l7LOagivdߣa7`nnqSJn{ci?2|M\nZcNJyOf.3HeF[X8YLgY dHOV ) ё7k6=`˄:ݓn2}Xabzuu4 }KUb8ȟ C,uv J3IRj[G8jKxn:X4 +SNxY-B eA$͋*fޤINMV =OGnOdLBԌ2${AX\WĘ V!F伜h("/5ZTs~Ѱw#{)!]ӣ/s 1de > endobj +5872 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 758.07 525.406 768.652] +/A << /S /GoTo /D (section.9.12) >> +>> endobj +5921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 746.115 308.447 756.697] +/A << /S /GoTo /D (section.9.12) >> +>> endobj +5884 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 728.568 235.693 739.042] +/A << /S /GoTo /D (subsection.9.12.1) >> +>> endobj +5885 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 712.617 222.607 721.182] +/A << /S /GoTo /D (subsubsection.9.12.1.1) >> +>> endobj +5886 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 693.259 252.545 703.733] +/A << /S /GoTo /D (subsubsection.9.12.1.2) >> +>> endobj +5887 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 675.604 276.373 685.873] +/A << /S /GoTo /D (subsection.9.12.2) >> +>> endobj +5888 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 659.653 254.222 668.424] +/A << /S /GoTo /D (subsubsection.9.12.2.1) >> +>> endobj +5889 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 640.188 525.406 650.77] +/A << /S /GoTo /D (section.9.13) >> +>> endobj +5922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 630.044 305.686 638.815] +/A << /S /GoTo /D (section.9.13) >> +>> endobj +5890 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 610.686 221.939 620.954] +/A << /S /GoTo /D (subsection.9.13.1) >> +>> endobj +5891 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 593.031 235.693 603.506] +/A << /S /GoTo /D (subsection.9.13.2) >> +>> endobj +5892 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 577.08 222.607 585.645] +/A << /S /GoTo /D (subsubsection.9.13.2.1) >> +>> endobj +5893 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 557.722 252.545 568.197] +/A << /S /GoTo /D (subsubsection.9.13.2.2) >> +>> endobj +5894 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 539.96 525.406 550.542] +/A << /S /GoTo /D (section.9.14) >> +>> endobj +5923 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 529.816 304.878 538.587] +/A << /S /GoTo /D (section.9.14) >> +>> endobj +5895 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 510.458 235.693 520.933] +/A << /S /GoTo /D (subsection.9.14.1) >> +>> endobj +5896 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 492.696 208.656 503.072] +/A << /S /GoTo /D (subsubsection.9.14.1.1) >> +>> endobj +5897 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 476.853 222.607 485.417] +/A << /S /GoTo /D (subsubsection.9.14.1.2) >> +>> endobj +5898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 457.494 252.545 467.969] +/A << /S /GoTo /D (subsubsection.9.14.1.3) >> +>> endobj +5899 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 439.732 525.406 450.315] +/A << /S /GoTo /D (section.9.15) >> +>> endobj +5924 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 427.777 344.608 438.359] +/A << /S /GoTo /D (section.9.15) >> +>> endobj +5900 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 410.23 221.939 420.499] +/A << /S /GoTo /D (subsection.9.15.1) >> +>> endobj +5901 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 392.468 525.406 403.05] +/A << /S /GoTo /D (section.9.16) >> +>> endobj +5925 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 382.324 306.86 391.095] +/A << /S /GoTo /D (section.9.16) >> +>> endobj +5902 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 362.966 235.693 373.441] +/A << /S /GoTo /D (subsection.9.16.1) >> +>> endobj +5903 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 345.204 208.656 355.58] +/A << /S /GoTo /D (subsubsection.9.16.1.1) >> +>> endobj +5904 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 329.361 222.607 337.925] +/A << /S /GoTo /D (subsubsection.9.16.1.2) >> +>> endobj +5905 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 309.895 525.406 320.477] +/A << /S /GoTo /D (section.9.17) >> +>> endobj +5926 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 298.047 298.45 308.522] +/A << /S /GoTo /D (section.9.17) >> +>> endobj +5906 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 280.393 235.693 290.868] +/A << /S /GoTo /D (subsection.9.17.1) >> +>> endobj +5907 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 264.442 222.607 273.007] +/A << /S /GoTo /D (subsubsection.9.17.1.1) >> +>> endobj +5908 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 244.976 525.406 255.559] +/A << /S /GoTo /D (section.9.18) >> +>> endobj +5927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 234.832 308.321 243.603] +/A << /S /GoTo /D (section.9.18) >> +>> endobj +5909 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 215.474 221.939 225.743] +/A << /S /GoTo /D (subsection.9.18.1) >> +>> endobj +5910 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 197.712 525.406 208.294] +/A << /S /GoTo /D (section.9.19) >> +>> endobj +5928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 187.25 329.616 196.339] +/A << /S /GoTo /D (section.9.19) >> +>> endobj +5911 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 168.103 525.406 178.685] +/A << /S /GoTo /D (section.9.20) >> +>> endobj +5929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 157.959 292.649 166.73] +/A << /S /GoTo /D (section.9.20) >> +>> endobj +5912 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 138.601 276.373 148.869] +/A << /S /GoTo /D (subsection.9.20.1) >> +>> endobj +5913 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 120.838 269.617 131.421] +/A << /S /GoTo /D (subsubsection.9.20.1.1) >> +>> endobj +5914 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 104.995 268.398 113.766] +/A << /S /GoTo /D (subsubsection.9.20.1.2) >> +>> endobj +5915 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 85.637 251.685 96.112] +/A << /S /GoTo /D (subsubsection.9.20.1.3) >> +>> endobj +5916 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 67.983 265.457 78.457] +/A << /S /GoTo /D (subsubsection.9.20.1.4) >> +>> endobj +5918 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5959 0 obj << +/Length 1147 +/Filter /FlateDecode +>> +stream +xKw8,a%LƵ=E <O?utus1!"Й:mԑ@qN# ;Ba3K>O`̩w=y7AtUS'w.B'4>9%ܡF)ϜQs=+}%j ͯp`Y0|;GowqdI&YqBgwn|(vTgiTl5k0 +%=Px%ߐ¢[ \ܰOV)G(Ɗ;0}͒U8(SԂ |,>4V$q󑬆.|X4'\`]rG@J7C{CwС!IfTPx> RRiZQg^MwULBjNl#oe8>@+&n $ ʷwQ(DZ*>97gS]$' &S? Ҡg.? HЏ-0,s_b_o{c9q X>0`|\^2_$j2,-={x@~*t@iSafmbB䭭5;E;s[M~vk# Vv<~dˏK-:w]|%˪gVNjG0FUq@O`>!@^pZW!ҶikښR$z1A *4$e1SFvKl}vH O$ԵpRm)hH0)i>ճ &QlW(tCӺK!ǝк/cU<( +[ /kgܻIB3*523庨?=XWx!c:?zGyf +endstream +endobj +5958 0 obj << +/Type /Page +/Contents 5959 0 R +/Resources 5957 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5930 0 R +/Annots [ 5917 0 R 5960 0 R 5931 0 R 5932 0 R 5933 0 R 5934 0 R 5961 0 R 5935 0 R 5962 0 R 5936 0 R 5963 0 R 5937 0 R 5938 0 R 5964 0 R 5939 0 R 5940 0 R 5965 0 R 5941 0 R 5942 0 R 5966 0 R 5943 0 R 5967 0 R 5944 0 R 5968 0 R 5945 0 R 5969 0 R 5946 0 R 5970 0 R 5947 0 R 5971 0 R 5948 0 R 5972 0 R 5949 0 R 5973 0 R 5950 0 R 5974 0 R 5951 0 R 5975 0 R 5952 0 R 5976 0 R 5953 0 R 5977 0 R 5954 0 R 5978 0 R 5955 0 R 5979 0 R ] +>> endobj +5917 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 758.07 525.406 768.652] +/A << /S /GoTo /D (section.9.21) >> +>> endobj +5960 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 746.115 319.637 756.697] +/A << /S /GoTo /D (section.9.21) >> +>> endobj +5931 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 728.179 235.693 738.653] +/A << /S /GoTo /D (subsection.9.21.1) >> +>> endobj +5932 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 710.027 208.656 720.403] +/A << /S /GoTo /D (subsubsection.9.21.1.1) >> +>> endobj +5933 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.591 692.091 252.545 702.566] +/A << /S /GoTo /D (subsubsection.9.21.1.2) >> +>> endobj +5934 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 673.94 525.406 684.522] +/A << /S /GoTo /D (section.9.22) >> +>> endobj +5961 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 663.796 269.435 672.567] +/A << /S /GoTo /D (section.9.22) >> +>> endobj +5935 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 643.941 525.406 654.523] +/A << /S /GoTo /D (section.9.23) >> +>> endobj +5962 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 633.797 283.763 642.568] +/A << /S /GoTo /D (section.9.23) >> +>> endobj +5936 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 613.942 525.406 624.524] +/A << /S /GoTo /D (section.9.24) >> +>> endobj +5963 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 603.798 264.181 612.569] +/A << /S /GoTo /D (section.9.24) >> +>> endobj +5937 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 584.051 221.939 594.319] +/A << /S /GoTo /D (subsection.9.24.1) >> +>> endobj +5938 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 565.9 525.406 576.482] +/A << /S /GoTo /D (section.9.25) >> +>> endobj +5964 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 554.052 329.473 564.527] +/A << /S /GoTo /D (section.9.25) >> +>> endobj +5939 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 536.009 221.939 546.277] +/A << /S /GoTo /D (subsection.9.25.1) >> +>> endobj +5940 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 517.857 525.406 528.44] +/A << /S /GoTo /D (section.9.26) >> +>> endobj +5965 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 505.902 304.233 516.484] +/A << /S /GoTo /D (section.9.26) >> +>> endobj +5941 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.719 487.966 221.939 498.234] +/A << /S /GoTo /D (subsection.9.26.1) >> +>> endobj +5942 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 469.815 525.406 480.397] +/A << /S /GoTo /D (section.9.27) >> +>> endobj +5966 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 457.967 305.372 468.442] +/A << /S /GoTo /D (section.9.27) >> +>> endobj +5943 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 439.816 525.406 450.398] +/A << /S /GoTo /D (section.9.28) >> +>> endobj +5967 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 429.672 354.749 438.443] +/A << /S /GoTo /D (section.9.28) >> +>> endobj +5944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 409.817 525.406 420.399] +/A << /S /GoTo /D (section.9.29) >> +>> endobj +5968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 397.862 370.198 408.444] +/A << /S /GoTo /D (section.9.29) >> +>> endobj +5945 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 379.818 525.406 390.401] +/A << /S /GoTo /D (section.9.30) >> +>> endobj +5969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 367.863 358.739 378.445] +/A << /S /GoTo /D (section.9.30) >> +>> endobj +5946 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 349.82 525.406 360.402] +/A << /S /GoTo /D (section.9.31) >> +>> endobj +5970 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 339.676 358.515 348.447] +/A << /S /GoTo /D (section.9.31) >> +>> endobj +5947 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 319.821 525.406 330.403] +/A << /S /GoTo /D (section.9.32) >> +>> endobj +5971 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 309.677 419.395 318.448] +/A << /S /GoTo /D (section.9.32) >> +>> endobj +5948 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 289.822 525.406 300.404] +/A << /S /GoTo /D (section.9.33) >> +>> endobj +5972 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 279.678 414.912 288.449] +/A << /S /GoTo /D (section.9.33) >> +>> endobj +5949 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 259.823 525.406 270.405] +/A << /S /GoTo /D (section.9.34) >> +>> endobj +5973 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 249.679 421.341 258.45] +/A << /S /GoTo /D (section.9.34) >> +>> endobj +5950 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 229.824 525.406 240.406] +/A << /S /GoTo /D (section.9.35) >> +>> endobj +5974 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 219.68 416.858 228.451] +/A << /S /GoTo /D (section.9.35) >> +>> endobj +5951 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 199.825 525.406 210.408] +/A << /S /GoTo /D (section.9.36) >> +>> endobj +5975 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 189.681 410.375 198.452] +/A << /S /GoTo /D (section.9.36) >> +>> endobj +5952 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 169.827 525.406 180.409] +/A << /S /GoTo /D (section.9.37) >> +>> endobj +5976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 159.683 405.892 168.454] +/A << /S /GoTo /D (section.9.37) >> +>> endobj +5953 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 139.828 525.406 150.41] +/A << /S /GoTo /D (section.9.38) >> +>> endobj +5977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 129.764 150.803 138.455] +/A << /S /GoTo /D (section.9.38) >> +>> endobj +5954 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 109.829 525.406 120.411] +/A << /S /GoTo /D (section.9.39) >> +>> endobj +5978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 99.766 129.15 108.25] +/A << /S /GoTo /D (section.9.39) >> +>> endobj +5955 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 79.83 525.406 90.412] +/A << /S /GoTo /D (section.9.40) >> +>> endobj +5979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 69.686 207.47 78.457] +/A << /S /GoTo /D (section.9.40) >> +>> endobj +5957 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5988 0 obj << +/Length 594 +/Filter /FlateDecode +>> +stream +xr0JEj %BD D L(qp]D~ؚmQ 3g *IlM0ȵ` xkx8cﻇ:]5JbM8J~ "F(p{@ͲRU * +oB=v~$S@_$ܿ/Ex4R5C9Ug"4rPR\͚1ϋ[D)Jq + !(܅u#&Yrfv +&P0r.~ѿç w| Tp{X ?C(9a0a;L.1fđJ'T>qEaݢuuUž>'- +{ܼ 9ǖ%Gc5UaB0?A!#%D H;f ZcKN-__h,'ة}&c}?gA  vgq$0C(wIJ'Sr݁YI.n&achPG8nIuպF3!lMgYޓ_gz +endstream +endobj +5987 0 obj << +/Type /Page +/Contents 5988 0 R +/Resources 5986 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5930 0 R +/Annots [ 5956 0 R 5989 0 R 5980 0 R 5990 0 R 5981 0 R 5991 0 R 5982 0 R 5992 0 R 5983 0 R 5993 0 R 5984 0 R 5994 0 R 5985 0 R 5995 0 R ] +>> endobj +5956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 758.07 525.406 768.652] +/A << /S /GoTo /D (section.9.41) >> +>> endobj +5989 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 747.926 150.803 756.697] +/A << /S /GoTo /D (section.9.41) >> +>> endobj +5980 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 728.49 525.406 739.072] +/A << /S /GoTo /D (section.9.42) >> +>> endobj +5990 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 718.346 167.741 727.117] +/A << /S /GoTo /D (section.9.42) >> +>> endobj +5981 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 698.911 525.406 709.493] +/A << /S /GoTo /D (section.9.43) >> +>> endobj +5991 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 688.767 167.741 697.538] +/A << /S /GoTo /D (section.9.43) >> +>> endobj +5982 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 669.331 525.406 679.913] +/A << /S /GoTo /D (section.9.44) >> +>> endobj +5992 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 659.187 129.15 667.752] +/A << /S /GoTo /D (section.9.44) >> +>> endobj +5983 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 639.752 525.406 650.334] +/A << /S /GoTo /D (section.9.45) >> +>> endobj +5993 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 629.608 129.15 638.172] +/A << /S /GoTo /D (section.9.45) >> +>> endobj +5984 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 610.172 525.406 620.754] +/A << /S /GoTo /D (section.9.46) >> +>> endobj +5994 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 600.109 150.803 608.799] +/A << /S /GoTo /D (section.9.46) >> +>> endobj +5985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.81 580.593 525.406 591.175] +/A << /S /GoTo /D (section.9.47) >> +>> endobj +5995 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 570.529 167.741 579.22] +/A << /S /GoTo /D (section.9.47) >> +>> endobj +5986 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5998 0 obj << +/Length 19 +/Filter /FlateDecode +>> +stream +x3PHW0Pp2Ac( +endstream +endobj +5997 0 obj << +/Type /Page +/Contents 5998 0 R +/Resources 5996 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5930 0 R +>> endobj +5996 0 obj << +/ProcSet [ /PDF ] +>> endobj +6013 0 obj << +/Length 1782 +/Filter /FlateDecode +>> +stream +xڥXKs6Wpr)5)&u&Mhje:E$`wXP"-Nz",Bq|o^?~Y="'Xx2 "Mt{i:,Vv6ÅZ6ѣWB6Fz_߹u-[&[aJ…F۪jet F(-4`Eˋn6%?-g\,ݾRb[Yww1aV,L\^menZTroc [J0oAMS8g`Ma$>~&ڊcL@'!p3ʺ-υvaPvW4LԤTI3򹨷I]FQoJȩY@TΤ՚m!::?ߥhxRsM0`01l.,0(,PPΘr(q4[Y#̉0&ksc3'ЬEx` \- ,6BjNW CH^tIۤ:Qtv18dbECz%!"7!j"P!iݲ7 [ILٙ_yiD!;G/ V߽α +nZ;ٷ9W@1A8wVw9X`U{~;^<<̓ES[x<*1K8zu(A5s[3GP~$H3χ$3O/+z, V6_Q7'(ySX‹gP:Bwa&;))ax"#'B;of Mvܴk`L8xgپऎĒwB^vF+'/A +Rp 0h4I8+uw$\^a2`tܡ +:#Mבu|+(>PW-Eǟ1;; *lY}[p%VMse=Z_mtp7e/e;Nه^u + *@5лRkv}2L#_QP +B =m[ѻXk}sUߔ{ Z4j ,дآ}B8~~AV*~C/デARW <v(~\}2b6{f?K M{p;7m ۚxߚymJeV}u2|A~BQcmYDP/2\,Silxa^"?(jύ Pngx7i h;>FB@5oxW2wDOahܣax K(*ܚ()ʦVMk{ʥ) +]Yѯ 1J~n2XJg^z^ B!y|ob-lW%ND^ %=Ҿ8௽v޸9ZjyJz'O>u8 +endstream +endobj +6012 0 obj << +/Type /Page +/Contents 6013 0 R +/Resources 6011 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5930 0 R +/Annots [ 5999 0 R 6000 0 R 6001 0 R 6002 0 R 6003 0 R 6004 0 R 6005 0 R 6006 0 R 6007 0 R 6008 0 R 6009 0 R 6010 0 R ] +>> endobj +5999 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 530.336 107.728 540.918] +/Subtype/Link/A<> +>> endobj +6000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [449.593 530.336 479.999 540.918] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 500.864 102.742 511.339] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [281.669 488.801 312.075 499.383] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [97.676 471.177 161.006 481.553] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.825 447.374 115.232 457.642] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6005 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [236.895 412.018 310.619 422.6] +/Subtype/Link/A<> +>> endobj +6006 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.388 412.018 422.794 422.6] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6007 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [223.316 301.806 253.722 312.388] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6008 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.944 126.839 265.075 137.368] +/A << /S /GoTo /D (general) >> +>> endobj +6009 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [200.857 69.87 316.423 80.344] +/Subtype/Link/A<> +>> endobj +6010 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.42 69.87 517.006 80.344] +/A << /S /GoTo /D (general) >> +>> endobj +6014 0 obj << +/D [6012 0 R /XYZ 69.866 801.979 null] +>> endobj +2 0 obj << +/D [6012 0 R /XYZ 70.866 771.024 null] +>> endobj +6015 0 obj << +/D [6012 0 R /XYZ 70.866 580.376 null] +>> endobj +6016 0 obj << +/D [6012 0 R /XYZ 70.866 579.67 null] +>> endobj +6018 0 obj << +/D [6012 0 R /XYZ 70.866 245.206 null] +>> endobj +6019 0 obj << +/D [6012 0 R /XYZ 70.866 166.444 null] +>> endobj +6020 0 obj << +/D [6012 0 R /XYZ 70.866 109.367 null] +>> endobj +6011 0 obj << +/Font << /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F74 4717 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6026 0 obj << +/Length 261 +/Filter /FlateDecode +>> +stream +xڕP=O0+5Pq* Z@X[Gn*%dVk0`k`[sPX17ȇ t!-Ģ.G9sF࿦2+OdChnde2)OJJ%#L0:?q#k&Vcdam8[Y+'4rD\;PEUaz pM${BU?V}๑Xfh +endstream +endobj +6025 0 obj << +/Type /Page +/Contents 6026 0 R +/Resources 6024 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 5930 0 R +>> endobj +6027 0 obj << +/D [6025 0 R /XYZ 69.866 801.979 null] +>> endobj +6024 0 obj << +/Font << /F74 4717 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6038 0 obj << +/Length 1542 +/Filter /FlateDecode +>> +stream +xڝWKo8WTj,i۴ E`hȌMD j35z25{hL$?7go.,$2{JL"*")4G_㫥Z;ݎi:ѿwB44E!"y2mujzN9,&Ȃ29| <6ӸQhg&FR?5}^6њ霱 ~Cy`A~%%d&e^M&I*K*M$#`CIр3_<Ú̸|5EV?eoj76(VqC!xo]T#OT5un+빩.$#$KS-n)ofY^44+a0k)Yn\di;ƧQ5z[4̓ ?5ycz mZonUPCD2j1)xrs}<r7>$ӯQiմ^k`nH/EVʰ27jr99qU%&rȪr= "O&r3;8JQ? ծ^`GfWH}"z>м "q0ˁL>$lsc+')g`(*϶/~e>XpDRswgD3>1ꦟD XȝnitD橆I>gLB ^ %"fI@ŤU+[^Bý o,>MOX)zR<>bʒmƆBףIZӭ*߸x +HZyuu~/,f,gIÍMѸ!QA;:>D[t[VXyDtY fP8˒ 9C)yb&[b2xP#EoB?0zNYc#盘*e_9պָk tI=ƾU=ۂcEBRuÕFcݒqT] :ʔUba=$  oiC 9',-V 5~EUƳOtzwTԵau ͺYr'xQlAL 뭶f`hŒok4n.ƺYWadYpnV.k0iy<n8/^NͲ{36D\ʕERNK5d_І rۼ7U]  Hj-X@]{˻5 {ޱHzA8 ˾]9<^We,B47μpS;h͇F<'yz+0|ߔUDi0wgI'َ8xd{PDaK8NrZ? 6'zЀ2~1UoXTk羭*@< +'[;1@Q*wgp +endstream +endobj +6037 0 obj << +/Type /Page +/Contents 6038 0 R +/Resources 6036 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6043 0 R +/Annots [ 6028 0 R 6029 0 R 6030 0 R 6031 0 R 6032 0 R 6033 0 R 6034 0 R ] +>> endobj +6028 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [310.023 479.302 340.429 489.884] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6029 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.846 373.209 403.253 383.791] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6030 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [249.22 361.362 472.383 371.836] +/Subtype/Link/A<> +>> endobj +6031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.338 227.575 294.744 238.157] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6032 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [232.918 197.31 420.216 207.892] +/Subtype/Link/A<> +>> endobj +6033 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [270.029 173.814 325.82 184.396] +/Subtype/Link/A<> +>> endobj +6034 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [157.665 150.779 297.142 160.9] +/Subtype/Link/A<> +>> endobj +6039 0 obj << +/D [6037 0 R /XYZ 69.866 801.979 null] +>> endobj +6 0 obj << +/D [6037 0 R /XYZ 70.866 771.024 null] +>> endobj +6023 0 obj << +/D [6037 0 R /XYZ 70.866 585.06 null] +>> endobj +6040 0 obj << +/D [6037 0 R /XYZ 359.505 567.715 null] +>> endobj +10 0 obj << +/D [6037 0 R /XYZ 70.866 545.105 null] +>> endobj +6041 0 obj << +/D [6037 0 R /XYZ 70.866 415.647 null] +>> endobj +6042 0 obj << +/D [6037 0 R /XYZ 70.866 268.02 null] +>> endobj +6036 0 obj << +/Font << /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R /F74 4717 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6061 0 obj << +/Length 3378 +/Filter /FlateDecode +>> +stream +xڽZIsWL)c8 v ʁblQ$\)U L "y[c#/=o5al\|}sqMlvEn;>6qّ7?Yo7~ف4"QjrZgIU]…lO?;874 Bſ/ӱ1\ױ0lGuVnaVYiUֵ/[h+|JƳ7‡7`@hnO=}A-n;֗"S[7.cwҊPWL1 i ]êķH{sJ]/:Eԇ"cn: +;axA"Ϟi6uZUVT Lz7Ѳl`$crA ?Gt5Z~OE-OD:=0-1}c u-@Sv+SsI Wr|]`ߘw`II8=u7 l?O|xxoEwHO3}Rտ:zy}gcQ@+Ԡ8=N=zֳi \T,Z`SUM߁wE Oܟ'ruC | Yug롷B T#T:= +h;|S4[׵ڎ? +=ďGヨũ֢ xE:Ƌ&JFzW8? XQ ~ +NR(#FۨCs0h:0a\ }Q% MWaG]ۜiE.nW"2W -Iˎ@ s&MC/_ + E! .Q4'zZf%Za&shVrIqHpl_vi2gmM3dN]cJ%piх "џR«)>W2s"Oy\1;uYdz,EB/&; -V*S}62fS գ87J\M8O4"ad,JA &&E".ʸI$etӈ!"Iq".l:$"qI:;\ccE{&f}&jY'Oke,.T(yuIptG%" Ow[IgZZ^ި#;8 +2ZCx,s8+% ia-w2n "gP4K/%b3A+KXJpƜ퉇C܊%nEӸlsT'n5GfQq[z܁(Wh!c2 +@3 W1E)V̺{׽CT}9ҟ-G]b\o˜_]34!kp4k6o$N8;IQʰ[pcX"f VSfh4Uʍ&fќ|oL13I,.EMuC)Bۘ0Qa 8O1S46 L=em՜|-e} ba Q9.'?AA@(VpݪrL1g;+a +E^0vZ4OO̦F7 wO9,L1NEi9sLUg4FRr Eh6n8y%10U^Ͼ>}n]Qپ\{'וyϸ1”JɓN޴^RH+>$_z[H( 7Z"vp]]r)L%42DXa>* v0ZLh<OS{Bd,Q΢8=yI8^p9/ۯ};ywۄ_\hO_kd~ٴ<3Me A͊I SBLRA4WMkC'6'VS}3VHzXJ> endobj +6035 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.158 732.765 181.565 743.347] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6044 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [264.248 703.646 499.366 713.768] +/Subtype/Link/A<> +>> endobj +6045 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [149.122 685.561 605.411 696.144] +/Subtype/Link/A<> +>> endobj +6046 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 641.438 108.324 655.722] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.441 601.305 434.848 611.887] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6048 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.385 571.725 373.791 582.307] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6049 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.974 542.253 444.039 552.728] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6050 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [223.855 518.235 254.261 528.818] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6051 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [451.84 324.57 525.406 335.152] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +6066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 312.722 130.152 323.197] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +6052 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 283.143 193.74 293.617] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +6053 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.378 265.411 501.799 275.993] +/A << /S /GoTo /D (class_photon_network_a62c512b8fe143fac07ff55e849aa48d5) >> +>> endobj +6054 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.206 241.5 285.195 252.082] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +6055 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.047 91.785 319.377 102.367] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6056 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.999 79.83 525.406 90.412] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6062 0 obj << +/D [6060 0 R /XYZ 69.866 801.979 null] +>> endobj +6063 0 obj << +/D [6060 0 R /XYZ 70.866 775.009 null] +>> endobj +6064 0 obj << +/D [6060 0 R /XYZ 70.866 663.24 null] +>> endobj +6065 0 obj << +/D [6060 0 R /XYZ 345.25 485.978 null] +>> endobj +14 0 obj << +/D [6060 0 R /XYZ 70.866 465.512 null] +>> endobj +6059 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6090 0 obj << +/Length 2771 +/Filter /FlateDecode +>> +stream +xڭr`5SsرFQl9LJa ˬ){XHPBu/ z78E4[$ g׷.dXnϮ{'pYX:W)Y-8^Z#'f~htA4K7'?x ^<7\-gr3ЍɿO3Ýwﻫ8a lBvQ|1 +8H9<]!C5x@$y#;?ٴȵix0Yf`,20.s p 2O]+F¥ ,%v6B w&oPy" + Dkҭ*̓lUV + Ptf "zq="2^Ԭr @# VOr+w2K̊rS r#+ ֤ },ɌњegZK+ ߍq~8K<r1{س-> l@נ DS#ᙈOo,w8)=s> !"g#2*l/K^7l* +P1L$A#=,$v]ZC^wFh 8F~8Un+JoBnDPQM&ˍA&6E+'p!Lۊ?5RB0"7gyLj<U7p\SVl@b,RV`D,>p#K" Am/O7LIeE=0D1 ^96_(F$TB˔%J#E{Gv¶)~rOJN2 ;_8_oBxt^UxBE&}hG5!/Z[0,A `Pe{f9la6KJ[ܘS%Ƕ#SOaDmo*!2]I)d\ жOF^><بĀgEf{vjx4n f"J'^w䯞Hd-]ȱ\Lɡ o>U?M9!CÙaysІrc!p=#%z^@2=`_461h!7m[ƒa\@R~XNAO˜.|hMv:8u{t\nCYU)uYFuR6u7\wJ1v{ DI$a nX +y-o8cGC8i $(h*4fbe. *uh#` +X{QL=nl 1L Me`Ou:)[D~dk!ZG@G[G$%/d#{H(n“U QyX}Kuyig":=to&>S詪f.ǮAb) >wxL gG✠*{). l :$p?ǂ4DvV~3ɖ2&_t]{Fn%Ϟ*0"l1Kz8dzvxT;ś=xy+w[1I?׷-:m,Dh ~Zr—A>HX$"gt!aY7! \W4n?Hd=r^ХuJ"$9W9 ܣݷyF6w5f%Rz +;cL%-ް"%а MF~wU.Io2~`0\M|UVm+əeoIr=r0fK"YJt +`VꚌ7/T6_4Sh2x,7X`n/ѕU[_b\#|S1?O>Qb[o-|Z!]ӲOs` + } +endstream +endobj +6089 0 obj << +/Type /Page +/Contents 6090 0 R +/Resources 6088 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6043 0 R +/Annots [ 6057 0 R 6058 0 R 6071 0 R 6072 0 R 6073 0 R 6074 0 R 6075 0 R 6076 0 R 6077 0 R 6078 0 R 6079 0 R 6080 0 R 6081 0 R 6082 0 R 6083 0 R 6084 0 R 6085 0 R 6086 0 R ] +>> endobj +6057 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.438 733.411 208.845 743.994] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.339 709.501 153.745 720.083] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6071 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [243.406 507.834 306.737 518.416] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6072 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.529 457.711 142.996 465.238] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +6073 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.662 457.711 235.05 465.238] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6074 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.242 457.711 285.262 465.238] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +6075 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.789 360.622 208.776 372.858] +/A << /S /GoTo /D (class_room) >> +>> endobj +6076 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [79.84 306.783 110.247 317.366] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 274.46 92.691 284.85] +/A << /S /GoTo /D (class_room) >> +>> endobj +6078 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 249.77 95.775 260.245] +/A << /S /GoTo /D (class_room) >> +>> endobj +6079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 175.63 109.521 183.156] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +6080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.662 175.63 218.313 183.156] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +6081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 151.72 117.89 159.246] +/A << /S /GoTo /D (class_room_options) >> +>> endobj +6082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.399 151.72 243.419 159.246] +/A << /S /GoTo /D (class_room_options) >> +>> endobj +6083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 135.78 113.705 143.306] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da942b62b9b9c5fa148dfe59f3488d4d08) >> +>> endobj +6084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.136 135.78 255.972 143.306] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +6085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.164 135.78 289.446 143.306] +/A << /S /GoTo /D (class_typed_lobby_a127f509c2991db15c8d1801ec9fe8b35) >> +>> endobj +6086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 97.454 189.804 108.037] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +6091 0 obj << +/D [6089 0 R /XYZ 69.866 801.979 null] +>> endobj +6092 0 obj << +/D [6089 0 R /XYZ 70.866 773.016 null] +>> endobj +6093 0 obj << +/D [6089 0 R /XYZ 70.866 680.03 null] +>> endobj +6094 0 obj << +/D [6089 0 R /XYZ 70.866 377.96 null] +>> endobj +6095 0 obj << +/D [6089 0 R /XYZ 70.866 289.268 null] +>> endobj +6088 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6120 0 obj << +/Length 2898 +/Filter /FlateDecode +>> +stream +xڽrۺ_Kb:}ȽI$nt%SHQ; $HSɴӇ X,+{[9{~uu-Vn$fz*IiZ/8׫w0ȋ-ѕ>ry+ew;]- +^]~{ +E;X޻jqGEn0/v 8PPg~]>ՆbJ!㛳ŗ X9z;dcO͒6w}Tڠ3JoqDnp0RBÂ9e9uǻyݕkU,q/E5V]#xyhޘx'7G(obr2la7#[vAT(@LT1[Uh9]BoP[ՎttPɝjʾ# +y۞=xץT@P丽Mn"nTT:C9Q?{b:sEUm0\OQ(rZGs}5Z5gPw&{ng=ܸC]V-}V݁= U*GO8A9]CH=%CD߷ -hyZ3LQoźcאs pZ(=n3wv,l"gqO~q!eN<=%(·/_Ir)!æDՈ7S`DmE!Xr{UoEmzyQjk|QnkEތhEu{0%7c9w;7LŔ׻*rF?>J[mLNjm ?S4aUHܗ0.L%@e*6 Xt;`(0gA\^8ِoibN9C͉9ќ31P^J2PD8 '9 + J4 yl(^+;GD{^Fݛ$ݵ'?wW;kGqMCgQỶS\F>ฮ+[]ӟ510)9UF/FerN\n8>DI(,Y.Pq}V EP (fX0bȹ IWeOdPIuR +Q bj)ay["dlf+H)8e>hhW ?U!Q6R䔋JR 0)ȆyT-0H_i5ԈsOۇD ;B) NO~R7E/Oj&NDռe]=B'yCi׊Bx(el8 3qs) + jq,wܓK<5+Y"RJUﮅb&6oԩz(lqMpUo!3VI+ͱʷϱU)Ն+DXS.9Tj+z%E)$Le9%a =]|1'1SQ3a{`p3.a(|rI^dƩH^R^TF갾.tSV9I3YX6TӹQ~NSWyp5Tz +_*Dp?qd!j($L; Rs]`6eqDDu%u$<>k*(A> endobj +6087 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [100.919 758.07 123.74 768.598] +/A << /S /GoTo /D (class_room) >> +>> endobj +6103 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 700.538 109.521 708.065] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +6104 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.164 700.538 297.815 708.065] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +6105 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 692.568 130.443 700.095] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da4cd18dd5dcd9d56224a0f41273998bdc) >> +>> endobj +6106 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.326 559.436 431.362 570.018] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour) >> +>> endobj +6107 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [77.27 547.481 150.994 558.063] +/Subtype/Link/A<> +>> endobj +6108 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.111 417.183 464.768 427.765] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6109 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 393.272 525.406 403.855] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +6125 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 381.317 148.649 391.899] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +6110 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.96 312.171 363.617 322.753] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6111 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.587 206.48 256.78 216.955] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +6112 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 135.929 122.238 145.905] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6113 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 109.41 119.527 119.992] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6114 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [110.732 97.454 160.389 107.83] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6115 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [326.415 97.454 376.072 107.83] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6116 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.11 79.83 262.767 90.206] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6121 0 obj << +/D [6119 0 R /XYZ 69.866 801.979 null] +>> endobj +6122 0 obj << +/D [6119 0 R /XYZ 70.866 773.016 null] +>> endobj +6123 0 obj << +/D [6119 0 R /XYZ 70.866 630.613 null] +>> endobj +6124 0 obj << +/D [6119 0 R /XYZ 70.866 500.315 null] +>> endobj +6126 0 obj << +/D [6119 0 R /XYZ 70.866 351.776 null] +>> endobj +6127 0 obj << +/D [6119 0 R /XYZ 70.866 151.007 null] +>> endobj +6118 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6152 0 obj << +/Length 2619 +/Filter /FlateDecode +>> +stream +xڽ]sݿKT:}%m&7Mݻ'ӡɵĄH:_Z(پ-b,rwg]GZ3IJf{uaؾM~ z{+ S'R`B$ N3\/nV- f!ʥFuuÙ;.{kxk4c;+ +;#Xf."];nOc&v#+Q$v7)5lWw0\F˶2]lVLе?~F/WVu׾PVzݾh۵̢l;~;`5XN⦼m4\nx> 3{b7_Whu#XC)0fb@]j <"߲P+]ߩE6<DD "j苙)) +2،eGAhD>nֆ:J䂁a/W̧p"_E +|f6V'gxd 4 a-,1)#E4 >6m AJ1f O?ByrBJ`=b鹮F˱`|Z|`yPi89װOf)Ut*׶DG] hAx _S[0iޘM+R7Q~:A:GۛDEVB(HbVڽ.=#û9r4}?{4H,ږh s~Dύiaն\A.lfz??S(؏pgχ6E^wc{q5O h3ڗ5Y^ 4ŋ1Q¸l"q~=x'vCFH^PM@K? +Xlx-:sE]QCS}Vg:' }`RhdtaBܛj{4+6IA.Ӥ(ELK +N8ĢӱKd$XBV.9^bl 6qTL2=-'= 1xs_F:#diGo162_5۾ɗ]v#G\il:+iAP'c٣āOI>CLDZ5i7\/ U9^Ŀ2rWalג.;7d>T=̱xf_'SY +endstream +endobj +6151 0 obj << +/Type /Page +/Contents 6152 0 R +/Resources 6150 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6043 0 R +/Annots [ 6117 0 R 6132 0 R 6133 0 R 6134 0 R 6135 0 R 6136 0 R 6137 0 R 6138 0 R 6139 0 R 6140 0 R 6141 0 R 6142 0 R 6143 0 R 6144 0 R 6157 0 R 6145 0 R 6146 0 R 6147 0 R ] +>> endobj +6117 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.978 758.07 157.635 768.652] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6132 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [78.911 590.887 128.568 601.362] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6133 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [90.791 525.696 180.654 532.916] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa864e7f0d7510922caf9c107b8dd771a3) >> +>> endobj +6134 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.846 525.696 235.05 532.916] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +6135 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.976 517.42 168.101 524.946] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +6136 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [128.45 501.479 168.101 509.005] +/A << /S /GoTo /D (class_photon_stream_a99e20ecd7737381042751acf8ec8fc4b) >> +>> endobj +6137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.611 413.808 293.631 421.334] +/A << /S /GoTo /D (class_photon_stream_ae1bda0f78819d5b29d72c968b856781b) >> +>> endobj +6138 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.164 405.838 306.184 413.364] +/A << /S /GoTo /D (class_photon_stream_ae1bda0f78819d5b29d72c968b856781b) >> +>> endobj +6139 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.476 348.368 237.781 358.842] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +6140 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [483.549 262.73 520.421 273.205] +/A << /S /GoTo /D (class_pun_r_p_c) >> +>> endobj +6141 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [78.343 250.775 128 261.249] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6142 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [74.054 227.119 101.153 234.338] +/A << /S /GoTo /D (class_pun_r_p_c) >> +>> endobj +6143 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [299.461 165.356 349.118 175.831] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6144 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [484.764 165.356 525.406 175.831] +/A << /S /GoTo /D (class_photon_1_1_mono_behaviour) >> +>> endobj +6157 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 153.293 134.474 163.876] +/A << /S /GoTo /D (class_photon_1_1_mono_behaviour) >> +>> endobj +6145 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.489 141.338 233.146 151.921] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6146 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.399 109.513 268.525 117.039] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fab1c94ca2fbc3e78fc30069c8d0f01680) >> +>> endobj +6147 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.051 79.83 391.708 90.412] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6153 0 obj << +/D [6151 0 R /XYZ 69.866 801.979 null] +>> endobj +6154 0 obj << +/D [6151 0 R /XYZ 70.866 726.353 null] +>> endobj +6155 0 obj << +/D [6151 0 R /XYZ 70.866 630.753 null] +>> endobj +6156 0 obj << +/D [6151 0 R /XYZ 216.334 339.296 null] +>> endobj +18 0 obj << +/D [6151 0 R /XYZ 70.866 320.325 null] +>> endobj +6150 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6178 0 obj << +/Length 2890 +/Filter /FlateDecode +>> +stream +xڵYs6_vLT:&MN급."agPI>_'(Rfn&ۅv-^>{"JpZ%"]n/⃓-?]qF^ jT ͜1t~^q`o:͂hQ>|%p-ni~šG!Żϼjw=k購UW}dy+gS`]:]Qm̩poߩeUϷ>z>,؉~ZWTs}PYjjw`p;X̜V-ˋfxswWq /XN譜4%s~ޔSWU]s2.oVsyVqWS7"@q@"t=wv4ǏVO>y'L#s\M{4^e+Fv(H9:ۭۗg4rn~S]oի +HkU $/b%,*eNUư X{/*ʊɜ*^$* 3< t/e|xpie߈yn?~z"B%0Y +3T7*O'0dq8_ъ (ghض9GeoHXP3C9gaBj i&( d'N:v7y!${)<0+sqnr mn0nPQkvzȌG(M`{q3? +8o|^ *`g)>z;l7_d0efư ʭ:qM3LWuݩgO cE2{Е56._K] 5cP40ݗRd\G`y~9 q /r]h[miKAIJ2Sx>eW8bbKRQ5zV ŽT5wPlB8kj]ׄ%&T}oJ8ʇ({4G 2oJx8zKCY@nU^Mn 1>ٕxe(6P+*Z3p(f0ҙ[ :twt2"oKޒpԋIYvї8,JEEh!8p赭W) x%3K]~l𕻒~!ˢ96R)|~= NB :2wdT|>{ %DQJxwO),N S2\& SdMd((2'I>9Cc61ybś5s\~fλro7U.l8_-\0`331{Xv:ob90`fSI(n ֐i +'xs;odd&j]+B潀o[ yl +4Ze/Ì~;Q[ȩk\ӓX fCxwȊ58yH +! +{/YtbgvE=fੱJnhW+}`d%SL?'ZtmY|-2KPAB +`Uw䄀 @oxƛ^*S @>? 5徍L|| PepFq}ǀ4 &lqRyzo|tpbc(C&qQ8ݭ3i_@7؁O;E..H)GOH +Àn_X_6oΖa ģFt=nF&({M9(dXogq-T//.*=jTu g!Ov{ԏ7w6drEahΣ0tԌs[u@LԢ.{_ nVMF>=iAǻ#oľV<f-+GP"}0վN&ݥa?OBI6O觫@E/NJe"t98pfWSBG4O=2:rۚ8u> \oX.=PXf$P[+zr-b$ W=QFI8 "{`'ƉY9/n(0C:ԨE~ʲl.9O6߸ +_/*iadP\%t$.ԗ9v\ׄwЅvscRQo +endstream +endobj +6177 0 obj << +/Type /Page +/Contents 6178 0 R +/Resources 6176 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6043 0 R +/Annots [ 6148 0 R 6149 0 R 6166 0 R 6167 0 R 6168 0 R 6169 0 R 6170 0 R 6171 0 R 6172 0 R ] +>> endobj +6148 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.083 734.159 242.552 744.742] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +6149 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [74.054 712.181 101.153 719.4] +/A << /S /GoTo /D (class_pun_r_p_c) >> +>> endobj +6166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.689 703.904 297.815 711.43] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +6167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.339 607.676 241.996 618.258] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6168 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.851 458.268 278.551 468.644] +/A << /S /GoTo /D (class_photon_network_a5bb203a37b6db717583ea7b81fb56852) >> +>> endobj +6169 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [116.694 258.474 147.101 268.743] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6170 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [116.694 167.185 147.101 177.767] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [116.694 103.74 147.101 114.323] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.64 67.983 381.046 78.457] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6179 0 obj << +/D [6177 0 R /XYZ 69.866 801.979 null] +>> endobj +6180 0 obj << +/D [6177 0 R /XYZ 70.866 661.228 null] +>> endobj +6181 0 obj << +/D [6177 0 R /XYZ 70.866 380.093 null] +>> endobj +6182 0 obj << +/D [6177 0 R /XYZ 70.866 345.705 null] +>> endobj +6183 0 obj << +/D [6177 0 R /XYZ 70.866 322.33 null] +>> endobj +6184 0 obj << +/D [6177 0 R /XYZ 70.866 243.502 null] +>> endobj +6185 0 obj << +/D [6177 0 R /XYZ 70.866 140.473 null] +>> endobj +6176 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F95 6017 0 R /F73 4716 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6200 0 obj << +/Length 3224 +/Filter /FlateDecode +>> +stream +xZK)X<T98+eiT$$"CcѬT{5 7o) +ytt~,^U,rTx-ϕZdWqɋpye`ZS/yf$9)+׻Es?x/b c,?^3<.4$vp] WM"S]&>-Zt{,+7z<)?J}aQ{q!{?e{[ݞazzϓ4=BBW 71{ۗ5K]eZ]U>0ZnZvޭk5?aҔ% ;ܹ`sȗL`lgIBj`"WGûegƗ ވm_vGCQE[~ZBCW8vE$[ΫhtΑ7H\O6FdSZ"[!xtHZyz'bVu]q㕶ѝ'HSoF dNUҥcDp3e rXʆ}[YW&Ǥ=)c6x~AC4Qv2yt&xxlP#I 8@: $E-C_q,ʺϢL<8_ bJڴe>r{D6; +BZYp DwR&DpJ,r C;'Y@,ؘDW=MC?'[L;]l/EAN 2KqY YNn cjɗB~]T`eC80;PD 3.|լ[Cc@0 um0Bb]-u +P56ȭf +z)3}ʛgMaEAcgTLn5 PkyrmU1 +zؒ_ !nl5*7 $.9]]#!:YbEd5w` +~GV+=$Q>Qw]у*ϵvF𔁫k@z {A}A/F  +62~h}T>MĜ F }păYz@{ mUc[O1ap3m!P<:+#a8Xh!'o[eWSm`OyBThvوqIoeBtjXsYHw'K +^5i!uV.mcW%4> xv/ tKLkZ N$8}s)T =X31upK^Bs!GZq\]5pŒϮI2kT]wʗ$~3G|tZ 2*cQ}2v + +,é8^UE7_ͅB-"R|G*?a'HBb.զO}8`>5yn?ښ&FODMr HQЬSr0$GnJzZE*4#R|7bt֍c$⾦eΎ4ނ' g^sN.6T/"eA]-Ð7vрr՛Ly3P+`3OJ=CqFf#ʇg$&AF7( 5# +Toj=)p +` F$ge\x"P: !odf 7$ 6*q!Cudj_P&;e=ד_&WT>uiѮznҐu̇<}:qb-D$yCǮzwîʑ&Ok:GR,B{L&D7K-Vx {NlU{p +~s$y~h7Fԯp"8iHZ@{W-X { *ܽ)ƦDJqсuj5ݺ'0g9V ӫ+B0ypkϏSdO.+ WوM\ tྰơ3uVj0w%I.ɱU2r)[Pln0#3TчYW ق`Ov$!C!%p]k< vs ]D` +0>Q|$bE#.F3..#<!ЁMU+XyR& ]}} rY5y(,ԬREK):x~k 쮊y~**+8蠇يn $(9_3,@T'JR=Q!G +V):N9ZJ% 7a7%J~θ!>c`+(7 \fՀܧ{U^CLU Iiӆ4Mbjnk>A],5fp)-΍6fMy+ {Z><@!"%\·^xL krCB.z90;4 +4J&F%(kkFbǃT4n)? TrQcW@P7MثPS2a.{*T&ۢ +endstream +endobj +6199 0 obj << +/Type /Page +/Contents 6200 0 R +/Resources 6198 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6208 0 R +/Annots [ 6173 0 R 6174 0 R 6175 0 R 6187 0 R 6188 0 R 6189 0 R 6190 0 R 6191 0 R 6192 0 R 6193 0 R 6194 0 R 6195 0 R ] +>> endobj +6173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [268.408 737.884 298.814 748.466] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.932 725.929 173.338 736.511] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [116.694 714.082 147.101 724.556] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6187 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.665 649.692 343.072 660.275] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6188 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [299.992 637.845 330.398 648.32] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6189 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.859 585.411 236.265 595.993] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6190 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.072 573.456 192.479 584.038] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6191 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 458.374 164.868 467.02] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +6192 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.168 419.924 192.361 430.399] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +6193 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.308 175.358 314.212 185.94] +/A << /S /GoTo /D (class_photon_network_a2eefb7151b27169d11062be9996a0eab) >> +>> endobj +6194 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.781 163.403 184.438 173.985] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6195 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.127 163.403 483.784 173.985] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6201 0 obj << +/D [6199 0 R /XYZ 69.866 801.979 null] +>> endobj +6202 0 obj << +/D [6199 0 R /XYZ 70.866 771.024 null] +>> endobj +6203 0 obj << +/D [6199 0 R /XYZ 70.866 698.9 null] +>> endobj +6204 0 obj << +/D [6199 0 R /XYZ 70.866 622.663 null] +>> endobj +6205 0 obj << +/D [6199 0 R /XYZ 70.866 552.339 null] +>> endobj +22 0 obj << +/D [6199 0 R /XYZ 70.866 546.95 null] +>> endobj +6206 0 obj << +/D [6199 0 R /XYZ 70.866 471.438 null] +>> endobj +6207 0 obj << +/D [6199 0 R /XYZ 70.866 298.094 null] +>> endobj +6198 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6234 0 obj << +/Length 3192 +/Filter /FlateDecode +>> +stream +xَF}BoRf3g8RK"6 ߺ(eyuwUQl3sf/Ͼ9|^D?YbNh/<;rg7{uogNRJ'ֳrTQuV}3n$vGgg/afAa8;g Mb;rY PߖuY;NH&z@ ?n{ V~n?oT}WVu|8̟"rI$ϿkkU>_WieΌ@ ~]$3t> W%\V(6}ޫjL$}L'_a"ESipfnh/6ϖ퉌t\Wj>f|ړaVHri0ezu9$?*.)()Cȣ2[Mbhzh?پȦԢݟVUB|n Y|G; 3;ȎPw7~ˏBiQg2]`(TܞrL:|יK:%1Ga _MiTr/ xUtv5(hiV⋇"'_|/zv"s=FZCN~9V -P%>CV17Xl9#+ +)}{TLJWD]!8MLJрڋ0d9!3YlYbŃJ.JV|;|<200r;ZKgn5ަ*(aG``{:v."1?łY$xCAc; +ձ) IN-MeZ +FH>EՔvhoM^gCeW>5h:WSt#P-Ojvk@xd^gh#@c땪6iZTh~{+f<ޒ#8gXF0jj2" +wl wZTwxG ݀ޛkJp;ж#RĢ8Z734{-KZ .D<$֋F4RY[%EJl< +$&ڍ[K! Ǒq4;T`Kqr3^)1Ϭ*'&-fۚvfuϹ?^w)dQE:s:Z41A)q@n>iBw+g 25ȲV(-T.M,YQCXU4%g0W F =ut 3.ZR}ho3z4Q 9Nx/͒ >ʧoZc +8u)/ɋ(n{wޖglj~`cD"l4ΐ$pl g$Z\w$E̾P~"Dl:ù^WmUQ2]; F4o\aG=19Dh 3 U &Y7؉Ò1~F!i1{d-#>C'cBD539I#D]E  ~1 11DȓֽܬGipAXvlx0,bņ\bINg׃}YOFG!3bUx RuQ7ʵ~ZUOL1xv-y:*ϙB]=3&|ɏBW}*N$*qxgJU?}ox;hPP9.QUSV-U6uR+"v1וoI3^Z1tJh6*УջK1TymvԻ0}I%$(>u}] hï"Zg64Lߔ5%6mba4%-@{! "Q *ؿ7hri3Eub]kSڧ.vZFXS ԛ} S*~noNI<9QUr0{)K{k*-4}NLL88+, j`*+iX@g/pw*ZFxDՌ!@Pa_VVb0AE5@!qʜ-Iۣ\~"JhԐs?6vU۔-WgFbkYM4ע@6 +773>OPHhrmDT*kYqT0 p[2VYTI}7ŋDiv +M֔JQo?}hQoC =!`:L.e=2܌=<1e|☈Kdv Jyʼs7σ1YX4ke] rG Wl!Q!4p}9CmZ8U/)clk AN$ȻFLjaLDaA<,pL]#~XհYz=Enf.LNXRy#@Fa2@@_>FJ-MщMY N|iGZ9*踂ޡpl;%roỸ]ՊH̎+p?_xǰ;.Db.[e'YPE|̟"ۋ8G `QVvvm/pj7縑@G(m9"*h} BԶmo{3싱P s?Rf +endstream +endobj +6233 0 obj << +/Type /Page +/Contents 6234 0 R +/Resources 6232 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6208 0 R +/Annots [ 6196 0 R 6197 0 R 6210 0 R 6211 0 R 6212 0 R 6237 0 R 6213 0 R 6238 0 R 6214 0 R 6215 0 R 6216 0 R 6217 0 R 6218 0 R 6239 0 R 6219 0 R 6220 0 R 6221 0 R 6222 0 R 6223 0 R 6224 0 R 6225 0 R 6240 0 R 6226 0 R 6227 0 R 6228 0 R 6229 0 R ] +>> endobj +6196 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.689 751.021 331.289 758.547] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170faf1983fc6b424304e28f91977e06f5881) >> +>> endobj +6197 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.952 735.08 293.631 742.607] +/A << /S /GoTo /D (class_photon_network_a1b3803f17c6d713593bca41547b8b9b3) >> +>> endobj +6210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [74.054 695.537 101.153 702.756] +/A << /S /GoTo /D (class_pun_r_p_c) >> +>> endobj +6211 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.218 687.26 402.423 694.786] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +6212 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 473.965 525.406 484.547] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +6237 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 462.01 148.649 472.592] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +6213 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 462.01 525.406 472.592] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6238 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 450.054 104.786 460.637] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6214 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.166 420.475 327.496 431.057] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.407 348.125 333.738 358.707] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 318.653 159.659 328.922] +/A << /S /GoTo /D (class_photon_network_a1b3803f17c6d713593bca41547b8b9b3) >> +>> endobj +6217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.316 318.653 393.018 328.922] +/A << /S /GoTo /D (class_photon_network_abb168e543c15731ec4de869d3a1ad8f4) >> +>> endobj +6218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 318.653 525.406 328.922] +/A << /S /GoTo /D (class_photon_network_a2dc5e6cba79f899d9952f804db35b2f3) >> +>> endobj +6239 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 306.698 145.197 317.173] +/A << /S /GoTo /D (class_photon_network_a2dc5e6cba79f899d9952f804db35b2f3) >> +>> endobj +6219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.65 306.698 383.352 317.173] +/A << /S /GoTo /D (class_photon_network_a894df24398c8cfe2d06e22ddc39576fa) >> +>> endobj +6220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.646 306.698 525.406 317.173] +/A << /S /GoTo /D (class_photon_network_a86ab96957666ef72830a35662ef3d30b) >> +>> endobj +6221 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.891 294.743 266.506 305.218] +/A << /S /GoTo /D (class_photon_network_af498064a6019a6c69e875bd64db40216) >> +>> endobj +6222 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [314.124 294.743 446.027 305.218] +/A << /S /GoTo /D (class_photon_network_a2eefb7151b27169d11062be9996a0eab) >> +>> endobj +6223 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 282.788 177.063 293.056] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +6224 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.928 282.788 359.371 293.056] +/A << /S /GoTo /D (class_photon_network_a52fdada993f0729be0912113c0ddb3f8) >> +>> endobj +6225 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [451.84 282.788 525.406 293.056] +/A << /S /GoTo /D (class_photon_network_a0b99a01696f62ff29e005e6f939f8dc4) >> +>> endobj +6240 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 270.725 128.296 281.307] +/A << /S /GoTo /D (class_photon_network_a0b99a01696f62ff29e005e6f939f8dc4) >> +>> endobj +6226 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [266.641 258.77 337.181 269.352] +/A << /S /GoTo /D (class_photon_view_ad288db13a15d581e0f7c5886f4036720) >> +>> endobj +6227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [88.974 229.19 175.222 239.773] +/A << /S /GoTo /D (class_photon_network_ac7c6623c88f254b965aa366b1229781e) >> +>> endobj +6228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [110.236 187.763 222.405 198.238] +/A << /S /GoTo /D (class_photon_network_a4a1cd1887cb41a0592322527a7304ed7) >> +>> endobj +6229 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.098 103.848 253.429 114.323] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6235 0 obj << +/D [6233 0 R /XYZ 69.866 801.979 null] +>> endobj +6236 0 obj << +/D [6233 0 R /XYZ 70.866 574.721 null] +>> endobj +6241 0 obj << +/D [6233 0 R /XYZ 70.866 169.996 null] +>> endobj +6242 0 obj << +/D [6233 0 R /XYZ 70.866 143.345 null] +>> endobj +6232 0 obj << +/Font << /F74 4717 0 R /F95 6017 0 R /F39 4678 0 R /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6270 0 obj << +/Length 3159 +/Filter /FlateDecode +>> +stream +xڭZoܸbe)Ѓ2\\zDꬕz%jvDp8pYћ8X$vEj;vE8]\_-v^XM..&4uz.;rJ;E97gQۅciEUS:?#]ڎbZrtk ?K7dbjVs{&gn? Y_U7e +xN -ЍٷjAN8lHdͺ\t 2 +ە'_i*'E\2U +W.:;trTbqˆKӝlJB?]2ᚬHmrHfxM{b==1̸Af]FZ#I|1=e ί%ҭNdq$ĵڦ0e l[NB+\S0n,5wAyXiv:홱;qu$&`$nֱd Y5(9][R!ޅ{(;X3kH/P8H^{ ,dwUpfYȮ( nnu<[sURt3GG@ϧ?^3xT@o"OAh'}q$1fsf 0EE0g9ۇwǿxbpi8IJh|h[6 +x6 =ڞOvl/L{g3N )CGWMMh0lm׳oS\2ӕ +0e͕ds#bM SjF Zyً< .a>\q?]@.جڋ9|Su4M` 5d=Y9:0 1K߰C y5/֓Ԃ՚qǤi2ogJPkz7q|Ve',%y=4˔+$r8x:h74<6\`>='O5F: tO%SeЎWsH4Iuu8L#}$)%{~?3K2|4Tt#COĻbGPx_j@3ͤ𫑐[>PyolnvxJ뚫BJo+bB_/dP /^!gm)s]*H5 6N<<~GG3cߐ3A,Qh>h Չ3B$2GDѽ'%;'ji54 +HGP:ĠW7U&yX8+qJʫVrvd2ҤLgCl^I-猃W2[R9N\Oy!kW%J5WAJjN +SBLY;W/Yܝ}:9\UTŎ@m!:$]MYJ.>P"yJ_OO +L̊-l22Ab[nv}QѤD#(eL'@|TD+?(Ӎ8)G`(]#:; EKCVYv1yr5}4c!ڭtS6fV%ovij?$Cx:ֱ-#|j:dk]"5l:oϏ^?zWAf5=}3Nޱ<62nPk( {>C%O$2h׸,?:3m L@; QZpc qL"f?W&D>7F:?F=r#+4Km/8^ThU% *2 6HTնXp?ռי9B"U&jQ2vC!mP#alC>DG?ȄQ$BBb݋WJ³sH(syD33LU4z,}/ W|P!̈N ; +endstream +endobj +6269 0 obj << +/Type /Page +/Contents 6270 0 R +/Resources 6268 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6208 0 R +/Annots [ 6230 0 R 6231 0 R 6256 0 R 6257 0 R 6258 0 R 6259 0 R 6260 0 R 6261 0 R 6262 0 R 6263 0 R 6264 0 R ] +>> endobj +6230 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.318 698.294 249.975 708.876] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6231 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.452 686.446 288.109 696.921] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6256 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [87.811 561.413 151.142 571.995] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6257 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.098 372.053 205.755 382.528] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6258 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.131 372.053 422.788 382.528] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6259 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 359.991 119.527 370.573] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6260 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [293.737 246.03 332.191 260.314] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6261 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.289 218.172 278.695 228.754] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6262 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 194.261 100.276 204.844] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6263 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.224 194.261 243.631 204.844] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6264 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [438.199 108.565 501.53 119.039] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6271 0 obj << +/D [6269 0 R /XYZ 69.866 801.979 null] +>> endobj +6272 0 obj << +/D [6269 0 R /XYZ 70.866 601.344 null] +>> endobj +6273 0 obj << +/D [6269 0 R /XYZ 70.866 524.238 null] +>> endobj +6274 0 obj << +/D [6269 0 R /XYZ 70.866 450.809 null] +>> endobj +6275 0 obj << +/D [6269 0 R /XYZ 70.866 423.832 null] +>> endobj +6276 0 obj << +/D [6269 0 R /XYZ 70.866 340.441 null] +>> endobj +6277 0 obj << +/D [6269 0 R /XYZ 70.866 267.832 null] +>> endobj +6268 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F73 4716 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6284 0 obj << +/Length 1937 +/Filter /FlateDecode +>> +stream +xڝkoFUE:aYRwb_lΕdɱ3lD~qXy9^Z7E5=Qi2Z]ѕFϳI̾BTדO}g7y<ډЋy?m &[MW3;=L5$/ލ^)@OU֏MULC}* `'aJ]cwyJ@ ܭMGm# | 8 /cm{2#Rn ~SLcl"HzID5Bܫ 0ܙ]q^-t :J* _{%4]G4v$^(6[?'S9aQC=z;#/6LH +ʪb-1U|iv Ue_1C qf15fEM FQ`qx*0J$,&I߫ P#_m~R!7*n;J,7}(Hsm^"ϥ*1EDANÆj aO]VٞT2$L3RHpz3iN7$N-Z54n#h7z Y7:}z_-K ?׆ HUֈD9ôe^OG7i?tu%BjapW nhI`N['ϭo@p-e~2\Y<;m[lPSҠ~˲.:T$ YŇK!ہktAcﵧocF,r>0Ӟ4{.=oH[%u=\FDk--gOϓ:v "O ynʰfŔmc9{CTMe%8MX{iiBzNDJی#z(dEMdIOr&JyPNmxr. +͎g{(#S7.ʄ h¡C,tࣴo/QJ{„|foEKi/w8}ɣ f\#HxA")U*Pu嚺rQ;oPTeDE+Kvs Q*-5]>tŒnOw"UsH8+0)@pT|r7=`8>-e$A􄷽v5$4˹8JTUEVQ Y Zf`:~b| +^:);@kB)k,>isA9~,w; *6.s!Mnxߓщ✄b)R뀼V3p*# 0#a=H»7rrROva rq$2ϬJ;SA`[7nNQ;c7NPv9/BoC?ԃkf%J +^d 7dkIp3l% 啞3T~&> endobj +6265 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.183 746.115 183.589 756.697] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6266 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [309.889 686.339 359.546 696.921] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6267 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 662.536 100.276 672.804] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6278 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.173 615.332 155.58 625.807] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6279 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.099 597.6 175.505 608.182] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6280 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [289.896 585.645 448.084 596.227] +/A << /S /GoTo /D (class_photon_network_a8c94dd51fe8e8986117b499161ff4461) >> +>> endobj +6281 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.869 532.155 265.981 542.737] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +6285 0 obj << +/D [6283 0 R /XYZ 69.866 801.979 null] +>> endobj +6282 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6289 0 obj << +/Length 1104 +/Filter /FlateDecode +>> +stream +xڝV_o4杻*!e:&]u'[$Еl&*v3!l73AJ5J2r6 "<vVDEy!|&~UG+:I0]{" I(EBDβhS}ZYO$:y+@_]yAyzhH;lI^``5{&vfJD8ޮ@,,4n GnFe6l*T?w4úW0j? +uŬTsowX̓ASW 71TCï1oلOu"ܳ8*3>Yxh$Z%J%:X5LV]EKI#Y,ǫsJ+*gʶ 2N* <3qi`SQK8*>Eo*,` |p\P9WOU33ri ɉuZs`AT ᬽ#G^>rI%z>}(ɜ8΅9ih,X3vN{DRUi]V-5n3AGbc~Hl[a 2T9h a +dؿ0QZp^`瘯޿&_xpbުFuȁg6[sZH@BȤs1QDq°).]V04pCv g㋩J^;nG}tm bܥJnoaOUEH.R ؎x0ft*+/!醣 q]  +endstream +endobj +6288 0 obj << +/Type /Page +/Contents 6289 0 R +/Resources 6287 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6208 0 R +>> endobj +6290 0 obj << +/D [6288 0 R /XYZ 69.866 801.979 null] +>> endobj +26 0 obj << +/D [6288 0 R /XYZ 70.866 771.024 null] +>> endobj +6291 0 obj << +/D [6288 0 R /XYZ 70.866 585.06 null] +>> endobj +6287 0 obj << +/Font << /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6294 0 obj << +/Length 267 +/Filter /FlateDecode +>> +stream +xڕP=O0+nL +Tu(F4R{;AHLLC8BI2,-`Zjudq Qm؋9Ǭ;wlY7C9mkW]'aaZ.aא + k|ـT*)>=?(NhʍCb)A1z-}W/ .RȈL>%cORo +n{q>r-fOmf +endstream +endobj +6293 0 obj << +/Type /Page +/Contents 6294 0 R +/Resources 6292 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6208 0 R +>> endobj +6295 0 obj << +/D [6293 0 R /XYZ 69.866 801.979 null] +>> endobj +6292 0 obj << +/Font << /F74 4717 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6299 0 obj << +/Length 1582 +/Filter /FlateDecode +>> +stream +xڥXY6~_!2+m-)mA(>-)%APmm_, s{p6r9IwnC;ݟKiٯ7as߇7W| 0""$R߭m/Ro?^je~*;;oemB&۝lu ku;TV) +LwA֞nۯ:/̥əO٢>w4kz>Yjx,1/ԍBoHJn\IR{icoPAiIWNph(:)C-_Ѡ~/Xa=@->AF7eiTJBy#1yN'Z,̴ {h˴a1IgRoۂ/E$0L${4M  ]بkmz«TVC -V2 ΁xBd<2[茹#"ZBkβΫ[KU&Qj +6 +XT'tVZFS`*R_ +ѩO4y a?% h7O-5Srlx.z>k&8aT+H1cݶtn+F>d o)L6 7&}{}7X5D8h@cCtѲᦪJ0MnL vZ{|V]]?=H'Lx Q@޺Ζ: +?hzOV4q)D9Eb=[<ˮgPlL DĀ%-Q-g&VĂ̊rp0MܯBʂ1"iR^z('+R=$]I8 +x#>*Mh,:R9I9<:dUNqXXDAA(y~? 5ZWJ {^PMCyڴ :ڢ(j̠X}-djr4ߕ=o/ڊHPm`'~dR%mm<0~15E=nm OEQ5 &Xe +sYkL$6"q٬hA_qlI ,L fH`_4#`&OB8KL6#3J3@?7eJa@ȱ+aɆ6 Iր#aAπpIHLwXqZf1t|}! n,Z"xœ|rg|rM Fdŋ @ :3~^~bգZ[M|vދ?cg\c/Pʒ~YjD`Z)ްf5ɯO?j߂]l z^KdCOZ-x43%8Lٸhhpd6ʆwKrViE$bmŬl5DciS;t> endobj +6296 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [120.592 507.405 185.384 517.879] +/A << /S /GoTo /D (class_photon_stats_gui) >> +>> endobj +6300 0 obj << +/D [6298 0 R /XYZ 69.866 801.979 null] +>> endobj +30 0 obj << +/D [6298 0 R /XYZ 70.866 771.024 null] +>> endobj +6301 0 obj << +/D [6298 0 R /XYZ 70.866 585.06 null] +>> endobj +6302 0 obj << +/D [6298 0 R /XYZ 70.866 546.902 null] +>> endobj +6303 0 obj << +/D [6298 0 R /XYZ 70.866 395.274 null] +>> endobj +6304 0 obj << +/D [6298 0 R /XYZ 70.866 324.391 null] +>> endobj +6305 0 obj << +/D [6298 0 R /XYZ 70.866 255.853 null] +>> endobj +6306 0 obj << +/D [6298 0 R /XYZ 70.866 176.861 null] +>> endobj +6307 0 obj << +/D [6298 0 R /XYZ 70.866 119.435 null] +>> endobj +6297 0 obj << +/Font << /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6312 0 obj << +/Length 635 +/Filter /FlateDecode +>> +stream +xڕTR0*eKV( q71P8x%_.+2J}۷+1%,2+r\ʌR0$ŜSrMT&DAwh>,d /me[c~t`mR1OW*=z~ed h6Wd3I.2* lMѯƌrLL/˔ھZ\A@ vUumY&RCyaXHN}e˻l~€ϩ +//w zdnWCY +a >=qۏBox9md9hJChlTv6 j~s)0yy^آojg4IS:4Nk±୺5f'P~B&P=6΂J>dy_,q&9mv㌺n7Aq+Z7u2meC\kRLRze]~81w ʵ][}Ÿoך>\٣ǹewI TI hfvFSlD㦩H슱<6g"~Z{@k;A5ݹ(W +endstream +endobj +6311 0 obj << +/Type /Page +/Contents 6312 0 R +/Resources 6310 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6308 0 R +>> endobj +6313 0 obj << +/D [6311 0 R /XYZ 69.866 801.979 null] +>> endobj +6314 0 obj << +/D [6311 0 R /XYZ 70.866 773.016 null] +>> endobj +6310 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6320 0 obj << +/Length 655 +/Filter /FlateDecode +>> +stream +xڅTMO0 ϯ8uhWZ!dhETĿ_;q:qK{d]-D\袹Zm*ciŋu͎)de%x$l]r^r%e˿G8DJJ"`yE7ӿJ! |_v;2[2<@tvc!X:;=خ}JRh5G,UoFf|2hhzgS$|S?ᤄҸ`y/2`!/=n"`X;Ͼm_̜= ?W vkl9 +JVYWO^"Hr #1gfXEKY)_tƽpi< "pW83SkC=Z҇4DB,w5T$}ؾ̓_W<{Wh.YGa%68(5.G^ 맑e|8&4 fͶSi\n=ѵ!ो,i`{px9ypsʉ0߲ b@ԩZlJAfBGg3bLG/GoW{ۋ?$- +endstream +endobj +6319 0 obj << +/Type /Page +/Contents 6320 0 R +/Resources 6318 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6308 0 R +/Annots [ 6315 0 R 6323 0 R 6316 0 R 6317 0 R ] +>> endobj +6315 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 547.099 525.406 557.681] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6323 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 535.144 104.786 545.52] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6316 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [122.734 535.144 211.771 545.52] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour) >> +>> endobj +6317 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 488.048 184.316 498.522] +/A << /S /GoTo /D (group__public_api) >> +>> endobj +6321 0 obj << +/D [6319 0 R /XYZ 69.866 801.979 null] +>> endobj +34 0 obj << +/D [6319 0 R /XYZ 70.866 771.024 null] +>> endobj +6322 0 obj << +/D [6319 0 R /XYZ 70.866 585.06 null] +>> endobj +6318 0 obj << +/Font << /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6327 0 obj << +/Length 269 +/Filter /FlateDecode +>> +stream +xڕP=O0+n#ӭU(3Uhi"D'NXݻ{+p(,Z;Af 96 t Mn`nG9&Uwd?E]*[ˬP?5 yJ*poTh&HGq0ZEf L"kXݩ`G> endobj +6328 0 obj << +/D [6326 0 R /XYZ 69.866 801.979 null] +>> endobj +6325 0 obj << +/Font << /F74 4717 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6374 0 obj << +/Length 1598 +/Filter /FlateDecode +>> +stream +xXKs8 WhzYyVH,1lO#3ZYH;qO/Z8׎p.$pdEX:+g"$8^<,պhېcG!G&,\W&mVUb톒72bqQ@ +bORΚͳz&:7J4ͺĭ+SմVk>[iiJw{|ᚆ^ +` ]V Z\Oz7RxB[¦2&{Q.` 0ݬFpUA8) ,+}:kJ F~KtFvc1X(-ieE-|? zb4).4y1Syk WQwFRKJ}E-!`k [ݔ%Ru cB+t9A:Qy~ P)z4@eflXB$T \3[,\ ED!0>>Nz]1 2*tg= } 1: rr%䃛\1wȾeAR?wCM𗘙K<] Q[[K%%%|(kǺ:@,Dz +T!(sV2 ִg(Q_16`?>SrAWұ=(& *uO *E@ +]:ݖZ웺4 ǿZq&We[1ΨҬ>ONju%dBg ̓n R| m)UfWdW-$7f+ k_DCUٖbKM?}Hwh =>8VJ7"ٹ /L³G 9"pŠ%X|1YL TtsqylX붅wJMJuzŬ׆F}4Đ0pNavlv!|n}߉{IBXx # +bJS%a:E1ݵ}p Cڴ!Fk]xO[dǃM/ކR#a%ڗGAqq3:M&+IDd#yFBr;0V +RĮz kcegIgC?4@[iDL-Ka4md7 Tp9S?ĺN)!+hL= z]ලҥ =֬~gx %%2$O|==x}8/*S֋HbѶ G"Uoo+tȽWa% }WD8=Ιj] Ht )v4 \j|c=H;(+T?u H{]a2L +endstream +endobj +6373 0 obj << +/Type /Page +/Contents 6374 0 R +/Resources 6372 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6308 0 R +/Annots [ 6329 0 R 6330 0 R 6331 0 R 6332 0 R 6333 0 R 6334 0 R 6335 0 R 6336 0 R 6337 0 R 6338 0 R 6339 0 R 6340 0 R 6341 0 R 6378 0 R 6342 0 R 6343 0 R 6344 0 R 6345 0 R 6346 0 R 6380 0 R 6347 0 R 6348 0 R 6349 0 R ] +>> endobj +6329 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.385 475.153 197.531 483.923] +/A << /S /GoTo /D (interface_i_pun_observable) >> +>> endobj +6330 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.385 448.119 190.502 456.89] +/A << /S /GoTo /D (interface_i_pun_callbacks) >> +>> endobj +6331 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 410.208 206.731 418.692] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour) >> +>> endobj +6332 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 370.324 200.795 380.906] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +6333 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 345.102 176.999 353.873] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +6334 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.21 328.977 295.179 338.701] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa864e7f0d7510922caf9c107b8dd771a3) >> +>> endobj +6335 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.608 328.977 476.498 338.701] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6336 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 307.19 181.024 315.674] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6337 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.138 290.985 260.334 300.523] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +6338 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 278.373 173.063 288.641] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +6339 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 253.124 167.351 261.608] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6340 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 226.091 143.6 234.575] +/A << /S /GoTo /D (class_room) >> +>> endobj +6341 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.148 209.982 525.406 219.609] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +6378 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 199.024 124.16 208.65] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +6342 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 188.099 158.286 196.789] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +6343 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 103.74 231.271 114.116] +/A << /S /GoTo /D (group__public_api_gaf30bbea51cc8c4b1ddc239d1c5c1468f) >> +>> endobj +6344 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 91.785 301.925 102.367] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa9583b114e6efdfd8068051d562391dc0) >> +>> endobj +6345 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.163 91.785 477.018 102.367] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faf0e999adc414b29857944d5e5fabfe2e) >> +>> endobj +6346 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 91.785 525.406 102.367] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fadf130e855b7c27f0f10f66db4a7e83c4) >> +>> endobj +6380 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 79.83 279.043 90.412] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fadf130e855b7c27f0f10f66db4a7e83c4) >> +>> endobj +6347 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.036 79.83 511.223 90.412] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab6273c525ff9cd304d2a8b0adb61a5ea) >> +>> endobj +6348 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 67.875 313.5 78.457] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3ad62b9539e5cf97eacf06e2268dea5a) >> +>> endobj +6349 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.121 67.875 522.913 78.457] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2959bccbe2dabb6a8d2024ea241f6f2f) >> +>> endobj +6375 0 obj << +/D [6373 0 R /XYZ 69.866 801.979 null] +>> endobj +38 0 obj << +/D [6373 0 R /XYZ 70.866 771.024 null] +>> endobj +6324 0 obj << +/D [6373 0 R /XYZ 70.866 585.06 null] +>> endobj +42 0 obj << +/D [6373 0 R /XYZ 70.866 585.06 null] +>> endobj +6376 0 obj << +/D [6373 0 R /XYZ 70.866 512.823 null] +>> endobj +6379 0 obj << +/D [6373 0 R /XYZ 70.866 143.222 null] +>> endobj +6372 0 obj << +/Font << /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6444 0 obj << +/Length 2309 +/Filter /FlateDecode +>> +stream +xrvUmZģf1Nҕt23w= +6Հ<&~c؉I9:GG|qrw +=1&O ?-ʹAB'GoL`hFeJ1ⳋٟgaخgƔ}1儁,W Gbܟv4 +N>ǚr'lP"*洠WR< 0i>Bd a ȀZgdzMŪǁ ECztߤDtMc"ԋO1h ˁ̜AIH!p9@qLVht2\TSzo_cL2S +ܡ|óB Y6vjU`7V!+vfXе=HKS+cV<, o,c!{ +ҁ!X"Zy#Hׁ}Y&TJLQPHK"}9$ILLٷ,EY('v܄zU/M0cv5/xyD/wҜMzbwX%82vW*P0[[t+d^*dF Oׁ̊X>Iœ h!E1WLd'#ۈ煤\.Dc?wO愑KW\|G% PHה7NٖHJo0 [YF:Z}.ߓ=e8#`mA;t/vfpQXJ/QK%m A 5q3Ԃ ƹyn-(we]&FEw%u#gpdr_)ֆN4YEIϐ>0yӇˎV}PC-L$ :l$x&g> +=o'@ ^Yûb0Kr +'hh."NLY6OAYsb XőBOG8S3U'jBY-Ӵ,4EFKڗY37_|˛nV]woq +zܘn{{; 3Hl`Kd^ $R/ G|p*n˸+߫;$U!~Խf*§ё- ņ +endstream +endobj +6443 0 obj << +/Type /Page +/Contents 6444 0 R +/Resources 6442 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6308 0 R +/Annots [ 6350 0 R 6351 0 R 6352 0 R 6353 0 R 6354 0 R 6355 0 R 6446 0 R 6356 0 R 6357 0 R 6358 0 R 6359 0 R 6447 0 R 6360 0 R 6361 0 R 6362 0 R 6363 0 R 6364 0 R 6365 0 R 6448 0 R 6366 0 R 6367 0 R 6449 0 R 6368 0 R 6369 0 R 6450 0 R 6370 0 R 6371 0 R 6451 0 R 6390 0 R 6391 0 R 6392 0 R 6393 0 R 6394 0 R 6395 0 R 6396 0 R 6397 0 R 6398 0 R 6399 0 R 6400 0 R 6401 0 R 6402 0 R 6403 0 R 6404 0 R 6405 0 R 6406 0 R 6407 0 R 6408 0 R 6409 0 R 6410 0 R 6411 0 R 6412 0 R 6413 0 R 6414 0 R 6415 0 R 6416 0 R 6417 0 R 6418 0 R 6452 0 R 6419 0 R 6420 0 R 6421 0 R 6422 0 R 6453 0 R 6423 0 R 6424 0 R 6425 0 R 6426 0 R 6427 0 R 6454 0 R 6428 0 R 6455 0 R 6429 0 R 6430 0 R 6431 0 R 6432 0 R 6433 0 R 6456 0 R 6434 0 R 6435 0 R 6457 0 R 6436 0 R 6458 0 R 6437 0 R 6438 0 R 6439 0 R 6440 0 R 6441 0 R 6460 0 R ] +>> endobj +6350 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 758.07 271.332 768.652] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +6351 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.325 758.07 439.422 768.652] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa62d34f824fc4c61b693dd35ff3e7e79b) >> +>> endobj +6352 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 746.115 324.009 756.697] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa6fae9412143c8e2158841c492b22d698) >> +>> endobj +6353 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.58 746.115 522.913 756.697] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918) >> +>> endobj +6354 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 734.159 325.309 744.742] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +6355 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [330.616 734.159 525.406 744.742] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa75519954740466351e71d794425f6b12) >> +>> endobj +6446 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 722.312 139.627 732.58] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa75519954740466351e71d794425f6b12) >> +>> endobj +6356 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 710.249 271.09 720.831] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) >> +>> endobj +6357 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [300.19 710.249 522.913 720.831] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faccfd8b0940a4981818cc4147e29de834) >> +>> endobj +6358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 698.294 328.456 708.876] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa39b1e276b8dab1e7620a643b7e01d71c) >> +>> endobj +6359 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.262 698.294 525.406 708.876] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fad07f29ca1e2135927cf0966873408125) >> +>> endobj +6447 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 687.007 171.063 696.715] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fad07f29ca1e2135927cf0966873408125) >> +>> endobj +6360 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 674.384 300.912 684.966] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +6361 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [314.886 674.384 522.913 684.966] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa864e7f0d7510922caf9c107b8dd771a3) >> +>> endobj +6362 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 662.428 290.547 673.011] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faa8bb589bf7df8d2be1f0b4b586ba8001) >> +>> endobj +6363 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [293.539 662.428 521.185 673.011] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa1d2567b2c2f8ec1799a293b0359b4046) >> +>> endobj +6364 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 650.473 381.581 661.055] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fafbc17ce96afe80127d732de2d4be0378) >> +>> endobj +6365 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.676 650.473 525.406 661.055] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa67402d95c324cda2b6d6e2fc391ae941) >> +>> endobj +6448 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 638.518 227.747 649.1] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa67402d95c324cda2b6d6e2fc391ae941) >> +>> endobj +6366 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.574 638.518 434.545 649.1] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab39600c160a074fb0b76467956dadec9) >> +>> endobj +6367 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.371 638.518 525.406 649.1] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa03351bfa4fb9325a5b0486862d4be3be) >> +>> endobj +6449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 626.563 258.869 637.145] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa03351bfa4fb9325a5b0486862d4be3be) >> +>> endobj +6368 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 614.608 348.567 625.19] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa8d87c972aaa1041a4f3778d2d7fab03c) >> +>> endobj +6369 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.569 614.608 525.406 625.19] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faa98a8b15d4aa12e02e5ccbc98172eecc) >> +>> endobj +6450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 602.653 137.135 613.235] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faa98a8b15d4aa12e02e5ccbc98172eecc) >> +>> endobj +6370 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.215 602.653 353.441 613.235] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fac859a296d058a67508e48b2a0363e71c) >> +>> endobj +6371 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.521 602.653 525.406 613.235] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab1a1f76626b99f398def802effe4908a) >> +>> endobj +6451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 590.805 161.55 601.28] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab1a1f76626b99f398def802effe4908a) >> +>> endobj +6390 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.984 573.882 299.549 583.605] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6391 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 547.701 185.902 558.284] +/A << /S /GoTo /D (group__public_api_gaf0468f6a0c8ab8caec09678e6dc6f3d5) >> +>> endobj +6392 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.889 547.701 303.521 558.284] +/A << /S /GoTo /D (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5ae0a1284706116eec7a83a489235a9ef8) >> +>> endobj +6393 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.513 547.701 427.084 558.284] +/A << /S /GoTo /D (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5a5391f9a882a54c787b206138ed6d28b0) >> +>> endobj +6394 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.076 547.701 513.312 558.284] +/A << /S /GoTo /D (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5abbd47109890259c0127154db1af26c75) >> +>> endobj +6395 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 515.664 179.33 526.04] +/A << /S /GoTo /D (group__public_api_gab84b274b6aa3b3a3d7810361da16170f) >> +>> endobj +6396 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 503.709 166.822 514.291] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fab1c94ca2fbc3e78fc30069c8d0f01680) >> +>> endobj +6397 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.815 503.709 258.806 514.291] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa52ef9633d88a7480b3a938ff9eaa2a25) >> +>> endobj +6398 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [261.799 503.709 374.201 514.291] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fad0209f4a40060d6e7c37d29979d8f444) >> +>> endobj +6399 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.194 503.709 482.863 514.291] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170faf1983fc6b424304e28f91977e06f5881) >> +>> endobj +6400 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 491.754 217.391 502.336] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa7eb09c07159c5b57395510a1c3755705) >> +>> endobj +6401 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.384 491.754 331.836 502.336] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa07d978b16f68f868668a6384df9bc11b) >> +>> endobj +6402 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [334.828 491.754 479.904 502.336] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa2dd089935363426140d8d54fee80464c) >> +>> endobj +6403 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 459.955 165.45 470.299] +/A << /S /GoTo /D (group__public_api_ga8d4a6786d6193f0e6245c44e4a7bb4a0) >> +>> endobj +6404 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 448.43 191.174 458.344] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0af704f57ea420275ad51bf55b7dec2c96) >> +>> endobj +6405 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.167 448.43 292.752 458.344] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a8f20319172b2aa6813ba3359f8790a39) >> +>> endobj +6406 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.745 448.43 375.851 458.344] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a7b2f31b90fe1c2cc33a52233c1925df3) >> +>> endobj +6407 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.843 448.43 481.607 458.344] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa927b3e1f83aa1b3c6feff945ca18f77) >> +>> endobj +6408 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 435.807 193.55 446.389] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a628d81b73c9e217e7388d07c448d98bf) >> +>> endobj +6409 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.069 435.807 373.45 446.389] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ab468dfbd5b304bf96c74152856bd09a7) >> +>> endobj +6410 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.969 435.807 528.28 446.389] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a2adb83359e79fb5cfc94ab00dcf2184b) >> +>> endobj +6411 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 424.52 245.097 434.434] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a5310d1fb96be7d3ddd41079a9249c2b3) >> +>> endobj +6412 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 411.896 171.386 422.479] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0af6807db4ae3a5c82b99bced82a0ca92b) >> +>> endobj +6413 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.378 411.896 248.997 422.479] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a7d50c09f1ad7d098e0a847bcdcab7efb) >> +>> endobj +6414 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.99 411.896 331.414 422.479] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa9c7b1d7219fa9d3de551ba5bc639eb6) >> +>> endobj +6415 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [334.407 411.896 508.802 422.479] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ac2b8e7a526f5bdbd0ca4e42a1fc87fdf) >> +>> endobj +6416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 399.941 250.073 410.523] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a6bfd906f466d549d660a2e7356ac58dd) >> +>> endobj +6417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.327 399.941 450.204 410.523] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a88a122d877a08d17b85e005b97321320) >> +>> endobj +6418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.458 399.941 525.406 410.523] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a10b0501000c144cb2a7424bd45e1bcde) >> +>> endobj +6452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 387.986 153.077 398.568] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a10b0501000c144cb2a7424bd45e1bcde) >> +>> endobj +6419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.07 387.986 258.591 398.568] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aef70e46fd3bbc21e3e1f0b6815e750c0) >> +>> endobj +6420 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 376.031 223.13 386.613] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aaf3c26fc49c920a4779844921baeeef8) >> +>> endobj +6421 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.31 376.031 384.617 386.613] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ae047588dabb5a0b1e059604b80289791) >> +>> endobj +6422 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.797 376.031 525.406 386.613] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ac495884e9133962e72063062d1382466) >> +>> endobj +6453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 364.076 123.219 374.658] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ac495884e9133962e72063062d1382466) >> +>> endobj +6423 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.212 364.076 301.602 374.658] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa3db59f96790ca93f6c8ac703735f401) >> +>> endobj +6424 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 352.121 199.531 362.703] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aedb214653d9f3cecd840463790ac2894) >> +>> endobj +6425 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 298.403 191.856 308.748] +/A << /S /GoTo /D (group__public_api_gad61b1461cf60ad9e8d86923d111d5cc9) >> +>> endobj +6426 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 286.318 288.503 296.793] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a443ec8de9a697e190f4b24ab3ab36a9d) >> +>> endobj +6427 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [471.323 286.318 525.406 296.793] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ae28f71975b160263c7e6438b4b4429ef) >> +>> endobj +6454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 274.363 209.761 284.838] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ae28f71975b160263c7e6438b4b4429ef) >> +>> endobj +6428 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.792 274.363 525.406 284.838] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a354c849d41c85993a8a28975e0d1c996) >> +>> endobj +6455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 262.3 129.155 272.882] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a354c849d41c85993a8a28975e0d1c996) >> +>> endobj +6429 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [277.679 262.3 454.979 272.882] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9abbec862190460d01acb3557a0e9a13f5) >> +>> endobj +6430 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 238.498 208.757 248.972] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ab0d4998a26f5b5742ad38c4af8817e32) >> +>> endobj +6431 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [323.116 238.498 479.784 248.972] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ab67551dad56fc73fd4a580e810dc5f7f) >> +>> endobj +6432 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.134 227.103 348.507 237.017] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a522f961eb7a2b35f0ef4b99b4ad3bb0a) >> +>> endobj +6433 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [472.536 227.103 525.406 237.017] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9aa8534012cb63e62c0b3a2335206117cc) >> +>> endobj +6456 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 214.48 178.953 225.062] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9aa8534012cb63e62c0b3a2335206117cc) >> +>> endobj +6434 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 202.632 286.629 213.107] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a281086f3f83f5f38b4b9a4572b60a368) >> +>> endobj +6435 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [471.323 202.632 525.406 213.107] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a9b962f813e1575d4d311a9ab3e60afd4) >> +>> endobj +6457 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 190.677 235.154 201.151] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a9b962f813e1575d4d311a9ab3e60afd4) >> +>> endobj +6436 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [380.764 190.677 525.406 201.151] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a927b48448e5111f5bac2a7d59833f051) >> +>> endobj +6458 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 178.722 136.14 189.196] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a927b48448e5111f5bac2a7d59833f051) >> +>> endobj +6437 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [281.919 178.722 467.029 189.196] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a65537dc549af3f90695ff7cf0002b17b) >> +>> endobj +6438 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 95.849 275.995 106.431] +/A << /S /GoTo /D (group__public_api_ga78c69bbb6f79d1e4fb23d3f761eaf4aa) >> +>> endobj +6439 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.48 95.849 338.785 106.431] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +6440 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.671 95.849 453.14 106.431] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +6441 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.098 79.13 525.406 88.757] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6460 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 69.777 128.268 77.612] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6445 0 obj << +/D [6443 0 R /XYZ 69.866 801.979 null] +>> endobj +6459 0 obj << +/D [6443 0 R /XYZ 70.866 138.807 null] +>> endobj +6442 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R /F73 4716 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6533 0 obj << +/Length 2373 +/Filter /FlateDecode +>> +stream +xڵYKs6W|Ty(AҷlJlUj΁#&|L3i'x4u`aٿVg1w/"tV_yN +_,8qܲO?/Xw8({nu-$;yuaü0Mjfq$V:7g1byAMCg^b̹=6bc[gE){_Ŷ/Zqk9 ӑ: '@ӻjai{UUTۦ],9s̺N5u?,6b '4;kv@et-S{V*CqF@xW/bwd)(JPxg{::ўRf~Vg( ǬUnԵIFs];rWQoVV0-aAO+5L/l}Y[b|[ȳ'06w՝/`5h4|R`0^ƿm*3t(Kh%ʐR9 fo nsZOi-K#>FQq YKB) )Cr"|/H_yw%x~oD##OH;>Zx LAk0i6S֦-9`KSkᢕYl,S2D ('T.P7s6Ͷr-:V`p +k)jZeR>M)!'֥H +B Ej8ӳw"/3g'Lqp1 /31(g{ddBH^a"~fv`"Ū1Jؘ)4_gs~ͺިj 'Ȟ6j D C!tXn#/3~)qo m@$;St-:SԛVaTסRd{|C։(!/,"&J>;HSi[fj*it`rzc  '6#2MQA=J uJk"p')/U .b,N78~Ozܷ.b=FJq<0T/qS#/jSWDЪŖ֧:kti6,I ,iɽ T0)^a..xab+t6Hq5xQ"3l=G+"3דK5 +(zvdY @)>q ؝?''^{7PDyx䰬x5lw\9,Bd–"VnrXKy8Tr({Q h~؝ ^[O|wTߦV='N|~0V\&;'YN@ٕY:xW&T3tj$:~pM1B</|"*ɀ? &h%u„Nq)3IHT'OWgg M?{YQ}Ԙڴ\ *-{Dh>,4{@`Um,vgfh\vx|!L!3*kPKhS^;^K`_=_'>_"SnHsEw?fs'ȽEƼ2\&;E4}=pzjk)`V3ȹGѫ"XVGިlp{9= oy +X#3> endobj +6528 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.349 182.564 372.755 193.146] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6529 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.241 166.573 283.647 177.155] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6534 0 obj << +/D [6532 0 R /XYZ 69.866 801.979 null] +>> endobj +46 0 obj << +/D [6532 0 R /XYZ 70.866 771.024 null] +>> endobj +50 0 obj << +/D [6532 0 R /XYZ 70.866 719.13 null] +>> endobj +6492 0 obj << +/D [6532 0 R /XYZ 70.866 692.116 null] +>> endobj +54 0 obj << +/D [6532 0 R /XYZ 70.866 692.116 null] +>> endobj +6493 0 obj << +/D [6532 0 R /XYZ 88.314 585.033 null] +>> endobj +6494 0 obj << +/D [6532 0 R /XYZ 88.314 569.041 null] +>> endobj +6495 0 obj << +/D [6532 0 R /XYZ 88.314 553.05 null] +>> endobj +6496 0 obj << +/D [6532 0 R /XYZ 88.314 537.059 null] +>> endobj +6497 0 obj << +/D [6532 0 R /XYZ 88.314 509.112 null] +>> endobj +6498 0 obj << +/D [6532 0 R /XYZ 88.314 481.166 null] +>> endobj +6499 0 obj << +/D [6532 0 R /XYZ 88.314 465.174 null] +>> endobj +6500 0 obj << +/D [6532 0 R /XYZ 88.314 449.183 null] +>> endobj +6501 0 obj << +/D [6532 0 R /XYZ 88.314 421.236 null] +>> endobj +6502 0 obj << +/D [6532 0 R /XYZ 88.314 405.245 null] +>> endobj +6503 0 obj << +/D [6532 0 R /XYZ 88.314 377.298 null] +>> endobj +6504 0 obj << +/D [6532 0 R /XYZ 88.314 361.307 null] +>> endobj +6505 0 obj << +/D [6532 0 R /XYZ 88.314 333.361 null] +>> endobj +6506 0 obj << +/D [6532 0 R /XYZ 88.314 305.414 null] +>> endobj +6507 0 obj << +/D [6532 0 R /XYZ 88.314 289.423 null] +>> endobj +6508 0 obj << +/D [6532 0 R /XYZ 88.314 273.431 null] +>> endobj +6509 0 obj << +/D [6532 0 R /XYZ 88.314 257.44 null] +>> endobj +6510 0 obj << +/D [6532 0 R /XYZ 88.314 241.448 null] +>> endobj +6511 0 obj << +/D [6532 0 R /XYZ 88.314 213.502 null] +>> endobj +6512 0 obj << +/D [6532 0 R /XYZ 88.314 185.555 null] +>> endobj +6513 0 obj << +/D [6532 0 R /XYZ 88.314 169.564 null] +>> endobj +6514 0 obj << +/D [6532 0 R /XYZ 70.866 145.575 null] +>> endobj +58 0 obj << +/D [6532 0 R /XYZ 70.866 130.214 null] +>> endobj +6531 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F109 6535 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6549 0 obj << +/Length 2813 +/Filter /FlateDecode +>> +stream +xڭZIw8W2{-[8tlj'O>,E%O.e;oNĎB_,6 gٻ8X$vEn;vE8]\,[u;p}اF/u_ʋm:uO.O{Zg3N`'rk}~,rxGz4_ MHM|"D*E[+NUT6&{8OGz DvN]]}uYWKٶb#_4!F;p7cףk.elo;יSmVW̺7_%X?dsc^\?v/Rm?D4P<(8[6oi.+r{ +]ϺZƶocb%o*Cz˃N>9T֕vFذӐ_G*hգZSh;n飸3 C:` tMkX<bďY~fr:)M(0F򁒾`«)e#m'ykau& +nJ1l*'KYOcwr,7g>P{98ٖ,_2`GT}}5`́Ն:GꚵIlluyDGyQEqdj8BƎ-c쾟R*\O7jetSTEALcp1Cf+},s(He;_d1c!z_KmH9`0;xr]"푲n%[P-|f~pcxAx3(F"ew +;Ԍgut-jZ`sE z@ neNSخzoEEGqR|uT*Y#lF$n&B5VS7 bťy_PS")r +"KM`-92%lEYer"/$oR +Mz`.1#'fxo@ !6=ma:+HzP&;~VѴH04`u +uP+ zȻjnF \+* ^.R=/Rpةcvuf˟yl '~L h}V%hx-lJSTt\V,?<{p0V|#sCIvt/A:Il$H8gd2ʋJpJ1d0kR#7tÒgfA)dSdC> ndG ?4hTVE]>g_kF5QZi>l"]q|zs3p`8xx.\KNK]ֿ|;hDAU,G0$6Y8iԸrS;,bŠsF|Q#u+@j a$9hd%50H@a1|ntĖIEy Ç +( l頪\ +cf2Ky4vIA N c(n{h9I6 I k ^ QqJ;gB@Z--K̨7 +"*!Tr\ٿcsVCZ5gz +endstream +endobj +6548 0 obj << +/Type /Page +/Contents 6549 0 R +/Resources 6547 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6536 0 R +/Annots [ 6530 0 R 6537 0 R 6538 0 R 6539 0 R 6540 0 R 6551 0 R 6541 0 R 6552 0 R 6542 0 R ] +>> endobj +6530 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.299 743.447 203.967 772.02] +/A << /S /GoTo /D (group__public_api_gaf30bbea51cc8c4b1ddc239d1c5c1468f) >> +>> endobj +6537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.363 585.749 266.77 596.223] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.802 557.957 311.209 568.431] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.45 530.057 303.856 540.639] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [504.477 478.355 525.406 488.937] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 466.508 123.691 476.982] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6541 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [390.141 466.508 525.406 476.982] +/Subtype/Link/A<> +>> endobj +6552 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [109.236 454.906 272.623 464.803] +/Subtype/Link/A<> +>> endobj +6542 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [259.306 174.238 289.712 184.82] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6550 0 obj << +/D [6548 0 R /XYZ 69.866 801.979 null] +>> endobj +6515 0 obj << +/D [6548 0 R /XYZ 88.314 703.681 null] +>> endobj +6516 0 obj << +/D [6548 0 R /XYZ 88.314 675.889 null] +>> endobj +6517 0 obj << +/D [6548 0 R /XYZ 88.314 660.052 null] +>> endobj +6518 0 obj << +/D [6548 0 R /XYZ 88.314 632.261 null] +>> endobj +6519 0 obj << +/D [6548 0 R /XYZ 88.314 604.469 null] +>> endobj +6520 0 obj << +/D [6548 0 R /XYZ 88.314 588.632 null] +>> endobj +6521 0 obj << +/D [6548 0 R /XYZ 88.314 560.84 null] +>> endobj +6522 0 obj << +/D [6548 0 R /XYZ 88.314 533.048 null] +>> endobj +6523 0 obj << +/D [6548 0 R /XYZ 88.314 505.257 null] +>> endobj +6524 0 obj << +/D [6548 0 R /XYZ 88.314 441.599 null] +>> endobj +6525 0 obj << +/D [6548 0 R /XYZ 88.314 425.763 null] +>> endobj +6526 0 obj << +/D [6548 0 R /XYZ 88.314 409.926 null] +>> endobj +6482 0 obj << +/D [6548 0 R /XYZ 70.866 386.272 null] +>> endobj +62 0 obj << +/D [6548 0 R /XYZ 70.866 371.081 null] +>> endobj +6483 0 obj << +/D [6548 0 R /XYZ 88.314 288.036 null] +>> endobj +6484 0 obj << +/D [6548 0 R /XYZ 88.314 260.244 null] +>> endobj +6485 0 obj << +/D [6548 0 R /XYZ 88.314 244.407 null] +>> endobj +6383 0 obj << +/D [6548 0 R /XYZ 70.866 232.709 null] +>> endobj +66 0 obj << +/D [6548 0 R /XYZ 70.866 217.517 null] +>> endobj +6547 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F109 6535 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6592 0 obj << +/Length 3267 +/Filter /FlateDecode +>> +stream +xZ[۶~_a2+HiR$Hd>yʴFXrAq uvl҇]SpxoC:Yrg\DvbqY"=;p{+ #j:V )8jzO`ˋ^P,܆mّ'g qєDf.jk{>,@tv0v42{uH'7ʿNyʍlGu, +j}|+}LtٸNh Г$6Q:NPUUeEVgIN)5n˚TU'WKQ 7]qd+Y +߁~|fx`J+i}Dzyu(Ö*mGC(B_Za>}ZHee]\ůIUwnc^QUVQA%0]\J;jU2>Tgmsmk_]Zհ,{V:sn%Aኩ`)*Zq7`]q]XkY1qU˰GmE-(OisWE}ZrI*s &7AZyG63ͷ5u$1_\u>y6Wl^ȷClV/զ~[̸yf?4PP03GjFً迦JP>eŖGbԪe%+ H+"j86 Hb[P|lr0Yi Ψ22aCaDK%TE$dm'J4Ԩኵ=?-?nGc'Q56Ɋ{Oc("1HZm5n2ONgcgXbgJ+hub*wڲ +MB@gPsn;c!=܎ v@ +G`m/vm':b=x,4a)yp(frP2i9P ;Bfxfu'L>qRv}/w]Tss73G (IQ+2 D3O*U@ƞ|SK*Aўy]!8X'۠0^>! chM s5RC;!ײ3QERdB<]E|C[9ߞ"O#"ĭWBd I_-<6=|H-{{iej{)5 Knv~b(-Ɵjո!9" G! I4lF< +\|8}.#u]0 *Eȗ~ܗ C7d4 Zta.ImJ +=k]*& + +4ΝlF޹^; O v|!c 83~B#f7@@YLv_V1GqCȧH/Bbc :p7" 1n|7 F6mCo}[&uGܩ5 `BcteȲ>>Lbqrt蒔SkHsƢ/m*GDWRt?1L Wt7Kw\mI8[LIed uq"M[s=v_i^$i;PP^s&gCd_ "ԁYe<{p4M+o%N =؄ 6`gOZsqR&O7~p46"U8^J-l!V *؃fNN l 8j*Vhû]1vL ݴ>xc`M?Ym ;յnZ{)Q#9ymL,/G9k*7jm}6%wӹDL(|uqKsN#FHRYQ +k>J̧n}a^Ϡ.ުTe4 -0o[A#UYC+:`&NfrKO/>> .`WD.ٿyuek]IV6&gfv!\{Du.txgPH%פ& +gTAE(aLk|"]Bkŀb#Za.D~,u1|Ն5ᔦtjn [l S }vz'XDbNl.\ػȔ +tHUH`:t IOƕu"P1 , Al7Wz1t iM1Mvch,fg3-^ ׎\MGO2/[#@:1 n/yAØ:WT \ B"Ԃ`xs:bhEoA+G{?zdܮ|Tf|~>@&MqVɿTAO~.v&ו!L-nt7ɛ@{WXL`醒Mjqjnfh Bn^acMxˁ}a£ǹ*ܳV : I[:cc/uhOvCSRcޡ.y6 3/[_SQ,+ OWpySXn7o|;&wp?V:ys6jniuP ~h8xov_vt~Qz&.wG*-ӯ׈GHF^+x+#}\dpc8XX > endobj +6543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 731.792 179.73 742.267] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +6544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.15 731.792 291.224 742.267] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +6545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [479.742 719.729 525.406 730.311] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +6594 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 707.882 197.779 718.356] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +6546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.727 707.882 338.898 718.356] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa6fae9412143c8e2158841c492b22d698) >> +>> endobj +6553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 694.039 179.73 704.514] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +6554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.694 694.039 290.768 704.514] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +6555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 654.399 269.491 664.874] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa9583b114e6efdfd8068051d562391dc0) >> +>> endobj +6556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.415 626.715 449.91 637.189] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +6557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [460.348 626.715 525.406 637.189] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +6595 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 614.652 153.988 625.234] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +6558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 600.917 227.197 611.392] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faf0e999adc414b29857944d5e5fabfe2e) >> +>> endobj +6559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.992 531.706 335.777 542.18] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da942b62b9b9c5fa148dfe59f3488d4d08) >> +>> endobj +6560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [495.747 531.706 525.406 542.18] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +6596 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 519.643 132.658 530.225] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +6561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.394 507.688 354.113 518.27] +/A << /S /GoTo /D (class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) >> +>> endobj +6562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 493.953 291.53 504.427] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab6273c525ff9cd304d2a8b0adb61a5ea) >> +>> endobj +6563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [495.747 480.003 525.406 490.585] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +6597 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 468.048 132.658 478.63] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +6564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.228 452.426 317.549 462.9] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da5988ddff3f148ce684fbbdb8f68896c1) >> +>> endobj +6565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [482.061 452.426 525.406 462.9] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +6566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.045 428.408 377.765 438.99] +/A << /S /GoTo /D (class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) >> +>> endobj +6567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 414.673 281.066 425.148] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3ad62b9539e5cf97eacf06e2268dea5a) >> +>> endobj +6568 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [479.568 400.723 522.913 411.305] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +6569 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [387.638 373.146 457.89 383.621] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) >> +>> endobj +6570 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.078 361.191 513.721 371.666] +/A << /S /GoTo /D (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74) >> +>> endobj +6571 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [418.787 321.444 525.406 332.026] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fadf130e855b7c27f0f10f66db4a7e83c4) >> +>> endobj +6572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 295.754 244.134 306.228] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2959bccbe2dabb6a8d2024ea241f6f2f) >> +>> endobj +6573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 268.069 233.079 278.544] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa75519954740466351e71d794425f6b12) >> +>> endobj +6574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.641 268.069 415.511 278.544] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +6575 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.961 268.069 525.406 278.544] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +6598 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 256.114 144.601 266.588] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +6576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.254 230.209 350.097 240.791] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa75519954740466351e71d794425f6b12) >> +>> endobj +6577 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.382 230.209 486.876 240.791] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +6578 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 216.474 238.898 226.949] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +6579 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.066 200.637 428.879 211.219] +/A << /S /GoTo /D (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74) >> +>> endobj +6580 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [449.173 200.637 525.406 211.219] +/A << /S /GoTo /D (class_photon_network_aa9a112ccaaf71a296b823e9637584445) >> +>> endobj +6581 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 174.947 227.439 185.421] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa62d34f824fc4c61b693dd35ff3e7e79b) >> +>> endobj +6582 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.268 159.11 390.674 169.692] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6583 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.194 147.262 485.466 157.737] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918) >> +>> endobj +6584 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [503.709 147.262 525.406 157.737] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +6599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 135.307 221.746 145.782] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +6585 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 121.465 291.575 131.939] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa6fae9412143c8e2158841c492b22d698) >> +>> endobj +6586 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.042 93.78 276.213 104.255] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa6fae9412143c8e2158841c492b22d698) >> +>> endobj +6593 0 obj << +/D [6591 0 R /XYZ 69.866 801.979 null] +>> endobj +6384 0 obj << +/D [6591 0 R /XYZ 88.314 746.631 null] +>> endobj +6385 0 obj << +/D [6591 0 R /XYZ 88.314 641.554 null] +>> endobj +6386 0 obj << +/D [6591 0 R /XYZ 88.314 588.071 null] +>> endobj +6387 0 obj << +/D [6591 0 R /XYZ 88.314 534.589 null] +>> endobj +6388 0 obj << +/D [6591 0 R /XYZ 88.314 455.309 null] +>> endobj +6389 0 obj << +/D [6591 0 R /XYZ 88.314 376.03 null] +>> endobj +6461 0 obj << +/D [6591 0 R /XYZ 88.314 282.908 null] +>> endobj +6462 0 obj << +/D [6591 0 R /XYZ 88.314 203.628 null] +>> endobj +6463 0 obj << +/D [6591 0 R /XYZ 88.314 162.101 null] +>> endobj +6464 0 obj << +/D [6591 0 R /XYZ 88.314 108.619 null] +>> endobj +6590 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F109 6535 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6638 0 obj << +/Length 3711 +/Filter /FlateDecode +>> +stream +xڽَ8Kd`>f;$l"ͶȒWӻߺHՙ#"d*v,]8X$vEf;vE8]\m,/X~z\Qjs,rʼnZl6Jxru `kL;zᣳ؋ci%"}; pbu0,"\..=BmcUUYuovU+x=g'Iz5?׼0ۊ{ڝ}V(NB#ըz -l#җs׊zZɾ;%0^]5ɕ:pv|Hմ5ț|„7c֡g}"t|7<]UW{&/N?wDrL4g{ }UVMc[;E'X$K p09da}hΝ'xuǡ +װQЀl(oU.6BpZWG9ٱ4$Ƕm#+7zVUEmVe޴U c}-5d%?,MQ+`@[ "3h9)k-؅:+!"?t>ƋNc?yil8P@*0+gP7zu*kZ-FB %O"5Y/c3Z ,/R_xj =Vy1O#+o[`{,scq"^;v68nM[ D; ijs%(YzrwH 1t8U#g dv5E䊶>d$YkN4BNZ*dnZ(w#ïF'LJgqq>GX9!$KwV˺ hu1,7hjgEAI$4m(lgz>CzV赝$FamBU^sf9lKNr@a XaBW?Unquo¥ -ә,0tW5 $G2tB$`[Bx6d6~ZAՎ +pmݷ{O \ @쥠< sjT b7 (epk5)m&G\q;4ÁR+@l{Y[cض"$ۭ5>&LP~>-աVV`RӚ0`? "Hf!p$%hdcs; +ݍX#b{ +9rq^汶`ח|.8Я?'?6\h&Z~Қa)})jvձ0>poh%p͌hlhS\7|nݑC]VDzTK +JQ(AU.A*vgL6L!۩3\׹oX)-lv'^LrV9O93Գ9Y( ƢLY9zD8.UeL/ :1>*keMV\@ g@l/wB&ovCwe$0P"kJMbԊhȠ:-2X 5cmЬ=ϴr*G;SReusRhrv8T f_KDԆEZ=}+Mˣ!%Լ⬯Q^C%ʋҡ"ƔHqN&se4[=EN}"UbAgBuXZ̻)ą1+f #^r"tRHv8Lu/S}5.s*߀B @H!h1:0;F@N!GkљTbz t])+߼y)_`ނPtf=q^MM-\70q + s⃭FG @_PR8HRKN@λ||RU}x/:qQKdݻ֫?)-II`*9WKVF+eu?k$<0ذ@\)h(PȦԄJ"1Gΰ-~wP{KpWaE]R]ϔrϾ#Zi{LG6jd\5i/ 6w&sVھb*aI\ziniۄvܩ^hW[WmQĨZBikکU'9F78tʹܿqu  #YXn^5[h !?A>82 [g 9oiazޑ܏K-~B*رQ\_}#|#-9儶^(IְPH}cf66G\:kTxʛBo L@ll[Zq7+(h'H}hT;Q1G33ѳ{ W^3OcUu%W ('Tt†:O\:-b@qsϐ=;_$<ʠshsb]Gn5}d ? vB%m<iF=f\(=Sݡ[ͣ5߃/p, S0em:"]a~}qSz/*#S5_\CYSzb49xY5f!76Yq\ED +2'ZmE&U;^+׻*es,{~m( +rIŊd<#Vu=np}OfFpsMQj\pkZY[Pim C#=qH|PUIP%{p߱ϻ*ۨr|ol[+p'(~7SS`̂УLVVbAm@Pڤa}]LJq6;fֆ-&Z#;Fj]ؙՏMRm5'84w8 8`qc#i~=xƎKVnݗ"$nƲC<(N}+\1z2(5&C@nW6Z\*邕XRh +1L FWad~j8;JhU0'w&w 񱐃Oo4C$b"T˟S3/u﹵y˜iL + Biuw.!{4е wXV"ͪԸ7?a~L#GT' +p9`yÐtE00P!>u@\wob :2S4N3DwcKSGb֬8*KR4G_RsBlvS5D&L5KT˪P6* lzoȺJ},2c?U~20Sywѧ?cB'O"jcQ4=S3IxIX9n$=} _7$%u?2oųPtB`<=zCc; +endstream +endobj +6637 0 obj << +/Type /Page +/Contents 6638 0 R +/Resources 6636 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6536 0 R +/Annots [ 6587 0 R 6588 0 R 6589 0 R 6605 0 R 6640 0 R 6606 0 R 6607 0 R 6608 0 R 6609 0 R 6610 0 R 6641 0 R 6611 0 R 6612 0 R 6613 0 R 6614 0 R 6615 0 R 6616 0 R 6617 0 R 6642 0 R 6618 0 R 6619 0 R 6620 0 R 6621 0 R 6643 0 R 6622 0 R 6623 0 R 6624 0 R 6644 0 R 6625 0 R 6626 0 R 6627 0 R 6628 0 R 6629 0 R 6630 0 R 6631 0 R 6632 0 R 6633 0 R ] +>> endobj +6587 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.228 759.881 367.634 768.652] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6588 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.129 746.115 361.3 756.697] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa6fae9412143c8e2158841c492b22d698) >> +>> endobj +6589 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.015 734.267 210.421 744.742] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6605 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [451.84 703.16 525.406 713.742] +/A << /S /GoTo /D (class_photon_network_a8ad64b1a76c7918bbe5642639afff458) >> +>> endobj +6640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 691.313 158.803 701.787] +/A << /S /GoTo /D (class_photon_network_a8ad64b1a76c7918bbe5642639afff458) >> +>> endobj +6606 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.399 691.313 510.511 701.787] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +6607 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.844 679.25 211.436 689.832] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +6608 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 626.811 292.247 637.285] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa75519954740466351e71d794425f6b12) >> +>> endobj +6609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.034 586.112 310.905 596.694] +/A << /S /GoTo /D (class_photon_view_ad288db13a15d581e0f7c5886f4036720) >> +>> endobj +6610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [451.84 571.794 525.406 582.17] +/A << /S /GoTo /D (class_photon_network_a2dc5e6cba79f899d9952f804db35b2f3) >> +>> endobj +6641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 559.946 149.147 570.421] +/A << /S /GoTo /D (class_photon_network_a2dc5e6cba79f899d9952f804db35b2f3) >> +>> endobj +6611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.486 559.946 491.999 570.421] +/A << /S /GoTo /D (class_room_info_a928b103a3e88d2c090152440aa6fa874) >> +>> endobj +6612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 547.883 185.523 558.466] +/A << /S /GoTo /D (class_room_aa9d85e54b2ff1b151de3670e87549966) >> +>> endobj +6613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 533.673 238.656 544.147] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) >> +>> endobj +6614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.85 516.992 483.218 527.466] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +6615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.772 493.081 275.059 503.556] +/A << /S /GoTo /D (class_room_aa9d85e54b2ff1b151de3670e87549966) >> +>> endobj +6616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.93 462.082 482.298 472.557] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +6617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [495.747 395.217 525.406 405.692] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +6642 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 383.155 132.658 393.737] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +6618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.971 371.199 230.96 381.782] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +6619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 359.244 207.956 369.826] +/A << /S /GoTo /D (class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) >> +>> endobj +6620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 345.034 291.037 355.508] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fad07f29ca1e2135927cf0966873408125) >> +>> endobj +6621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [495.747 330.608 525.406 341.19] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +6643 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 318.653 132.658 329.235] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +6622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.76 290.124 258.63 300.599] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +6623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.726 290.124 467.596 300.599] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +6624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [503.709 290.124 525.406 300.599] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +6644 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 278.169 167.769 288.644] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +6625 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 237.578 268.478 248.052] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +6626 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [330.912 220.789 380.568 231.371] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6627 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.065 208.834 303.722 219.21] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6628 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.404 196.986 280.061 207.461] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6629 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.748 196.986 436.284 207.461] +/A << /S /GoTo /D (class_photon_network_ac23d14ad150a87d51f4ffaa286db29e1) >> +>> endobj +6630 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.593 184.923 283.792 195.505] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +6631 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.748 170.605 405.405 180.981] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6632 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [463.339 144.332 512.996 154.914] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6633 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.235 118.059 298.54 128.641] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +6639 0 obj << +/D [6637 0 R /XYZ 69.866 801.979 null] +>> endobj +6465 0 obj << +/D [6637 0 R /XYZ 88.314 761.061 null] +>> endobj +6466 0 obj << +/D [6637 0 R /XYZ 88.314 706.151 null] +>> endobj +6467 0 obj << +/D [6637 0 R /XYZ 88.314 613.013 null] +>> endobj +6468 0 obj << +/D [6637 0 R /XYZ 88.314 519.875 null] +>> endobj +6469 0 obj << +/D [6637 0 R /XYZ 88.314 464.966 null] +>> endobj +6470 0 obj << +/D [6637 0 R /XYZ 88.314 398.101 null] +>> endobj +6471 0 obj << +/D [6637 0 R /XYZ 88.314 304.963 null] +>> endobj +6158 0 obj << +/D [6637 0 R /XYZ 88.314 223.78 null] +>> endobj +6636 0 obj << +/Font << /F74 4717 0 R /F109 6535 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6670 0 obj << +/Length 3262 +/Filter /FlateDecode +>> +stream +xڽْ6}BPU7)Q3^{k7"1#x6}D9Ah4}AgqpOϾ:;Eb_\]/bNh=;rWrʼn,]*Ev@g\|Y=$/XEc-aA$V,^Gc{#v U^jmVk]/WnhWc2^p[V01p+UE3V%KEVfnuiVF҇qADvHb: yC>S ۀDFs5/ }q;-vV%~tB~vF`{Il|Q~<|XzU2a"mikvr 4F?+cU%!a"vL5O\kj\DӒ P>NjSu-nJʆЊ=6bczCz(5-g$TMmx+RDpI^lglk*p?%ExA[G| Q+wp)cX*jCYNh~0x +V0%;{Fq[cs5h7,ADu.7!DoEx@ݨ\H +#t,YK7eL a= ][l(5e7U^ؒǙ!CmN>z %B`V9Rs@ZoCJp6oSܔCGʵ![3!{"Wv]\>Yj̏-!ME*b?M] #GEQu{U!_Ч4NxԒ|۩\z=}_N:cS!7*{&'-v^ysBOTTN^[oR?W؇R;{싮i+5'xr\l*n~GɾGM8r! @g%z)1cid^a7p%d @I0 4Т !!W/7Zru h->)8yj^kí"? VhLA NU:4 tUiS! +cwrKp<lr&&~,=2Vn \Mѽ(6RTCeX2 "P4 Cn'/ ǁF\8I D^o”xX_;z9*op[?}Oc^k˚4I=4;g 1@כ$BJd$`X@0m_"ױ'9E?:X7 +#Ln4}Uf|qPMryh`$ ,M2pyakuɽR1uMN &OutDN)\"TQ +XO&?qHX@hSBc[žU|F |h9$p-o]FfSʘۮC-\z1ɱׁ0O9;tۃ3%Vx`opSG6:+RLNGUsO Ys/bh&l>wڞ")遀cE e ۼi-'m?ʸȄc쑷 " ݲGxpW"˼.Ah_fs!Fs9;]?mM>xqB]wbz"B +'r P"ݣ8+$X4hO[%xU{#|&(RiZ)z4VI\ 4d.N ]z[FAn}+ lB%0Inӛ3Iw&1Zv*EAUi.'њ!NJ\L][D.2 +oe00/X3+it=VU^cYei[IV:]3ґ<<k4+] enu$JTg;ta +)G}JX pRt&=4,;U̠tb.DQIvQw\ U N<+,SvRZ +ie꠆?:wq'G\]ZԹsenyw ?{O櫱jRT7NN<]>k S%lgܛbtG[/ֶ3\1=tg$r:5#',.?~_?8M\"JNhy };^'ÕL800SĎy:Cq(yWzerE2"A_ щ#m9^q*ew ,ٱod>;31 8@'/Ӣ˴ V;#AƖ|E^33%K5 s Ob=RbBr*C䒑EדV\ 'yJ3yi"%@IFHSEڑk<g3G1IG0--D"Z#.ߩE8)N!13n<8zTJ?!HxCw.*KWɞdfwyw{}#dc&<6kDoy6oȜMQ+\PLovb;\0:j  CF=PϦ$>ގw.mogUjN~n\V~q.G.Ÿ(A 칯؆-7d3b. HاԵ|=CzVTܐ[q#q IQG#U\"hNJG2- +endstream +endobj +6669 0 obj << +/Type /Page +/Contents 6670 0 R +/Resources 6668 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6536 0 R +/Annots [ 6634 0 R 6635 0 R 6650 0 R 6651 0 R 6652 0 R 6653 0 R 6654 0 R 6655 0 R 6656 0 R 6657 0 R 6658 0 R 6659 0 R 6660 0 R 6661 0 R 6662 0 R 6663 0 R 6664 0 R ] +>> endobj +6634 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 703.264 216.429 713.847] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +6635 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [222.772 703.264 304.241 713.847] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +6650 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 612.701 139.642 623.176] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6651 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.084 612.701 222.49 623.176] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6652 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 586.463 289.988 596.937] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa1d2567b2c2f8ec1799a293b0359b4046) >> +>> endobj +6653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.24 557.788 446.202 568.37] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +6654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 533.985 223.198 544.46] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +6655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.746 467.225 235.114 477.699] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +6656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.859 402.685 410.836 413.267] +/A << /S /GoTo /D (class_photon_player_af8815abb8edaafbe6bddbf328f9612fb) >> +>> endobj +6657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.274 349.154 218.825 358.261] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +6658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.265 349.154 487.816 358.261] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +6659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 282.44 204.683 293.022] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +6660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [326.788 282.44 422.236 293.022] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +6661 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.404 256.309 261.314 266.784] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab39600c160a074fb0b76467956dadec9) >> +>> endobj +6662 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.34 215.787 325.834 226.262] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +6663 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.798 215.787 436.872 226.262] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +6664 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [384.088 175.265 439.878 185.74] +/Subtype/Link/A<> +>> endobj +6671 0 obj << +/D [6669 0 R /XYZ 69.866 801.979 null] +>> endobj +6472 0 obj << +/D [6669 0 R /XYZ 88.314 718.211 null] +>> endobj +6473 0 obj << +/D [6669 0 R /XYZ 88.314 663.405 null] +>> endobj +6474 0 obj << +/D [6669 0 R /XYZ 88.314 572.734 null] +>> endobj +6475 0 obj << +/D [6669 0 R /XYZ 88.314 505.974 null] +>> endobj +6476 0 obj << +/D [6669 0 R /XYZ 88.314 297.386 null] +>> endobj +6477 0 obj << +/D [6669 0 R /XYZ 88.314 242.581 null] +>> endobj +6478 0 obj << +/D [6669 0 R /XYZ 88.314 147.254 null] +>> endobj +6668 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F109 6535 0 R /F77 5876 0 R /F82 5877 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6690 0 obj << +/Length 3061 +/Filter /FlateDecode +>> +stream +xZK۸ϯPjNw=xS)JŒH-IylݠH%qf&g]DQgW׳X$fqDϮֳ~0am}Y/TxO~k6kgO~;aݚI"V۳l }?Ϥi2# " pbog}z}EQ|^}C,/wK쪲1,gF +kԝqVf 'KCo9WL7r1%"j.̨b$sfgǹy٭~Bø׆׻TmU2ܗ^U0#Y$X'x;HިP$rc4`E+h}!*H$PbCY>Z]!_4y|d?YP8 k[O{nq};n.V~ +xEc AC~%W]SI*J$ Zo7O8P`ۧ(= lXe%W\-Ψp{yـVLu]mEt0N$XB4ȉ࠻ۼv.X:^?cw@T/ +YZtU ']hxi|j}yH^R:eνQl1kcK^޾1{˛̀O?s܈td$w"GD`TدMC_ ](ͬ\GFTSu0Xh1IM{~f䘫Q({sAd|_rď{GۅݬɋK.Acy'נԄi̤z5e< +CPz?#408-qk67p×c"aAɖͻ"óڰjڨ/Ё4 ++;/T>hKrܢu-`"E0 jZSDvt ֐IHr[:zX/FL.pho8SGx+'cɍ)D}3#FLuӾz(uQt%;e}Yo* +=B)ZRxx ppռ٭agX#LN:{ҥ  ZuNzӚ4Xۂ8VP:{ℼ:򮶞cFm:7tdvjb8s<3)TM#}3өАd도/4KP]0o#B-dYRë9@f .9e ^d|Վ-kBmVߘKCk& 'g^_ Bx[ơZ^J/##*418ivpP25uVC<.>R)k\ Y(NBټ6&|[{4RQi}\zUggɂվ5CrݚuL UHE ~Al|aLܯUγۈKGgD39H^|)Ah T8aKE A9\PΡ[: P Mc*B h +k, {ge6V#a78"xcik,ba[**+ۖ̊pFmH3o6\] G7Ιmfb3Rv?<ھsuۙث~'=__k&ȚO! E, o[**OvtŖ݌!* 9UDSC_a0~SZg|r}ب:@Ҡ߷J;/8+Ĕfקs}0;#A\[lv`7>:>Icꭼ2J<$qP*>!1܈s܈SpAbZk)פlF[6wQ5d/ S@>Yq"V^A_)1|+(vZ~"|XH[{Q rQ2yD{dJ vGk~)j!]e1ݠmLhL^d[UNb#!52L 9U`^<8~VΫ5w9r,FkVP`Iw ; +ɐZֳ6>ad4;wU膵ׇ w '~B &п9` x{=rtϕ'EKc - +endstream +endobj +6689 0 obj << +/Type /Page +/Contents 6690 0 R +/Resources 6688 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6536 0 R +/Annots [ 6665 0 R 6666 0 R 6667 0 R 6674 0 R 6692 0 R 6675 0 R 6676 0 R 6677 0 R 6678 0 R 6679 0 R 6680 0 R 6681 0 R 6682 0 R 6694 0 R 6683 0 R 6684 0 R 6685 0 R ] +>> endobj +6665 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [328.813 746.222 359.22 756.697] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6666 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.691 722.312 226.157 732.786] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +6667 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.357 722.312 472.451 732.786] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +6674 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.467 708.112 525.406 718.694] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6692 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 696.265 165.052 706.739] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6675 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.386 682.065 303.792 692.647] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6676 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [400.971 639.896 450.627 650.371] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6677 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 613.849 158.893 624.117] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6678 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.457 613.849 320.114 624.117] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6679 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 599.649 164.604 610.025] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +6680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.241 599.649 380.609 610.025] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +6681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.236 557.481 235.087 567.955] +/A << /S /GoTo /D (class_photon_network_abdced09cccf61ae817cb97705ffce137) >> +>> endobj +6682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 133.428 525.406 143.902] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6694 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 123.257 91.113 131.741] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.942 103.74 451.598 114.323] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 93.596 220.405 102.367] +/A << /S /GoTo /D (class_photon_network_ac23d14ad150a87d51f4ffaa286db29e1) >> +>> endobj +6685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 79.83 174.068 90.412] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +6691 0 obj << +/D [6689 0 R /XYZ 69.866 801.979 null] +>> endobj +6479 0 obj << +/D [6689 0 R /XYZ 88.314 761.061 null] +>> endobj +6480 0 obj << +/D [6689 0 R /XYZ 88.314 642.78 null] +>> endobj +6481 0 obj << +/D [6689 0 R /XYZ 88.314 572.319 null] +>> endobj +6486 0 obj << +/D [6689 0 R /XYZ 70.866 526.2 null] +>> endobj +70 0 obj << +/D [6689 0 R /XYZ 70.866 510.28 null] +>> endobj +6165 0 obj << +/D [6689 0 R /XYZ 88.314 426.407 null] +>> endobj +6487 0 obj << +/D [6689 0 R /XYZ 88.314 398.223 null] +>> endobj +6488 0 obj << +/D [6689 0 R /XYZ 88.314 370.039 null] +>> endobj +6243 0 obj << +/D [6689 0 R /XYZ 88.314 341.855 null] +>> endobj +6489 0 obj << +/D [6689 0 R /XYZ 88.314 313.671 null] +>> endobj +6490 0 obj << +/D [6689 0 R /XYZ 88.314 285.486 null] +>> endobj +6491 0 obj << +/D [6689 0 R /XYZ 88.314 245.347 null] +>> endobj +74 0 obj << +/D [6689 0 R /XYZ 70.866 203.522 null] +>> endobj +6527 0 obj << +/D [6689 0 R /XYZ 70.866 178.595 null] +>> endobj +78 0 obj << +/D [6689 0 R /XYZ 70.866 178.595 null] +>> endobj +6688 0 obj << +/Font << /F74 4717 0 R /F109 6535 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F73 4716 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6705 0 obj << +/Length 1192 +/Filter /FlateDecode +>> +stream +xڝVKs6Wp|)9cL8Mv:v I%(.) jo?99WWY~zt2idE见{7of{]{sYuɉO<0OşLn)WT0?*rgg,['NY>cn +@yZ$B]u{!s-iJPr;讕yA +jY$V\sɐR76W ިoNwW)𒝵4Ebmx-fON*S}ono*]% c# H*Ʈ:eJZP]@H$=p5W uqhcc;5ZIE)沑pMo ;І}ӵI,yӬy'\| X:F!G8_[Vxj](mD7݇"IjZ+> rF;A9y=͠6no%9_dQ1E,fd3σpY8 CHM`o^J[g}ߘ|QD-[mCBH^47&Z{ b9Hű{mgb'f qE3̣; 88o}(k{efTr2O&Vة#jL6jGQB/N[y`ka`'ހȶ8[[%&N5b%Ó|a@l$@mVN*_TPʔ6w7$XxU4%tb$$wAU^E:.ү;Y"NF /?~Ɛ9jrjgFVYXﻮDS!^F1?LްN0R.:1 , {!NFS*}AX1\u}ft4,fŽKZr>d?Բ?ՒH;e={cԞf0Aɖ?o '8!73I6~?ˍ]/O17Nr0M2xgrN0Ks4N4`J\ zK¥/ 5dAjOwPu#̞&.;=BoVg +endstream +endobj +6704 0 obj << +/Type /Page +/Contents 6705 0 R +/Resources 6703 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6707 0 R +/Annots [ 6686 0 R 6687 0 R 6698 0 R 6699 0 R 6700 0 R 6701 0 R 6702 0 R ] +>> endobj +6686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.249 758.07 356.906 768.652] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.206 728.49 473.863 739.072] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +6698 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.189 698.911 258.493 709.493] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +6699 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.731 598.217 218.262 608.799] +/A << /S /GoTo /D (class_photon_animator_view_aa061f0b6fb761c3da8635b9ce7e85c8b) >> +>> endobj +6700 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.884 598.217 310.181 608.799] +/A << /S /GoTo /D (class_photon_transform_view_a5d1d6606c9c935b2326b31b292f37a7e) >> +>> endobj +6701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.804 598.217 413.784 608.799] +/A << /S /GoTo /D (class_photon_rigidbody2_d_view_a980ea46d1725668b1ae12f958840dc61) >> +>> endobj +6702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [433.392 598.217 522.913 608.799] +/A << /S /GoTo /D (class_photon_rigidbody_view_a4a7145633e24084001a4cd0ed9f8a15c) >> +>> endobj +6706 0 obj << +/D [6704 0 R /XYZ 69.866 801.979 null] +>> endobj +6703 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6718 0 obj << +/Length 779 +/Filter /FlateDecode +>> +stream +xڭUV0+}$[% id,.McȒCB)mOX#iwGh::> endobj +6712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 671.828 218.772 682.411] +/A << /S /GoTo /D (class_photon_lag_simulation_gui) >> +>> endobj +6713 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.704 657.084 290.269 666.807] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6714 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 634.785 182.486 643.556] +/A << /S /GoTo /D (class_photon_stats_gui) >> +>> endobj +6715 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.121 618.23 372.686 627.953] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6719 0 obj << +/D [6717 0 R /XYZ 69.866 801.979 null] +>> endobj +6720 0 obj << +/D [6717 0 R /XYZ 70.866 771.024 null] +>> endobj +82 0 obj << +/D [6717 0 R /XYZ 70.866 771.024 null] +>> endobj +6721 0 obj << +/D [6717 0 R /XYZ 70.866 711.741 null] +>> endobj +86 0 obj << +/D [6717 0 R /XYZ 70.866 603.985 null] +>> endobj +6716 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6734 0 obj << +/Length 548 +/Filter /FlateDecode +>> +stream +xUM0WhKdvt +8,B mĶT|6Mh9p%ϼ7Ʀh(Oa/hrsgbT>#Cj G'􀧫x[$9 8ؐN 9j(P +_dIp-dSEm:кk +2j-@*Qq`$`R|O0% ,gbh@D8Ij"v3-z!j-|2`AW=$=84vSW2)b(1~ c“V )@F1>D1nE'/Igp$UV/7$!4}wha/\NcE9oۜ0c/Ws=5j + ꪴ |wF02!Mq|K xɛ*ې٠z> endobj +6723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 502.442 155.892 513.024] +/A << /S /GoTo /D (namespace_exit_games_1_1_client) >> +>> endobj +6724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 402.575 148.917 413.157] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i) >> +>> endobj +6725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 388.116 161.389 398.492] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 288.356 192.977 298.831] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_g_u_i_1_1_gizmo_type_drawer) >> +>> endobj +6727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 224.759 166.356 235.233] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65) >> +>> endobj +6728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.343 224.759 268.786 235.233] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65ab37d9c6b396307dda685c3c65c20e359) >> +>> endobj +6729 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.779 224.759 349.796 235.233] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65ab7095f057db3fefa7325ad93a04e14fd) >> +>> endobj +6730 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [352.788 224.759 441.753 235.233] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65a70ab99161d5df5bb7e0edb7407f65483) >> +>> endobj +6731 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [444.746 224.759 515.285 235.233] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65aa296104f0c61a9cf39f4824d05315e12) >> +>> endobj +6735 0 obj << +/D [6733 0 R /XYZ 69.866 801.979 null] +>> endobj +90 0 obj << +/D [6733 0 R /XYZ 70.866 771.024 null] +>> endobj +6736 0 obj << +/D [6733 0 R /XYZ 70.866 580.721 null] +>> endobj +94 0 obj << +/D [6733 0 R /XYZ 70.866 580.721 null] +>> endobj +6737 0 obj << +/D [6733 0 R /XYZ 70.866 544.573 null] +>> endobj +6738 0 obj << +/D [6733 0 R /XYZ 70.866 491.214 null] +>> endobj +98 0 obj << +/D [6733 0 R /XYZ 70.866 483.477 null] +>> endobj +6739 0 obj << +/D [6733 0 R /XYZ 70.866 444.706 null] +>> endobj +6740 0 obj << +/D [6733 0 R /XYZ 70.866 376.888 null] +>> endobj +102 0 obj << +/D [6733 0 R /XYZ 70.866 369.151 null] +>> endobj +6741 0 obj << +/D [6733 0 R /XYZ 70.866 330.379 null] +>> endobj +6742 0 obj << +/D [6733 0 R /XYZ 70.866 266.782 null] +>> endobj +106 0 obj << +/D [6733 0 R /XYZ 70.866 206.966 null] +>> endobj +6743 0 obj << +/D [6733 0 R /XYZ 70.866 179.265 null] +>> endobj +110 0 obj << +/D [6733 0 R /XYZ 70.866 179.265 null] +>> endobj +6744 0 obj << +/D [6733 0 R /XYZ 88.314 123.21 null] +>> endobj +6745 0 obj << +/D [6733 0 R /XYZ 88.314 105.762 null] +>> endobj +6746 0 obj << +/D [6733 0 R /XYZ 88.314 88.314 null] +>> endobj +6747 0 obj << +/D [6733 0 R /XYZ 88.314 70.866 null] +>> endobj +6696 0 obj << +/D [6733 0 R /XYZ 70.866 58.53 null] +>> endobj +6732 0 obj << +/Font << /F73 4716 0 R /F39 4678 0 R /F74 4717 0 R /F109 6535 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6817 0 obj << +/Length 1922 +/Filter /FlateDecode +>> +stream +xZ[oH~ϯ@}Yj:q>NZu&݋>L`bh>D0w^!ǣӣ7<[ZNM5i|U-}X3xN,[Ѐi#Փ4(,i ~t:=ȀD1VT}_M[ G_%w*Dƾ v۱tǶ>V~;"()MK)>6 .k褔mmdBKʹUh~k#_岛z:$@rE7{ɛDYDwɚ45YpuiJ +74UUfPkn=JlxLf4VxRh[O$A '1Ͳ/d7[XZ3P% +;yDEDdqA4=.i:;Y +Q%l)玳Keڐ@Ef;ȲmZC?PI2ED>qGK 2HHa"ƱaqY BZ31 ,-F+X+nwFr!+M1k0 "FY4g!B!z`m + pkX<DaI"W'/ͰzxhuxQ%"}a O-mz5(A fP +2{Af:*s`CJ?/*)Q7O44ɳv{!]M;%Qk _$W*A(jY,%b[<<~><-R¦<ҺP ˩G ߸& +YkQyt$kAOt[ZLH +HU?E iQU^ALJ]F( 9-<]2Ի0a8rt=4<%VmOּZDyӟDκ>֦a_QN;yc^ >Un&"^΢yomGOqgItlG7&rov9=#靶 @en[pH&,5Bus ðFs-s&f/qE8JVCpx{O`b4Ox[J\F/1yDZl" ?%bsmų*}||lQߞ"l[ [7v?ՀVmsѺJz|4|OcQr?> endobj +6749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 704.031 151.911 714.613] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +6750 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 611.066 203.019 619.55] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values) >> +>> endobj +6751 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.537 594.185 264.102 603.811] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6752 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 582.407 172.014 591.178] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel) >> +>> endobj +6753 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.996 565.607 248.561 575.233] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6754 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.811 565.607 267.847 575.233] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +6755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.351 565.607 352.012 575.233] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +6756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 553.829 161.541 562.6] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +6757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.18 536.932 207.745 546.656] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6758 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.995 536.932 227.031 546.656] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +6759 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 525.251 182.755 534.022] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code) >> +>> endobj +6760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.414 508.451 272.979 518.078] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.23 508.451 292.265 518.078] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +6762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 494.97 199.334 505.445] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code) >> +>> endobj +6763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [283.664 479.874 311.229 489.5] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6764 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [311.48 479.874 330.515 489.5] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +6765 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 468.096 201.459 476.867] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code) >> +>> endobj +6766 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.522 451.296 406.087 460.922] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6767 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.065 451.296 425.1 460.922] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +6768 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 428.559 157.112 437.33] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer) >> +>> endobj +6769 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.813 411.759 253.378 421.385] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6770 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.629 411.759 272.664 421.385] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +6771 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.577 411.759 468.238 421.385] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +6772 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 399.981 182.97 408.752] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status) >> +>> endobj +6773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 371.403 161.039 380.174] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code) >> +>> endobj +6774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 356.137 148.159 364.23] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code) >> +>> endobj +6775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.535 356.137 325.1 364.23] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.385 342.826 209.617 351.597] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener) >> +>> endobj +6777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.707 326.026 204.742 335.652] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +6778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.805 316.6 174.466 324.693] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +6779 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 303.289 182.522 312.06] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code) >> +>> endobj +6780 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 242.579 210.793 252.923] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8b) >> +>> endobj +6781 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 230.494 209.753 240.968] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba6adf97f83acf6453d4a6a4b1070f3754) >> +>> endobj +6782 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.738 230.494 437.401 240.968] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba443ec8de9a697e190f4b24ab3ab36a9d) >> +>> endobj +6783 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [452.386 230.494 525.406 240.968] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bae28f71975b160263c7e6438b4b4429ef) >> +>> endobj +6823 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 218.539 209.761 229.013] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bae28f71975b160263c7e6438b4b4429ef) >> +>> endobj +6784 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.754 218.539 387.562 229.013] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba0777deff381bd76ec1ab2dc434860022) >> +>> endobj +6785 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 206.583 265.056 217.058] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bad376a854099d47f8a5279893e854ec27) >> +>> endobj +6786 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.127 206.583 411.045 217.058] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bab0d4998a26f5b5742ad38c4af8817e32) >> +>> endobj +6787 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.116 206.583 525.406 217.058] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bab67551dad56fc73fd4a580e810dc5f7f) >> +>> endobj +6824 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 195.189 178.828 205.103] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bab67551dad56fc73fd4a580e810dc5f7f) >> +>> endobj +6788 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.82 195.189 344.129 205.103] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba522f961eb7a2b35f0ef4b99b4ad3bb0a) >> +>> endobj +6789 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 182.565 242.237 193.148] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8baa8534012cb63e62c0b3a2335206117cc) >> +>> endobj +6790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.359 182.565 487.612 193.148] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba85a7970b25fcbdfd2f82f78609298e56) >> +>> endobj +6791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [496.733 182.565 525.406 193.148] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bac18fb72fa24e41efb70cd214f7681dfc) >> +>> endobj +6825 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 170.848 280.792 181.192] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bac18fb72fa24e41efb70cd214f7681dfc) >> +>> endobj +6792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 142.14 227.891 152.615] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1c) >> +>> endobj +6793 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 130.185 236.31 140.659] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca90589c47f06eb971d548591f23c285af) >> +>> endobj +6794 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.385 130.185 389.943 140.659] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca4db4563826bad0eb2f60ee6e42d0ea4b) >> +>> endobj +6795 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [407.017 130.185 525.406 140.659] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1cad85544fce402c7a2a96a48078edaf203) >> +>> endobj +6826 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 118.23 135.691 128.704] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1cad85544fce402c7a2a96a48078edaf203) >> +>> endobj +6796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.891 118.23 292.439 128.704] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1caa8a06837aec81e16c9a07221848aef6f) >> +>> endobj +6797 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 106.275 250.504 116.749] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca3f6fb6f058deeea1407bacefec5265a2) >> +>> endobj +6798 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.962 106.275 404.773 116.749] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca183709ebe3a1d675014d32b94ad7ed94) >> +>> endobj +6799 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.232 106.275 525.406 116.749] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca6adf97f83acf6453d4a6a4b1070f3754) >> +>> endobj +6827 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 94.319 139.413 104.588] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca6adf97f83acf6453d4a6a4b1070f3754) >> +>> endobj +6800 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.572 79.126 365.137 88.849] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6801 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 69.87 136.515 77.705] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6818 0 obj << +/D [6816 0 R /XYZ 69.866 801.979 null] +>> endobj +114 0 obj << +/D [6816 0 R /XYZ 70.866 771.024 null] +>> endobj +6819 0 obj << +/D [6816 0 R /XYZ 70.866 744.446 null] +>> endobj +6820 0 obj << +/D [6816 0 R /XYZ 70.866 694.552 null] +>> endobj +118 0 obj << +/D [6816 0 R /XYZ 70.866 687.811 null] +>> endobj +6821 0 obj << +/D [6816 0 R /XYZ 70.866 649.589 null] +>> endobj +6822 0 obj << +/D [6816 0 R /XYZ 70.866 282.756 null] +>> endobj +6815 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6866 0 obj << +/Length 2397 +/Filter /FlateDecode +>> +stream +xڵZ[w8~msҊ$@@^$INd)3dnǻgV­ix^DIJԹqD$s.H'9̹ȜnH՚eQ7IW&+FݛJϼydM6\ r[6eA6I=bRc?.>8Pu#F碌P'gJ8rTϝ |[ogԬWŃD!焂j;灚}3ZucUUj5I#&x=nDw֌8,z;,pey'?[f7)BM^\U-dZ?Vb=}:ġ!>爑qMADFnC`LAms ^ ScS:{N;j߮_~f1#͛";Ywӏ0 / MV2۔hOƁ *Q覽>˨("1OX8aq௮+ +[ +jk?}X&٫d),d =/8QPańFp .9iRM +Ae!\0܋{.Sx^4hч#rHX7ԣRHW0-Ggi8L͘MI`IW]^kfhG6Oi6%!r_eb ZY#dgNaJofӔvVF6qˋA\Ss[[d +=b8b?j65s` \eZ_3AX`S^e0CV>滼Y-ԓ],|.Pًܾڏ{~l.kl17-ۢ7/˶:dn~SYR + +TWС̂76J0fۗk. ,2hGV.RsaqD7WP>@nE eo$ۤw|TwmIU{@D^ԨP`\CuP}ƨq}UopXb,Kh+Eb_{7p>'\.jNT֍5{ԍ]GnN&{HlL*;S/B""&dqVj=x\SL_F3mlpy/!k6|!+R\hna+-v9Ѓre&ǕroP;"nM[X/b7B}_8uS(w:|2͞Mt tƣG"g$y?h 4$ʏ7JՐS +٘v? _yaxaz0v@??O(2? ? Bz,0ط+51eL; J_f?g?S6y.;N|.Չɽ׍b*ʊ +endstream +endobj +6865 0 obj << +/Type /Page +/Contents 6866 0 R +/Resources 6864 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6707 0 R +/Annots [ 6802 0 R 6803 0 R 6804 0 R 6805 0 R 6806 0 R 6868 0 R 6807 0 R 6808 0 R 6809 0 R 6810 0 R 6811 0 R 6812 0 R 6813 0 R 6814 0 R 6859 0 R 6860 0 R 6861 0 R 6862 0 R 6863 0 R ] +>> endobj +6802 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 758.307 161.469 768.652] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19) >> +>> endobj +6803 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 746.115 187.193 756.697] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19af704f57ea420275ad51bf55b7dec2c96) >> +>> endobj +6804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.487 746.115 340.812 756.697] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ae047588dabb5a0b1e059604b80289791) >> +>> endobj +6805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.105 746.115 492.44 756.697] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ac495884e9133962e72063062d1382466) >> +>> endobj +6806 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [496.733 746.115 525.406 756.697] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aedb214653d9f3cecd840463790ac2894) >> +>> endobj +6868 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 734.159 176.613 744.742] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aedb214653d9f3cecd840463790ac2894) >> +>> endobj +6807 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 722.204 193.559 732.786] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aa927b3e1f83aa1b3c6feff945ca18f77) >> +>> endobj +6808 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.813 722.204 376.222 732.786] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aa3db59f96790ca93f6c8ac703735f401) >> +>> endobj +6809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [387.477 722.204 522.913 732.786] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19a8678b4480f40853432f680fccf4dab40) >> +>> endobj +6810 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 710.917 228.223 720.831] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19a47d270be4d53cc3a1bc56b9eb1c36595) >> +>> endobj +6811 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 698.294 252.297 708.876] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ab9ef7abda3055a11dd964fd93a07dc40) >> +>> endobj +6812 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.338 698.294 419.341 708.876] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ad61e8ad0770b4d06dc1716dfce52751e) >> +>> endobj +6813 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [422.382 698.294 522.913 708.876] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19a10b0501000c144cb2a7424bd45e1bcde) >> +>> endobj +6814 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 686.576 193.317 696.921] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aef70e46fd3bbc21e3e1f0b6815e750c0) >> +>> endobj +6859 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.381 511.365 436.787 521.947] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6860 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.462 382.859 390.868 393.333] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6861 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [448.829 354.637 479.235 365.219] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6862 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.463 326.524 398.869 337.106] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6863 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.437 270.403 425.844 280.878] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6867 0 obj << +/D [6865 0 R /XYZ 69.866 801.979 null] +>> endobj +122 0 obj << +/D [6865 0 R /XYZ 70.866 656.618 null] +>> endobj +6839 0 obj << +/D [6865 0 R /XYZ 70.866 629.432 null] +>> endobj +126 0 obj << +/D [6865 0 R /XYZ 70.866 629.432 null] +>> endobj +6840 0 obj << +/D [6865 0 R /XYZ 88.314 530.515 null] +>> endobj +6841 0 obj << +/D [6865 0 R /XYZ 88.314 514.356 null] +>> endobj +6842 0 obj << +/D [6865 0 R /XYZ 88.314 486.243 null] +>> endobj +6843 0 obj << +/D [6865 0 R /XYZ 88.314 458.129 null] +>> endobj +6844 0 obj << +/D [6865 0 R /XYZ 88.314 430.015 null] +>> endobj +6845 0 obj << +/D [6865 0 R /XYZ 88.314 401.901 null] +>> endobj +6846 0 obj << +/D [6865 0 R /XYZ 88.314 385.742 null] +>> endobj +6847 0 obj << +/D [6865 0 R /XYZ 88.314 357.629 null] +>> endobj +6848 0 obj << +/D [6865 0 R /XYZ 88.314 329.515 null] +>> endobj +6849 0 obj << +/D [6865 0 R /XYZ 88.314 301.401 null] +>> endobj +6850 0 obj << +/D [6865 0 R /XYZ 88.314 273.287 null] +>> endobj +6869 0 obj << +/D [6865 0 R /XYZ 70.866 251.256 null] +>> endobj +130 0 obj << +/D [6865 0 R /XYZ 70.866 235.501 null] +>> endobj +6870 0 obj << +/D [6865 0 R /XYZ 88.314 151.66 null] +>> endobj +6871 0 obj << +/D [6865 0 R /XYZ 88.314 135.501 null] +>> endobj +6872 0 obj << +/D [6865 0 R /XYZ 88.314 119.342 null] +>> endobj +6873 0 obj << +/D [6865 0 R /XYZ 88.314 103.183 null] +>> endobj +6874 0 obj << +/D [6865 0 R /XYZ 88.314 87.025 null] +>> endobj +6875 0 obj << +/D [6865 0 R /XYZ 88.314 70.866 null] +>> endobj +6864 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R /F73 4716 0 R /F109 6535 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6892 0 obj << +/Length 1765 +/Filter /FlateDecode +>> +stream +xڵX[s8~`3kE 3}hӤ;;4]δ} XpriG7 $I>!@}߹vz9;<+DcBƬ k.u-\ׇ]|x w47eh&- }v7#[(/߰w[Qhɝ.=֙}a PxVYY"u 1yv YBy{y+bIMMܠno0l\KC> *TVçl +tPkN-~+6}#)8Sw/Vus 3Tp-SXQ +@QY_^ (LG-[ZߎpܤX WAc9`ڙ<_C 3{x7u"R&wILރ6 Ӏ&y81SeQed0|q!(W~u$)ihx<Rru+H!OuP$)[ZEvqQ)Z#=Zc;Hey;i/z6 j6kI( MTӧ8Y_*<dw[fl|hl:W_EXu)PbA +,&|^,O# ,tY&h}b8T\/ңXO+OxE&[HVȘӕl<5[ONuK+čzD#Яۊ'iM֒NU&_e{G(UDȅqA"]+tuPm 5ڢ+Cgah`.4پvjq3MtBzX]lZe>"'Ơ"%XkY͡SӓR< 2_sPIΛMGh[L7֌[`y%R5?$ 7<~z?pzӘ*0!6T,|ft3b5ahHUx]DDg˞ZTQ# 3`;;VD.#P]Rn Fr06z#~S0"0 Qp>i;/ :_[5vE ..Fb xC?}oS~S рy29NĘ[n7ܴ/:OԂJ1a{L[Bh.vjy)Jvە~Fp #P +endstream +endobj +6891 0 obj << +/Type /Page +/Contents 6892 0 R +/Resources 6890 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6707 0 R +/Annots [ 6882 0 R 6883 0 R 6884 0 R 6885 0 R 6886 0 R 6887 0 R 6888 0 R ] +>> endobj +6882 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.576 601.389 355.982 611.971] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6883 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [79.84 591.326 110.247 599.81] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6884 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.74 445.032 451.065 455.614] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values) >> +>> endobj +6885 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 337.205 182.298 345.689] +/A << /S /GoTo /D (class_photon_1_1_mono_behaviour) >> +>> endobj +6886 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 307.273 175.824 315.757] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour) >> +>> endobj +6887 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 216.735 160.877 227.317] +/A << /S /GoTo /D (namespace_photon_ac2f4b49a218ef814d00e31cd5f32bf4e) >> +>> endobj +6888 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 67.875 210.721 78.457] +/A << /S /GoTo /D (namespace_unity_engine_1_1_scene_management) >> +>> endobj +6893 0 obj << +/D [6891 0 R /XYZ 69.866 801.979 null] +>> endobj +6876 0 obj << +/D [6891 0 R /XYZ 88.314 761.061 null] +>> endobj +6877 0 obj << +/D [6891 0 R /XYZ 88.314 744.103 null] +>> endobj +6878 0 obj << +/D [6891 0 R /XYZ 88.314 727.144 null] +>> endobj +6879 0 obj << +/D [6891 0 R /XYZ 88.314 710.186 null] +>> endobj +6880 0 obj << +/D [6891 0 R /XYZ 88.314 693.227 null] +>> endobj +6881 0 obj << +/D [6891 0 R /XYZ 88.314 676.269 null] +>> endobj +6851 0 obj << +/D [6891 0 R /XYZ 70.866 662.784 null] +>> endobj +134 0 obj << +/D [6891 0 R /XYZ 70.866 645.147 null] +>> endobj +6852 0 obj << +/D [6891 0 R /XYZ 88.314 549.774 null] +>> endobj +6853 0 obj << +/D [6891 0 R /XYZ 88.314 532.815 null] +>> endobj +6854 0 obj << +/D [6891 0 R /XYZ 88.314 515.857 null] +>> endobj +6855 0 obj << +/D [6891 0 R /XYZ 88.314 498.899 null] +>> endobj +6856 0 obj << +/D [6891 0 R /XYZ 88.314 481.94 null] +>> endobj +6857 0 obj << +/D [6891 0 R /XYZ 88.314 464.982 null] +>> endobj +6858 0 obj << +/D [6891 0 R /XYZ 88.314 448.023 null] +>> endobj +6021 0 obj << +/D [6891 0 R /XYZ 70.866 422.691 null] +>> endobj +138 0 obj << +/D [6891 0 R /XYZ 70.866 415.372 null] +>> endobj +6894 0 obj << +/D [6891 0 R /XYZ 70.866 376.723 null] +>> endobj +6895 0 obj << +/D [6891 0 R /XYZ 70.866 258.145 null] +>> endobj +142 0 obj << +/D [6891 0 R /XYZ 70.866 200.094 null] +>> endobj +6896 0 obj << +/D [6891 0 R /XYZ 70.866 172.732 null] +>> endobj +146 0 obj << +/D [6891 0 R /XYZ 70.866 172.732 null] +>> endobj +6897 0 obj << +/D [6891 0 R /XYZ 70.866 147.827 null] +>> endobj +150 0 obj << +/D [6891 0 R /XYZ 70.866 147.827 null] +>> endobj +6898 0 obj << +/D [6891 0 R /XYZ 70.866 109.286 null] +>> endobj +6899 0 obj << +/D [6891 0 R /XYZ 70.866 57.381 null] +>> endobj +6890 0 obj << +/Font << /F74 4717 0 R /F109 6535 0 R /F39 4678 0 R /F73 4716 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6903 0 obj << +/Length 483 +/Filter /FlateDecode +>> +stream +xڝSKo0 WhJ>;e=xKu,s\I}(ervR(š܂Fb]0(X,gڤwǴZg *Y6dzMm/K;ۏ.k8)Cy\τ:8m10.Y= l\TفH}%H f&ȁ2RP* %xD"ȄH=n31dRd8N> endobj +6889 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 704.693 180.487 715.275] +/A << /S /GoTo /D (class_unity_engine_1_1_scene_management_1_1_scene_manager) >> +>> endobj +6900 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.373 689.949 275.085 699.672] +/A << /S /GoTo /D (class_unity_engine_1_1_scene_management_1_1_scene_manager) >> +>> endobj +6904 0 obj << +/D [6902 0 R /XYZ 69.866 801.979 null] +>> endobj +154 0 obj << +/D [6902 0 R /XYZ 70.866 771.024 null] +>> endobj +6905 0 obj << +/D [6902 0 R /XYZ 70.866 744.606 null] +>> endobj +6901 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6910 0 obj << +/Length 266 +/Filter /FlateDecode +>> +stream +xڕP=O0+ޘ NGTP0S!$nI*8q҉ݻw>aK``h(:T1l!ӭ]YPg#.Y.$]yi\ _w 'O|j!-Bn+@*rQـͤoyxf:Xqά(JA JoZw.bjp2ɑ ą]1qy9t~zokGveǺGc T`ӇłFBѿޠk +endstream +endobj +6909 0 obj << +/Type /Page +/Contents 6910 0 R +/Resources 6908 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6906 0 R +>> endobj +6911 0 obj << +/D [6909 0 R /XYZ 69.866 801.979 null] +>> endobj +6908 0 obj << +/Font << /F74 4717 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6920 0 obj << +/Length 993 +/Filter /FlateDecode +>> +stream +xVMo6W>Q@Hi9q@ݞ2+Dc}IH]=87ogȢUĢglPag?..>2Usͣ}2iQhq}&flτHOD*Y&͔I6ؗmλ[9㊺:4N)s?{}jm,QmovynîweJR914 F̥'Wє% ۃV~Vh`@0}if㙒Yn+#%>MRIJ^N')ّ j'Pț)pZ]K:FqÆ՘be+,oGL`f~oms}fԬܥO;PPd,7ݕqf}6"f(LP<=LAwxQ 7f/QX[/Q`hZz//|7(0VdK%j*ic]퍳ϒg$גxBy >>%^,7x~]x?h}ٟq +endstream +endobj +6919 0 obj << +/Type /Page +/Contents 6920 0 R +/Resources 6918 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6906 0 R +/Annots [ 6912 0 R 6913 0 R 6914 0 R 6915 0 R 6916 0 R ] +>> endobj +6912 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 457.394 188.825 467.663] +/A << /S /GoTo /D (class_actor_properties_acfa9b932f472314d1efe0f0dad359524) >> +>> endobj +6913 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 427.98 177.599 438.248] +/A << /S /GoTo /D (class_actor_properties_a61f77cdeb2dffd485952b106feec37bb) >> +>> endobj +6914 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 398.565 166.356 408.833] +/A << /S /GoTo /D (class_actor_properties_a08edbcddcc29b968467fe728e478eaa4) >> +>> endobj +6915 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [328.893 382.953 432.401 392.677] +/A << /S /GoTo /D (class_room_options_a76399e7b84d762bd0315bf89aa058caf) >> +>> endobj +6916 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [314.252 67.875 429.04 78.457] +/A << /S /GoTo /D (class_room_options_a76399e7b84d762bd0315bf89aa058caf) >> +>> endobj +6921 0 obj << +/D [6919 0 R /XYZ 69.866 801.979 null] +>> endobj +158 0 obj << +/D [6919 0 R /XYZ 70.866 771.024 null] +>> endobj +6922 0 obj << +/D [6919 0 R /XYZ 70.866 585.06 null] +>> endobj +162 0 obj << +/D [6919 0 R /XYZ 70.866 585.06 null] +>> endobj +6923 0 obj << +/D [6919 0 R /XYZ 70.866 498.317 null] +>> endobj +166 0 obj << +/D [6919 0 R /XYZ 70.866 366.921 null] +>> endobj +170 0 obj << +/D [6919 0 R /XYZ 70.866 275.481 null] +>> endobj +6924 0 obj << +/D [6919 0 R /XYZ 70.866 250.333 null] +>> endobj +174 0 obj << +/D [6919 0 R /XYZ 70.866 250.333 null] +>> endobj +6925 0 obj << +/D [6919 0 R /XYZ 417.042 190.203 null] +>> endobj +178 0 obj << +/D [6919 0 R /XYZ 70.866 171.18 null] +>> endobj +6926 0 obj << +/D [6919 0 R /XYZ 70.866 128.647 null] +>> endobj +182 0 obj << +/D [6919 0 R /XYZ 70.866 111.619 null] +>> endobj +6828 0 obj << +/D [6919 0 R /XYZ 70.866 68.871 null] +>> endobj +6918 0 obj << +/Font << /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6948 0 obj << +/Length 2202 +/Filter /FlateDecode +>> +stream +xYIsW|HUf Kc#Y*O*3Θ4E @9y_w6HT*9Hz}}om֓Zf[ K(f +vYEV,Ya=A<~cI5;hD7]OY_nkVc/z6'b0+1$j>!S(p1dclPf*EvW|BEfPwW:$~D2sO48gi06ߔkswz>(L7/@t(>s +$2J5@0L A~IMuy/y&F.z5T ̳V:w=A#Yv~ʺsxh+kj&(m6܌ml#U%N'2jL7֋L.ISx ] - `WZe$k,ํҩ + 2!&aX+/mV_;{H+DyJO 0Q$; >DڴWhRC[z7^X<JJQ#(nU'exlMnNv,AZѰ:➐{UP?i\rfa4]J}S5}AY7FqBMylu&SO"W%~_s,Len!4V8HYʒ$ѣ>ܥA?dҔ64cUjݲBԠ0R?} 1?t}5 _L1j>({ai$.JU33wvvu?G̏#.2ңFV >:muӃүzj ]G:)IIR'It[$s;"a J9 5 +endstream +endobj +6947 0 obj << +/Type /Page +/Contents 6948 0 R +/Resources 6946 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6906 0 R +/Annots [ 6917 0 R 6928 0 R 6929 0 R 6930 0 R 6931 0 R 6932 0 R 6933 0 R 6934 0 R 6935 0 R 6936 0 R 6937 0 R 6938 0 R 6939 0 R 6940 0 R 6941 0 R 6942 0 R 6943 0 R 6944 0 R 6945 0 R 6952 0 R ] +>> endobj +6917 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.634 729.767 242.04 740.242] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 672.234 180.101 682.709] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_aa1a218337b71411767e9d5ef7740bf02) >> +>> endobj +6929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 644.539 180.101 655.121] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a731ad99cd27c9c9943ebae6e7aade2e2) >> +>> endobj +6930 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 616.951 210.308 627.533] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a2b0231eb3737127f6c905fca3bda5976) >> +>> endobj +6931 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 589.47 210.308 599.945] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a551321f83ae6ae95688ebfa99251daf4) >> +>> endobj +6932 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 561.775 217.777 572.357] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_ad82074fee0c1ef809978e612dd882405) >> +>> endobj +6933 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 534.187 188.914 544.769] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a083a5547fef3709586481254c256e04e) >> +>> endobj +6934 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 476.761 203.064 487.236] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1c) >> +>> endobj +6935 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.564 476.761 242.587 487.236] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a8736f9ea3a807749dfe4bdbab4d4ff5a) >> +>> endobj +6936 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 449.066 199.835 459.648] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a62b771eb77744555663093db81de52ad) >> +>> endobj +6937 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.191 410.626 177.788 420.895] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a62980bf198ce9565c41d408a4df93310) >> +>> endobj +6938 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 382.931 144.98 393.307] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a400c002afb41d2ea2a2288e3d010afa6) >> +>> endobj +6939 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.683 368.437 234.248 378.063] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6940 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 344.384 147.724 354.76] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_abe4f64001e4651f97f688a44992caa3b) >> +>> endobj +6941 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.634 270.33 242.04 280.805] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6942 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.223 252.706 114.629 263.18] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6943 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.999 193.439 525.406 204.021] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.118 163.967 119.525 174.442] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6945 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [485.782 163.967 525.406 174.442] +/Subtype/Link/A<> +>> endobj +6952 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 152.365 269.123 162.263] +/Subtype/Link/A<> +>> endobj +6949 0 obj << +/D [6947 0 R /XYZ 69.866 801.979 null] +>> endobj +186 0 obj << +/D [6947 0 R /XYZ 70.866 771.024 null] +>> endobj +6950 0 obj << +/D [6947 0 R /XYZ 70.866 711.886 null] +>> endobj +6951 0 obj << +/D [6947 0 R /XYZ 70.866 516.413 null] +>> endobj +190 0 obj << +/D [6947 0 R /XYZ 70.866 315.693 null] +>> endobj +194 0 obj << +/D [6947 0 R /XYZ 70.866 138.266 null] +>> endobj +6953 0 obj << +/D [6947 0 R /XYZ 70.866 113.014 null] +>> endobj +198 0 obj << +/D [6947 0 R /XYZ 70.866 113.014 null] +>> endobj +6954 0 obj << +/D [6947 0 R /XYZ 70.866 68.979 null] +>> endobj +6946 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6966 0 obj << +/Length 486 +/Filter /FlateDecode +>> +stream +xڕSn0+x$^>E:>^JT*HDUEwpmwYܤZlRFk8 edžr7/*ñc["1]}%p^l'' mY`Ҭ)y,@EjD:T*V=5JP%E|L`a,^ _-Mb0 T +w-ݡw`aL +ɝ:%\SNfˍXͺB +-ZiOU*.J9z^D$-~yS;bj]DT'qG.x4uaIagESj9apokmgFET3 +J= b&OEŕ{c~ncMoO1ғG +endstream +endobj +6965 0 obj << +/Type /Page +/Contents 6966 0 R +/Resources 6964 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 6906 0 R +>> endobj +6967 0 obj << +/D [6965 0 R /XYZ 69.866 801.979 null] +>> endobj +202 0 obj << +/D [6965 0 R /XYZ 70.866 771.024 null] +>> endobj +6964 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6973 0 obj << +/Length 1987 +/Filter /FlateDecode +>> +stream +xYKsFW|YʜlQmhW\@&ѿO HPH; 9itLwCɻ)Jɢ}`"IyLM?ELًuֶMT|Y/ҙ.N'Ot,Bh("XϖrqF:{Qa/(FN)qdB͔ +z^A(㝂=a)SAgx5A)X,{! 0uٶEt sudI*oM_vkjvDvzU + +CsrpX*O/qg%%"}o*q ,8,egmQem؜=t_l[]oY4C .xs"7$rVT:78d6So]wA8ɨ.R!΂u$R `k(`"g~QlHהwԹҞ(~\C , 0~n> J$0PCtql 7[_.%Y)օW{9'H8+$Q@t~6Ft g sx^+E. aN` +s:ۛ177"1#D8_Z{KvC4A.qڿҸb=v_e7R@E@In0nfbA;*E{T)Է9xUq؃PFJvC@pgTG qGpz6a0+W)0@Ӳ> endobj +6968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.331 741.029 275.737 753.203] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.363 199.458 499.77 210.041] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6974 0 obj << +/D [6972 0 R /XYZ 69.866 801.979 null] +>> endobj +206 0 obj << +/D [6972 0 R /XYZ 70.866 718.101 null] +>> endobj +6957 0 obj << +/D [6972 0 R /XYZ 70.866 696.036 null] +>> endobj +210 0 obj << +/D [6972 0 R /XYZ 70.866 696.036 null] +>> endobj +6955 0 obj << +/D [6972 0 R /XYZ 70.866 566.144 null] +>> endobj +214 0 obj << +/D [6972 0 R /XYZ 70.866 548.994 null] +>> endobj +6956 0 obj << +/D [6972 0 R /XYZ 70.866 449.052 null] +>> endobj +218 0 obj << +/D [6972 0 R /XYZ 70.866 431.903 null] +>> endobj +6958 0 obj << +/D [6972 0 R /XYZ 70.866 343.916 null] +>> endobj +222 0 obj << +/D [6972 0 R /XYZ 70.866 326.767 null] +>> endobj +226 0 obj << +/D [6972 0 R /XYZ 70.866 299.732 null] +>> endobj +6960 0 obj << +/D [6972 0 R /XYZ 70.866 272.467 null] +>> endobj +230 0 obj << +/D [6972 0 R /XYZ 70.866 272.467 null] +>> endobj +6961 0 obj << +/D [6972 0 R /XYZ 120.198 190.494 null] +>> endobj +234 0 obj << +/D [6972 0 R /XYZ 70.866 171.458 null] +>> endobj +6959 0 obj << +/D [6972 0 R /XYZ 70.866 128.685 null] +>> endobj +238 0 obj << +/D [6972 0 R /XYZ 70.866 111.536 null] +>> endobj +6962 0 obj << +/D [6972 0 R /XYZ 70.866 68.979 null] +>> endobj +6971 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6995 0 obj << +/Length 2046 +/Filter /FlateDecode +>> +stream +xYMs6ϯU;B6ڵJvCvRK 0GUNIHZ:wuf-fgwb8['$‰F,rڍIY`]U[di[կnZveژ+$T%Q7H3,$fֳCI΃vxP./fԬz5$|Bwb}J۴ۢ+Y~hҵlyYRU9_-y1>Yx"toRVSm iWiԱ  )ࡧ~Xo>je#[`W,V2,OP 0 "\ȹ&tA@T> ,c~ȡ} ʼn&XIzc.7+MyiS|tUdaRRllN@aˆ}.^U67F[mF23~h ?@5B2j Ta2q:6-* hrd:`Z|v,zHޗҘb{T\wU%33ܘXcVi2?N%Qe!a~|jYdrԐ@2F3Z}A8'篌o fأ5QEEZ}̧LBQKPVtL[˄\oǝ`WOCBFJu$*N{o D?& NkaMo$eWk%m"BomT(٠ݺ5 +ˍ$QMkA|ǍTYlBݧ. +"yj"m}BÄ*w/bi&ǻYz.*̴fϟ %"pTk 7E<C[uO%O L5%5^^_DX݌r~ +X=BpM,kz=׋'<(ր}O^UQdN?pDfnSQ:U:ًxƌmϰjH1/[q̇>WxUj6ljRq:7ʎaG\B* S'n!~3NXW;N۩ЭiVQ*z=Y{[F =kN'D$/7H >UAke@irD{նlt=݂RFh|WKT>AQ8~uunΌ*J=߁K=%%IhpnlS^Q8?=@ +Tp"BdXj/v\/UmWG1+/{>9 D#w&ߝZpዸ挄.4Y&bpg /ORG,aɝ;KxY6Rg 3| ,Ro>Y79rg9w Ov QHlS0Ȟ_tϼt$ABhlV2vR7L Rmlr(-xq\SёU(Ebnz`Tk YkV޴%xRW{B zۙg]g6 +w'CZYˢ/=naA)ԇ|bk8-/ۃhA (~Nqm=,1Y$Hhb٤+ÂQ_︰BvBfWqeݾjZgwJny`' +endstream +endobj +6994 0 obj << +/Type /Page +/Contents 6995 0 R +/Resources 6993 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7000 0 R +/Annots [ 6970 0 R 6975 0 R 6976 0 R 6977 0 R 6978 0 R 6979 0 R 6980 0 R 6981 0 R 6982 0 R 6983 0 R 6984 0 R 6985 0 R 6986 0 R 6987 0 R 6988 0 R 6989 0 R 6990 0 R ] +>> endobj +6970 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.168 733.448 207.574 743.922] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +6975 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.634 594.692 242.04 605.166] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 536.283 180.101 546.757] +/A << /S /GoTo /D (class_authentication_values_a25eb4617207f2cb2f97ecbf91091ed96) >> +>> endobj +6977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 507.978 180.101 518.56] +/A << /S /GoTo /D (class_authentication_values_a59e9550389ab702b9bc033eeb6e117a2) >> +>> endobj +6978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 479.78 210.308 490.362] +/A << /S /GoTo /D (class_authentication_values_adac06329a99f2a0035e485e45460d9af) >> +>> endobj +6979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 451.69 210.308 462.165] +/A << /S /GoTo /D (class_authentication_values_a3fd84b1b6fca86c6838d6c2fff8926e0) >> +>> endobj +6980 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 423.385 217.777 433.968] +/A << /S /GoTo /D (class_authentication_values_af800bbd7144b184c244277c37297dba1) >> +>> endobj +6981 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 395.188 188.914 405.77] +/A << /S /GoTo /D (class_authentication_values_af74e9d15a79034c547ea621bb70899b4) >> +>> endobj +6982 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 336.886 203.064 347.361] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257) >> +>> endobj +6983 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.564 336.886 242.587 347.361] +/A << /S /GoTo /D (class_authentication_values_a6902d22f3f59653cac4ee895273ed5c5) >> +>> endobj +6984 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 308.581 199.835 319.164] +/A << /S /GoTo /D (class_authentication_values_a960384fb735ced0be6ee2d3e365fd5aa) >> +>> endobj +6985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.191 269.533 177.788 279.801] +/A << /S /GoTo /D (class_authentication_values_ae5df4bb87c20c0e83e1f13ca126a3b5f) >> +>> endobj +6986 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 241.228 144.98 251.603] +/A << /S /GoTo /D (class_authentication_values_a0fa90664bfe590fec56cf4f399ff26b2) >> +>> endobj +6987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.683 226.429 234.248 236.055] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6988 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 202.071 147.724 212.447] +/A << /S /GoTo /D (class_authentication_values_a60a4d92454c4b2bbca1f299631da2f94) >> +>> endobj +6989 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.634 127.142 242.04 137.616] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6990 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [84.223 109.517 114.629 119.992] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6996 0 obj << +/D [6994 0 R /XYZ 69.866 801.979 null] +>> endobj +242 0 obj << +/D [6994 0 R /XYZ 70.866 771.024 null] +>> endobj +6963 0 obj << +/D [6994 0 R /XYZ 70.866 724.273 null] +>> endobj +246 0 obj << +/D [6994 0 R /XYZ 70.866 708.677 null] +>> endobj +6997 0 obj << +/D [6994 0 R /XYZ 70.866 664.432 null] +>> endobj +250 0 obj << +/D [6994 0 R /XYZ 70.866 647.663 null] +>> endobj +6998 0 obj << +/D [6994 0 R /XYZ 70.866 576.31 null] +>> endobj +6999 0 obj << +/D [6994 0 R /XYZ 70.866 376.914 null] +>> endobj +254 0 obj << +/D [6994 0 R /XYZ 70.866 172.576 null] +>> endobj +6993 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7018 0 obj << +/Length 2137 +/Filter /FlateDecode +>> +stream +xYKw۶W{s*O>K&'in7n[-D.2Nk(1,Ӂ+0KLxogYx5q-Vd6Rbz +cާ+ן |UsL;ٰPcH~Ɗ܅RaFjXzn\:`7 h\h`ȕЫ16)v͆m6;r;oG]珅-[@nAqY,0o7ii^mT`kK.񊽺H -}oLC m*m3#$|F$h3>uͧ(Œ׋~@ "KHxM[He$1N 㸝yM{v@T*3Y8tɼ\]eQM|Ō+n{7ѼMKKL:P&E Q*Yqmh)Vh<7nwi!@l? ? TM1z9$lcqˑ#+yH۰>) DtN{ʋ|.G.ޜuh C&|;rwL{89:G^" ;.`/fܮVX|6ݾUј3ekL]ړdɖ]S2V&p pdh;Β2>S %@ﭩ?\EϸjyqF2u֣8tjvD e+$c5h.V}_j׿s{/:!nWeٷLSˉP$TqOrz.!BdN>"&OX(1Ŏ +/Q]p^C}4cDb~ʟ@e(a& CEouŬ }rB#^QJioOB y{w^7vSw?0CoJL<" +Ȼ9 +endstream +endobj +7017 0 obj << +/Type /Page +/Contents 7018 0 R +/Resources 7016 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7000 0 R +/Annots [ 6991 0 R 6992 0 R 7013 0 R 7014 0 R 7020 0 R 7015 0 R ] +>> endobj +6991 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.999 758.07 525.406 768.652] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +6992 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.235 704.58 308.641 715.162] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.118 687.063 119.525 697.538] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7014 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [485.782 687.063 525.406 697.538] +/Subtype/Link/A<> +>> endobj +7020 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 675.461 269.123 685.359] +/Subtype/Link/A<> +>> endobj +7015 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.331 495.323 275.737 507.497] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7019 0 obj << +/D [7017 0 R /XYZ 69.866 801.979 null] +>> endobj +258 0 obj << +/D [7017 0 R /XYZ 70.866 660.285 null] +>> endobj +7001 0 obj << +/D [7017 0 R /XYZ 70.866 634.847 null] +>> endobj +262 0 obj << +/D [7017 0 R /XYZ 70.866 634.847 null] +>> endobj +7002 0 obj << +/D [7017 0 R /XYZ 70.866 590.625 null] +>> endobj +266 0 obj << +/D [7017 0 R /XYZ 70.866 574.453 null] +>> endobj +270 0 obj << +/D [7017 0 R /XYZ 70.866 473.373 null] +>> endobj +7005 0 obj << +/D [7017 0 R /XYZ 70.866 451.503 null] +>> endobj +274 0 obj << +/D [7017 0 R /XYZ 70.866 451.503 null] +>> endobj +7003 0 obj << +/D [7017 0 R /XYZ 70.866 333.761 null] +>> endobj +278 0 obj << +/D [7017 0 R /XYZ 70.866 317.588 null] +>> endobj +7004 0 obj << +/D [7017 0 R /XYZ 70.866 217.842 null] +>> endobj +282 0 obj << +/D [7017 0 R /XYZ 70.866 201.669 null] +>> endobj +7006 0 obj << +/D [7017 0 R /XYZ 70.866 113.878 null] +>> endobj +286 0 obj << +/D [7017 0 R /XYZ 70.866 97.706 null] +>> endobj +290 0 obj << +/D [7017 0 R /XYZ 70.866 70.866 null] +>> endobj +7016 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R /F73 4716 0 R /F115 6693 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7037 0 obj << +/Length 1858 +/Filter /FlateDecode +>> +stream +xYIs8p"%BX2j*ireB%,gtq$#1us$XO?W4+.$9[ղxKk}oң. +4Rr|t>8ОzN]\N kρ KsQ@095'\C}DY<,$ l}h׼ؕ:Kݓ6 k.Zh5As"T+J\G NDUh"0uuj\aހ%pH*feUed~B"uMK6ae$̮G;. +?lh5ςlt ) ȜU䑫VVԠJK.n+) /y.A}: |5/$/qf1^:Vr>QaVTTD~>1eXͻ|3akz)%Y0EYPqA 9p.acިaj`[hp\DIn琰>ٚԭ= +n`"YC/{>JcjR Hyse 02Asܥۓ]-jЕB_@qz@xV2<H=14h 0DH(܏ѐ + )@3*sGOx!MRP@ +;V@1K㐡&h:Ý-N|`[b- +)!t՛#%*s/ƮcS +M0)uoGX3<'[H+kB+j8j6 +]EcUݭ)dU3`9&Pv̛{0EvO+ZKj-Ox, gt0Zh)u$(e%|^ؖi +OWwКX5qVG0VSӅIqTjVKej }jE?vIjTz3 +/E^N6u*7}q J$@t;<v:(8$ްiM8k=Jd)d4ɅU{\dZ0٥~hfwMgW#L[il"l*$1e$42@ C}iݣcC+ǰKl'wTAlÄ0n,Qo!PD_{D[!帴ƚulQ433톟{4T(gʡU1##ЋFϺb]h|оg(-4I-41>늍Ce6tiKp(T_d#()$,A:K`3|ZVBg$l%[4,khreٛ +[MGY[}zE. k&C4oE9T(%_BxE4uUQYmݾPW(c+Ci~z/e9n9ƔiuJ CpLջSS(FȨg>2) /׃ +(=Ju.}Vb>/M%֧ZEŨmxW_S҆VHSL5]L[K&IJoj 2v%rxhk./k`u|eS]I :}$; o7zT~`H Kp{CAm Ŧcdz4'ilfǾ8mScA[n0pM_oTGrչi +endstream +endobj +7036 0 obj << +/Type /Page +/Contents 7037 0 R +/Resources 7035 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7000 0 R +/Annots [ 7021 0 R 7022 0 R 7023 0 R 7024 0 R 7025 0 R 7026 0 R 7027 0 R 7028 0 R 7029 0 R 7030 0 R 7031 0 R 7032 0 R ] +>> endobj +7021 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.363 677.315 499.77 687.897] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7022 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.168 476.174 207.574 486.649] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7023 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.365 309.497 224.772 319.972] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7024 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.272 309.497 246.201 319.972] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.872 309.497 339.718 319.972] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7026 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 244.009 149.096 254.592] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a2e1d1cb310690b115794661ffdbb68b2) >> +>> endobj +7027 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [439.624 227.388 517.527 237.014] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aecfdac4a2de6577291597477bcaec9c7) >> +>> endobj +7028 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 212.166 131.432 222.748] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a17c00992e4bc685fbea02345c8e206cb) >> +>> endobj +7029 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 180.323 131.432 190.905] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_aa672474d138d6e1a4d7ef8c4ec616617) >> +>> endobj +7030 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 148.479 190.78 159.062] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a289e0448db95485404474b3702e80943) >> +>> endobj +7031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 116.636 177.761 127.218] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a837567f440a3174151eab88afb34d019) >> +>> endobj +7032 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 84.793 195.119 95.375] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a6aee5506a39fd2a26113addf8287f31a) >> +>> endobj +7038 0 obj << +/D [7036 0 R /XYZ 69.866 801.979 null] +>> endobj +7009 0 obj << +/D [7036 0 R /XYZ 70.866 750.871 null] +>> endobj +294 0 obj << +/D [7036 0 R /XYZ 70.866 750.871 null] +>> endobj +7010 0 obj << +/D [7036 0 R /XYZ 120.198 668.351 null] +>> endobj +298 0 obj << +/D [7036 0 R /XYZ 70.866 646.578 null] +>> endobj +7008 0 obj << +/D [7036 0 R /XYZ 70.866 603.258 null] +>> endobj +302 0 obj << +/D [7036 0 R /XYZ 70.866 583.372 null] +>> endobj +7011 0 obj << +/D [7036 0 R /XYZ 70.866 540.268 null] +>> endobj +306 0 obj << +/D [7036 0 R /XYZ 70.866 520.382 null] +>> endobj +7012 0 obj << +/D [7036 0 R /XYZ 70.866 466.999 null] +>> endobj +310 0 obj << +/D [7036 0 R /XYZ 70.866 447.113 null] +>> endobj +6829 0 obj << +/D [7036 0 R /XYZ 340.237 386.38 null] +>> endobj +314 0 obj << +/D [7036 0 R /XYZ 70.866 365.138 null] +>> endobj +7039 0 obj << +/D [7036 0 R /XYZ 70.866 286.826 null] +>> endobj +7035 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7060 0 obj << +/Length 1794 +/Filter /FlateDecode +>> +stream +xYKS8ϯp.%>@JH6[#o<6G~[{l $[`,Z_w-rs2s>;='@̙_9>FR$3_:GW>uz0r:~qYUIɿSCZA9zrq%|{`3׎"u>L`&FWhfj *Fwbi4pHSݺֲo{,옂3q&ЏZbƹp -,3)b:le'+;+kzxMl"XZXRRDC̈FhyVv LGq]ʥ[uE[vYIu ")<0۬U#nz^'ef A" jf]`^3c`4Zioq-?l)rx uI29ؽy,_ Fɮc(jDVr0nFB@,D3FFzeYF+FqȳC&qP `t;G>uì8;|`;Lh-a ^JM+_5[+z5IV.v:>dujv5y$:7K3#6I[5Lɭ׋ah!$V> +hViMsd`{g}f,D8pfF`X} +c~!­oxyiΖSrw!P8FJV`06(eu @r7Ё/T= . -j0\FuA@̀ЅڔCLʛ4R3*{^MV8ѧbTyHBm#P@A8 +6l-ǵ eym 3#*rczj$qA;ߏDj#]JW:!jc7|`c6f_5G{FHѠe];[SU} 0PzIvWmHvL M'8lږ&1fñY4@mօMZ}AQO35TAD +-.?E%a, <{\gMG]٫Es֞Gc`9hvY.0Ԉ|[dHlӷr+u2w ݌#0cX@!{^={s-T$*yz~?/^hQs Psnk9\)?!dl[8naG>h:H,KYRY[LRr|x;;U(lJ +endstream +endobj +7059 0 obj << +/Type /Page +/Contents 7060 0 R +/Resources 7058 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7000 0 R +/Annots [ 7033 0 R 7034 0 R 7047 0 R 7048 0 R 7049 0 R 7050 0 R 7051 0 R 7052 0 R 7053 0 R 7054 0 R 7055 0 R 7064 0 R 7056 0 R 7057 0 R ] +>> endobj +7033 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.204 731.534 182.109 741.91] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_ad5488b697206375ef6b13d4fa33eafdf) >> +>> endobj +7034 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.622 698.796 226.005 709.378] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a5f663f2af6204ea58ab29a5ee2bee316) >> +>> endobj +7047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.487 655.098 235.339 665.68] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a6ed4416ea6c6778dd857c95f3276a005) >> +>> endobj +7048 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 611.401 164.034 621.777] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a647d38d28697bcb1c6600520130d4cbf) >> +>> endobj +7049 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 527.404 150.996 537.319] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a3486dbba0f3a83529fe4f327375548cb) >> +>> endobj +7050 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 494.204 169.028 504.787] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a91a15ffc97cfd40eea6cf7965b99e5dc) >> +>> endobj +7051 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.365 410.592 224.772 421.066] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7052 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.272 410.592 246.201 421.066] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7053 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.872 410.592 339.718 421.066] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7054 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.748 392.86 368.682 403.442] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i) >> +>> endobj +7055 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [447.087 392.86 525.406 403.442] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aa3d4261b652969dd5f94971ca48f5a7e) >> +>> endobj +7064 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 382.716 109.736 391.487] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aa3d4261b652969dd5f94971ca48f5a7e) >> +>> endobj +7056 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [110.236 382.716 222.261 391.487] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a25f9db0c022bb0feda81d31f43053a81) >> +>> endobj +7057 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.576 288.86 522.913 299.334] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aecfdac4a2de6577291597477bcaec9c7) >> +>> endobj +7061 0 obj << +/D [7059 0 R /XYZ 69.866 801.979 null] +>> endobj +7062 0 obj << +/D [7059 0 R /XYZ 70.866 775.009 null] +>> endobj +7063 0 obj << +/D [7059 0 R /XYZ 70.866 570.418 null] +>> endobj +318 0 obj << +/D [7059 0 R /XYZ 70.866 457.095 null] +>> endobj +322 0 obj << +/D [7059 0 R /XYZ 70.866 362.773 null] +>> endobj +7040 0 obj << +/D [7059 0 R /XYZ 70.866 335.031 null] +>> endobj +326 0 obj << +/D [7059 0 R /XYZ 70.866 335.031 null] +>> endobj +330 0 obj << +/D [7059 0 R /XYZ 70.866 268.916 null] +>> endobj +7042 0 obj << +/D [7059 0 R /XYZ 70.866 242.878 null] +>> endobj +334 0 obj << +/D [7059 0 R /XYZ 70.866 242.878 null] +>> endobj +7043 0 obj << +/D [7059 0 R /XYZ 70.866 197.595 null] +>> endobj +338 0 obj << +/D [7059 0 R /XYZ 70.866 176.656 null] +>> endobj +7045 0 obj << +/D [7059 0 R /XYZ 70.866 133.233 null] +>> endobj +342 0 obj << +/D [7059 0 R /XYZ 70.866 112.294 null] +>> endobj +7046 0 obj << +/D [7059 0 R /XYZ 70.866 68.871 null] +>> endobj +7058 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F82 5877 0 R /F95 6017 0 R /F77 5876 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7080 0 obj << +/Length 1406 +/Filter /FlateDecode +>> +stream +xڽX[S8~ϯɞ!B%_LZN4`x]ہH:2v6vButt.t$-.Ku0FUOap=0y7=a` Xy /_M7%axFr )BQ¥^Ž !QJkjV8̪JdDү?m AGjJLSϝɇt`!\qM0s Kv6kZ00늺-] @nY}7F01^nTxv'9')K®~R]f!k*CȽji(n9eQ); 8_a7zS4ZD$|й b4*:<|_\:wqQ)eX00y/|/zc;bU`?nڪN;d%L#t.W h:ɺ Gu^UA4;I86 /Oi(Ha"΄< >P~WhNI;FD%դA2a9U]>h,ZPz)hqLK@Q>s_*ߦ3ЉEOJD:Wg;)" +}kI5#zsEHነ +dSWuY, +@jL}ݸ.v0T'5VY Q)'kT^uq[Sz; QЀeௌ~=О >W @%ĂiG%sˆ>4֭; +6O$g(AϔR1.?%Xi?^CG +6CE4fyglN0l'&EkCExeHF=|lو"{0_ɐ$ cXO/-͠pEށE~]A%榮=笽h;m!t'KM$J{]-Twr<%IEGNp8gϔpb@W{t;ը7r\N+#`Mܸ0?!]Ig9!yM;Dv^v'7WPY/4;+JUVn{ߑ1hL;$#;@Wd\ʱ9S#9GbzIuV6Njs<,4:}Um +endstream +endobj +7079 0 obj << +/Type /Page +/Contents 7080 0 R +/Resources 7078 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7000 0 R +/Annots [ 7073 0 R 7074 0 R ] +>> endobj +7073 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.014 85.499 179.421 96.081] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7074 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.921 85.499 200.85 96.081] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7081 0 obj << +/D [7079 0 R /XYZ 69.866 801.979 null] +>> endobj +346 0 obj << +/D [7079 0 R /XYZ 70.866 771.024 null] +>> endobj +7044 0 obj << +/D [7079 0 R /XYZ 70.866 675.436 null] +>> endobj +350 0 obj << +/D [7079 0 R /XYZ 70.866 656.131 null] +>> endobj +354 0 obj << +/D [7079 0 R /XYZ 70.866 593.731 null] +>> endobj +7068 0 obj << +/D [7079 0 R /XYZ 70.866 568.128 null] +>> endobj +358 0 obj << +/D [7079 0 R /XYZ 70.866 568.128 null] +>> endobj +7067 0 obj << +/D [7079 0 R /XYZ 70.866 523.172 null] +>> endobj +362 0 obj << +/D [7079 0 R /XYZ 70.866 503.867 null] +>> endobj +7065 0 obj << +/D [7079 0 R /XYZ 70.866 448.816 null] +>> endobj +366 0 obj << +/D [7079 0 R /XYZ 70.866 429.512 null] +>> endobj +7066 0 obj << +/D [7079 0 R /XYZ 70.866 386.524 null] +>> endobj +370 0 obj << +/D [7079 0 R /XYZ 70.866 367.219 null] +>> endobj +374 0 obj << +/D [7079 0 R /XYZ 70.866 292.756 null] +>> endobj +7069 0 obj << +/D [7079 0 R /XYZ 70.866 265.061 null] +>> endobj +378 0 obj << +/D [7079 0 R /XYZ 70.866 265.061 null] +>> endobj +7070 0 obj << +/D [7079 0 R /XYZ 70.866 222.305 null] +>> endobj +382 0 obj << +/D [7079 0 R /XYZ 70.866 203 null] +>> endobj +6830 0 obj << +/D [7079 0 R /XYZ 70.866 159.797 null] +>> endobj +386 0 obj << +/D [7079 0 R /XYZ 70.866 139.32 null] +>> endobj +7078 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F82 5877 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7119 0 obj << +/Length 1755 +/Filter /FlateDecode +>> +stream +xZIs6WVj&b4q:u&+89P$,@SK$+n&mJKI^^G/SrmVrTŵməꊭI@MsuF2lMqogygkDGqDX]UI+t]M_nRmo$U1t\Ke(ɖџ#*ُڐ4Uq]DTWb!AHݕߡ%EF|&k [_"8#Mt[IJlyE!4Oy#G/_2dDRS +jɲه!FЮ5ǩD3W"&3gboHAK6(ƿ)E@'m*?+ԙEMU1e)W}wr7bVxq|pm:lA籫(IAgW>܏>U }xзс2eMU{0[uE̺sG.LW?Mo#ъ6qvfӣ,<>Wl0Rzd%D|RGʥ^ ] Y!d+:LJHwn6cx]Wzb]r] CāH2 ˜Ç&:4?l~kB5z ASu CL7Ѻ5& TsCMF| /8ۣuH}h8h3tSHhůkDnQ U6) (m +hR)7of!)ER,Sxش$Z`D>=%MSsR)Ĝ36K ]Ɛbп4|_O$}v`a1k(FQ/ G9V +vSMvueƬq. ;MSҴ#ϕ^w2Z[JAՅU|b&l+C>6.( "%G2ڜ 5eʟytA 1A,bz4K.˓n"WKH7B쁅(K&57@ }p: 6.-(nkBISnؐqf61){xbyGUZ+ۣ'Vz:bkNvy(HL7jV8sm:"ܡ' ,ᨌ˃F(r謪_=kzO )c _yaO*< ]v6fIr|8v8g])!N%i43[%*?8_TU)HW,&6Oq4ĺ +&a|-݅^~=6Ʊw#$8ZAػquܾ7]U{q|FiLٌojc-^cڻ>v,',ӁVP3 s 8fvʺ uj1%kz%vE.q~khs&hS~z'O5XZ`ZgoYٰUG<{|#0au %BOŶmQxAsK2_Yůj6cP-j\q2SnYwVV4zBhb0i; +endstream +endobj +7118 0 obj << +/Type /Page +/Contents 7119 0 R +/Resources 7117 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7000 0 R +/Annots [ 7075 0 R 7076 0 R 7077 0 R 7082 0 R 7083 0 R 7084 0 R 7085 0 R 7086 0 R 7087 0 R 7088 0 R 7089 0 R 7090 0 R 7091 0 R 7092 0 R 7093 0 R 7094 0 R 7095 0 R 7096 0 R 7097 0 R 7098 0 R 7099 0 R 7100 0 R 7101 0 R 7102 0 R 7103 0 R 7104 0 R 7105 0 R 7106 0 R 7107 0 R 7108 0 R 7109 0 R 7110 0 R 7111 0 R 7112 0 R 7113 0 R ] +>> endobj +7075 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 733.008 192.456 743.591] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_af4140117fa6da92e0a428c9666cfea94) >> +>> endobj +7076 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 718.745 138.623 729.22] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5088b919addd1ae88cf8ed72d68c52c2) >> +>> endobj +7077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.109 718.745 220.341 729.22] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener) >> +>> endobj +7082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 704.267 149.598 714.849] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a4fb7f78c7820b02fb0ec3c173ff0d2d5) >> +>> endobj +7083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.22 704.267 364.544 714.849] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values) >> +>> endobj +7084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.589 688.2 231.154 697.827] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.405 688.2 250.441 697.827] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 673.641 145.644 684.115] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a4e5b2c3dc8f4e43b053bd3436dd39c5f) >> +>> endobj +7087 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 642.907 159.828 653.382] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a21acfc202dc0114eabdba678e03f21f1) >> +>> endobj +7088 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 628.536 162.33 639.011] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_af9ac75f889489a06dbc8f6d7881367c4) >> +>> endobj +7089 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 614.058 156.206 624.64] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aecfdac4a2de6577291597477bcaec9c7) >> +>> endobj +7090 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 583.324 156.206 593.907] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a6f6d0d0942fff96f3be1d7efbe1c00be) >> +>> endobj +7091 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 552.591 166.168 563.173] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5d233da812511bdf2f833461d4a501b6) >> +>> endobj +7092 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 521.857 181.805 532.439] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a0a8f7a1907bebc71607c3adedf11b9fd) >> +>> endobj +7093 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 491.123 201.333 501.705] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a423b766a0d908278cdced1e149d197b4) >> +>> endobj +7094 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 460.389 201.333 470.972] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_af671de33e90172784c8b0392571a1d72) >> +>> endobj +7095 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 429.763 180.997 440.238] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_af3dade275735d7490a9872e965e6830f) >> +>> endobj +7096 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 398.922 180.997 409.504] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a9ae2d62c65f72f1ebea7b22ca8ce3b91) >> +>> endobj +7097 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 368.188 161.783 378.77] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a66aa30bff5ca81b1a1811d8e36b09546) >> +>> endobj +7098 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.649 352.121 227.684 361.748] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 337.454 178.855 348.036] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a8071d5a27bc1828fdcb19deee57deac2) >> +>> endobj +7100 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.682 321.387 305.717 331.014] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7101 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 306.72 250.279 317.303] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a24f6e608fc1b838de8de908c6756571f) >> +>> endobj +7102 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 275.987 176.192 286.569] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a518706086a60688c5dbe946e3b437491) >> +>> endobj +7103 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.922 275.987 392.241 286.569] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel) >> +>> endobj +7104 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 245.253 176.192 255.835] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_ad48f9b88b0635c9f2363322123044fb8) >> +>> endobj +7105 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.346 245.253 333.665 255.835] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel) >> +>> endobj +7106 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 214.627 174.103 225.101] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a6b1cdbd8b56655e88e678441452f65a1) >> +>> endobj +7107 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 151.26 164.034 161.636] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a66e028cd73b441bbdd8d37ee0e2b1dee) >> +>> endobj +7108 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 110.178 149.096 119.154] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel) >> +>> endobj +7109 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.829 110.178 223.931 119.154] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aa3d4261b652969dd5f94971ca48f5a7e) >> +>> endobj +7110 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 83.852 149.096 92.828] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel) >> +>> endobj +7111 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.829 83.852 227.508 92.828] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a25f9db0c022bb0feda81d31f43053a81) >> +>> endobj +7112 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 69.686 134.194 78.457] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer) >> +>> endobj +7113 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.694 69.686 172.121 78.457] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aef3dc7f94f289f1dab629cbf647875db) >> +>> endobj +7120 0 obj << +/D [7118 0 R /XYZ 69.866 801.979 null] +>> endobj +7121 0 obj << +/D [7118 0 R /XYZ 70.866 775.009 null] +>> endobj +7122 0 obj << +/D [7118 0 R /XYZ 70.866 193.261 null] +>> endobj +7117 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7170 0 obj << +/Length 2527 +/Filter /FlateDecode +>> +stream +xZKsۺW^t>3Ӆcǩi8wdAS E`|{@%;nD>f?y{}2g]"a8z9qb7/x;t#eOJU{Nn|^MCn1Gֲ$t1߯;yw}ljİnY9fKm\ij{=s3v1rfb.˞y̍$z. ~^T[Y^\6nS|})Ѝh7΃"BQw #0YODY}~ABs~yȹge-!U/`5\3>!7+^!cN#x,XDc v^KRcj/=AFYU2Sr9֐z0q2s'n*,g 'H%`ch܏sΜ"̺lYlWxEgS>U^"g) ]HRBn!Pڌ<പ8_H45m eT*zz BuRz(f*t*:& Hm]w$9ţbެzۘR'Q \1~."І+ǡ +}OQ̘CnxD$գF乾N)4_6mc%c%tcƟ^|7`DZ9Y;}.lP7#5_DQQ_)q}Rmz-sFoN=1̡WoR-l6iđmblӄIG3R,eMk9AB3$HH=a/[Z3_L+&M@p"ic6[GC\M|,\z^T O|ꎶ+r^0BrXy翏n?[u <[ŀ.HRasiY1ݭڶFۺBm̗Vz*A5e,D]  ҼGsyV!B`(BgKݵΓD?Vհz2vl|g z e* 7Pk+:@55ދY'^$47| Jz%T)S\ _jyd nowBfLs]=axԴ(n am!b\Jb*ˀr2Ql<ȴF6EUmaDt&m<1#8l %"朓i "v%= җ #A@-L#>5I&iځdr3a1!1͉yo:D F u6 ·'w22GSm-z[,@;hCf5 Xf]Z9YoY4} AsciKaZ&f0_kƱKacmX#7a RzlaƹD`.i'VGQq ڤ$ ^8ش  0%̪ y/ WnZz:\`ohvݸF>KSS8:d|=o{gjXjo+iy9ACY)yW6Y䩓.hkLo ]wIQ{ + *jazŁ48 }I7n'eo? 1lk)Dñ- Rn]M|/%?x'AyfJ_`kzUntM|;b/dB`G I+N^[(']Wؙ!tFqإ(@"K2A]upJ5KE pJv }&~]n'HDt +!$O4qٖ;}w՜-瑳eRm8tI ^ws|Nwf}9ǵ'1:roPlOmcchUTee:DbpCklK)5_XELFu[a|N,M !(ЋA0ɖ:o-{"1I%G}%_@ɰ$JbA񜿧OT~&+M&mjgD+J,VqY}eVh{SUB=#bpp6$s"=/O#D.QIXD}^]H}3 Mx?wb,\;Xvi?:пP>0\;eo +endstream +endobj +7169 0 obj << +/Type /Page +/Contents 7170 0 R +/Resources 7168 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7173 0 R +/Annots [ 7114 0 R 7115 0 R 7116 0 R 7144 0 R 7145 0 R 7146 0 R 7147 0 R 7148 0 R 7149 0 R 7150 0 R 7151 0 R 7152 0 R 7153 0 R 7154 0 R 7155 0 R 7156 0 R 7157 0 R 7158 0 R 7159 0 R 7160 0 R 7161 0 R 7162 0 R 7163 0 R 7164 0 R 7165 0 R 7166 0 R ] +>> endobj +7114 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 734.019 204.57 744.601] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_afc6baf1a806a9a9ea803b14889ffb8c3) >> +>> endobj +7115 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 704.659 189.686 715.035] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a4693102ef8b77518b9eed0cbbdd650e1) >> +>> endobj +7116 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 675.3 168.66 685.882] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5b8e2b595533f33e5c298fe5ced2726b) >> +>> endobj +7144 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 646.401 136.642 656.522] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19) >> +>> endobj +7145 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.142 646.401 160.07 656.522] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5d523809d52088df6fbd8927523d6238) >> +>> endobj +7146 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.268 632.094 219.929 640.187] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7147 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 617.041 185.965 627.163] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8b) >> +>> endobj +7148 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.465 617.041 268.688 627.163] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a05085dc638466b2660f1c694f90fbf8e) >> +>> endobj +7149 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 603.358 151.588 613.479] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a71c10e565150962413bb1abaa89af66a) >> +>> endobj +7150 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 589.214 166.947 599.59] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a96bec51384215e8622397b8fe2fc90e1) >> +>> endobj +7151 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 548.895 144.747 559.271] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a876c9a53400fe18fc365775ca728928f) >> +>> endobj +7152 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [229.338 533.419 256.903 543.142] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7153 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.271 533.419 456.836 543.142] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7154 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 509.038 180.101 518.953] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values) >> +>> endobj +7155 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.601 509.038 227.55 518.953] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5c03b22e8271f95ee0b46ebbd2bac651) >> +>> endobj +7156 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 479.217 147.724 489.593] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a8f757bc4e9f4038dc388a8fee3f47150) >> +>> endobj +7157 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.44 449.858 187.122 460.44] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a3506656c033fb2bdc7822275aab6dac2) >> +>> endobj +7158 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.014 372.598 179.421 383.181] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7159 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.921 372.598 200.85 383.181] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7160 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.586 354.974 299.818 365.556] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener) >> +>> endobj +7161 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.798 343.019 421.204 353.601] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7162 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [422.737 343.019 443.666 353.601] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7163 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.059 301.592 137.905 312.066] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.647 97.562 201.576 108.037] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.87 79.83 416.276 90.412] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.274 79.83 438.203 90.412] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7171 0 obj << +/D [7169 0 R /XYZ 69.866 801.979 null] +>> endobj +7172 0 obj << +/D [7169 0 R /XYZ 70.866 775.009 null] +>> endobj +390 0 obj << +/D [7169 0 R /XYZ 70.866 418.414 null] +>> endobj +394 0 obj << +/D [7169 0 R /XYZ 70.866 232.027 null] +>> endobj +7124 0 obj << +/D [7169 0 R /XYZ 70.866 206.892 null] +>> endobj +398 0 obj << +/D [7169 0 R /XYZ 70.866 206.892 null] +>> endobj +402 0 obj << +/D [7169 0 R /XYZ 70.866 168.213 null] +>> endobj +7136 0 obj << +/D [7169 0 R /XYZ 70.866 142.939 null] +>> endobj +406 0 obj << +/D [7169 0 R /XYZ 70.866 142.939 null] +>> endobj +7168 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7194 0 obj << +/Length 2223 +/Filter /FlateDecode +>> +stream +xڵYKsWjڛǞuݚz*5E3x_n6@EC?yt=ilIsQEݱYڞoΧnƇmhSC' ŏXȵ21vZR$j%njҢxT_tRzVFІ4mPݍ^7[j]m6?-eZКlnӌ=)AXO(.@ + + )udTeLnhp׀L^[W4۴F֊i_xP½{nkPjX u]}%(S(dL7c۟Tb 0 -6 /C3€Ky9kcpkc_eMGcwEuYiyԖx]Z;T͉ڦ7zfphn17!K80_r *;4BE@ӡ"f\>TX40$N(C M#]R O@ X Rhh2 =ŗ.di`P95A$$N@Ç>ӈd!DTF!GմrE? r@G oLȪM4G!ac&zU?Vͮ;زkݏNK_z5FJ! 1{ L`/CM̯V 43w)`;+!%|Kj,htJSܣuZ% nO6?LL;A -r,En H1 \,YsǼ X9~rS!Uڎ EQ^UPȯyfg<ۚ(LQW}i]!-r@`FE7e7%~:"nc@(Xdy!ɀ9{{w]u\Ơ'տ8w# <<$=@Jn]ͩC s$fl?a^R"~Z .X@PDlNvh_"qs:C)8Ppt~OECRtE<Ɇ&Z=:P4N#/bhS/jS& +iiWi:f%|O+y(P 6-C nd^$4 +moH#tO$r%!t7(Ԡ. +ز.duƏ.$v\B"JeP9*wm>Dv9TCaas;})A},ϵ1 )~߮F>s<_<+f=U9f X&,Q Ͽ"B1_ʤw/SnuPwB® g-P:w`^ q4JwQޢ.ZA) +8-}Kٝ=R婢ϮӲ*,Sg$ʼn5[/8(@oEo&AlgCc:\{2 XTjI1 ȫ:<6 oH#wRixM=h/u`ԱQ^_ jxՇvן_T]wwk`;,̝遪*}~%u2ǎXg'Ī/rC@:z@&a]L]י<'M;Jaz˛U631PW$k{Y0c KÝSG"HfOO1?ۼ͇G;{, +RᐚVo؍(C ;rb}_V}S|Ѱ/Ǜ?fi޴ +endstream +endobj +7193 0 obj << +/Type /Page +/Contents 7194 0 R +/Resources 7192 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7173 0 R +/Annots [ 7167 0 R 7185 0 R 7186 0 R 7187 0 R 7188 0 R 7189 0 R 7190 0 R 7191 0 R ] +>> endobj +7167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.804 746.115 261.21 756.491] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7185 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 710.866 100.276 721.448] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7186 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.661 681.394 391.067 691.869] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7187 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.025 491.948 205.432 502.423] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7188 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.932 491.948 226.861 502.423] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7189 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.327 456.284 223.733 468.458] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7190 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.233 456.284 245.162 468.458] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7191 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [306.964 456.284 362.755 468.458] +/Subtype/Link/A<> +>> endobj +7195 0 obj << +/D [7193 0 R /XYZ 69.866 801.979 null] +>> endobj +7123 0 obj << +/D [7193 0 R /XYZ 70.866 587.081 null] +>> endobj +410 0 obj << +/D [7193 0 R /XYZ 70.866 571.841 null] +>> endobj +7125 0 obj << +/D [7193 0 R /XYZ 70.866 547.075 null] +>> endobj +414 0 obj << +/D [7193 0 R /XYZ 70.866 547.075 null] +>> endobj +7127 0 obj << +/D [7193 0 R /XYZ 70.866 350.905 null] +>> endobj +418 0 obj << +/D [7193 0 R /XYZ 70.866 335.664 null] +>> endobj +7138 0 obj << +/D [7193 0 R /XYZ 70.866 309.15 null] +>> endobj +422 0 obj << +/D [7193 0 R /XYZ 70.866 309.15 null] +>> endobj +7131 0 obj << +/D [7193 0 R /XYZ 70.866 171.527 null] +>> endobj +426 0 obj << +/D [7193 0 R /XYZ 70.866 156.286 null] +>> endobj +7192 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F106 6377 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7209 0 obj << +/Length 2057 +/Filter /FlateDecode +>> +stream +x˖6t`W8'V%! .ͫsLg3͂pӯ Φ=!]ػvby1Jʋ0"Aһcă9by6,rYz]U^VmH,U@/kYf0ϢfG:qbʼl3%a&!7!,u}:V (WKuq s#u@ X+ќ9rH|ѐu P"F.h`Ӡ,z ǀ'[e)_@ '\a#NxCꚬz2vm7,cv2m@_ͺ;`Gc9g0>6#^2^f=@௱Q W3yMק[@@ն6p1M 'yyg-l!2GsH ?1EL=Yq?ϸ;8b81($Veaq=Q I0Mq>^NmB.+#M-0:Y.(K Eݓsn9e %lWGP"[U*/.+TgecW>8( I1 Gx_PY@ţ!; +Lrځy2@H@lgWo@/=0_Jbц^f1H\U;2)/;nL%TŲiyvvksYM1V[vLm֒'Jr 0 kN?5ͬz7Y&k-ws,dckǯJ}yb۴00Rh8ľ2LX +C {i/< O0Rr20 Ar̙1:* O9&\hbΡѨ^W2fF.ȬEk} .TpetMu/m]w*S \1+WM/l]}i:4AԊYZFX ^:a aـL V(0;ވÚַ9K1T3n|c]˛#s+\TtĘǴY]vo>MHk*Gd͖ &z™\C]5JmINh4F/&7֊:5]vOqjXzq}e wh‹GNZ7\Y-0-qG!'Rؗ\.f+_֚<姖{]=${;WNCU"ڶ tsOfoe[Ye}+e֏L%=c͐r$ p% i&-=:8>-pLIƔ6ս)?wոBv'iqgPUeLʓua@S8m/5s;<(qO- +uSԘ/Ny&i)w-7DϦ]B%}5ǿw鏞Zӵ3@ !Ax+saA0PH!MoG;]v#W]<+> endobj +7196 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.35 608.312 288.279 618.787] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7197 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 590.688 100.276 601.162] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7198 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.87 561 416.276 571.583] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7199 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.274 561 438.203 571.583] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7200 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.804 519.466 261.21 529.842] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7201 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 484.217 100.276 494.799] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7202 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.661 454.745 391.067 465.22] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7203 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.87 437.013 416.276 447.595] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7204 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.274 437.013 438.203 447.595] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7205 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.804 395.478 261.21 405.854] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.661 360.337 391.067 370.812] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7210 0 obj << +/D [7208 0 R /XYZ 69.866 801.979 null] +>> endobj +7137 0 obj << +/D [7208 0 R /XYZ 70.866 668.273 null] +>> endobj +430 0 obj << +/D [7208 0 R /XYZ 70.866 651.742 null] +>> endobj +7141 0 obj << +/D [7208 0 R /XYZ 70.866 264.379 null] +>> endobj +434 0 obj << +/D [7208 0 R /XYZ 70.866 247.847 null] +>> endobj +7132 0 obj << +/D [7208 0 R /XYZ 70.866 222.962 null] +>> endobj +438 0 obj << +/D [7208 0 R /XYZ 70.866 222.962 null] +>> endobj +7133 0 obj << +/D [7208 0 R /XYZ 70.866 70.866 null] +>> endobj +7207 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7213 0 obj << +/Length 540 +/Filter /FlateDecode +>> +stream +xڕTr0Z"덜e3IN*cHAN⿯ΰF{tC`P 6,ZSZJ@R ]R$ r?gwITl]0 MF&7U:ltE#b3RHQ&zz`oR.]QgLp&lFU' + qB0puUK&oVueU3]V܌Kp?v}!SXƉSs!`-]5!BIIwC Bn[f2$mY@=s,a| +2CNR$ۢ Of lB)ڷX:K\<~{uW +h;@xglSޗx8>8aU^-v=!8z]͵z<~T}ɟD4mpVRY'kѭp S <N/1Űo?9y69N_ f~ +endstream +endobj +7212 0 obj << +/Type /Page +/Contents 7213 0 R +/Resources 7211 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7173 0 R +>> endobj +7214 0 obj << +/D [7212 0 R /XYZ 69.866 801.979 null] +>> endobj +442 0 obj << +/D [7212 0 R /XYZ 70.866 771.024 null] +>> endobj +7211 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7224 0 obj << +/Length 1995 +/Filter /FlateDecode +>> +stream +xZIs6WVj&Br-uiʡ@KĆ"]>l4IѲ%ŝMۗA"W1F WAQEAR`:.Ix%WgJee,3ee{>WcCL4 y:8}=:a$(e8χjw w3^W3a`^ΪUS:s->/HS8 ~,Un$^Eyu5tOn漒|Q*S3LmjۥMoO5dE_Be V9,bP**3zh˙=Mkp[3ய/TAgZfs]@$Ģ..7ԛKy2ۉEf$tV"ڕ)HQwT CY +N +{FCNt\-j|Q.o4u}qUNbDi!DP0MU踫 D0c&b<@~_;8ؾ& YCMW=yw)dCm D5hDO807 ny YȻmݯ9u8b8z6b'?W]A)m:Mzr0HDG]Чavۀ]휡QܺՉ"_V̆햰xN.aG ZY#wo5(6s06Tb &\cf^e:U/>7O|׺8|ck۳@'Qc atc (O%;0VBI`-C_?,:S}QK%K9܄lVs#Dz]_7\N@v|YidM#e& +endstream +endobj +7223 0 obj << +/Type /Page +/Contents 7224 0 R +/Resources 7222 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7173 0 R +/Annots [ 7215 0 R 7216 0 R 7217 0 R 7218 0 R 7219 0 R 7220 0 R 7221 0 R ] +>> endobj +7215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.853 480.548 341.129 491.022] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status) >> +>> endobj +7216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.092 480.548 468.753 491.022] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_a5d307822db6e769821d9dc86477171e2) >> +>> endobj +7217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.731 385.617 342.007 397.791] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status) >> +>> endobj +7218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.853 249.529 341.129 260.004] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status) >> +>> endobj +7219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.092 249.529 468.753 260.004] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_a5d307822db6e769821d9dc86477171e2) >> +>> endobj +7220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.482 190.263 265.889 200.845] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7221 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.731 142.644 342.007 154.818] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status) >> +>> endobj +7225 0 obj << +/D [7223 0 R /XYZ 69.866 801.979 null] +>> endobj +7126 0 obj << +/D [7223 0 R /XYZ 70.866 644.943 null] +>> endobj +446 0 obj << +/D [7223 0 R /XYZ 70.866 629.179 null] +>> endobj +7134 0 obj << +/D [7223 0 R /XYZ 371.332 559.207 null] +>> endobj +450 0 obj << +/D [7223 0 R /XYZ 70.866 541.556 null] +>> endobj +7135 0 obj << +/D [7223 0 R /XYZ 70.866 326.193 null] +>> endobj +454 0 obj << +/D [7223 0 R /XYZ 70.866 310.43 null] +>> endobj +7128 0 obj << +/D [7223 0 R /XYZ 70.866 70.866 null] +>> endobj +7222 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7231 0 obj << +/Length 1862 +/Filter /FlateDecode +>> +stream +xYKs6WVj&B&[kn;m&)Ɂ`TI*}҄Dz4t&.o?@8ptue#R)Y4QR$I4EbG&FL٧独Gch&/ 33CqD:J!Ey4]}5ˆ*# nXD}N3r+3Æ}ԔZېqz2wYuܺw38~pl!o!9Dz\ld|gI\!Y*WOY!x SɄ#lhR! |e/SĔc $g{"\;uz"$f|=z!{cyfM~ ֋_^;<[u zA#b~P#hCҡM]ff]!w48xLœlzgYO§Mi 빽3k\-+ˑ{y OYMk4mŬiu-Ppgrhˆ+q{د BZ$iGE3d`i̘3ź ߖ˟MCS)T{9T-djW6ױ |Z5=nG +LArUlvuw*52ͦǎdcL`ັD-s[-:WVZVBlܻ=o\繷U}݈h;n|kaudfu:uhv̻Ί:"QYܕ]€!MWUmOyޱX`ûUh=ӳ=uCb+X 0qn)ASźn8rAП}+Oiٗ bR<}Bv'?HAsEQٛRv|D pnsE{c`@^4%t%J9"; +e}}ر ټ t]7b֎x>OO1&\@euh]=t嶱 \OѼ\d 5/# ?I5M͛7{kHB͏*~͹#zg_Udнo CWdz=$A%ˎʿ˚ݖ rup PE8TX:6boMֆz mrfc.Nuуu9n{F=vjwuvG @.LS mԅU +HP"yg0@6zR[h28e)Qv|'?w^כ%Vy1 m8a{g kO*@_W낽Q;m0ezZ> endobj +7227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 623.514 392.874 651.787] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 416.686 392.874 444.958] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7232 0 obj << +/D [7230 0 R /XYZ 69.866 801.979 null] +>> endobj +458 0 obj << +/D [7230 0 R /XYZ 70.866 771.024 null] +>> endobj +7041 0 obj << +/D [7230 0 R /XYZ 70.866 752.171 null] +>> endobj +462 0 obj << +/D [7230 0 R /XYZ 70.866 752.171 null] +>> endobj +7129 0 obj << +/D [7230 0 R /XYZ 70.866 614.548 null] +>> endobj +466 0 obj << +/D [7230 0 R /XYZ 70.866 599.307 null] +>> endobj +7139 0 obj << +/D [7230 0 R /XYZ 70.866 407.719 null] +>> endobj +470 0 obj << +/D [7230 0 R /XYZ 70.866 392.479 null] +>> endobj +7140 0 obj << +/D [7230 0 R /XYZ 70.866 208.054 null] +>> endobj +474 0 obj << +/D [7230 0 R /XYZ 70.866 192.813 null] +>> endobj +7229 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7238 0 obj << +/Length 2017 +/Filter /FlateDecode +>> +stream +xYKs6W>Q33fIR7u;qs)X">w,)RNo0 .z+z/g?\Ͼ) J )˜żwGD<ɚF2tѐuٔ\'$3K[UF1=B slNBoǾ` \LDq9Vnw۬q}W!VJjη8L !("zZ$CF(Pq4KM*SCFWK_ce{˻0rg #s&A?xeX(w2$ Y|(dO}bX@\馭:߃rN,"4nAP ^V>]n&I}</P}p=rAX ),HN~/NVQI@*nX݀h.>(%& .)_w-/$ԝ6A GTnSgu7y*7gu3 6bmܯtuSn8W'c5ͺe/Є\N gyf+)^WnRnaoiNU{k e6YY, vnWi2pZNh(7.tV۲2=  009.nÌlI&ۑ̷ydL\V"^μ>_CBvJ_M'{NTak38ѐD? CfP.3`M>q@NJSZBhҦǀr rb$=]gPjHD-4SE$8*vUm[5! *dO H_h`1ka".IoߺO3v`"PRS3C%@30 &k?t{^aެ $W:o ԶQLB@*}+ȭqqp012˹eV~v2akC (mk}vDc0&c.0H6@qҘgoDh =#(>q7l]%r@[ۛ| ~) 0B(e듔m:L=ZChzG˲kHɝ JcRxAzTJ* vjXeH-pbӞb"\W!SBC70[γ lSWR&$0vUeuїCNq +X ) +wS8<} ޿!R+ѻW WiAP}: irN>}ݾZ:GgH ѕ7K'cU&Fq/F1'\AS1NWw]o}(v%0u*,Lox 9[/]BSalLw"Z# ƢXXjpQU'fqfgpv{F Juh'c's2|m2ɗzdI6^%oW +MM0_EH@Bn\239=!ƪߋ{x{e8ʔC ؇ +endstream +endobj +7237 0 obj << +/Type /Page +/Contents 7238 0 R +/Resources 7236 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7240 0 R +/Annots [ 7233 0 R 7234 0 R 7235 0 R ] +>> endobj +7233 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.943 572.151 382.125 582.733] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a9e1b1dd69f646b62d2958f9c49db2630) >> +>> endobj +7234 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.569 153.522 231.976 164.104] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7235 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.5 153.522 449.906 164.104] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7239 0 obj << +/D [7237 0 R /XYZ 69.866 801.979 null] +>> endobj +7130 0 obj << +/D [7237 0 R /XYZ 70.866 683.979 null] +>> endobj +478 0 obj << +/D [7237 0 R /XYZ 70.866 665.228 null] +>> endobj +482 0 obj << +/D [7237 0 R /XYZ 70.866 437.899 null] +>> endobj +7143 0 obj << +/D [7237 0 R /XYZ 70.866 411.739 null] +>> endobj +486 0 obj << +/D [7237 0 R /XYZ 70.866 411.739 null] +>> endobj +7142 0 obj << +/D [7237 0 R /XYZ 70.866 386.401 null] +>> endobj +490 0 obj << +/D [7237 0 R /XYZ 70.866 386.401 null] +>> endobj +7072 0 obj << +/D [7237 0 R /XYZ 393.38 296.324 null] +>> endobj +494 0 obj << +/D [7237 0 R /XYZ 70.866 275.577 null] +>> endobj +7071 0 obj << +/D [7237 0 R /XYZ 70.866 250.217 null] +>> endobj +498 0 obj << +/D [7237 0 R /XYZ 70.866 250.217 null] +>> endobj +502 0 obj << +/D [7237 0 R /XYZ 70.866 224.856 null] +>> endobj +7181 0 obj << +/D [7237 0 R /XYZ 70.866 197.271 null] +>> endobj +506 0 obj << +/D [7237 0 R /XYZ 70.866 197.271 null] +>> endobj +7180 0 obj << +/D [7237 0 R /XYZ 70.866 142.563 null] +>> endobj +510 0 obj << +/D [7237 0 R /XYZ 70.866 123.811 null] +>> endobj +7182 0 obj << +/D [7237 0 R /XYZ 70.866 70.763 null] +>> endobj +7236 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F73 4716 0 R /F115 6693 0 R /F82 5877 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7257 0 obj << +/Length 1543 +/Filter /FlateDecode +>> +stream +xXS8~_K홢J$۝.NA `S[weɎL +K"joY895> Hߙ^8FNQ$3MsS }xGНRf*Vi鵣ۈRVd2g~9:޽u0йW^:3}93VM(C(( Fq:&AJ-At^[؍W,QKfTŗDU +e }2}']w"MM"7 h@#1 K+Euz@GLZNṚ]I<[ݚL^h¾<,s9 C0bu؝ +L? Aᘐw_j5{mնTE-/ O†̦Bp.А6>̝qR6o88{a=03pZ!|${WEylHKfl=r9<ėy)"փ7c_\#r& +n +_ p~ pkoj etZ㋚ +M;j5kt-)ڋRL&i'RU@j3u|cEn$?Okd6nqUʡ ǖ\t$YN9 +9߳|CBAaٜg@d?7)d9T)t<;O>fP6'F^aU۸"XJibK2]dMH_} O76d2 }&뛇BI0 1[ BHv"@b(#1٪WNishmOß$o&SRjԑop74ANK(@YYwbqkZ|O_!1=퓽I~! }'@L 13 *KUv|<&na-^_ɢ̳Wsf淹~a]ݤ"o^}y1]Օ}s|XԱowd2>lހ;>,˪YnR4#[t[us_ȡuErMn%w0;i| x,l)F;܏}s](i{L`o[%- edMfS2mK+ t\MG)@cr F[ cܵ 4LJ}9ܢtTUmHx񴚕ss6}ȝH }s +c87U$*Ƒ qۉs.mRH{M"ܲag7aF5f}Bln ՍYp_b&o&BX +endstream +endobj +7256 0 obj << +/Type /Page +/Contents 7257 0 R +/Resources 7255 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7240 0 R +/Annots [ 7242 0 R 7243 0 R 7244 0 R 7245 0 R 7246 0 R 7247 0 R 7248 0 R 7249 0 R 7250 0 R 7251 0 R 7252 0 R ] +>> endobj +7242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.046 571.85 315.689 582.432] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_ae4c3e779b7761f6a254231b9775fabcf) >> +>> endobj +7243 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.113 370.69 192.959 379.461] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7244 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.497 209.832 251.904 220.306] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7245 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [252.404 209.832 273.333 220.306] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7246 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 149.437 199.746 160.019] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_ab7e29d342c622f6c6831c7c20638871e) >> +>> endobj +7247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 135.951 163.361 146.219] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a8aac3f985184cfbe4e228510d8f94c86) >> +>> endobj +7248 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 122.249 204.139 132.625] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a87ce4bd7e75af0c0dff70221ba197dcc) >> +>> endobj +7249 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 108.763 183.526 119.032] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a3d73aefea41f86d82c9c4895e595250a) >> +>> endobj +7250 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 95.17 194.276 105.644] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a3b479b981bb71508f954d8dcf7390552) >> +>> endobj +7251 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 81.576 179.948 92.051] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_ad5cb96a758e791541abac48e347f7517) >> +>> endobj +7252 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 67.983 189.91 78.251] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a9746eb3bc69c51490ee9834efa47c74f) >> +>> endobj +7258 0 obj << +/D [7256 0 R /XYZ 69.866 801.979 null] +>> endobj +514 0 obj << +/D [7256 0 R /XYZ 70.866 771.024 null] +>> endobj +7179 0 obj << +/D [7256 0 R /XYZ 70.866 734.213 null] +>> endobj +518 0 obj << +/D [7256 0 R /XYZ 70.866 717.461 null] +>> endobj +7176 0 obj << +/D [7256 0 R /XYZ 70.866 692.854 null] +>> endobj +522 0 obj << +/D [7256 0 R /XYZ 70.866 692.854 null] +>> endobj +7184 0 obj << +/D [7256 0 R /XYZ 70.866 649.915 null] +>> endobj +526 0 obj << +/D [7256 0 R /XYZ 70.866 633.164 null] +>> endobj +7178 0 obj << +/D [7256 0 R /XYZ 402.463 574.842 null] +>> endobj +530 0 obj << +/D [7256 0 R /XYZ 70.866 556.095 null] +>> endobj +7175 0 obj << +/D [7256 0 R /XYZ 70.866 531.595 null] +>> endobj +534 0 obj << +/D [7256 0 R /XYZ 70.866 531.595 null] +>> endobj +7174 0 obj << +/D [7256 0 R /XYZ 70.866 488.549 null] +>> endobj +538 0 obj << +/D [7256 0 R /XYZ 70.866 471.797 null] +>> endobj +7177 0 obj << +/D [7256 0 R /XYZ 70.866 431.023 null] +>> endobj +542 0 obj << +/D [7256 0 R /XYZ 70.866 414.271 null] +>> endobj +7183 0 obj << +/D [7256 0 R /XYZ 70.866 371.686 null] +>> endobj +546 0 obj << +/D [7256 0 R /XYZ 70.866 354.935 null] +>> endobj +6831 0 obj << +/D [7256 0 R /XYZ 106.937 282.954 null] +>> endobj +550 0 obj << +/D [7256 0 R /XYZ 70.866 263.142 null] +>> endobj +7259 0 obj << +/D [7256 0 R /XYZ 70.866 190.294 null] +>> endobj +7255 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7283 0 obj << +/Length 1206 +/Filter /FlateDecode +>> +stream +xXr6+ He& ױ4k+Y$$q**:/dFjE7"q9^:s:W_aD`B)v3' '>șΝa^Ub/3 p(DE,ϗ5+cy23|sn7l!貒|`b:g$&Cd5T@']\9XvATJ B2]3)$qALْ<)Ly{'3 >5Q*s5Zg V&qx|/K""G12ts5r{#AαJH< O"bj_D\qz(nQ(i=bzDb;lee%KDki͖4m4XJIRq$lEH^S$El[ER!lS=Kv z+_i,؂I$GVݫhvFF kηB{C 8?|0Aa  NNN~T}TCS=ʴLzF)خ Eikf&((|3kmMjrzYʺuu/UYfL+!U+DAڷ/'xy\|3k%Mυt,V7k@ !Uy2M#  (2}z@ǀ#scN];a R{*DlO]_:="|XNUܐ_d.,p=/bnA;bXkΚ}cY^+7 `8/;RuS2PM+=OF_UJAxZ?byT8adBW4h - Lt/*jT7Ax;h' rgizĵ+t.z]^\gz7i,ښb{pi]A)zRdHqVB`j*;U R%lUyO`*Z}}]&!}-)Ct>"Pjb5ta-[{wu[-΄53Ͱ|=vB9Ïǹ@囜g +endstream +endobj +7282 0 obj << +/Type /Page +/Contents 7283 0 R +/Resources 7281 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7240 0 R +/Annots [ 7253 0 R 7254 0 R 7268 0 R 7269 0 R 7270 0 R 7271 0 R 7272 0 R 7273 0 R 7274 0 R 7275 0 R 7276 0 R 7277 0 R 7278 0 R 7279 0 R 7280 0 R ] +>> endobj +7253 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.497 732.851 251.904 743.326] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7254 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [252.404 732.851 273.333 743.326] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7268 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [263.997 456.99 294.403 467.464] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7269 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [294.903 456.99 315.832 467.464] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7270 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 393.732 189.524 404.001] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_af1232f522b282a7a5111802982b9ba42) >> +>> endobj +7271 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 362.999 179.948 373.474] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a32c3f60a2876738427dca3f2de3bdb30) >> +>> endobj +7272 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 332.266 189.91 342.535] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a740302e78e835ec1753d4cfa356be98f) >> +>> endobj +7273 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 301.533 169.171 311.802] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a0f990d91b96cc9540bd90bb00e1cd59a) >> +>> endobj +7274 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 270.8 188.699 281.275] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_abb220662c7522ea1b0943bb845b6c7dc) >> +>> endobj +7275 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 240.067 201.503 250.542] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a73fb9701994e0bff895effbb28361f68) >> +>> endobj +7276 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 209.334 194.276 219.809] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a76eac50d9c1919c0dfd65cde6d0f2464) >> +>> endobj +7277 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 178.601 185.525 188.869] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_ade61a55585e9a364cdfaabc6c8b55e5a) >> +>> endobj +7278 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 147.868 202.597 158.136] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a5adb2a4d7ca5b4edd59bef60d9d1ccae) >> +>> endobj +7279 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [263.997 67.983 294.403 78.457] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7280 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [294.903 67.983 315.832 78.457] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7284 0 obj << +/D [7282 0 R /XYZ 69.866 801.979 null] +>> endobj +554 0 obj << +/D [7282 0 R /XYZ 70.866 771.024 null] +>> endobj +558 0 obj << +/D [7282 0 R /XYZ 70.866 715.268 null] +>> endobj +7261 0 obj << +/D [7282 0 R /XYZ 70.866 689.702 null] +>> endobj +562 0 obj << +/D [7282 0 R /XYZ 70.866 689.702 null] +>> endobj +7264 0 obj << +/D [7282 0 R /XYZ 70.866 662.515 null] +>> endobj +566 0 obj << +/D [7282 0 R /XYZ 70.866 662.515 null] +>> endobj +7263 0 obj << +/D [7282 0 R /XYZ 70.866 637.328 null] +>> endobj +570 0 obj << +/D [7282 0 R /XYZ 70.866 637.328 null] +>> endobj +7265 0 obj << +/D [7282 0 R /XYZ 70.866 611.863 null] +>> endobj +574 0 obj << +/D [7282 0 R /XYZ 70.866 611.863 null] +>> endobj +7266 0 obj << +/D [7282 0 R /XYZ 70.866 586.676 null] +>> endobj +578 0 obj << +/D [7282 0 R /XYZ 70.866 586.676 null] +>> endobj +7267 0 obj << +/D [7282 0 R /XYZ 70.866 561.349 null] +>> endobj +582 0 obj << +/D [7282 0 R /XYZ 70.866 561.349 null] +>> endobj +7262 0 obj << +/D [7282 0 R /XYZ 70.866 536.023 null] +>> endobj +586 0 obj << +/D [7282 0 R /XYZ 70.866 536.023 null] +>> endobj +6832 0 obj << +/D [7282 0 R /XYZ 70.866 510.697 null] +>> endobj +590 0 obj << +/D [7282 0 R /XYZ 70.866 510.697 null] +>> endobj +7285 0 obj << +/D [7282 0 R /XYZ 70.866 435.625 null] +>> endobj +594 0 obj << +/D [7282 0 R /XYZ 70.866 114.111 null] +>> endobj +7281 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7302 0 obj << +/Length 1175 +/Filter /FlateDecode +>> +stream +x͘M8+@RIfRٌS[[0cjmHH0|8ڋrj=zޝGɯ z1IHx(S 'fw02{X x=_MLU֮uiRST%N&LR\1ye{޷rR+fDŽ0)xD$F !>(ƒ)\-hSqmzSHƃqs#eU~0ow2]놜 +\/+S|F]$Uϰ'gyYsbEp__@ 34fu綱 azRƪ&jqleծvyU;vc{ȷ R"v:OP(&I<[4Ef'==<l>AGý8.KTaj;wJx$prE6:6G0 S0naY,Gϙx$|z$Q^NKk|Zyi, &_ |elsb9/Suk:H1Hi2 Nt +HpX0!Q4nWfS~fLʐ&ED +*t_9LvUbb}0 hu+=g\ٓd0(!: +SWYm Kj;p<*]Lw#t%4\^eWnsm0[ǷnC)"1?+E%"\A1u%"WϗDY9Kjt{ȷ:sr"#P&twNZ;5ڟ¸5` bCM_#"] +endstream +endobj +7301 0 obj << +/Type /Page +/Contents 7302 0 R +/Resources 7300 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7240 0 R +/Annots [ 7295 0 R 7296 0 R 7297 0 R 7298 0 R ] +>> endobj +7295 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.971 181.611 409.377 192.085] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7296 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.371 181.611 431.3 192.085] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7297 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 112.136 177.824 122.61] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a57a10f00289e58aff71bdabf7cf4f319) >> +>> endobj +7298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 84.561 173.34 95.036] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a556f1d5a6cc2e8fb7dfb4f80fa39311b) >> +>> endobj +7303 0 obj << +/D [7301 0 R /XYZ 69.866 801.979 null] +>> endobj +598 0 obj << +/D [7301 0 R /XYZ 70.866 771.024 null] +>> endobj +7293 0 obj << +/D [7301 0 R /XYZ 70.866 753.893 null] +>> endobj +602 0 obj << +/D [7301 0 R /XYZ 70.866 753.893 null] +>> endobj +7286 0 obj << +/D [7301 0 R /XYZ 70.866 709.857 null] +>> endobj +606 0 obj << +/D [7301 0 R /XYZ 70.866 694.768 null] +>> endobj +7291 0 obj << +/D [7301 0 R /XYZ 70.866 652.485 null] +>> endobj +610 0 obj << +/D [7301 0 R /XYZ 70.866 637.396 null] +>> endobj +7289 0 obj << +/D [7301 0 R /XYZ 70.866 595.113 null] +>> endobj +614 0 obj << +/D [7301 0 R /XYZ 70.866 580.024 null] +>> endobj +7294 0 obj << +/D [7301 0 R /XYZ 70.866 537.633 null] +>> endobj +618 0 obj << +/D [7301 0 R /XYZ 70.866 522.544 null] +>> endobj +7290 0 obj << +/D [7301 0 R /XYZ 70.866 480.369 null] +>> endobj +622 0 obj << +/D [7301 0 R /XYZ 70.866 465.279 null] +>> endobj +7287 0 obj << +/D [7301 0 R /XYZ 70.866 422.889 null] +>> endobj +626 0 obj << +/D [7301 0 R /XYZ 70.866 407.8 null] +>> endobj +7288 0 obj << +/D [7301 0 R /XYZ 70.866 365.625 null] +>> endobj +630 0 obj << +/D [7301 0 R /XYZ 70.866 350.535 null] +>> endobj +7292 0 obj << +/D [7301 0 R /XYZ 70.866 308.253 null] +>> endobj +634 0 obj << +/D [7301 0 R /XYZ 70.866 293.163 null] +>> endobj +6833 0 obj << +/D [7301 0 R /XYZ 70.866 250.881 null] +>> endobj +638 0 obj << +/D [7301 0 R /XYZ 70.866 234.619 null] +>> endobj +7304 0 obj << +/D [7301 0 R /XYZ 70.866 151.781 null] +>> endobj +7300 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7324 0 obj << +/Length 1357 +/Filter /FlateDecode +>> +stream +xY[o6~d`fyu Ї-mk%!˃"ѶY$jiCRؚ3#u_L|B;s;7(}LgNQNQg:nK&/㥨yBϋR:_R|3ƕ"Eu^;6k1J%|t׈(Crjw9rt{T}t0bQA=䟔)isMʢF1vHYͭz$:z{1{ . }%%ш9 +#)1T#Uhi*gL:Lm +Dz;o2YP_TQTXSY14N ƍ(RQH`](xQS7ɅA>]}\Pe[ xzG!7_)XP;݋mM2Vyo 9qFϔC?ʔ\CpGG"І0r×XeUADuǔ%[kxŞpsN;E^,!: +3TBx`JɑFD6Y?P*l܊moEi H;FOi87}XעnrYxbb鸥Z ȬUZ&S_ŦW vymv_흍\X!ğb/c elE^;H?kbq*Z!EX1]F8Tom)Z&)"s,VK2E*E%8jUitvSVKppY-Q 8nN^ʐ=C +/.3vƾqVc|!v2xR֦3ń"7sO6!E<2옧!FPsԬG&Uᣀ$Σ;!,R%[(24%3Ϭ.+8'cn2eR6ihG/s7tbڒy`Jݩ +Ww<23b?á> endobj +7299 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 758.07 180.809 768.446] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a3125fb72f9cff51b552d77abd26bdcfe) >> +>> endobj +7307 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 728.577 176.326 738.953] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_ad5bc5de57ba8e78b5002e4a3c7b760ac) >> +>> endobj +7308 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 699.192 173.34 709.667] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_af53fe36e56bbddcc7595ef9145c232f0) >> +>> endobj +7309 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 669.699 168.857 680.174] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a7e8317fba9446f840f9f76af1ed77a05) >> +>> endobj +7310 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 640.207 216.19 650.681] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a967db1960edbaaa9ee6de1cad924569b) >> +>> endobj +7311 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 610.714 166.356 620.982] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a4725b80416516202851fced3224ddf10) >> +>> endobj +7312 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 581.114 164.365 591.49] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a0a54ebe20f51af2268716891be3d6570) >> +>> endobj +7313 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 551.621 168.848 561.997] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_abc7e73d686ae0713e349611c6ddd7a8e) >> +>> endobj +7314 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 522.236 165.863 532.711] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_aaaeab778bcf9ca4da5add8112086e360) >> +>> endobj +7315 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 492.744 209.842 503.218] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a4991d2c2c138a78d8c95be54d1c805da) >> +>> endobj +7316 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 463.251 165.369 473.725] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_ac8bd1610fc654ffbd7f37af327116d51) >> +>> endobj +7317 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 433.758 169.575 444.027] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_add457c04174a03d5ba481dce96f4e8b9) >> +>> endobj +7318 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 404.158 193.766 414.74] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_ac71ce98ee09da1f9b010b11e8d6f73aa) >> +>> endobj +7319 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 374.665 195.532 385.041] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_ad3428d51c4eac42c0de3aa6d5819ecd3) >> +>> endobj +7320 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.971 286.3 409.377 296.775] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7321 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.371 286.3 431.3 296.775] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7325 0 obj << +/D [7323 0 R /XYZ 69.866 801.979 null] +>> endobj +642 0 obj << +/D [7323 0 R /XYZ 70.866 332.137 null] +>> endobj +646 0 obj << +/D [7323 0 R /XYZ 70.866 258.222 null] +>> endobj +7306 0 obj << +/D [7323 0 R /XYZ 70.866 232.948 null] +>> endobj +650 0 obj << +/D [7323 0 R /XYZ 70.866 232.948 null] +>> endobj +7305 0 obj << +/D [7323 0 R /XYZ 70.866 188.428 null] +>> endobj +654 0 obj << +/D [7323 0 R /XYZ 70.866 171.308 null] +>> endobj +7326 0 obj << +/D [7323 0 R /XYZ 70.866 128.757 null] +>> endobj +658 0 obj << +/D [7323 0 R /XYZ 70.866 111.637 null] +>> endobj +7327 0 obj << +/D [7323 0 R /XYZ 70.866 68.979 null] +>> endobj +7322 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F106 6377 0 R /F73 4716 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7342 0 obj << +/Length 1017 +/Filter /FlateDecode +>> +stream +xڽXKs6WDNqsnنJ +|]2e~>AX*7ײy4AF~ pvx )I,HL(_jI5`#>FM"N/!&vKѣ#HGvX:}Ę?f .ۖJXypO`93-B_G?/OV Vn{07ʶW;Nj=sjn(c|2N(YLPՋnSK?~+E +w"( +x`tgwx60ų=z`d(E>2}Sa_#"{5KFczңwo{`oëg۞ F[Nb9+̲V]^A{"@FEڻ>͛j)R'>-bZZvۍj^F]r<1;j`ړmFQw^JY?jPکî׸=N> M"C&h$qdrsvQn_ <\&N^r'H )*JWV񰹴`Z瑾tc +endstream +endobj +7341 0 obj << +/Type /Page +/Contents 7342 0 R +/Resources 7340 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7240 0 R +>> endobj +7343 0 obj << +/D [7341 0 R /XYZ 69.866 801.979 null] +>> endobj +662 0 obj << +/D [7341 0 R /XYZ 70.866 771.024 null] +>> endobj +7339 0 obj << +/D [7341 0 R /XYZ 70.866 734.467 null] +>> endobj +666 0 obj << +/D [7341 0 R /XYZ 70.866 718.988 null] +>> endobj +7329 0 obj << +/D [7341 0 R /XYZ 70.866 664.702 null] +>> endobj +670 0 obj << +/D [7341 0 R /XYZ 70.866 649.223 null] +>> endobj +7328 0 obj << +/D [7341 0 R /XYZ 70.866 606.785 null] +>> endobj +674 0 obj << +/D [7341 0 R /XYZ 70.866 591.305 null] +>> endobj +7333 0 obj << +/D [7341 0 R /XYZ 70.866 548.975 null] +>> endobj +678 0 obj << +/D [7341 0 R /XYZ 70.866 533.496 null] +>> endobj +7334 0 obj << +/D [7341 0 R /XYZ 70.866 491.165 null] +>> endobj +682 0 obj << +/D [7341 0 R /XYZ 70.866 475.686 null] +>> endobj +7335 0 obj << +/D [7341 0 R /XYZ 70.866 433.463 null] +>> endobj +686 0 obj << +/D [7341 0 R /XYZ 70.866 417.983 null] +>> endobj +7331 0 obj << +/D [7341 0 R /XYZ 299.137 359.916 null] +>> endobj +690 0 obj << +/D [7341 0 R /XYZ 70.866 342.441 null] +>> endobj +7330 0 obj << +/D [7341 0 R /XYZ 70.866 300.111 null] +>> endobj +694 0 obj << +/D [7341 0 R /XYZ 70.866 284.631 null] +>> endobj +7338 0 obj << +/D [7341 0 R /XYZ 70.866 242.301 null] +>> endobj +698 0 obj << +/D [7341 0 R /XYZ 70.866 226.822 null] +>> endobj +7337 0 obj << +/D [7341 0 R /XYZ 70.866 184.491 null] +>> endobj +702 0 obj << +/D [7341 0 R /XYZ 70.866 169.012 null] +>> endobj +7336 0 obj << +/D [7341 0 R /XYZ 70.866 126.789 null] +>> endobj +706 0 obj << +/D [7341 0 R /XYZ 70.866 111.309 null] +>> endobj +7332 0 obj << +/D [7341 0 R /XYZ 70.866 68.979 null] +>> endobj +7340 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7363 0 obj << +/Length 1727 +/Filter /FlateDecode +>> +stream +xY[o6~@͐DI&m0}PdHD-ͿMȎSd%D<|1Y;y3{}'B1cvB"Ɯ0gr.]/heMrktgbS@D?sWziԵ~sS/R0c˷Wٟ3`G7˯Y[#/[8uJ@*M(`ݴ,jRȽ\`IKN0}yu{J΂ 0D=G~6(Jla5m jɚ{ERD) {*Y&UQV2B?ߕe'Ek#*-]_J;+pi3 PUbBc-/FWaxiRpozd+n,rYjT9=EA6̹T Iv VA @ }"BY#p$70ua|9o{ui֫"[Pf ySg&ŁN&Wýw"Dtfqzu]UU;zқ_ݟAuKeQ_ffq(}h}՛( +?v`Q 5jeJb7/ebS6-칀v@ +Zk'Td3 ~C\&!*v?>:6UFd#|U<* -vN6Ö{ ϋ4o"i{IZh+[4ۆIZXuFQGд:Y*hGN BɨR@󁬘zAM*L&\>Zv`3 +s,ЬrZ6U%5ox D=3Xq%kf3M@TS:6I[1ŏ 1TX[j~`5>YC.θHZwʶ2&u~ !5ʊR5(MC Y67p|rމwxur>sS?r'Ȫ XH--7P͝dȝD4 +QmIU-q`8螲GPvuSy1Li$C<䑨[G i,ng<ոwV")0<2M] uXcE5LAޣ 6'cOb%KY{?w}VTy@mho?@qt /PCcMI![2EX8O)P$*A_qr?68}C{aHCğD$O~Uaad"ݬCйA'm~oϐÙ5{>!2w,s}#K +0{kFθipH˫w;g֤c?tjȄQ=z s8+{[Kty1߀yD +endstream +endobj +7362 0 obj << +/Type /Page +/Contents 7363 0 R +/Resources 7361 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7373 0 R +/Annots [ 7344 0 R 7345 0 R 7346 0 R 7347 0 R 7348 0 R 7349 0 R 7350 0 R 7351 0 R 7352 0 R 7353 0 R 7354 0 R 7355 0 R 7356 0 R 7357 0 R 7358 0 R 7359 0 R 7360 0 R ] +>> endobj +7344 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.718 647.544 230.125 658.019] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7345 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.625 647.544 251.554 658.019] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7346 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.012 647.544 468.859 658.019] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7347 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 572.241 134.194 582.716] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_aed91dcd5ee2d58fe552890a22ce44b8c) >> +>> endobj +7348 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 559.369 149.598 569.843] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_a8eb05b4c21ba305d16c96abd95f809b7) >> +>> endobj +7349 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.238 546.388 228.128 556.97] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_a782952fe0a9498b789f00f83e36d525e) >> +>> endobj +7350 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.375 546.388 497.699 556.97] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values) >> +>> endobj +7351 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.248 476.754 214.038 487.337] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_a519dfbe02f058960380c92f72117dfc8) >> +>> endobj +7352 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.781 462.186 240.346 471.812] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7353 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.248 449.017 212.047 459.599] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_a98b8e0e86ca3713afbcbe5836c732ad1) >> +>> endobj +7354 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [261.23 434.448 288.795 444.074] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7355 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 376.473 204.57 387.055] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_aea1e4db906d1cfe6c05d5215de564a7e) >> +>> endobj +7356 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.991 361.904 228.556 371.53] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7357 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.718 291.315 230.125 301.789] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.625 291.315 251.554 301.789] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7359 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.012 291.315 468.859 301.789] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7360 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.238 67.983 215.644 78.457] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7364 0 obj << +/D [7362 0 R /XYZ 69.866 801.979 null] +>> endobj +710 0 obj << +/D [7362 0 R /XYZ 70.866 771.024 null] +>> endobj +6834 0 obj << +/D [7362 0 R /XYZ 305.305 718.778 null] +>> endobj +714 0 obj << +/D [7362 0 R /XYZ 70.866 700.445 null] +>> endobj +7365 0 obj << +/D [7362 0 R /XYZ 70.866 611.968 null] +>> endobj +7366 0 obj << +/D [7362 0 R /XYZ 70.866 516.589 null] +>> endobj +7367 0 obj << +/D [7362 0 R /XYZ 70.866 416.307 null] +>> endobj +718 0 obj << +/D [7362 0 R /XYZ 70.866 338.381 null] +>> endobj +722 0 obj << +/D [7362 0 R /XYZ 70.866 277.145 null] +>> endobj +7368 0 obj << +/D [7362 0 R /XYZ 70.866 252.247 null] +>> endobj +726 0 obj << +/D [7362 0 R /XYZ 70.866 252.247 null] +>> endobj +730 0 obj << +/D [7362 0 R /XYZ 70.866 225.867 null] +>> endobj +7369 0 obj << +/D [7362 0 R /XYZ 70.866 200.937 null] +>> endobj +734 0 obj << +/D [7362 0 R /XYZ 70.866 200.937 null] +>> endobj +7370 0 obj << +/D [7362 0 R /XYZ 70.866 162.463 null] +>> endobj +738 0 obj << +/D [7362 0 R /XYZ 70.866 162.463 null] +>> endobj +742 0 obj << +/D [7362 0 R /XYZ 70.866 137.944 null] +>> endobj +7371 0 obj << +/D [7362 0 R /XYZ 70.866 113.014 null] +>> endobj +746 0 obj << +/D [7362 0 R /XYZ 70.866 113.014 null] +>> endobj +7372 0 obj << +/D [7362 0 R /XYZ 70.866 68.979 null] +>> endobj +7361 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R /F95 6017 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7386 0 obj << +/Length 1651 +/Filter /FlateDecode +>> +stream +xXYo8~$u؇4i-zdEfl蕨;$Kv#bQ4ř曃t4'Ai։1JȉS"L΍&kǏJbSgEV1ϛ5+E&r^ʵ?#KC-%4pg,F~8[r@(џ#lĈr(ViҠ!Zÿ(@;&cwZ4qkQR_~ef5:+r]%:[eB\y4p q;Xy ʪ?]~׏ +fN&q'eG /snI'%gR\Ʌc( +ER\)cGCW3ܼ1^X^bFtR4p9rnEOAϙ2TU9/3o* cMeLK +S9`id; * $HI;>3g@J"FStb," 4TG(Ʃ%bı1 '<]h]%z^~qy'YV3 +땀ySUTќ_B#@ޘYW61AR L5L 3(vo(T@+̣~4Lذ [ys)L%ǚUߦ֌9^HP@"9CnΚŝ~kהV殽rKfT(7tUC`Ai`lU30|93[#Xݏ($maE4΁&`XXQ4Q@M}q4NkX71awr}UHk;T'ݱKe7~vCXf^/b> b5+ ³ΖψD$!/]n">yʇ,qGE%p9y-j&]<| ㄏ2< nA|rYfmV9MaiƆvbeiERsl%n/l|Τ㉫Bǧ~DHy!KQq>2gNi@dx$pΠ*(*D>_5^(cUn+c&ϦxMN={6ڂ]E5 P޿>} vhХ= Hu}w@p_˱iQEϷX@T3^>n%.6Ϸ,+cnı=u_ E$iK1@2+e8p2 L^ ++y|ɉX#7وw 5ejo"mM[[㽆pG3J5gvmv> )VdA0n1)۸\zmfn\ًAX&lRQa@j߯N-[ϔ2mf"{ڻ);y)~R;Sy,ݝI{S>Av$ ZTcПR7q#F M_tJVu1btea eve\2&v1˺VsEjt!(T +endstream +endobj +7385 0 obj << +/Type /Page +/Contents 7386 0 R +/Resources 7384 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7373 0 R +/Annots [ 7375 0 R 7376 0 R 7377 0 R 7378 0 R 7379 0 R 7380 0 R 7381 0 R 7382 0 R 7383 0 R ] +>> endobj +7375 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.071 733.512 269.477 743.987] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7376 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.683 649.291 206.089 659.766] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7377 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 512.688 158.564 521.459] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_a3ad23f7750af493dc34e7bb84fa6edcd) >> +>> endobj +7378 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 484.845 164.679 493.329] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_a5d307822db6e769821d9dc86477171e2) >> +>> endobj +7379 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 456.84 158.564 465.611] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_af9f7b1d3f7cb4f6acb966679e7080ac2) >> +>> endobj +7380 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 427.213 153.812 437.481] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_ac0d131911c02002db06c39f7bd03d3b7) >> +>> endobj +7381 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 401.073 152.073 409.557] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_a428da57bdeeb644c8fbeb3b1f5fb53b5) >> +>> endobj +7382 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 373.068 150.091 381.839] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_af729b56f77e02acbe8d1f079ace322a3) >> +>> endobj +7383 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 343.333 161.783 353.709] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_a6db26d8e73bd24a01a9239caab6c6112) >> +>> endobj +7387 0 obj << +/D [7385 0 R /XYZ 69.866 801.979 null] +>> endobj +750 0 obj << +/D [7385 0 R /XYZ 70.866 771.024 null] +>> endobj +754 0 obj << +/D [7385 0 R /XYZ 70.866 719.234 null] +>> endobj +7374 0 obj << +/D [7385 0 R /XYZ 70.866 692.237 null] +>> endobj +758 0 obj << +/D [7385 0 R /XYZ 70.866 692.237 null] +>> endobj +6835 0 obj << +/D [7385 0 R /XYZ 70.866 640.116 null] +>> endobj +762 0 obj << +/D [7385 0 R /XYZ 70.866 623.67 null] +>> endobj +7388 0 obj << +/D [7385 0 R /XYZ 70.866 550.811 null] +>> endobj +766 0 obj << +/D [7385 0 R /XYZ 70.866 314.297 null] +>> endobj +770 0 obj << +/D [7385 0 R /XYZ 70.866 195.382 null] +>> endobj +7389 0 obj << +/D [7385 0 R /XYZ 70.866 170.585 null] +>> endobj +774 0 obj << +/D [7385 0 R /XYZ 70.866 170.585 null] +>> endobj +7390 0 obj << +/D [7385 0 R /XYZ 70.866 126.542 null] +>> endobj +778 0 obj << +/D [7385 0 R /XYZ 70.866 111.268 null] +>> endobj +7226 0 obj << +/D [7385 0 R /XYZ 70.866 68.979 null] +>> endobj +7384 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7403 0 obj << +/Length 1068 +/Filter /FlateDecode +>> +stream +xXMs6WHT0>Llk&+''%N)%8ŧH)j"   m)#1H H "xSP4Iވ'Y:]D`7KD:u?H}. +XHf6ki +Rz ]\1%D~:>`v 8AhBӰsSEBU-k&\-oe.*"oe[Σ$]g Cڣ% 8 r@ +qڿ-E[_u*7,krmoJh=\8X8K7`QrOFp`|!NwD'F{Xڇ[-M jSDLZskr7֚ =kIeZ I)v,+ E8f̛ R3a,좿H٨$ow=1b I%zax7cJhH\f'^6~vAB%!g$# + eoQ2`<+7 ">=!}ښ\X{^4\Hrb50o$b^09TᨳI`: +빾h~zuѭU@pg7n56 Wyi9G3a=^u:]rAżX=zsiL!W7}Q! 4@Zpm`]"WF Eoϥ\ #U늨mAe\uAۉ0phO)h}aΔX<(]c +swozg+W\¥6b;D̍7?j?jN,JG.u }4pY +endstream +endobj +7402 0 obj << +/Type /Page +/Contents 7403 0 R +/Resources 7401 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7373 0 R +/Annots [ 7395 0 R 7396 0 R 7397 0 R 7398 0 R 7399 0 R ] +>> endobj +7395 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 408.238 162.375 418.506] +/A << /S /GoTo /D (class_encryption_data_parameters_a93bed68ee0b94820d7579c2b3010a309) >> +>> endobj +7396 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 380.119 170.848 390.594] +/A << /S /GoTo /D (class_encryption_data_parameters_a60cf6b811cc22df22cb516c1ce93be54) >> +>> endobj +7397 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 352 170.848 362.474] +/A << /S /GoTo /D (class_encryption_data_parameters_a837720bb0e44718f0a815f7fa5cf7d76) >> +>> endobj +7398 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 69.686 113.215 78.457] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code) >> +>> endobj +7399 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.41 69.686 309.816 78.457] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7404 0 obj << +/D [7402 0 R /XYZ 69.866 801.979 null] +>> endobj +782 0 obj << +/D [7402 0 R /XYZ 70.866 771.024 null] +>> endobj +7393 0 obj << +/D [7402 0 R /XYZ 70.866 734.355 null] +>> endobj +786 0 obj << +/D [7402 0 R /XYZ 70.866 718.851 null] +>> endobj +7391 0 obj << +/D [7402 0 R /XYZ 70.866 676.516 null] +>> endobj +790 0 obj << +/D [7402 0 R /XYZ 70.866 661.012 null] +>> endobj +7392 0 obj << +/D [7402 0 R /XYZ 70.866 618.784 null] +>> endobj +794 0 obj << +/D [7402 0 R /XYZ 70.866 603.281 null] +>> endobj +7394 0 obj << +/D [7402 0 R /XYZ 70.866 560.945 null] +>> endobj +798 0 obj << +/D [7402 0 R /XYZ 70.866 545.442 null] +>> endobj +7405 0 obj << +/D [7402 0 R /XYZ 70.866 502.999 null] +>> endobj +802 0 obj << +/D [7402 0 R /XYZ 70.866 486.323 null] +>> endobj +7406 0 obj << +/D [7402 0 R /XYZ 70.866 448.208 null] +>> endobj +806 0 obj << +/D [7402 0 R /XYZ 70.866 322.625 null] +>> endobj +7407 0 obj << +/D [7402 0 R /XYZ 70.866 297.486 null] +>> endobj +810 0 obj << +/D [7402 0 R /XYZ 70.866 297.486 null] +>> endobj +7408 0 obj << +/D [7402 0 R /XYZ 70.866 253.398 null] +>> endobj +814 0 obj << +/D [7402 0 R /XYZ 70.866 237.894 null] +>> endobj +7409 0 obj << +/D [7402 0 R /XYZ 70.866 195.558 null] +>> endobj +818 0 obj << +/D [7402 0 R /XYZ 70.866 180.055 null] +>> endobj +6836 0 obj << +/D [7402 0 R /XYZ 70.866 137.719 null] +>> endobj +822 0 obj << +/D [7402 0 R /XYZ 70.866 121.043 null] +>> endobj +7401 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7431 0 obj << +/Length 2181 +/Filter /FlateDecode +>> +stream +xZK۸ϯ`e&\Yr)?2=y@PHpǓ_nA45DN) ?4rZo~z+qVQ[wV:IY9g;rܾs؇TLvdqbYWZ5z}{+O$N+Z9\_%փYYA;aK竿]$X}s8\ERS]vYd $Kk)bBURSb㯎TEN!M;c]2 #;u+6Z|#-ܨ8tlE힐s#͍V1"o- I憮 ?IAIs]~ןB5>}Qt /[閦=uYFυ.{A,=fv* R|,ny^wM (O?`M uZq@70gQ#W>18.IO*A`.<0}I~hDe@>iV_ ZMZZiHC +Lro6,8c˫vEiL&m ! +$ug)K=px)WV{R?y%4Y)|"il߳ˆ#@mO96 KyMcGL`V/`iQ_οpכ,{?;4#%a-lR0aQW4M:^6\D_֥h1˟1Og؛j Z=:4%ZUpH?ЩЇwJwn(JXϣ}uu72wWtpW[עaU-]g qeYX_D/an2gmm3lCpGO\}oNB lrKƈ{:+#8`#8ac5F^J'qqƸ8<gB7 +Uf `OE֕i3,CTZZwldRi>N\ M"|>Wvg,)"w4DYʖ-rl0WiߊE3Y(YfY% 0TCz,L6"R=w(H֣zml]^C%8u76W@8~$ kR)f <1$8I 4멜|1s\vra5=Jp 籶YJs }),/ɮS +ŒDW\%3eڪQ:lK'TI-zSaCT3*ծg ѻVB^d;[X0ZިV~E&L Mʄ@XlS@ 2qkQc.@ D ahJ ؤ1 dodd,9~Fc?q}b+t^ka$90ܐ: (N7A?^H^׋/Ƞ h!٠vRD?M}q@N/8ڕ( +endstream +endobj +7430 0 obj << +/Type /Page +/Contents 7431 0 R +/Resources 7429 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7373 0 R +/Annots [ 7400 0 R 7410 0 R 7411 0 R 7412 0 R 7413 0 R 7414 0 R 7415 0 R 7416 0 R 7417 0 R 7418 0 R 7419 0 R 7420 0 R 7421 0 R 7422 0 R 7423 0 R 7424 0 R 7425 0 R 7426 0 R 7427 0 R 7428 0 R ] +>> endobj +7400 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 737.43 144.111 746.201] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a432f4d428147b0455487dc2b28474e86) >> +>> endobj +7410 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 708.878 275.358 719.353] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_abe840b6d5d214a382cc3126010610e61) >> +>> endobj +7411 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 671.07 218.871 681.545] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a83ca01ddd4c0f0dd69c9ae9d135716dc) >> +>> endobj +7412 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 634.967 209.151 643.738] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_aa6418d5e27dd1c577387df71dbd2d97c) >> +>> endobj +7413 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 608.118 214.71 616.683] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a020efa506a911d78481761219ad1a87a) >> +>> endobj +7414 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.713 592.183 377.278 601.809] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7415 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 579.566 218.853 590.04] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a0f067e65b9ee1a19254cddf431cf7f73) >> +>> endobj +7416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 554.421 171.511 563.192] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_aefa4bbc103cc10797c8b695ec03544b0) >> +>> endobj +7417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 527.572 184.97 536.343] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a5ece2c1d9636a3725b3d38dffaeafad2) >> +>> endobj +7418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 500.724 173.547 509.495] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a2c770f32de9265fe53d881768167d7b4) >> +>> endobj +7419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 473.875 183.114 482.44] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a989671a923b1616f8831545f9e5baf01) >> +>> endobj +7420 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 447.027 227.559 455.591] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_ae5450434e0a521ecfa9491c225e59fce) >> +>> endobj +7421 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 409.219 211.375 417.99] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a305ae576c8bcc601f64595333623287a) >> +>> endobj +7422 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 382.37 201.414 391.141] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_ab1d9ee69b2b2f4112c84e6d3c2c54b6c) >> +>> endobj +7423 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.319 366.435 239.884 376.061] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7424 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 342.752 186.566 353.128] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_af2c3cf51125257fba0d2d9f76cbb55f1) >> +>> endobj +7425 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.584 328.628 242.149 338.254] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7426 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 306.756 244.057 315.527] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a112f0f8b62f7271dfc9793463f389482) >> +>> endobj +7427 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 222.353 113.215 231.124] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code) >> +>> endobj +7428 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.41 222.353 309.816 231.124] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7432 0 obj << +/D [7430 0 R /XYZ 69.866 801.979 null] +>> endobj +7433 0 obj << +/D [7430 0 R /XYZ 70.866 775.009 null] +>> endobj +826 0 obj << +/D [7430 0 R /XYZ 70.866 266.013 null] +>> endobj +830 0 obj << +/D [7430 0 R /XYZ 70.866 208.602 null] +>> endobj +7434 0 obj << +/D [7430 0 R /XYZ 70.866 182 null] +>> endobj +834 0 obj << +/D [7430 0 R /XYZ 70.866 182 null] +>> endobj +7435 0 obj << +/D [7430 0 R /XYZ 70.866 125.902 null] +>> endobj +838 0 obj << +/D [7430 0 R /XYZ 70.866 111.154 null] +>> endobj +7436 0 obj << +/D [7430 0 R /XYZ 70.866 68.871 null] +>> endobj +7429 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7461 0 obj << +/Length 2069 +/Filter /FlateDecode +>> +stream +xMs۶_LDTfzp8t)"!1.vAԮ{b߻]kg֛ŏ׋$RgǁuIJ־{un}S+?I_ιJzעk\w^wsI:?smJԎ]xky#i~heŧ]+wԺ՘{+' ++jB!#bpBsܩvV.ދFvU-_r?\.=+:gz¶kqZ $J[R!ڙP4]-ʊF喖BD[{ 5UHjG( Nu:Uuai$w[Hm*dud{*)pҏlU4z=P/笣g~p+X;kpgPUNFO=LXx A%3afO1Yu67 ͡neN!MYB Ӣ*Ce&V +DԕsL`\0Ah꯻`FXxIMcdAݨU]l3,Oz3W1yUHq{ΌjrWvd[lԅ‚RϮ.-ldt\m%ց=e0 +CPc鶣i*vWk:)#YG -2g + Cf#6jq˄Ƶ?s?cͨ=5.I埣lȨb^pxD}#uj8g8ch6]Ƭ5Ρc'|RZEyuAjdˆ +iu?rP1;'yB7=7NC\&67a4U #i +kAJM609'Ah_E`&-/n6(4V)^2 ޴uy]$[/AF|K3Lޖ}qt~ +So^ԢGR(? X oY'b? bZogg6i"e+vI"~8q%ԟ ENgESW!Ըpf6iRn2r#7Կ7JB#H!FcLO1ptn Ecn!CA졽72R`[_YnhO 8~G݋E3cwT͍JS;\f2]z -/AX<E6|"[⵬Gq,}>}mp5Ch0fgT'h m1϶̃3XnL (  /?>k(+g}Į w8] I=1xˆ|`yu=&F2ܖη*L0˩6(qP8S9k>\cOm{ok8y[Rs-賣TGZ٦1:TMF$ Vv&YЄ>3B8sh`0L2+hm/'> endobj +7449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.385 456.082 367.791 466.556] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.601 312.093 216.007 322.568] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.628 282.406 234.035 292.988] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.806 270.558 335.212 281.033] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7453 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [431.984 270.558 525.406 281.033] +/Subtype/Link/A<> +>> endobj +7463 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 258.956 227.28 268.854] +/Subtype/Link/A<> +>> endobj +7454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [299.78 240.979 330.186 251.454] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.999 240.979 525.406 251.454] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7456 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.183 163.007 215.59 173.482] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7457 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [299.78 79.938 330.186 90.412] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7458 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.999 79.938 525.406 90.412] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +7462 0 obj << +/D [7460 0 R /XYZ 69.866 801.979 null] +>> endobj +842 0 obj << +/D [7460 0 R /XYZ 70.866 771.024 null] +>> endobj +7443 0 obj << +/D [7460 0 R /XYZ 70.866 721.145 null] +>> endobj +846 0 obj << +/D [7460 0 R /XYZ 70.866 698.826 null] +>> endobj +7442 0 obj << +/D [7460 0 R /XYZ 70.866 655.128 null] +>> endobj +850 0 obj << +/D [7460 0 R /XYZ 70.866 632.81 null] +>> endobj +7440 0 obj << +/D [7460 0 R /XYZ 70.866 589.004 null] +>> endobj +854 0 obj << +/D [7460 0 R /XYZ 70.866 566.685 null] +>> endobj +7441 0 obj << +/D [7460 0 R /XYZ 70.866 522.987 null] +>> endobj +858 0 obj << +/D [7460 0 R /XYZ 70.866 500.669 null] +>> endobj +7439 0 obj << +/D [7460 0 R /XYZ 70.866 457.078 null] +>> endobj +862 0 obj << +/D [7460 0 R /XYZ 70.866 434.76 null] +>> endobj +7448 0 obj << +/D [7460 0 R /XYZ 70.866 378.998 null] +>> endobj +866 0 obj << +/D [7460 0 R /XYZ 70.866 356.68 null] +>> endobj +7447 0 obj << +/D [7460 0 R /XYZ 334.006 231.907 null] +>> endobj +870 0 obj << +/D [7460 0 R /XYZ 70.866 209.405 null] +>> endobj +7446 0 obj << +/D [7460 0 R /XYZ 334.006 70.866 null] +>> endobj +7459 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7479 0 obj << +/Length 1936 +/Filter /FlateDecode +>> +stream +xY[s8~:3#ߝPJr6<#o)k˄st$qBiXx,~$3aγ'Gid,IBgI%/y&&!|gi& ܧhW\\Rރ?>leߑ2/ "XȜp2gw(8Bs~3b2/q+tChY3gy-|)ճ|*AR*)e+c@$q, zbSيJD}IOOOi͸TGƛn8D8nH+ +[== aqCV:\hxI)#hf^c(r sǻdY _vE^U!knߵ[qBY^6$].Tǡg0̩o)qCf~ɕ\'s uDS/>l VzC7fNTq%[]gbԭ$Iv0\JpF Ϯ C6D{mcr24Ktė@o,c?G9o߽Fȥ.ͷĊ6aOv+|KJu[v&r9YIrSZ8B5Wyt7d +zEG3E^#c8G%23O[z;zpiP6c[P. _X=dѓJ8N$h|?ƙAƱ g&m( Ϡ4P/(6@KDvy'D5!Vg +n3#=OVidQb:X0Å|?GiY wxyi>yU.ެAȻzh SӔC?uXC?aS|^B } q-6vػtdK;I]q9fq i[Zj늎*K~iTGOx 7M'|ܝ*q%}'|>^_UxH;>tN/Iߌg\̗g<7>:Ƙ(6`\ +;Q*жvwF+חxvl! +endstream +endobj +7478 0 obj << +/Type /Page +/Contents 7479 0 R +/Resources 7477 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7373 0 R +/Annots [ 7464 0 R 7465 0 R 7466 0 R 7467 0 R 7468 0 R 7469 0 R 7470 0 R 7471 0 R 7472 0 R 7473 0 R 7474 0 R 7475 0 R ] +>> endobj +7464 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 371.538 113.215 380.309] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +7465 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.41 371.538 309.816 380.309] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7466 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 313.822 144.111 322.593] +/A << /S /GoTo /D (class_error_code_a589b20e6c22d3c24bf3969e75b2868f6) >> +>> endobj +7467 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 284.341 275.358 294.815] +/A << /S /GoTo /D (class_error_code_ae5e576ba8cd8ba6c430789a3244587b9) >> +>> endobj +7468 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 245.605 218.871 256.079] +/A << /S /GoTo /D (class_error_code_a2c2a6c12d1f2a7c7f02cecfdd6aa0db3) >> +>> endobj +7469 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 206.869 197.441 217.343] +/A << /S /GoTo /D (class_error_code_a20d30b808843239ec76b929ef2c316e5) >> +>> endobj +7470 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 180.795 209.151 189.566] +/A << /S /GoTo /D (class_error_code_a77dd2b2f1f69b7f2883afb0266b04e5c) >> +>> endobj +7471 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 153.018 214.71 161.582] +/A << /S /GoTo /D (class_error_code_a872edd00cf4eab84fab8fd69c2d90a74) >> +>> endobj +7472 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.713 136.618 377.278 146.244] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 123.537 218.853 134.012] +/A << /S /GoTo /D (class_error_code_acf7dfe0e3482105d028c258b6bab0b17) >> +>> endobj +7474 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 97.463 171.511 106.234] +/A << /S /GoTo /D (class_error_code_a7f823534f0d35beb53a78d6083a69d2d) >> +>> endobj +7475 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 69.686 184.97 78.457] +/A << /S /GoTo /D (class_error_code_a1c4efacb70415130bd0dda612c9fd99e) >> +>> endobj +7480 0 obj << +/D [7478 0 R /XYZ 69.866 801.979 null] +>> endobj +874 0 obj << +/D [7478 0 R /XYZ 70.866 771.024 null] +>> endobj +7437 0 obj << +/D [7478 0 R /XYZ 70.866 724.344 null] +>> endobj +878 0 obj << +/D [7478 0 R /XYZ 70.866 709.16 null] +>> endobj +7438 0 obj << +/D [7478 0 R /XYZ 70.866 664.985 null] +>> endobj +882 0 obj << +/D [7478 0 R /XYZ 70.866 649.8 null] +>> endobj +7444 0 obj << +/D [7478 0 R /XYZ 70.866 556.022 null] +>> endobj +886 0 obj << +/D [7478 0 R /XYZ 70.866 540.838 null] +>> endobj +7445 0 obj << +/D [7478 0 R /XYZ 70.866 496.668 null] +>> endobj +890 0 obj << +/D [7478 0 R /XYZ 70.866 481.483 null] +>> endobj +6600 0 obj << +/D [7478 0 R /XYZ 70.866 439.2 null] +>> endobj +894 0 obj << +/D [7478 0 R /XYZ 70.866 422.843 null] +>> endobj +7481 0 obj << +/D [7478 0 R /XYZ 70.866 351.864 null] +>> endobj +7477 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7516 0 obj << +/Length 2416 +/Filter /FlateDecode +>> +stream +xZKs6Wj1U{p4dbq*I0 KPGlO7Fw={FM:̙?Y;"v};;Yzvήg+]~ʼnuZsϱTPE)Wv:eogAaRzޣ?\tfn^؉̲ߜY}9&;=r= B,٧v:lʉ7:JBoW't|/b*xOYS]T\D]K**c?0v%kj,qv7l#3?l/gǮon̢z^8yh8 #+SUÂU#P{–"8sjljkBO̹Ψ~LE0 ;֟s/u hY'TAS:*Il6\^t*κHޖw@~'w*:XW.^>J xj315ID5 +_jI}Aͳ.ˤ/nT qGEv%L h wve+Iohyj-.!iwH$CKӐe`sZ&꧀n`JASN(ST~dH& B jpPEk[%=DX%UytlfM]PVL=9_ZY$Z+8X+HnejRL)Ʉ'zhV1_sqȺ+)4sc*ra׮ſE[3%"׺\oo]iC(VP#kj"(b zY n|7o&n]$Qk`׹)>T=EYWrY{0G"R?ג1OrNAc`8"i) .pqxƕh;,K6'T+8xC`FlȺ;9zʛuYtM֌p &lDCvRzw]2\壺a "yƒ JGڄ";фm*4G k4_ddLΛ8Ev &p";LW'phPvciTǁ١M)NޠM~&ziƝ͚J{,:J%:ʼ FR}mֆ6{& CCXJvĠ0F,zEP q9]KʚSu P͇G;GtSdPx?QI4UA;2ٲ47C֤v)e;_gD߂d0NP-Ȉj꧱ C RJGA՚N<.5f4SQh%@$kU͏ pBNUeu]Ѯ&KRQ !|Έөo_qkWWRPIW"Zx'C~ruV@CnTP1 g 0s''1/#M63D4 I5c⃽/ }Vvpѐtϐu'+RumvzWc}B;\U4cW[S~V8AkAbm H8C1y,'_xm<6UcNdU꥿9Cn~SעsH,|'^J,yDh_PFa1ʾ6ݎ/TvC<`{1NI0sj}F[&ˬ`yB^E^lt~AczI!b̚3o6^V)~+yLNzKT-&W@笳w0/>*1wtPye!x^'3R%l'JWۉ^KOF_ElKpD;^^uTy'>ͩKq#: 2 :#*Zlhpx4/wNu +endstream +endobj +7515 0 obj << +/Type /Page +/Contents 7516 0 R +/Resources 7514 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7518 0 R +/Annots [ 7476 0 R 7491 0 R 7492 0 R 7493 0 R 7494 0 R 7495 0 R 7496 0 R 7497 0 R 7498 0 R 7499 0 R 7500 0 R 7501 0 R 7502 0 R 7503 0 R 7504 0 R 7505 0 R 7506 0 R 7507 0 R 7508 0 R 7509 0 R 7510 0 R 7511 0 R ] +>> endobj +7476 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 744.261 197.433 754.529] +/A << /S /GoTo /D (class_error_code_ac764d0c308a4249ab16939ef30cc00c8) >> +>> endobj +7491 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 732.048 173.547 740.819] +/A << /S /GoTo /D (class_error_code_a10cbd27d35c99b76eee99f90247a0a0d) >> +>> endobj +7492 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 702.222 183.114 710.787] +/A << /S /GoTo /D (class_error_code_a40e5e7b6bf6688df5c6de67e9922fd5b) >> +>> endobj +7493 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 672.396 227.559 680.961] +/A << /S /GoTo /D (class_error_code_a84290da3689bc3ea86a19c488ede9d6f) >> +>> endobj +7494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 631.612 211.375 640.383] +/A << /S /GoTo /D (class_error_code_a0f2f47487dda3e4731fb00da4447df72) >> +>> endobj +7495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 601.786 201.414 610.557] +/A << /S /GoTo /D (class_error_code_ab693a622556ed2e6aa7095b2ec29fc41) >> +>> endobj +7496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.319 584.362 239.884 593.988] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7497 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 559.19 186.566 569.566] +/A << /S /GoTo /D (class_error_code_ab799ccd0f66a406266346f29c5c46538) >> +>> endobj +7498 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.584 543.577 242.149 553.204] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7499 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 520.217 244.057 528.988] +/A << /S /GoTo /D (class_error_code_acb92a50685729588d3dfc4594b1e0595) >> +>> endobj +7500 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 477.728 243.151 487.997] +/A << /S /GoTo /D (class_error_code_a294ef9a4f4abbfd3defd4c0db705ba61) >> +>> endobj +7501 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 436.836 214.728 447.212] +/A << /S /GoTo /D (class_error_code_adb4ef5f067b08c6bdc7cb0a672c357f7) >> +>> endobj +7502 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 396.051 195.926 406.427] +/A << /S /GoTo /D (class_error_code_abaf9c6de084558d58e8387e278837a00) >> +>> endobj +7503 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 366.333 248.361 376.602] +/A << /S /GoTo /D (class_error_code_a7aefe6e82478c9a479b7e925e27130b7) >> +>> endobj +7504 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 338.211 253.301 346.776] +/A << /S /GoTo /D (class_error_code_ac3ca1983dd44173e855b61f87961fbd9) >> +>> endobj +7505 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 295.723 263.478 305.991] +/A << /S /GoTo /D (class_error_code_a60de7771513847052846f54e5debbaf9) >> +>> endobj +7506 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 256.642 261.496 265.207] +/A << /S /GoTo /D (class_error_code_a511ab919439555b4edc36bf28d821e0b) >> +>> endobj +7507 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 226.816 246.819 235.381] +/A << /S /GoTo /D (class_error_code_a2366ccf7d7ec923b52be91c277bc7405) >> +>> endobj +7508 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 184.328 203.906 194.596] +/A << /S /GoTo /D (class_error_code_a1c7a999816947e7e4db6f0c9b3e444ad) >> +>> endobj +7509 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 143.543 221.614 154.018] +/A << /S /GoTo /D (class_error_code_a8126103517b94ed6ebd0c92c6a832e4a) >> +>> endobj +7510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 115.421 168.023 124.192] +/A << /S /GoTo /D (class_error_code_ae522215ae10edc565a60b7790637e262) >> +>> endobj +7511 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.659 83.892 246.675 94.16] +/A << /S /GoTo /D (class_error_code_a28b15046c7f8086552e38ba805a241af) >> +>> endobj +7517 0 obj << +/D [7515 0 R /XYZ 69.866 801.979 null] +>> endobj +7514 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7542 0 obj << +/Length 1523 +/Filter /FlateDecode +>> +stream +xڥXs8~_̙߸3s\:msm(+F.:V%}WҢ]}iW?׳7b{7"fahD cз>_^qszvY&Mc(6/Dny%YJ.׳3T[Ʊng?3#El|e4ngl7P Q^s;v3/Lg &]noG[o+0-0cvxhⲮEb|Ԩdcn $s-I[JHaRHEZ$R; +}!s3>EkkYn`*Mn̶*R5w| +2[؎oNoMdBwq>ң(>  L + MUY$`W=͏K՛w8Oӂ L;Ư7jH_QT}U^à{D}Z/ۅ;U=8xg\LWS{TQqxD--*Im8 V@0?EA}ԩ[Qs"jwnɿ}ivW&jۃ)y؅rRGZ]P"U ɸ(੢ꈴ#դ&5CpZD5n12:a&L6bDZ@ {]/0T<=٠xFdqd{ =F G+FsRuo,eBܫ2S{~tfP 3f+p#JYs(CS`&Ui65@=CEA&!nyۓcW[[sWaӢ]auoFY0ZJsX)Iz:0èQ-zf:}a(uh9@Mzw\5:kS~UxN*<lDvNh}S +m)ܘQ+x:[ĩ#uwҌ~u!ZPPzվSGSP^ +endstream +endobj +7541 0 obj << +/Type /Page +/Contents 7542 0 R +/Resources 7540 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7518 0 R +/Annots [ 7512 0 R 7513 0 R ] +>> endobj +7512 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 734.368 113.215 743.139] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +7513 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.41 734.368 309.816 743.139] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7543 0 obj << +/D [7541 0 R /XYZ 69.866 801.979 null] +>> endobj +898 0 obj << +/D [7541 0 R /XYZ 70.866 771.024 null] +>> endobj +902 0 obj << +/D [7541 0 R /XYZ 70.866 715.852 null] +>> endobj +7519 0 obj << +/D [7541 0 R /XYZ 70.866 688.396 null] +>> endobj +906 0 obj << +/D [7541 0 R /XYZ 70.866 688.396 null] +>> endobj +7527 0 obj << +/D [7541 0 R /XYZ 70.866 661.162 null] +>> endobj +910 0 obj << +/D [7541 0 R /XYZ 70.866 661.162 null] +>> endobj +7526 0 obj << +/D [7541 0 R /XYZ 70.866 605.931 null] +>> endobj +914 0 obj << +/D [7541 0 R /XYZ 70.866 586.419 null] +>> endobj +7536 0 obj << +/D [7541 0 R /XYZ 70.866 531.326 null] +>> endobj +918 0 obj << +/D [7541 0 R /XYZ 70.866 511.814 null] +>> endobj +7490 0 obj << +/D [7541 0 R /XYZ 70.866 468.785 null] +>> endobj +922 0 obj << +/D [7541 0 R /XYZ 70.866 449.273 null] +>> endobj +7523 0 obj << +/D [7541 0 R /XYZ 70.866 406.028 null] +>> endobj +926 0 obj << +/D [7541 0 R /XYZ 70.866 386.516 null] +>> endobj +7489 0 obj << +/D [7541 0 R /XYZ 70.866 331.531 null] +>> endobj +930 0 obj << +/D [7541 0 R /XYZ 70.866 312.019 null] +>> endobj +7488 0 obj << +/D [7541 0 R /XYZ 70.866 268.882 null] +>> endobj +934 0 obj << +/D [7541 0 R /XYZ 70.866 249.37 null] +>> endobj +7535 0 obj << +/D [7541 0 R /XYZ 70.866 206.125 null] +>> endobj +938 0 obj << +/D [7541 0 R /XYZ 70.866 186.613 null] +>> endobj +7486 0 obj << +/D [7541 0 R /XYZ 70.866 131.628 null] +>> endobj +942 0 obj << +/D [7541 0 R /XYZ 70.866 112.116 null] +>> endobj +7487 0 obj << +/D [7541 0 R /XYZ 70.866 68.871 null] +>> endobj +7540 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7552 0 obj << +/Length 1932 +/Filter /FlateDecode +>> +stream +xڭY[w6 ~sf9gYڮq>(m)Uٯ@JV;{ i|2x3}5; +=#A2+ +#\:V`lFNj0.2뚦zn3W\$|uNqņ&Ye3B XDf&X;0k1wqs3fE%qVF^]]IgWr3o9OZ}a>s0abO/.;kYSkp=0n\mω,S"g +V܉yPbBT73a[4$uϔ$/ZS+؝Y*֎ VcAZ$Hd>\\;ހ~m#ܼnv;s$>dyNIV9qUU5Zq'm,"qiH)e%aR0yԨ/.~p "pޗ:Ls$ j2(9wУaΐ<>I6WSQ(xn m +-{CRʐG} +rn[O]!KP_:}+zndVΈPARE4R qk(7oHMUG&~-46}0$Ͷ!en5WیT aC 9&4_seXX#" "i.^}$0R!aW9F?qYSjEJPLSV5Ep@q_\<!#k5ʄ>-D>< ?:Ur FiJ8&ڙ@{XUTGi&bi0UDJtE'*B>mk +rUO~{9'#Xz"IG뷐T/xvD:QikWa.˩#<)+1H6D> endobj +7539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.385 732.963 367.791 743.437] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.601 418.405 216.007 428.88] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.628 388.718 234.035 399.3] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.806 376.871 335.212 387.345] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7547 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [431.984 376.871 525.406 387.345] +/Subtype/Link/A<> +>> endobj +7554 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 365.269 227.28 375.166] +/Subtype/Link/A<> +>> endobj +7548 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [299.78 347.291 330.186 357.766] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7549 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.999 347.291 525.406 357.766] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7553 0 obj << +/D [7551 0 R /XYZ 69.866 801.979 null] +>> endobj +946 0 obj << +/D [7551 0 R /XYZ 70.866 771.024 null] +>> endobj +7538 0 obj << +/D [7551 0 R /XYZ 70.866 733.959 null] +>> endobj +950 0 obj << +/D [7551 0 R /XYZ 70.866 715.937 null] +>> endobj +7485 0 obj << +/D [7551 0 R /XYZ 70.866 673.098 null] +>> endobj +954 0 obj << +/D [7551 0 R /XYZ 70.866 655.076 null] +>> endobj +7484 0 obj << +/D [7551 0 R /XYZ 194.483 554.966 null] +>> endobj +958 0 obj << +/D [7551 0 R /XYZ 70.866 535.057 null] +>> endobj +7525 0 obj << +/D [7551 0 R /XYZ 70.866 480.155 null] +>> endobj +962 0 obj << +/D [7551 0 R /XYZ 70.866 462.133 null] +>> endobj +7534 0 obj << +/D [7551 0 R /XYZ 334.006 338.22 null] +>> endobj +966 0 obj << +/D [7551 0 R /XYZ 70.866 320.014 null] +>> endobj +7533 0 obj << +/D [7551 0 R /XYZ 70.866 265.22 null] +>> endobj +970 0 obj << +/D [7551 0 R /XYZ 70.866 247.198 null] +>> endobj +7531 0 obj << +/D [7551 0 R /XYZ 70.866 202.656 null] +>> endobj +974 0 obj << +/D [7551 0 R /XYZ 70.866 184.634 null] +>> endobj +7530 0 obj << +/D [7551 0 R /XYZ 70.866 131.543 null] +>> endobj +978 0 obj << +/D [7551 0 R /XYZ 70.866 113.521 null] +>> endobj +7532 0 obj << +/D [7551 0 R /XYZ 70.866 68.979 null] +>> endobj +7550 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7560 0 obj << +/Length 2151 +/Filter /FlateDecode +>> +stream +xڥMs۶_ɥLĀtf!QLμCMcPI뻋]P4E~ۻɫ4r2,IBI%^;wMw0, a릳 _Uѯds]q'&L|@?2/ "XM.}te`(8Bs;D b`  ++ux|![ oUÓwm;cWsUJK\sU-Uzy#LJ)ih4̑óф3 bOd IU쁉$}DE"+^vCY, CSVEeGz)iS]H=MUh2/t4]ޑcǪ~"nYFitnE\E K=bփ%Q<~dH#TMgod^LSw)džshſ1t:2tVS0 +K<.REbGL0r \/ y2L{Y}`&o[i4ng~>VfI/XﻂO a0Lک8s|м7^U?74&~TOeaӰgŒf/4{۷~ugj4L0p5ʞ,md1l}`|L0w&CYjEc(\XKpi " i"y' Xf&L͒f%sPހI+uoBmTU +ji$6kiǦcJgGsh`(JAXҷA0 DYշӄ1R= V+K4i|gV+ctW"mwUY\Y4DzEUSH0Qv/k[6{&_SMdHиHIhG(E.|Ĉ"03@ d!3%mPgLpp@6BS?ڛ$r/l55@,֔63g&KH1woe0[*[$9=yeblIh=0ƧB6[tQ3۱KuV6Uyv7lݑp#1b)ºþ(,;B*KHՙb xHI1V,perIˆ:/X=)voZ#z5 +a$h;|l;V@urdf p }8ꑭ5NVMb؋^|}h6mg|ֲ +ݛ +}z[) GkC3nVUʜGjs:0pvAS8SԛP6-c: +YJQҮpӻI!蛼;J8l:-wz!LF1a:XF{ 8~^:yoAIjS=@6%hL1jVk(L@|R +KSJ#<ރkZzmv梯f{{?GR+7#XIދ0Tdy7^eV &5 &;D !>.9\j.nKͶsSDn ^6 gq@qF6uSI k{2%楒O/5l׭US{Z%nOM)ڇ2mUO ` I ]|JI>9SPR?~a$yⓐ99vcBcQ4ϗydKrTnnjAj%b/_E$' vp,ΌFE%_%&Gq~tF?e{ޛs$6/mD`mG`vk 'Ʃ{"y}n +_Mϧ)8(BLærau`@k#^8EzJPVΡW8 > endobj +7555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.183 661.045 215.59 671.519] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [299.78 577.975 330.186 588.45] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.999 577.975 525.406 588.45] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7561 0 obj << +/D [7559 0 R /XYZ 69.866 801.979 null] +>> endobj +982 0 obj << +/D [7559 0 R /XYZ 70.866 771.024 null] +>> endobj +7524 0 obj << +/D [7559 0 R /XYZ 70.866 723.836 null] +>> endobj +986 0 obj << +/D [7559 0 R /XYZ 70.866 706.455 null] +>> endobj +7522 0 obj << +/D [7559 0 R /XYZ 334.006 568.904 null] +>> endobj +990 0 obj << +/D [7559 0 R /XYZ 70.866 551.34 null] +>> endobj +7482 0 obj << +/D [7559 0 R /XYZ 70.866 496.755 null] +>> endobj +994 0 obj << +/D [7559 0 R /XYZ 70.866 479.374 null] +>> endobj +7483 0 obj << +/D [7559 0 R /XYZ 70.866 434.772 null] +>> endobj +998 0 obj << +/D [7559 0 R /XYZ 70.866 417.391 null] +>> endobj +7529 0 obj << +/D [7559 0 R /XYZ 70.866 323.186 null] +>> endobj +1002 0 obj << +/D [7559 0 R /XYZ 70.866 305.805 null] +>> endobj +7528 0 obj << +/D [7559 0 R /XYZ 70.866 261.1 null] +>> endobj +1006 0 obj << +/D [7559 0 R /XYZ 70.866 243.719 null] +>> endobj +7520 0 obj << +/D [7559 0 R /XYZ 70.866 189.053 null] +>> endobj +1010 0 obj << +/D [7559 0 R /XYZ 70.866 171.673 null] +>> endobj +7537 0 obj << +/D [7559 0 R /XYZ 70.866 129.07 null] +>> endobj +1014 0 obj << +/D [7559 0 R /XYZ 70.866 111.69 null] +>> endobj +7521 0 obj << +/D [7559 0 R /XYZ 70.866 68.871 null] +>> endobj +7558 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7582 0 obj << +/Length 1829 +/Filter /FlateDecode +>> +stream +xYYo8~$ KQw]ͅi6.EYfbmd+QM~gxpcH$3n,jLFCϊH5BJ ˜&30B3^;/R>:ykyKЅc$ dȁIj9YQD"Yb+f֢č#N\X<$[W#8ć}@!'KaxϡiY`zpTUcǷJ 6XM^8gjAj؍{lQky$V%G_O]LQxB B=Z6,{D3Ab0;O@S'ɔ>Þ:7I'ik +nc)BԈa`OeocIpmR"r$7JY-1fMѶdd}\KQJllIfō)I͝B0ľo[EIǁIbE沙*,Uy-DMFz 9 3&ǘ +3),_&:I,oV0[KװA"  }s s"Y<3̖:PfC0^S SLԗz]RA}e% /0r#Q*GPeq>m ^P(Y})XU6Mؿ27Wئh7fQ6¤>3HWUB4W Z]7yO Dl#ᣀ=2EGZ:Hng%(-hl+ebM PGdZ6z]33\BJDf+^ zJ/jE8j<'t9}3ގ{AͣU@}f`. ɴmI:@Jl\ߦX:INXz8cXϵc[؝hs?IiߖY<`6`oهHv].xYp57Ka V,U/1j>nK:oS6^Ϟ i‰^]lgXp)s(tʩ`UY2mK@%axŻX"3:OpR͆䌒 -c{k΀}D.Es~f&C@Ka9 P J}g `-˧ O×C<'䛽z8wGŹJq.§9v\@ltGbyHöG#Nq8$3'*|T_ŋ؆+e:굒^@=TpdE=8o/O\MĀfr~Q x}TUeuZ+fZ,?ɐX@s*,aBB,7qQ39fas&Bv#$~@B3-C c(jZjFx;iK#)ejV + m!;iRP/eв-9"y@ss~m?2 w,^}VxeV|W-!=VjFyuYjKt+LUR2\,? NYۊlļ6ٲss^w悱V&fVƃӷ7iu2 ++BxqXʴmj +endstream +endobj +7581 0 obj << +/Type /Page +/Contents 7582 0 R +/Resources 7580 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7518 0 R +/Annots [ 7562 0 R 7563 0 R 7564 0 R 7565 0 R 7566 0 R 7567 0 R 7568 0 R 7569 0 R 7570 0 R 7571 0 R 7572 0 R 7573 0 R 7574 0 R 7575 0 R 7576 0 R 7577 0 R 7578 0 R 7579 0 R ] +>> endobj +7562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [319.003 663.488 349.409 674.07] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 592.068 178.317 602.543] +/A << /S /GoTo /D (class_event_code_a1ec979abe73b626a2b17b1a2d5db06dd) >> +>> endobj +7564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 563.263 207.224 573.737] +/A << /S /GoTo /D (class_event_code_a9f7e3812d0fea07355c6f4468e3983f3) >> +>> endobj +7565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 534.457 187.803 544.932] +/A << /S /GoTo /D (class_event_code_a7fe212e647bd96d83003bb053b243440) >> +>> endobj +7566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 505.652 164.365 515.92] +/A << /S /GoTo /D (class_event_code_a59dfbd091af6bb7cdc69802c39ea414b) >> +>> endobj +7567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 476.847 176.335 487.321] +/A << /S /GoTo /D (class_event_code_a7f4c65ba232d561a371baa95148b3ee3) >> +>> endobj +7568 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 448.041 184.539 458.516] +/A << /S /GoTo /D (class_event_code_a805b47e96977c416d2c7c34adaa75c2c) >> +>> endobj +7569 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 419.236 199.486 429.71] +/A << /S /GoTo /D (class_event_code_ac3ccf8aec263389580df5634f8788e3a) >> +>> endobj +7570 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 390.43 156.394 400.905] +/A << /S /GoTo /D (class_event_code_a2371306aa8691dbea0f3e05687f2a5d5) >> +>> endobj +7571 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 350.666 163.971 361.14] +/A << /S /GoTo /D (class_event_code_a8764d71552a912c1db73d41c7e4fb01f) >> +>> endobj +7572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 321.753 217.553 332.335] +/A << /S /GoTo /D (class_event_code_a395440a821a6c6400b9df174fb366fa1) >> +>> endobj +7573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 282.096 194.626 292.571] +/A << /S /GoTo /D (class_event_code_a34917fc738d56feff082f993d13e52e6) >> +>> endobj +7574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 242.332 174.56 252.806] +/A << /S /GoTo /D (class_event_code_a7ce7fa1807af9b040e3066ef62a35e6c) >> +>> endobj +7575 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 202.46 221.677 213.042] +/A << /S /GoTo /D (class_event_code_a0058917d1018cde229ae231366e60325) >> +>> endobj +7576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.473 187.26 187.038 196.983] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7577 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 173.762 180.827 184.03] +/A << /S /GoTo /D (class_event_code_a0ab9a45c50351f9fef9cf11ca9c50f10) >> +>> endobj +7578 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.473 158.552 187.038 168.178] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7579 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [319.003 97.454 349.409 108.037] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7583 0 obj << +/D [7581 0 R /XYZ 69.866 801.979 null] +>> endobj +1018 0 obj << +/D [7581 0 R /XYZ 70.866 771.024 null] +>> endobj +7584 0 obj << +/D [7581 0 R /XYZ 70.866 734.301 null] +>> endobj +1022 0 obj << +/D [7581 0 R /XYZ 70.866 716.817 null] +>> endobj +7585 0 obj << +/D [7581 0 R /XYZ 70.866 632.543 null] +>> endobj +1026 0 obj << +/D [7581 0 R /XYZ 70.866 143.237 null] +>> endobj +7580 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7606 0 obj << +/Length 1556 +/Filter /FlateDecode +>> +stream +xڵXr6}WpDTHuҙq$y(XdM,qHġ۾Hcq`:Ĺ_.B'8յ ^":ɍk',ZϪL_$ w;VLƱ ġ%KwO_4qȝFE\M~c&gJE}DbN<ztF ![[Lf;g^%Yn{D !3lMgABC/o.R}hGV=VF7HG(qPUZ61]j׆RڲB:%*vBN?N +V* BmE b#tPlgBZb:|0@jF@MwJ,` `K^EژAa@g#.7xga%r2,|2i{3N~FrWtYj+ڇ?,lMPZ_lܣG8F/ynhn[ֳn9uMW%w?NfkO*N+I8 +CUԕ>ccERbDSZYR +zee-}p10azce"1 Ub7)((BF, ϽFqRmrwsV[Uxiy׶*hPGaPټk\%3cMQ 5D<2*_oJq$2VP2t*b8X(*FTܷZx"<6tlH{j;Xq6Cw4}Vjȟc?;TH`_seN@C(-" +fC<B;‰eD_Q+|Ϫ咷:R TehZZoˍ]83=oM((Kf 5q<=_& &:} >O|HcԽe9聮Xy4T\!ÿE5BD vJW$"_=_S_-ѯgo!0 hTڑ_~eZûZ +}gg;i+Zx G|زb_ġ[ bXQujfFUʌ MK$dڵF[1wzɧ i/@ r +endstream +endobj +7605 0 obj << +/Type /Page +/Contents 7606 0 R +/Resources 7604 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7518 0 R +/Annots [ 7600 0 R 7601 0 R 7602 0 R 7603 0 R ] +>> endobj +7600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.007 651.389 156.413 661.863] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7601 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.007 536.338 156.413 546.92] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.612 431.662 157.018 442.244] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.856 419.814 284.729 430.289] +/A << /S /GoTo /D (class_parameter_code_ac3df3792ba12483dfc9b7b1e90fe5817) >> +>> endobj +7607 0 obj << +/D [7605 0 R /XYZ 69.866 801.979 null] +>> endobj +1030 0 obj << +/D [7605 0 R /XYZ 70.866 771.024 null] +>> endobj +7590 0 obj << +/D [7605 0 R /XYZ 70.866 753.893 null] +>> endobj +1034 0 obj << +/D [7605 0 R /XYZ 70.866 753.893 null] +>> endobj +7599 0 obj << +/D [7605 0 R /XYZ 70.866 709.857 null] +>> endobj +1038 0 obj << +/D [7605 0 R /XYZ 70.866 694.668 null] +>> endobj +7592 0 obj << +/D [7605 0 R /XYZ 70.866 652.385 null] +>> endobj +1042 0 obj << +/D [7605 0 R /XYZ 70.866 637.196 null] +>> endobj +7598 0 obj << +/D [7605 0 R /XYZ 70.866 594.806 null] +>> endobj +1046 0 obj << +/D [7605 0 R /XYZ 70.866 579.617 null] +>> endobj +7597 0 obj << +/D [7605 0 R /XYZ 70.866 537.334 null] +>> endobj +1050 0 obj << +/D [7605 0 R /XYZ 70.866 522.145 null] +>> endobj +7586 0 obj << +/D [7605 0 R /XYZ 70.866 368.185 null] +>> endobj +1054 0 obj << +/D [7605 0 R /XYZ 70.866 352.996 null] +>> endobj +7587 0 obj << +/D [7605 0 R /XYZ 70.866 310.821 null] +>> endobj +1058 0 obj << +/D [7605 0 R /XYZ 70.866 295.632 null] +>> endobj +7593 0 obj << +/D [7605 0 R /XYZ 70.866 253.242 null] +>> endobj +1062 0 obj << +/D [7605 0 R /XYZ 70.866 238.053 null] +>> endobj +7594 0 obj << +/D [7605 0 R /XYZ 70.866 183.922 null] +>> endobj +1066 0 obj << +/D [7605 0 R /XYZ 70.866 168.733 null] +>> endobj +7591 0 obj << +/D [7605 0 R /XYZ 70.866 126.343 null] +>> endobj +1070 0 obj << +/D [7605 0 R /XYZ 70.866 111.154 null] +>> endobj +7589 0 obj << +/D [7605 0 R /XYZ 70.866 68.871 null] +>> endobj +7604 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7630 0 obj << +/Length 1852 +/Filter /FlateDecode +>> +stream +xZKs6W9Q3:t8\ YSLuxQ$ĉ@\~.v +s?&'gD8\c23BdEA`c +lcfdp䄑yZeQ+HfC$4&ë[\]XGH Ƽwp< lD,EVxF\^!#qd܊ ADž)9sB-{<˱l{8Bf 0‰#_BQf04S9qPإzq[#cxVGr鿑 u |%idHb GC7a ]d|XJ_gt.tq+r. ΁0|XR'fL(~d8{Bȹ~<#)gOj3L$؁F!0{ +;#Ljx:a L7TB z >yd⤜*壐%v$Jb|*[ :|6]˽re^UӂsFqۓ"uanWLY@m'1gT)~x~TvnbEU(*v |S>يp9'ъ.NGn3<ꄜ$>a:m@4`h(v. JDbR|!7ѥZ[ H#d{\ g*mGޛ FOIg//&8j(E7,lns$b.XAAح8I֔hߡf;R{2&):KT=nJjV-~ͺ)CjFI kG!UL%=#@.:aLX0W[>'ɟJE&x&:YYY,:󲎱&b*I l>VImJLUzFdvIuV2βrN#nS.)e/Eo<$4=S()P? }u*C\qr[d=7k^kMվ<5_@(<~ 2T|SosZ@=$Ņ8w5Gy9f20zEᏠh/#Mllj+rqM O2H-/KouOxK}wrl[Jmd,}y"U<F]@Y(8r!:}I'm6Z6Ĝ%J% +X&;SJYr  laTNE,(1ZLnAsuyKYn\sJD +Z aR^ߺ#k?9hWJ{~-v{ hw$H+{+j7tJL79QJbԵ^uX9.\gkY֧0xgKy >g#Z}C+rF\XNxo>sJ()TChLZ6^ũ@/z:;|g}C+5v$^bBXVs]r&e_ +endstream +endobj +7629 0 obj << +/Type /Page +/Contents 7630 0 R +/Resources 7628 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7634 0 R +/Annots [ 7609 0 R 7610 0 R 7611 0 R 7612 0 R 7613 0 R 7614 0 R 7615 0 R 7616 0 R 7617 0 R 7618 0 R 7619 0 R 7620 0 R 7621 0 R 7622 0 R 7623 0 R 7624 0 R 7625 0 R 7626 0 R ] +>> endobj +7609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.873 410.958 276.196 421.433] +/A << /S /GoTo /D (class_extensions_ac26ac025c1ad77aebc61385abb9a0aa0) >> +>> endobj +7610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 397.93 167.853 408.512] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +7611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.445 397.93 283.898 408.512] +/A << /S /GoTo /D (class_extensions_abd9afd41c4e0ce06bc3b49c04bed4523) >> +>> endobj +7612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 385.009 167.853 395.591] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +7613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.353 385.009 232.463 395.591] +/A << /S /GoTo /D (class_extensions_a32cd3eb67b60887a800ecbc88ed7f121) >> +>> endobj +7614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 372.088 194.438 382.67] +/A << /S /GoTo /D (class_extensions_a35fba37c30e813d78f40fbb4b88dca33) >> +>> endobj +7615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 344.254 194.438 354.836] +/A << /S /GoTo /D (class_extensions_a0d7e1279d0951869d76856a5ea84e7f3) >> +>> endobj +7616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 316.42 194.438 327.002] +/A << /S /GoTo /D (class_extensions_a7ce33f2b493f18ef1d30ffd06a249517) >> +>> endobj +7617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 288.586 194.438 299.168] +/A << /S /GoTo /D (class_extensions_a740813774fff222b8d4a4f23f2fa2326) >> +>> endobj +7618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 260.752 164.311 271.334] +/A << /S /GoTo /D (class_extensions_a6b5d90a1ed678d74548f4ce759b47043) >> +>> endobj +7619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 232.918 207.26 243.5] +/A << /S /GoTo /D (class_extensions_ac37ceea048b52ed7df7dc2dc3ea49c04) >> +>> endobj +7620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.745 205.083 192.124 215.666] +/A << /S /GoTo /D (class_extensions_a646282c077a078cdaeab9184809c2e76) >> +>> endobj +7621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.745 177.249 192.124 187.832] +/A << /S /GoTo /D (class_extensions_a1b7b71e82ac4afff238c3cf8cc5e54b0) >> +>> endobj +7622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 149.415 160.375 159.997] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +7623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.875 149.415 233.773 159.997] +/A << /S /GoTo /D (class_extensions_a59cc48f36f7bf9a0ae0f8efefff91a74) >> +>> endobj +7624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 121.581 237.018 132.163] +/A << /S /GoTo /D (class_extensions_a733a7e102e781cf0879e96d535bbd2d8) >> +>> endobj +7625 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [356.288 106.867 383.853 116.591] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7626 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 82.788 175.008 93.37] +/A << /S /GoTo /D (class_extensions_ac89906aaca1f1603398873874d981417) >> +>> endobj +7631 0 obj << +/D [7629 0 R /XYZ 69.866 801.979 null] +>> endobj +1074 0 obj << +/D [7629 0 R /XYZ 70.866 771.024 null] +>> endobj +7595 0 obj << +/D [7629 0 R /XYZ 70.866 734.408 null] +>> endobj +1078 0 obj << +/D [7629 0 R /XYZ 70.866 719.196 null] +>> endobj +7588 0 obj << +/D [7629 0 R /XYZ 70.866 664.958 null] +>> endobj +1082 0 obj << +/D [7629 0 R /XYZ 70.866 649.747 null] +>> endobj +7596 0 obj << +/D [7629 0 R /XYZ 70.866 607.464 null] +>> endobj +1086 0 obj << +/D [7629 0 R /XYZ 70.866 592.252 null] +>> endobj +7632 0 obj << +/D [7629 0 R /XYZ 70.866 538.014 null] +>> endobj +1090 0 obj << +/D [7629 0 R /XYZ 70.866 521.63 null] +>> endobj +7633 0 obj << +/D [7629 0 R /XYZ 70.866 450.733 null] +>> endobj +7628 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7651 0 obj << +/Length 1930 +/Filter /FlateDecode +>> +stream +xYKs6WHTi;:&3iTɁa E:$U7CJ*+ql"hŏG$JEHb$)E ytK<{x %^YTInte]QWf SqDzJ!Ey\\Q^FTEwv&! 2bbDGE#)d(5ؿy !ULex}uMq=#"v3B$`5RiTFWs! jQJ ǟGRL^߹cްoÌW[f7~ +7Y1Ϛ3Izܰ7Y}A k&»OΚxYϵ{ +J{bdV)>.!z 0@<7 {՛g(4 /ގSфCSfӀ(d=V"J?2a*zT"q*;f׺3d@ׅQ $gdL|uODCCFj,.D5Z4*x5Mn[qSj~uAAP΢:=̎m2C ?Ip'窙c'~ +P轀Bi(k4o[9s[bBķe;+F*_3l +fma, P>L-V.EA+z{.2S˄}t.m7A Gϴ : yLp8@9ۮ՞(TN +GGʟ@ s&$dd v|Hs&m[ +% J1};"€\x|" zĈO#Ѝ lHZo@ S)!ᄑ@uًA8R*ƣ:紩L{[UR:xڣ谝-쾝9JF8~wMHz|kRxu҉-x*7MB@88ZyܙyqWP@Lh{!~a|2GB(ԧ".LkzYOC-4ΰI}Sy\ B'ZdԤQD^hӞu=Pؑ`++zs OOUQH`_?VfKU2y6T=V{\eYBaW &-N?EW.@1b}XQ/,*\Crgw 'HdIOYj2Lk`>2Uh1lMl} +y7~RWShyN\}[mu{g+}S\LiGJqnnbN wP3$ +f$s]Y{뭿B$-$lꯜ͞nlClfR}U'jW)I* +endstream +endobj +7650 0 obj << +/Type /Page +/Contents 7651 0 R +/Resources 7649 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7634 0 R +/Annots [ 7627 0 R ] +>> endobj +7627 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.194 723.323 258.93 733.797] +/A << /S /GoTo /D (class_extensions_a7d1d7b0427c24c20a65ea55d51faecd5) >> +>> endobj +7652 0 obj << +/D [7650 0 R /XYZ 69.866 801.979 null] +>> endobj +7653 0 obj << +/D [7650 0 R /XYZ 70.866 775.009 null] +>> endobj +1094 0 obj << +/D [7650 0 R /XYZ 70.866 709.149 null] +>> endobj +1098 0 obj << +/D [7650 0 R /XYZ 70.866 649.596 null] +>> endobj +7638 0 obj << +/D [7650 0 R /XYZ 70.866 624.806 null] +>> endobj +1102 0 obj << +/D [7650 0 R /XYZ 70.866 624.806 null] +>> endobj +7639 0 obj << +/D [7650 0 R /XYZ 70.866 568.707 null] +>> endobj +1106 0 obj << +/D [7650 0 R /XYZ 70.866 553.537 null] +>> endobj +7640 0 obj << +/D [7650 0 R /XYZ 70.866 499.299 null] +>> endobj +1110 0 obj << +/D [7650 0 R /XYZ 70.866 484.129 null] +>> endobj +7641 0 obj << +/D [7650 0 R /XYZ 70.866 441.847 null] +>> endobj +1114 0 obj << +/D [7650 0 R /XYZ 70.866 426.677 null] +>> endobj +7648 0 obj << +/D [7650 0 R /XYZ 70.866 384.501 null] +>> endobj +1118 0 obj << +/D [7650 0 R /XYZ 70.866 369.331 null] +>> endobj +7635 0 obj << +/D [7650 0 R /XYZ 70.866 202.294 null] +>> endobj +1122 0 obj << +/D [7650 0 R /XYZ 70.866 187.124 null] +>> endobj +7637 0 obj << +/D [7650 0 R /XYZ 70.866 162.605 null] +>> endobj +1126 0 obj << +/D [7650 0 R /XYZ 70.866 162.605 null] +>> endobj +7636 0 obj << +/D [7650 0 R /XYZ 70.866 137.807 null] +>> endobj +1130 0 obj << +/D [7650 0 R /XYZ 70.866 137.807 null] +>> endobj +7642 0 obj << +/D [7650 0 R /XYZ 70.866 113.149 null] +>> endobj +1134 0 obj << +/D [7650 0 R /XYZ 70.866 113.149 null] +>> endobj +7649 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F82 5877 0 R /F115 6693 0 R /F95 6017 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7658 0 obj << +/Length 1838 +/Filter /FlateDecode +>> +stream +xZ[wF~ׯohw oiMO|Xi\?`i-HYvA@$FegfV/(y[/( "$s BREz\35~8gH TRNGi! +)f5죇BZa\ [yG:Ra=HpGc1~kU|L_T"{-aCDo l K" V> VFD 1APO Uvw8̢b IxT&If%E' n<.՘uab7D@a1#!¶3Yq| HR[#Aei'i.gUo e7Mt "8y?EƑ"CpQDxB0~Qe2,O;E ,so /,@(/׎ca@ +2@/KWByqJ$ GNo M gaHq|"fQ$AVeXpeAt0!Pz#');٭MMasp3\kFKZ l]qܨ~Պ̾uC_6]:EV L'K^07Mv&,ͻӝe1`D+-Snel+)y x%@p$Eq{^v7Ϥ܍fVBMP(@q0=TݟmͯlMbmWs*9/r엫~N|םkA|/"#^@H.ߓS^S&bZ18j 烥6"IUc$|:X>nI,(LzG̚MVsچWYl`['0;%VNA3<6yWB2+qTvFjJ0έծsf\XP4\^9i*LTދV]^"@8mڞ3&:%?@ xHQӈ-!WFuմw ȟi@/;߸mmd܌UWH~X 6i,|sppԅt1 /7L=j."-(͐Oӱ~ģ! +œ9$8u2U/R.y}Iiv8{V"um^ݜST.Am,۟*ҝj,+'˪ts5n͓{GBX~<$h= 3Vg I[U!o:(@K@^`sMO1HfUnMpF) j!D[<8 !'YZZOmG"D1s)L-EEBPBPA{"9=xBWxA~YUxXzءJ5f"?Iҝc-ÂbdjW˜iK`#]2m|kLE1$CQ.1 +"#2!JG1E2;rOT'lmٛuT;>b8NHhD1#@ b;_wpÁ09.@o5+@4eu/Stb6NF2N A-c $ϒ=g $JU.\Կ8H{%t=IiwBwfٷfOnZ_y~ߋ{w\7 +endstream +endobj +7657 0 obj << +/Type /Page +/Contents 7658 0 R +/Resources 7656 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7634 0 R +/Annots [ 7655 0 R ] +>> endobj +7655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.037 529.605 370.444 540.187] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7659 0 obj << +/D [7657 0 R /XYZ 69.866 801.979 null] +>> endobj +7643 0 obj << +/D [7657 0 R /XYZ 70.866 721.901 null] +>> endobj +1138 0 obj << +/D [7657 0 R /XYZ 70.866 707.235 null] +>> endobj +7647 0 obj << +/D [7657 0 R /XYZ 70.866 589.545 null] +>> endobj +1142 0 obj << +/D [7657 0 R /XYZ 70.866 574.879 null] +>> endobj +7646 0 obj << +/D [7657 0 R /XYZ 70.866 475.211 null] +>> endobj +1146 0 obj << +/D [7657 0 R /XYZ 70.866 460.545 null] +>> endobj +7644 0 obj << +/D [7657 0 R /XYZ 70.866 309.328 null] +>> endobj +1150 0 obj << +/D [7657 0 R /XYZ 70.866 294.662 null] +>> endobj +7645 0 obj << +/D [7657 0 R /XYZ 70.866 145.439 null] +>> endobj +1154 0 obj << +/D [7657 0 R /XYZ 70.866 130.773 null] +>> endobj +7656 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7668 0 obj << +/Length 1364 +/Filter /FlateDecode +>> +stream +xX[s6~0(@vl&i<~ؐnߣC}dӑ`jxtqNgDŜ;QB'xL܈z7'Q_WiUy>bs1߬E^uVrxTFd|=Lo$v^̵PX9FĈ29 :4c߭GC7-ӵEV +9ƈa% ̙a@G&(Z`2<0AڞEZ}FP Z!NYW#}Ӂ.fy=>FA0A!(?3 +[!=)pjwޔy7sǔ"of'y^~%^RV즵XU]z> ˟L(,otԣTrQ +=@Y]! є+jWs\XifQbuYV(bGKqQ-Jz nnfU6׾i&Wy8Rat +P:k/Vn4~Y>=r#(̎pdtx#FCh8TY"B[gtqP;),ʠmi=hCETKu߬I;+~_vvT(G;N±_CXuzL'Zݯ)+Ł%ռ^z Z'*7с2tQm]MP4jAu/)w6B48Sc3A"& A !w흛Hj"U ڮ^*<]>e]Xp +Бq3Àg+:88tS.h»'Գ o:5-:dZripF dߒ vm% đ1 +"s{5tGsnWh$wej~>{YJʬLI?U"(NlNeQUCo:[s)\h: +>"> endobj +7660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 490.103 188.914 500.686] +/A << /S /GoTo /D (class_friend_info_a33b6ef199b025fda1898b8063f43b713) >> +>> endobj +7661 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 426.892 145.231 437.268] +/A << /S /GoTo /D (class_friend_info_a9126b3a854a21d428ad1af0eda981bfd) >> +>> endobj +7662 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 412.995 149.096 423.116] +/A << /S /GoTo /D (class_friend_info_a62a8cc42bf1e25a3f8d2fdf7adbedeb3) >> +>> endobj +7663 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 398.176 145.231 408.552] +/A << /S /GoTo /D (class_friend_info_a40b0b66eced3c5d88c29f6a7409d1315) >> +>> endobj +7664 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 384.278 154.574 394.193] +/A << /S /GoTo /D (class_friend_info_abe22fa87b796bce51e9250c46464e057) >> +>> endobj +7669 0 obj << +/D [7667 0 R /XYZ 69.866 801.979 null] +>> endobj +1158 0 obj << +/D [7667 0 R /XYZ 70.866 671.574 null] +>> endobj +7654 0 obj << +/D [7667 0 R /XYZ 70.866 646.121 null] +>> endobj +1162 0 obj << +/D [7667 0 R /XYZ 70.866 646.121 null] +>> endobj +7670 0 obj << +/D [7667 0 R /XYZ 70.866 607.124 null] +>> endobj +1166 0 obj << +/D [7667 0 R /XYZ 70.866 607.124 null] +>> endobj +7671 0 obj << +/D [7667 0 R /XYZ 70.866 532.085 null] +>> endobj +7672 0 obj << +/D [7667 0 R /XYZ 70.866 468.874 null] +>> endobj +1170 0 obj << +/D [7667 0 R /XYZ 70.866 366.723 null] +>> endobj +1174 0 obj << +/D [7667 0 R /XYZ 70.866 304.585 null] +>> endobj +7673 0 obj << +/D [7667 0 R /XYZ 70.866 277.321 null] +>> endobj +1178 0 obj << +/D [7667 0 R /XYZ 70.866 277.321 null] +>> endobj +1182 0 obj << +/D [7667 0 R /XYZ 70.866 250.14 null] +>> endobj +7674 0 obj << +/D [7667 0 R /XYZ 70.866 222.595 null] +>> endobj +1186 0 obj << +/D [7667 0 R /XYZ 70.866 222.595 null] +>> endobj +7675 0 obj << +/D [7667 0 R /XYZ 70.866 197.968 null] +>> endobj +1190 0 obj << +/D [7667 0 R /XYZ 70.866 197.968 null] +>> endobj +7676 0 obj << +/D [7667 0 R /XYZ 70.866 172.647 null] +>> endobj +1194 0 obj << +/D [7667 0 R /XYZ 70.866 172.647 null] +>> endobj +7677 0 obj << +/D [7667 0 R /XYZ 70.866 146.866 null] +>> endobj +1198 0 obj << +/D [7667 0 R /XYZ 70.866 146.866 null] +>> endobj +7678 0 obj << +/D [7667 0 R /XYZ 70.866 121.545 null] +>> endobj +1202 0 obj << +/D [7667 0 R /XYZ 70.866 121.545 null] +>> endobj +7666 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F82 5877 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7693 0 obj << +/Length 1897 +/Filter /FlateDecode +>> +stream +xYKWF+tXb4z.%],Ȓ#{<14pBX{$ y f8vb[gb;8^[k9riѪćQ̳\DAv5 ]>&Jc";3|9:Bg"-J +쨟'^A (,P?P|4͵nAڕE "坆Jsq8rmE+OXUk_|&Ի`0}@ + UAC]<c%@Y(4\RUf|t܎W<լLWh0AidY̑ϵQoZr(b4K=Hk^ΪԬك{Bk}Q]e*tʧH4~n?bV[v6n֘xjy|l0tWc*< ,n%!uzb׮hme X.* ^q}a .i*{%(,^r_z_+~ c(wz)5 וJ) v\b<>+|2N q]p.͞ZZخ + B*Br%sO/ZE¡e:E|j_:*@swpξ]fLSLYm+~%#@"5λj )"V`*Dļ:e +@|ub #R96;? +~ +ZYZ h Z^|Fzt1E{*$Sݰ +=*f(G&7xgfeQ]$05ppWl?vL:;τNlANX5,ϳ7ïRrN4;uank ҩCFm*[bC1^L%Wԍ՜Qo_?qک:Cjg=q4zymسCSrУ 06=/ U3vWimVȋ-LɣЫEIƙVz.3pFZ~sa@X郙hK5yrԷ%ԁV*72L\w@<4j+e:=7k/zMe͖˚%/k䪑R_?+a꿁v2aʱ6 +U +cq2.رS]X/]nJYs۱NDNL_a߼СQw' !򜗬_/j8(7%qC!)5ڻX|Z kcD?*&=b +endstream +endobj +7692 0 obj << +/Type /Page +/Contents 7693 0 R +/Resources 7691 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7634 0 R +/Annots [ 7665 0 R 7679 0 R 7680 0 R 7681 0 R 7682 0 R 7683 0 R 7684 0 R 7685 0 R 7686 0 R 7687 0 R 7688 0 R 7689 0 R 7690 0 R ] +>> endobj +7665 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 735.824 178.272 746.407] +/A << /S /GoTo /D (class_game_object_extensions_a2452ee61f765d9c4fbc27bf409666392) >> +>> endobj +7679 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.905 472.289 462.312 482.872] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 404.025 186.333 414.294] +/A << /S /GoTo /D (class_game_property_key_ade2fa0e08b62cc99f3a18b2baaa095c5) >> +>> endobj +7681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 377.588 173.152 387.856] +/A << /S /GoTo /D (class_game_property_key_aa8d61743bfc509faa8260341ca3e5cc2) >> +>> endobj +7682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 351.15 168.857 361.625] +/A << /S /GoTo /D (class_game_property_key_aa4161fbfcb2e11e18a9a5e08096d5ac0) >> +>> endobj +7683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 324.713 188.834 335.187] +/A << /S /GoTo /D (class_game_property_key_ab502d2822a156527d8e8a1dcf8938848) >> +>> endobj +7684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 298.275 177.958 308.543] +/A << /S /GoTo /D (class_game_property_key_a9cfd46c08dabfee0a0650e54c38dd41d) >> +>> endobj +7685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 271.837 218.925 282.106] +/A << /S /GoTo /D (class_game_property_key_a24becd835a58abe1cbd1267607526f94) >> +>> endobj +7686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.378 257.811 319.111 267.437] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +7687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 234.441 235.145 244.915] +/A << /S /GoTo /D (class_game_property_key_a79f4c70a196de29329f4c190da9b389c) >> +>> endobj +7688 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 208.003 197.746 218.478] +/A << /S /GoTo /D (class_game_property_key_afb02ab4aae7ce3f39f4cf0ee5bc9b9c0) >> +>> endobj +7689 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 170.607 200.741 181.081] +/A << /S /GoTo /D (class_game_property_key_af08d8a2181d2b416c408403b1496ed52) >> +>> endobj +7690 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.905 97.454 462.312 108.037] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7694 0 obj << +/D [7692 0 R /XYZ 69.866 801.979 null] +>> endobj +7695 0 obj << +/D [7692 0 R /XYZ 70.866 775.009 null] +>> endobj +1206 0 obj << +/D [7692 0 R /XYZ 70.866 708.348 null] +>> endobj +1210 0 obj << +/D [7692 0 R /XYZ 70.866 649.329 null] +>> endobj +7696 0 obj << +/D [7692 0 R /XYZ 70.866 624.431 null] +>> endobj +1214 0 obj << +/D [7692 0 R /XYZ 70.866 624.431 null] +>> endobj +7697 0 obj << +/D [7692 0 R /XYZ 70.866 534.814 null] +>> endobj +1218 0 obj << +/D [7692 0 R /XYZ 70.866 525.405 null] +>> endobj +7698 0 obj << +/D [7692 0 R /XYZ 70.866 443.102 null] +>> endobj +1222 0 obj << +/D [7692 0 R /XYZ 70.866 142.925 null] +>> endobj +7691 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7714 0 obj << +/Length 1450 +/Filter /FlateDecode +>> +stream +xڽXKs6Wp|"gb LxƉ(!Ɂ` I(|DV~}wHY+WӋŷO:wu.FOG_šq։)Iȉ>3;8L_;AHpNNiS?N3uڴeۈ)u؆e}B9v( ƉREџ#jԤ8*8֠"j'%NԽLԠmjf/QbDS032Y5?w׭.R\׸$ vǘ+gE%Brf0.ĻHphY.Eހ܂2tKrIc\搡) OwA~0""$y9$k$fhx@@g m xZBplU"jM0_ -Mg&;yWR5(`@P΁ܟ12摾֨vQv|>LȆYL"h'i~h æEB`mD;Ӓ\Oj7Uf`-߷,H|[FGrkHXx|_M9?8y?Mn^?_.R')6uthA:"/sɓ!voz7}Xf? +sN!hިrY3fzS/qT +x5Ve,SW!IMϢ͊7xNQ$[ aL ܘ݃ t:DI;=Z@DPWOrW.-=ܰltSnʦ OtQF.;ةǰPv힀f7 gj Vjm"u2? V1n +$[Z-ک!"Qʩ&z)j]q@zM_xݩxUx]XH0>|7z9`e>u[r;4A>0%P 204sTXgg` . 'upgQ[ؚa)v7!?䋐`?B٣(I{_JtљVq=Ef%xA0mE>TZߊvɶ~DI;WTfH +endstream +endobj +7713 0 obj << +/Type /Page +/Contents 7714 0 R +/Resources 7712 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7634 0 R +/Annots [ 7708 0 R 7709 0 R 7710 0 R 7711 0 R ] +>> endobj +7708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.64 428.955 263.622 439.537] +/A << /S /GoTo /D (class_parameter_code_ad05db066ac86d9670539d1ec1cb9ef55) >> +>> endobj +7709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [259.009 242.56 299.601 253.034] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +7710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 67.983 159.55 78.457] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_g_u_i_1_1_gizmo_type_drawer_a9a9c702995c512168fae27aefc07f666) >> +>> endobj +7711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.163 67.983 271.915 78.457] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65) >> +>> endobj +7715 0 obj << +/D [7713 0 R /XYZ 69.866 801.979 null] +>> endobj +1226 0 obj << +/D [7713 0 R /XYZ 70.866 771.024 null] +>> endobj +7705 0 obj << +/D [7713 0 R /XYZ 70.866 753.118 null] +>> endobj +1230 0 obj << +/D [7713 0 R /XYZ 70.866 753.118 null] +>> endobj +7707 0 obj << +/D [7713 0 R /XYZ 70.866 708.309 null] +>> endobj +1234 0 obj << +/D [7713 0 R /XYZ 70.866 689.198 null] +>> endobj +7701 0 obj << +/D [7713 0 R /XYZ 70.866 646.033 null] +>> endobj +1238 0 obj << +/D [7713 0 R /XYZ 70.866 626.923 null] +>> endobj +7700 0 obj << +/D [7713 0 R /XYZ 70.866 583.974 null] +>> endobj +1242 0 obj << +/D [7713 0 R /XYZ 70.866 564.863 null] +>> endobj +7706 0 obj << +/D [7713 0 R /XYZ 70.866 521.806 null] +>> endobj +1246 0 obj << +/D [7713 0 R /XYZ 70.866 502.695 null] +>> endobj +7699 0 obj << +/D [7713 0 R /XYZ 265.119 431.946 null] +>> endobj +1250 0 obj << +/D [7713 0 R /XYZ 70.866 410.84 null] +>> endobj +7702 0 obj << +/D [7713 0 R /XYZ 70.866 367.891 null] +>> endobj +1254 0 obj << +/D [7713 0 R /XYZ 70.866 348.78 null] +>> endobj +7704 0 obj << +/D [7713 0 R /XYZ 70.866 305.724 null] +>> endobj +1258 0 obj << +/D [7713 0 R /XYZ 70.866 286.613 null] +>> endobj +7703 0 obj << +/D [7713 0 R /XYZ 70.866 231.601 null] +>> endobj +1262 0 obj << +/D [7713 0 R /XYZ 70.866 212.49 null] +>> endobj +6748 0 obj << +/D [7713 0 R /XYZ 70.866 169.326 null] +>> endobj +1266 0 obj << +/D [7713 0 R /XYZ 70.866 149.042 null] +>> endobj +7716 0 obj << +/D [7713 0 R /XYZ 70.866 110.207 null] +>> endobj +7712 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7741 0 obj << +/Length 2033 +/Filter /FlateDecode +>> +stream +xYM{FWpD]-7m즎܋+a8ί'vC/bYf{&'ǯBϊP5_Y!FQXa저XԺ# #7WWoI0t5%ئ5-tay.CH/v'/瓏"(BYRxG֭Z<,M`=F/blq-QAט ĈLgcl`ٯbɳPw҂'rK(?.Uܹ[3Cu`2KŝodK:3ή^˶OȾiL oA]@V1{}Xvǯ;90M\ +~{(p"CZfx *0uCCzRe=-ACZe%Yp#cLOB.ZT$®cEV DLG|5#~U?|-qb`ρ+FtKOή]9N_?!b/9VNUoruWԕoZ4ղfZ\u%_M@tЏ ǫ"3}(<{45jb hS,o @D<;[Ll7)m$ @DZ xq-:GCzȏ5Ҽm\|45 # +;:4ΎB"Pc!*w<3u-iۂ)IT*e::fD+%t,oP# pSfLquҙP (,6Y7_Ee py݈6-zO~6uQJM ;:e=09$iM yѠ]<灲C7:$jM8- μ},Sb[1t4ԔkWA֨ +/X$JjU@Pd-gsPM `_N"[0|hҚuH?2I*Kأ&;` X%bň$Wf(uf7Fu˭Z1jڼhTkѦ2XdJ?BfieJ-U}Dc#؞cI=~'eÉȅ~7jՓGH-e]S/+bR7j>P>"𜩇 ~V]eĽܫPV \[ʌ~6.qnz2^:}|u IW_D{,`7ׅEY}Ђmr8̺*f\(Y|cڒ5R8Rn>%\MmӽwGyL{HySf\؟~"[24t ߠ烫3,iA|=pJjA|uu0 ^`윢> >'_P~n/i)> endobj +7719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.343 662.41 265.703 672.992] +/A << /S /GoTo /D (class_help_u_r_l) >> +>> endobj +7720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 587.503 133.136 598.085] +/A << /S /GoTo /D (class_help_u_r_l_a05ccd7cc690df9533724d2c7cc8419d8) >> +>> endobj +7721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.343 528.253 265.703 538.836] +/A << /S /GoTo /D (class_help_u_r_l) >> +>> endobj +7722 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 511.09 597.89 520.988] +/Subtype/Link/A<> +>> endobj +7723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.773 392.441 180.702 402.916] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [135.341 380.486 179.188 390.961] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 323.095 168.848 333.678] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_ae4c3e779b7761f6a254231b9775fabcf) >> +>> endobj +7726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 295.873 181.76 306.347] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a601455f328ead10ff4b8be9a30698170) >> +>> endobj +7727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 268.543 170.803 279.017] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_af843b2308e71621bedf3d8ee060eb1cc) >> +>> endobj +7728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 255.603 131.568 263.696] +/A << /S /GoTo /D (namespace_exit_games_1_1_client) >> +>> endobj +7729 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 241.105 198.715 251.687] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_aafb9a56eee22abe2c728d643629e8c28) >> +>> endobj +7730 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.2 241.105 244.066 251.687] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19) >> +>> endobj +7731 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.097 226.643 164.758 236.366] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7732 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 213.775 182.755 224.357] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a84ca1d0eee402e737803930a6ee6ec73) >> +>> endobj +7733 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 164.527 191.631 175.109] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a40b8c46d27d74b519f0fa34abd6fb81a) >> +>> endobj +7734 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 137.197 172.426 147.779] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a4dae08c2527025369671d13d8d67853e) >> +>> endobj +7735 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 109.866 182.387 120.449] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a9e1b1dd69f646b62d2958f9c49db2630) >> +>> endobj +7736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 82.536 181.769 93.118] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_aa2165bd3e01be72b48d2cd1f7b7a94e9) >> +>> endobj +7742 0 obj << +/D [7740 0 R /XYZ 69.866 801.979 null] +>> endobj +1270 0 obj << +/D [7740 0 R /XYZ 70.866 771.024 null] +>> endobj +7718 0 obj << +/D [7740 0 R /XYZ 70.866 753.893 null] +>> endobj +1274 0 obj << +/D [7740 0 R /XYZ 70.866 753.893 null] +>> endobj +7743 0 obj << +/D [7740 0 R /XYZ 70.866 716.318 null] +>> endobj +1278 0 obj << +/D [7740 0 R /XYZ 70.866 716.318 null] +>> endobj +7744 0 obj << +/D [7740 0 R /XYZ 70.866 627.134 null] +>> endobj +1282 0 obj << +/D [7740 0 R /XYZ 70.866 573.525 null] +>> endobj +1286 0 obj << +/D [7740 0 R /XYZ 70.866 497.112 null] +>> endobj +7745 0 obj << +/D [7740 0 R /XYZ 70.866 471.861 null] +>> endobj +1290 0 obj << +/D [7740 0 R /XYZ 70.866 471.861 null] +>> endobj +6837 0 obj << +/D [7740 0 R /XYZ 70.866 445.342 null] +>> endobj +1294 0 obj << +/D [7740 0 R /XYZ 70.866 445.342 null] +>> endobj +7746 0 obj << +/D [7740 0 R /XYZ 70.866 362.726 null] +>> endobj +7739 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7759 0 obj << +/Length 2027 +/Filter /FlateDecode +>> +stream +xڽYIFW6{qӻZ%L<  =haO"$ˆRUuW[7nfΞxP,% n#%eIܮa$o$HE oo/h"mu^'uVvRRHQqoX>!mn {51ܚK4 Fe_kPj+D "׺N^UZfNVγ, ʑʯ8nI:8wY^npڼb}*J,\{;7I=l߳0f`FǻVzNDHyIITXU.Y^޽)S9dY4^b[%zB_5UȖb,Btٕds͵p Ș[k;ViW5 nM;@&HJ/upS OJ;'ާ9X<~7ɽ[7z)"GG{̪Z&W!KcfVM ">ݟ Ddޭ+1:?S<˸UUɜpm L SѷXYuc/ۭC +V k@38wnٲ4%vν{Իϛh֛!ED <|^~QkuNx;9t9#r9:dam@1)~ Tr$E9x{mCGPbߏ _>}%4,gP12vy젋HQd +۹TuS?zs;=̥EmFC&1@q-0&y}KķλZg>+U*+ˑxrF/HNzDaJec4a>runVgU]`dfAʱ3k,O̔0|v55sskPNS#F#,89ђv"SiDXM1_0)/|γ?'(:6WS1tK\}u3A0T?:cjLIy vM&_+,]M4D=9 {[TFI",:d`{%2^qAU}mv%"r7iQ73/lk;؇c"d.ZdBĺڜݮ6Ā-<;X?d_{Qm1& A8;i/w>~M wpad=ѥ)_-t-ٓu> endobj +7737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.773 733.519 180.702 743.994] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +7738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [135.341 721.564 179.188 732.038] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [87.811 521.976 131.658 532.558] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +7756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 420.834 94.78 429.605] +/A << /S /GoTo /D (namespace_exit_games_1_1_client) >> +>> endobj +7760 0 obj << +/D [7758 0 R /XYZ 69.866 801.979 null] +>> endobj +1298 0 obj << +/D [7758 0 R /XYZ 70.866 771.024 null] +>> endobj +1302 0 obj << +/D [7758 0 R /XYZ 70.866 707.32 null] +>> endobj +7260 0 obj << +/D [7758 0 R /XYZ 70.866 682.422 null] +>> endobj +1306 0 obj << +/D [7758 0 R /XYZ 70.866 682.422 null] +>> endobj +7750 0 obj << +/D [7758 0 R /XYZ 70.866 582.49 null] +>> endobj +1310 0 obj << +/D [7758 0 R /XYZ 70.866 567.25 null] +>> endobj +7749 0 obj << +/D [7758 0 R /XYZ 70.866 479.538 null] +>> endobj +1314 0 obj << +/D [7758 0 R /XYZ 70.866 464.297 null] +>> endobj +7748 0 obj << +/D [7758 0 R /XYZ 510.416 404.39 null] +>> endobj +1318 0 obj << +/D [7758 0 R /XYZ 70.866 387.155 null] +>> endobj +7751 0 obj << +/D [7758 0 R /XYZ 70.866 344.98 null] +>> endobj +1322 0 obj << +/D [7758 0 R /XYZ 70.866 329.739 null] +>> endobj +7752 0 obj << +/D [7758 0 R /XYZ 70.866 183.341 null] +>> endobj +1326 0 obj << +/D [7758 0 R /XYZ 70.866 168.101 null] +>> endobj +7757 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F115 6693 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7767 0 obj << +/Length 2370 +/Filter /FlateDecode +>> +stream +xZK6ϯ`DUyӷ7v9gq.q-ۍEJԬNE@"MZ$XvhJR(ΒO!O6M"_.kXiѴX6ej=rկW\1M2.o %5ɣJ̈ɇ_`?%\bq6lFJ? iWX=a,meQ䨅Rf6V)=P%-8`27#"lU0)$|DVIF0jl_Dq9Ti@CqQR(w}%g`@2|%J extp@hLl#DA,Nd !`^$SfXv +cJ\[J, ;ȫXg)rIFw]nf!3T+EV "ǚc6ޏyP;+HB3`lƏdޖ&"|yS2V|Zm`SM`|w4L!t1Vد1SVY>, d41Y1>w'mI?6x&ě8SsEKߩ-sqBNH H*~}vK9h4 5&Ҁ2ay<S\|@;sA;6QE1Yj[u)F&ܭ>:Ȭ;'+N +N zπi`5r1J(A!q}Qjtvi1 !~ ~;P 64]XKPZ\*r7HcHXX';}@D/"H )f5$# Ǫi $cIlF Y1a#3qЙW'!h%\l12RhQ*%Ge?el#3LtFQBGg1:/tvt& %G=i<ā>A0C(iퟁ"6l[x;Y3^c3;mn:hl/#h1Gsv6NEْɋ^~m9 XNst9P}ٹ]Eu]wGӧn nr+?AԵMG..rE.\EǏ\aG`9 9_ +6:)4Ίϔm|z`´ao}gͰǷ|E?C*O>;e@{ŕZf]pnz賱_ zfrݬ%jn acu޿J>>.ĿQUH`/Z?pn6wzwxSa妚"Pw? jI 0Ϝ%1=9wՋ_7 ]Bu ?+u"\+ѿ_7WHFxt7,BP%{Ns"["qlC}[WۼF^Yq&k\ +endstream +endobj +7766 0 obj << +/Type /Page +/Contents 7767 0 R +/Resources 7765 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7747 0 R +/Annots [ 7761 0 R 7762 0 R ] +>> endobj +7761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.166 127.294 208.202 137.563] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour) >> +>> endobj +7762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 67.983 208.605 78.457] +/A << /S /GoTo /D (interface_i_pun_callbacks_aa9014980a1dc2d9befc6129668c890a2) >> +>> endobj +7768 0 obj << +/D [7766 0 R /XYZ 69.866 801.979 null] +>> endobj +7754 0 obj << +/D [7766 0 R /XYZ 70.866 697.592 null] +>> endobj +1330 0 obj << +/D [7766 0 R /XYZ 70.866 681.441 null] +>> endobj +7753 0 obj << +/D [7766 0 R /XYZ 70.866 532.575 null] +>> endobj +1334 0 obj << +/D [7766 0 R /XYZ 70.866 516.423 null] +>> endobj +7241 0 obj << +/D [7766 0 R /XYZ 70.866 374.748 null] +>> endobj +1338 0 obj << +/D [7766 0 R /XYZ 70.866 358.597 null] +>> endobj +6382 0 obj << +/D [7766 0 R /XYZ 70.866 229.275 null] +>> endobj +1342 0 obj << +/D [7766 0 R /XYZ 70.866 211.952 null] +>> endobj +7769 0 obj << +/D [7766 0 R /XYZ 70.866 108.357 null] +>> endobj +7765 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7824 0 obj << +/Length 2312 +/Filter /FlateDecode +>> +stream +x[Ks6WR3C)v:i:M&i\[99$l1w %RqR=G$>AƝa/~]==cnEA[#yaXX${3O>,^n0 ɧ+ soV!V `ف:ZٞMDsE[YM3%V`]ǘl+#5OJ ++^Px+5i.ABdYiI=pاc9 9Pmq>DKW~Օ}[lʯϳvuWQx!Y`j X+|_Bs5>b1Mg^.E%ˌI,9DZ{SІD6fNEt6;7EQ\+3F9+?I`j#/4ץ~xE_Myw`!ٗr?uh:-۞g.֬@VúOi:oE!sàBs˒ݩ_+hmiSCl@H@O dUp A#ߎy1&]=/4YZHP: @5vYv|E cֺ z$q0~ߤh CF?\'=J)rW9j +|Eu)N) KK 1OiU 0;9(NN NSt~'UD]!˳is`<~ Yz\L|o/ Ut.q:XdU`=FDWd42ybOq^GX~"?nˉhN8 蹆0=a0VW@1:-b,YWmC}49Ĺ棎tN1w:\ٽewGwxB&^%,RHoU*ؗ94ۗ.t&^*\We~^@V֦J 2͒=_uq2NJRKtp+K R̡4vKa ]BswxmVWރj`WUk%dl}.A{g%mx:ncw;Q,($E_jQ,UU<]ۿ+! (* +Ӵc yLw(uiI"4j~gE'Q?".ʢ@7^WJjx( C. Tl/C\/BFQJFc>,!cǮ?+~'uoؿqBov}D+Ѽ;󛲎 *>AF*Z 2fSsD#n;v[sݴm{u:'`SVc)qY5xydפrMxU -W>lǐV};_IE@aq}@i[D^16"VrVnJ^t9P^鑮y%҇Ce?|n R@ymXvk @\oHVWo5+هk\遚9V҉y> endobj +7763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.372 758.269 493.017 767.992] +/A << /S /GoTo /D (interface_i_pun_callbacks_affec2831a07b42447ac47919104c608e) >> +>> endobj +7764 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [504.905 758.269 525.406 767.992] +/A << /S /GoTo /D (interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) >> +>> endobj +7826 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 747.407 188.451 757.034] +/A << /S /GoTo /D (interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) >> +>> endobj +7771 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 734.402 166.311 744.876] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac6d7fe9f1dfe9aec1562c262a90f7d5b) >> +>> endobj +7772 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 706.776 214.137 717.25] +/A << /S /GoTo /D (interface_i_pun_callbacks_abee2c86784a9a700b9f5b4073bd00be7) >> +>> endobj +7773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.622 706.776 272.991 717.25] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 679.042 230.643 689.624] +/A << /S /GoTo /D (interface_i_pun_callbacks_a523ce991e9a0dcde1b57b13e4e3db38c) >> +>> endobj +7775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.322 664.432 215.427 674.155] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da942b62b9b9c5fa148dfe59f3488d4d08) >> +>> endobj +7776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.789 664.432 380.998 674.155] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +7777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 651.416 220.18 661.998] +/A << /S /GoTo /D (interface_i_pun_callbacks_ad56f84b6647d2e61d273db297deb08b1) >> +>> endobj +7778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.322 636.806 206.01 646.529] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da5988ddff3f148ce684fbbdb8f68896c1) >> +>> endobj +7779 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.372 636.806 371.581 646.529] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +7780 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 623.897 183.248 634.372] +/A << /S /GoTo /D (interface_i_pun_callbacks_a5d06d8035078d422f08b0c72c97ab136) >> +>> endobj +7781 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [302.344 609.277 365.771 618.903] +/A << /S /GoTo /D (interface_i_pun_callbacks_a113daf6c35e118aff8daa5537d8c1c6c) >> +>> endobj +7782 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 596.271 178.012 606.746] +/A << /S /GoTo /D (interface_i_pun_callbacks_affec2831a07b42447ac47919104c608e) >> +>> endobj +7783 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.504 581.554 523.162 591.277] +/A << /S /GoTo /D (interface_i_pun_callbacks_ad3e808558f778aec6b12e950d9632506) >> +>> endobj +7784 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 568.645 166.553 579.12] +/A << /S /GoTo /D (interface_i_pun_callbacks_a74de405ce9dff20613c31ce891090f49) >> +>> endobj +7785 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 541.019 231.989 551.494] +/A << /S /GoTo /D (interface_i_pun_callbacks_a12268b49cbab2203f8b664c7bef4655a) >> +>> endobj +7786 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.474 541.019 307.726 551.494] +/A << /S /GoTo /D (group__public_api_gad61b1461cf60ad9e8d86923d111d5cc9) >> +>> endobj +7787 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.556 526.398 243.121 536.025] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7788 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [504.905 526.398 525.406 536.025] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) >> +>> endobj +7827 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 515.439 209.238 525.066] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) >> +>> endobj +7789 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 502.434 186.79 512.909] +/A << /S /GoTo /D (interface_i_pun_callbacks_a49f4cfb7c0e2c51ec71b8f52c7413b31) >> +>> endobj +7790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.276 502.434 262.528 512.909] +/A << /S /GoTo /D (group__public_api_gad61b1461cf60ad9e8d86923d111d5cc9) >> +>> endobj +7791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [456.02 487.717 525.406 497.44] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) >> +>> endobj +7828 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 476.854 160.352 486.481] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) >> +>> endobj +7792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 463.849 230.688 474.324] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) >> +>> endobj +7793 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.876 449.132 263.441 458.855] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7794 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 436.115 197.226 446.697] +/A << /S /GoTo /D (interface_i_pun_callbacks_a28ef052b776a594b305b08d7e80b6df3) >> +>> endobj +7795 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.712 436.115 282.181 446.697] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +7796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.087 421.505 515.759 431.229] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +7797 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 408.597 231.361 419.071] +/A << /S /GoTo /D (interface_i_pun_callbacks_ad3e808558f778aec6b12e950d9632506) >> +>> endobj +7798 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.755 393.879 416.012 403.603] +/A << /S /GoTo /D (class_photon_network_a8ad64b1a76c7918bbe5642639afff458) >> +>> endobj +7799 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 380.971 177.77 391.445] +/A << /S /GoTo /D (interface_i_pun_callbacks_a113daf6c35e118aff8daa5537d8c1c6c) >> +>> endobj +7800 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 353.345 224.179 363.819] +/A << /S /GoTo /D (interface_i_pun_callbacks_a14eede4f84e088008e59fe63efb8775d) >> +>> endobj +7801 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.665 353.345 283.033 363.819] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7802 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.447 338.724 347.477 348.35] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7803 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 325.718 235.136 336.193] +/A << /S /GoTo /D (interface_i_pun_callbacks_aa200001beb114a07eac4b9442e2b793e) >> +>> endobj +7804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.621 325.718 293.99 336.193] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.847 311.098 330.878 320.724] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7806 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 297.985 230.15 308.567] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac0d022a7c6abd23f0039efec687eb0dc) >> +>> endobj +7807 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.345 283.375 380.555 293.098] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +7808 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 270.466 207.591 280.941] +/A << /S /GoTo /D (interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) >> +>> endobj +7809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.72 255.846 525.406 265.472] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +7829 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 244.887 132.682 254.513] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +7810 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 231.881 229.102 242.356] +/A << /S /GoTo /D (interface_i_pun_callbacks_a445d24c62e4e3d8bbc2cc0d25853d43c) >> +>> endobj +7811 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 204.148 288.26 214.73] +/A << /S /GoTo /D (interface_i_pun_callbacks_a3a210383eb25f1c6f509aaa23c792f6f) >> +>> endobj +7812 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.746 204.148 333.925 214.73] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +7813 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [491.905 189.538 525.406 199.261] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +7830 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 178.676 187.95 188.302] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +7814 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 165.563 258.421 176.145] +/A << /S /GoTo /D (interface_i_pun_callbacks_aa6d84e9c68f93825fb3bf453d6f5ca1b) >> +>> endobj +7815 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 138.044 200.427 148.519] +/A << /S /GoTo /D (interface_i_pun_callbacks_a5dd5d351e76698a0b6665064f6282baa) >> +>> endobj +7816 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.71 123.423 482.812 133.05] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +7817 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 110.31 238.848 120.893] +/A << /S /GoTo /D (interface_i_pun_callbacks_a9b55ef4a99252e1a9a111a3f88b61e1d) >> +>> endobj +7818 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 82.684 255.247 93.266] +/A << /S /GoTo /D (interface_i_pun_callbacks_af7c05722b8d15402bdb1a4e08850d989) >> +>> endobj +7825 0 obj << +/D [7823 0 R /XYZ 69.866 801.979 null] +>> endobj +7822 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7874 0 obj << +/Length 2513 +/Filter /FlateDecode +>> +stream +xZYsF~ׯ> +܇+Jɵ2TH !E  -}`3}}=m OoV3"ۊЈ +cr܍b^eLk5]K3nئESǮ%7g.ξ9m8^qlŮodm#7myIl< +|ƥ?g:=KrđekAr݀N?3>̃ 4gn`"WkxzxKT(uV4[Y5be1F5m!(jΈ~t!cI¸&1wˍc rfDk<[՞HjB|%Z/*}0C0,9S'7$Slj|BӠlR4kc6| *K[3S +BYQ*ir'18RQ,3 ָO٨5wP#Z_=nu+4CZ#擽Zɥ8WE@UJZ ]pIR!zf-IA$w>0Vu,PSj+xY +*qX?,G +xy1ȹNR1+:+dNɭ~Q k/]4EJ#u5J?R@-NpYX:ĻwA||zFx.;ockd&)ٿT_ `qq{Mp -FЋ +k~y;qwp^ڽngBֲr GP)_`m.[[꿙n$]uD~DJ9@Al3 ԉBw#Kvh:7?k'jYnH +(eu +}g||WEh9xmAe0. /O jhA<Es ^n8u/PZƟsF,) ӮP}&}1ёDW3ٕ9d$mn'խ=5U* 3'>b;R#I4> endobj +7819 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 758.177 201.916 768.652] +/A << /S /GoTo /D (interface_i_pun_callbacks_aae3221aa2d3b999574fc55a6aaee2877) >> +>> endobj +7820 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 729.594 203.682 740.068] +/A << /S /GoTo /D (interface_i_pun_callbacks_a02364f5144b6305bbffc886d530b7bd2) >> +>> endobj +7821 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [296.801 714.494 341.692 724.121] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +7854 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 701.01 216.378 711.485] +/A << /S /GoTo /D (interface_i_pun_callbacks_a6922987e083f414d05464403e3b94bce) >> +>> endobj +7855 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.347 685.814 509.812 695.537] +/A << /S /GoTo /D (class_photon_network_abdced09cccf61ae817cb97705ffce137) >> +>> endobj +7856 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [352.153 583.592 411.269 594.175] +/A << /S /GoTo /D (interface_i_pun_callbacks) >> +>> endobj +7857 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.227 566.076 525.406 576.55] +/A << /S /GoTo /D (interface_i_pun_callbacks_aa9014980a1dc2d9befc6129668c890a2) >> +>> endobj +7876 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 554.013 206.024 564.595] +/A << /S /GoTo /D (interface_i_pun_callbacks_aa9014980a1dc2d9befc6129668c890a2) >> +>> endobj +7858 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.817 496.665 180.963 505.436] +/A << /S /GoTo /D (interface_i_pun_observable) >> +>> endobj +7859 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.947 409.654 525.406 420.128] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +7877 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 397.698 96.017 408.173] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +7860 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.568 380.074 232.438 390.549] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +7861 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [263.342 380.074 333.836 390.549] +/A << /S /GoTo /D (interface_i_pun_callbacks_affec2831a07b42447ac47919104c608e) >> +>> endobj +7862 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 332.87 222.692 343.138] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) >> +>> endobj +7863 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.463 274.268 490.957 284.85] +/A << /S /GoTo /D (interface_i_pun_callbacks_affec2831a07b42447ac47919104c608e) >> +>> endobj +7864 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [503.709 274.268 525.406 284.85] +/A << /S /GoTo /D (interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) >> +>> endobj +7878 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 262.42 157.983 272.895] +/A << /S /GoTo /D (interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) >> +>> endobj +7865 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.715 232.84 238.186 243.315] +/A << /S /GoTo /D (interface_i_pun_callbacks_a12268b49cbab2203f8b664c7bef4655a) >> +>> endobj +7866 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.134 232.84 379.305 243.315] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) >> +>> endobj +7867 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 215.216 140.364 225.691] +/A << /S /GoTo /D (interface_i_pun_callbacks_affec2831a07b42447ac47919104c608e) >> +>> endobj +7868 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.328 215.216 251.402 225.691] +/A << /S /GoTo /D (interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) >> +>> endobj +7869 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 168.012 222.692 178.28] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_addc4f79164cd22c37d330b5ee2e340c7) >> +>> endobj +7870 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [503.709 109.41 525.406 119.992] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) >> +>> endobj +7879 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 97.562 181.08 108.037] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) >> +>> endobj +7875 0 obj << +/D [7873 0 R /XYZ 69.866 801.979 null] +>> endobj +1346 0 obj << +/D [7873 0 R /XYZ 70.866 670.76 null] +>> endobj +1350 0 obj << +/D [7873 0 R /XYZ 70.866 481.611 null] +>> endobj +7832 0 obj << +/D [7873 0 R /XYZ 70.866 454.847 null] +>> endobj +1354 0 obj << +/D [7873 0 R /XYZ 70.866 454.847 null] +>> endobj +7770 0 obj << +/D [7873 0 R /XYZ 70.866 333.866 null] +>> endobj +1358 0 obj << +/D [7873 0 R /XYZ 70.866 317.816 null] +>> endobj +7843 0 obj << +/D [7873 0 R /XYZ 70.866 169.008 null] +>> endobj +1362 0 obj << +/D [7873 0 R /XYZ 70.866 152.958 null] +>> endobj +7872 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F106 6377 0 R /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7902 0 obj << +/Length 2459 +/Filter /FlateDecode +>> +stream +xYoF_Vp8 kK]iVZ"U.ynpޙDvq͇\g닯o/.oI:|Ή]D=I6s>.w[ǏHbW2fdq]^jĽ^|!aȞd t'` +8v B_Q8_g܎7C_91C\[f ]kSK]'ښ? 8ר5Ď|OȸӘ<` T^rKo+U.edĻ +PU{Zz84G{„(wtIf]E1J/5%F^xX~,ޕo$YPYyQɍfvF+f~)݅. +{(*c XYoXpO^)׋>U.OwOg~}+JUM q{G +P$?AL/=0۝F0]M%㬮]U:E4&{0  +:Tq4vLy٩U-ɧDdL^i^RC8QO`UK/đ94ufW# \ɑ7D1ioM-U%̏pږFYiHSrXg< ++U\^yto!7u'T>R=d_鱃Z=TX5?HO4kASnp \zTQ92!`vLoPv6F!Plo'bpA<]|Jʨ75[҂ NTEQ*8 sq՝WHdO:-k5 е]6bIبA_KC +i4[k K:+,u~шq oj*&՞U+.%$9Eִ8W,uK]`+KG/xGkpVl_G ++U&S)2S)F;c?[=NccUg lHXkPF3_TۭU٦e`w#U6(CY.;gݴI:S=~!5GBD' j:k@+/G"zXVfTC8b!Fx8ԫK8xoiq<_fBgV ϡ`YHEsACUk]綢n775hLzqgw@sͿ!TP @0)o:oNfQ3'˵g$({Ja#Fg6͛ :Uyzp,:f&g٥kh+'6-LӬYW;#8"il6?ICxU`q-=h^ezoOBSo <]k6Ȃ-Xn};HCaetrh70 ʆiwpk6D(3IȢ28N['22[Ub7,jtx/N 9Pcu4J;ii{]R ++< 6 ;#Hmxehv3hntF<:m ! M̺7(TX V`=vDcANH?Biq G]<'d?iQyP!rZ j"ѮieV`." LeU)%_LpH)΢6WGΟ?9^}8]퉻cs\5>K]݅z9R |"qI 6nefFs$Ժ ;ѡ žm^QJ$5EJ %ŨD =CzݞՌIIoV7Vyz}ґ;!,8OLCGv#]ˉ'uD+ZTk\~ $vMW^HPe"|w>5$FvZ6"+Hs4m#:̜8i7 );=w{r9dEtxwi[kɎEgi}`Nȓ`Ɠ~rA@w`G‹ZI8JG֥2vmk@\u_QW 0O}<+}y +endstream +endobj +7901 0 obj << +/Type /Page +/Contents 7902 0 R +/Resources 7900 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7747 0 R +/Annots [ 7871 0 R 7885 0 R 7886 0 R 7887 0 R 7888 0 R 7889 0 R 7890 0 R 7891 0 R 7892 0 R 7893 0 R 7894 0 R 7895 0 R 7904 0 R 7896 0 R 7897 0 R 7898 0 R 7899 0 R ] +>> endobj +7871 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 758.177 222.692 768.446] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a44be8bdd38ea28a1f540d38aede43bde) >> +>> endobj +7885 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [284.753 701.348 355.006 711.823] +/A << /S /GoTo /D (interface_i_pun_callbacks_a113daf6c35e118aff8daa5537d8c1c6c) >> +>> endobj +7886 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.785 683.724 453.428 694.198] +/A << /S /GoTo /D (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74) >> +>> endobj +7887 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.99 636.412 496.609 646.994] +/A << /S /GoTo /D (interface_i_pun_callbacks_abee2c86784a9a700b9f5b4073bd00be7) >> +>> endobj +7888 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 606.94 222.692 617.208] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a67049b5cdc50467f4790aca093c34e82) >> +>> endobj +7889 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.169 520.531 228.663 531.006] +/A << /S /GoTo /D (interface_i_pun_callbacks_affec2831a07b42447ac47919104c608e) >> +>> endobj +7890 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.627 520.531 339.701 531.006] +/A << /S /GoTo /D (interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) >> +>> endobj +7891 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [346.593 473.327 402.384 483.802] +/Subtype/Link/A<> +>> endobj +7892 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 403.993 222.692 414.261] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ade038a534b66b6d9a5faad53e21e22c9) >> +>> endobj +7893 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 240.8 222.692 251.069] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a8a96aacb06c73f7cb25fe798ce01529a) >> +>> endobj +7894 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.899 183.863 241.305 194.446] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7895 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [458.358 166.347 525.406 176.821] +/A << /S /GoTo /D (interface_i_pun_callbacks_a49f4cfb7c0e2c51ec71b8f52c7413b31) >> +>> endobj +7904 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 154.391 91.83 164.866] +/A << /S /GoTo /D (interface_i_pun_callbacks_a49f4cfb7c0e2c51ec71b8f52c7413b31) >> +>> endobj +7896 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.778 154.391 234.249 164.866] +/A << /S /GoTo /D (interface_i_pun_callbacks_a12268b49cbab2203f8b664c7bef4655a) >> +>> endobj +7897 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 136.767 222.692 147.035] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) >> +>> endobj +7898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.24 79.938 224.646 90.412] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7899 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 67.983 193.041 78.457] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) >> +>> endobj +7903 0 obj << +/D [7901 0 R /XYZ 69.866 801.979 null] +>> endobj +7837 0 obj << +/D [7901 0 R /XYZ 70.866 759.174 null] +>> endobj +1366 0 obj << +/D [7901 0 R /XYZ 70.866 744.627 null] +>> endobj +7852 0 obj << +/D [7901 0 R /XYZ 70.866 607.936 null] +>> endobj +1370 0 obj << +/D [7901 0 R /XYZ 70.866 593.39 null] +>> endobj +7853 0 obj << +/D [7901 0 R /XYZ 70.866 404.989 null] +>> endobj +1374 0 obj << +/D [7901 0 R /XYZ 70.866 390.442 null] +>> endobj +7842 0 obj << +/D [7901 0 R /XYZ 70.866 241.797 null] +>> endobj +1378 0 obj << +/D [7901 0 R /XYZ 70.866 227.25 null] +>> endobj +7841 0 obj << +/D [7901 0 R /XYZ 70.866 137.763 null] +>> endobj +1382 0 obj << +/D [7901 0 R /XYZ 70.866 123.217 null] +>> endobj +7900 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F106 6377 0 R /F82 5877 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7932 0 obj << +/Length 2050 +/Filter /FlateDecode +>> +stream +xYK6Wr Ue orٙq@5E̒No7C3IsGw@]]|N8pnwN¼4dͽwn 狛z/WsE#j +Xr7ܾ_r{^ic@uCW(>eYnq"\}=" =tM7FAvQ{آV'rq([ &u5kv>TA$Y\<{FhqOEIk).$N쭓 Ea䥰Y+w2ZXsfE &j]O!h3X"T1q3-ʏBݣ]$YuJ"L>L5v?CS!hplQ.},䏜R'!ǭ ᱟM" 8IGTsa+ry4q!D3q Bۡk1@1``wO*fVZPW$RuY%*4 +ZX!k2TvmLKvD/P3z(!,?)٢ 43F2pǽP%-w}P 8XY~e=3%\k٠72i> p=hӂ6_#!?c` g?X* 'mt@bU 2Ϋ)ioĎ=M=e|"(AԷcOFiv0Ju5J*4pWe+H5GrX"Ȼ-ȌtY;eK3Րʊ5>V=QA5P.6s ${(05?boGK:kDNb6hو jJ`k[ +Y2 +zld%-`<iAi#SC[}6K,Oe>LSeH*^Xbw"Aw  >` GyMIpuL( .SEmdW"$„ky:ebΆ>?3l#l1EClԎ SYrF vYJݭ9IR:/.D0DUUAesl0 +g'cRU(nRcj sBGeAYWgi;b8"ڨWl%RKY,vnڂdnȨݫilWg- gͣ}!" 6y +:ׄوZ'7TQnA1bK@ITb.YoH[rw՘(m +;>+#xk At[}m\B2mzͰRA[qDo%D?p^t&7x;9e]6ھ"ۉ8,z:_m `:cX_̽ IahKGѨlx9 ~ 3-)Ig%^ʟ1=SyqlJoE-L>L3tǏ̏HWalC0B0R諃^8:,aPu^'6/ +endstream +endobj +7931 0 obj << +/Type /Page +/Contents 7932 0 R +/Resources 7930 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7935 0 R +/Annots [ 7910 0 R 7911 0 R 7934 0 R 7912 0 R 7913 0 R 7914 0 R 7915 0 R 7916 0 R 7917 0 R 7918 0 R 7919 0 R 7920 0 R 7921 0 R 7922 0 R 7923 0 R 7924 0 R 7925 0 R 7926 0 R 7927 0 R 7928 0 R 7929 0 R ] +>> endobj +7910 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 728.598 222.692 738.866] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a03bc6b8a9fffa6a7e7b43ff793ad2b28) >> +>> endobj +7911 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.698 669.577 525.406 680.159] +/A << /S /GoTo /D (interface_i_pun_callbacks_ad3e808558f778aec6b12e950d9632506) >> +>> endobj +7934 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 657.729 106.741 668.204] +/A << /S /GoTo /D (interface_i_pun_callbacks_ad3e808558f778aec6b12e950d9632506) >> +>> endobj +7912 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [120.878 640.105 244.748 650.579] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +7913 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.364 640.105 378.438 650.579] +/A << /S /GoTo /D (interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) >> +>> endobj +7914 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.521 598.462 274.364 609.045] +/A << /S /GoTo /D (interface_i_pun_callbacks_ad3e808558f778aec6b12e950d9632506) >> +>> endobj +7915 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.649 598.462 411.144 609.045] +/A << /S /GoTo /D (interface_i_pun_callbacks_affec2831a07b42447ac47919104c608e) >> +>> endobj +7916 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 580.946 222.692 591.214] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a17686ad2c9bfdf6e64b8883792c81fee) >> +>> endobj +7917 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [82.333 492.345 119.204 502.927] +/A << /S /GoTo /D (class_photon_view_ad288db13a15d581e0f7c5886f4036720) >> +>> endobj +7918 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.172 474.721 522.913 485.096] +/A << /S /GoTo /D (class_photon_network_a2dc5e6cba79f899d9952f804db35b2f3) >> +>> endobj +7919 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.059 462.873 404.573 473.348] +/A << /S /GoTo /D (class_room_info_a928b103a3e88d2c090152440aa6fa874) >> +>> endobj +7920 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [438.495 462.873 514.782 473.348] +/A << /S /GoTo /D (class_room_aa9d85e54b2ff1b151de3670e87549966) >> +>> endobj +7921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 433.293 222.692 443.562] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a8ee05dd443b9e51ddf962e655ca8ab77) >> +>> endobj +7922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.794 356.755 221.607 367.23] +/A << /S /GoTo /D (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74) >> +>> endobj +7923 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.555 356.755 315.788 367.23] +/A << /S /GoTo /D (class_photon_network_aa9a112ccaaf71a296b823e9637584445) >> +>> endobj +7924 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 339.131 222.692 349.399] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a0c64cd0591992e70393d719e07e09f6f) >> +>> endobj +7925 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [99.629 250.53 170.123 261.113] +/A << /S /GoTo /D (interface_i_pun_callbacks_affec2831a07b42447ac47919104c608e) >> +>> endobj +7926 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.087 250.53 281.161 261.113] +/A << /S /GoTo /D (interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) >> +>> endobj +7927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 233.014 222.692 243.282] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a4e9e2aebcfa279a2eec0020f0e44b57a) >> +>> endobj +7928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.2 173.992 515.052 184.575] +/A << /S /GoTo /D (class_photon_network_abdced09cccf61ae817cb97705ffce137) >> +>> endobj +7929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 126.896 222.692 137.164] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a945651c506d001121aa81e4fc8010a42) >> +>> endobj +7933 0 obj << +/D [7931 0 R /XYZ 69.866 801.979 null] +>> endobj +7831 0 obj << +/D [7931 0 R /XYZ 70.866 729.594 null] +>> endobj +1386 0 obj << +/D [7931 0 R /XYZ 70.866 713.195 null] +>> endobj +7838 0 obj << +/D [7931 0 R /XYZ 70.866 581.942 null] +>> endobj +1390 0 obj << +/D [7931 0 R /XYZ 70.866 565.543 null] +>> endobj +7840 0 obj << +/D [7931 0 R /XYZ 70.866 434.29 null] +>> endobj +1394 0 obj << +/D [7931 0 R /XYZ 70.866 417.891 null] +>> endobj +7833 0 obj << +/D [7931 0 R /XYZ 70.866 340.127 null] +>> endobj +1398 0 obj << +/D [7931 0 R /XYZ 70.866 323.728 null] +>> endobj +7882 0 obj << +/D [7931 0 R /XYZ 70.866 234.01 null] +>> endobj +1402 0 obj << +/D [7931 0 R /XYZ 70.866 217.611 null] +>> endobj +7834 0 obj << +/D [7931 0 R /XYZ 70.866 127.892 null] +>> endobj +1406 0 obj << +/D [7931 0 R /XYZ 70.866 111.493 null] +>> endobj +7930 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7966 0 obj << +/Length 2009 +/Filter /FlateDecode +>> +stream +xYs4_7*$Yc` +WzCrWx)}p1vZ߳v4 Oeyw +.UaVM<@~srE'Di@_l^5||RsHn<[-{K>OӔSP~vyWY 0F04FSqQg""=s:Lfk]՝ۻw_.˦,^-S!+וAWH$Zs 'R ;/390<5f|BCMo 0c~ߩJ NAC:=ٟj\M7(W ;bp.L!e{2 mO0$If0e=3 EEHxqU +g1{Qf]Ek%֭;mU )-@6hb`2a :~wVhb)`E=/dEjZ~Y?)鍵k}a__tbD Yq7fb)S JRX%1FsI*J Z@0JH"]4ഩFeGXIV h2A#eɂvds- ^^nsӅT=% |\,mh %lYYFJzMk|fh n1z^.DE}7ʠrYw~*=!Fm' Շl^?VUYƸRuީ 6 /Jlʠ94235O׵jblVheV`bҒ`ZtخO-KصnA"-N ~jw9a뭳M##Q#L~VH)m):cA\*@y`o͑~!rF\yћ]Ԗ{D$㣑\Ah Br8z$CCB"d4VgƑx-:/)*A0J-Dm 5LZU}6 +2fG3Fㄆ-@Gne{LMS(MۢSZ/t/Wcx9ClW.kư@W˴q^|}q^Pt_]7QztDY55L@qSKA|/>b!umo'fϢlf.yvA5|.ࠟۄN^^8QG(>俘y XQXCU(]y@q#C",.lQ> endobj +7942 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 728.598 222.692 738.866] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a53833ef0f9be9906694fc600acc1b897) >> +>> endobj +7943 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.594 667.596 328.251 678.071] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +7944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 632.348 119.527 642.616] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +7945 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.091 632.348 280.748 642.616] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +7946 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 614.616 125.238 624.992] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7947 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.875 614.616 341.243 624.992] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7948 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.57 578.952 224.227 590.92] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +7949 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 557.236 222.692 567.504] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a943727ed00dbd38afc4b7d16c9c3454d) >> +>> endobj +7950 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.172 496.127 187.957 506.709] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da942b62b9b9c5fa148dfe59f3488d4d08) >> +>> endobj +7951 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [328.58 496.127 371.925 506.709] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +7952 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.801 466.547 190.521 477.13] +/A << /S /GoTo /D (class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) >> +>> endobj +7953 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.167 430.884 296.512 443.058] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +7954 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 409.168 222.692 419.436] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a9fb00e512c59fa60c0a95e0d6e4dbe89) >> +>> endobj +7955 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 336.211 183.832 346.686] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +7956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.963 306.524 335.926 317.106] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +7957 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 237.189 222.692 247.458] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_abf25d63a39ef13cb9a0519e6e7672a2f) >> +>> endobj +7958 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.467 176.08 521.66 186.663] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +7959 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 158.456 151.339 169.038] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +7960 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 128.984 222.692 139.252] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a2f6b448cd6a97e4281d543196872d29a) >> +>> endobj +7961 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.172 67.875 177.493 78.457] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da5988ddff3f148ce684fbbdb8f68896c1) >> +>> endobj +7962 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.117 67.875 361.462 78.457] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +7967 0 obj << +/D [7965 0 R /XYZ 69.866 801.979 null] +>> endobj +7881 0 obj << +/D [7965 0 R /XYZ 70.866 729.594 null] +>> endobj +1410 0 obj << +/D [7965 0 R /XYZ 70.866 711.455 null] +>> endobj +7835 0 obj << +/D [7965 0 R /XYZ 70.866 558.232 null] +>> endobj +1414 0 obj << +/D [7965 0 R /XYZ 70.866 540.093 null] +>> endobj +7849 0 obj << +/D [7965 0 R /XYZ 70.866 410.164 null] +>> endobj +1418 0 obj << +/D [7965 0 R /XYZ 70.866 392.025 null] +>> endobj +7844 0 obj << +/D [7965 0 R /XYZ 70.866 238.186 null] +>> endobj +1422 0 obj << +/D [7965 0 R /XYZ 70.866 220.047 null] +>> endobj +7836 0 obj << +/D [7965 0 R /XYZ 70.866 129.98 null] +>> endobj +1426 0 obj << +/D [7965 0 R /XYZ 70.866 111.841 null] +>> endobj +7964 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F115 6693 0 R /F106 6377 0 R /F82 5877 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7975 0 obj << +/Length 520 +/Filter /FlateDecode +>> +stream +xڕSMs Wp!BimO2iMb#[c_`QF.vBHMY +!rT$X +ʊaAQATbƲ Vvy_i#~fm6kGfjPڛr"%Ke=wɷ:Pכ KJ,YևdLy%)DPs̋=H^}_PL:hB}Uo0fW7&ی;`Q1Rd9IvSd>KǾ/hq91{wJNJ!ݚѪ6g3GWb˧Hv]P+a5cӡ "Ak'ϹAc>O܂XX]@ty#LxhI1# >C[qY)S6q+CUo|tt?9}$Y)! 'օjhfAֻ#(j + "Z+Bj|tПtgϠJBؾ[xC_pgU?Z%z +endstream +endobj +7974 0 obj << +/Type /Page +/Contents 7975 0 R +/Resources 7973 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7935 0 R +/Annots [ 7963 0 R ] +>> endobj +7963 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.893 746.115 231.613 756.697] +/A << /S /GoTo /D (class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) >> +>> endobj +7976 0 obj << +/D [7974 0 R /XYZ 69.866 801.979 null] +>> endobj +7973 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7994 0 obj << +/Length 2123 +/Filter /FlateDecode +>> +stream +xYo8_*Rz͵)lhE(75 mYI+D#~ 7C9VAxu}o4(2ϓzL`Z(g" tr{K,* 3Fh="|Fkڋ7`4gYQӠ\~ ()άiDY"?.bf I|8sP:H OCщe7a,F3rT,XEē+xĂEqӔG1hX͢$4,Ώ/xeNǩB.չYƢ4-+<)dlZu4{k^T[Y޿n̺7]9킸 bCA=aYX+Xξn*:7Mh0yl<fpxIv NjSϛm#1c>썫U]Wr-Ќk ɠ7H8L8hd8Fx gi梚+?跖Ty'̪j^4\K8N%Hf=x +_d%vZ %*VC;jMmP5f Ab +fo1+:PDvg^䟲"' @EQb N; 3x(e_Ho-[j<pFp,7j۝ž-F f1ef?' 2_hCVeN&Xx& h|4I$ip6Gnw phi y>0}$ċv5QDv?<o{\dO;- Q$pԗ^ $uetk +Yx$Q݋3m2k0X^#+R:`)\A~! 6qlFhv5=EQk]E1wݯYKzz3h]'9|Ȓ" dycʌ? \.>4롅Ѵ,eTC-=²Sa0vev2>H:⯲7XOQ#))W}̈4PٯՂhպYB EWLӁ.s9A%t;L l@dV4JuĺDf<%ۆ@Y]oWS4 ;wWGyQ3|~l~~o׿fuZ5vohn1k= 6c\4[H@&:jȍi][/|POA3Wу` sS1Ľq镚Q`u+-ĦYi~Fȿ 9?=">=}:Dnؚ?b ,,(u;H&-2-pV/Gڄd7ҩyTv<=Q!/^D嘕>4*S~rp0EM"Lroe+;[ׯ]m54 l1H2_miʻ 4i\쓇u@g: +("Cv7 +endstream +endobj +7993 0 obj << +/Type /Page +/Contents 7994 0 R +/Resources 7992 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7935 0 R +/Annots [ 7977 0 R 7978 0 R 7979 0 R 7980 0 R 7981 0 R 7982 0 R 7983 0 R 7984 0 R 7985 0 R 7986 0 R 7987 0 R 7988 0 R 7989 0 R 7990 0 R 7991 0 R ] +>> endobj +7977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.167 741.029 296.512 753.203] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +7978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 719.313 222.692 729.582] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ac808cb2ed21bbbe52a0d33f4d927644e) >> +>> endobj +7979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.016 620.148 267.422 630.73] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7980 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.951 620.148 349.357 630.73] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +7981 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 590.676 222.692 600.944] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_adcef9694244295ad493bc4ec0b4463d4) >> +>> endobj +7982 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.311 533.153 334.679 543.627] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7983 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.909 515.421 508.196 526.003] +/A << /S /GoTo /D (class_room_aa9d85e54b2ff1b151de3670e87549966) >> +>> endobj +7984 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 485.949 222.692 496.217] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_abfe94f562c7abc261b25b0df95852a17) >> +>> endobj +7985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [260.867 428.426 316.236 438.9] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7986 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 381.222 222.692 391.49] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_af2f8ef712d9942f861f3357bb548e937) >> +>> endobj +7987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.38 294.119 195.748 304.594] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7988 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.963 222.897 364.94 233.479] +/A << /S /GoTo /D (class_photon_player_af8815abb8edaafbe6bddbf328f9612fb) >> +>> endobj +7989 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [96.769 182.285 437.69 191.392] +/A << /S /GoTo /D (interface_i_pun_callbacks_aa6d84e9c68f93825fb3bf453d6f5ca1b) >> +>> endobj +7990 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.389 171.326 157.94 180.433] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7991 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.38 171.326 426.93 180.433] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +7995 0 obj << +/D [7993 0 R /XYZ 69.866 801.979 null] +>> endobj +7848 0 obj << +/D [7993 0 R /XYZ 70.866 720.31 null] +>> endobj +1430 0 obj << +/D [7993 0 R /XYZ 70.866 705.069 null] +>> endobj +7845 0 obj << +/D [7993 0 R /XYZ 70.866 591.672 null] +>> endobj +1434 0 obj << +/D [7993 0 R /XYZ 70.866 576.432 null] +>> endobj +7846 0 obj << +/D [7993 0 R /XYZ 70.866 486.945 null] +>> endobj +1438 0 obj << +/D [7993 0 R /XYZ 70.866 471.705 null] +>> endobj +7850 0 obj << +/D [7993 0 R /XYZ 70.866 382.218 null] +>> endobj +1442 0 obj << +/D [7993 0 R /XYZ 70.866 366.978 null] +>> endobj +7992 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8023 0 obj << +/Length 2169 +/Filter /FlateDecode +>> +stream +xY[o8~ϯ$B]KLdIlX}PlF<4dq"ZxH1kn1(b' CߺYs0sB׺Z7vxhEr]y~NFj]4~^eD|ǞGo㈑8 Ε9#/*] +zv-5KjǍ+^`k a!"9,ڷI"?Vay705)Z3Vǜ;0wN]e5M1U^N/3OZ]C;EfJ$Ⱥx(oYP*;dOF& z鳠*Lcqg-Þ'&f +klGBwU.p|],R }V"wvW </ +c,VZ^d̜OR +\/ Y.o3 +Ĥ=NE2^ׅ5)C=:m+N۱N]pǍ((U4F&H*%5aHS M1@Vh@gSD :Ru:j0.}lPTzyv' 9$UY.Pӊ4Ӓ/ݳU<=Zոx]gŜ@G& }[wkPrA3PޣvSG.N^i^`_mE VuujI\fyxٰ,+q1iʁ[ ~E\ +2(lG<%!.4·,MۃzOPt͉ԸIuޑQbn/&+4?ƞ8>Lx%/&*<rQR-n_DRՔT[k̨;]]q \?+\ +"Ej5GxtHw]tBIy\4:L _1M' 0Kwop:XM\.^LTuݔ$uk{7і7M@kGR@"P͢I@JtJf,Yc&H7nbK41AlVC6^;Ov4QWKmvI73,0ϒ*Pp9,ͳPA7McQ +`2jx0ұY^ +~\,>zU5jNelp=h^\ Bf{"ْyZ ar- 7 6H=':ިbPIZ7<+tOnl;Y:@#SzAu'%vK*:ZM6Y9@X̄Ї9L:S;E>cDMOL5pyzH}$toGn+w&#-e^fvltTef|@ mi6S[ЉHPk*i&b7)bfUL`Y5#7wdgt@[2Ya&kޏ!duF_uEइڄ/9 + G"֥(Ay}5CPlA^IjBw,4 P9G2O,!p|X.ƢMjMUʇI lN:7P37#TN!B^}4kLߎąL_ajq2 +bn;kAޤLy.ڶ|iU<"`6cږn)) eAb"$JTzJ.8 m>^V5pz Isos.B,_! ۴vgeF)<ΑD٢߀ +endstream +endobj +8022 0 obj << +/Type /Page +/Contents 8023 0 R +/Resources 8021 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7935 0 R +/Annots [ 8000 0 R 8001 0 R 8002 0 R 8003 0 R 8004 0 R 8005 0 R 8006 0 R 8007 0 R 8008 0 R 8009 0 R 8010 0 R 8011 0 R 8012 0 R 8013 0 R 8014 0 R 8015 0 R 8016 0 R 8017 0 R 8018 0 R 8019 0 R 8020 0 R ] +>> endobj +8000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.502 741.029 249.87 753.203] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 707.358 222.692 717.626] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_aaec2f5973228b99c6ad781d5cedadb6f) >> +>> endobj +8002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [328.087 646.655 371.432 657.237] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +8003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.296 617.075 304.284 627.658] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +8004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.25 605.12 271.97 615.702] +/A << /S /GoTo /D (class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) >> +>> endobj +8005 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.167 569.457 296.512 581.63] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +8006 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 547.741 222.692 558.009] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a94f901ce1a7af7b6c49937c5c47ceae4) >> +>> endobj +8007 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.432 487.037 410.829 497.62] +/A << /S /GoTo /D (class_photon_network_a8ad64b1a76c7918bbe5642639afff458) >> +>> endobj +8008 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.089 469.521 329.201 479.995] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +8009 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.931 457.458 170.523 468.04] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +8010 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 398.406 222.692 408.675] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_aa45db114fa51d09929389bf0620f3150) >> +>> endobj +8011 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.604 337.811 485.051 348.285] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +8012 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.013 320.079 284.46 330.661] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +8013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 302.562 222.692 312.83] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a443380e89534a70dfe4ce7ca16083035) >> +>> endobj +8014 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.329 224.342 275.735 234.817] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8015 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.2 212.387 452.666 222.861] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +8016 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [110.325 200.432 186.791 210.906] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +8017 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [272.991 200.432 433.085 210.906] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +8018 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [93.792 158.789 195.811 169.372] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +8019 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.651 142.269 263.058 152.743] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8020 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.655 67.983 222.692 78.251] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_abddb6286cecb1409cbca26088328e86d) >> +>> endobj +8024 0 obj << +/D [8022 0 R /XYZ 69.866 801.979 null] +>> endobj +7847 0 obj << +/D [8022 0 R /XYZ 70.866 708.354 null] +>> endobj +1446 0 obj << +/D [8022 0 R /XYZ 70.866 690.554 null] +>> endobj +7839 0 obj << +/D [8022 0 R /XYZ 70.866 548.737 null] +>> endobj +1450 0 obj << +/D [8022 0 R /XYZ 70.866 530.936 null] +>> endobj +7851 0 obj << +/D [8022 0 R /XYZ 70.866 399.403 null] +>> endobj +1454 0 obj << +/D [8022 0 R /XYZ 70.866 381.602 null] +>> endobj +7880 0 obj << +/D [8022 0 R /XYZ 70.866 303.558 null] +>> endobj +1458 0 obj << +/D [8022 0 R /XYZ 70.866 285.758 null] +>> endobj +6381 0 obj << +/D [8022 0 R /XYZ 70.866 68.979 null] +>> endobj +8021 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8046 0 obj << +/Length 2033 +/Filter /FlateDecode +>> +stream +xY]4_מ!pWXYf +KaZ.G:v^4_cg@"KGs!EY[KY/oX<{V.8VV4d黱g6[;V_[AiگLꭹ2V+d t`@T2A<2eIc@;;[ g-%KtŎɦך6HسۚG\w:u?3]atY@J'*˛*~@Ni9vrfQX1p,HP!SbԟEn2 !G+w-Y"X*_KN9$ܚNlY[`C{"In<86K\P +?pNu]}I wslXe3 {'RC Ym} >N  G@7&$R dZ]u̵YTm=9w'^gP."SMƿaΰG,lj.DR _"Xz6`8wM-+؝L@C ",F]lk .d5},e U}B "NC4 g- zb?VkTWD ["SzF$%gs A.-̌ 3v7Cc҉Tb2L?O{~=W,GI1'0q +<5i,Mڠdkȿ1OXsd|V!F;6jZr[/k M +!ԝ4*%gXp/S";cP&H##i-}9Tѣ(=?:㣓4{꾛l7o|"Ny2ǎh_W|e.I/HC,s4#?\- V`+܊ƛH>ĵ6Py!GMT21u_nxlA[xNh+,z(FZb P11[lEL:{L "O\(q/]$?zJ]fc +RڣKKENzd9zY.Pxpr-Ye1HL0v= +gݣr4] ?;w 7#IЪaB. +de_6ܮ"E%HO]2kȍO署ȇG;.cZ4Ӣ޲"rHW4c|̥?1M? .CTq +nKHyi 9}(/V[qËW^,=J}+ző78j_2NQj|s6@sP~RѬ +endstream +endobj +8045 0 obj << +/Type /Page +/Contents 8046 0 R +/Resources 8044 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 7935 0 R +/Annots [ 8030 0 R 8031 0 R 8032 0 R 8033 0 R 8034 0 R 8035 0 R 8036 0 R 8037 0 R 8049 0 R 8038 0 R 8039 0 R 8040 0 R 8041 0 R 8042 0 R 8043 0 R ] +>> endobj +8030 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.166 712.035 204.696 722.618] +/A << /S /GoTo /D (class_photon_animator_view) >> +>> endobj +8031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.689 712.035 308.669 722.618] +/A << /S /GoTo /D (class_photon_rigidbody2_d_view) >> +>> endobj +8032 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [311.661 712.035 401.182 722.618] +/A << /S /GoTo /D (class_photon_rigidbody_view) >> +>> endobj +8033 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.623 712.035 510.919 722.618] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +8034 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 654.204 209.483 664.786] +/A << /S /GoTo /D (group__public_api_ga78c69bbb6f79d1e4fb23d3f761eaf4aa) >> +>> endobj +8035 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.969 654.204 272.273 664.786] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +8036 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.159 654.204 386.628 664.786] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +8037 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.098 639.556 525.406 649.183] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8049 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 630.203 128.268 638.038] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8038 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.596 442.529 190.959 453.111] +/A << /S /GoTo /D (interface_i_pun_prefab_pool_a7faad9f73d3ef1574d3bf512f5d870ea) >> +>> endobj +8039 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 418.529 153.84 426.363] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8040 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 403.675 146.101 414.257] +/A << /S /GoTo /D (interface_i_pun_prefab_pool_a7e4be9281d4a5d2474134e54ef766aa0) >> +>> endobj +8041 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 246.146 119.527 256.728] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8042 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [233.415 228.629 292.532 239.104] +/A << /S /GoTo /D (interface_i_pun_callbacks) >> +>> endobj +8043 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.914 114.768 420.498 125.35] +/A << /S /GoTo /D (interface_i_pun_prefab_pool_a7e4be9281d4a5d2474134e54ef766aa0) >> +>> endobj +8047 0 obj << +/D [8045 0 R /XYZ 69.866 801.979 null] +>> endobj +1462 0 obj << +/D [8045 0 R /XYZ 70.866 771.024 null] +>> endobj +8048 0 obj << +/D [8045 0 R /XYZ 70.866 694.117 null] +>> endobj +1466 0 obj << +/D [8045 0 R /XYZ 70.866 615.959 null] +>> endobj +8050 0 obj << +/D [8045 0 R /XYZ 493.855 571.777 null] +>> endobj +1470 0 obj << +/D [8045 0 R /XYZ 70.866 553.477 null] +>> endobj +8051 0 obj << +/D [8045 0 R /XYZ 70.866 482.442 null] +>> endobj +1474 0 obj << +/D [8045 0 R /XYZ 70.866 374.783 null] +>> endobj +1478 0 obj << +/D [8045 0 R /XYZ 70.866 202.322 null] +>> endobj +8052 0 obj << +/D [8045 0 R /XYZ 70.866 177.532 null] +>> endobj +1482 0 obj << +/D [8045 0 R /XYZ 70.866 177.532 null] +>> endobj +8044 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8073 0 obj << +/Length 2070 +/Filter /FlateDecode +>> +stream +xYK6Wae`̐IIslO ά'bvP[t[[Hr:S|-O۾ؓi,ޣw?̋P,D୷^Q$ S!ʗ+FTr, ȊcikT~%,eQp? +?.ޭ/l=lE(>c/w?zq=qx{#`N Տ;P0q ܜ~IAֲ\WZ3'rRCN+ +X`GAXp/da MP j4qbb$d8p~zl` b,t Mx;i0N,ܑ_7U]/Gc9-.Pp#EBZk=S!Et`pEiRne@أ;m:Kjis\1.|0p?*ٙb(]ȻS2An &FKآ'2 +rNISArI_I !s]@4 +.x\7 +8/7~/Sy's3>R(M)5,jWT?[MdLIt /fR<(rXu)kM c dY~5rl4Jkfޚ;%OPx1 +cXB U@dcKY'I{KUNiV ]gfp HȮZ +%G]2:e{OݺA{֕P3LYKӌA^4WG3aql@'zӀvnmt PW ŮRӌkW 69uy9@U~" f|MH*tv|c%W{Rk2UͩC8DatknB[Mcx^Xgˋc&_S*TC*Ys%u#MF֍-tۉ +=+#RJi$MA`<+HQ_y[xw.cfˡ楩E9U=Uu>Vr`.k7@^]'wj+12,4FlعZ2W}6&m֐IF(䱰JT@M_gUM + Mե=8>)fOnoIes%AOʱQQ֟gNe8C\jӆK9-e&mHp]>,floin!d3X+;@SQvd +fN=1]m_͈[wprUCSՀc&.΁l;xTVgƮh"6m:tKrÍ6eԔc'RjpIjC+!cXAx7݋S*D)!&pPQQ¥ TPyTM(1X#c;8a?WH<91ա|*Rs}/i%gS Ʉ߫9|T:I )v% ֿS"체zB^<7oQ f}8U:tJ1+a75\6{jk8KYU9VczI@0l:8i4].ʶTڞbS䩾x;U ~Z߻z-M}:zqmfrݘe:/pF*~i3,01?Z(>ݪQC}zP=JP5&ɵYU3ѱLom$uw\ Rj :f DؘEW𬔇B|o=ԢP"KTDj%'[?] |Cɭɪ(}?`[3]pͭM8c.E 6E:&AޏU<482IWEO7`)}2ezzgFǹ؏ao1~˄ϡ19e{`=KS>t%ϗGU2/1*F +endstream +endobj +8072 0 obj << +/Type /Page +/Contents 8073 0 R +/Resources 8071 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8079 0 R +/Annots [ 8058 0 R 8059 0 R 8060 0 R 8061 0 R 8062 0 R 8063 0 R 8064 0 R 8065 0 R 8066 0 R 8067 0 R 8068 0 R 8069 0 R 8070 0 R ] +>> endobj +8058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 664.598 119.527 673.082] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8059 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.166 456.68 208.202 466.949] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour) >> +>> endobj +8060 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.643 456.68 278.3 466.949] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8061 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 400.747 144.433 411.016] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8062 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.933 400.747 193.595 411.016] +/A << /S /GoTo /D (class_photon_1_1_mono_behaviour_a27027ef7d8204896cb9381a200953892) >> +>> endobj +8063 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.625 386.97 241.516 396.596] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8064 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.534 375.161 163.191 385.076] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8065 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.691 375.161 216.369 385.076] +/A << /S /GoTo /D (class_photon_1_1_mono_behaviour_a00c97185c3a8594bf5c1c518a701706e) >> +>> endobj +8066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.488 171.789 271.145 182.264] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.287 115.186 216.944 125.661] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8068 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.378 97.562 228.035 108.037] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8069 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.802 79.938 232.459 90.412] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8070 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.403 79.938 522.913 90.412] +/A << /S /GoTo /D (class_photon_1_1_mono_behaviour) >> +>> endobj +8074 0 obj << +/D [8072 0 R /XYZ 69.866 801.979 null] +>> endobj +8057 0 obj << +/D [8072 0 R /XYZ 70.866 734.255 null] +>> endobj +1486 0 obj << +/D [8072 0 R /XYZ 70.866 719.935 null] +>> endobj +6164 0 obj << +/D [8072 0 R /XYZ 70.866 555.356 null] +>> endobj +1490 0 obj << +/D [8072 0 R /XYZ 70.866 544.937 null] +>> endobj +8075 0 obj << +/D [8072 0 R /XYZ 70.866 439.575 null] +>> endobj +1494 0 obj << +/D [8072 0 R /XYZ 70.866 347.707 null] +>> endobj +1498 0 obj << +/D [8072 0 R /XYZ 70.866 288.815 null] +>> endobj +8076 0 obj << +/D [8072 0 R /XYZ 70.866 261.932 null] +>> endobj +1502 0 obj << +/D [8072 0 R /XYZ 70.866 261.932 null] +>> endobj +8077 0 obj << +/D [8072 0 R /XYZ 325.82 174.673 null] +>> endobj +1506 0 obj << +/D [8072 0 R /XYZ 70.866 158.465 null] +>> endobj +8078 0 obj << +/D [8072 0 R /XYZ 377.644 70.866 null] +>> endobj +8071 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8101 0 obj << +/Length 1466 +/Filter /FlateDecode +>> +stream +x[8)xqmTڇ\"ulf}h@XK |=6dvDtO$?s|lckmak6~:EZ++(}+(u>a|g>AaB="ҙ /LR*;|(-6(l'`k YQh=[c.b"&Nez4]PºA"ne#;S1ov.%4l9_9 %\o}}F4ؚRB@X9.Y)La6r9)`e*-yme>T%7䆗|؅+2U4}1GWS(`oA=jRXJYTIsQ@C F?SzuOSzC(dJ]}O6q8R^ܯbg ;=~{ uw8D3v+>p~(" &ZNxeL(k.[1Qri+g0{W`<"%zK1tɞa{wyqnٲŌ'+p~PUVqj>vj{h|1~9b+{/T+ؔFlF{cC*_͚KX7tͳazcUW$ $ z +~8]goO:/ F +:kZGTt֠XMY[E)rAsGwCຶ(o=galѫNCq~?R/e__ǒj~~p_!_9O#{ZE'tzڮP{u`Br}'yQޥ*"W{TWOqр=4ARO> .󢝍F;r:[1gs*)j"0^8ocf}9}Xתn=0Ўݾw+c$ɳƾ3C#Ȗ׎`y<# +kh_"3Kyש(j?XvՇH6M^Fˆ2<}zEL; szFJL.fmbfD|Ƙ&f٫ +Q$aڳ*矑9_ 5OȓO &Ϛ MyƇf5S~Q#ܜ/ 1%×NOtά7/w5夵*96ib7;ɵjk%7> K]]蘆wqք!DY$[!V]"6XZ8 _bi|bP|2#9tҗ\67>i BI!g> endobj +8080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 667.613 255.023 677.989] +/A << /S /GoTo /D (class_operation_code_af07ef9cbfd9be6c65a0e778636cc7d29) >> +>> endobj +8081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 653.788 156.394 664.056] +/A << /S /GoTo /D (class_operation_code_a2cc120dfb6e75603acd7fa8c6f813885) >> +>> endobj +8082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 623.929 210.954 634.404] +/A << /S /GoTo /D (class_operation_code_ac5d8c14445b243abacb4bdbf357d62ba) >> +>> endobj +8083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 594.071 189.524 604.339] +/A << /S /GoTo /D (class_operation_code_af6b5f9fc1d1cb173c4d078b7bee72e11) >> +>> endobj +8084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 564.213 180.549 574.481] +/A << /S /GoTo /D (class_operation_code_afcf10d9c4731816a135b1e010592423c) >> +>> endobj +8085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 534.354 188.126 544.623] +/A << /S /GoTo /D (class_operation_code_a0bb85825f6c89af48ed17ee6a7eff997) >> +>> endobj +8086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 504.496 191.273 514.97] +/A << /S /GoTo /D (class_operation_code_af0b568d437be437d31d9eb27588dc9f6) >> +>> endobj +8087 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 474.638 180.809 485.112] +/A << /S /GoTo /D (class_operation_code_aa9c07799ccf6674d641bcf88fd65f27b) >> +>> endobj +8088 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 444.779 214.693 455.254] +/A << /S /GoTo /D (class_operation_code_a1a42bb1ca4a7e0d72418ce410bbb8b0d) >> +>> endobj +8089 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 414.921 163.971 425.395] +/A << /S /GoTo /D (class_operation_code_a42fcaeed38b9159d966bbc8495924ac9) >> +>> endobj +8090 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 385.062 185.57 395.537] +/A << /S /GoTo /D (class_operation_code_a093642aa2579e1ad7c6aafc91e28c70c) >> +>> endobj +8091 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 355.204 194.626 365.679] +/A << /S /GoTo /D (class_operation_code_aa33e652aaa457306f31741d8b4d78e80) >> +>> endobj +8092 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 325.346 195.621 335.82] +/A << /S /GoTo /D (class_operation_code_ab70f6436c1fae5974e820c66ab291fd0) >> +>> endobj +8093 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 295.38 200.75 305.962] +/A << /S /GoTo /D (class_operation_code_a1114cce9c7f9a533469a77f0ad48b3e5) >> +>> endobj +8094 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 265.629 187.014 275.897] +/A << /S /GoTo /D (class_operation_code_a7af6e5117f55d3efc5299112e7865940) >> +>> endobj +8095 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 235.771 198.993 246.245] +/A << /S /GoTo /D (class_operation_code_a22684fd1b6171ab6e21258a0a425a2d1) >> +>> endobj +8096 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 205.805 187.292 216.387] +/A << /S /GoTo /D (class_operation_code_afdf083bb0c5cbd242b3a02b5af56854c) >> +>> endobj +8097 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 176.054 174.058 186.322] +/A << /S /GoTo /D (class_operation_code_a4d45cf8e2d6766b2cc1613508ed92304) >> +>> endobj +8098 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 146.088 198.795 156.67] +/A << /S /GoTo /D (class_operation_code_a508bcbe157617ab316b42f6e12551641) >> +>> endobj +8102 0 obj << +/D [8100 0 R /XYZ 69.866 801.979 null] +>> endobj +1510 0 obj << +/D [8100 0 R /XYZ 70.866 771.024 null] +>> endobj +8103 0 obj << +/D [8100 0 R /XYZ 70.866 708.97 null] +>> endobj +1514 0 obj << +/D [8100 0 R /XYZ 70.866 113.808 null] +>> endobj +8099 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8125 0 obj << +/Length 1018 +/Filter /FlateDecode +>> +stream +x՗s(+8J3 +H3{&g&MY62j gJ{@Z^^F$ }ށzq(^z >:CGs{E*bKeӝC 35$"N7)VF{1@v\| VI G#9xX|X@70]4VA/"I7#DaAqC 8T'H^b-& YQ4o\DkŁSɃҁei`tz TP 2yu<0;њ|k:JwN3,v4_Z@GVin'N\j~!_@943]Rw/b +VTr@Nhv@pO%INP % L+e*oagmhwLҧXڧ$[ !iU9(UzE,rQZnodXFNsHYݙ (Vʚ$3\i#/!9KQ\n?H/pKƷ˂ *GÓ;/U*NyłRyqΚ-uN-P6Gq9@-ye>,;XiQVՠL)> $,{Pƾ1zȲQD3 B=6+'3뭪|RK˟|gʃNzHP'dG]I4R˜iu2{WCx| ˞FFQKknuSD]] ޫx.u tf0gld^jDv{҂^ o * oY:a>'L)'LرlqLcۼ;8lq2&˞9v[yϽ6ISޚX  }EBrl2+j"4@&8]l3i-OYo{g퓹Ut(3G +endstream +endobj +8124 0 obj << +/Type /Page +/Contents 8125 0 R +/Resources 8123 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8079 0 R +>> endobj +8126 0 obj << +/D [8124 0 R /XYZ 69.866 801.979 null] +>> endobj +1518 0 obj << +/D [8124 0 R /XYZ 70.866 771.024 null] +>> endobj +8107 0 obj << +/D [8124 0 R /XYZ 70.866 753.242 null] +>> endobj +1522 0 obj << +/D [8124 0 R /XYZ 70.866 753.242 null] +>> endobj +8106 0 obj << +/D [8124 0 R /XYZ 70.866 708.556 null] +>> endobj +1526 0 obj << +/D [8124 0 R /XYZ 70.866 690.062 null] +>> endobj +8117 0 obj << +/D [8124 0 R /XYZ 70.866 647.129 null] +>> endobj +1530 0 obj << +/D [8124 0 R /XYZ 70.866 628.635 null] +>> endobj +8110 0 obj << +/D [8124 0 R /XYZ 70.866 585.594 null] +>> endobj +1534 0 obj << +/D [8124 0 R /XYZ 70.866 567.101 null] +>> endobj +8104 0 obj << +/D [8124 0 R /XYZ 70.866 524.168 null] +>> endobj +1538 0 obj << +/D [8124 0 R /XYZ 70.866 505.674 null] +>> endobj +8118 0 obj << +/D [8124 0 R /XYZ 70.866 480.365 null] +>> endobj +1542 0 obj << +/D [8124 0 R /XYZ 70.866 480.365 null] +>> endobj +8119 0 obj << +/D [8124 0 R /XYZ 70.866 437.54 null] +>> endobj +1546 0 obj << +/D [8124 0 R /XYZ 70.866 419.046 null] +>> endobj +8116 0 obj << +/D [8124 0 R /XYZ 70.866 376.005 null] +>> endobj +1550 0 obj << +/D [8124 0 R /XYZ 70.866 357.512 null] +>> endobj +8120 0 obj << +/D [8124 0 R /XYZ 70.866 314.686 null] +>> endobj +1554 0 obj << +/D [8124 0 R /XYZ 70.866 296.193 null] +>> endobj +8105 0 obj << +/D [8124 0 R /XYZ 70.866 253.152 null] +>> endobj +1558 0 obj << +/D [8124 0 R /XYZ 70.866 234.658 null] +>> endobj +8111 0 obj << +/D [8124 0 R /XYZ 70.866 191.725 null] +>> endobj +1562 0 obj << +/D [8124 0 R /XYZ 70.866 173.231 null] +>> endobj +8108 0 obj << +/D [8124 0 R /XYZ 70.866 130.298 null] +>> endobj +1566 0 obj << +/D [8124 0 R /XYZ 70.866 111.805 null] +>> endobj +8112 0 obj << +/D [8124 0 R /XYZ 70.866 68.979 null] +>> endobj +8123 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8139 0 obj << +/Length 1461 +/Filter /FlateDecode +>> +stream +xXMo8W0]n-m6niBm+Iwe+.l(zE9!3ss5s<:NJ8PƱdľ3.;7ޗ{'}&S\%{YOK^\u7#LC)IYL/)CIΣ\:a(D vЀZ)a1a3RNJHRw$B~QP.y_M^*_WXfh $9c!TL# +=kpdZUNL"Uy 5rcbp0 G0#0!(<(tԭqu<-6Tq 77MXt +a6ޒMzlҎ!F?z +`ON|7y)QNprE9JGSɎċrM1ʺEOH+oI&GxxRRs˥, ?XHС;*T6J6 ۴vL@s^Ru(ӼiekK4*( h?Qz-.Gzrjddw6֮u}[aqS[>I}OnV-f+7hdFV|?3HȺ[)bQZ0j:0cq}{RmRy6 +endstream +endobj +8138 0 obj << +/Type /Page +/Contents 8139 0 R +/Resources 8137 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8079 0 R +/Annots [ 8127 0 R 8128 0 R 8129 0 R 8130 0 R 8131 0 R 8132 0 R 8133 0 R 8134 0 R 8135 0 R 8136 0 R ] +>> endobj +8127 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 299.722 191.282 309.991] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a3e0593b8bebedc54bb00c47d6b079409) >> +>> endobj +8128 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 287.395 165.863 297.869] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a8024f1b6758fb3fa6bcb54581965d7c9) >> +>> endobj +8129 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 260.747 185.579 271.015] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a2baac6007f6dfe71804735eb52225e9a) >> +>> endobj +8130 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 248.419 238.274 258.894] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a244b3fc5ac2e8b3a97428b6534ca9da6) >> +>> endobj +8131 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 210.812 249.858 221.287] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a70f578a01789db64e2aefa055fba1732) >> +>> endobj +8132 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 173.205 238.354 183.68] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a188165801d2b627e28b1476353e103ad) >> +>> endobj +8133 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.841 158.977 525.406 168.7] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +8134 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 135.491 168.355 145.867] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a858cbc8aac0919b92ab761e92decf1da) >> +>> endobj +8135 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 108.951 172.838 119.219] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a7fa2bc4b15e962459df490987acb4745) >> +>> endobj +8136 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 82.303 166.356 92.571] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a2b1f96b419566ad8b1bfc78caf261f76) >> +>> endobj +8140 0 obj << +/D [8138 0 R /XYZ 69.866 801.979 null] +>> endobj +1570 0 obj << +/D [8138 0 R /XYZ 70.866 771.024 null] +>> endobj +8113 0 obj << +/D [8138 0 R /XYZ 70.866 734.408 null] +>> endobj +1574 0 obj << +/D [8138 0 R /XYZ 70.866 719.754 null] +>> endobj +8109 0 obj << +/D [8138 0 R /XYZ 70.866 677.472 null] +>> endobj +1578 0 obj << +/D [8138 0 R /XYZ 70.866 662.818 null] +>> endobj +8114 0 obj << +/D [8138 0 R /XYZ 70.866 620.643 null] +>> endobj +1582 0 obj << +/D [8138 0 R /XYZ 70.866 605.99 null] +>> endobj +8122 0 obj << +/D [8138 0 R /XYZ 70.866 563.707 null] +>> endobj +1586 0 obj << +/D [8138 0 R /XYZ 70.866 549.054 null] +>> endobj +8115 0 obj << +/D [8138 0 R /XYZ 70.866 506.664 null] +>> endobj +1590 0 obj << +/D [8138 0 R /XYZ 70.866 492.01 null] +>> endobj +8121 0 obj << +/D [8138 0 R /XYZ 70.866 449.835 null] +>> endobj +1594 0 obj << +/D [8138 0 R /XYZ 70.866 435.182 null] +>> endobj +6838 0 obj << +/D [8138 0 R /XYZ 70.866 392.899 null] +>> endobj +1598 0 obj << +/D [8138 0 R /XYZ 70.866 377.074 null] +>> endobj +8141 0 obj << +/D [8138 0 R /XYZ 70.866 338.904 null] +>> endobj +8137 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8157 0 obj << +/Length 1537 +/Filter /FlateDecode +>> +stream +xXKs6WVrFڎiڸڋ-dI(}wKӋ.^o?CY9ܹxNQ;{',"'K g9nd8q=inVY)iRF{QF};އśbL9I8w2{p8A0_8g̸՝3by4J$%f;s'S (.<թUF:yUhΉ XUjӊ.>mYéz]dg N3/vFaWHO}ڟP'!2im =)58yj [ɓk@ݶ +/H/`y|ȗƪWؕ2xΏX&|?nXX CQy[.! ^RiX-ѓ B4W( ;3]ݎiU4n*S)c6.IrӮ -6$Lp$JTfz[`ʺ2lF Yeskyڮ華!%St݃n>_Dt4"D`9%A {Vc)wp˜;pƊ>8I +cjb!#4ٽTK"8z0$ YxAD{GE7#>sP+:2,>3Tv  ;iRM,pkx}H|{ +|.zssz~P@N(?noPQ3{xe;EǞ͓ʬTTm*Jj(Sa0PëR/t˴(v}M3BԼ"o-dP!wi9pf4$q +)pv؅ds!BibF%JLR%wOX(rGaMKmIm{h~4.(Պy!sAmٳ.ժ}z jEVĚz{A@XjU[i +~U8Z ,> } ègnc)!{u Fj3B@rv~ނG81*.%sCDKE}(Om $317!$; RW4Eׄk&Y軥k*S^_Vihaӄ& +(hG$(*Tfzn'9'Εq-K".}SŞe:,{ꍞVNZn*$fx$IIu$EQ г|*iX5N`Qw u?ԫLFgwض$?2\=`6_4[xF Ctj+Qģ+6yS}qjPzrHig0Y"2$cno_(ϥ*Ui}s]NXos7$K_QlNQ̵y~V}4nV!bw+1 ~yM +endstream +endobj +8156 0 obj << +/Type /Page +/Contents 8157 0 R +/Resources 8155 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8079 0 R +/Annots [ 8151 0 R 8152 0 R 8153 0 R 8154 0 R ] +>> endobj +8151 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 589.013 100.276 599.487] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +8152 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 146.586 228.922 157.06] +/A << /S /GoTo /D (class_parameter_code_a944cc6bb015ba7083cc9819ac487a39e) >> +>> endobj +8153 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 107.284 205.215 117.552] +/A << /S /GoTo /D (class_parameter_code_af4b80fb4f18f31a9cb58112385d6af8b) >> +>> endobj +8154 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 67.983 180.854 78.251] +/A << /S /GoTo /D (class_parameter_code_a800c504da29fb79933110e88f28b8e8b) >> +>> endobj +8158 0 obj << +/D [8156 0 R /XYZ 69.866 801.979 null] +>> endobj +1602 0 obj << +/D [8156 0 R /XYZ 70.866 771.024 null] +>> endobj +8149 0 obj << +/D [8156 0 R /XYZ 70.866 753.787 null] +>> endobj +1606 0 obj << +/D [8156 0 R /XYZ 70.866 753.787 null] +>> endobj +8142 0 obj << +/D [8156 0 R /XYZ 70.866 709.539 null] +>> endobj +1610 0 obj << +/D [8156 0 R /XYZ 70.866 693.772 null] +>> endobj +8144 0 obj << +/D [8156 0 R /XYZ 70.866 669.147 null] +>> endobj +1614 0 obj << +/D [8156 0 R /XYZ 70.866 669.147 null] +>> endobj +8147 0 obj << +/D [8156 0 R /XYZ 70.866 644.384 null] +>> endobj +1618 0 obj << +/D [8156 0 R /XYZ 70.866 644.384 null] +>> endobj +8146 0 obj << +/D [8156 0 R /XYZ 70.866 590.009 null] +>> endobj +1622 0 obj << +/D [8156 0 R /XYZ 70.866 574.242 null] +>> endobj +8145 0 obj << +/D [8156 0 R /XYZ 70.866 519.899 null] +>> endobj +1626 0 obj << +/D [8156 0 R /XYZ 70.866 504.132 null] +>> endobj +8148 0 obj << +/D [8156 0 R /XYZ 70.866 449.789 null] +>> endobj +1630 0 obj << +/D [8156 0 R /XYZ 70.866 434.022 null] +>> endobj +8143 0 obj << +/D [8156 0 R /XYZ 70.866 391.527 null] +>> endobj +1634 0 obj << +/D [8156 0 R /XYZ 70.866 375.76 null] +>> endobj +8150 0 obj << +/D [8156 0 R /XYZ 70.866 333.48 null] +>> endobj +1638 0 obj << +/D [8156 0 R /XYZ 70.866 317.713 null] +>> endobj +8159 0 obj << +/D [8156 0 R /XYZ 70.866 275.325 null] +>> endobj +1642 0 obj << +/D [8156 0 R /XYZ 70.866 258.386 null] +>> endobj +8160 0 obj << +/D [8156 0 R /XYZ 70.866 186.72 null] +>> endobj +8155 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8193 0 obj << +/Length 2001 +/Filter /FlateDecode +>> +stream +xZY۶~_!%k] +p&3܌S"DȢ.ZlǓ +$"l5x|ZhFh˵3}-lӷe}#y^s| <*cf%͖u\go^X0hV;ejDKFL' +>rcz..kw R+">M(@- DIb3}m3,L<\g.|kZ -C\H'5+ƬR25k}$y@4V4+&+R@ば.ZɖJbl5-9DYČH$D&k55(D6 l%59NJ˷NSmv +Z$¶Kڗ:L"+TC)}/7bGEVpez8Ķz;! +JUa:F.. 8RD`k5S VAawGySld;|%?`sC,{ +|4<`7]N)Awe E5g۬eXp_H͋Dَ3oG{}}oiRYj_$^hqp㼢cjq]xj%\I4ᮤ"4]J)^ODJTM.!m + C-\&5)ׂ %EB@\q w\S"ojG Jvek^,qh4")a`6Vw+yS0t{v}q*N_0;pҿ=_Ȇ#Ljjs5PY~(3TI:e)[ » G.))8G +:^<B;_ &[$oJ޸6?ed }A{h/Ο +d,vʶY%JI|6:fh?)ooځrHBb~#Mߗ-hɊ>Y>xMqcyiZlq^նn۲#xE~K1I!vЅnqüU +endstream +endobj +8192 0 obj << +/Type /Page +/Contents 8193 0 R +/Resources 8191 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8079 0 R +/Annots [ 8164 0 R 8165 0 R 8166 0 R 8167 0 R 8168 0 R 8169 0 R 8170 0 R 8171 0 R 8172 0 R 8173 0 R 8174 0 R 8175 0 R 8176 0 R 8177 0 R 8178 0 R 8179 0 R 8180 0 R 8181 0 R 8182 0 R 8183 0 R 8184 0 R 8185 0 R 8186 0 R 8187 0 R 8188 0 R ] +>> endobj +8164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 734.402 195.128 744.67] +/A << /S /GoTo /D (class_parameter_code_a8a0f2f34b88d3da46ad79b46e2e32835) >> +>> endobj +8165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 695.709 197.567 706.291] +/A << /S /GoTo /D (class_parameter_code_aeee59502abab94712ec48dd74e717138) >> +>> endobj +8166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 657.232 177.599 667.706] +/A << /S /GoTo /D (class_parameter_code_a0e764e415c813d30ccd343d6e58998dc) >> +>> endobj +8167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 618.647 212.514 629.121] +/A << /S /GoTo /D (class_parameter_code_a2ef96c9739f0db1265d3d2f9555c5dee) >> +>> endobj +8168 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 591.021 204.113 601.495] +/A << /S /GoTo /D (class_parameter_code_ab7f1030635b7abcec92d1986a8b892f2) >> +>> endobj +8169 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 563.394 172.838 573.663] +/A << /S /GoTo /D (class_parameter_code_a89266a1af9d29e429ee93fde92e295fb) >> +>> endobj +8170 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 535.768 182.36 546.243] +/A << /S /GoTo /D (class_parameter_code_abbfa6241444b2357788deed7df0a9eb8) >> +>> endobj +8171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 508.142 188.287 518.617] +/A << /S /GoTo /D (class_parameter_code_adc5f593d0a28eb9285f1f82f3ecd8c2d) >> +>> endobj +8172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 480.516 209.761 490.991] +/A << /S /GoTo /D (class_parameter_code_a9518836815815703bcec8e838602112c) >> +>> endobj +8173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 452.89 166.356 463.158] +/A << /S /GoTo /D (class_parameter_code_ae7ded9f621203e1055637f052dbed9a1) >> +>> endobj +8174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 425.264 191.282 435.532] +/A << /S /GoTo /D (class_parameter_code_aee141dbaedc9a7cec46a50ff249e9169) >> +>> endobj +8175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.05 410.643 309.615 420.27] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.107 410.643 400.672 420.27] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 397.638 171.395 407.906] +/A << /S /GoTo /D (class_parameter_code_a0009ad9f8e50d67349e3295cb7420ea0) >> +>> endobj +8178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 369.904 212.119 380.28] +/A << /S /GoTo /D (class_parameter_code_a96257bad8abedbae6f1f3bb6bcb292d7) >> +>> endobj +8179 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 331.427 178.317 341.901] +/A << /S /GoTo /D (class_parameter_code_a5f9268263fa113b241f3b0af5e388fe6) >> +>> endobj +8180 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 303.801 165.863 314.275] +/A << /S /GoTo /D (class_parameter_code_a7269ad7651361581a36c94f0eea57e6f) >> +>> endobj +8181 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 276.175 185.579 286.443] +/A << /S /GoTo /D (class_parameter_code_ae3588b14921f4873c0b2de805fb0c62b) >> +>> endobj +8182 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 248.548 199.486 259.023] +/A << /S /GoTo /D (class_parameter_code_af3ad8a7afbfeece08aa218613827fdbd) >> +>> endobj +8183 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 220.922 213.706 231.191] +/A << /S /GoTo /D (class_parameter_code_a6dd3c089d5163862f166f84fe1739ea5) >> +>> endobj +8184 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 193.296 219.678 203.565] +/A << /S /GoTo /D (class_parameter_code_a11f321547e2882495b0a72d0dd3253d0) >> +>> endobj +8185 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 165.67 187.776 176.145] +/A << /S /GoTo /D (class_parameter_code_a482f50451b3deaac386d9d5993ec6d86) >> +>> endobj +8186 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 138.044 180.316 148.519] +/A << /S /GoTo /D (class_parameter_code_a655b4c0d24601789dd140608f4473c57) >> +>> endobj +8187 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 110.418 174.829 120.893] +/A << /S /GoTo /D (class_parameter_code_a4ec68978f777837045882cd08b596f70) >> +>> endobj +8188 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 82.792 170.337 93.266] +/A << /S /GoTo /D (class_parameter_code_a1530bb122ef29d3e24143cf0aefe07e8) >> +>> endobj +8194 0 obj << +/D [8192 0 R /XYZ 69.866 801.979 null] +>> endobj +8191 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8245 0 obj << +/Length 2207 +/Filter /FlateDecode +>> +stream +xZKs6W| U5I/j#x'98sIb M*$^F7(MTtfs"4Fwdm?]a.ж 0…kqwfdly=WlduY/󸮩y#36e%F\ٗgoo:s`_p}Ȋ\HF +c xR s׳̻?XV # ևu}Ņf}?0~s# 5A Q +H,\ +0L;ھwz^sc㺖-;҇`>.huDʊ~;6ges\Xq+K[b`erM?37e1s,Y4Gԟ(SL咾i:p@ >Ncx[-S͘&jO7p½O!^ںp֛(XoLVDO+Yh@(ҬxԦy%SqN?mW{$G7MfJ6[<ǣQ8>#&IwHX;Ib@s%D#Ĺ*9+{^!AY<,-;P؆}Pp^(D w̚NR@hEr +] fy6Enȷ"Psq-_Zl?[܏][3_9{S=lVƝd%W٬ʚT //3ŐA6P`Kuԝ '! "~FR:&+;Yf+ָ=2t +AU_جDo ,%ˤ]cmnN1k+~xOќڡ_y C  C~W'VOiZsJY҃NO)\M6k.HO~.>') +ݹ Oeck; U{YIWoJ[FQi bTWx2 P`D`%ED^^zN \ ]YȻҨ Hy&CӥXc-߼xkd|Yͷ-6C.{z7;$$|`I! {PH`!|a:3C ~&M}6sYVL<1|k=V0Pk5Vt+O]#z6Pʒ+Ī+P{z.^(<[~K_4P.~Sp +ُ_+TWiM?JT 6v;U$FqYhg#JEmL#eEn&y 6S1`Qt=%]CЦ:uV:=h" (MK;DSs^=O96 q]D ޷1xeCh7Ʊo ) +2C~ڙXrŬ^u\ߊ^RVUYbh"ι~,`6#q4\FEE%5<wgb&p&#OWAK>$X)+74R +_O swfZ8E[+QRvYS֬vKk-vfp=rDX`X;ق Ԉ- Ψ9{f+T&5~W@d۶wme8m緶2bl9[;Rؙ9} O1k|]o +FdMTM1}*Ja0[RO7-e] H O)xDBp5K]'40r<& xŋPsn 2m"Kw|EwE +hASd w_@7!^!cz=x=K&P=*@-lb(-y׫2 |q/c}w +[|{VS˔/i\$ZZG!n^迆ta\ Fnsn$7 d%1Vu:6SSj}`QU[pop _CX$O+yYK"8inW<+$5-GOy0sz?zG ,dD?&ݮ6x#j@WY?^/y"meoJaXl)| +endstream +endobj +8244 0 obj << +/Type /Page +/Contents 8245 0 R +/Resources 8243 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8248 0 R +/Annots [ 8189 0 R 8190 0 R 8218 0 R 8219 0 R 8220 0 R 8221 0 R 8222 0 R 8247 0 R 8223 0 R 8224 0 R 8225 0 R 8226 0 R 8227 0 R 8228 0 R 8229 0 R 8230 0 R 8231 0 R 8232 0 R 8233 0 R 8234 0 R 8235 0 R 8236 0 R 8237 0 R 8238 0 R 8239 0 R 8240 0 R ] +>> endobj +8189 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 758.177 206.13 768.652] +/A << /S /GoTo /D (class_parameter_code_a50d6ee26796535284d0f9a244300de28) >> +>> endobj +8190 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 730.008 224.941 740.482] +/A << /S /GoTo /D (class_parameter_code_a82aa021471b89acff7663a664b9a3fc9) >> +>> endobj +8218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 701.838 158.887 712.312] +/A << /S /GoTo /D (class_parameter_code_a3f9bca747a97dfebb9985a99cefc8d46) >> +>> endobj +8219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 673.668 161.38 684.143] +/A << /S /GoTo /D (class_parameter_code_a56c07276d621b868fbe18ce04a8b3ede) >> +>> endobj +8220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 645.498 205.583 655.973] +/A << /S /GoTo /D (class_parameter_code_a71f83a62a57f9f2191e4bf2d3c6cd5d3) >> +>> endobj +8221 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 617.329 181.168 627.803] +/A << /S /GoTo /D (class_parameter_code_a4c7eb043b3ab8753feaf83447e1d64f3) >> +>> endobj +8222 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [496.836 602.339 525.406 612.063] +/A << /S /GoTo /D (class_actor_properties) >> +>> endobj +8247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 591.477 148.038 601.104] +/A << /S /GoTo /D (class_actor_properties) >> +>> endobj +8223 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 578.092 195.173 588.675] +/A << /S /GoTo /D (class_parameter_code_ae14214ee59dd64d41c3d5c8796f6dc30) >> +>> endobj +8224 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 550.03 200.015 560.505] +/A << /S /GoTo /D (class_parameter_code_addcfa8d34a8a951c0249688ba5a87388) >> +>> endobj +8225 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 521.86 165.863 532.335] +/A << /S /GoTo /D (class_parameter_code_aae1727a167cc76e53eefa0330dd3ffb1) >> +>> endobj +8226 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 493.691 235.145 504.165] +/A << /S /GoTo /D (class_parameter_code_a687905530b32439509cf6375402a3e09) >> +>> endobj +8227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 454.562 164.867 465.037] +/A << /S /GoTo /D (class_parameter_code_a56d42106e3806d826ee38fdf70ccdfe9) >> +>> endobj +8228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 426.392 172.973 436.661] +/A << /S /GoTo /D (class_parameter_code_a7dafd17f70c1621b05c4732cca997fa7) >> +>> endobj +8229 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 387.264 195.577 397.532] +/A << /S /GoTo /D (class_parameter_code_a7b9f7c20130b6c6b7cbae3b66d48292b) >> +>> endobj +8230 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 348.135 155.901 358.403] +/A << /S /GoTo /D (class_parameter_code_ad66570a6adf1aa47db32f6b97db3eb71) >> +>> endobj +8231 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 309.006 154.637 319.481] +/A << /S /GoTo /D (class_parameter_code_ac3df3792ba12483dfc9b7b1e90fe5817) >> +>> endobj +8232 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.949 294.017 246.93 303.74] +/A << /S /GoTo /D (class_event_code_a7ce7fa1807af9b040e3066ef62a35e6c) >> +>> endobj +8233 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 280.837 238.274 291.311] +/A << /S /GoTo /D (class_parameter_code_a0ebf68ac761870ce49218902d58d2b9b) >> +>> endobj +8234 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 241.708 249.858 252.183] +/A << /S /GoTo /D (class_parameter_code_a0c9894a9caad2641e8053124e3001c74) >> +>> endobj +8235 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 202.579 178.819 212.848] +/A << /S /GoTo /D (class_parameter_code_a0a4e0bd7b7dfb7cc503e305c6f70e126) >> +>> endobj +8236 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 163.451 238.354 173.925] +/A << /S /GoTo /D (class_parameter_code_a2a6f0892c24a74942ad1fd06b429e1f7) >> +>> endobj +8237 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.841 148.461 525.406 158.185] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8238 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 124.322 197.746 134.797] +/A << /S /GoTo /D (class_parameter_code_ad05db066ac86d9670539d1ec1cb9ef55) >> +>> endobj +8239 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 96.152 234.356 106.627] +/A << /S /GoTo /D (class_parameter_code_a75d56249641f1fbb3dee2240561aee2f) >> +>> endobj +8240 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 67.983 267.244 78.457] +/A << /S /GoTo /D (class_parameter_code_aa15af7fc19b63e3842c1730d6c464853) >> +>> endobj +8246 0 obj << +/D [8244 0 R /XYZ 69.866 801.979 null] +>> endobj +8243 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8290 0 obj << +/Length 2144 +/Filter /FlateDecode +>> +stream +xZKFﯠQ $Ue;]%98>X"@aP6ɯO<`@HJɹ̣~^^|xrVQ[VL$8ȵ+, זNN}^P'*oY&J{bqۅ S[&xm/ +㧉 fn 0# + ^.n1I8$_HH\q%?rwzk;g=wYʕf|Wp۱~̞Wj^ ˪*"Uյ,1HG'3Zp5#Wʪ1#k?5@{㥾5w}B zs;l)oԚrՀnM(//q6f +zPV~> +^7v<5>OC%>8BlM{f^6z–5 +?Tw 0xr&ȋ;J^ޔ”d!Nih9<=)仩>';jڢa$,: Mtgx\ ǁGb\ n \x]n Fa)z"I#.ц쇼ٌBQ.b_گQɕW^s$Q#;HJ>MJXp݉½靈cf'hĂV[-%78]r {00裼+f5{ᬔ+u}3p'0S$3/ENP;tY9o੊@b"h*9r(k`UXxS9TMUc]ɠxh.rϧjlD"ci֙ JZvV^Fejr6;>HtXIډ=sg[<bkS[)M~Vj4 +K.70ݹY 5Y(j})gd"R)ÁsQ$zg) P:,QE@W+9Ooc=KE_Y֌P ytkT6*?Eԏ) 9S" 5NF)뻪|D{B> R.-+vRw≺wc,=T1}}V-4-~3m68): ATàz٦ f/꺪G>378Ss>ED-:-ǩR-ԉjc4Cպ@ݔb6*us1ϡtew+wPR' 'ViYU.9x9=2$_m!H0Ckt|{\/Py+>Dz'J}UVY%.뱣t%8w+R95nO|۶(Nm_RBՌd@xAYľ'H@I: +BfW 8(Cdz:5F@-(FI|eF,B*;csǼGhj}iEtzRE<-+%R5)eۥJ-G߭|xQq˃Zyhv 4;Pp)Rr,kM|-/\.^^'hHBøWXOl}g_ @]24 }O6EP;)ϕ"NjeK@{(JVӶrԦJL5ݰM#uJ Ҳ:YfʼQ,cb}TkTPݪl +endstream +endobj +8289 0 obj << +/Type /Page +/Contents 8290 0 R +/Resources 8288 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8248 0 R +/Annots [ 8241 0 R 8242 0 R 8269 0 R 8270 0 R 8271 0 R 8272 0 R 8273 0 R 8274 0 R 8275 0 R 8276 0 R 8277 0 R 8278 0 R 8279 0 R 8280 0 R 8281 0 R 8282 0 R 8283 0 R 8284 0 R 8285 0 R 8286 0 R 8287 0 R ] +>> endobj +8241 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 744.953 272.722 755.427] +/A << /S /GoTo /D (class_parameter_code_a2d0752d2a36dcc59026ee5afbc475831) >> +>> endobj +8242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 716.511 188.018 726.985] +/A << /S /GoTo /D (class_parameter_code_ac0aa424c63a083d5dd46e45fd0cd071f) >> +>> endobj +8269 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 677.11 182.961 687.584] +/A << /S /GoTo /D (class_parameter_code_a2f03a14e3f937193ed05b44b332c72f4) >> +>> endobj +8270 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 637.709 184.539 648.183] +/A << /S /GoTo /D (class_parameter_code_a35b5bf3035e3e77e8f6b3af0e7f3cbdd) >> +>> endobj +8271 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 598.2 168.355 608.782] +/A << /S /GoTo /D (class_parameter_code_a27a0956c0cf773371a4a45cab7ac538e) >> +>> endobj +8272 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 569.866 169.619 580.134] +/A << /S /GoTo /D (class_parameter_code_ab160bb168c782479330c2bc83e20c7e5) >> +>> endobj +8273 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 541.424 219.947 551.692] +/A << /S /GoTo /D (class_parameter_code_a48a87958496857f3248adf5dc1a4ce04) >> +>> endobj +8274 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 512.982 222.619 523.457] +/A << /S /GoTo /D (class_parameter_code_a629a7615ac2fd13c2872b459bb7ea246) >> +>> endobj +8275 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.56 497.953 390.125 507.58] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8276 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.775 497.953 473.984 507.58] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +8277 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 484.432 237.566 494.808] +/A << /S /GoTo /D (class_parameter_code_a99d43f3bd5c63476c0861df5c3a0c851) >> +>> endobj +8278 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.146 469.415 334.711 479.138] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8279 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 456.098 206.955 466.572] +/A << /S /GoTo /D (class_parameter_code_ac9de2b206b5285ede493970ebe773af4) >> +>> endobj +8280 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 427.548 169.35 437.924] +/A << /S /GoTo /D (class_parameter_code_abf9a97fb9da41635cdd881baaa9312d3) >> +>> endobj +8281 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 399.214 181.114 409.482] +/A << /S /GoTo /D (class_parameter_code_aead33191ff4786c0de1241b940d8ca61) >> +>> endobj +8282 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 370.664 188.78 381.04] +/A << /S /GoTo /D (class_parameter_code_a96213fcf8761742fa24c3f4e1c0e264e) >> +>> endobj +8283 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 342.222 194.546 352.598] +/A << /S /GoTo /D (class_parameter_code_a016c3b6d2d92b725e08969cca989d4bc) >> +>> endobj +8284 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 313.888 210.218 324.156] +/A << /S /GoTo /D (class_parameter_code_a010c8bd777442bf8c547c5ecf6874cf5) >> +>> endobj +8285 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 285.446 201.736 295.92] +/A << /S /GoTo /D (class_parameter_code_ae5c9b6ccc15e66103106afc52dfaa90b) >> +>> endobj +8286 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 257.004 205 267.272] +/A << /S /GoTo /D (class_parameter_code_adf15cecb04e6ace568d821177e6a8ec0) >> +>> endobj +8287 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.958 228.562 201.512 238.83] +/A << /S /GoTo /D (class_parameter_code_a9351f4aeb562c43eddf27290cffb5684) >> +>> endobj +8291 0 obj << +/D [8289 0 R /XYZ 69.866 801.979 null] +>> endobj +1646 0 obj << +/D [8289 0 R /XYZ 70.866 198.646 null] +>> endobj +1650 0 obj << +/D [8289 0 R /XYZ 70.866 138.17 null] +>> endobj +8216 0 obj << +/D [8289 0 R /XYZ 70.866 113.143 null] +>> endobj +1654 0 obj << +/D [8289 0 R /XYZ 70.866 113.143 null] +>> endobj +8217 0 obj << +/D [8289 0 R /XYZ 70.866 68.979 null] +>> endobj +8288 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F82 5877 0 R /F73 4716 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8314 0 obj << +/Length 1135 +/Filter /FlateDecode +>> +stream +x͘Ko8B.fIiiڸiD[je+z"i=M+ғ3 C!km!zf9{.pFX˕ DZ#! 9 Bpo;U5,J(bU#]Z2_:% K| QH !VZ(NBdcjm >UwJ= 65_sVȚWEJ!9Z5#UR:ӂf[ZIq + >q+63t[5.Aִ6PYу< ,lq\י +7' K.^酒HͷziTQ}Ŕ'=x9P3%S-L r+I7zF[֭|kLv[ޟp[҅ȭ$1<_KaڛtP|FCxRO!;mo.*cPP:,0T0m'M ❌;lut4⛫2ޘIgii_jd:YdXʞ;zO7Wd~8`tlr#7vt}8:I'?ۡZOۉS:j0w%qq'dF/XtGQkMҰ'(mO\#Ib>8#3kDJ.S 3BxC -F r%>#SZT7BbCq"ꏌ> bsbK$;FGYk&,/@E48LEΤ N%Xm?yڽU{1W*> endobj +8310 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.204 543.088 292.61 553.563] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8311 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.378 543.088 393.784 553.563] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8315 0 obj << +/D [8313 0 R /XYZ 69.866 801.979 null] +>> endobj +1658 0 obj << +/D [8313 0 R /XYZ 70.866 771.024 null] +>> endobj +8262 0 obj << +/D [8313 0 R /XYZ 70.866 734.097 null] +>> endobj +1662 0 obj << +/D [8313 0 R /XYZ 70.866 717.302 null] +>> endobj +8200 0 obj << +/D [8313 0 R /XYZ 70.866 662.753 null] +>> endobj +1666 0 obj << +/D [8313 0 R /XYZ 70.866 645.959 null] +>> endobj +8205 0 obj << +/D [8313 0 R /XYZ 70.866 603.365 null] +>> endobj +1670 0 obj << +/D [8313 0 R /XYZ 70.866 586.571 null] +>> endobj +8210 0 obj << +/D [8313 0 R /XYZ 70.866 544.085 null] +>> endobj +1674 0 obj << +/D [8313 0 R /XYZ 70.866 527.29 null] +>> endobj +8212 0 obj << +/D [8313 0 R /XYZ 70.866 484.696 null] +>> endobj +1678 0 obj << +/D [8313 0 R /XYZ 70.866 467.902 null] +>> endobj +8213 0 obj << +/D [8313 0 R /XYZ 70.866 425.2 null] +>> endobj +1682 0 obj << +/D [8313 0 R /XYZ 70.866 408.406 null] +>> endobj +8211 0 obj << +/D [8313 0 R /XYZ 70.866 365.812 null] +>> endobj +1686 0 obj << +/D [8313 0 R /XYZ 70.866 349.018 null] +>> endobj +8215 0 obj << +/D [8313 0 R /XYZ 70.866 306.424 null] +>> endobj +1690 0 obj << +/D [8313 0 R /XYZ 70.866 289.629 null] +>> endobj +8257 0 obj << +/D [8313 0 R /XYZ 70.866 247.143 null] +>> endobj +1694 0 obj << +/D [8313 0 R /XYZ 70.866 230.349 null] +>> endobj +8301 0 obj << +/D [8313 0 R /XYZ 70.866 187.648 null] +>> endobj +1698 0 obj << +/D [8313 0 R /XYZ 70.866 170.853 null] +>> endobj +8198 0 obj << +/D [8313 0 R /XYZ 70.866 128.367 null] +>> endobj +1702 0 obj << +/D [8313 0 R /XYZ 70.866 111.572 null] +>> endobj +8258 0 obj << +/D [8313 0 R /XYZ 70.866 68.871 null] +>> endobj +8312 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8320 0 obj << +/Length 1490 +/Filter /FlateDecode +>> +stream +xXMs6WVpƢA;3=$:q4QN0Kl$R!)łHJd:.xX[s[W7ȷb' CϚ>Xw0D8kMg-KBnB׉#tUeE"ݬT^:+r]NGG.rmc'Fwܚ;;^[[sXZ_Fq;".6Cx;~cs"jWv=}d)WV夘 3Y*۬'2v>7JڮL }W9˭P~5X=a7EZ˙\.CHZ,J!#珐PfgP za +Lm?fL# :5PL%l?8!.rel("ؑI.DX` $>G~jQ&k Sďxp*ħX-> | 4?6-ŷ]K8G~(VF5q1exdɗyg>ˬR9gp@qܤӆ%rBa6pgz,/j{,`Z zLϚEqpz^}`Y @FcEsRFwf=nqOFUB:'C@ݰr` @TmanUY|=Ap3q"fu[tzӯ H) M3gp"8h4Vng$5b)R+Rz5wJdE $꘽!]+K@b=SY/"˫CFU;5Pa-@߬jO“^T*)kӎ^O ޛA=>%"JovQ_UZ!b_CVܼQㇾEBaXwtH.$vڷ"ӟm5oeػ$8.X:" +}܏1h:ahlW*WeW6.6cJiZo4at+;-}kq;P9n] +endstream +endobj +8319 0 obj << +/Type /Page +/Contents 8320 0 R +/Resources 8318 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8248 0 R +/Annots [ 8316 0 R 8317 0 R ] +>> endobj +8316 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 651.977 100.276 662.451] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8317 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.999 437.485 525.406 448.067] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8321 0 obj << +/D [8319 0 R /XYZ 69.866 801.979 null] +>> endobj +1706 0 obj << +/D [8319 0 R /XYZ 70.866 771.024 null] +>> endobj +8266 0 obj << +/D [8319 0 R /XYZ 70.866 722.437 null] +>> endobj +1710 0 obj << +/D [8319 0 R /XYZ 70.866 707.119 null] +>> endobj +8264 0 obj << +/D [8319 0 R /XYZ 70.866 652.973 null] +>> endobj +1714 0 obj << +/D [8319 0 R /XYZ 70.866 637.655 null] +>> endobj +8263 0 obj << +/D [8319 0 R /XYZ 70.866 583.401 null] +>> endobj +1718 0 obj << +/D [8319 0 R /XYZ 70.866 568.083 null] +>> endobj +8252 0 obj << +/D [8319 0 R /XYZ 70.866 513.829 null] +>> endobj +1722 0 obj << +/D [8319 0 R /XYZ 70.866 498.511 null] +>> endobj +8250 0 obj << +/D [8319 0 R /XYZ 78.344 428.521 null] +>> endobj +1726 0 obj << +/D [8319 0 R /XYZ 70.866 413.019 null] +>> endobj +8307 0 obj << +/D [8319 0 R /XYZ 70.866 369.017 null] +>> endobj +1730 0 obj << +/D [8319 0 R /XYZ 70.866 353.699 null] +>> endobj +8251 0 obj << +/D [8319 0 R /XYZ 70.866 311.4 null] +>> endobj +1734 0 obj << +/D [8319 0 R /XYZ 70.866 296.082 null] +>> endobj +8162 0 obj << +/D [8319 0 R /XYZ 70.866 253.784 null] +>> endobj +1738 0 obj << +/D [8319 0 R /XYZ 70.866 238.465 null] +>> endobj +8309 0 obj << +/D [8319 0 R /XYZ 70.866 185.996 null] +>> endobj +1742 0 obj << +/D [8319 0 R /XYZ 70.866 170.678 null] +>> endobj +8308 0 obj << +/D [8319 0 R /XYZ 70.866 126.595 null] +>> endobj +1746 0 obj << +/D [8319 0 R /XYZ 70.866 111.277 null] +>> endobj +8195 0 obj << +/D [8319 0 R /XYZ 70.866 68.871 null] +>> endobj +8318 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8325 0 obj << +/Length 1334 +/Filter /FlateDecode +>> +stream +xڵXKo8W9IZ=4nMlK-162JT]Sd!grrz1 ؝Go-p(fsFL;vaL,oبD[p)V݋U'6.1I̞Ϝrc}5ıJG`|\[;9sku?{œ$Q\W8S`'Tkc{xgXn NE{vA*TM +F XSV;_ q)XF U;p>w(O6G"{uXeR'A&?8*bŨT;bľIWS80TG U0%v8ۯ' 6hBw<_Q62ykɒf\ig+{II&E] +(!\kآtO:P%GeA`mka#1;oN(ev9b{ki' NϪhG')->ݷvL4ADYV1p =>ڋ%?8:3ޱvm -Ӑz8Ahs@VR!5R*~sf@rqLŴ~xT].o'T3[ *j|CQun% eDOXQ̰c(L)p:8Wz8KeݵBsG*}8:Dۿe䤹J<`PNkؼt(O8=A@/yǂ֤sQ[ klTyȠ[Yx^ >><Vh˾~q1Ho"5`hmf=mo0`{EG%}*l] ~38{־DՆ!@G^`)oDvojk|vtd:H F+FpcEoQy="& JH˵.'փԀ yYxoOU{hUtXf~c Z- P"?q3_g0f5䡺!E +~S\c$RAaD՞$ оzRmx3xo^7TW@l5T~)tk7ZvRy "%)VZչ6& 5lFP2A϶DL 4ۣJ̍IX(8 +B7{ .Q<~U3O%e U x#l eFW/vjs\v|_pCL +endstream +endobj +8324 0 obj << +/Type /Page +/Contents 8325 0 R +/Resources 8323 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8248 0 R +/Annots [ 8322 0 R ] +>> endobj +8322 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.869 138.148 222.961 148.73] +/A << /S /GoTo /D (class_event_code_a7ce7fa1807af9b040e3066ef62a35e6c) >> +>> endobj +8326 0 obj << +/D [8324 0 R /XYZ 69.866 801.979 null] +>> endobj +1750 0 obj << +/D [8324 0 R /XYZ 70.866 771.024 null] +>> endobj +8306 0 obj << +/D [8324 0 R /XYZ 70.866 724.212 null] +>> endobj +1754 0 obj << +/D [8324 0 R /XYZ 70.866 708.31 null] +>> endobj +8199 0 obj << +/D [8324 0 R /XYZ 70.866 664.002 null] +>> endobj +1758 0 obj << +/D [8324 0 R /XYZ 70.866 648.1 null] +>> endobj +8267 0 obj << +/D [8324 0 R /XYZ 70.866 605.685 null] +>> endobj +1762 0 obj << +/D [8324 0 R /XYZ 70.866 589.782 null] +>> endobj +8268 0 obj << +/D [8324 0 R /XYZ 70.866 547.367 null] +>> endobj +1766 0 obj << +/D [8324 0 R /XYZ 70.866 531.465 null] +>> endobj +8292 0 obj << +/D [8324 0 R /XYZ 70.866 489.157 null] +>> endobj +1770 0 obj << +/D [8324 0 R /XYZ 70.866 473.255 null] +>> endobj +8202 0 obj << +/D [8324 0 R /XYZ 70.866 430.732 null] +>> endobj +1774 0 obj << +/D [8324 0 R /XYZ 70.866 414.83 null] +>> endobj +8208 0 obj << +/D [8324 0 R /XYZ 70.866 372.414 null] +>> endobj +1778 0 obj << +/D [8324 0 R /XYZ 70.866 356.512 null] +>> endobj +8253 0 obj << +/D [8324 0 R /XYZ 70.866 314.204 null] +>> endobj +1782 0 obj << +/D [8324 0 R /XYZ 70.866 298.302 null] +>> endobj +8259 0 obj << +/D [8324 0 R /XYZ 70.866 255.887 null] +>> endobj +1786 0 obj << +/D [8324 0 R /XYZ 70.866 239.984 null] +>> endobj +7608 0 obj << +/D [8324 0 R /XYZ 70.866 197.462 null] +>> endobj +1790 0 obj << +/D [8324 0 R /XYZ 70.866 181.559 null] +>> endobj +8196 0 obj << +/D [8324 0 R /XYZ 70.866 139.144 null] +>> endobj +1794 0 obj << +/D [8324 0 R /XYZ 70.866 123.242 null] +>> endobj +8197 0 obj << +/D [8324 0 R /XYZ 70.866 68.979 null] +>> endobj +8323 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8330 0 obj << +/Length 1707 +/Filter /FlateDecode +>> +stream +xڥXKs6WVr&bH):qj;Ni[IB$%sJ..8N|~N/4rwNy:قi,w{_( <:=xzs[YthWl@vn9gj -YYo󈒵'pD|1 Bc&VgϏ2oAi֗ I x,vBݹ\0u*_;H^CExcbYYH)XWBok _ +4$k;_+}tؙ [1^chsn]ou Y/@AQivmyH NX n*Ery +1"I+,{Ѿ8c6fb-`[U& + +ONHQ}x',+X01K+ji"bGNpe,COZEZ ߲Gy~e蛆O:HoЕ#|ku[85+ݍrk*ѶS@`U뢒:R~A,2cK[`Z4m7` VO?nbC]27QE~{"baӜ;lSV}ZSO3m`kTO4G ˊ`T!bk&ll725!݉9\dߞ1-ۊ¬8.z7 {z՜.SuGa.NK"k^yY6xښbS NTڔF@4ff!:!A h +`yMAM0&rf\)^=8qaJ­Oveԕuėd_j.7܂uyëAdYu1njinMo~Rb$ߨyvL+%e)lW3WϗzR74Wb>c^o0/dר0,n6RZG8Z>hOqR-8w?v4DI_%Ki>`@ř@o؆ӤI<)֧53P+(LaKaڢ.TwizU6bTf[jB)J*;& ;WqUj-/?FFptDuЙX`Wճ\k>5018a?!̂2OPk-z]&k%<&l0;MspwofA}[8=4`b48gl|}`^(`kce"ectOoU~fF0NۭaI(DjV+dIfd6(oL;#֦ ^ݛd?Ք.k(uTcR#POeч>Rtng_ W'K +89хebpg6ĊȰ(1ApV[}3mǞ?K05%n2>H6Db_{Wlx+=[?q8&Ibw#rlrP,ۘ Ѩ̕~L2?g~i^M}aygi%T 2rәWEA07LLtgqjy > endobj +8327 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.64 314.84 273.593 325.422] +/A << /S /GoTo /D (class_game_property_key_afb02ab4aae7ce3f39f4cf0ee5bc9b9c0) >> +>> endobj +8331 0 obj << +/D [8329 0 R /XYZ 69.866 801.979 null] +>> endobj +1798 0 obj << +/D [8329 0 R /XYZ 70.866 771.024 null] +>> endobj +8265 0 obj << +/D [8329 0 R /XYZ 70.866 722.248 null] +>> endobj +1802 0 obj << +/D [8329 0 R /XYZ 70.866 705.983 null] +>> endobj +8293 0 obj << +/D [8329 0 R /XYZ 296.599 606.331 null] +>> endobj +1806 0 obj << +/D [8329 0 R /XYZ 70.866 588.179 null] +>> endobj +8295 0 obj << +/D [8329 0 R /XYZ 70.866 533.736 null] +>> endobj +1810 0 obj << +/D [8329 0 R /XYZ 70.866 517.471 null] +>> endobj +8294 0 obj << +/D [8329 0 R /XYZ 70.866 462.921 null] +>> endobj +1814 0 obj << +/D [8329 0 R /XYZ 70.866 446.656 null] +>> endobj +7717 0 obj << +/D [8329 0 R /XYZ 70.866 392.321 null] +>> endobj +1818 0 obj << +/D [8329 0 R /XYZ 70.866 376.056 null] +>> endobj +8203 0 obj << +/D [8329 0 R /XYZ 275.089 317.831 null] +>> endobj +1822 0 obj << +/D [8329 0 R /XYZ 70.866 299.571 null] +>> endobj +8207 0 obj << +/D [8329 0 R /XYZ 70.866 257.084 null] +>> endobj +1826 0 obj << +/D [8329 0 R /XYZ 70.866 240.819 null] +>> endobj +8303 0 obj << +/D [8329 0 R /XYZ 70.866 186.376 null] +>> endobj +1830 0 obj << +/D [8329 0 R /XYZ 70.866 170.111 null] +>> endobj +8201 0 obj << +/D [8329 0 R /XYZ 70.866 127.731 null] +>> endobj +1834 0 obj << +/D [8329 0 R /XYZ 70.866 111.466 null] +>> endobj +8249 0 obj << +/D [8329 0 R /XYZ 70.866 68.979 null] +>> endobj +8328 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8335 0 obj << +/Length 1649 +/Filter /FlateDecode +>> +stream +xڵXKs6Wp| 912CF3i:r/n IBq<.%Crzba_ q6q.'?.'/I,\; 8vYYέAM$u#nf5}- +Uu8kɁhw6>-N,'_&%IS? B''SC|6K;-Y;a(d0_'N RCgO9IL}rx?ěRB`y+F8[xAxtRʴo5S?$"V+i"/lv`/qA Z΀th&WQإu'%LO9/4*NO}'Ǐmx05\6q!تminz0pԪ!სAc7͆div5OPgF +{I0!C`Ҫi{.PWC7 7u!qct +endstream +endobj +8334 0 obj << +/Type /Page +/Contents 8335 0 R +/Resources 8333 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8338 0 R +/Annots [ 8332 0 R 8337 0 R ] +>> endobj +8332 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.743 338.91 525.406 349.492] +/A << /S /GoTo /D (class_actor_properties) >> +>> endobj +8337 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 327.063 113.08 337.537] +/A << /S /GoTo /D (class_actor_properties) >> +>> endobj +8336 0 obj << +/D [8334 0 R /XYZ 69.866 801.979 null] +>> endobj +1838 0 obj << +/D [8334 0 R /XYZ 70.866 771.024 null] +>> endobj +8163 0 obj << +/D [8334 0 R /XYZ 70.866 734.304 null] +>> endobj +1842 0 obj << +/D [8334 0 R /XYZ 70.866 718.006 null] +>> endobj +8304 0 obj << +/D [8334 0 R /XYZ 70.866 665.34 null] +>> endobj +1846 0 obj << +/D [8334 0 R /XYZ 70.866 649.042 null] +>> endobj +8302 0 obj << +/D [8334 0 R /XYZ 70.866 604.656 null] +>> endobj +1850 0 obj << +/D [8334 0 R /XYZ 70.866 588.358 null] +>> endobj +8305 0 obj << +/D [8334 0 R /XYZ 515.732 518.279 null] +>> endobj +1854 0 obj << +/D [8334 0 R /XYZ 70.866 499.986 null] +>> endobj +8206 0 obj << +/D [8334 0 R /XYZ 70.866 457.491 null] +>> endobj +1858 0 obj << +/D [8334 0 R /XYZ 70.866 441.193 null] +>> endobj +8254 0 obj << +/D [8334 0 R /XYZ 70.866 398.699 null] +>> endobj +1862 0 obj << +/D [8334 0 R /XYZ 70.866 382.401 null] +>> endobj +8261 0 obj << +/D [8334 0 R /XYZ 70.866 328.059 null] +>> endobj +1866 0 obj << +/D [8334 0 R /XYZ 70.866 311.761 null] +>> endobj +8256 0 obj << +/D [8334 0 R /XYZ 70.866 257.204 null] +>> endobj +1870 0 obj << +/D [8334 0 R /XYZ 70.866 240.906 null] +>> endobj +8296 0 obj << +/D [8334 0 R /XYZ 70.866 198.519 null] +>> endobj +1874 0 obj << +/D [8334 0 R /XYZ 70.866 182.221 null] +>> endobj +8260 0 obj << +/D [8334 0 R /XYZ 70.866 139.619 null] +>> endobj +1878 0 obj << +/D [8334 0 R /XYZ 70.866 123.321 null] +>> endobj +8214 0 obj << +/D [8334 0 R /XYZ 70.866 68.871 null] +>> endobj +8333 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8353 0 obj << +/Length 1568 +/Filter /FlateDecode +>> +stream +xڭXms8_LC$^LڴgK뇶VlZ\~m(mj_g2AiG+ kn bt::}V쎕 7Vʊƞ5Ym)qziJqĦYTsE}nRuRgї’[q^`šKK8K+}7 pܺ5phEvz熱s;5EU^l:27+ L33nlژkAE; &x/ax+|E.l 8Z [w/lSK9?;W"!ȾXip19~[} +zY]ʖYN(l߃B7 +F;{<bO uGq"QzNnOyV-Ha"ep(8jUB> +GG/B ʾ5&d\ +-'q$ő6bN +v'w4aŁ5XaSg CqBř 6Jڐ맆ӰN08ICNڹnNy6 kwJaj2m#I"$Q#dNڐl}֦|]>Z Vs͠4t%5% +نuhl®7-5ϙ$&"?Mwd:ޖ}*Ƈ.;@!aY![}zƨg؇}{0Z:yijP5o7?JY#9?/d}蠂#z3@ć*>dF0ǒ>*џg O2Vnɶnt<(#cf'C͠C[/2>s)z+zgb Jփ}WhƵeRO`JpYQXjM:_HuTh> endobj +8339 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.13 302.684 380.536 313.159] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8340 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.039 302.684 473.383 313.159] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +8341 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [290.089 242.79 320.495 253.373] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8342 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [122.205 160.255 207.736 170.73] +/A << /S /GoTo /D (class_photon_animator_view) >> +>> endobj +8343 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.493 143.191 252.639 153.106] +/A << /S /GoTo /D (interface_i_pun_observable) >> +>> endobj +8344 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 81.735 195.846 92.21] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_layer) >> +>> endobj +8345 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 67.983 215.276 78.457] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_parameter) >> +>> endobj +8354 0 obj << +/D [8352 0 R /XYZ 69.866 801.979 null] +>> endobj +1882 0 obj << +/D [8352 0 R /XYZ 70.866 771.024 null] +>> endobj +8209 0 obj << +/D [8352 0 R /XYZ 70.866 734.03 null] +>> endobj +1886 0 obj << +/D [8352 0 R /XYZ 70.866 716.904 null] +>> endobj +8161 0 obj << +/D [8352 0 R /XYZ 70.866 674.352 null] +>> endobj +1890 0 obj << +/D [8352 0 R /XYZ 70.866 657.226 null] +>> endobj +8255 0 obj << +/D [8352 0 R /XYZ 70.866 602.611 null] +>> endobj +1894 0 obj << +/D [8352 0 R /XYZ 70.866 585.485 null] +>> endobj +8297 0 obj << +/D [8352 0 R /XYZ 70.866 542.717 null] +>> endobj +1898 0 obj << +/D [8352 0 R /XYZ 70.866 525.591 null] +>> endobj +8204 0 obj << +/D [8352 0 R /XYZ 70.866 482.931 null] +>> endobj +1902 0 obj << +/D [8352 0 R /XYZ 70.866 465.805 null] +>> endobj +8298 0 obj << +/D [8352 0 R /XYZ 70.866 423.253 null] +>> endobj +1906 0 obj << +/D [8352 0 R /XYZ 70.866 406.126 null] +>> endobj +8299 0 obj << +/D [8352 0 R /XYZ 70.866 363.359 null] +>> endobj +1910 0 obj << +/D [8352 0 R /XYZ 70.866 346.233 null] +>> endobj +8300 0 obj << +/D [8352 0 R /XYZ 70.866 303.68 null] +>> endobj +1914 0 obj << +/D [8352 0 R /XYZ 70.866 286.554 null] +>> endobj +8053 0 obj << +/D [8352 0 R /XYZ 70.866 243.787 null] +>> endobj +1918 0 obj << +/D [8352 0 R /XYZ 70.866 225.488 null] +>> endobj +8355 0 obj << +/D [8352 0 R /XYZ 70.866 122.719 null] +>> endobj +8351 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8386 0 obj << +/Length 1888 +/Filter /FlateDecode +>> +stream +xYY6~[% fHM6$ȱ!ɃVm5Jr7n!n;xg !V֞O']K86_j.FhOCB{Ɣ~N496AfF ~'A;4Yƒg[N01>_N'LHy򨥅ɇOX[K #;A,DeB;f_&X#j&15kN}AA\p8 +A9sB>6\զD+}nU0mGg 7nZ;Ax~cXX2NlXA(yrOfP8 > !ٻ}dy'ip{PmJm[?.I2c +hbY[,wUd$*&rPg$\gi5d.B=oE +(n ٢7_5G>9(#]!8W@Z=$’ʣ5*yJFO- +я7=M"(|WhWB>4c:Ȳ{k]Q\:iP[O<ᚕ #1Ȁ;3vKR؄L ˷ŚƢt.9\ bE);OS_&Lv>sgl%O!,ҥʙ(@|уDEq,[J堪\;p2&\"ς3R̖e,WcVY>8UWF̆bė(/|"MDt:ɂ\f*(AB@~- ӰGu ӄvFT~Ys#]hC#/ZD &[` }Bim}gpx&xPGD~@a0OY4C!Ǯdt~&pևf'@l#cn\Jn r'`ǀb$;*\lBUԁXc_"$n v*" ҝ +k؏-[4,ުSvҁ|h#;x?џEmWsb'e-yM&՚+A9䛷(E(6@VŪSŻhAqێ+P(2Hڹ<9*e@Y!VB[r%js[Ai1sQR>f.A DM0m]e8N "rXˊrDX8պKZˋ% +Ӯjp$P7n)$ʊC)@鼵(r$NM/vFeuW GܓJ p݆ee" a$)N98*1)H"bVs|dy2)J5;Y?چZϗł@/:puC:u1xc⮳oo36@W> endobj +8346 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.237 734.207 185.492 744.476] +/A << /S /GoTo /D (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894) >> +>> endobj +8347 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.745 734.207 283.29 744.476] +/A << /S /GoTo /D (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894a22ae0e2b89e5e3d477f988cc36d3272b) >> +>> endobj +8348 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.296 734.207 387.879 744.476] +/A << /S /GoTo /D (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894a1686a6c336b71b36d77354cea19a8b52) >> +>> endobj +8349 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.886 734.207 500.44 744.476] +/A << /S /GoTo /D (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894ac26f15e86e3de4c398a8273272aba034) >> +>> endobj +8350 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 722.145 186.844 732.521] +/A << /S /GoTo /D (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894af698f67f5666aff10729d8a1cb1c14d2) >> +>> endobj +8358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.692 708.624 189.738 719.098] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167f) >> +>> endobj +8359 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.901 708.624 303.005 719.098] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167fab9f5c797ebbf55adccdd8539a65a0241) >> +>> endobj +8360 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.49 708.624 426.773 719.098] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167fa4984667940802dedc139aa7a430a6553) >> +>> endobj +8361 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [445.258 708.624 525.406 719.098] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167fa535863a82f163709557e59e2eb8139a7) >> +>> endobj +8389 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 696.799 142.03 707.143] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167fa535863a82f163709557e59e2eb8139a7) >> +>> endobj +8362 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 636.14 206.211 646.723] +/A << /S /GoTo /D (class_photon_animator_view_ad411c8f3e398f0b7b7ebcc09543f6cfe) >> +>> endobj +8363 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 596.04 246.595 606.514] +/A << /S /GoTo /D (class_photon_animator_view_adc769a9e9d902955529aa36fd7f94c77) >> +>> endobj +8364 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 566.683 266.025 577.265] +/A << /S /GoTo /D (class_photon_animator_view_a58c3ae7da3a1217062dd6f510c69e5a8) >> +>> endobj +8365 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.961 537.541 197.113 548.015] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_layer) >> +>> endobj +8366 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.847 537.541 304.935 548.015] +/A << /S /GoTo /D (class_photon_animator_view_a5cd222a56cf3364aea3fa1d2641383ed) >> +>> endobj +8367 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.961 508.291 216.543 518.766] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_parameter) >> +>> endobj +8368 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.276 508.291 343.794 518.766] +/A << /S /GoTo /D (class_photon_animator_view_a03c466f84479ffeb0509324adfa27c5b) >> +>> endobj +8369 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 479.042 164.823 489.517] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167f) >> +>> endobj +8370 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.323 479.042 271.799 489.517] +/A << /S /GoTo /D (class_photon_animator_view_aca2599e3520233dd0a92550d2fef3781) >> +>> endobj +8371 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 449.685 164.823 460.267] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167f) >> +>> endobj +8372 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.323 449.685 291.229 460.267] +/A << /S /GoTo /D (class_photon_animator_view_ab5c89d5d60a51fdd97b883f85d27a10f) >> +>> endobj +8373 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 420.543 205.099 431.018] +/A << /S /GoTo /D (class_photon_animator_view_a1ee474865e5e736760591b1c50644413) >> +>> endobj +8374 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [266.175 420.543 336.221 431.018] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167f) >> +>> endobj +8375 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 391.186 224.529 401.768] +/A << /S /GoTo /D (class_photon_animator_view_a4baf9e4d43b5cd41c0a1e0514ec63829) >> +>> endobj +8376 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.839 391.186 342.094 401.768] +/A << /S /GoTo /D (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894) >> +>> endobj +8377 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.39 391.186 434.437 401.768] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167f) >> +>> endobj +8378 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 361.937 209.483 372.519] +/A << /S /GoTo /D (class_photon_animator_view_aa061f0b6fb761c3da8635b9ce7e85c8b) >> +>> endobj +8379 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.969 361.937 272.273 372.519] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +8380 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.159 361.937 386.628 372.519] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +8381 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.098 346.612 525.406 356.238] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8391 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 337.259 128.268 345.094] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8382 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [122.205 262.082 207.736 272.556] +/A << /S /GoTo /D (class_photon_animator_view) >> +>> endobj +8383 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.039 232.394 257.57 242.977] +/A << /S /GoTo /D (class_photon_animator_view) >> +>> endobj +8387 0 obj << +/D [8385 0 R /XYZ 69.866 801.979 null] +>> endobj +8388 0 obj << +/D [8385 0 R /XYZ 70.866 775.009 null] +>> endobj +8390 0 obj << +/D [8385 0 R /XYZ 70.866 677.049 null] +>> endobj +1922 0 obj << +/D [8385 0 R /XYZ 70.866 321.422 null] +>> endobj +1926 0 obj << +/D [8385 0 R /XYZ 70.866 216.557 null] +>> endobj +8392 0 obj << +/D [8385 0 R /XYZ 70.866 191.448 null] +>> endobj +1930 0 obj << +/D [8385 0 R /XYZ 70.866 191.448 null] +>> endobj +8393 0 obj << +/D [8385 0 R /XYZ 88.314 133.691 null] +>> endobj +8394 0 obj << +/D [8385 0 R /XYZ 88.314 117.074 null] +>> endobj +8395 0 obj << +/D [8385 0 R /XYZ 88.314 100.456 null] +>> endobj +8396 0 obj << +/D [8385 0 R /XYZ 88.314 83.839 null] +>> endobj +8397 0 obj << +/D [8385 0 R /XYZ 70.866 70.866 null] +>> endobj +8384 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R /F109 6535 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8412 0 obj << +/Length 1358 +/Filter /FlateDecode +>> +stream +xXIs6WHT0v^2ʹQ{Ir%XD"]>,EE@{ M#4\(iJɢ]0RF*Hh4>C$AZ1X/Y]'Ct|U S4Y; #5ҔGWMۇ#\D\0$b}>'FTخmZԬ5 -lh(ɐ`cS$*^.,-B8+YSV&!"~H8ѧU1NgUBq\w+;6DxuokȽзp%EhH J1=RSY2C{qCp!Ri FiWyZs3?C"Pz2?9@Y4ya/e]7HT:ʼnBh8Bmxj:YcZndk@N9BonH'~ 2{f58_U>i21` SBmt^ܰ] g0Nfflē3~O +3A g_I⻄AV7t-7 z?PqV |{lej>gw:иO-E.\|YaZ6bM\bp[g}UjQ C%-\?uy.d'BYaZڙg +kwS\L<TcGqasa5dQ3z6mތ/ӱИfç ++N.+i;Ҕaf(drp |2iړn_3Xyuِa3xPJ>0rCTE$^;ɚq7iACRcw<U ps.HAa ̊P'cdY_p ,͒[iu(!`WϪK=:V0ٱ9'PbT6 bJҢ@ +,9*҃8pm5 v<2W؞ǃssyBOs5Rw]z'zmG>;殗@1k2=B@o|{ڋ22WPڒ!wm'[*}okJ!ߠdVu)xЛ")RJL*6YIReJG +8t<I/v\x<~>?!+'ԉ;@u:+EKyA&##*K`+K 4xtwUr>KD +#HĠUa_$=A;- Db"{;ݹ Z@?YoyӾ*WJL>m hc +endstream +endobj +8411 0 obj << +/Type /Page +/Contents 8412 0 R +/Resources 8410 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8338 0 R +>> endobj +8413 0 obj << +/D [8411 0 R /XYZ 69.866 801.979 null] +>> endobj +1934 0 obj << +/D [8411 0 R /XYZ 70.866 771.024 null] +>> endobj +8398 0 obj << +/D [8411 0 R /XYZ 88.314 721.113 null] +>> endobj +8399 0 obj << +/D [8411 0 R /XYZ 88.314 705.172 null] +>> endobj +8400 0 obj << +/D [8411 0 R /XYZ 88.314 689.232 null] +>> endobj +1938 0 obj << +/D [8411 0 R /XYZ 70.866 673.88 null] +>> endobj +8401 0 obj << +/D [8411 0 R /XYZ 70.866 647.206 null] +>> endobj +1942 0 obj << +/D [8411 0 R /XYZ 70.866 647.206 null] +>> endobj +8402 0 obj << +/D [8411 0 R /XYZ 70.866 591.108 null] +>> endobj +1946 0 obj << +/D [8411 0 R /XYZ 70.866 575.868 null] +>> endobj +8403 0 obj << +/D [8411 0 R /XYZ 70.866 438.276 null] +>> endobj +1950 0 obj << +/D [8411 0 R /XYZ 70.866 423.035 null] +>> endobj +8406 0 obj << +/D [8411 0 R /XYZ 70.866 285.336 null] +>> endobj +1954 0 obj << +/D [8411 0 R /XYZ 70.866 270.095 null] +>> endobj +8407 0 obj << +/D [8411 0 R /XYZ 70.866 134.207 null] +>> endobj +1958 0 obj << +/D [8411 0 R /XYZ 70.866 118.966 null] +>> endobj +8410 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F109 6535 0 R /F39 4678 0 R /F115 6693 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8426 0 obj << +/Length 2040 +/Filter /FlateDecode +>> +stream +xڽY[s6~ׯe {g36N;[)R%*98o8n"s·;w^-s8.%a9W7NYNH +*s>1r%ؽTmU̷i[R^iӐN,wUʵOqZ:wDZXz w2hKb{n?X{ 7p&af .w:ݪVK!Fkf0𙈏+~N0p"_2Zz 4Fp`>I`Cߊ@0ߏt]/.D,x٫xTгMF(We $,j> /FF×OS($;r?"_qߌ~7RrPkpًlݾfjVff@ w9<.WsΛ':.N#0ҏ (z鄁CmrjmjԹ*?pzWeSpO1N  ueڐ(:Д^Vk@^DL:=XN +hԣͷ!q-ZhԺ*Sx4I[4U̼L:-I8V{Zf4\nts,mʌ6%j:ubd<9!K"HdF>X=Du8*M +W<=h$ĤTRR27gHMe[ƹ6F4lԻgj6lߖvhj:n0]MRS;N(f c,oT{@,VdkTK[YT5GTF&+aS jMJ9oHgK׻V56].rHؒvWrϩT_mbS q}V[v &YA:h> +PnEJ,i&/,i)|Cf23TMV䗑q)e6›`}c3nZU{2EϘ7/N`<"aM"FO`v:%f;I.@L@V!vzhʇ "5Oӫ"|k+q`L؃FAkfǷ8WB8Wd;a)ty@PLdvF|uєP Y&cݜN~)QR҈U92!Ow2L*V4O=LelZV#J1leLb'JlA<i#'vPm&額}ΘN&zSkC Qtt=NXYs|GcAZ˴+jKLal q*S:*4A0 v)~i8<čдf_x=>%QUگ!@Q|Q;մG;~복Ǖ=q I$^=Ƕ-iw~/'寽J|tރnNSO^=r2v)%3U !8ǹ-E?ˠ+wjn(`A؝ϚaN8^_3؃obWqHgܦ|>I1 +*d2»rC{IUr W= /՚Sr/77sk+ ṵP}Y>ޛ+r? +endstream +endobj +8425 0 obj << +/Type /Page +/Contents 8426 0 R +/Resources 8424 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8338 0 R +/Annots [ 8414 0 R 8415 0 R 8416 0 R 8428 0 R 8417 0 R 8418 0 R 8419 0 R 8420 0 R 8421 0 R 8422 0 R 8423 0 R ] +>> endobj +8414 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.714 580.952 196.865 609.225] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_layer) >> +>> endobj +8415 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.714 470.558 216.295 498.831] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_parameter) >> +>> endobj +8416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 403.072 525.406 413.547] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8428 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 392.901 91.113 401.385] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.942 373.385 451.598 383.967] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 363.241 220.405 372.012] +/A << /S /GoTo /D (class_photon_network_ac23d14ad150a87d51f4ffaa286db29e1) >> +>> endobj +8419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 349.475 174.068 360.057] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +8420 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.249 319.895 356.906 330.477] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8421 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.206 290.316 473.863 300.898] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8422 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.189 260.736 258.493 271.318] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +8423 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 160.15 184.846 170.625] +/A << /S /GoTo /D (group__public_api_ga78c69bbb6f79d1e4fb23d3f761eaf4aa) >> +>> endobj +8427 0 obj << +/D [8425 0 R /XYZ 69.866 801.979 null] +>> endobj +8404 0 obj << +/D [8425 0 R /XYZ 70.866 684.083 null] +>> endobj +1962 0 obj << +/D [8425 0 R /XYZ 70.866 668.843 null] +>> endobj +8405 0 obj << +/D [8425 0 R /XYZ 70.866 571.986 null] +>> endobj +1966 0 obj << +/D [8425 0 R /XYZ 70.866 556.745 null] +>> endobj +6708 0 obj << +/D [8425 0 R /XYZ 70.866 461.592 null] +>> endobj +1970 0 obj << +/D [8425 0 R /XYZ 70.866 446.351 null] +>> endobj +8408 0 obj << +/D [8425 0 R /XYZ 70.866 161.146 null] +>> endobj +1974 0 obj << +/D [8425 0 R /XYZ 70.866 145.906 null] +>> endobj +8424 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F82 5877 0 R /F115 6693 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8439 0 obj << +/Length 1662 +/Filter /FlateDecode +>> +stream +xYKs6WVr&B @23=$qqiXINKh$#x%$z ~odMz1J`֋0"AI[ ˴1b5+i\2="0{(7[n`/wo=X{f 9C<.v81\Es}@C?-ӕeWYk B"eapAXp/ +)€r&(քY bk9q$h8@zi(eygR~ߏ6a|*l} ߆^녴Ѐcq8 =(F 1HFZEYꟀp_N1YNrm(J̞ͬmu*hP4i4ml(<#놈)JXHCc1:R qeVi]ԕ>`Gײ՜k`?E7I0}|T\R-t'n5Xf5&ܫ۔#v{[@tYBCg= o3auTvup+(7vm[& +o@(I` o A@VS&ޤrk"Q(efSӝY8YXܬ]DgU>#gV>B)C Bd}̝`빝dr?9Og LO8Ȓ\bĨ6*[AN{ێ%[pdx{,$DɰM$fIT +)=UE0qPQǃڧ L&Re*fm##:C*~MA ̯J,YQ4S0 oa,e>Cm :e{JiLx%*ݷX䷯S{+;VˆONuʹ ˑwc&e 7OzVr.{ 8,qmG^uSJ#`UmR7mUdvm.ӹ}gwc#3"Z"McK]c&lɳb՞eF^XMgmm~5G,@uOҮ\c'bȂL!]KȞwr55 &j$#)&N|˹ВIp~ +k(կrE{O {3=n25Hֵ|`zx*HX]ERgQٗd3[8,ɶ.E>@]M{ΒVBRY9hAѦ} +-Ѡ|="WT]e#8|UflW2dkcUOMnZEmYTFV#(8-p?J9q0ZotڝӪ~ *Nu(}.4mV2pM` wJ=ߙ2S=}!l) np;p/Ԭ$L雹a ,/"h,!Ptl)AK TRMYMU]t|v僛簧"N]:UK!_HP=6_c!16N91=//h$BSbH.{pURLk0.'c"gp{E(I7-ґl[-7ͧkۿg~Xw/4 +endstream +endobj +8438 0 obj << +/Type /Page +/Contents 8439 0 R +/Resources 8437 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8338 0 R +/Annots [ 8429 0 R 8430 0 R 8431 0 R 8432 0 R 8433 0 R 8434 0 R 8435 0 R 8436 0 R ] +>> endobj +8429 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.352 496.319 267.758 506.901] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8430 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 399.091 134.777 409.566] +/A << /S /GoTo /D (class_photon_lag_simulation_gui_ab080d78f9ae59eeb2779b5e61be897bb) >> +>> endobj +8431 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 383.545 143.384 394.019] +/A << /S /GoTo /D (class_photon_lag_simulation_gui_abc9399cb95160e6994a1ad8661adbdc5) >> +>> endobj +8432 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [115.704 315.789 167.88 326.263] +/A << /S /GoTo /D (class_photon_lag_simulation_gui_a1d267bda81b30f6b32f77e4b5cc90649) >> +>> endobj +8433 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 284.406 147.957 292.971] +/A << /S /GoTo /D (class_photon_lag_simulation_gui_a0e20da80809bd2181828edabed39ccc9) >> +>> endobj +8434 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 251.401 142.434 259.885] +/A << /S /GoTo /D (class_photon_lag_simulation_gui_ad790a872afa4c4c1b34401f55982203a) >> +>> endobj +8435 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.171 164.675 164.652 174.59] +/A << /S /GoTo /D (class_photon_lag_simulation_gui_ad6ae62fc67cdb2936b13029ec7c68d64) >> +>> endobj +8436 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.352 79.83 267.758 90.412] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8440 0 obj << +/D [8438 0 R /XYZ 69.866 801.979 null] +>> endobj +8409 0 obj << +/D [8438 0 R /XYZ 70.866 721.901 null] +>> endobj +1978 0 obj << +/D [8438 0 R /XYZ 70.866 700.553 null] +>> endobj +6722 0 obj << +/D [8438 0 R /XYZ 70.866 575.064 null] +>> endobj +1982 0 obj << +/D [8438 0 R /XYZ 70.866 552.544 null] +>> endobj +8441 0 obj << +/D [8438 0 R /XYZ 70.866 442.713 null] +>> endobj +8442 0 obj << +/D [8438 0 R /XYZ 70.866 359.411 null] +>> endobj +8443 0 obj << +/D [8438 0 R /XYZ 70.866 207.944 null] +>> endobj +1986 0 obj << +/D [8438 0 R /XYZ 70.866 126.62 null] +>> endobj +8437 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8462 0 obj << +/Length 1211 +/Filter /FlateDecode +>> +stream +xXKs6WHX03CgT@ E:$ .Hzr}EoXZKZг"k(0$`u1zĎ9AL% lu"mhH!׃ݩw;"{7 b+=uIQ|0SMv:/L% yU%DO"wHF2Wo`W F d|ͥz޲ dJ2 |ֹQ!ke8Z$ueeU5Q\4WNwP+@ e9Mmx}a!ThǐgIR. /^聩.aǽطbPuFR; 1:sGF2rHݡ&r0u L@:TU\!t仑XH`cqo7=`g ¾@G 8a1\ #wdIU k㫩EݖQì̠QrM+ })43ӼL? L&8%U i\$r 5av진$BŃc<^SK\]C3p;e㟆Va7<զ_ϺL%2.ROż;HUaivgæbBISpRf +Qsy0{gрѯ[aR%t44*~f)E9ԩWh&:XlCZ1%.OEk]x + mOC-ܺUg#- Hk&ޒ[w`= vM.cw`ݕ?P3azω|)7G Ā%kNn?}z> p)x`?8ONY`f~/ ǽ<]'Y6'_ +endstream +endobj +8461 0 obj << +/Type /Page +/Contents 8462 0 R +/Resources 8460 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8467 0 R +/Annots [ 8450 0 R 8451 0 R 8452 0 R 8453 0 R 8454 0 R 8455 0 R 8456 0 R 8457 0 R 8458 0 R 8459 0 R ] +>> endobj +8450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 284.683 176.246 295.265] +/A << /S /GoTo /D (struct_photon_message_info_a8497209fff12bb41b79d010905e1cb39) >> +>> endobj +8451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.731 284.683 235.1 295.265] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.064 284.683 319.409 295.265] +/A << /S /GoTo /D (struct_photon_message_info_a8a9879f9d95f99f4d066aba32d5853ca) >> +>> endobj +8453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [322.401 284.683 372.058 295.265] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 270.47 188.914 281.053] +/A << /S /GoTo /D (struct_photon_message_info_adf3bb70090d012d863d915f564e7018f) >> +>> endobj +8455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.654 207.925 187.023 218.193] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8456 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.523 207.925 216.925 218.193] +/A << /S /GoTo /D (struct_photon_message_info_a99d31effc25e87b9fc7129adba5fa188) >> +>> endobj +8457 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.654 193.712 181.311 203.981] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8458 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.811 193.712 230.473 203.981] +/A << /S /GoTo /D (struct_photon_message_info_ac170e8d3714ad1f3f3c848feea660ac5) >> +>> endobj +8459 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.006 131.059 167.351 141.327] +/A << /S /GoTo /D (struct_photon_message_info_a8a9879f9d95f99f4d066aba32d5853ca) >> +>> endobj +8463 0 obj << +/D [8461 0 R /XYZ 69.866 801.979 null] +>> endobj +1990 0 obj << +/D [8461 0 R /XYZ 70.866 771.024 null] +>> endobj +8445 0 obj << +/D [8461 0 R /XYZ 70.866 753.299 null] +>> endobj +1994 0 obj << +/D [8461 0 R /XYZ 70.866 753.299 null] +>> endobj +8444 0 obj << +/D [8461 0 R /XYZ 70.866 726.187 null] +>> endobj +1998 0 obj << +/D [8461 0 R /XYZ 70.866 726.187 null] +>> endobj +2002 0 obj << +/D [8461 0 R /XYZ 70.866 700.935 null] +>> endobj +8448 0 obj << +/D [8461 0 R /XYZ 70.866 675.551 null] +>> endobj +2006 0 obj << +/D [8461 0 R /XYZ 70.866 675.551 null] +>> endobj +8447 0 obj << +/D [8461 0 R /XYZ 70.866 630.814 null] +>> endobj +2010 0 obj << +/D [8461 0 R /XYZ 70.866 612.606 null] +>> endobj +8446 0 obj << +/D [8461 0 R /XYZ 70.866 569.838 null] +>> endobj +2014 0 obj << +/D [8461 0 R /XYZ 70.866 551.63 null] +>> endobj +2018 0 obj << +/D [8461 0 R /XYZ 70.866 490.438 null] +>> endobj +8449 0 obj << +/D [8461 0 R /XYZ 70.866 462.962 null] +>> endobj +2022 0 obj << +/D [8461 0 R /XYZ 70.866 462.962 null] +>> endobj +6160 0 obj << +/D [8461 0 R /XYZ 70.866 420.425 null] +>> endobj +2026 0 obj << +/D [8461 0 R /XYZ 70.866 401.045 null] +>> endobj +8464 0 obj << +/D [8461 0 R /XYZ 70.866 326.45 null] +>> endobj +8465 0 obj << +/D [8461 0 R /XYZ 70.866 249.585 null] +>> endobj +8466 0 obj << +/D [8461 0 R /XYZ 70.866 172.719 null] +>> endobj +2030 0 obj << +/D [8461 0 R /XYZ 70.866 113.848 null] +>> endobj +8460 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8501 0 obj << +/Length 1813 +/Filter /FlateDecode +>> +stream +xYKw8WsjUwwm8nH 4y@n&~^`0N6fV`ҽ݇dl-,l9z5;z:%aYa%5˭ šmBőe4΄D}²͊V<أG. Ŗ(&.a+w,$ȕ +|Diu@܊ڳ\ ;F3q11^o2jrBw]A Qo\ْqVM:p&MVs ln{L,,0 +IhP󜕩C}ئuς1_Cl?Km{GBı.@OAXjlt{}?T|=jG3MPf Eᖆ&^ @eBxqi&%Jy2)ͶdV8LuS VY͜.[å&K $CbQ4gU.uWRa\ϿMR +܃些Usƚ 17ϻ1}gDH9*Ws.P &rЁ#"hU%xUBMA +2 B[nKo4f ʿ݉ +d-$*QtT^@R S:iMV~Kx4%U5w˺B̙n=/ ] 9`PH8G͢3|(ͣFp!5]U "Dcٶ4(a!k~%$Ӓ.RoT`W8-4: +H2~Z2I=Swq,8oDU~f &҉~ŘTT"o`lTZ^Rc~N[CڊpَR&:Y`ϯ -g 3Xwh:+*?3##O/P@WTj٬QoJI5BO;'"[|._CB^b7B{5H]wّԌF}YSգ eIQ Mݗڦ HA COmpWM7|4})tbs+m$ +5c'p_d| O>{1$EhÖJ4YٺU| ScQgj;l&66'H fR%zڣ)r52汕:_-Y}>.rz$"` +;;mp49+*BΌ:. qb9Ks̩iʻ|"mTlEf=3*Z'g֢y,|SB߾8 LLiC3D fdݙcLhe99\|լ2!c|gU秪4v emrÝ-syޝ60 +?>!CDЗxEa #Q3J@Њ)7<[ӫYvu% /kp*]_vB`jʿU +endstream +endobj +8500 0 obj << +/Type /Page +/Contents 8501 0 R +/Resources 8499 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8467 0 R +/Annots [ 8473 0 R 8474 0 R 8475 0 R 8476 0 R 8477 0 R 8478 0 R 8479 0 R 8480 0 R 8481 0 R 8482 0 R 8483 0 R 8484 0 R 8485 0 R 8486 0 R 8487 0 R 8488 0 R 8489 0 R 8490 0 R 8491 0 R 8492 0 R 8493 0 R 8494 0 R 8495 0 R 8496 0 R ] +>> endobj +8473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.523 495.559 237.854 505.935] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +8474 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.376 437.549 209.268 448.131] +/A << /S /GoTo /D (class_photon_network_a90ec16d1df1a0332d0ad16493d641f56) >> +>> endobj +8475 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 364.656 207.582 375.131] +/A << /S /GoTo /D (class_photon_network_af4ff9e4128181a1a4974c20bf899a4c4) >> +>> endobj +8476 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 336.56 228.33 347.142] +/A << /S /GoTo /D (class_photon_network_a0fdb79bcce45801ec81fbe56ffb939ec) >> +>> endobj +8477 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.365 336.56 310.46 347.142] +/A << /S /GoTo /D (class_photon_network_a2a8b1690325d73930d6bc8b99d8e736d) >> +>> endobj +8478 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.217 321.769 177.782 331.492] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8479 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 308.571 209.806 319.153] +/A << /S /GoTo /D (class_photon_network_a981e7244e915f41e18cb9da5f12fc858) >> +>> endobj +8480 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [439.562 308.571 493.657 319.153] +/A << /S /GoTo /D (class_photon_network_a2a8b1690325d73930d6bc8b99d8e736d) >> +>> endobj +8481 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.947 293.78 184.512 303.503] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8482 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 280.69 182.486 291.165] +/A << /S /GoTo /D (class_photon_network_aa93441ca5a719b31dddb38e4aaeccf7c) >> +>> endobj +8483 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 252.701 223.847 263.176] +/A << /S /GoTo /D (class_photon_network_ab7c39b4f0ec783b86b59cb2460332058) >> +>> endobj +8484 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 224.605 250.217 235.187] +/A << /S /GoTo /D (class_photon_network_afba456bbc9d1525b87eb060c959af2b6) >> +>> endobj +8485 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.252 224.605 332.347 235.187] +/A << /S /GoTo /D (class_photon_network_a2a8b1690325d73930d6bc8b99d8e736d) >> +>> endobj +8486 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.677 209.814 191.242 219.537] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8487 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 196.616 210.81 207.198] +/A << /S /GoTo /D (class_photon_network_a84b7be74d130b19eeeb1d7b4e8193ad4) >> +>> endobj +8488 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.296 196.616 289.543 207.198] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819b) >> +>> endobj +8489 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.494 196.616 398.589 207.198] +/A << /S /GoTo /D (class_photon_network_a2a8b1690325d73930d6bc8b99d8e736d) >> +>> endobj +8490 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.712 181.825 195.277 191.548] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8491 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 168.627 240.999 179.209] +/A << /S /GoTo /D (class_photon_network_a7dc90dd05d697c3f8f04e50cc0e039b2) >> +>> endobj +8492 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [244.485 168.627 319.732 179.209] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819b) >> +>> endobj +8493 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.727 153.836 418.611 163.559] +/A << /S /GoTo /D (class_photon_network_afba456bbc9d1525b87eb060c959af2b6) >> +>> endobj +8494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 140.639 246.074 151.221] +/A << /S /GoTo /D (class_photon_network_a6ffa9e23d8060c9898064cda0a21710b) >> +>> endobj +8495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 112.757 231.119 123.232] +/A << /S /GoTo /D (class_photon_network_a43f616ce19891d3de81269a7821c5656) >> +>> endobj +8496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.745 84.661 246.477 95.243] +/A << /S /GoTo /D (class_photon_network_aebed3f221d6a2d918cb734a15b9df8e0) >> +>> endobj +8502 0 obj << +/D [8500 0 R /XYZ 69.866 801.979 null] +>> endobj +2034 0 obj << +/D [8500 0 R /XYZ 70.866 771.024 null] +>> endobj +8468 0 obj << +/D [8500 0 R /XYZ 70.866 753.871 null] +>> endobj +2038 0 obj << +/D [8500 0 R /XYZ 70.866 753.871 null] +>> endobj +2042 0 obj << +/D [8500 0 R /XYZ 70.866 727.33 null] +>> endobj +8470 0 obj << +/D [8500 0 R /XYZ 70.866 702.517 null] +>> endobj +2046 0 obj << +/D [8500 0 R /XYZ 70.866 702.517 null] +>> endobj +2050 0 obj << +/D [8500 0 R /XYZ 70.866 675.976 null] +>> endobj +8472 0 obj << +/D [8500 0 R /XYZ 70.866 651.164 null] +>> endobj +2054 0 obj << +/D [8500 0 R /XYZ 70.866 651.164 null] +>> endobj +8471 0 obj << +/D [8500 0 R /XYZ 70.866 624.623 null] +>> endobj +2058 0 obj << +/D [8500 0 R /XYZ 70.866 624.623 null] +>> endobj +2062 0 obj << +/D [8500 0 R /XYZ 70.866 599.943 null] +>> endobj +8469 0 obj << +/D [8500 0 R /XYZ 70.866 573.038 null] +>> endobj +2066 0 obj << +/D [8500 0 R /XYZ 70.866 573.038 null] +>> endobj +6022 0 obj << +/D [8500 0 R /XYZ 70.866 548.59 null] +>> endobj +2070 0 obj << +/D [8500 0 R /XYZ 70.866 548.59 null] +>> endobj +8503 0 obj << +/D [8500 0 R /XYZ 70.866 477.531 null] +>> endobj +8504 0 obj << +/D [8500 0 R /XYZ 70.866 404.53 null] +>> endobj +8499 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8564 0 obj << +/Length 2444 +/Filter /FlateDecode +>> +stream +x[KsFW`s Xe"xtK Wa~vo(Y*Xγ~4S{򯛓_W ;B L#}-نoi7Y ǞL ?-s{ئ4Rd1Ld2u,;pt &_n>9vb¦fU ڮN>1>jB\i@9ӮOsbJ&Yca`ejضǩPôSE,؞dw9>ДQN,J$)vA զ9L7Y۶amjF膂K*/~j M3\W=l)JӪ,1OhiS7@\1tkTtJx Wl8LΝJ7<]QL3h 4ZHmZm6Bj$/= +r|WgT,%aѓ޶(ODaϘ^! +A({*B_d"cfej$gH䈑5(QbiI)Tv5g,@Y)):vgVg*:99uA؞c/McI^O\\}86ϳ@:Oi"([;%g(خEj|RL,Ԩ8QZbNmHq +[aT?)K$drԢO|gⲍݔ, }*5D4'4=Fj2Sa?Szh2FV*ﯕVAk86hBnQםMFpA;"=HF p#` ۀQwtF;-b߆]F,^"ۺ̓+!ctC`ӏg.B;[nD`A0-ku>O3V]tFVG66t;cF8sq=ƥkF`z~uYTǹGƜ0w}PR@+ 9zhQd[ڴe "_PZټn[Z;^ Uon2aꈂ_S:H&B\Z^Y,1!:G)kRJ6(W0VhgQDiKeSvV#)ޚ .W&%f'b۝8Ih?BvSb~`^B;#aDž0|>*ƆJQy*J,w7+ёr@ QkWܹCXV\NQKTF8OlJt +2wb~LKG[Oh鄠Z8{'QZwZ9/#"j)&d~de%qxdNOmǮ)h {]?Q+*IWr6\CFwzB]F* QY;uK:#J4 k65sj+lsc!уi1axߔ mvFhE?sng\/JuQnR c߶iyko]_pvOTP:ys Mlr +endstream +endobj +8563 0 obj << +/Type /Page +/Contents 8564 0 R +/Resources 8562 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8467 0 R +/Annots [ 8497 0 R 8498 0 R 8519 0 R 8520 0 R 8521 0 R 8522 0 R 8523 0 R 8524 0 R 8525 0 R 8526 0 R 8527 0 R 8528 0 R 8529 0 R 8530 0 R 8531 0 R 8532 0 R 8533 0 R 8534 0 R 8535 0 R 8536 0 R 8537 0 R 8538 0 R 8539 0 R 8540 0 R 8541 0 R 8542 0 R 8543 0 R 8544 0 R 8545 0 R 8546 0 R 8547 0 R 8548 0 R 8549 0 R 8550 0 R 8551 0 R 8552 0 R 8553 0 R 8554 0 R 8555 0 R 8556 0 R 8557 0 R 8558 0 R 8559 0 R 8560 0 R ] +>> endobj +8497 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 758.177 203.673 768.652] +/A << /S /GoTo /D (class_photon_network_aa4005f5ff36461d51f9d2c2c326550ac) >> +>> endobj +8498 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 730.473 183.248 740.948] +/A << /S /GoTo /D (class_photon_network_aeb81fe77dfd0ebf7c8a63191a6a8fced) >> +>> endobj +8519 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 691.702 186.691 702.284] +/A << /S /GoTo /D (class_photon_network_a5c08f89cdf5766c1b69d5b7b8786b734) >> +>> endobj +8520 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.072 677.15 481.173 686.776] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +8521 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 663.998 190.448 674.58] +/A << /S /GoTo /D (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74) >> +>> endobj +8522 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 625.334 190.448 635.916] +/A << /S /GoTo /D (class_photon_network_a08435c2d064fd6a85e51e1520e5a63d8) >> +>> endobj +8523 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.672 625.334 324.475 635.916] +/A << /S /GoTo /D (class_room_options) >> +>> endobj +8524 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.148 625.334 431.137 635.916] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +8525 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.394 597.63 193.207 608.212] +/A << /S /GoTo /D (class_photon_network_ab979353e224caa01b6ff654e6d131fef) >> +>> endobj +8526 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.915 597.63 331.718 608.212] +/A << /S /GoTo /D (class_room_options) >> +>> endobj +8527 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.496 597.63 441.485 608.212] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +8528 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 557.97 179.984 568.552] +/A << /S /GoTo /D (class_photon_network_a8c94dd51fe8e8986117b499161ff4461) >> +>> endobj +8529 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.723 543.418 338.15 553.044] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) >> +>> endobj +8530 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 530.266 179.984 540.848] +/A << /S /GoTo /D (class_photon_network_aa323d9dd09d0a64352d5232f8fe23996) >> +>> endobj +8531 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.723 515.714 338.15 525.34] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) >> +>> endobj +8532 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 502.561 216.853 513.144] +/A << /S /GoTo /D (class_photon_network_a902344ffd109a23f1a0606599af5eb96) >> +>> endobj +8533 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [294.077 502.561 350.88 513.144] +/A << /S /GoTo /D (class_room_options) >> +>> endobj +8534 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [407.553 502.561 457.542 513.144] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +8535 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.797 474.857 221.015 485.439] +/A << /S /GoTo /D (class_photon_network_af022551a359708341bd3b73c3c946f68) >> +>> endobj +8536 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.002 474.857 361.805 485.439] +/A << /S /GoTo /D (class_room_options) >> +>> endobj +8537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.161 474.857 473.15 485.439] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +8538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 435.305 213.868 445.779] +/A << /S /GoTo /D (class_photon_network_aa9a112ccaaf71a296b823e9637584445) >> +>> endobj +8539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 407.601 213.868 418.075] +/A << /S /GoTo /D (class_photon_network_a08119a6962c1d179a34d0388927ead3c) >> +>> endobj +8540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.354 407.601 259.533 418.075] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +8541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.764 379.896 220.997 390.371] +/A << /S /GoTo /D (class_photon_network_a50fc7126ad9a866ce32951d87f13e8ed) >> +>> endobj +8542 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.047 379.896 270.226 390.371] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +8543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 367.833 172.507 378.209] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85e) >> +>> endobj +8544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.955 367.833 291.944 378.209] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +8545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 328.174 191.443 338.756] +/A << /S /GoTo /D (class_photon_network_a026d325f77bc2f87f2d4926ba64f21da) >> +>> endobj +8546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 300.577 180.226 311.051] +/A << /S /GoTo /D (class_photon_network_a62c512b8fe143fac07ff55e849aa48d5) >> +>> endobj +8547 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 272.872 180.226 283.347] +/A << /S /GoTo /D (class_photon_network_a631231346113712f11319749d6e1a3eb) >> +>> endobj +8548 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.712 272.872 233.701 283.347] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +8549 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 245.168 187.803 255.643] +/A << /S /GoTo /D (class_photon_network_a941ac37ca7e275c93f3a1f95f0df84ae) >> +>> endobj +8550 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 217.464 187.561 227.938] +/A << /S /GoTo /D (class_photon_network_abb27939f0325b53c94f5ad52199b63b7) >> +>> endobj +8551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 189.759 158.788 200.234] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +8552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.38 189.759 219.691 200.234] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +8553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [222.287 175.099 259.019 184.726] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +8554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 162.055 249.428 172.529] +/A << /S /GoTo /D (class_photon_network_a3badca00ee2bacec4eaccac76002f0ac) >> +>> endobj +8555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [252.913 162.055 295.092 172.529] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +8556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 134.243 268.992 144.825] +/A << /S /GoTo /D (class_photon_network_a4c59e3c4feeaf44293eef1d8d19b98a2) >> +>> endobj +8557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.917 95.687 184.53 106.162] +/A << /S /GoTo /D (class_photon_network_aa9088b089a8c1b3548f8a7a792146e50) >> +>> endobj +8558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.869 95.687 491.379 106.162] +/A << /S /GoTo /D (class_raise_event_options) >> +>> endobj +8559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.57 81.027 408.281 90.654] +/A << /S /GoTo /D (class_event_code) >> +>> endobj +8560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 67.983 192.259 78.457] +/A << /S /GoTo /D (class_photon_network_a2eefb7151b27169d11062be9996a0eab) >> +>> endobj +8565 0 obj << +/D [8563 0 R /XYZ 69.866 801.979 null] +>> endobj +8562 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8618 0 obj << +/Length 2419 +/Filter /FlateDecode +>> +stream +xZ[o~ϯ@uT&Mm>b1Yt%y3CĹi>987ѱc0;x{4ȎгfWı0&k֧̚sϖ2;xIUI4z//D?:`@XEv|uc0^Y7reg>.[8g_͜wx3'cV.<gf|:^&Ɓ3"c7%yǫDij7e [~ k'Hz'04o%C׵سg38A%a +;WdEM$(rAb>H=f9/͆{S#g'p:c ]1y"s-g#IUs4@^D H!чCAAnX5%O>1 U!9ȽXFi15x~>%_d&3.-T{c6[ :wQg-{RP#U]]'ÀcREn'+~*׹O;I4{ȊK%*ov9E244&QzFKY +e:iηl,P|جo@:mH@z?-UpVݳ~Is+k4oy%6Wo?Omlw{;Eqpx D9"/t p| DHHaأO덾H0;B%4|Mv^Hw~oc_`x] - 0BVdU +l܂.O?CMP Up(wS (p'|b{$\lpfKZl)jQhw_Λ,U뒦gFᶷ +T %Wc$شҍԦ{.^Pd{3x#ԝ-Mꓵ&f+ޕZU +@lo-R=Bz,g!pދ`UɫVїb,TTe;~vސWL.xn@ByiiO_*M% HZmL&ʁٴRkJjErSHdSRC0Y7h)n4hq7lsu)D~bThɀN|Y005]g̿6;g>˧Yl藓/XɮBg|Z d'H|+|QU˿U׻W]lQT_2_ѱ| A'*V~ߪc<^v74E ^kg^yЍR34Z|͊.MV/EgmQF79ab3J2 +=#^Jbʼ zfYm }"m(Q^Us^@2QiRwR |6T6sJ"ClQَCȈcĎIeHꟾ`s%Gtx~FJһXșԔspGC ;p~3#AK׶{ +M[ *$\ +`AUc + +aH#6&\3`T +N[hne_&o!cwq% TugUm. ej1LtE|*Vkp?z'nuo~JGk0a`noj~(:kF]^6M6<wdhz_to PE#=`搱ЎY5PEugak &jw ʠ %N옍vH 9sV k,[>cNT3Ӗʆ.#kˡNB_Zȱ'avcN٠ϖI\,PBuoP_lppcdEd^*ɮi{} CPu +endstream +endobj +8617 0 obj << +/Type /Page +/Contents 8618 0 R +/Resources 8616 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8467 0 R +/Annots [ 8561 0 R 8585 0 R 8586 0 R 8587 0 R 8588 0 R 8589 0 R 8590 0 R 8591 0 R 8592 0 R 8593 0 R 8594 0 R 8595 0 R 8596 0 R 8597 0 R 8598 0 R 8599 0 R 8600 0 R 8601 0 R 8602 0 R 8603 0 R 8604 0 R 8605 0 R 8606 0 R 8607 0 R 8608 0 R 8609 0 R 8610 0 R 8611 0 R 8612 0 R 8613 0 R ] +>> endobj +8561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 745.037 217.678 755.511] +/A << /S /GoTo /D (class_photon_network_a8a2bd25668b204f681c7d27174735ba1) >> +>> endobj +8585 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 716.763 210.469 727.238] +/A << /S /GoTo /D (class_photon_network_ae5c32625fb17b425e105de49ea267ddf) >> +>> endobj +8586 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.016 688.382 214.378 698.964] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8587 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.197 660.108 215.56 670.69] +/A << /S /GoTo /D (class_photon_network_a6dbc821988042fe109d28017cd955c73) >> +>> endobj +8588 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.251 619.879 268.945 630.462] +/A << /S /GoTo /D (class_photon_network_a890353cbe3141ca134a1b0e28aa8ea9f) >> +>> endobj +8589 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 568.692 164.544 579.274] +/A << /S /GoTo /D (class_photon_network_a901a33962274b4467919acd868016d6b) >> +>> endobj +8590 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 540.526 231.845 551] +/A << /S /GoTo /D (class_photon_network_a88ef2952a1d0a468d5ba2bff48fa084c) >> +>> endobj +8591 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 512.144 242.057 522.727] +/A << /S /GoTo /D (class_photon_network_a3b8d0c1cefdf577e1dff8aecb147b7fd) >> +>> endobj +8592 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 483.979 207.896 494.453] +/A << /S /GoTo /D (class_photon_network_a9cc8da229d513fce2fddbc5e2c6eaed2) >> +>> endobj +8593 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.382 483.979 266.75 494.453] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8594 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 455.705 203.404 466.179] +/A << /S /GoTo /D (class_photon_network_a85b058bab4a369d0c5730cf43b462962) >> +>> endobj +8595 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.89 455.705 262.258 466.179] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8596 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 427.324 169.521 437.906] +/A << /S /GoTo /D (class_photon_network_a52fdada993f0729be0912113c0ddb3f8) >> +>> endobj +8597 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.007 427.324 222.664 437.906] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8598 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.513 412.487 348.403 422.113] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.235 412.487 435.126 422.113] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 388.091 169.521 398.673] +/A << /S /GoTo /D (class_photon_network_abade51a8c3af0e9c280c2817f9ca15e5) >> +>> endobj +8601 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 359.817 224.878 370.4] +/A << /S /GoTo /D (class_photon_network_a4c8c84b764c759a16296a1f3ebe48c46) >> +>> endobj +8602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.364 359.817 283.733 370.4] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 320.585 224.878 331.167] +/A << /S /GoTo /D (class_photon_network_aa3e39af39baae3611730b914a8fe6f8b) >> +>> endobj +8604 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 281.46 179.482 291.935] +/A << /S /GoTo /D (class_photon_network_a3b52beccf64860705cc467d7abf9fc41) >> +>> endobj +8605 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 242.12 195.335 252.702] +/A << /S /GoTo /D (class_photon_network_a0b99a01696f62ff29e005e6f939f8dc4) >> +>> endobj +8606 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.821 242.12 254.189 252.702] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8607 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 202.887 195.335 213.469] +/A << /S /GoTo /D (class_photon_network_a808fc6d1770c999fb1f5716abb45451a) >> +>> endobj +8608 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.821 202.887 248.477 213.469] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 163.655 227.73 174.237] +/A << /S /GoTo /D (class_photon_network_ae6fd306fd4adf0c44d64d9cfadc038aa) >> +>> endobj +8610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.287 139.465 203.177 147.3] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 124.422 273.87 135.004] +/A << /S /GoTo /D (class_photon_network_adbb6045e5c8e64e0076cadbcb62703b5) >> +>> endobj +8612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.868 96.256 364.389 106.731] +/A << /S /GoTo /D (class_photon_network_a89e99e64c1b6232132012bc311e7e205) >> +>> endobj +8613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 67.875 224.439 78.457] +/A << /S /GoTo /D (class_photon_network_af7728267e9576c7b2d205df53ac74fe1) >> +>> endobj +8619 0 obj << +/D [8617 0 R /XYZ 69.866 801.979 null] +>> endobj +8616 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8670 0 obj << +/Length 2469 +/Filter /FlateDecode +>> +stream +xZYsF~ׯ%` ."*Dze}(lmJв{HQ8U=_C2'/"0v0ADq!OEcd!*QGgy"nِHpQy%>P8 h}x쎙?H?~׋ǃK5s9 |bPmHGx8ٍ}8%gH&HΟL3iۚ<sS;>YpXJ@VyƧm~8q)aU?y-ޏsY Fs)kj?0t ޏ tdTYQĉlj!{˹ZxuRoذaTVT#|>krHs=;[=6tV!pC,z(ps_mBԫE4"ߔNR!{Eb]( _n%.w3|/#z:O@t%@Mdr!'Qmy Ǒ^Z*K* CQPYFfn^)o? +nwE~e[^duE]r{HD'9SkJUVVZ2B(e o%ɜ>I0R|2Q$*REJl4HNKVt-XJ3fwWɒ_w-vUդVhv,@-'&婵ϒ];_dFbx#4~\}7KA+jlpX$ha*|EͭUR-ԥYX.^FedXA^FA*Lx >Yv #'WgciU7\W56 h<7R̨@KwC߻(GꜼ}'MQwLaVG>XxW`6oq`Qf?d9퇛SŎr>0N[uVt}`a`bwt3 @P S ͋,oGՊW]m}Ƨ%y'Rh}&lhriWu|[FLiO*YG=EuJ8u7*E qq +At-xO&Ѷ|Si2 XL̟Iɷh-rwVY&~)/U,%ۺQYpZԈ|Zw:W\3rΫ7?QRqP}.o4;،\_?X@/L^@~$G?cgEVTZ]</W0P7AA +endstream +endobj +8669 0 obj << +/Type /Page +/Contents 8670 0 R +/Resources 8668 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8467 0 R +/Annots [ 8614 0 R 8615 0 R 8638 0 R 8639 0 R 8640 0 R 8641 0 R 8642 0 R 8643 0 R 8644 0 R 8645 0 R 8646 0 R 8647 0 R 8648 0 R 8649 0 R 8650 0 R 8651 0 R 8652 0 R 8653 0 R 8654 0 R 8655 0 R 8656 0 R 8657 0 R 8658 0 R 8659 0 R 8660 0 R 8661 0 R 8662 0 R 8663 0 R 8664 0 R 8665 0 R ] +>> endobj +8614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 744.962 224.439 755.544] +/A << /S /GoTo /D (class_photon_network_ada44c5edfa6e93e67db635bd0764ef70) >> +>> endobj +8615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 716.754 217.974 727.337] +/A << /S /GoTo /D (class_photon_network_a8f8d6db18d74855e18ec43b3a221102b) >> +>> endobj +8638 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 688.547 217.974 699.129] +/A << /S /GoTo /D (class_photon_network_a208a46eaefe19c965eb62d18ca59ac41) >> +>> endobj +8639 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 660.446 196.213 670.921] +/A << /S /GoTo /D (class_photon_network_a6b98294843798e6ebac72704a867b6da) >> +>> endobj +8640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 632.239 179.778 642.713] +/A << /S /GoTo /D (class_photon_network_a5bb203a37b6db717583ea7b81fb56852) >> +>> endobj +8641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 603.923 179.778 614.505] +/A << /S /GoTo /D (class_photon_network_aaa7a2114de2a80a0a2ded65d1c0079ba) >> +>> endobj +8642 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 575.715 173.735 586.298] +/A << /S /GoTo /D (class_photon_network_ad9a866c73b3e417d55266ed548a52cb8) >> +>> endobj +8643 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.088 560.815 215.653 570.538] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8644 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.248 502.186 192.842 512.562] +/A << /S /GoTo /D (class_photon_network_ac6b98cecd29a9ced8ec4a6ae78908dfc) >> +>> endobj +8645 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.035 428.765 236.292 439.24] +/A << /S /GoTo /D (class_photon_network_ad3b82aa2ac8d89db5ebf0bc5ac9add9e) >> +>> endobj +8646 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [403.919 413.757 491.787 423.48] +/A << /S /GoTo /D (general) >> +>> endobj +8647 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [122.427 389.491 183.264 400.073] +/A << /S /GoTo /D (class_server_settings) >> +>> endobj +8648 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.995 389.491 277.246 400.073] +/A << /S /GoTo /D (class_photon_network_a505f06c3eb4ca67db5dd517aab34143d) >> +>> endobj +8649 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [296.921 389.491 357.759 400.073] +/A << /S /GoTo /D (class_server_settings) >> +>> endobj +8650 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.301 377.536 257.138 388.118] +/A << /S /GoTo /D (class_server_settings) >> +>> endobj +8651 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 349.436 230.823 359.91] +/A << /S /GoTo /D (class_photon_network_ae0036d259f2b793b4838393837d4cf6d) >> +>> endobj +8652 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 321.12 184.494 331.702] +/A << /S /GoTo /D (group__public_api_gaf0468f6a0c8ab8caec09678e6dc6f3d5) >> +>> endobj +8653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.994 321.12 219.884 331.702] +/A << /S /GoTo /D (class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) >> +>> endobj +8654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.113 321.12 339.744 331.702] +/A << /S /GoTo /D (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5ae0a1284706116eec7a83a489235a9ef8) >> +>> endobj +8655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 293.02 277.662 303.495] +/A << /S /GoTo /D (class_photon_network_acff20b8fd3871e0b3be350e0d1c98605) >> +>> endobj +8656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [115.68 267.053 160.57 276.776] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 253.853 297.047 264.328] +/A << /S /GoTo /D (class_photon_network_a65cc14cdfda9c9cb8dad3b3f862097d4) >> +>> endobj +8658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.767 238.845 428.658 248.568] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 214.687 272.399 225.161] +/A << /S /GoTo /D (class_photon_network_a734d436869fa53cb8660de63e79e6252) >> +>> endobj +8660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [334.268 199.678 379.159 209.402] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8661 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 186.479 260.035 196.953] +/A << /S /GoTo /D (class_photon_network_a2ea887525d418e088bf99d303673d2f3) >> +>> endobj +8662 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 149.016 207.627 157.787] +/A << /S /GoTo /D (class_photon_network_a232458dc1894d99134f6d978524cbb99) >> +>> endobj +8663 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.491 132.304 357.783 142.027] +/A << /S /GoTo /D (class_photon_network_a5d231578fbaadcb89dd592d2d8ddfd0a) >> +>> endobj +8664 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.83 96.083 211.88 106.665] +/A << /S /GoTo /D (class_photon_network_a5d231578fbaadcb89dd592d2d8ddfd0a) >> +>> endobj +8665 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.868 67.875 336.917 78.457] +/A << /S /GoTo /D (class_photon_network_a71b2a9299c3906b3e3d49f0ac296a87b) >> +>> endobj +8671 0 obj << +/D [8669 0 R /XYZ 69.866 801.979 null] +>> endobj +8672 0 obj << +/D [8669 0 R /XYZ 70.866 542.329 null] +>> endobj +8673 0 obj << +/D [8669 0 R /XYZ 70.866 468.8 null] +>> endobj +8668 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8731 0 obj << +/Length 2588 +/Filter /FlateDecode +>> +stream +xZYSH~WteԱ\[AHZð~3t $ά.Oz &YBLV Y4q=CDk! mw,I +}N8sprF.&0-89~*pG.x"v*!Í&(z +nll$.͊gu IH\\Og=e?&Nd5ˤ>geUn$ތ]2j-xlIoD[@֭n:?czvteoRV7%Djz%hvJlbS6<R @B\I6q6vj-e54^ߣȪnwɃ38lbLU2nyY.F~&8edHoTG^f C|͏Q.l>/Qf3~Z}JiN2I\R_>%y 47 _(3?M=XY}-y(v6A2FC8F p +PCз# 8#C/wbE3CжLnU>SJlcղN"[빐ͼLI" ѯ+5=$H'jMEb15g"U.RA'|&Қ i߉mPoPY#TvD=V'@-^AT:sT40rmB __5ti .T<%3*SJ58)K`Z-''Zt5",2|h/cbHҁ(M++w" 9#q\0 VU|ZwPFfVdz fq'F ,IPҝ琼yB_pQcZZMWA!, j,1O'Ee#~dS4P?1MƩsQ&bum#\n#Q=[kG\-zMneM2oyS]3R[f!L!aFRb`i7f"A/dIKO"ITtn93Y\ ~wHQ@tJ@GJMHeߵYF oc;UQ|J:(c&88L'ƦgTvdD౵ u̜X~\6d#'\69dR6ˬxmPWWԮl[6ˆ䳖A # 2;^MT0ox5;J}2'c+Scgfg{1X6q?Cy'}P^r[bTQ2(ʚ-WiVw*.Wm)7>Y*D +ǁ=Zal0 Y̍!ȗs#jV5ebeD:mݓaL3PڈAl_p3Am``ZKXd˼5;d…xkN2TTZt5LVl:q;Y-]M^['zR1yFjן|iɄLp@lPV~ <RHE og a= ;N:NU_XGGz.B7w%CܢJ֪:|ۈA7[VuS.*]S72J[a50a5ZR:`GgEcM2dfԸH0WAZp!gWzխ`wث(zI]!162u^j,pb|WΏ.:*Nc`37 +̙QV%8q%,^KP9[u(t90R\j:ҹfA*nD !)*_htn9 Ϣ [.Y/zPhy,C=`t{h]NY +Mzypv`_#؁w{V̷-FdomؔuDJ0ܰA+D/!""K_>,وky/dߎ(2#3][_Sr-'Sףj18CÞ)iu_OݲNqB&rKЅw1fJ +V- +endstream +endobj +8730 0 obj << +/Type /Page +/Contents 8731 0 R +/Resources 8729 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8467 0 R +/Annots [ 8666 0 R 8667 0 R 8692 0 R 8693 0 R 8694 0 R 8695 0 R 8696 0 R 8697 0 R 8698 0 R 8699 0 R 8700 0 R 8701 0 R 8702 0 R 8703 0 R 8704 0 R 8705 0 R 8706 0 R 8707 0 R 8708 0 R 8709 0 R 8710 0 R 8711 0 R 8712 0 R 8713 0 R 8714 0 R 8715 0 R 8716 0 R 8717 0 R 8718 0 R 8719 0 R 8720 0 R 8721 0 R 8722 0 R 8723 0 R 8724 0 R 8725 0 R ] +>> endobj +8666 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.545 745.051 264.966 755.633] +/A << /S /GoTo /D (class_photon_network_a598db34bb93cdb17a3032a96c64b0ce3) >> +>> endobj +8667 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 717.129 228.68 727.603] +/A << /S /GoTo /D (class_photon_network_ac8fda24b1f55b00f4968559a599ca88b) >> +>> endobj +8692 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 690.802 198.921 699.573] +/A << /S /GoTo /D (class_photon_network_a7a74751daa6e6e979cff9ba3aceb56dd) >> +>> endobj +8693 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.909 674.179 459.087 683.902] +/A << /S /GoTo /D (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74) >> +>> endobj +8694 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 660.961 219.588 671.543] +/A << /S /GoTo /D (class_photon_network_ae4186352869ef922cb84efbd5c1f2465) >> +>> endobj +8695 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 623.783 177.088 632.554] +/A << /S /GoTo /D (class_photon_network_a90ec16d1df1a0332d0ad16493d641f56) >> +>> endobj +8696 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.588 623.783 229.684 632.554] +/A << /S /GoTo /D (class_photon_network_a81af9e901341d6b647df1f6d7f2d7583) >> +>> endobj +8697 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.745 548.871 196.841 559.247] +/A << /S /GoTo /D (class_photon_network_a2a8b1690325d73930d6bc8b99d8e736d) >> +>> endobj +8698 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.745 520.841 204.076 531.424] +/A << /S /GoTo /D (class_photon_network_a3b90d30007fbeced0293dde881d0421e) >> +>> endobj +8699 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 493.272 180.997 503.187] +/A << /S /GoTo /D (class_photon_network_ad96fd99b5e9384771ee44b427edf7487) >> +>> endobj +8700 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.783 478.096 243.348 487.723] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 453.822 182.988 464.198] +/A << /S /GoTo /D (class_photon_network_a0141dc0df0d2e0a7fcda2e2101c44254) >> +>> endobj +8702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [422.654 439.011 450.219 448.734] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8703 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 425.9 222.861 436.168] +/A << /S /GoTo /D (class_photon_network_a7698c3e61503df2cb5375ffc3182fb1f) >> +>> endobj +8704 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 387.264 186.476 397.385] +/A << /S /GoTo /D (_enums_8cs_acdd867d72142510ce53521a63a062f9b) >> +>> endobj +8705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.976 387.264 253.265 397.385] +/A << /S /GoTo /D (class_photon_network_aa2a46d8ce13fedd3f4550b6164524e81) >> +>> endobj +8706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 359.234 164.042 369.355] +/A << /S /GoTo /D (group__public_api_ga8d4a6786d6193f0e6245c44e4a7bb4a0) >> +>> endobj +8707 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.542 359.234 263.719 369.355] +/A << /S /GoTo /D (class_photon_network_a7b1f4dbdcb9e30722be54b374bba6934) >> +>> endobj +8708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 331.204 191.99 341.325] +/A << /S /GoTo /D (_networking_peer_8cs_a85638c2837a71574f29802d46793c990) >> +>> endobj +8709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.49 331.204 220.933 341.325] +/A << /S /GoTo /D (class_photon_network_a9225b990f7b3d0fffadc23c7b3118ef2) >> +>> endobj +8710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 303.174 203.521 313.089] +/A << /S /GoTo /D (class_authentication_values) >> +>> endobj +8711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.021 303.174 250.97 313.089] +/A << /S /GoTo /D (class_photon_network_a282677f512ce2f53e4a0893d4e3844b8) >> +>> endobj +8712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 275.144 144.102 285.059] +/A << /S /GoTo /D (class_room) >> +>> endobj +8713 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.602 275.144 167.019 285.059] +/A << /S /GoTo /D (class_photon_network_ac7c6623c88f254b965aa366b1229781e) >> +>> endobj +8714 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 246.761 173.565 257.029] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8715 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.065 246.761 200.024 257.029] +/A << /S /GoTo /D (class_photon_network_a1b3803f17c6d713593bca41547b8b9b3) >> +>> endobj +8716 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.023 231.841 194.054 241.564] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8717 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 207.772 173.565 218.246] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.065 207.772 226.375 218.246] +/A << /S /GoTo /D (class_photon_network_aa7e51b5e5f9f8b89f057096f47d11c5b) >> +>> endobj +8719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.745 179.634 192.618 190.01] +/A << /S /GoTo /D (class_photon_network_abb168e543c15731ec4de869d3a1ad8f4) >> +>> endobj +8720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 140.753 173.565 151.021] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.157 140.753 220.067 151.021] +/A << /S /GoTo /D (class_photon_network_a2dc5e6cba79f899d9952f804db35b2f3) >> +>> endobj +8722 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 112.723 173.565 122.991] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.157 112.723 232.028 122.991] +/A << /S /GoTo /D (class_photon_network_a894df24398c8cfe2d06e22ddc39576fa) >> +>> endobj +8724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.381 85.046 184.201 95.167] +/A << /S /GoTo /D (class_friend_info) >> +>> endobj +8725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.935 85.046 226.552 95.167] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +8732 0 obj << +/D [8730 0 R /XYZ 69.866 801.979 null] +>> endobj +8733 0 obj << +/D [8730 0 R /XYZ 70.866 588.884 null] +>> endobj +8729 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F73 4716 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8783 0 obj << +/Length 2700 +/Filter /FlateDecode +>> +stream +xZ[w6~9=N'vme jEj_3$XIv&' f~^czë$,`4q~0>L(v7ENC&F a/r +!gsU2 Ǐ?ܸýh>Y<7}q4c~&^Ȳ0q1EL5#>@|(a+|+ q:Z.=6)JjGLz.,|!flKVg~}EOA]\oZ8*r SGq_/Ɠ=Yž|qE,QsuLKɹw>lj1VSQgQ!VKݽ0F -H iGa&Y)ZwVfzV8~L_&ux󶪛RRo add 7j#?l;o +0?,[B(a^fÃM}szrgN^lLԽԷ@ޠ^TrFeu CZ), +@Rjkt0qݠ"ƨ`nsUl9H(P<6r(WזM#[M Ot!&8aD l?m}+6'KX8L]/$rNĘMQE3B vIG]fE1#PgaF\Q"*euCʶE~vl265nHZT?no Q5 M4E螩R2{̰aI Oߕ}~G)Э}VY kRm{."Xiϱ s0a&WY)fZ*POG_޾T_{3/&F9d +zK!Lzޅӗ%RoN(a¬ ~ڃV?h9{Y0k8b^z@SOa}ڊ]hX48Px/#EZ)t.f."K]iZhpe;=jUBs>{ԓݒ07J)O,AL`y(Z*7']6怶_Arn>T>=,XQiB[ Z*ʝN$0.;jUpU*jaۣZ Gs0)\V#馉0Μ2LlK3JؠZ25I*R^(^ +Gzu^TvIa zU4DHm&ˊvfܩC%  м,kQ:A/9͓B?_z;aA 4t]̬W F=ubJQ>>kVoE]+t;nFld`8NLmιgM(⪂YQx/Tiʐe^-ۯTwitI\wk5E9m^ce-셾^Qȵ( dZge,>O= Ń}A>2BZ*b\i0E)Nېa V}= +!7A[9= ; UhUAР;4fhwWCKl|t'0DWo%Y oVxT7t Tt=EbAI@V9x6m6p;yFEu +3]䢮L#Ix 3l nMs %ݛZ>'\>\h4{;:A6nwXv/EË6ngsy  Xq<<)wlċG! =zebGx0&  -wWGr(Uw72y\탬JBQχYtOՁ@mrk V"NuAKcL> endobj +8726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 758.07 191.676 768.446] +/A << /S /GoTo /D (class_photon_network_a5aca6d5aea9bb5b55967959d1ecd0ccd) >> +>> endobj +8727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 730.636 182.271 740.757] +/A << /S /GoTo /D (interface_i_pun_prefab_pool) >> +>> endobj +8728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.771 730.636 228.402 740.757] +/A << /S /GoTo /D (class_photon_network_a1ed1ac94f91b8746d218e22146eb515e) >> +>> endobj +8750 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 691.783 185.974 701.904] +/A << /S /GoTo /D (class_photon_network_a4a1cd1887cb41a0592322527a7304ed7) >> +>> endobj +8751 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.098 676.578 525.406 686.301] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +8785 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 665.619 140.574 675.342] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +8752 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 656.363 205.622 664.198] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8753 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 641.617 237.296 652.092] +/A << /S /GoTo /D (class_photon_network_af721675dc5cf3c5ac4d4b67339246cdf) >> +>> endobj +8754 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.246 626.862 520.475 636.489] +/A << /S /GoTo /D (class_photon_network_a5bb203a37b6db717583ea7b81fb56852) >> +>> endobj +8755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 613.723 247.312 624.197] +/A << /S /GoTo /D (class_photon_network_a6c6fb3cd57d7e2a13d1fc354db0c1fd7) >> +>> endobj +8756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.149 598.871 426.039 608.594] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 574.869 197.675 585.138] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +8758 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.368 560.018 352.565 569.741] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +8759 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 536.016 227.389 546.49] +/A << /S /GoTo /D (class_photon_network_a8ce4ab4a44e705199ff795b2eb9b395b) >> +>> endobj +8760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.381 508.121 207.056 518.596] +/A << /S /GoTo /D (class_typed_lobby_info) >> +>> endobj +8761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.79 508.121 279.811 518.596] +/A << /S /GoTo /D (class_photon_network_abdced09cccf61ae817cb97705ffce137) >> +>> endobj +8762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 480.227 187.202 490.495] +/A << /S /GoTo /D (class_photon_network_a8ad64b1a76c7918bbe5642639afff458) >> +>> endobj +8763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 452.332 168.185 462.601] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +8764 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.685 452.332 191.838 462.601] +/A << /S /GoTo /D (class_photon_network_a3af7f8d0082599e6e3a56a5b1481a505) >> +>> endobj +8765 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 424.791 170.525 434.706] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +8766 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.577 409.586 297.773 419.309] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +8767 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 385.938 216.862 396.059] +/A << /S /GoTo /D (class_photon_network_ac23d14ad150a87d51f4ffaa286db29e1) >> +>> endobj +8768 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 357.582 242.784 368.164] +/A << /S /GoTo /D (class_photon_network_a9cf8214080471001a1a32e17eff9b402) >> +>> endobj +8769 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 330.149 235.602 340.27] +/A << /S /GoTo /D (class_photon_network_a3315be88f62dbdc24819946fc6171e08) >> +>> endobj +8770 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.426 291.295 166.356 301.21] +/A << /S /GoTo /D (class_photon_network_a86ab96957666ef72830a35662ef3d30b) >> +>> endobj +8771 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 276.187 136.515 285.628] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8772 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 263.047 202.938 273.522] +/A << /S /GoTo /D (class_photon_network_aa3c3ed1a8a1da54e52c5b7284f69c8a4) >> +>> endobj +8773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 235.506 196.419 245.628] +/A << /S /GoTo /D (class_photon_network_af498064a6019a6c69e875bd64db40216) >> +>> endobj +8774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 207.612 170.516 217.527] +/A << /S /GoTo /D (class_photon_network_a4f968278990dea7202b04eed1f833b6c) >> +>> endobj +8775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 179.717 244.254 189.839] +/A << /S /GoTo /D (class_photon_network_afbff4452088b29acf41bf3012a8d2545) >> +>> endobj +8776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 151.469 232.356 161.944] +/A << /S /GoTo /D (class_photon_network_a1e23b1e0ff44046e6532c8588ac08140) >> +>> endobj +8777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 123.575 228.868 134.05] +/A << /S /GoTo /D (class_photon_network_a8830a7a4b92490f7882780630b1fcf99) >> +>> endobj +8778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 84.722 192.994 95.196] +/A << /S /GoTo /D (class_photon_network_a56b04c065a4f5d54e3f9113056b32da2) >> +>> endobj +8784 0 obj << +/D [8782 0 R /XYZ 69.866 801.979 null] +>> endobj +8781 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F95 6017 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8812 0 obj << +/Length 2099 +/Filter /FlateDecode +>> +stream +xYIs۸W6RU %D2yN2f.N4K|x隣%ԫ\Iq p J( VAQEAR`.goA!,2kTNTmRsO~]8!03IPBYN.` ~ 0 +$3w!LQ'`+'#yE< b ;QʵnYp<5J܈\T$7Vs=YMeW_dv}.{>A +2H@ƙr#a4VI8a(,_m|8*1U!4JEVeD͜bgCZ1#07?!A$UPȍY, P5Q cv-쒻,bq +XQ׽5 Rv(38{WD9^bD迣}p#yWѺ]>dSq 90bPgW_w~Z DE+ՏR!X'橶"4-dsfLPHE0TPkhX4ov+Osm +a+[Y}|2Me)* W´? 8>d֙p$w+nGiLLJcc@1Qߠ* +[qJY@ HfwOtUD)(&D)J}0C?BfόYL7 >42A(OS"m ,laJq<3! ry[<K2,@6̂c*+9><%,^]o Љ'A`$BA!^4L?DKmC;yf<ܩuexlٸ =܅pnb';%l+.D> #!Ji_4O#"I`]Wvϣ3*ۮ奄 &7^'wBouN|%*Pu^E=O=P"Ԝ Saֿ-0ͅѽQ +7pYqk,C^C)Ï%B(:=bdQ_=D-XSa/DN՘;qI5Z) 铸<+UO +sMU~f'C=rP6wZ.Mjܞg N + =6p ZھzkCr 5r"vݶȷf3LSL$l(L+~ [)Ս#zOSfh1$fvV}eLpK1H7,r5j*Gh-zti7Wˌ泩NybNXp +endstream +endobj +8811 0 obj << +/Type /Page +/Contents 8812 0 R +/Resources 8810 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8786 0 R +/Annots [ 8779 0 R 8780 0 R 8802 0 R 8803 0 R 8804 0 R 8805 0 R 8806 0 R 8807 0 R 8808 0 R 8809 0 R ] +>> endobj +8779 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 758.531 191.945 768.652] +/A << /S /GoTo /D (class_photon_network_a6cbf85644c07b9ceb4b4a1accd0f4ce9) >> +>> endobj +8780 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 731.28 241.143 741.401] +/A << /S /GoTo /D (class_photon_network_a67cb40d5f2dede55b03b2be1f792e93a) >> +>> endobj +8802 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 704.029 238.597 714.15] +/A << /S /GoTo /D (class_photon_network_aaaf92ee5eec22fff548ee9bb735913b6) >> +>> endobj +8803 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 676.778 211.519 686.899] +/A << /S /GoTo /D (class_photon_network_ae995c021d1295f00afd9f87cd3bd118c) >> +>> endobj +8804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 649.173 227.416 659.648] +/A << /S /GoTo /D (class_photon_network_a587a1fb0147ddc48a5176e48a2940985) >> +>> endobj +8805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 622.275 254.96 632.397] +/A << /S /GoTo /D (class_photon_network_ad86d4af661dd7365f6e172e106ca7cb2) >> +>> endobj +8806 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 584.066 190.269 594.187] +/A << /S /GoTo /D (class_photon_network_ab5e68c8f4799fabb200d08ff8c313c43) >> +>> endobj +8807 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.523 509.771 237.854 520.147] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +8808 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.695 386.494 287.352 412.983] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.695 279.625 287.352 306.114] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8813 0 obj << +/D [8811 0 R /XYZ 69.866 801.979 null] +>> endobj +2074 0 obj << +/D [8811 0 R /XYZ 70.866 555.242 null] +>> endobj +2078 0 obj << +/D [8811 0 R /XYZ 70.866 495.83 null] +>> endobj +8620 0 obj << +/D [8811 0 R /XYZ 70.866 471.039 null] +>> endobj +2082 0 obj << +/D [8811 0 R /XYZ 70.866 471.039 null] +>> endobj +6209 0 obj << +/D [8811 0 R /XYZ 70.866 379.139 null] +>> endobj +2086 0 obj << +/D [8811 0 R /XYZ 70.866 364.202 null] +>> endobj +8635 0 obj << +/D [8811 0 R /XYZ 70.866 272.27 null] +>> endobj +2090 0 obj << +/D [8811 0 R /XYZ 70.866 257.333 null] +>> endobj +8627 0 obj << +/D [8811 0 R /XYZ 70.866 157.769 null] +>> endobj +2094 0 obj << +/D [8811 0 R /XYZ 70.866 142.831 null] +>> endobj +8810 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F95 6017 0 R /F106 6377 0 R /F73 4716 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8847 0 obj << +/Length 2204 +/Filter /FlateDecode +>> +stream +xr6-T% A;&z4d[,KBR~vAR-?ݪTr6~4 hf|rC"E8MP8HRNbWPOg!2!1Inݻo&ǞeZ3#9 +VU+_Jv8}aM_ToTLVyqcG)a =AJDx:`D$V߁gJeH5hYt`E`uz`Er,J"f}7YlJ |#`r4+d :@2wvQН|(+(K@? ++_ ZC +-CcOX_0uz\2|QӏA\W(={} O0>8>{]_Y5]gpٲz2]ȼ6%ŀkCLƧ|_KWÚ`Qxq.6/.+`^`Y]bM'pSD0 +=$КA~ʘLR\zWR#[f \pdhgS%B\%oMn[A[4gdz4}'C A# 6 {|4F +RaJ$nw#0:8 ʑPgh| #2Ә@.@.8PJeg z'"ʭlW%be 2핹TiXG +n]wm_3(뮮X  (N^4My80JŐk(8'" 7X[rfOYޖFt`]eS rfvM_솰qurOM6{/]X۽ec&9 ȏp4z 6[Tcp2f: NObP,jbSCwY9X`"95:T[st Ϻv37#1\VFjGm6c8%2jAOM& leL8Dl ܢSgELv.N63z8WQX/]NͨYǝodo!~mDm_C5ߧ;+4|˿B}eNQ X wB]vȯ{vMڥ^Ss̻?^.{f~qY`pkjR] ax4 +endstream +endobj +8846 0 obj << +/Type /Page +/Contents 8847 0 R +/Resources 8845 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8786 0 R +/Annots [ 8821 0 R 8822 0 R 8823 0 R 8824 0 R 8825 0 R 8826 0 R 8849 0 R 8827 0 R 8828 0 R 8829 0 R 8830 0 R 8831 0 R 8832 0 R 8833 0 R 8834 0 R 8835 0 R 8836 0 R 8837 0 R 8838 0 R 8839 0 R 8840 0 R 8841 0 R 8842 0 R 8843 0 R 8844 0 R ] +>> endobj +8821 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.57 741.029 229.938 752.997] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +8822 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.678 673.74 161.085 684.322] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8823 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.659 644.161 369.58 654.743] +/A << /S /GoTo /D (class_photon_network_a7dc90dd05d697c3f8f04e50cc0e039b2) >> +>> endobj +8824 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.644 602.626 116.05 613.208] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8825 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.456 602.626 402.863 613.208] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8826 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [485.782 602.626 525.406 613.208] +/Subtype/Link/A<> +>> endobj +8849 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 591.132 269.123 601.029] +/Subtype/Link/A<> +>> endobj +8827 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.639 573.046 173.046 583.629] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8828 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.194 547.56 299.665 558.034] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +8829 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.591 527.634 309.062 538.109] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +8830 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.683 507.601 255.955 518.184] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918) >> +>> endobj +8831 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.738 487.784 335.01 498.258] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918) >> +>> endobj +8832 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.286 475.829 239.87 486.303] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa1d2567b2c2f8ec1799a293b0359b4046) >> +>> endobj +8833 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [223.954 450.587 411.251 460.502] +/Subtype/Link/A<> +>> endobj +8834 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.201 261.782 153.607 272.364] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8835 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.872 244.157 171.279 254.74] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8836 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.11 244.157 447.517 254.74] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8837 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 232.663 299.011 242.561] +/Subtype/Link/A<> +>> endobj +8838 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.639 214.578 173.046 225.16] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8839 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.194 189.091 299.665 199.566] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +8840 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.591 169.166 309.062 179.64] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +8841 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.683 149.133 255.955 159.715] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918) >> +>> endobj +8842 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.738 129.315 335.01 139.79] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918) >> +>> endobj +8843 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.286 117.36 239.87 127.835] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa1d2567b2c2f8ec1799a293b0359b4046) >> +>> endobj +8844 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [223.954 92.119 411.251 102.034] +/Subtype/Link/A<> +>> endobj +8848 0 obj << +/D [8846 0 R /XYZ 69.866 801.979 null] +>> endobj +8512 0 obj << +/D [8846 0 R /XYZ 70.866 734.255 null] +>> endobj +2098 0 obj << +/D [8846 0 R /XYZ 70.866 719.014 null] +>> endobj +8509 0 obj << +/D [8846 0 R /XYZ 70.866 332.256 null] +>> endobj +2102 0 obj << +/D [8846 0 R /XYZ 70.866 317.016 null] +>> endobj +8845 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8870 0 obj << +/Length 2726 +/Filter /FlateDecode +>> +stream +xڽrF]_K~s+[ڭ-1""+_3R"eA tZ.~xKXo]ZahE̺ʬ6co2'|8/Tҋbejl&Jş @]u8؉Zm/>~v :~[w +rkwxWև/\Mx0T3T@5D߻inE#cTaqc +!"u +|'aⅹမw( +w?x䄠WAf&஭-0մO.wElkW~w~Q Z3ՅQݦjI,6]2g_:N;mz x{qȁTh4Oa1w} \9b]>oûc=}굩蹪RM8!QH: {ڽחGw޽\  T:>諏]|<rB& 0j6!o7&Ƀ'e2b+LB'!"vl7t3"j6^9! @sv{/}?!pi-P]Z#pڈnP\/P_fzW((h{ tmqҽE%/:^mr-ggna O Lb/D:tYeBOK8`L^O%PXvlj >σ@.!vAPu g7 /Tu^yG'>1= LX˄*JoP^F?XG@ƶ3X flZ>jBT ]Va2Ra3ʮ޺c^V"TQ20H!ur?-( WXRL0Mn`CC2ZEA, L 0y)^+ApW1?T反 @f{HKԭ~KLOWoU 7R&kh3ҵhG4ޤk޷e٥οAa;TU[ +[rv*#@ean, iq%R}A'^@!:.ySv~x8U ruB}b_B6]7lXSJQ(* +ldGZBYsO/_8݈r Ӽ˪{רonv=?,nߩ@ZM]&2`+9 lOx@CpTO&Q l)H`}yyM"bKH`?=SxG;^7}OMG&2VHPw2&; Tm> ]VUUZǍS&bPU+G|UΨ8+gvvbKx _j+ٛ(41b2Cdu9Ӫ.4:f_ٴ5 f'aCO!?JFb>~$?T B}?z䁃~2Q+U7h 3wu@,;h RzԊ9R%[d%HZ)ЋAgCnQJ@I:NQ.T@_vΦ<1eF>TtS[xVb,i_oI¾2o@Ez @{ jV-RIf)w4:?htIjMo3GJsB($t\?3ٙԃ0#, xr`6D^hteMkˡ4Eu2/n5{ '[3ArA3 +<#y32BgR2U GqO0 q~zAST ͳP` Maծ&cFWJfg^ap0?2!+Ρz:hHݻ", ۛ?Is) U.jv +j*xh{议vBHU +U ՅdBpbffH5h>jy +endstream +endobj +8869 0 obj << +/Type /Page +/Contents 8870 0 R +/Resources 8868 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8786 0 R +/Annots [ 8850 0 R 8851 0 R 8852 0 R 8853 0 R 8854 0 R 8855 0 R 8856 0 R 8857 0 R 8858 0 R 8859 0 R 8860 0 R 8861 0 R 8862 0 R 8863 0 R 8864 0 R 8865 0 R 8866 0 R 8867 0 R ] +>> endobj +8850 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [319.347 741.029 349.753 753.203] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8851 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.598 704.367 267.004 716.54] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8852 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [135.162 613.113 165.568 623.695] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8853 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [115.723 555.933 146.129 566.515] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8854 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [440.042 508.729 470.448 519.312] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8855 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.286 496.774 237.692 507.356] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8856 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.074 479.15 412.076 489.732] +/A << /S /GoTo /D (class_photon_network_a981e7244e915f41e18cb9da5f12fc858) >> +>> endobj +8857 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.872 461.525 171.279 472.108] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8858 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.11 461.525 447.517 472.108] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8859 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 450.031 299.011 459.929] +/Subtype/Link/A<> +>> endobj +8860 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.639 431.946 173.046 442.528] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8861 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.194 407.92 299.665 418.394] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +8862 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.591 388.725 309.062 399.2] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +8863 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.683 369.422 255.955 380.005] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918) >> +>> endobj +8864 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.738 350.335 335.01 360.81] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918) >> +>> endobj +8865 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.286 338.38 239.87 348.855] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa1d2567b2c2f8ec1799a293b0359b4046) >> +>> endobj +8866 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [223.954 314.6 411.251 324.515] +/Subtype/Link/A<> +>> endobj +8867 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 81.825 243.377 92.3] +/A << /S /GoTo /D (class_photon_network_a6c6fb3cd57d7e2a13d1fc354db0c1fd7) >> +>> endobj +8871 0 obj << +/D [8869 0 R /XYZ 69.866 801.979 null] +>> endobj +8513 0 obj << +/D [8869 0 R /XYZ 70.866 673.283 null] +>> endobj +2106 0 obj << +/D [8869 0 R /XYZ 70.866 658.387 null] +>> endobj +8507 0 obj << +/D [8869 0 R /XYZ 70.866 614.109 null] +>> endobj +2110 0 obj << +/D [8869 0 R /XYZ 70.866 599.212 null] +>> endobj +6603 0 obj << +/D [8869 0 R /XYZ 70.866 260.206 null] +>> endobj +2114 0 obj << +/D [8869 0 R /XYZ 70.866 245.31 null] +>> endobj +8868 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8877 0 obj << +/Length 2268 +/Filter /FlateDecode +>> +stream +xZs6_K@}s8ֹĞ{p@Iņ"U:GbA +hvr3팟.~XwޞxuO +Rq\ giI&Y,Up,LnW$g"y f6LP=t_Wg ؘ(MY*Uܜ| + 8437*q|<ws&5ѩM*Z.gR.ߘfBc9)VL 2^@` 6<{pBr |[`Wnrуh:%_E7%l:9ĊyTx;(Uyue z;3!C48֦dK45$>~H K[K4g"H _V?!7yےneoܷ^~.1o:>\WӶ̖!\a/˼ٚ{ax֣ȣk\V'13jeʋ}i|LpU@%ܛMD0%"K|Fmf(o[t`fuo&̭wD}ʱk#Rl׎3#IJ1زh:lo1Ygpg: u'\>aC4>N л^ +&96 :e/†(«u8֝`}dXOR' /M;ՉHeOvptg (!^H8E2\ 8'gOo;M PO5۲hD2#D.r!# ͛b؏b X=oG¬MfIX8ސ0rBI8ѯx'B: $m^(MHqվ1-ݦ.Y3{,}SUC%dc7|~Hg^IED[RzL69%nT] nmNt`nDp̲O"Yǥ3!M^̻?gm> fc~rqEy|%2 |KJ@K7mǣbUxѠhbS<o<2-nj|O5)C8?GJN!0bń}a%4}J;ÒQjd<^pްfT^h_]NѨ>D=KW^%Hء>d?qb&Xyw:V.cUWkwc~c4Q8A]+y[*ch|]/ěfÝ}޷:M +endstream +endobj +8876 0 obj << +/Type /Page +/Contents 8877 0 R +/Resources 8875 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8786 0 R +/Annots [ 8872 0 R 8873 0 R ] +>> endobj +8872 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 443.812 243.377 454.286] +/A << /S /GoTo /D (class_photon_network_a6c6fb3cd57d7e2a13d1fc354db0c1fd7) >> +>> endobj +8873 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.072 371.884 231.875 384.058] +/A << /S /GoTo /D (class_room_options) >> +>> endobj +8878 0 obj << +/D [8876 0 R /XYZ 69.866 801.979 null] +>> endobj +8569 0 obj << +/D [8876 0 R /XYZ 70.866 685.667 null] +>> endobj +2118 0 obj << +/D [8876 0 R /XYZ 70.866 670.746 null] +>> endobj +8570 0 obj << +/D [8876 0 R /XYZ 70.866 292.214 null] +>> endobj +2122 0 obj << +/D [8876 0 R /XYZ 70.866 277.293 null] +>> endobj +8875 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8890 0 obj << +/Length 2343 +/Filter /FlateDecode +>> +stream +xڽZ[s~T.x'M%=>`i,#PEk;kzzz vZg=(b' Cߺ}"׉Њ u>BϷX~(8aӺͽ(ߖFMdeg=Lkg;XϮwX'ה+#"nw沜ħZ1kOF$)]#uٔ{gµj6~t]S^*-tsmU]M`>8Y^-ʍqjUea&];{Ddor@')MtjoQ0C!\k.HI\MhGf.(cU`0iA^fABu~}قVU='vS>R^.瑦=+\x(fqfI4zu%/5Slf颬*Uob1uj*mv"eaA@' 1W`94(o\4iQrkI[{9Ƞl{36KPlӕb h5H?~w ̼nT +a=b̹$iZ@VC S=DgGuI =tχ3!@#.a\3a˲Eȕ,)&$ߺ-M7Av1C;{땩ԟ]GFk o<"v@"[6yNWARedLmNaF!}C=gq#Δ8AbSceno+[U7~?ODn |&`4β{Bv@gyoR +U_;d1 i%@T+DП{X,$Cx%7.NUR4-/}ݧg(E Y% 5Y AyAB/D"Wu}5EƬPU3a#D:ai% EH9\ +~3eZ7t4 tOh_$]ukYg귰K&X以_Љ!/Z! aZmPOhU S(xhk=zn]tLWXQ1 zuQW] !ӼeS&G-8#wĆtcS;SCR|4TJ?G^K(.jzR `ʮy*}Á>1i +>AY].H 8E YaHGBg^BѕEdnLYL#צG0`%/kU$h%g,!L9MPA:qQ W]2]S7B(!uie{pzVv*Rlrkn{}lw cXǧ}1db,o-mI~w{+|> endobj +8874 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 758.177 243.377 768.652] +/A << /S /GoTo /D (class_photon_network_a6c6fb3cd57d7e2a13d1fc354db0c1fd7) >> +>> endobj +8879 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.473 716.535 139.88 727.117] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8880 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.072 656.563 231.875 668.736] +/A << /S /GoTo /D (class_room_options) >> +>> endobj +8881 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [290.085 491.607 339.742 502.081] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8882 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.628 491.607 438.285 502.081] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8883 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.823 461.919 284.729 472.502] +/A << /S /GoTo /D (class_room) >> +>> endobj +8884 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.94 416.855 507.133 427.437] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8885 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.772 342.211 440.936 352.793] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8886 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.227 330.256 291.884 340.838] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8891 0 obj << +/D [8889 0 R /XYZ 69.866 801.979 null] +>> endobj +6251 0 obj << +/D [8889 0 R /XYZ 70.866 549.947 null] +>> endobj +2126 0 obj << +/D [8889 0 R /XYZ 70.866 534.778 null] +>> endobj +8629 0 obj << +/D [8889 0 R /XYZ 70.866 169.238 null] +>> endobj +2130 0 obj << +/D [8889 0 R /XYZ 70.866 154.069 null] +>> endobj +8888 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F106 6377 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8901 0 obj << +/Length 1775 +/Filter /FlateDecode +>> +stream +xYIs6Wpr)5S! 5iӺ6=J+5_HODhvbr̃1YC 3Q;~ YKs'𼯄LzJ DǸFa9׋ {gVlAWgnPf3Z5_ 1&=S8H]i[T%+YVM~kޏY3DU[2֕]={^MZ41VR9vpg%LFy x75t%r42*TPDy.WQߎt.nށIhioxSZcn\laZt S=4h(Y) ^-L2v;U$BX`^rEMyTeZ #/jӹU֪nUˢzCS&[0|DZ|3bw-;^:%A +;탱$eH7[9˂e_'$%$ޡ DL%:6j3p0fӂ)H!4wy+aݝn0¦s8Q Q;%>/ӵn??YR֠iEB-J(D䝂ɧ'uI25nk-h'ӻWc%% w%mxFl`* D|#=ҞQO$*W9TE=\##b}ʃp&Cy2NP-: UUdԵ2Dgk7 ѡT _Tь\t PM9p"*e6o} d/OynFb/O?~N@D@g^4kہuGV]9X^€"lL1 68`04-f2D~V(2F0񵐡qX]yttZ70g{FOӣ‚lCfPGlIG0էxC +Tˍ e(!|Z l!l!< SE~b a]~@g 3 ܸ9[~a({t"42a3}DSQNuG(q}hk3;iā.`832 "N^(Z>%0:' E9Ҫp0'UKr[W΋O"WסQbnQ7`'{ !M/ Lzd\;ڄnD{nEIEO /:ˁBo! >]•G#@.,dnRwD 7-HXf5EjLD-frp )ed"2Ä#&XfM}LeFefx& +O0أ#M9??kqx* +'LQ#mls.T_JwQ{R4~hoϱXh%'sXF>U~UNxQ3.X,oc4{!}o8Ta;_+# ^H- O2o-.9PSE(6A +endstream +endobj +8900 0 obj << +/Type /Page +/Contents 8901 0 R +/Resources 8899 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8903 0 R +/Annots [ 8887 0 R 8892 0 R 8893 0 R 8894 0 R 8895 0 R 8896 0 R 8897 0 R 8898 0 R ] +>> endobj +8887 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.94 758.07 507.133 768.652] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8892 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.772 684.612 440.936 695.194] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8893 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.227 672.656 291.884 683.239] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8894 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.772 318.626 440.936 329.208] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8895 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.227 306.671 291.884 317.253] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8896 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.94 125.704 507.133 136.286] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8897 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.772 81.825 440.936 92.407] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.227 69.87 291.884 80.452] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8902 0 obj << +/D [8900 0 R /XYZ 69.866 801.979 null] +>> endobj +8632 0 obj << +/D [8900 0 R /XYZ 70.866 516.381 null] +>> endobj +2134 0 obj << +/D [8900 0 R /XYZ 70.866 501.398 null] +>> endobj +8630 0 obj << +/D [8900 0 R /XYZ 70.866 257.424 null] +>> endobj +2138 0 obj << +/D [8900 0 R /XYZ 70.866 242.441 null] +>> endobj +8899 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F95 6017 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8913 0 obj << +/Length 2430 +/Filter /FlateDecode +>> +stream +xYKs8Wr*Bˮ2Uge@ Ezj@AQ?n{"6~~hRoQٿVg.KIǁZ{ %i{II̼U_ f$MX\Œ'hFў}Xyƀzl$Wn~PozYkʝFBE}=9'>>I(]#XS~.ls/YJh~[5XaoE]v8,ŭkݚzP͂ETRTes69҈$L9NXX2J/ `S*˶7߫'Kd ?%.N#XQWM|wX,#15ۍb jyXSEC,2 "bdD7xM'\, A $IsjE@̟KV PuNXU[5UXҬiJ[Qu8r~+CZ;rSE]U.*~<у +X+>fuRf31WNl'7X߷ B;ލ}EL,>ͼ!Hrcl~籐C->FYp:~2HCzBJcj3|FPE_/(NMBX]ր }Կ _yiOefqNȡ;ȑM?`gR5voAsANSɢmdDYB< f532\9ǐSFj\ 83p<&R(L5qBJd[MbFFkNFLȳ9QXx14Z{aB4R4@DW!h\bԠyȩp̂?B=t>HL/2j|_#)G9>8@ļC!ᦐsýyL3(i0Gxq1rG* 4Qn4+Uy_I1e29TKC\Dd%I趱X` +R`FԳ]4-,30e͛Pp_"Sn8LT jF2:-ÐWV$$)X:g2i]Eڲ*l-3DX(l3USr$ X)Fȇ SUcx~{#7 U* tAp6&O0y0ɹ@JI¤$m"Oz|S'Q́.K,hs q:lʇ҉t +P4H,\AЀs=Ey#UF5-2s|sn4/s ӪP〰xP?fjg pJMLTjv+=(J ml4׹GV$7&B>1 |Q~w_dwQ\i?)KͩS6!$ɟB"0K!L#,3Vs@]aT׼rȕa5$1 er=2Ua:g 8M ,,{)CHaJS2a1f 1˶7xQiD9NϑUhg؎Bݗ^eG4c#H!$ď ClyC DlxmCTOhWm:1}sb䩮l?9YOW_7-"^p۾}HWec  +>p=̓Ppgu}-֝#s|?Q_GRF|h +whVQ7kMcK;>Hv@Sb]6,oA啽rzc(Hh]' +u{ ptMn۶>"US^vp(.ɾ| yE,(Z#"ЦZ +).I$V;_?`ϩ$dł+ێT\4*ٻum|̨qXW!PIҸo\ˌ:xp;:K_g#uwJI@Iؤ㏢]>hwaɩgcXXnڷV5&v1mJxI +endstream +endobj +8912 0 obj << +/Type /Page +/Contents 8913 0 R +/Resources 8911 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8903 0 R +/Annots [ 8904 0 R 8905 0 R 8906 0 R 8907 0 R ] +>> endobj +8904 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.94 599.811 507.133 610.394] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8905 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.772 553.783 440.936 564.365] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +8906 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.227 541.827 291.884 552.41] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8907 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [387.784 85.607 483.231 96.081] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +8914 0 obj << +/D [8912 0 R /XYZ 69.866 801.979 null] +>> endobj +8631 0 obj << +/D [8912 0 R /XYZ 70.866 734.419 null] +>> endobj +2142 0 obj << +/D [8912 0 R /XYZ 70.866 718.779 null] +>> endobj +8567 0 obj << +/D [8912 0 R /XYZ 70.866 489.336 null] +>> endobj +2146 0 obj << +/D [8912 0 R /XYZ 70.866 473.696 null] +>> endobj +8505 0 obj << +/D [8912 0 R /XYZ 460.375 367.883 null] +>> endobj +2150 0 obj << +/D [8912 0 R /XYZ 70.866 350.249 null] +>> endobj +8625 0 obj << +/D [8912 0 R /XYZ 70.866 222.12 null] +>> endobj +2154 0 obj << +/D [8912 0 R /XYZ 70.866 206.48 null] +>> endobj +8568 0 obj << +/D [8912 0 R /XYZ 379.94 146.493 null] +>> endobj +2158 0 obj << +/D [8912 0 R /XYZ 70.866 128.966 null] +>> endobj +8911 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8925 0 obj << +/Length 2467 +/Filter /FlateDecode +>> +stream +xڽYKs8WTU!wjwI֩8;',)PG<_ERΖf_f3oWg?YQϮVs(ũt#1Zή|!ĹXWmQ\zNU2k^\x| ջ~?7FI&2図/l kfPnfAaø}<י7O ׳_Q pjteK,itëM[jIBqI|{6W\8 /DܹoL/ˆZi'C-~Ɋ2;_3,h,V7~JpQ?H*>5[*|KQMJ4nT3t{x ϗbj(b rzWh]{{NVvjfZMƟ#{cP!y>1-xSuu">A 3.V n‰ͽjCTKw_U~XmXjD]u 9WsbyOmHwuk /IJ}P, LVaBeD㛤GVר 5`R7"UR@*g`g¨r +nK_pԋyrˈ(_WK%+. # 7$㦪/8f\e>qfmAh(.js<. 4-ѷF-+{Y40 jm>WǺlj# .d[̋vx2%A/w;CNOg: P3hY${)@M +%&I^48J*ȕ)+~8$a|h {%A_GvgMvΏdyD{tp4deK{_vcuGO8!SxXOeYi>R]ǸωA."q|(&=~ V1T^u%&Qj E4?zF@Z?G+s N*$*`Ō4.=Fq@>!cYTNL]],'7)vE V­v5 ?7<ՋXg֬?N)pAGrݍa =p(wAxn`PJ©4dCkѮ_W$x7h= ah!!<ߕڞj$y.vS xݑOM:24I$,dF! O:laK=ͺ=XSM5"p5RHߺ߬_|KSG`XnE6ѪoLϫ5{W"&g2Ny?p@t&~t_!^ +endstream +endobj +8924 0 obj << +/Type /Page +/Contents 8925 0 R +/Resources 8923 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8903 0 R +/Annots [ 8908 0 R 8909 0 R 8910 0 R 8915 0 R 8916 0 R 8927 0 R 8917 0 R 8918 0 R 8919 0 R 8920 0 R 8921 0 R 8922 0 R ] +>> endobj +8908 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.061 758.177 275.508 768.652] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +8909 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [333.313 728.49 444.092 739.072] +/A << /S /GoTo /D (class_photon_network_a282677f512ce2f53e4a0893d4e3844b8) >> +>> endobj +8910 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 718.427 155.194 727.117] +/A << /S /GoTo /D (class_authentication_values) >> +>> endobj +8915 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [370.327 699.018 400.733 709.493] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8916 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.264 681.286 525.406 691.869] +/A << /S /GoTo /D (class_parameter_code_aa15af7fc19b63e3842c1730d6c464853) >> +>> endobj +8927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 669.439 222.943 679.913] +/A << /S /GoTo /D (class_parameter_code_aa15af7fc19b63e3842c1730d6c464853) >> +>> endobj +8917 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [317.816 669.439 517.773 679.913] +/A << /S /GoTo /D (class_parameter_code_a2d0752d2a36dcc59026ee5afbc475831) >> +>> endobj +8918 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.327 248.764 235.919 259.239] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +8919 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [467.881 231.14 508.473 241.615] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +8920 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [472.279 183.936 525.406 194.411] +/A << /S /GoTo /D (class_room_a8792cdddd5a4b8933bea7adab8438edf) >> +>> endobj +8921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [87.318 171.873 135.657 182.456] +/A << /S /GoTo /D (class_room_a86a1e0952d484cc7a679e141463f43c1) >> +>> endobj +8922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.299 131.937 132.891 160.21] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +8926 0 obj << +/D [8924 0 R /XYZ 69.866 801.979 null] +>> endobj +8636 0 obj << +/D [8924 0 R /XYZ 70.866 558.836 null] +>> endobj +2162 0 obj << +/D [8924 0 R /XYZ 70.866 544.155 null] +>> endobj +8624 0 obj << +/D [8924 0 R /XYZ 70.866 410.615 null] +>> endobj +2166 0 obj << +/D [8924 0 R /XYZ 70.866 395.934 null] +>> endobj +6067 0 obj << +/D [8924 0 R /XYZ 70.866 306.724 null] +>> endobj +2170 0 obj << +/D [8924 0 R /XYZ 70.866 292.043 null] +>> endobj +8566 0 obj << +/D [8924 0 R /XYZ 70.866 125.942 null] +>> endobj +2174 0 obj << +/D [8924 0 R /XYZ 70.866 111.262 null] +>> endobj +6131 0 obj << +/D [8924 0 R /XYZ 70.866 68.871 null] +>> endobj +8923 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F73 4716 0 R /F106 6377 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8940 0 obj << +/Length 1959 +/Filter /FlateDecode +>> +stream +xZKsFﯠ| [cWύ/hK+PXEaxJҁe{=콞={y/HK)C$r$AZ1x1~ *LVחaYv#L[]NNgo!ia ;1ja5XK5b/ZV`02|w{$Kav3'OүYdx42"D̠ #ATCWi%8{ SJp[E9>SFTl#]bGrkXEKQcʹb?qHvJfrrg]EZԹy}!m'1B7`lg`2X S*'J?yxxh-@XbY],Zs'Sᇩ.7Q`Q&}E_^DnYqGYgMK&4I|iXcMU8'U&5+Ű +IjanZ3|{EmΧn!nVA!~]ͭiCAj΋\p~B+fka)6SuBb^`Z89~BxBt c×RpG:4W)&Å)v0 b'"wRDkO* +Yҍ.O94LA4"TituϪf? (jڲZ@3#lnc"Ӱ1MaGG S +T3mn-|j\][!ߍ`rXq'&IĚ&wU?~twWWT{-`q埞#HBLÏRAd"/RɔEݍ_M̑;j'kUzDdmJ >y'd$%w;xUm`AW|$;2r0NyG ; a.ͮ*,o| oԁA>X-pH $[D %r(AZp%Rq%rWJJ\I\I)ӟ+i6+1E{6WzzYR6RsFڹUC41PNVV_t2q K|_G_\dTCp[0vš _# ,$< ns;!]^j/E/_Ío7 >8gǡ_JEh_5Rw7|uՏA߆*XC4Z~q'нHu[6|YmhA8 +@%,%g7#vPFT37dj7fӬա3a~!2lXܟ>2|ZbEPb&ufl/: Q;ٺgbﳦ ?k~ZqmvS_8 a@-֮U/.`zvq;U7!O;ս;4+܋gC]CIA.\kiHG8D͋n6ʸ-Z$d0oS7{ /6Qg6w$պ'uI]lH,!4v O;Wsoف77ɹcI%QagZQa +,z>o5*j5*r@ֶЏֶ pjJ'hDS$:Jۂh +>m1ҀJa-Dp9t?Nۂ(LߦHݠ?FbmJȴ]iYIobnc16x Ai Hby2ֻa1Ry7~u߶a1|YmhA +t*qIӰպfbvD`&5,f)v,02cP]:JrgL5tǭʀX^8_+wb=9e ~ +Tsy$,cm> endobj +8930 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [229.03 630.677 278.687 642.851] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8931 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.81 579.624 342.467 607.897] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8932 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [229.03 405.776 278.687 417.949] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8933 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.685 393.422 480.076 405.596] +/A << /S /GoTo /D (class_photon_view_a0d1e63579ed533e6394ca7f12b313c7c) >> +>> endobj +8934 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.81 342.369 342.467 370.641] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8935 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [229.03 144.61 278.687 156.784] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8936 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.685 132.256 480.076 144.43] +/A << /S /GoTo /D (class_photon_view_a0d1e63579ed533e6394ca7f12b313c7c) >> +>> endobj +8937 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.81 81.203 342.467 109.476] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8941 0 obj << +/D [8939 0 R /XYZ 69.866 801.979 null] +>> endobj +2178 0 obj << +/D [8939 0 R /XYZ 70.866 771.024 null] +>> endobj +8622 0 obj << +/D [8939 0 R /XYZ 70.866 569.287 null] +>> endobj +2182 0 obj << +/D [8939 0 R /XYZ 70.866 551.896 null] +>> endobj +8623 0 obj << +/D [8939 0 R /XYZ 70.866 332.032 null] +>> endobj +2186 0 obj << +/D [8939 0 R /XYZ 70.866 314.641 null] +>> endobj +6069 0 obj << +/D [8939 0 R /XYZ 70.866 70.866 null] +>> endobj +8938 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8952 0 obj << +/Length 2874 +/Filter /FlateDecode +>> +stream +x]s6ݿBKEC8ӹI@Q3E$Uv i't2~0Xޥ̝8a}YQֻY:Is"1[og{'{ժlo;W YJZV\,}\xbqo\DwQ8l kfVcfA;aø;ǙĻOoq/Y,"ڽdQN;W^w 2Wi8K~/E:~U5'V~jQ-K/t0ieNVw 8ƥv_0t6(iT(A!v_{^-ƫ:a%LөZ؉@ߏ14a hU[FZ6{ӎJfą>@Ai)<˻{ m䄪Z_^8ض%:l൯,T-C^ī-5[թ -;xPCݩ, JؐJZMQ];?YFIƆ.s%n0ᥥjH;!پN4B:JVB:u)K9 :)pKX"<0Qvnp*iK5"xp6ʅF5P wle6Tm?cF^¸}V[;:x9i'ف +l.a%: rg.`p8$bv:deVA`Gfu|l%^6wڑ,F6`6J +Z`aOy猯FY(lFTRjCb:$fW$6Jl$$ ޜc"m٩UI# ;{ ިnUU2oQ)$@)@ yfJp9cZ1k(;"`9Hv>yǁN]Viܒ"(Sp,停+N[ۜn%;!h+JQ]laII%F 4&Qg}"]l'O + A|t{R= d 캄Ɠ@d\ ΙƉ\˶MXjgv{|_V { _ϯOXpc|@ tLfX-'Oݱʚt"VgCǕR)NE5VK}GYnyL".?I\dAg:6yt(Z04*\}2h{M h~:G(Dt~޺Ч 9??YV祠Zݟޝ}#3ȴ^cc]yp}n&Gg '(62e,J8F+ڱj(\(:0K4!1€ +WF4B( LUʫ".ЧR9j kJ]NI+:p&0$iJjBLPYvP"X(SnWMUvDYk=R^ +y ؒ7h<{YQ.gryӭ "a@Q`e7$;}(r8%x~;ƍ=QIF {W OvI OQvlzz~5[P*Πu,gFӖ]-9zqזLے} nk}[ YM p!4*it-D6 +,h_¥5!f'[voȡkku# NzMT5x,.&;L}oSf-}o/L ď$N:Bnd=%MYxc ws+/%bEHe@A\-<ޙ8ׇ՞CtkJdGZ}pg>A#7hF&jFB4݌gOl]{Ƭo м-x* "\C|~):KC7뛂m ۦ%+$$!ct^kdP6%'Y5#4LV)]iؒ }N0p֡CT]I=Bu&.y*•]{"QWi߉`5n@^V#o7ZX$GsMEq t:s^f> endobj +8943 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.801 714.797 522.913 725.271] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +8944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [296.889 697.065 327.295 707.647] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8945 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [390.141 667.485 525.406 677.861] +/Subtype/Link/A<> +>> endobj +8954 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 655.991 400.63 665.889] +/Subtype/Link/A<> +>> endobj +8946 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.178 608.326 462.233 618.908] +/A << /S /GoTo /D (class_photon_network_a631231346113712f11319749d6e1a3eb) >> +>> endobj +8947 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.801 485.165 522.913 495.639] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +8948 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [408.073 349.115 525.406 359.491] +/Subtype/Link/A<> +>> endobj +8955 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 337.62 328.899 347.518] +/Subtype/Link/A<> +>> endobj +8949 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.687 319.535 328.093 330.117] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8953 0 obj << +/D [8951 0 R /XYZ 69.866 801.979 null] +>> endobj +2190 0 obj << +/D [8951 0 R /XYZ 70.866 771.024 null] +>> endobj +8578 0 obj << +/D [8951 0 R /XYZ 510.326 569.783 null] +>> endobj +2194 0 obj << +/D [8951 0 R /XYZ 70.866 547.166 null] +>> endobj +8572 0 obj << +/D [8951 0 R /XYZ 70.866 188.466 null] +>> endobj +2198 0 obj << +/D [8951 0 R /XYZ 70.866 167.737 null] +>> endobj +8950 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F115 6693 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8961 0 obj << +/Length 2698 +/Filter /FlateDecode +>> +stream +xZ_ OYHޥ׻irCfs\k++K$wo}?˛n2}2EW[yiI)[/aA*dI?Y"3Df;=Jj%rAjz, 8ЍZ;P&'}@GWyٯB@;=ZEPV.Xct y+neqN?.xv$GX V^ +ܓW4 :/@o=e|3! TqfaXډyG+@jG Ssի[5^ښ*7Gݡii./!@ {(01q>ʑ% &^hL H i[>5Gܻ0vuƪh[Tc_֦J7ΪvJ#/(m(7ׂ/M 1d}?Vϱ %/$ +ҌG2kH+ $#+ͤӮ2*/9Q>%exM?#.8藦3@erčQl3G*RNn_&oɁyy'{-mҐJ)R\3Ú}((սQ12iemuhg]G=.=vSƘß@,D Uw%"]?wr&5訋Ӆyaݶ2 ۼjm3RmV[m\]&Fu(!(Mȏ\. fq_t(Pk4FsI(vDJ]84#FkR>X+®A2fU u>+-cӤg[d73%с;;mzTR#cðUwrGRXVڃ-1\0KR=}fB*l6`H92f l=ͺN=-F3( \{T"}?Jc-=Qp)6$[$)1 P9;;[}$Q]{Zvc&4rFOH$\N3UmqB}w-X2iG7*e;} +toLj5;QWv;cs%|wƥ 78ߴKˣ2u앃:hۥIBJá=Lf&a)?߉ߓXb?o)oukh_mmG0_Big׌}I޷lٌ?ykoYva!|SX1ߧu9UʿnZ +endstream +endobj +8960 0 obj << +/Type /Page +/Contents 8961 0 R +/Resources 8959 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8903 0 R +/Annots [ 8956 0 R 8957 0 R ] +>> endobj +8956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.473 435.845 139.88 446.427] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8957 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.17 208.138 387.159 218.514] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +8962 0 obj << +/D [8960 0 R /XYZ 69.866 801.979 null] +>> endobj +8573 0 obj << +/D [8960 0 R /XYZ 70.866 618.639 null] +>> endobj +2202 0 obj << +/D [8960 0 R /XYZ 70.866 603.728 null] +>> endobj +6604 0 obj << +/D [8960 0 R /XYZ 70.866 295.908 null] +>> endobj +2206 0 obj << +/D [8960 0 R /XYZ 70.866 280.997 null] +>> endobj +8574 0 obj << +/D [8960 0 R /XYZ 187.211 140.015 null] +>> endobj +2210 0 obj << +/D [8960 0 R /XYZ 70.866 123.109 null] +>> endobj +8959 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F106 6377 0 R /F115 6693 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8966 0 obj << +/Length 2829 +/Filter /FlateDecode +>> +stream +xZK6ϯDUY W'-Hn4[3qRI 4_?p]gX.j-oqq*UH,W"N]VLn) wE442K6,Wqp-__?  $,r_z.6"dQ,ٕTS2qxyE8d>Jgל#sR묤qZeVmjA|ɛ8rvzGíig(VrÀX^r ;ʟ_ ՞H2N9A%wy-d✥Ju{̊)-=;C1Er ژρ\ڣdiB +\q0+d*^o],^KT2޴pB.c.hX,#) +JYk5^06[V~bokGql?LqOpVw†|ki.$1C9hJAQ1 8JT,Xʐ$bVp׬hȨVRqbx[Z1(QvZM7l4a",ڂ54z㦏&5!hXivawS%USa~KJwr8304) o"XwȒ[T%)"ɋ9si lZ; '8e5Xl`x̪ 7HϜ,煡)+Ims-=U4hhؑq<-кWpTZ8qm3(˖a43 PtR"R<"a"*r;+f(R+Zo˪6@;`7M۱(TJl ٩Y q?sy?ﶪD2 ɳACzwB%o3ujXE>U]߃]OX"sÈsnMNS^Ae^PKTҞ/| ơ +hZ+) ;]XO/ !J5HWyLybrz{4GZ,>)T;d㡈e+,CHXc"*h4(iPҲICu<,?ff6܈lЯt< +cй>"^6N]Sjjo,C1f2UcO1<KFP]w;B]RnAv2D]@Mzm +S[X(Eq6P~O;^ )c mUEG28GtY"q6B缂ۋ(x={^! P"[ ZNaи2/ ns Ay3"i)%ݵ_%ӢXKH |ڶfhwrqQl#Z%]:e3A AP%iOdjƯȇė]-lw~vu~wNýӶӧ/ Hj)xO)fQ)x. i4rV?=R6ㄾ>shҰI- KcS"'j-ɻ& F68oq \@}I>f 5#/mtg~`4ɃӪ?}}Mgnꒄ^_#ls_~.&jIbðڛmlOz ɷ)Np۴4M>4F:&Xff5\b4UJ?fg"DuEk:N8;Nxp >pЂ!iޭrSðNnHsj}ߕi :> ]OiMi3wy!43BQ",TOWh^y]^}g`#ugKvjUZYK{4y"&:{xLlMQ +B)Ob&#(! Aq".wڨ`q7Re) NO30 TA$cw5equ-=YOb UolcȗKp[o6xF$HP{'>i4CV4ܾ姕ұsu.SU?.9B3)ߠJ)X$gT߭0! ?0vd"oZ|n{gG9gm`T 6|CG6ۻ}OHvv\Ib5]e%} +@ xu.>4aq>ۺC|'✿gb-Ґ +sLij۸+\4޸VW+BLM~#kGe޺(7zGQʚԇmSǖH +endstream +endobj +8965 0 obj << +/Type /Page +/Contents 8966 0 R +/Resources 8964 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8968 0 R +/Annots [ 8958 0 R 8963 0 R ] +>> endobj +8958 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.17 746.115 387.159 756.491] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +8963 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.473 294.628 139.88 305.21] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8967 0 obj << +/D [8965 0 R /XYZ 69.866 801.979 null] +>> endobj +8575 0 obj << +/D [8965 0 R /XYZ 70.866 536.519 null] +>> endobj +2214 0 obj << +/D [8965 0 R /XYZ 70.866 521.67 null] +>> endobj +6286 0 obj << +/D [8965 0 R /XYZ 70.866 70.866 null] +>> endobj +8964 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F73 4716 0 R /F106 6377 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8983 0 obj << +/Length 2063 +/Filter /FlateDecode +>> +stream +xr82T@$;٤JL<9P$qB>n<(خ 7!QoQq%$"/$‹SNkg<]HQO\fm;_8_˪˺BU;rnj*@3IHC/ϮRo ko=J45 D!Qzg̨!upk:pIR^ _)UNu 9||#oUQ}Rjo/H(׌E9eDđSL34G3F^ +H\ $C2ժu:y:HGd< +I$8 +Nب1"BnGY6>ϥrekY@6[kOofޕF@Ft/0uJufP_\fT9-hߤނD{h/'ޏfYY۩95$'**< xcug뜅-#`wRvhfY>8E4'=-ZYbcZU4faQdݗ: -GxPYZY}Yp%s(r_w7nueYRh%0+$q#^#-%Yĸ*ˑoֶiP}n9g(6u|#@AƐq::~@9ZP8H0oy :nĥ4S+G:VESl뢳k}=ڗ]QmkvQqM‡YjY|ع[ /՘u0;,rsǙ L ֪3hk3w<, +'bȣ N8gc-BQ]ңI:E]T;#ɩhT!!X,Su}.&/sm_emsH{nJfR6)O-sYra#ݞ HxOC5"SE)#<ƽ ]1*F@HB$&oU Rt&=b)Rֵڜ*pG{`H&s4(I,#NCO wػ\ZLu جw6!s,.qrx-,;lqw ?%pB W3C۠Sпj]GiQˑI!S"AO#H%sGܑV$۱jÿo\izQMtrw[[?h=҃r>{P;[G}tx!{a7WMJhfQ,6ۘBe@:F.i~1r|_2Lma42*¤ZX[S= }ϏI.z%Ee9'ʑ-0*!AY>T(Ӟ@ @wjr-2~)cbc"Q;I:ΧmY'mT?tI'D]Vr%쾧^XKߦ/P(ڎ41aGuBI +ˬ92\.(oSf4,{ +s(ǣ"U!?pYuѻq/td3px<62q3Y\LvkVrp,ۓyVYWPFXQ{ + āa9 Oqoux_nboaD1,9G0JcCTUG-)^NC7"Eh^F)EDk7MMǖ;-Yd2ag()&BG툆l@h+k~ T)r +endstream +endobj +8982 0 obj << +/Type /Page +/Contents 8983 0 R +/Resources 8981 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8968 0 R +/Annots [ 8969 0 R 8970 0 R 8971 0 R 8972 0 R 8973 0 R 8974 0 R 8975 0 R 8976 0 R 8977 0 R 8978 0 R 8979 0 R 8980 0 R ] +>> endobj +8969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.063 732.423 324.315 742.898] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) >> +>> endobj +8970 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.911 714.691 239.163 725.273] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) >> +>> endobj +8971 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.217 685.112 226.879 695.694] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3ad62b9539e5cf97eacf06e2268dea5a) >> +>> endobj +8972 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.983 667.487 308.622 678.069] +/A << /S /GoTo /D (class_room_info_a7ae1c65429e1be34fdefd1b477fcd200) >> +>> endobj +8973 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.58 643.685 226.986 654.159] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8974 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.063 459.561 324.315 470.036] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) >> +>> endobj +8975 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.911 441.829 239.163 452.411] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) >> +>> endobj +8976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.217 412.25 226.879 422.832] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3ad62b9539e5cf97eacf06e2268dea5a) >> +>> endobj +8977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.983 394.625 308.622 405.207] +/A << /S /GoTo /D (class_room_info_a7ae1c65429e1be34fdefd1b477fcd200) >> +>> endobj +8978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.58 370.823 226.986 381.297] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.473 341.135 139.88 351.718] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +8980 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.611 115.186 235.594 125.455] +/A << /S /GoTo /D (class_photon_network_a3af7f8d0082599e6e3a56a5b1481a505) >> +>> endobj +8984 0 obj << +/D [8982 0 R /XYZ 69.866 801.979 null] +>> endobj +2218 0 obj << +/D [8982 0 R /XYZ 70.866 771.024 null] +>> endobj +8571 0 obj << +/D [8982 0 R /XYZ 70.866 524.548 null] +>> endobj +2222 0 obj << +/D [8982 0 R /XYZ 70.866 503.828 null] +>> endobj +8579 0 obj << +/D [8982 0 R /XYZ 70.866 197.797 null] +>> endobj +2226 0 obj << +/D [8982 0 R /XYZ 70.866 177.078 null] +>> endobj +8580 0 obj << +/D [8982 0 R /XYZ 524.409 70.866 null] +>> endobj +8981 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8994 0 obj << +/Length 1987 +/Filter /FlateDecode +>> +stream +xYKDW WaE3у*HT ^C +9ZkYZ4rtC/!^LB o6GOAǑ0HK2? "\$_궮^nICnޙǥPʐky$/YmrD>|vlfۂ#4 Rʼ~mQzws1E@Ehʑć3%1%&A8%A.W$ C_-;M. 5p3x.Œ\0pEd@>Q>ɲ MU~cdծp6Y$!ͮ4R'Ԓapk½C [lO^^\*mwh3 +ffscSttь&!~*$:nA 8#JCUJeO=?;QJ:c4Gz"?YȟKSJO>!| mڛa;F4SOOj'Βض_7XVnlh\vSǭ8iYK%n귃f3{$X 7ZRKN .NkOa8P De醁<`1lh%(t-ZfkeJ3=/SS>6QL(ۓnK/o4hvO(Ar2Jh v*e~*Y:a-k^[nw50&ȭ,ܬ\vf¶eDCd1P?ݯfB$!m $t򁆤l%'0HB0պ>TUR+#Ve%J 2QMޙt&rۄufK찍wDmbօݾ9430uykaQdz~X+gw^fYT.PḱnW茂7y-U'p[Wpqx1(  OJ1xMwp+Rq_T1|}TcԇAIK}}{[BFr/8 +h@aQTXƃD0fYwSw1x={Ր0Xj0I1!=A hTb;prR3hdG-,L++'d(֍Jw[+l^ZQ yLi.r,4J̝[=_m+?-={dpB&Y9㌏J32 +7j6vLq5 \ݏau%Gl?9 ☌L`ٟnZ'Lw`_ٿSS*< H> lY$F4H8C6m1#^ھvӀBjL}b9sGeeAr|f} Ϸ)59|Î_x L 2yVЗMN8?;Fga\gq)l OԎ3<_}ZuDg_>37sYH/ܟA$ϼ2-Co^T:08u~1oDTc= $c.?CS P`# BNc`w{Au[un9enA˅ g<hkp7r)FfgGҖ + خD_6ه?VE{? 9sCw%Aa5o`r04E +endstream +endobj +8993 0 obj << +/Type /Page +/Contents 8994 0 R +/Resources 8992 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8968 0 R +/Annots [ 8986 0 R 8987 0 R 8988 0 R 8989 0 R 8990 0 R ] +>> endobj +8986 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.029 715.215 320.686 725.797] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +8987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.365 607.164 395.856 617.639] +/A << /S /GoTo /D (class_photon_network_af721675dc5cf3c5ac4d4b67339246cdf) >> +>> endobj +8988 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.719 565.522 295.698 576.104] +/A << /S /GoTo /D (class_photon_network_a9cf8214080471001a1a32e17eff9b402) >> +>> endobj +8989 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.719 370.507 295.698 381.09] +/A << /S /GoTo /D (class_photon_network_a9cf8214080471001a1a32e17eff9b402) >> +>> endobj +8990 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.365 352.991 395.856 363.465] +/A << /S /GoTo /D (class_photon_network_af721675dc5cf3c5ac4d4b67339246cdf) >> +>> endobj +8995 0 obj << +/D [8993 0 R /XYZ 69.866 801.979 null] +>> endobj +2230 0 obj << +/D [8993 0 R /XYZ 70.866 771.024 null] +>> endobj +6186 0 obj << +/D [8993 0 R /XYZ 452.602 688.627 null] +>> endobj +2234 0 obj << +/D [8993 0 R /XYZ 70.866 668.532 null] +>> endobj +8678 0 obj << +/D [8993 0 R /XYZ 70.866 464.032 null] +>> endobj +2238 0 obj << +/D [8993 0 R /XYZ 70.866 445.933 null] +>> endobj +8517 0 obj << +/D [8993 0 R /XYZ 70.866 251.393 null] +>> endobj +2242 0 obj << +/D [8993 0 R /XYZ 70.866 233.294 null] +>> endobj +8518 0 obj << +/D [8993 0 R /XYZ 70.866 190.336 null] +>> endobj +2246 0 obj << +/D [8993 0 R /XYZ 70.866 172.236 null] +>> endobj +8515 0 obj << +/D [8993 0 R /XYZ 70.866 70.866 null] +>> endobj +8992 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F115 6693 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9007 0 obj << +/Length 3182 +/Filter /FlateDecode +>> +stream +xڽZYsܸ~ׯŜ^ʃ-^֖Wf+Łf␳$hEI忧5lI< Gz,8M$ZD"J<;tg嗋 ?t8a>.ҦYyQlTYJU^8.LunG3l{XcI3 v pbq~ˁ|:` c؎m߳=[#qA2`؋KOXU6ʏR,k|%_FU:.  ]7Y,yzV#Đr;ݡjf 3'N;v,@·=Z-p`emm/G"Nx V]U[ҷ^f +~7摱e) AWy=](4nv]DWYL,fQ5-<̇3h*1(qa2ol7tyTjǘӲ:qmnwZ0 8IdRtg"t` ' _tkVD"X=/3GQ~MM'RӮퟫ5nl k[$cC&8vvDƺ%[oϐs׭M;os2tU ,k&ig:څ +]Cը05Նi+&jȭ%iiwL >μ̊vEZ2@VSЏ($~iSA B`хe=|pCa.C]]5?+m)y>%4 v߅6ϨI8&\8 }X[$pYsh}'(DemCsv]s0(=Eisa9bU˼ʍGma W4s&zWZN՗#aО{OO' T~wBlPߡp73u> v) VXq +I~b%i(LY}ul/0 یlۺ¸Y} M>taq[shpNuEcDR Ojg,-3\SPlcQ˩+ M*:Ʈ|k9ATiմ6xbD}W],{\Uʴfh‡Dٽ۞/VOBKYx ]up;- k<;+Bďan@򈅗oOn|p +ɯn 0uJ7t sc4 %6_o5u&a +i gh?v8Ϊ/7-fvv9rw;]eW_k%W\޿'P;y-(D`W !SC8j'l|>@']h?<Ɲoslm+m~B#:eDoJmyL_[Wb&x"z+RNǼZLRB$wBp)L,gȈ @5$8gb|Ŗ^=X{ЎaA!!4dT'LwRC{mW٦UU7p4g[^ϔA<{ AD$\&{LA]=t8rh{lsb|zNMpX6 m$sLuq w>c܇ Wg}RF*\pN-]0)w*'ׄETS3ǂ~(WRMg+# Nz Jb5n*O[Zc?*f|OD 5kFѻStF\t_ڙ~x8jf*C5Z"k#ψɿU{[6]h{;(ر0^`~+KYT.6ɟzrq^$!]wO*ܮ' +BT+ +endstream +endobj +9006 0 obj << +/Type /Page +/Contents 9007 0 R +/Resources 9005 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8968 0 R +/Annots [ 8991 0 R 8996 0 R 8997 0 R 8998 0 R 8999 0 R 9000 0 R 9001 0 R 9002 0 R 9003 0 R 9009 0 R 9004 0 R ] +>> endobj +8991 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.511 732.766 413.716 743.349] +/A << /S /GoTo /D (class_photon_network_afba456bbc9d1525b87eb060c959af2b6) >> +>> endobj +8996 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.4 691.232 301.406 701.814] +/A << /S /GoTo /D (class_photon_network_a84b7be74d130b19eeeb1d7b4e8193ad4) >> +>> endobj +8997 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.731 617.992 401.855 628.466] +/A << /S /GoTo /D (class_event_code) >> +>> endobj +8998 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.816 600.26 470.742 610.842] +/A << /S /GoTo /D (class_photon_network_a81af9e901341d6b647df1f6d7f2d7583) >> +>> endobj +8999 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 553.724 185.796 563.638] +/A << /S /GoTo /D (class_photon_network_a81af9e901341d6b647df1f6d7f2d7583) >> +>> endobj +9000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.53 535.431 281.898 546.013] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.638 469.986 350.183 480.568] +/A << /S /GoTo /D (_custom_types_8cs) >> +>> endobj +9002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [88.058 452.362 166.568 462.944] +/A << /S /GoTo /D (class_raise_event_options) >> +>> endobj +9003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 452.362 525.406 462.944] +/A << /S /GoTo /D (class_photon_player_ac363d86e7c6ea63573e0ecfda7f7eaa7) >> +>> endobj +9009 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 440.407 107.835 450.989] +/A << /S /GoTo /D (class_photon_player_ac363d86e7c6ea63573e0ecfda7f7eaa7) >> +>> endobj +9004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.347 309.605 446.351 320.188] +/A << /S /GoTo /D (class_raise_event_options_af1fcb68ddd5f76876c8448de8b5ecb4d) >> +>> endobj +9008 0 obj << +/D [9006 0 R /XYZ 69.866 801.979 null] +>> endobj +2250 0 obj << +/D [9006 0 R /XYZ 70.866 771.024 null] +>> endobj +8583 0 obj << +/D [9006 0 R /XYZ 479.94 694.223 null] +>> endobj +2254 0 obj << +/D [9006 0 R /XYZ 70.866 673.763 null] +>> endobj +8510 0 obj << +/D [9006 0 R /XYZ 70.866 235.083 null] +>> endobj +2258 0 obj << +/D [9006 0 R /XYZ 70.866 216.618 null] +>> endobj +8511 0 obj << +/D [9006 0 R /XYZ 273.439 132.259 null] +>> endobj +2262 0 obj << +/D [9006 0 R /XYZ 70.866 111.799 null] +>> endobj +9005 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9020 0 obj << +/Length 2825 +/Filter /FlateDecode +>> +stream +xڽZKsܸWLt *ÀmWuڵxR#22YEF7T.jt@Cbu7'?nOsV\mHqwCoݭ>:+Əb"z/%Y-5/~ G7z#=?Y޾=i{ă7c7*;|,V;{LսyX@.WW'12Y`>\a&}t;lKћ*uܹ+(7A 4}^d9_{yvEuËDSj]|x0x ”(gzb9X3xA&s KA֮F}E_հqi߀$eI,m]T@8iQ7l:3n9_Ӷ f|\gۉ)cJ#k-%`o'|K.# ]wLN-V;KWmuIU´]u[ wta"cU& +bI(Acb4Fx{(31`P.$h#0M˶8G\$h4֛4T%CGMPiCЌg~C{Zo[a@_ Vs*}iLQf KCxפZֵ p My.Z'}7 ߙ>aэB2^G`'\"} ~o G +ab4K״+PBu.:B)ծ1`!%,nr('%j~#~>욝0y19fxHZ0AlMҾ䠫xc Ss7'`qjIfP P6f LtJeDh,bixɇ{Z5 U MͻԲPgbɤ+XU)g)ǸLLZ—RJm%(hBLsaDZ=d$J<$-vL$p_LNWϠ ֪QEp'3lHn{"\^D1F ǻ-s´Fn"[cx 3}4Xj2CB;t*-5@='luzۯst 8>X̜κҋ6'+l:iFM"ygy= РNwsVu5s֜.}3uv/_qX L61ͣ5p;`kd` F3~"#]4fўZ-d +Ō!>gv] Gu ׺R"@+$7%24@:@U +Ȁz @46 O14mv +:!볔Y@ >24ڇ*˛*iڋ@ YV74{,-Ky !bOEP-[Y:3w\q`.*Ӯ2#R$H%]Yk^d*b YڄFl*iQkyK"ac)H!{$T(%kMGV;MVJlkY~*k >t`&bR˂$r jbe!Ot7eَu B,a48[RAcDmU14H4tJ~@Pn@$/8'(zFMH1 ө۝r M#tzSZtXTd`͛q`N_or(A\/;[$c!є.U$ n#;l^gB`(Z?6lPL0 mtV953oc} ha/3-rٳXL8%YJ%X4""c7W>|]⁋}.`n6Gab^K22]d,3Z_'5Jf?Z¼x" -]Bc7N&^xx1q)k@!,L҅Lx<0{-\H޿Vt؂`X)\hzఏ0KxBv؍@s߰rV>~T`Zw<m^"K,2i-&0K7 qT٥6s:ӧ#]J}9E +MޙmC]V˅g +R^][UKG<+:lz\ 2WW T"=~wRFLN[]O籶Կw̖_+ge?'7]`X|5!EqD1Obab^x Ƨb)5L1?*?.@jdp C#ѕnҾja!ۜ:Я/)Th_aA;d\g +Gїzf5l\&"  +endstream +endobj +9019 0 obj << +/Type /Page +/Contents 9020 0 R +/Resources 9018 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8968 0 R +/Annots [ 9013 0 R 9014 0 R 9015 0 R 9016 0 R ] +>> endobj +9013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.744 494.342 175.567 504.924] +/A << /S /GoTo /D (class_photon_network_aa93441ca5a719b31dddb38e4aaeccf7c) >> +>> endobj +9014 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [407.626 464.87 501.711 475.345] +/A << /S /GoTo /D (class_room_options_a2d2471ba446949054e81362057d0d8ad) >> +>> endobj +9015 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.761 447.246 170.565 457.72] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +9016 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 289.416 188.36 299.89] +/A << /S /GoTo /D (class_photon_network_a3badca00ee2bacec4eaccac76002f0ac) >> +>> endobj +9021 0 obj << +/D [9019 0 R /XYZ 69.866 801.979 null] +>> endobj +8516 0 obj << +/D [9019 0 R /XYZ 70.866 639.298 null] +>> endobj +2266 0 obj << +/D [9019 0 R /XYZ 70.866 624.445 null] +>> endobj +8577 0 obj << +/D [9019 0 R /XYZ 70.866 582.054 null] +>> endobj +2270 0 obj << +/D [9019 0 R /XYZ 70.866 567.201 null] +>> endobj +8582 0 obj << +/D [9019 0 R /XYZ 463.729 420.55 null] +>> endobj +2274 0 obj << +/D [9019 0 R /XYZ 70.866 403.701 null] +>> endobj +6252 0 obj << +/D [9019 0 R /XYZ 70.866 181.533 null] +>> endobj +2278 0 obj << +/D [9019 0 R /XYZ 70.866 166.679 null] +>> endobj +9018 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F73 4716 0 R /F95 6017 0 R /F115 6693 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9029 0 obj << +/Length 2366 +/Filter /FlateDecode +>> +stream +xڽZKsܸW0SaeĥxW+kJ>CHØC$ZO7kh9F_c&{}_K/ (AE^ beOV.DĂ$ Yۮ0 =L N}~@wk(wT"P('Vp,HG&q) [~Ϲ2Re޻R-qƺΛ }h߇*d}4zW򿬸Z;;Z0r V"ZT^JY`a͢ NboYqEG>BR!.ku7Ðll<&f;ǩi79Ea WW]ЯaKP'")kZs[%rMjV~EICF索6ͭ ReU)ufI,>̮mP%hbddYL|ť5!1-~(M$B?⁶(eA&  .,FGI@$x@_mɱbLD=o&]aގg)stWM^f O1q'o͞*Ӥ)hs۶d(? O QH蜄A%@DMu!6K]nm{7aZȎaRF?ΦjcIw+?^ +endstream +endobj +9028 0 obj << +/Type /Page +/Contents 9029 0 R +/Resources 9027 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 8968 0 R +/Annots [ 9017 0 R 9023 0 R 9024 0 R 9025 0 R 9026 0 R ] +>> endobj +9017 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.622 758.177 340.99 768.652] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9023 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.622 555.325 335.279 565.8] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9024 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.604 515.661 296.261 527.835] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.689 427.288 174.346 435.772] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9026 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.78 368.313 232.437 378.788] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9030 0 obj << +/D [9028 0 R /XYZ 69.866 801.979 null] +>> endobj +8633 0 obj << +/D [9028 0 R /XYZ 70.866 683.943 null] +>> endobj +2282 0 obj << +/D [9028 0 R /XYZ 70.866 669.637 null] +>> endobj +8634 0 obj << +/D [9028 0 R /XYZ 70.866 496.931 null] +>> endobj +2286 0 obj << +/D [9028 0 R /XYZ 70.866 482.625 null] +>> endobj +8626 0 obj << +/D [9028 0 R /XYZ 70.866 321.874 null] +>> endobj +2290 0 obj << +/D [9028 0 R /XYZ 70.866 307.568 null] +>> endobj +8677 0 obj << +/D [9028 0 R /XYZ 281.599 223.75 null] +>> endobj +2294 0 obj << +/D [9028 0 R /XYZ 70.866 207.449 null] +>> endobj +9027 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F106 6377 0 R /F115 6693 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9034 0 obj << +/Length 2811 +/Filter /FlateDecode +>> +stream +xڭZIwܸWp2rpG~X5FslʯO +dk$9'b)PZ>T97g?N̒0։<%ܹ8ܘIZ(vvuWW~%}B,c gjh~g;T`ݚ;O?U~1G@ +6Ң+!@cn1@[쨑ҧRx#-*^Adm/ڨhզ a_ILs/*+Vf'9dujI~yMD[}khv6u'nxςLBStSfC FHvA=f PlhFgjCMv`u$EgWyͷ 3TneHZ\{g;Ba{Y`Khjڏ90" eUS6P/4^74M֣Y7M=Fa UYVdeX'feBѭΎFo|SZkn07w\;s>%8VŽ>_Bܯ÷1J1V;tmT(❛0K-B!&qʪdmM'u0,XQjT-QFE{xkb5dG<.>oS TE,gc 0{?@`LM|{1%UhjM0oHxdf]J!6X&ݰ׈FˇcoD}:N"'dIu( P୉` +|+>-&#ģ[Ӕi,( bȍucyݪ8cvn\H}X*eИ؉M]x֨34P JC5<&_BfCD  9VaM_6hWh1!+| :2j5kʴ/~g7pxuF|.>p֡e69DA Rt`Fug}Ďh\7j熪Ƞ\-UZXhe-AUkr3;{X}5 $Y[tkbHcp+0Ѧ>vR6w hmG`$Ҏ)< uޥmiCkw͉ 4D̊#y\K r0hH˚1K9W1#19=ÑG_\`*9B.ܗd OkrCpRqđϨTS'9Qh%1|c%b7,Y0q(} /P1?F4:#0EU+J]ccڈnj[Cpx aSL#"sC=zYsxdr) .u,YP}{}%4{"{BC9/i! %P0/MI3 $3H(n}=q}]SWQj'0"l"n7&oT4f4*eE{ֹsRhb&QT<"` +3\k)N"q½&/ Wzr!N!~YW t=pGDp5T9! lYWzJ.!"غ0֭LA3ŠwYUR Ze^奱2LgӪT&_n@ᢟ:~6y,ܤlQeu=`[Gq<ߡukoxG5j+j{8bsj,0%A]Ŵ#4 L_ 69"kbzҧ.]Z dG}k_ll'pzK9Q[x 0Ӑu<Ys$q|2p.XqZ\$~L I[>㓨EB/tt=0;LuLMLK#B//< 5:-SRqA\p285B7 Qv +IP\Ml8[߅C d6c W'&d" +ѓNUR7;*x@_Ќמ7-f{w&pGq{[8p ?e +endstream +endobj +9033 0 obj << +/Type /Page +/Contents 9034 0 R +/Resources 9032 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9036 0 R +/Annots [ 9031 0 R ] +>> endobj +9031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [110.334 553.331 226.475 562.102] +/A << /S /GoTo /D (class_photon_network_aa7e51b5e5f9f8b89f057096f47d11c5b) >> +>> endobj +9035 0 obj << +/D [9033 0 R /XYZ 69.866 801.979 null] +>> endobj +8628 0 obj << +/D [9033 0 R /XYZ 70.866 734.255 null] +>> endobj +2298 0 obj << +/D [9033 0 R /XYZ 70.866 715.762 null] +>> endobj +8581 0 obj << +/D [9033 0 R /XYZ 70.866 295.02 null] +>> endobj +2302 0 obj << +/D [9033 0 R /XYZ 70.866 276.528 null] +>> endobj +8637 0 obj << +/D [9033 0 R /XYZ 70.866 89.358 null] +>> endobj +2306 0 obj << +/D [9033 0 R /XYZ 70.866 70.866 null] +>> endobj +9032 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9039 0 obj << +/Length 494 +/Filter /FlateDecode +>> +stream +xڕSr0(:AI,ϸ$1FQ!K01E*eE<IuwⰷXaU|.~,B dHG3@RH(-Zb!_+J`XԬ|ƴqga=]mʨSOcamvrh!^t +) zȾeud˯u 53ˆ>xZG3z/е_pʩ]JnlVm~5n  +/(dp>U3q!ghCk&RɄߎ֑THT8S!BN.4b/.8D(fL%M<a|[R'c bU;b,$S'^~Am0t17Q[^3gc aZ>vS ICb+_/P#~p#90m=c\`Asr9\y{U؍ +endstream +endobj +9038 0 obj << +/Type /Page +/Contents 9039 0 R +/Resources 9037 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9036 0 R +>> endobj +9040 0 obj << +/D [9038 0 R /XYZ 69.866 801.979 null] +>> endobj +9037 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9044 0 obj << +/Length 2059 +/Filter /FlateDecode +>> +stream +xZKwW:Իy3iw|2[,<K j}nQSl{{l.Z|wR2g(<)S$Z;]^Qw۬QwIPc$؍( #T10q~}A1vHG{?:1s; gp8\`+62NS0fTfՊT-%Kt,kI-#":hA|zbQ2MY@B3F# ܟ02d?.㑩7tY AyzKK\$zd4T +Q.JCQr! Ƿ8&_{SG"gJ!2՞ݑH'o3?17O3eutOs7d= $>o41L%{mZJrW7,gt41ޮ1S G~}5ҿL x>u|eO`4*|gٴ* lP>;imm{vl~{͈cѡIO4`KR^[h5k#swo1{8ݟcIU,+ͦ]Ph|5 l2/v\`ҽCRhV<[zwwmqpcX6X1ۭuf:42 Iئrd\\؏f?P }U{cټZыpozߚ$Pc:uxmsZCj=(neK.7Kڪ[@-3_{A [oX;dn{)3]t󍭾o΃~lp_@3_Am mim +K6E64 d.Q#4w/OQoE y +_6@Tl)/]"N#f:f ndtpvX[k'eoAæ̎wVv#c>ytDɉ,@ÃaRXtasp 0+bX> +sL2v-Mę`bĖº* +ʊ~'m o8$X +퓠E.F(Nvʓ=qLHj /OFh$ 2 9^HW~~~w}[ M]_<Ķ Pm_˓Jzn bk ?-cE 'kewe> ٓ`SJ77#FiU}MM"̑b"v5'+[9OZ[3V޿m&6Q +endstream +endobj +9043 0 obj << +/Type /Page +/Contents 9044 0 R +/Resources 9042 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9036 0 R +/Annots [ 9041 0 R ] +>> endobj +9041 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.959 241.29 236.625 251.872] +/A << /S /GoTo /D (class_photon_network_a0fdb79bcce45801ec81fbe56ffb939ec) >> +>> endobj +9045 0 obj << +/D [9043 0 R /XYZ 69.866 801.979 null] +>> endobj +8674 0 obj << +/D [9043 0 R /XYZ 70.866 721.901 null] +>> endobj +2310 0 obj << +/D [9043 0 R /XYZ 70.866 707.312 null] +>> endobj +8675 0 obj << +/D [9043 0 R /XYZ 70.866 607.246 null] +>> endobj +2314 0 obj << +/D [9043 0 R /XYZ 70.866 592.657 null] +>> endobj +8676 0 obj << +/D [9043 0 R /XYZ 70.866 492.591 null] +>> endobj +2318 0 obj << +/D [9043 0 R /XYZ 70.866 478.002 null] +>> endobj +8506 0 obj << +/D [9043 0 R /XYZ 70.866 377.937 null] +>> endobj +2322 0 obj << +/D [9043 0 R /XYZ 70.866 363.348 null] +>> endobj +8621 0 obj << +/D [9043 0 R /XYZ 70.866 127.738 null] +>> endobj +2326 0 obj << +/D [9043 0 R /XYZ 70.866 113.149 null] +>> endobj +9042 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R /F82 5877 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9055 0 obj << +/Length 2742 +/Filter /FlateDecode +>> +stream +xڝn8=_@,;YLMuQ,:}%F4S CYt'R!Fްn.V/Bψufg+&5>u7 7VpP-_q,N7eemV{?@mCwF9/>}^#AA w-C6i[S4 PDۅqe+f(WR{&0 \!,;s,|Ȥ+7Ye>h!~dr͹/,ϋ~"C+p1  a]_ife2-V{^<^6s|hε:t|i6k"u,awm TBs@ell7e}W1o/ uVQ`dyYQiw.QyI#Z_qϠ2it\+Xp|ɵx(@ ottڠ\G}"|Ăg  +Mo~e$&+6{e:F='F RV]v5}%]ӖG? R]6~ %K乛"pZC7dA;/ 7%32W)7(xZ@R_Oǘ6uileev5/<9(д̍w]X?(8a[5V@20,󶤱kX&K9f!@ JoYlFǰSX8D +!i:HfeAG)z&ڶZ2*%.YBZIy\bkH˫l[KBjG,/r m"z}1*7ZoQceC)pz$yj DYk>in/YyWy'Ι)tlzsnރr^˦t]Qwʢ㚻Cc{5 GϢGTݶ?c\c 5.Z\ ո)HSn@U0ƭ@AÇBL=@2sl3 +]ՉȓͤRtg?a~ *>_#`:o g#uL)H9gBpVĕmd-ݲ6`IϖMچNc0XAv5zq:?jwuo*A伍Dx;ٺ1ب҉t|;2XdPp~)fFRb:qoO 64bkn@BC'As)CNo#L^x'2 z'1^+88EjeY)B9F*4P b5GX߉oZ)pG*΀1Gk]˸%`v3Yn@S`rCا+7t!@ J74"GVN&[@ ]fkUZE~X+WD%*:rʗM  rY@<%.oKu@^sI* ((XS6*B(0Ӭa 2+JGYKA=bz4eLqN>,ޣnP jN*eϗ-"s9eD2&+'5^ܔ0%A cx9 > 7kOk#d% pB#?QpSWeזL_,<H>GEdF7X#(5`+>Y.-pcgEl…rT{r464lu0 R#+}cd(^cPq+{y,+-nwغlB f&ѩqZ;23Aae/({oݯ*]R7XDEߘ+ ̪ +D@i a%,y^\ a K?A:e%Ʈ5lx~{z y*2@+ 9 \X&n"Mտ8H2迾>mAM3be8TT8O䝆gGt>ԇ`ߛ8BaG{sO/^0Le.¢I '̛9XQ0}9æ[V{RUh՝qhYaɚFS鑐 z68wY xS +}ϐ^k +Z%1{s%Ҳ%AnOѱpxIСTʆ/Ƒl@riD:tTa_>QYΨMѷN F[dG՛' +aƁW2>Aq(y,xFΨߏ4by^54'dnz +m,z/I|7Y|#C|ԂKCycJP̡J]s&k 2 +B { ~-`;~ _ׁճzp"2GUHTCdB"ʶ@?';}IA'Rq}XQܔʆ6YL?$,w +endstream +endobj +9054 0 obj << +/Type /Page +/Contents 9055 0 R +/Resources 9053 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9036 0 R +/Annots [ 9046 0 R 9047 0 R 9048 0 R 9049 0 R 9050 0 R 9051 0 R 9052 0 R ] +>> endobj +9046 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.801 673.381 188.208 683.964] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.308 655.865 321.714 666.339] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9048 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [69.87 632.307 556.047 642.205] +/Subtype/Link/A<> +>> endobj +9049 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [110.598 543.216 187.064 553.69] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +9050 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.389 453.67 168.699 462.777] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +9051 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [268.923 453.67 448.45 462.777] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +9052 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.774 227.835 330.945 238.31] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa6fae9412143c8e2158841c492b22d698) >> +>> endobj +9056 0 obj << +/D [9054 0 R /XYZ 69.866 801.979 null] +>> endobj +8679 0 obj << +/D [9054 0 R /XYZ 70.866 734.255 null] +>> endobj +2330 0 obj << +/D [9054 0 R /XYZ 70.866 718.715 null] +>> endobj +2334 0 obj << +/D [9054 0 R /XYZ 70.866 357.945 null] +>> endobj +8737 0 obj << +/D [9054 0 R /XYZ 70.866 332.086 null] +>> endobj +2338 0 obj << +/D [9054 0 R /XYZ 70.866 332.086 null] +>> endobj +8684 0 obj << +/D [9054 0 R /XYZ 302.839 70.866 null] +>> endobj +9053 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R /F82 5877 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9065 0 obj << +/Length 2005 +/Filter /FlateDecode +>> +stream +xY[s۶~ׯP +/lEڎtHXnqTdiEh  Q)"8XL#UՔQԝ)K˨ z05Q[ j.eAʲwFUϻi(@nb5w7,lIpF= erjRXZVD^(mּǷUѹz,M4Ә |,v$ wz΂NP,R#{`)(7c1;mL'(,$DžUL ,Tnibԡ4(G  +qh5Z ۍn ?xOA`zcRйvOO_?sd*hYȣ#sQI.VkcRrcL0lP5s*+ipߢdqCu1(f9㘉to\pMm)B~Ns_IҢ[IV͒ۉJYQ#]nRi؏8:}[6ga,37_/AZΦ.U;L:ƞ !*,c +XQyx mZ9wkUuq?!S!2~֗ZSqs? +NiG vILI"\z<)V0'TU3r)UIo駘l9oI=~ }rc3~ͫnBaS +@}=f/ w7fGO~FxM;n݋fރx"sY%s#PMxa{u3p-_!ds%Z#H4yHkeRSuqb3<ԁ$=V hv5>JٲwER/ay +HdP9w*Q@mg H@S?n!ϝU[:8,ֽk9~Xj;d=IQDfpX5egb2v/RhێIs{i3I( {7r7A vB;ο -ec82o1ׇmڷ_qu +endstream +endobj +9064 0 obj << +/Type /Page +/Contents 9065 0 R +/Resources 9063 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9036 0 R +/Annots [ 9057 0 R 9058 0 R 9059 0 R 9060 0 R 9061 0 R 9062 0 R ] +>> endobj +9057 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.728 572.039 502.645 582.621] +/A << /S /GoTo /D (general) >> +>> endobj +9058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.047 494.831 458.691 505.413] +/A << /S /GoTo /D (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74) >> +>> endobj +9059 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 396.222 117.483 404.706] +/A << /S /GoTo /D (class_photon_network_aa9088b089a8c1b3548f8a7a792146e50) >> +>> endobj +9060 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.224 251.87 369.881 262.452] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9061 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.493 186.617 419.15 197.199] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9062 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [77.348 97.454 127.005 108.037] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9066 0 obj << +/D [9064 0 R /XYZ 69.866 801.979 null] +>> endobj +2342 0 obj << +/D [9064 0 R /XYZ 70.866 771.024 null] +>> endobj +6601 0 obj << +/D [9064 0 R /XYZ 82.971 705.535 null] +>> endobj +2346 0 obj << +/D [9064 0 R /XYZ 70.866 683.75 null] +>> endobj +8681 0 obj << +/D [9064 0 R /XYZ 70.866 638.287 null] +>> endobj +2350 0 obj << +/D [9064 0 R /XYZ 70.866 616.606 null] +>> endobj +8736 0 obj << +/D [9064 0 R /XYZ 70.866 562.972 null] +>> endobj +2354 0 obj << +/D [9064 0 R /XYZ 70.866 541.29 null] +>> endobj +8738 0 obj << +/D [9064 0 R /XYZ 70.866 495.827 null] +>> endobj +2358 0 obj << +/D [9064 0 R /XYZ 70.866 474.146 null] +>> endobj +8683 0 obj << +/D [9064 0 R /XYZ 118.979 397.321 null] +>> endobj +2362 0 obj << +/D [9064 0 R /XYZ 70.866 375.537 null] +>> endobj +8687 0 obj << +/D [9064 0 R /XYZ 70.866 318.118 null] +>> endobj +2366 0 obj << +/D [9064 0 R /XYZ 70.866 296.437 null] +>> endobj +8686 0 obj << +/D [9064 0 R /XYZ 70.866 252.866 null] +>> endobj +2370 0 obj << +/D [9064 0 R /XYZ 70.866 231.184 null] +>> endobj +8685 0 obj << +/D [9064 0 R /XYZ 70.866 175.766 null] +>> endobj +2374 0 obj << +/D [9064 0 R /XYZ 70.866 154.084 null] +>> endobj +8690 0 obj << +/D [9064 0 R /XYZ 369.548 70.866 null] +>> endobj +9063 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F106 6377 0 R /F82 5877 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9073 0 obj << +/Length 2460 +/Filter /FlateDecode +>> +stream +xڽYY6~_!e% M>xIvZRtxvSEuz)Hm{6^_^|#fIzƈl%. cL /tXyP_iZ7WUy٥J Hmc/>|~4l%q')x,xw `͵5phkcccm۶W"C=r*v6qCI "m׈r5J 4_Gf_u+1sCWƎox{wwUs6&]G-6Yrq;5e=vϼl9, &m<*r$m+(mKŋ+/zqGZ/˷Mk2T@ˌXWvMHҪރ/QCe'!R|u#?LHB皷}tBH7ˁ V=f{"WWm\,W"/*7/ONfhz8=)-~rpeAAX4 Z-ϙ b|Nq6ʂȯF(7CeNfF sp ,O;j (!IXq/󟪲m +ذG[+ L5}hN0\I. s]|dqYf__kQl,[rK`P!څC8iwHdϩEŤ}̤FVu5@;@cUC9c<>XLmoɅ@k>+tu=sR:.tL DZy@G?PWzBa9 @kg VT?O3q5l:TGlIu$f T5.he_ZHg@,`9 z&AjZW3ʶ?1hP3iS/?xsE0 +W)-|Ͷloje9uu{d$JՑaSGdH"8emQ=$\JVU!:-48㟣EC_*r%y{k6އǕໜ,Lt-/nc@:sUČfؼn)&K]&_NvYىGcrn7`Ϸ`A#3):̉gez,xE1TAhIgXlH[]*Ex<q >+ n*$rYzLQKe25R'E[s5`Sq&PN[{߁}ȝH4z"L$"(I#vjcUn? fj(X[z!T uڇCKqD.,TxГl.19$(ը 2!?P>*>0usX+߻poRוauZN2*1U|3G}H߰vl9MX# 6qT+r~qǐ;t L\2?a)wU gEiu*΅O\-?sѯ_=yŊj\+|TO!E[- ]ӢN^c5fi,=Pn|otǵo_=[r(em1P05/yX_˜\,umSmcݱTJV(ɒZdCY5}~U"hBrPv +endstream +endobj +9072 0 obj << +/Type /Page +/Contents 9073 0 R +/Resources 9071 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9036 0 R +/Annots [ 9067 0 R 9068 0 R 9069 0 R 9070 0 R ] +>> endobj +9067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.262 305.388 343.142 315.97] +/A << /S /GoTo /D (class_photon_network_a5d231578fbaadcb89dd592d2d8ddfd0a) >> +>> endobj +9068 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [277.007 171.842 326.664 182.424] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9069 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.912 154.217 407.569 164.799] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9070 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [301.287 142.37 350.944 152.844] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9074 0 obj << +/D [9072 0 R /XYZ 69.866 801.979 null] +>> endobj +2378 0 obj << +/D [9072 0 R /XYZ 70.866 771.024 null] +>> endobj +8691 0 obj << +/D [9072 0 R /XYZ 127.263 694.05 null] +>> endobj +2382 0 obj << +/D [9072 0 R /XYZ 70.866 674.616 null] +>> endobj +8734 0 obj << +/D [9072 0 R /XYZ 462.518 525.255 null] +>> endobj +2386 0 obj << +/D [9072 0 R /XYZ 70.866 503.929 null] +>> endobj +8735 0 obj << +/D [9072 0 R /XYZ 471.889 433.243 null] +>> endobj +2390 0 obj << +/D [9072 0 R /XYZ 70.866 412.025 null] +>> endobj +8689 0 obj << +/D [9072 0 R /XYZ 70.866 368.816 null] +>> endobj +2394 0 obj << +/D [9072 0 R /XYZ 70.866 349.485 null] +>> endobj +8688 0 obj << +/D [9072 0 R /XYZ 301.199 266.844 null] +>> endobj +2398 0 obj << +/D [9072 0 R /XYZ 70.866 245.626 null] +>> endobj +8680 0 obj << +/D [9072 0 R /XYZ 348.925 133.298 null] +>> endobj +2402 0 obj << +/D [9072 0 R /XYZ 70.866 111.972 null] +>> endobj +9071 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F82 5877 0 R /F95 6017 0 R /F39 4678 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9087 0 obj << +/Length 2598 +/Filter /FlateDecode +>> +stream +xZKHpe)=J"6k9Tm dגWɒ[n`v&bTT)++_fZ<=/OpiE$q껑, ʏͦnr&WY^z1;Sf +S!`|hمfXJҁtslM[l@f/Ot< &D$9aߚKql\}]Zc)xV )5M޹(ً' ' )HfTZ+ܲ_lרl^!qf_KӶ8ȥ WMS1LޅRs^~w1g9=UA@C~)/7%_1:}.b3 J;H5Wfj}dUYvYKf[cuK۲ۈȘgwkIo->lAGcnkhSi߂{1eƧ:#Dz8ϚM!MmxF *Sg2&J hA'B$ sHn:aZ}&HQBx h6 :#X =MF@/[1Yau?;7D޳e4"| [yƃ:RtO"a(3e"HZfs4֮$r~'`JZŪ(1Q#9ZdC=6JXH@ iSt+٢0jfTh)^tM ! 6-4ܐW\"vfk(YNv`')3,];*G8اH|ŲT |q4Kl ,ddKQ3XMՎ4 c_L|\df}ŅIw`'fP?'q~zĹלpd\Lb@@C@VZ_'6Yzd(&vU%.eT5WȂ='&JCgHyQ/tZ^>C fvdZy:za˥9˂Nqda 3J0bO4/De 0{$!AYmu@捰ap2ŋeOqˣrƞ+fG'-~r }I^yPeCQ +? +N+Ucҕ!u0#myi)VAș ILD%V{)taM/+"'I ͥ0>Tqhg?U`z ~'oS/u~̵d*pXewC_y#81l%0f\Ňꗞ1,bX5YT qY5dd=Z= +i{+YP4>qG@9Y" )5*Ta |S]O࡛]SF' m)#McvAU1y3$ٰ{R, +>4$ G^| JH;Kҫ3Pr;ILԺO )6Bu\.V*ѣ0Y 㚹JJH8c|HK͑?R' 1~sHEkeBx؝SmL?c/1քܥP?T=رbo])喏~֛^'}qV}]˭䴺&C SsG:slt/O|o vc |F$-&^3C~ՠ/:f?dw$Y[LsLEPEi2,r+SGgPӹXH7eWfC!/{58IPB6 G))<|@+^Qd|\`Rͨn+O~[0*.UoO;]q~K1ljT{dlV\7k@id*qrKPݽ;lb/5幹Dj\[txVU~!s%̲fn텡|(z&t?r8 +G_ʡ""VKMϓ&牧y %x0]C G)jz>?k #{K +endstream +endobj +9086 0 obj << +/Type /Page +/Contents 9087 0 R +/Resources 9085 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9090 0 R +/Annots [ 9075 0 R 9076 0 R 9077 0 R 9078 0 R 9079 0 R 9080 0 R 9089 0 R 9081 0 R 9082 0 R 9083 0 R 9084 0 R ] +>> endobj +9075 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.788 592.533 417.444 603.115] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9076 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.205 491.839 297.111 502.421] +/A << /S /GoTo /D (class_room) >> +>> endobj +9077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.311 434.777 336.641 445.36] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +9078 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.509 405.305 226.583 415.78] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +9079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [454.911 405.305 525.406 415.78] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +9080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.899 289.085 525.406 299.56] +/A << /S /GoTo /D (class_photon_network_a5bb203a37b6db717583ea7b81fb56852) >> +>> endobj +9089 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 277.13 92.799 287.604] +/A << /S /GoTo /D (class_photon_network_a5bb203a37b6db717583ea7b81fb56852) >> +>> endobj +9081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.637 259.505 428.337 269.98] +/A << /S /GoTo /D (class_photon_network_a5bb203a37b6db717583ea7b81fb56852) >> +>> endobj +9082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.113 229.926 179.018 240.401] +/A << /S /GoTo /D (class_room) >> +>> endobj +9083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.976 217.863 473.956 228.445] +/A << /S /GoTo /D (class_photon_network_a9cf8214080471001a1a32e17eff9b402) >> +>> endobj +9084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.853 148.954 217.259 159.429] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9088 0 obj << +/D [9086 0 R /XYZ 69.866 801.979 null] +>> endobj +2406 0 obj << +/D [9086 0 R /XYZ 70.866 771.024 null] +>> endobj +8748 0 obj << +/D [9086 0 R /XYZ 70.866 751.8 null] +>> endobj +2410 0 obj << +/D [9086 0 R /XYZ 70.866 751.8 null] +>> endobj +8790 0 obj << +/D [9086 0 R /XYZ 380.532 652.585 null] +>> endobj +2414 0 obj << +/D [9086 0 R /XYZ 70.866 635.812 null] +>> endobj +6068 0 obj << +/D [9086 0 R /XYZ 416.745 494.83 null] +>> endobj +2418 0 obj << +/D [9086 0 R /XYZ 70.866 478.056 null] +>> endobj +8789 0 obj << +/D [9086 0 R /XYZ 197.54 349.03 null] +>> endobj +2422 0 obj << +/D [9086 0 R /XYZ 70.866 332.256 null] +>> endobj +8740 0 obj << +/D [9086 0 R /XYZ 445.492 208.899 null] +>> endobj +2426 0 obj << +/D [9086 0 R /XYZ 70.866 192.126 null] +>> endobj +8742 0 obj << +/D [9086 0 R /XYZ 70.866 137.888 null] +>> endobj +2430 0 obj << +/D [9086 0 R /XYZ 70.866 123.109 null] +>> endobj +8741 0 obj << +/D [9086 0 R /XYZ 70.866 68.979 null] +>> endobj +9085 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9097 0 obj << +/Length 1908 +/Filter /FlateDecode +>> +stream +xYKs6WT`>2bǞdčɁ! 5E$]<0+v;nN%}a|ttN0ʉ0Љ3Ϝ뇓/w(|xQviUM^OrE֌vf>s)v\;f vt;ObVZnbܙ~aN<"aVVͲc{(@db sX/6ZN\25Z˚kӄ8 blD0h`}Um.(*×cDZiMk9ѩƛz~S xm*n7P w2seZlVKծؖi ]5Ur.wЉ_'Smhjw)P5+>+ xH/bo964CʺCؙ6!ָ9f$,g49[ө3BSʩ(|b0Rjƶ79g҇2yϓ}3}@7"rOh2Xƈѳ=ꅲ]7|nC RӢV|^WzkzJCF<` }˷^n. +`#4` +Af>H>+{QK#LDzyQ;[YtUSK˒`h-[;٠J>@LQf&I+Zɕ<.֧ 9l@S?.TM"u| WP(ǜr]~&h]Y>L*K h2mx/HAhs3K.ȤKS Ӽpv!=Q,P. +d)@]%⧁_,:t"R_jhij[Z%8C5s +I$cI kb\{PHOˊvzΪaZ*xEV'1@̏3}yIJs~mh%a?}1 +Y0 +09RaV]E<i]V~[t[h|!2:+de 8? U&zaZ L{Ci?Tk1:ȚȧD[LU_GpZGpú5b]oАX6aU.|_z RI +PjUKZt68r]N a7VS=+K e_r{ y +exՎꁡK~-=SZ*ƶbA0>/Fp{VN[ @$KsXȣfbg_2JRT;]⌰+G{CV0M=Be:=R&Q V9K'.Z{ȷen#VLkvۏΥ䣽06KE*VuHV?3{s{#\ È\?_zYR7;RB2!݀uBƿЭD#Pxc8?)$L= +;jvѓ,\&\ +ّXm@ 8&Z6` 2s'm65(%g4( .(#l~2p(2xZ2"+x¦u@߸T3 IwiUʝ9O4ͦMRx_`W*W6dE+qjB]M;,bFXr$ ctO{B? }V#;>~!0Ea (hAK-6{2~b!W'${W +BS]{Musnپ,KZK*o{ n-BTdb==]n +endstream +endobj +9096 0 obj << +/Type /Page +/Contents 9097 0 R +/Resources 9095 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9090 0 R +/Annots [ 9091 0 R 9092 0 R 9093 0 R 9094 0 R ] +>> endobj +9091 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [418.431 732.978 448.837 743.56] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9092 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.89 325.03 493.002 335.612] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +9093 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.63 313.075 326.036 323.657] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9094 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 140.062 195.722 150.536] +/A << /S /GoTo /D (class_photon_network_abdced09cccf61ae817cb97705ffce137) >> +>> endobj +9098 0 obj << +/D [9096 0 R /XYZ 69.866 801.979 null] +>> endobj +2434 0 obj << +/D [9096 0 R /XYZ 70.866 771.024 null] +>> endobj +8744 0 obj << +/D [9096 0 R /XYZ 70.866 733.974 null] +>> endobj +2438 0 obj << +/D [9096 0 R /XYZ 70.866 716.566 null] +>> endobj +8745 0 obj << +/D [9096 0 R /XYZ 70.866 673.958 null] +>> endobj +2442 0 obj << +/D [9096 0 R /XYZ 70.866 656.55 null] +>> endobj +8801 0 obj << +/D [9096 0 R /XYZ 486.574 598.097 null] +>> endobj +2446 0 obj << +/D [9096 0 R /XYZ 70.866 578.802 null] +>> endobj +8800 0 obj << +/D [9096 0 R /XYZ 70.866 535.978 null] +>> endobj +2450 0 obj << +/D [9096 0 R /XYZ 70.866 518.57 null] +>> endobj +8799 0 obj << +/D [9096 0 R /XYZ 70.866 463.899 null] +>> endobj +2454 0 obj << +/D [9096 0 R /XYZ 70.866 446.491 null] +>> endobj +8814 0 obj << +/D [9096 0 R /XYZ 70.866 403.775 null] +>> endobj +2458 0 obj << +/D [9096 0 R /XYZ 70.866 386.367 null] +>> endobj +8817 0 obj << +/D [9096 0 R /XYZ 438.247 316.066 null] +>> endobj +2462 0 obj << +/D [9096 0 R /XYZ 70.866 296.664 null] +>> endobj +8791 0 obj << +/D [9096 0 R /XYZ 70.866 253.947 null] +>> endobj +2466 0 obj << +/D [9096 0 R /XYZ 70.866 236.54 null] +>> endobj +6673 0 obj << +/D [9096 0 R /XYZ 116.181 130.99 null] +>> endobj +2470 0 obj << +/D [9096 0 R /XYZ 70.866 113.479 null] +>> endobj +9095 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9102 0 obj << +/Length 2254 +/Filter /FlateDecode +>> +stream +xYYs~@ UNJLU$+Rݱק{ rRz}|} v.<{vI_,7u(Zĩp"o}!zڪ|-ۃ-\?e5 uo\Kֲ\KD[/~Z}>bw%`ޟ}.r{p?MrB 3wLykQ~lUK};PPM"u ͔*[Y{UfEw&.= +%§^2Ђ]^h)Y|TVԩʂgwNTc +1rC/Oц 78D,_A.";ޖgmF=ŻUI^ aPbCQD"4*oQС! a54XK6,Œ{]#7]A_ū]%bPD@!PL乎 yy9(Ⱥ[WaY#sLO(@) rN80|llV +אw*PWZ-_O XAFQhfZ~3a +8p +횘9UD-?w F {"9>TCj`aW췪R7FGwv`Ɯro V]]+Q<3_g g$5bm3$$!bDeCBw:`갹F? ࣝbP1q pUEKn_$ 4\6H+'1ޒg +7I@t=vGvT!"uY7g_FPr,vUy!cA{;t-vY.klk4{J[̿^ ikUnS6vP0 'TAXKa ~aNw7AS3',#mZ͸1、a אcQ?w7*yGR;e!= +bύ4(سWKO&=4 .q~d'oDX?$'49>4vb/|>1NKUizקn?-Vg}q1o04LE#=EzCҤ5(%MgE3$ +q$$hd<+Կq|' 8]cC]v %H^> endobj +9099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.898 377.443 297.223 387.918] +/A << /S /GoTo /D (interface_i_pun_callbacks_ad3e808558f778aec6b12e950d9632506) >> +>> endobj +9103 0 obj << +/D [9101 0 R /XYZ 69.866 801.979 null] +>> endobj +8787 0 obj << +/D [9101 0 R /XYZ 322.869 707.571 null] +>> endobj +2474 0 obj << +/D [9101 0 R /XYZ 70.866 683.602 null] +>> endobj +8508 0 obj << +/D [9101 0 R /XYZ 70.866 639.972 null] +>> endobj +2478 0 obj << +/D [9101 0 R /XYZ 70.866 617.998 null] +>> endobj +8797 0 obj << +/D [9101 0 R /XYZ 501.539 558.739 null] +>> endobj +2482 0 obj << +/D [9101 0 R /XYZ 70.866 534.769 null] +>> endobj +6645 0 obj << +/D [9101 0 R /XYZ 88.547 463.555 null] +>> endobj +2486 0 obj << +/D [9101 0 R /XYZ 70.866 441.478 null] +>> endobj +6250 0 obj << +/D [9101 0 R /XYZ 226.295 338.792 null] +>> endobj +2490 0 obj << +/D [9101 0 R /XYZ 70.866 314.931 null] +>> endobj +8794 0 obj << +/D [9101 0 R /XYZ 70.866 273.085 null] +>> endobj +2494 0 obj << +/D [9101 0 R /XYZ 70.866 251.111 null] +>> endobj +8798 0 obj << +/D [9101 0 R /XYZ 436.31 136.47 null] +>> endobj +2498 0 obj << +/D [9101 0 R /XYZ 70.866 112.501 null] +>> endobj +8793 0 obj << +/D [9101 0 R /XYZ 70.866 68.979 null] +>> endobj +9100 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F82 5877 0 R /F73 4716 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9114 0 obj << +/Length 2581 +/Filter /FlateDecode +>> +stream +xZKs6WpsYNDoҵ*[J\J֒70&ɀ~lk+1 h9+9^FNI:Nʼ,I4wnΝ'L|/KCبBIf(w oDp{ۑK[YeA,ya9zeDqő:vnyĈO:8d /H14e{I蛛.~奸_0-#hz-:ĻDžbѫ^cFd"gjeKFX;Aez,`l ae%;D,Mx)o3zi_fh'T"K3h{iK7 +%LϽ0ÿ{#Ͼ<_#0VSfOVf+<?1vV! f hbGNQ]5D + 8QԀ,_N!uF,Z|*U۠')$5$զ&{RW`a`[.\k>J4UG R/5 .|+}>@.X $e1O'+gNJk;MwGJ6Of b &)tKRItXS [hp-t~qk R'4̴Gg]1X[9cϏbr`_5Jג(q]MvWҫ!lh/y |`S1i6_S[:At@fzA-$6mAub7 Kz,0'+7$</;u]'d<O$:+4|mtaxl1z^ 5_Ε/˫d`!} 3%V j:x.=m"ޮPrC;B۬~Ya+ag{eCɷ>ܦsd8D܃qpOήLX*>K +R=-hD =?HR CvUb)n72F: [^W/78 rrdWbSu +V AD?p0qsTֹ1jOVgܖxdz$mmV0n#| /'يVE.Vm"ʚ&j^)>.#>vq_(ᄀ䩗rIHɛ>˾-dg9vQ'Ti_v*45tcքNg%N0~G4caP F┺ٖGTr h"6eA^Ԁ$ʢu&k}v/X5M*k Fo{?_O>S^&AԂ2}=o͵A{*YM 5uOWF[Ll֓bПg[jiIG:V%`b0fM/ܟuюѓ> Pj*flD]Eu#tZqXYKA&ۥaEZ^l ti8u QKJJôkMc6_P?|'>ǻ3':|@F{т]?3ZT!cZTwjBRՖ*ؓBh2ϏJNUӖ|_rEhOe[RJ:S (Lg4 G 0EII"$^u-R]S:%5b|Oh&|؋(1_k![Ғ!He|syDکP & +endstream +endobj +9113 0 obj << +/Type /Page +/Contents 9114 0 R +/Resources 9112 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9090 0 R +/Annots [ 9104 0 R 9105 0 R 9106 0 R 9107 0 R 9108 0 R 9109 0 R 9110 0 R 9116 0 R 9111 0 R ] +>> endobj +9104 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [97.594 686.28 210.991 696.754] +/A << /S /GoTo /D (class_photon_network_a8ad64b1a76c7918bbe5642639afff458) >> +>> endobj +9105 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [311.58 686.28 415.007 696.754] +/A << /S /GoTo /D (general_masterServerAndLobby) >> +>> endobj +9106 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 581.34 195.722 591.815] +/A << /S /GoTo /D (class_photon_network_abdced09cccf61ae817cb97705ffce137) >> +>> endobj +9107 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.567 417.242 321.697 427.717] +/A << /S /GoTo /D (interface_i_pun_callbacks_abee2c86784a9a700b9f5b4073bd00be7) >> +>> endobj +9108 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [88.304 399.618 217.904 410.092] +/A << /S /GoTo /D (class_photon_network_a85b058bab4a369d0c5730cf43b462962) >> +>> endobj +9109 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.042 381.993 353.831 392.468] +/A << /S /GoTo /D (class_photon_network_a1b3803f17c6d713593bca41547b8b9b3) >> +>> endobj +9110 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 149.521 525.406 160.103] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +9116 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 137.565 104.786 148.148] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +9111 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 127.502 177.063 135.986] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +9115 0 obj << +/D [9113 0 R /XYZ 69.866 801.979 null] +>> endobj +2502 0 obj << +/D [9113 0 R /XYZ 70.866 771.024 null] +>> endobj +6697 0 obj << +/D [9113 0 R /XYZ 419.489 689.163 null] +>> endobj +2506 0 obj << +/D [9113 0 R /XYZ 70.866 671.859 null] +>> endobj +8749 0 obj << +/D [9113 0 R /XYZ 489.075 554.645 null] +>> endobj +2510 0 obj << +/D [9113 0 R /XYZ 70.866 537.232 null] +>> endobj +8819 0 obj << +/D [9113 0 R /XYZ 358.412 384.877 null] +>> endobj +2514 0 obj << +/D [9113 0 R /XYZ 70.866 367.572 null] +>> endobj +8815 0 obj << +/D [9113 0 R /XYZ 519.651 297.562 null] +>> endobj +2518 0 obj << +/D [9113 0 R /XYZ 70.866 280.15 null] +>> endobj +6255 0 obj << +/D [9113 0 R /XYZ 200.132 210.247 null] +>> endobj +2522 0 obj << +/D [9113 0 R /XYZ 70.866 192.943 null] +>> endobj +6248 0 obj << +/D [9113 0 R /XYZ 70.866 128.498 null] +>> endobj +2526 0 obj << +/D [9113 0 R /XYZ 70.866 113.081 null] +>> endobj +9112 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F82 5877 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9130 0 obj << +/Length 2212 +/Filter /FlateDecode +>> +stream +xYKs6WN͖SYGڒupbGnt/q$)W*9Fwkm-׺8yquOIhNǁuuk%Ʊd{ƺS'Wg~ڗ;ժlVkuiVޮ<זr: 澮| 2'Jf Uҏ7ߍ<ɓ R +uHAU{Adzf3vI64Ð(M&'phPFR*;'(ZFc=F+6<P`FI龀A#R0ѻk,r(9*dY~;v'a~`I>b\,o NDS26Dx@!IJY(dq3OBǙh*!y18cpSG9yi3,?׀kBOCK;BL9 iN0&yNZ*V>-{W;&q 4BXPCx#qO7w"h$ZOƓ(2H'VdIjφ{$#|#sFS1LoO:͎_^ȥ|;[;S r0]e!:zi0f]U|l7>h6rŏ-aYC_w5I0:1=[. +CZUq>RX1=c=7eEzZU(-o/KѓGח]u W/WTP"$azhm`v ^|SQ˾e=Gɸ})^_! ٘goE&xi@U$}Xڂ?ќ57,=}@98"7])ر!4]ɺ^3-xRQ#v6\kɀ6ڀ1NP=&j}~[Mvz0 0຾)Mk ߺn=̦Y$1p"j5,& j htZ-i thBr8v|㹡$X8{D3s$߷\^mw(>+",nH`TUkf544@F+Ά:=Es(/K3ѫ`g:jkLnaF0]߄CK)!,ֆ/53E#3A8l: + 6ݞg0b' +VQV]ctFQk Ix`v[qCQ7s; Gl6\1K0p?^e0%^Bbc)Okg1 GǜujיSË\Yo~CںRs􇿿qJGѹO^K +endstream +endobj +9129 0 obj << +/Type /Page +/Contents 9130 0 R +/Resources 9128 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9090 0 R +/Annots [ 9117 0 R 9118 0 R 9119 0 R 9120 0 R 9121 0 R 9122 0 R 9123 0 R 9124 0 R 9125 0 R 9126 0 R 9127 0 R ] +>> endobj +9117 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.093 740.553 464.621 750.821] +/A << /S /GoTo /D (class_photon_player_ab7e0bc6125b15524e74b5ac9d7c337d7) >> +>> endobj +9118 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.887 728.598 316.864 739.072] +/A << /S /GoTo /D (class_photon_player_af8815abb8edaafbe6bddbf328f9612fb) >> +>> endobj +9119 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.172 710.866 227.87 721.448] +/A << /S /GoTo /D (class_photon_player_aaf54b32878a605d3e4d47f16ad106aa3) >> +>> endobj +9120 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.902 571.635 164.271 582.217] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9121 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.728 460.901 431.256 471.375] +/A << /S /GoTo /D (class_photon_player_ab7e0bc6125b15524e74b5ac9d7c337d7) >> +>> endobj +9122 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139 448.945 281.977 459.42] +/A << /S /GoTo /D (class_photon_player_af8815abb8edaafbe6bddbf328f9612fb) >> +>> endobj +9123 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.172 431.213 227.87 441.796] +/A << /S /GoTo /D (class_photon_player_aaf54b32878a605d3e4d47f16ad106aa3) >> +>> endobj +9124 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.395 302.238 299.972 312.713] +/A << /S /GoTo /D (class_photon_player_ae67e332f9ad5a44834a8cf78db6a6f01) >> +>> endobj +9125 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 290.283 185.572 300.758] +/A << /S /GoTo /D (class_photon_network_a894df24398c8cfe2d06e22ddc39576fa) >> +>> endobj +9126 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.77 196.958 288.844 207.54] +/A << /S /GoTo /D (interface_i_pun_prefab_pool) >> +>> endobj +9127 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.181 67.983 370.814 78.457] +/A << /S /GoTo /D (class_photon_network_ad86d4af661dd7365f6e172e106ca7cb2) >> +>> endobj +9131 0 obj << +/D [9129 0 R /XYZ 69.866 801.979 null] +>> endobj +8818 0 obj << +/D [9129 0 R /XYZ 107.878 701.902 null] +>> endobj +2530 0 obj << +/D [9129 0 R /XYZ 70.866 681.463 null] +>> endobj +6244 0 obj << +/D [9129 0 R /XYZ 70.866 636.269 null] +>> endobj +2534 0 obj << +/D [9129 0 R /XYZ 70.866 615.933 null] +>> endobj +6247 0 obj << +/D [9129 0 R /XYZ 70.866 560.784 null] +>> endobj +2538 0 obj << +/D [9129 0 R /XYZ 70.866 540.448 null] +>> endobj +6246 0 obj << +/D [9129 0 R /XYZ 107.878 422.25 null] +>> endobj +2542 0 obj << +/D [9129 0 R /XYZ 70.866 401.81 null] +>> endobj +8788 0 obj << +/D [9129 0 R /XYZ 498.769 293.167 null] +>> endobj +2546 0 obj << +/D [9129 0 R /XYZ 70.866 270.943 null] +>> endobj +8820 0 obj << +/D [9129 0 R /XYZ 493.147 199.949 null] +>> endobj +2550 0 obj << +/D [9129 0 R /XYZ 70.866 177.618 null] +>> endobj +8816 0 obj << +/D [9129 0 R /XYZ 410.784 70.866 null] +>> endobj +9128 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9143 0 obj << +/Length 2068 +/Filter /FlateDecode +>> +stream +xYK6W0'SU @78vmvvF I-IyVӍHؓJ$hn@z{zm{K)<$,֥bًX@4]\i濑q/lPvzE ܚYF0'0GIgޣ{q$-jn5zR&u45hHB(]J_5=hf;A܊u_,/扗V!íB +;Y*c: ' 6:|iHbg$ΣuIvv~kTFAi`LGw-?iFwCyݚsn}TC##aavXz tnq'/!V`^%A8 94wBuS_&(IgR=*P턔G4w;Ԇ8EN+ED'5UFBNJ8Q/:/ONl-|-P:5AR!>zͦ H+?Te 4!zи5ĵ}yo| + $^q/xs|]mdΡ]Ӭ*_@ZWS*g >Yԕu1IhxTU`Ky6 u)|X 潌`#kI^x]MtUS 2NaV[,U[0 *,ꡬ1  wh`aSAr}< +h;(3Ϫ֔X9ז +."0 L5qYcg$Ʈ"#:xfg\7DzMp2%)>7' 9`AAm;t7tqi..FQH4cj2l&CsO:w/e0'Zi+k+dow&9{ci0׭x[[ew_ZI*4I[m_]WÜ߻FWZMBוČͱ} 栆UbX:͚,,ͺ\۸53jV_Wqj9Hes&TarL3窕 -u|5`+"WAiHqs]՛*ݣujJVևpJC 7!Y(;W44Ks +Pۂ<*Z` _/\:F_] #E?X)?$eHƘ}?nD{z;0U#HoHfzW%ĚjzS)Qb?Ld,CU-L'3 +endstream +endobj +9142 0 obj << +/Type /Page +/Contents 9143 0 R +/Resources 9141 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9090 0 R +/Annots [ 9135 0 R 9136 0 R 9137 0 R 9138 0 R 9139 0 R 9140 0 R ] +>> endobj +9135 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.718 600.037 283.048 610.619] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +9136 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.069 483.03 298.267 493.612] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +9137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 384.315 100.276 394.229] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9138 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.328 193.06 232.088 201.75] +/A << /S /GoTo /D (class_photon_network_a86ab96957666ef72830a35662ef3d30b) >> +>> endobj +9139 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 133.428 100.276 143.696] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9140 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [484.586 103.848 510.492 114.323] +/A << /S /GoTo /D (class_room) >> +>> endobj +9144 0 obj << +/D [9142 0 R /XYZ 69.866 801.979 null] +>> endobj +2554 0 obj << +/D [9142 0 R /XYZ 70.866 771.024 null] +>> endobj +6254 0 obj << +/D [9142 0 R /XYZ 514.665 718.724 null] +>> endobj +2558 0 obj << +/D [9142 0 R /XYZ 70.866 701.218 null] +>> endobj +6649 0 obj << +/D [9142 0 R /XYZ 70.866 658.989 null] +>> endobj +2562 0 obj << +/D [9142 0 R /XYZ 70.866 643.478 null] +>> endobj +6648 0 obj << +/D [9142 0 R /XYZ 486.153 561.493 null] +>> endobj +2566 0 obj << +/D [9142 0 R /XYZ 70.866 543.987 null] +>> endobj +8747 0 obj << +/D [9142 0 R /XYZ 324.878 462.111 null] +>> endobj +2570 0 obj << +/D [9142 0 R /XYZ 70.866 444.605 null] +>> endobj +8739 0 obj << +/D [9142 0 R /XYZ 421.282 386.638 null] +>> endobj +2574 0 obj << +/D [9142 0 R /XYZ 70.866 369.8 null] +>> endobj +8796 0 obj << +/D [9142 0 R /XYZ 70.866 326.796 null] +>> endobj +2578 0 obj << +/D [9142 0 R /XYZ 70.866 311.284 null] +>> endobj +6249 0 obj << +/D [9142 0 R /XYZ 236.669 194.159 null] +>> endobj +2582 0 obj << +/D [9142 0 R /XYZ 70.866 178.545 null] +>> endobj +9141 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9157 0 obj << +/Length 1647 +/Filter /FlateDecode +>> +stream +xXKs6W>Q3 3VNNYT )QL/"H-wow%uN/$}ϙ- glܹ!;]uO:1x4qUZ?*+xF,r`ϳ#PÐ\8lt: CΓ!="Թ5ۻ]f+e\Wu˘K7N7^<. +'HJnr6/[uYUR'ڞ)rSfuTbP㵵P|qbneH JѧK^{[<s"xΔIN +T#J~:/,՟Ih2Nff8 G`N0qH % VӃ!5[Y5-zG52j1@3gZg,ICk#m93m {8Ujn>QI+.^֍Ll߉7+1) aQt?ؠ*-,Nmn\e@8v애+Ph + +7(hAY$A=cyxNF[|^'E^j Ic`wss7wLlҊa,lݼ/ 3cG}(@9 +"z=.f ^ou~_Ti%A`ԎƭԔ?`PU+g^a3ԏ]8k'H$,@^׵u[Kպd@g2 +u!}om(7nnMueMc˱hM4%x]!({TOϴHC +m^F7 >n\ 7g[8"ٷ;r\)U)Nm>ʂt?1Lk Vhoy5KӮ yR5tZj9: 1M@S87{< xSD "WǼy =/d-Y2E1V#~knk!4aP'#=*9T;qi@:A[r"4b{sxP'XK_/uQZp,/HHLM,R5^Ǟ!xW&:2Riju]iq7iÚ͠3b3Fm3؁Ptq_Í&tX]%K[y{ 8rh?^&BzaLDz}hoXTc,J/=٘ +{W,.v̷\eQn;TJ7t(o3A#~a5Eg㉌,>B,%nӮ/3]4;5 +:a]HvN|K$Xŋ 3vg":y9q|' >Ө'vzjr'lAu-3c5ϓRHC$~C/kwA݇N^[ 6fq,b;̷O3Jτ@w%Ҕ%fҤ.B cg%r +endstream +endobj +9156 0 obj << +/Type /Page +/Contents 9157 0 R +/Resources 9155 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9167 0 R +/Annots [ 9145 0 R 9146 0 R 9147 0 R 9148 0 R 9149 0 R 9150 0 R 9151 0 R 9152 0 R 9153 0 R 9154 0 R ] +>> endobj +9145 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.422 571.29 193.407 581.872] +/A << /S /GoTo /D (class_photon_ping_manager_a0ece3c53b5e9db217825d5a3ba74a5f5) >> +>> endobj +9146 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.893 571.29 227.29 581.872] +/A << /S /GoTo /D (class_region) >> +>> endobj +9147 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.745 513.458 195.334 524.04] +/A << /S /GoTo /D (class_photon_ping_manager_a489f87655185eb46b0e15de0726c771c) >> +>> endobj +9148 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 442.494 157.336 451.059] +/A << /S /GoTo /D (class_photon_ping_manager_ab5bc2677649632ad08c581dff24cec4a) >> +>> endobj +9149 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 382.959 167.53 393.227] +/A << /S /GoTo /D (class_photon_ping_manager_aa37a48018a49beafdb317dbdfbff6d54) >> +>> endobj +9150 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 369.9 216.871 380.276] +/A << /S /GoTo /D (class_photon_ping_manager_a0e897316745a60839e2ed3e80cefd2f2) >> +>> endobj +9151 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 356.948 224.367 367.324] +/A << /S /GoTo /D (class_photon_ping_manager_ac0c24ceeeff3345bcf1d98bbe37b4014) >> +>> endobj +9152 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 299.117 125.174 309.493] +/A << /S /GoTo /D (class_region) >> +>> endobj +9153 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.674 299.117 174.013 309.493] +/A << /S /GoTo /D (class_photon_ping_manager_a81be8a928664c188bfe172c493116f88) >> +>> endobj +9154 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 286.626 137.637 296.541] +/A << /S /GoTo /D (class_photon_ping_manager_a5907c89dd76795d37d656c1b21fbe32a) >> +>> endobj +9158 0 obj << +/D [9156 0 R /XYZ 69.866 801.979 null] +>> endobj +8795 0 obj << +/D [9156 0 R /XYZ 247.679 737.151 null] +>> endobj +2586 0 obj << +/D [9156 0 R /XYZ 70.866 720.023 null] +>> endobj +9159 0 obj << +/D [9156 0 R /XYZ 70.866 665.785 null] +>> endobj +2590 0 obj << +/D [9156 0 R /XYZ 70.866 649.372 null] +>> endobj +9160 0 obj << +/D [9156 0 R /XYZ 70.866 611.203 null] +>> endobj +9161 0 obj << +/D [9156 0 R /XYZ 70.866 553.371 null] +>> endobj +9162 0 obj << +/D [9156 0 R /XYZ 70.866 480.596 null] +>> endobj +9163 0 obj << +/D [9156 0 R /XYZ 70.866 422.764 null] +>> endobj +9164 0 obj << +/D [9156 0 R /XYZ 70.866 339.03 null] +>> endobj +2594 0 obj << +/D [9156 0 R /XYZ 70.866 272.382 null] +>> endobj +9165 0 obj << +/D [9156 0 R /XYZ 70.866 247.131 null] +>> endobj +2598 0 obj << +/D [9156 0 R /XYZ 70.866 247.131 null] +>> endobj +9166 0 obj << +/D [9156 0 R /XYZ 444.245 204.982 null] +>> endobj +2602 0 obj << +/D [9156 0 R /XYZ 70.866 187.855 null] +>> endobj +9155 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F95 6017 0 R /F106 6377 0 R /F115 6693 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9209 0 obj << +/Length 1787 +/Filter /FlateDecode +>> +stream +xY[s8~`xV% t;M6MƛJ iqb;l ssػH2/DwqIB!<Q$w1.}hG/24.?GTe:Iw=KG2yi3G +zc<@wN(7Ҡ:P @͹7SE VL+`d 1BA(Pk$/)X_ b,Ww- ۪?̨s{-TOցq +GŞY`t~`ٙUsR9? !%EM[ /UMg~Úf)@U]~8IQE##a0 0p&(]cDMCcNbPٲ"D$Vp<'q+> })]^(^hmq2cA;=A# t!+'Wfz!׵FN%FP-*u +ROWMP0r5i[>ܦ:JY~ +ld3AlzH7E;#|ٻNO+8\x >٧FcۡE#E5Txl/*f$дC8 ^QWj[:{]8#8 뚒CZ*pn# %^k /yJT$;βg%,"3 {(;*֋Fmd@MLu6o0GL sʍ8{*xpLA|rS|gGC$R|g:v{{u+|6yu͑"5<o!#+}P: uւ,# g4;.f V&g|ji qZMf"^)4 m3kQ'P$`4BxqX ;bta2练?`@%^Gf^ܙ{@NKu\>fEѓ$qڌ>ǾޯF\~9gki:j?S,pij}n?eIT;<˯zRߚwV/.Jq +endstream +endobj +9208 0 obj << +/Type /Page +/Contents 9209 0 R +/Resources 9207 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9167 0 R +/Annots [ 9175 0 R 9176 0 R 9177 0 R 9178 0 R 9179 0 R 9180 0 R 9181 0 R 9182 0 R 9183 0 R 9184 0 R 9185 0 R 9186 0 R 9187 0 R 9188 0 R 9189 0 R 9190 0 R 9191 0 R 9192 0 R 9193 0 R 9194 0 R 9195 0 R 9196 0 R 9197 0 R 9198 0 R 9199 0 R 9200 0 R 9201 0 R 9202 0 R 9203 0 R ] +>> endobj +9175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 330.383 150.145 340.965] +/A << /S /GoTo /D (class_photon_player_ab4efd41ca7624963586a30e0d360da67) >> +>> endobj +9176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.069 330.383 202.965 340.965] +/A << /S /GoTo /D (class_photon_player_aea8c8ca461e7b2ac695b49024272a4c1) >> +>> endobj +9177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.723 330.383 300.14 340.965] +/A << /S /GoTo /D (class_photon_player_a74e5bb916dbfdb6960b8f2f11fa6aba9) >> +>> endobj +9178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.175 315.32 196.205 324.947] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9179 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.87 301.766 178.272 312.24] +/A << /S /GoTo /D (class_photon_player_a2c234cfef38c2013337182a008844398) >> +>> endobj +9180 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.797 286.596 184.827 296.036] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9181 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.392 273.041 200.194 283.515] +/A << /S /GoTo /D (class_photon_player_af88693cf6b3b3fb1c8afdb5892fd525c) >> +>> endobj +9182 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.149 259.675 205.706 270.149] +/A << /S /GoTo /D (class_photon_player_af8815abb8edaafbe6bddbf328f9612fb) >> +>> endobj +9183 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.852 259.675 256.031 270.149] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +9184 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [335.07 259.675 377.25 270.149] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +9185 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 218.995 150.145 229.469] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9186 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.645 218.995 167.091 229.469] +/A << /S /GoTo /D (class_photon_player_a2aaf48a90dc7e618da31f47c4f1a1c03) >> +>> endobj +9187 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 205.629 150.145 216.103] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9188 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.645 205.629 185.257 216.103] +/A << /S /GoTo /D (class_photon_player_a4c7bf5d0bf28c15b67929a8a5297b96e) >> +>> endobj +9189 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 192.263 150.145 202.737] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9190 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.645 192.263 198.437 202.737] +/A << /S /GoTo /D (class_photon_player_a2cc6f30dc2691bc700b0a11bdaffcffd) >> +>> endobj +9191 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.923 192.263 257.291 202.737] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9192 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 178.896 150.145 189.371] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9193 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.645 178.896 198.437 189.371] +/A << /S /GoTo /D (class_photon_player_adb4677870c9c5903527ce75dc0edba2b) >> +>> endobj +9194 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 165.53 154.987 176.005] +/A << /S /GoTo /D (class_photon_player_aaef707bae718e28cd6a079e4514ce597) >> +>> endobj +9195 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.472 165.53 213.841 176.005] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9196 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 152.164 154.987 162.639] +/A << /S /GoTo /D (class_photon_player_add5b31ca48483e67dbd5cb5d4d67a8d3) >> +>> endobj +9197 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 138.798 143.617 149.273] +/A << /S /GoTo /D (class_photon_player_a7a74ea86be2a6adf1560ccea712d0900) >> +>> endobj +9198 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.103 138.798 202.472 149.273] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9199 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 125.432 143.617 135.907] +/A << /S /GoTo /D (class_photon_player_ab2da3547ad9a8f18aa25b0facfed4005) >> +>> endobj +9200 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 111.958 188.914 122.54] +/A << /S /GoTo /D (class_photon_player_a0f41b47ae95448d2e6f7a4394c54f359) >> +>> endobj +9201 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.092 96.799 258.123 106.522] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9202 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 83.234 168.705 93.816] +/A << /S /GoTo /D (class_photon_player_af03034498d0b8bedf022decd6a570d70) >> +>> endobj +9203 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.484 68.074 240.515 77.798] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9210 0 obj << +/D [9208 0 R /XYZ 69.866 801.979 null] +>> endobj +2606 0 obj << +/D [9208 0 R /XYZ 70.866 675.397 null] +>> endobj +9170 0 obj << +/D [9208 0 R /XYZ 70.866 650.411 null] +>> endobj +2610 0 obj << +/D [9208 0 R /XYZ 70.866 650.411 null] +>> endobj +9171 0 obj << +/D [9208 0 R /XYZ 70.866 623.697 null] +>> endobj +2614 0 obj << +/D [9208 0 R /XYZ 70.866 623.697 null] +>> endobj +9172 0 obj << +/D [9208 0 R /XYZ 70.866 598.843 null] +>> endobj +2618 0 obj << +/D [9208 0 R /XYZ 70.866 598.843 null] +>> endobj +9169 0 obj << +/D [9208 0 R /XYZ 70.866 573.99 null] +>> endobj +2622 0 obj << +/D [9208 0 R /XYZ 70.866 573.99 null] +>> endobj +2626 0 obj << +/D [9208 0 R /XYZ 70.866 549.136 null] +>> endobj +9173 0 obj << +/D [9208 0 R /XYZ 70.866 522.058 null] +>> endobj +2630 0 obj << +/D [9208 0 R /XYZ 70.866 522.058 null] +>> endobj +9174 0 obj << +/D [9208 0 R /XYZ 70.866 497.436 null] +>> endobj +2634 0 obj << +/D [9208 0 R /XYZ 70.866 497.436 null] +>> endobj +6245 0 obj << +/D [9208 0 R /XYZ 70.866 472.583 null] +>> endobj +2638 0 obj << +/D [9208 0 R /XYZ 70.866 472.583 null] +>> endobj +9211 0 obj << +/D [9208 0 R /XYZ 70.866 370.906 null] +>> endobj +9207 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F95 6017 0 R /F82 5877 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9252 0 obj << +/Length 1933 +/Filter /FlateDecode +>> +stream +xYrF+P:$`8*GlˑH `|}z6.(,ݯ7M>m<89='Bq0g|EA1EqSƍ#Fyٔ<R> vyI]U_xQJxlevf]7OҹghXf+<E9<}r򕧏dv:F)&BuSŵW\ΤF9y4?}6mno(ޫ_GV;zrL:&*q@y' O{Nc߉(*f!}Q8!7># Q//͍g"I|k2u#n>@fi}H|"EG&&6BRĭqͨ ЏSͫ.0~BxO{mo&Y9/zTeЅjIcr}ws;\5PJ$D|جoϮ1 +-+.m}*nxu*. 1?8 % n*JiUs|HvS^,+i[UWa񗋢}p( e%w&gOGzI&)l6op.VĄ7 ި/zX#Hbdo>Se-+L*=Y\R(nZ_[A10 ŭՊ$@1\@|;C>%[H-EgV>]ʣ4'DK]qдBR%kM1 M+w,W%S^4d홺h  A=E/!4j٭Ftx5y*M]aAP`uX$:C#2wdz8˪v۱~Bv\ңwv{#,NHMBP]ȶc:Ee;OjQpDMW!$L~oM%EJhZ݄]oL|5s*&$u +7%5W]h }G,M]Mbba;ɀE tkK)U?|k,M 410Q Y[?tkIۯeVW;Y7leQhee^b.ge.JZn8{=$(_ba +"mz/P _KqtE?VS-#n׺KAvD.ͥ;ɀ6_S^zQ(oqW ZaT Q~_$֞#Xh`4z'G<^W˞\xުf_=)&~^a ̍.o +5TdNxs}S!Kg@pjz 0 +endstream +endobj +9251 0 obj << +/Type /Page +/Contents 9252 0 R +/Resources 9250 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9167 0 R +/Annots [ 9204 0 R 9205 0 R 9206 0 R 9227 0 R 9228 0 R 9229 0 R 9230 0 R 9231 0 R 9232 0 R 9233 0 R 9234 0 R 9235 0 R 9236 0 R 9237 0 R 9238 0 R 9239 0 R 9240 0 R 9241 0 R 9242 0 R 9243 0 R 9244 0 R 9245 0 R 9246 0 R 9247 0 R 9248 0 R 9249 0 R ] +>> endobj +9204 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 735.203 173.565 745.678] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9205 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.065 735.203 193.496 745.678] +/A << /S /GoTo /D (class_photon_player_a32462ded2866ee76839b59bd2cb3cd8c) >> +>> endobj +9206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.943 735.203 219.902 745.678] +/A << /S /GoTo /D (class_photon_player_ac363d86e7c6ea63573e0ecfda7f7eaa7) >> +>> endobj +9227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.093 662.428 181.491 672.902] +/A << /S /GoTo /D (class_photon_player_aaea56ca79d674b3e05c79f7b5c28fd7a) >> +>> endobj +9228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.191 634.425 163.469 645.007] +/A << /S /GoTo /D (class_photon_player_aaf54b32878a605d3e4d47f16ad106aa3) >> +>> endobj +9229 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 562.11 117.696 572.025] +/A << /S /GoTo /D (class_photon_player_ac363d86e7c6ea63573e0ecfda7f7eaa7) >> +>> endobj +9230 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 533.754 162.482 544.13] +/A << /S /GoTo /D (class_photon_player_ae67e332f9ad5a44834a8cf78db6a6f01) >> +>> endobj +9231 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 505.858 147.724 516.234] +/A << /S /GoTo /D (class_photon_player_a53a95c12899049fa00d873d634eee5ba) >> +>> endobj +9232 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [331.427 491.114 434.935 500.837] +/A << /S /GoTo /D (class_room_options_a76399e7b84d762bd0315bf89aa058caf) >> +>> endobj +9233 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 478.424 173.502 488.545] +/A << /S /GoTo /D (class_photon_player_a9cb80ad93a84e86451e6d2becfacef2b) >> +>> endobj +9234 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 450.528 153.857 460.443] +/A << /S /GoTo /D (class_photon_player_ab0bad4e5c05adfe0d524bc32430ecc20) >> +>> endobj +9235 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 411.321 136.956 421.795] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +9236 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.456 411.321 211.554 421.795] +/A << /S /GoTo /D (class_photon_player_a027b1aeee40c53f98d29af4ca8e07f47) >> +>> endobj +9237 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [311.923 396.566 440.802 406.192] +/A << /S /GoTo /D (class_photon_player_af8815abb8edaafbe6bddbf328f9612fb) >> +>> endobj +9238 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 383.425 136.956 393.694] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +9239 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.456 383.425 190.627 393.694] +/A << /S /GoTo /D (class_photon_player_afaf4ec87dcd684752ffb92c465f9ce87) >> +>> endobj +9240 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 355.422 143.743 365.798] +/A << /S /GoTo /D (class_photon_player_a74e5bb916dbfdb6960b8f2f11fa6aba9) >> +>> endobj +9241 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 342.471 146.235 352.847] +/A << /S /GoTo /D (class_photon_player_a6b80a7016483f33ee19521a3bf39f20d) >> +>> endobj +9242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 329.98 144.111 339.896] +/A << /S /GoTo /D (class_photon_player_aea8c8ca461e7b2ac695b49024272a4c1) >> +>> endobj +9243 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 317.029 173 327.15] +/A << /S /GoTo /D (class_photon_player_ade88a2875960de99e5ab98fc6db1650c) >> +>> endobj +9244 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 304.078 153.355 313.993] +/A << /S /GoTo /D (class_photon_player_a191f6b25501f46fe0ca29cc74706ddb1) >> +>> endobj +9245 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 290.773 136.956 301.041] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +9246 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.456 290.773 209.564 301.041] +/A << /S /GoTo /D (class_photon_player_ab7e0bc6125b15524e74b5ac9d7c337d7) >> +>> endobj +9247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 277.821 136.956 288.09] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +9248 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.456 277.821 189.632 288.09] +/A << /S /GoTo /D (class_photon_player_a82ba921802edc4960d075f1deacfb19d) >> +>> endobj +9249 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [111.231 92.597 166.599 103.072] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9253 0 obj << +/D [9251 0 R /XYZ 69.866 801.979 null] +>> endobj +9254 0 obj << +/D [9251 0 R /XYZ 70.866 775.009 null] +>> endobj +9255 0 obj << +/D [9251 0 R /XYZ 70.866 702.233 null] +>> endobj +9256 0 obj << +/D [9251 0 R /XYZ 70.866 601.562 null] +>> endobj +2642 0 obj << +/D [9251 0 R /XYZ 70.866 263.577 null] +>> endobj +2646 0 obj << +/D [9251 0 R /XYZ 70.866 164.311 null] +>> endobj +9212 0 obj << +/D [9251 0 R /XYZ 70.866 137.629 null] +>> endobj +2650 0 obj << +/D [9251 0 R /XYZ 70.866 137.629 null] +>> endobj +9250 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F95 6017 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9273 0 obj << +/Length 2205 +/Filter /FlateDecode +>> +stream +x]s۸ݿs/f"$3Ӈ49nNח\h +HweJh[v#X.vmD]LdLkQBIudhI92)4p.[m;$fm.ʺB؋g_0LSr_h4"JDF[ DI$~|R>Oϵpk.צ3̈́(*IX:`J;(ZE#8 t(48%D)w?"_)FL%-!e> gnYzҸe>ehaVD~i kQEkƬc+˪8zǦ\`&g 1Sk"!SSE9l!a9)qo؅,nù>A[b4KSkn;v4%bcrqM^,G)cԛߊѡNsyNAcxܝ/LTCּ_:lؙT A8|*a;a kUO?wy٢P0-4lCD_xDezpixJ$b2eg㢖4TmfX).z͆Jn~ ' X1yW&ZŵE# E_f<1z=ĘRQ OklOj +&<{ +>JaR6)Ұ qz4 d]M]%MjEocti60]@ LY}9jK_a<6>0?:>l ! yZ/A˨E4-k Vٟ#X2 uУqeH8)[5' b,Q@Aܷ)\IX; +*=`K,O/g"a=7,$2Nmڮ^_7L]i0 +~N)&9;ԈHm6IayfLb[ghV',*D <ЫM?gVv,S ᧂ~\57tj!N!Ԏ4'&FGe_ygGS`8cw垯P;To_o,Y6~}!˸O?=9"2({hu 0*l%}"6Uڵ6bPoE[7skdl;;dfOYv<-1qv|pcܖok4m^wŜ.'ݭuytu\ʟo90_K[W@4냩Lp'>Ζ_Or2WJHeѥ kUv~ju.iT}m~flC +endstream +endobj +9272 0 obj << +/Type /Page +/Contents 9273 0 R +/Resources 9271 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9167 0 R +/Annots [ 9268 0 R 9269 0 R 9270 0 R ] +>> endobj +9268 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [98.589 567.929 153.957 578.197] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9269 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [88.192 121.472 114.098 131.947] +/A << /S /GoTo /D (class_room) >> +>> endobj +9270 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.145 121.472 203.513 131.947] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9274 0 obj << +/D [9272 0 R /XYZ 69.866 801.979 null] +>> endobj +2654 0 obj << +/D [9272 0 R /XYZ 70.866 683.96 null] +>> endobj +9221 0 obj << +/D [9272 0 R /XYZ 70.866 662.277 null] +>> endobj +2658 0 obj << +/D [9272 0 R /XYZ 70.866 662.277 null] +>> endobj +9222 0 obj << +/D [9272 0 R /XYZ 70.866 635.897 null] +>> endobj +2662 0 obj << +/D [9272 0 R /XYZ 70.866 635.897 null] +>> endobj +9215 0 obj << +/D [9272 0 R /XYZ 70.866 611.239 null] +>> endobj +2666 0 obj << +/D [9272 0 R /XYZ 70.866 611.239 null] +>> endobj +9223 0 obj << +/D [9272 0 R /XYZ 70.866 568.925 null] +>> endobj +2670 0 obj << +/D [9272 0 R /XYZ 70.866 554.297 null] +>> endobj +9224 0 obj << +/D [9272 0 R /XYZ 70.866 529.67 null] +>> endobj +2674 0 obj << +/D [9272 0 R /XYZ 70.866 529.67 null] +>> endobj +9257 0 obj << +/D [9272 0 R /XYZ 70.866 505.011 null] +>> endobj +2678 0 obj << +/D [9272 0 R /XYZ 70.866 505.011 null] +>> endobj +9217 0 obj << +/D [9272 0 R /XYZ 70.866 373.678 null] +>> endobj +2682 0 obj << +/D [9272 0 R /XYZ 70.866 359.05 null] +>> endobj +9216 0 obj << +/D [9272 0 R /XYZ 70.866 334.531 null] +>> endobj +2686 0 obj << +/D [9272 0 R /XYZ 70.866 334.531 null] +>> endobj +9218 0 obj << +/D [9272 0 R /XYZ 70.866 309.872 null] +>> endobj +2690 0 obj << +/D [9272 0 R /XYZ 70.866 309.872 null] +>> endobj +9219 0 obj << +/D [9272 0 R /XYZ 70.866 285.214 null] +>> endobj +2694 0 obj << +/D [9272 0 R /XYZ 70.866 285.214 null] +>> endobj +9220 0 obj << +/D [9272 0 R /XYZ 70.866 260.555 null] +>> endobj +2698 0 obj << +/D [9272 0 R /XYZ 70.866 260.555 null] +>> endobj +6672 0 obj << +/D [9272 0 R /XYZ 70.866 235.897 null] +>> endobj +2702 0 obj << +/D [9272 0 R /XYZ 70.866 235.897 null] +>> endobj +9271 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9282 0 obj << +/Length 2511 +/Filter /FlateDecode +>> +stream +xڭYݓ6߿B/gjCi5\׽MYmʢ+_ e&}E ^_z*V$a[1'C+J<'tUnc狥۝leL?-\fܔi7/b{.W?_ʅv{ű{W?2+o?[zT{pƥu+6Of].+I\4NQ{ XvlZKsZ'zBr= f_e7Ӕ.NˣXV(K7rBЁee6CnߋFv L!#M|{OE"`l' yǖ^@'s2g}pl2BT֚ mKqS6&[m^_YGӐT;)u $e4J +Fjuo<ȌڶF'0@Rz@}i!qhh )#Ly@g)> +MŝUDH=*9g1<-dj- zKeZ&# "S 0졍P +~d]`aj'P8$hyfXZg*=Bj$?MXNu/i'(嘁e6FK#2MԠiFsM荻D.ɩ ,"oqL39vmb?T1X|^u' |%]bZ; +KkVV!)$fc 7ډ :4ڙ0Xk)!n%-B79R8́`G.ʎ5" ]:#U_~`BNR>NՅ$"zSuXs(ǃ"hE+MIYi"idkY?p]an4(v7gVt2F>f["R# =b/;D(ӻXkb?&xbkYT/6 @R +/QG[uRXvNXb@ku{_ӋrH ERmλ`5LM:sr"8 muw6wrUZ/crڗB2 ~&,_$LҼXw +럤|0$"2<6]}e}6_gvE)Ϋ_E4,ɴn4R#<`oh߅i!\mymŶ1*y}[ђNEZ:IǨ'S(|`M h rFKPf+JOZC,oEXqhZ//P&vq.km;vPC5y=ϣ#]x$!/\!jeNk|lXOK.jR=PQbosksyi ꂾ8V^܀x$R9ĚETB"-q'. N^ ia1&5b̚n$ .$4 +&=6[JtFx01qz62_ ޗ\T\8gFص튯BAN_>&35 +B`{0($$' +|͙< JyW9R$>}o@kbn D9 @H%;(ћ ~/G@CS*ahe$'#S,z_E̓'2<)ojM7.Oxߒu|aoTk KjښRsoضUS jp/(bezYiq' bEi_FJ "svuuIjcn.ԪLJ>.ܾ)a?Kewe P|\zEMo1[ 4ok-&KrV_HNFo2Wn}'9nJEWjژt(D%8х +aRqIVi4ۀ΢I$'DFKO7bVxLTdvU=;@pj*D۬,/m.ؤe# w]?dP&ei+@I;TMKYt|B Gdy_DRx(ItlLy! jѵ3Ӏۥ7n{F {BC s=?}Wu40%.Dַ'!Ӧ)U瞝pgL2۪iӪRgPqCAwrܙ~8'?AvצkT^i1C;1:_8}^%;O)e~+ڏtcs 10AM4{'7iusAR%) CF^J}tӭڗPcng=i~z}Swd0?UQ=t.3Ro[TS,2S +endstream +endobj +9281 0 obj << +/Type /Page +/Contents 9282 0 R +/Resources 9280 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9167 0 R +/Annots [ 9275 0 R 9276 0 R 9277 0 R 9278 0 R 9279 0 R ] +>> endobj +9275 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [476.438 740.445 506.844 751.028] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9276 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.718 580.593 215.124 591.175] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9277 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.342 545.344 206.512 555.926] +/A << /S /GoTo /D (class_photon_network_a4a1cd1887cb41a0592322527a7304ed7) >> +>> endobj +9278 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.028 382.844 235.397 393.427] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9279 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.464 326.24 215.832 336.822] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9283 0 obj << +/D [9281 0 R /XYZ 69.866 801.979 null] +>> endobj +9225 0 obj << +/D [9281 0 R /XYZ 70.866 442.44 null] +>> endobj +2706 0 obj << +/D [9281 0 R /XYZ 70.866 428.118 null] +>> endobj +9226 0 obj << +/D [9281 0 R /XYZ 70.866 383.841 null] +>> endobj +2710 0 obj << +/D [9281 0 R /XYZ 70.866 369.519 null] +>> endobj +2714 0 obj << +/D [9281 0 R /XYZ 70.866 295.29 null] +>> endobj +9258 0 obj << +/D [9281 0 R /XYZ 70.866 270.499 null] +>> endobj +2718 0 obj << +/D [9281 0 R /XYZ 70.866 270.499 null] +>> endobj +9133 0 obj << +/D [9281 0 R /XYZ 70.866 226.464 null] +>> endobj +2722 0 obj << +/D [9281 0 R /XYZ 70.866 212.142 null] +>> endobj +2726 0 obj << +/D [9281 0 R /XYZ 70.866 137.805 null] +>> endobj +9263 0 obj << +/D [9281 0 R /XYZ 70.866 110.922 null] +>> endobj +2730 0 obj << +/D [9281 0 R /XYZ 70.866 110.922 null] +>> endobj +9280 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F73 4716 0 R /F106 6377 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9295 0 obj << +/Length 1555 +/Filter /FlateDecode +>> +stream +xXKs6Wr&B"f=n\wMɁ(cp.Dr,M` v[yػ<:D̛-#) ޭO>~ HF ~4yRUFҿTfuRgж_f'LG9Dro~~0b!C!Kɟ'GpҺT¶6LmK-xi:sWk'u@F4.ϕs{S&!]]"QqT*פZ`?O#yk}V*n$ "?-.}M=L,tq0z:aDwJO DRDIMi{X3ahZm#Bqw0z92GXV 6p8KTvZ U >۾/-B-B^7:6!Q0eZ|μrRĻ5&)8=G Lfh HgR/ȹEv\B:u 54]X2C?McKm3IP |204鬓:߄S5]jˍ &LLt!sWn5gSST!l1mqd[>g* +Stgѷ) +xQxR Rc?3(Q|Q&aj2~yiFyJ9gମ X, #x~-PLx?lZC Vk12d +;O!@_`}{r@=TAuI5#.o[Y:BjY]!dXEΊMnue %@uߝpsXPڥhMݞuI^WŢ66oA¹CA9D r8i1ܬֲG-h3 A{S8Jzʷ\ܽ=6=R +vgvfFG=F.p:H:mή[Frg I/Rٿz7'̝uɠ,<-EeVݭ^v D;7/Dx:dywo6M++j2ػ=Jw0u^!%l}e'8ˋ4; {QF7O}̾:?&WhKHoʢo{j1JZ1m:Tp:uvuIE,(0}2%Umtֱj ڞxbM31;&KyA4@RJ?D]]_44hZp- ˲p_T1wCcQGػ#a'+u;Y(C{PE{sΠ%ع/}0eS+ R/`$G]ܜhQ!C,#{'ޜ->Y9e+nC'u&l'T0-әYA}79V?R4GhEi[xo{d˥$bS<_mU4r.V'< +o# L'Ujђz d!IQ-h«:v~"{׸5ڼR5*ACzV•u`7;0i4ey?#Xj(mU-R@uI>H ?Rh&\V?KM'd`hyupT;vA*6s[yqZ1Zj^]iѹj:@$D):QJ_ `Kp='!n 4!\n4${(HNFWz mC\JAlKGf&"rdX}%* #*أGir9@80CEN4 er$CH2$0umy"^ ^?+3˾O,Jv-O>@;0 JWN])ݚn(ŝ86Rs)|5y7FW_Xg'5$0 C܏S\AUXk Kfs=9Y}ۙ䑷[HVNENVMAE0F5LeBjg!V i@ؿ2i^֘ q)L 8B@m)+\̻]4bڤ=.wuխ8 =yV5~zS c6fP2?NG2 +">+þ9zl}In$n'n=lfڿ=8m?'Lhr$ 7J-_Mkͺ'RD?R ]Ŀ覹#_Պ= eN. ߟg<7π +endstream +endobj +9316 0 obj << +/Type /Page +/Contents 9317 0 R +/Resources 9315 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9322 0 R +/Annots [ 9291 0 R 9292 0 R 9298 0 R 9299 0 R 9300 0 R 9301 0 R 9302 0 R 9320 0 R 9303 0 R 9304 0 R 9305 0 R 9321 0 R 9306 0 R 9307 0 R 9308 0 R 9309 0 R 9310 0 R 9311 0 R 9312 0 R ] +>> endobj +9291 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.157 692.672 347.454 703.147] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +9292 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.218 680.61 398.198 691.192] +/A << /S /GoTo /D (class_photon_rigidbody2_d_view) >> +>> endobj +9298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.493 651.698 252.639 661.612] +/A << /S /GoTo /D (interface_i_pun_observable) >> +>> endobj +9299 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 583.209 209.483 593.792] +/A << /S /GoTo /D (class_photon_rigidbody2_d_view_a980ea46d1725668b1ae12f958840dc61) >> +>> endobj +9300 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.969 583.209 272.273 593.792] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9301 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.159 583.209 386.628 593.792] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +9302 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.098 565.95 525.406 575.576] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9320 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 556.597 128.268 564.431] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9303 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.157 452.044 347.454 462.518] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +9304 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.218 439.981 398.198 450.563] +/A << /S /GoTo /D (class_photon_rigidbody2_d_view) >> +>> endobj +9305 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 335.353 525.406 345.827] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9321 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 325.182 91.113 333.666] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9306 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.942 305.665 451.598 316.248] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9307 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 295.521 220.405 304.292] +/A << /S /GoTo /D (class_photon_network_ac23d14ad150a87d51f4ffaa286db29e1) >> +>> endobj +9308 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 281.755 174.068 292.337] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +9309 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.249 252.175 356.906 262.758] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9310 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.206 222.596 473.863 233.178] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9311 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.189 193.016 258.493 203.599] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9312 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 92.43 184.846 102.905] +/A << /S /GoTo /D (group__public_api_ga78c69bbb6f79d1e4fb23d3f761eaf4aa) >> +>> endobj +9318 0 obj << +/D [9316 0 R /XYZ 69.866 801.979 null] +>> endobj +9319 0 obj << +/D [9316 0 R /XYZ 70.866 626.964 null] +>> endobj +2790 0 obj << +/D [9316 0 R /XYZ 70.866 536.205 null] +>> endobj +2794 0 obj << +/D [9316 0 R /XYZ 70.866 407.741 null] +>> endobj +6710 0 obj << +/D [9316 0 R /XYZ 70.866 381.614 null] +>> endobj +2798 0 obj << +/D [9316 0 R /XYZ 70.866 381.614 null] +>> endobj +8055 0 obj << +/D [9316 0 R /XYZ 70.866 93.427 null] +>> endobj +2802 0 obj << +/D [9316 0 R /XYZ 70.866 70.866 null] +>> endobj +9315 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9341 0 obj << +/Length 2335 +/Filter /FlateDecode +>> +stream +xYK6ϯPe*&wrq&UxڲsH E("EۍnP't7\V3?o<$$naxndz$ngw?͂w$f*oB$ZFm*]ՏwW^ ~4uSΊ矽Y @ Kg{#QF!nQ>]iM3_GCuA5꛺A<_9ֺGRRswP{\@~đ;Y`M <"sc3ݭ,$)h-$ײ2y h5}C]wVȑ\3\` *ٮU0J9E kmvBuux~N.ݾfQLv/A4 6D,ewZc)땪%1պ%DFժiUA_Sqg'jy0/W{i{Ym֛m:5B8 ΋+FaF42G(߁Ȣet#JeQFI<`'+w$QD㩊0zAKu_`gJAYhP0fmݬuWvNi4/!֐݊ǷWFnÊ;{y@'jLuGl&GTI&4wjz'ٚBHȟ ]KⱶQPx'7KS~ep3Mď$MnsE"Dtz4Q Z}ۚNf証>w8 Ku9~>;of7b;4JԔS):Cߋ^%D!\&"ۖ~ڃ,qHC*ܿAhK}RըHUl~(Y' ]z`}B.% RL6E^go\82}22osbW(b7K=9&"/^P*Bd/ !%\A3:gJE^ʹq3{-\Bl𳅛Xߠ7 ?@7jr-\O#.O +6t6dtEJ(.`qȑ9#~473+=@K'`sW5 Se6:9 FNE|5yc?Z's +Ϙ;r}`aԡiaI #‚1  a{+paa aFX:#%˞GX!?X'|789/Zl׺$z#-iN߁y >x"(ԜoTX^'$397ʧO^{EM=ˏy+o nLSDXk[ZY[_Myގ{,+=y~}[YsrMR} #ǝ(K \]PDi@?09i]Mᑷ_bM$g+ #lɡp hp5C[PM]vyic=䗑@i ڇ71X|v~ԛu, *I %c֯,p_& چ;@ڼ_˚(򗥎^.cRRts-MC/n1\t`p"cWq>f/|N>tdW"0йiu*۝%u|dRG ~0vjhqcTıIաiji}=}[t:/?@k{i#fHNn6Y/]ZaxEހC*ת|HŰN4;xP4S5/2r\A0[vpm x:TU@{誊_^"]K8½*XmÊ>SO6=Nk֛1ܩ7tz<YY򬪋35O9H0 ce d%g+FyK-'MC( ThXM1%{! z:-i,{O(qm_p=N\ZS)Hq̵/En? +> endobj +9313 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.157 692.672 347.454 703.147] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +9314 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.664 680.61 393.184 691.192] +/A << /S /GoTo /D (class_photon_rigidbody_view) >> +>> endobj +9323 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.493 651.698 252.639 661.612] +/A << /S /GoTo /D (interface_i_pun_observable) >> +>> endobj +9324 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 583.209 209.483 593.792] +/A << /S /GoTo /D (class_photon_rigidbody_view_a4a7145633e24084001a4cd0ed9f8a15c) >> +>> endobj +9325 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.969 583.209 272.273 593.792] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9326 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.159 583.209 386.628 593.792] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +9327 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.098 565.95 525.406 575.576] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9344 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 556.597 128.268 564.431] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9328 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.157 452.044 347.454 462.518] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +9329 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.664 439.981 393.184 450.563] +/A << /S /GoTo /D (class_photon_rigidbody_view) >> +>> endobj +9330 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 335.353 525.406 345.827] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9345 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 325.182 91.113 333.666] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9331 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.942 305.665 451.598 316.248] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9332 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 295.521 220.405 304.292] +/A << /S /GoTo /D (class_photon_network_ac23d14ad150a87d51f4ffaa286db29e1) >> +>> endobj +9333 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 281.755 174.068 292.337] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +9334 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.249 252.175 356.906 262.758] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9335 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.206 222.596 473.863 233.178] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9336 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.189 193.016 258.493 203.599] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9337 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 92.43 184.846 102.905] +/A << /S /GoTo /D (group__public_api_ga78c69bbb6f79d1e4fb23d3f761eaf4aa) >> +>> endobj +9342 0 obj << +/D [9340 0 R /XYZ 69.866 801.979 null] +>> endobj +9343 0 obj << +/D [9340 0 R /XYZ 70.866 626.964 null] +>> endobj +2806 0 obj << +/D [9340 0 R /XYZ 70.866 536.205 null] +>> endobj +2810 0 obj << +/D [9340 0 R /XYZ 70.866 407.741 null] +>> endobj +6711 0 obj << +/D [9340 0 R /XYZ 70.866 381.614 null] +>> endobj +2814 0 obj << +/D [9340 0 R /XYZ 70.866 381.614 null] +>> endobj +6309 0 obj << +/D [9340 0 R /XYZ 70.866 93.427 null] +>> endobj +2818 0 obj << +/D [9340 0 R /XYZ 70.866 70.866 null] +>> endobj +9339 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9361 0 obj << +/Length 1525 +/Filter /FlateDecode +>> +stream +xXK8W8ٵ=, L U0,v'V4X2mY+de{HE%u_\Z RC={VQ[#7"+Ny"cg~咳+Iq^Se M*VęJ" RbuTdy$qXrvY9|{*ib63K+}7 |١-C"Ec <о 7kvԳ~: Ys '"tA8xڷm ֟fEr=ؒ[ +4Bҕ-уg$UVu=&Pix)Qc`dߵӵMfK'@V+ӽ؍ %T]r_mFy]9Y>;aTA~_/E,-)JYctȍ<Adq< #C0?@"wP_?SSr +>$G PȠ(28AUPzܒr̵#Wp< +O'᤬?4JL]8F0I;pn){"A +%JMi8[AV'HZAdw,OşS`1#m;TL̹F:rDZGjUW F\;:a,Abz@y, w;rpi/z:/U 4fkMU&WS.p3(t=Q猈UEu){ ]Ϗ-B)cԣ> +ʘ%ōIn*n*e)[n64\-RqӬ'U|]f@߰<^}ʛ<'kNHZZMCcmN +BJ]N/# ZR]_Ⱦ",Ye fzVfHͿp jܘjlyUmƙeD?v0 ̩0 N$5I7rKEK2HLLԆٝRE j +g_v[P;`CS Vd{0!^:ÃalD/\ݣ6_o H=1MBP '能3;5AMa !>>CǛY6>T:UA&P 1\< +L]Նm#Q0 B7LМF*@*wmgL/lq^dzD-6=wi_:RW(ۄb. +endstream +endobj +9360 0 obj << +/Type /Page +/Contents 9361 0 R +/Resources 9359 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9322 0 R +/Annots [ 9338 0 R 9346 0 R 9347 0 R 9348 0 R 9349 0 R 9350 0 R 9351 0 R 9352 0 R 9353 0 R 9354 0 R 9355 0 R 9356 0 R 9357 0 R 9358 0 R ] +>> endobj +9338 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.283 729.181 362.69 739.764] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9346 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 649.947 134.777 660.421] +/A << /S /GoTo /D (class_photon_stats_gui_ae7fb408f7fb6e9525337271d2363ae33) >> +>> endobj +9347 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 635.979 144.389 646.453] +/A << /S /GoTo /D (class_photon_stats_gui_a222bbb9f4b1c640489101a5f3bcada8a) >> +>> endobj +9348 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 606.051 143.384 616.525] +/A << /S /GoTo /D (class_photon_stats_gui_a8aa98b7db81d540b6e9c42f37d3a927b) >> +>> endobj +9349 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 592.083 191.408 602.558] +/A << /S /GoTo /D (class_photon_stats_gui_a58101a043bbe7de9d53f14ac111646b2) >> +>> endobj +9350 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 532.068 178.855 540.839] +/A << /S /GoTo /D (class_photon_stats_gui_aac6e6189d7a7723ef4fbcbb5c7a6b6e8) >> +>> endobj +9351 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 502.14 147.105 510.911] +/A << /S /GoTo /D (class_photon_stats_gui_a7e1cb11640167171f7b160089b71e5d7) >> +>> endobj +9352 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.249 484.568 311.632 494.292] +/A << /S /GoTo /D (class_photon_stats_gui_a222bbb9f4b1c640489101a5f3bcada8a) >> +>> endobj +9353 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 472.212 187.292 480.983] +/A << /S /GoTo /D (class_photon_stats_gui_a05204c8969fd4fc0546f7926e5e5da8e) >> +>> endobj +9354 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 442.284 170.435 451.055] +/A << /S /GoTo /D (class_photon_stats_gui_ac8015189e49ffdb616367c7d9f9e91db) >> +>> endobj +9355 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 412.356 157.398 421.127] +/A << /S /GoTo /D (class_photon_stats_gui_ac7c5c8556de5ac92dd227339b2e3c36b) >> +>> endobj +9356 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [115.704 380.725 155.067 391.199] +/A << /S /GoTo /D (class_photon_stats_gui_af9e7598de2be45c63c6368727bb60ae5) >> +>> endobj +9357 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 352.5 147.957 361.065] +/A << /S /GoTo /D (class_photon_stats_gui_a9e96e77b74435c5ff2eeccf2d409685f) >> +>> endobj +9358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.283 272.343 362.69 282.925] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9362 0 obj << +/D [9360 0 R /XYZ 69.866 801.979 null] +>> endobj +9363 0 obj << +/D [9360 0 R /XYZ 70.866 691.247 null] +>> endobj +9364 0 obj << +/D [9360 0 R /XYZ 70.866 571.665 null] +>> endobj +2822 0 obj << +/D [9360 0 R /XYZ 70.866 318.389 null] +>> endobj +2826 0 obj << +/D [9360 0 R /XYZ 70.866 214.172 null] +>> endobj +9365 0 obj << +/D [9360 0 R /XYZ 70.866 188.903 null] +>> endobj +2830 0 obj << +/D [9360 0 R /XYZ 70.866 188.903 null] +>> endobj +9366 0 obj << +/D [9360 0 R /XYZ 70.866 162.045 null] +>> endobj +2834 0 obj << +/D [9360 0 R /XYZ 70.866 162.045 null] +>> endobj +9367 0 obj << +/D [9360 0 R /XYZ 70.866 136.908 null] +>> endobj +2838 0 obj << +/D [9360 0 R /XYZ 70.866 136.908 null] +>> endobj +9368 0 obj << +/D [9360 0 R /XYZ 70.866 111.771 null] +>> endobj +2842 0 obj << +/D [9360 0 R /XYZ 70.866 111.771 null] +>> endobj +9359 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9389 0 obj << +/Length 1387 +/Filter /FlateDecode +>> +stream +xڽXISHW8UnNU0PI&lqOd5Z0~^o7}oiaq˰(  8/(c/Po{>pv b$z"MRP+e&(ޟ#iRzY{9}0 +7+g^( +wH5՟:FI4;EAوU .q3֊o-@ QBW(gS!Ey G>FP}ڽQ0|TsO= HaǢ:427L=S6CFvSk>'~^S Ϲ2Pfu3ޯ>h]-&-%}P4(RT s̟zzױlS#tҤ[)*G$S{G:҃jd -f Œ єU}'m5oa_ԚY-Z~[X̭1'\ڿY2s˯ bM4 +-&|\*!)_ŖxB&7uU +ka[ j:°YVe<`󋙑XyIw8e#_-_)UښdMݔgú8 X5孄  !тEŁQlfvŇ/bxw(LRsp uxlDM#[ZyZZ$ +B}LeȪO} s㐗+s} I13tk5ɶ iDtD؛ȧrјO$ A(2Hv$fͽ(ٔ#D )g.Xu^;jJn$FI K7FA)jQL{s2) SPx 34o] +6S +28$JJw0(enMPd]c * a_Ł.(mT8e@u~1.6&o*wѸ*7rbn73sn۾|^O^y"0yp'T6U_,)a 2eMm.r/z O!Nz)mѰnߟM0Ulb9jLmx }|rbD8&HԉSXؖ LHy>6; +IlG c8ǩYL{?arnhyv;Ud| r +endstream +endobj +9388 0 obj << +/Type /Page +/Contents 9389 0 R +/Resources 9387 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9322 0 R +/Annots [ 9376 0 R 9377 0 R 9378 0 R 9379 0 R 9380 0 R 9381 0 R 9382 0 R 9383 0 R 9384 0 R 9385 0 R ] +>> endobj +9376 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.98 592.761 294.851 603.343] +/A << /S /GoTo /D (class_photon_stats_gui_a222bbb9f4b1c640489101a5f3bcada8a) >> +>> endobj +9377 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.553 292.217 274.519 302.8] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa864e7f0d7510922caf9c107b8dd771a3) >> +>> endobj +9378 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.047 292.217 472.704 302.8] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9379 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 221.882 154.081 232.464] +/A << /S /GoTo /D (class_photon_stream_a87b96b24a15203e84e5bb3f3996609d0) >> +>> endobj +9380 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 193.699 179.267 204.282] +/A << /S /GoTo /D (class_photon_stream_aa2dcbaa4e900d5d5c5327ac840c36c35) >> +>> endobj +9381 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.191 180.712 173.511 191.187] +/A << /S /GoTo /D (class_photon_stream_ae1bda0f78819d5b29d72c968b856781b) >> +>> endobj +9382 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.191 152.53 161.335 163.004] +/A << /S /GoTo /D (class_photon_stream_a1e34f079e1ab0c8a86cb864bc6aa5443) >> +>> endobj +9383 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 124.347 154.583 134.822] +/A << /S /GoTo /D (class_photon_stream_a8b1a1e59820ff95d2d2dd4c376841322) >> +>> endobj +9384 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [127.283 96.165 159.725 106.64] +/A << /S /GoTo /D (class_photon_stream_a546034701bbab3d113219f81c0ae8080) >> +>> endobj +9385 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 67.983 149.858 78.457] +/A << /S /GoTo /D (class_photon_stream_a1bfb478104459081a25e0cf8208de9f4) >> +>> endobj +9390 0 obj << +/D [9388 0 R /XYZ 69.866 801.979 null] +>> endobj +2846 0 obj << +/D [9388 0 R /XYZ 70.866 771.024 null] +>> endobj +9373 0 obj << +/D [9388 0 R /XYZ 70.866 753.825 null] +>> endobj +2850 0 obj << +/D [9388 0 R /XYZ 70.866 753.825 null] +>> endobj +9371 0 obj << +/D [9388 0 R /XYZ 70.866 711.425 null] +>> endobj +2854 0 obj << +/D [9388 0 R /XYZ 70.866 695.847 null] +>> endobj +9370 0 obj << +/D [9388 0 R /XYZ 70.866 653.497 null] +>> endobj +2858 0 obj << +/D [9388 0 R /XYZ 70.866 637.919 null] +>> endobj +9374 0 obj << +/D [9388 0 R /XYZ 70.866 593.757 null] +>> endobj +2862 0 obj << +/D [9388 0 R /XYZ 70.866 578.179 null] +>> endobj +9369 0 obj << +/D [9388 0 R /XYZ 70.866 535.829 null] +>> endobj +2866 0 obj << +/D [9388 0 R /XYZ 70.866 520.251 null] +>> endobj +9372 0 obj << +/D [9388 0 R /XYZ 70.866 478.008 null] +>> endobj +2870 0 obj << +/D [9388 0 R /XYZ 70.866 462.43 null] +>> endobj +9375 0 obj << +/D [9388 0 R /XYZ 70.866 421.783 null] +>> endobj +2874 0 obj << +/D [9388 0 R /XYZ 70.866 406.205 null] +>> endobj +6159 0 obj << +/D [9388 0 R /XYZ 70.866 362.151 null] +>> endobj +2878 0 obj << +/D [9388 0 R /XYZ 70.866 345.401 null] +>> endobj +9391 0 obj << +/D [9388 0 R /XYZ 70.866 262.006 null] +>> endobj +9387 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9421 0 obj << +/Length 1677 +/Filter /FlateDecode +>> +stream +xYKs6Wprh>sK&4qH[L(B!).Irz&Nb[:7uތ~;xNL0Q%s9nLx<(vO沑YStG㩸{(gb<^Lc GFI#I|g]^Q'?Jx;k%p\8g#j*?<#4L"tģ I|%`̸)/ +m-'Y5z7Bov7-Vb X&(kjѯ〺d7h4kt2a;1gƂ"rV+!ՍTIgؓhB4DDn^6߽-z6@^hW2>bBXqhI$ + O'$>7r &=$#6'{_R;p\I@GмBfԎ7hN]oދP3 "V*Lo@xz<l9b7MܙHX|#jEvb0)c 0ջqmH,l]H]@A(hҼ?_=euI*`ԕ5D^ո)%ߗ1kʽZAWRo$rwZl8ӫ\i}q`c2s ~%rF~@@8łjkM_a3,ۅ1!u:4.@[Ymy(+VM\%շR\le2; F{%% * +L䷚%"6@g&* ӢJmmK.wTlw?%M8kxjʖyي,e]~U8),!-ИbsdJ+#!K[{?v0u &Phx0/jH|[7d} Z’@Aft aPfjٷ9nGQT}*R 5 uiI=iI*#eU7VzY܌(B/~!Xf&ҩC+ѧ,JNg6on`a Kl;2pn{sShvЉa Mȝg#~B;􀆌Suz#2~ng3Hpמ𱜭p-f ^nWX_:]PI n'}ӺR9==[q++z ҌWDVc,۪ +GY᭴Q݈~w۬4%Tͅ"N]ܾ=Hח "1{wm>wx(h7_<3Q/4#%/^+t狲"iRb_ ]w7*}D9/ +endstream +endobj +9420 0 obj << +/Type /Page +/Contents 9421 0 R +/Resources 9419 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9322 0 R +/Annots [ 9386 0 R 9398 0 R 9399 0 R 9400 0 R 9401 0 R 9402 0 R 9403 0 R 9404 0 R 9405 0 R 9406 0 R 9407 0 R 9408 0 R 9409 0 R 9410 0 R 9411 0 R 9412 0 R 9413 0 R 9414 0 R 9415 0 R 9416 0 R 9417 0 R 9418 0 R ] +>> endobj +9386 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 744.556 149.858 755.03] +/A << /S /GoTo /D (class_photon_stream_ab3cf6c969d02214b001ddecc8dcd34ca) >> +>> endobj +9398 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 715.212 149.858 725.794] +/A << /S /GoTo /D (class_photon_stream_a372ce5e9fc5a92e0a5581ed2cb357724) >> +>> endobj +9399 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 686.084 149.858 696.559] +/A << /S /GoTo /D (class_photon_stream_a64fe29df11450f421046871947a54d5d) >> +>> endobj +9400 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 656.848 149.858 667.323] +/A << /S /GoTo /D (class_photon_stream_a23ad49d3b2a2395d29f6035595c33a60) >> +>> endobj +9401 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 627.612 149.858 638.087] +/A << /S /GoTo /D (class_photon_stream_a0f65bddf114f21922e307a67e9a959a1) >> +>> endobj +9402 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 598.376 149.858 608.851] +/A << /S /GoTo /D (class_photon_stream_af7d4afc02408fb47b41e28b8f920be35) >> +>> endobj +9403 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.3 598.376 221.668 608.851] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9404 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 569.14 149.858 579.615] +/A << /S /GoTo /D (class_photon_stream_a0a74157c27454d59c9ebcd2f12480611) >> +>> endobj +9405 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 539.905 149.858 550.379] +/A << /S /GoTo /D (class_photon_stream_a03bcbb2ade3cc109364416476083da0d) >> +>> endobj +9406 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 510.669 149.858 521.143] +/A << /S /GoTo /D (class_photon_stream_a8ba68f5108d3ab8bbc69d7b88aa661da) >> +>> endobj +9407 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 434.552 150.71 444.928] +/A << /S /GoTo /D (class_photon_stream_a99e20ecd7737381042751acf8ec8fc4b) >> +>> endobj +9408 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 405.316 156.072 415.692] +/A << /S /GoTo /D (class_photon_stream_a8192fc59b4ffe6ecc3ac70a793b36dc5) >> +>> endobj +9409 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 376.541 132.652 386.663] +/A << /S /GoTo /D (class_photon_stream_a67f264145ca1f4d1cb8518cbbb607797) >> +>> endobj +9410 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.553 299.058 274.519 309.64] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa864e7f0d7510922caf9c107b8dd771a3) >> +>> endobj +9411 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.047 299.058 472.704 309.64] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9412 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.674 269.478 390.331 280.06] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9413 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.938 228.051 409.242 238.526] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9414 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.512 210.319 155.852 220.901] +/A << /S /GoTo /D (class_photon_stream_a1bfb478104459081a25e0cf8208de9f4) >> +>> endobj +9415 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.748 210.319 305.813 220.901] +/A << /S /GoTo /D (class_photon_stream_a8b1a1e59820ff95d2d2dd4c376841322) >> +>> endobj +9416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [324.052 210.319 382.344 220.901] +/A << /S /GoTo /D (class_photon_stream_ae1bda0f78819d5b29d72c968b856781b) >> +>> endobj +9417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.712 198.471 313.053 208.946] +/A << /S /GoTo /D (class_photon_stream_a1bfb478104459081a25e0cf8208de9f4) >> +>> endobj +9418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.299 154.257 203.967 182.831] +/A << /S /GoTo /D (group__public_api_gaf30bbea51cc8c4b1ddc239d1c5c1468f) >> +>> endobj +9422 0 obj << +/D [9420 0 R /XYZ 69.866 801.979 null] +>> endobj +9423 0 obj << +/D [9420 0 R /XYZ 70.866 475.451 null] +>> endobj +2882 0 obj << +/D [9420 0 R /XYZ 70.866 346.474 null] +>> endobj +2886 0 obj << +/D [9420 0 R /XYZ 70.866 138.436 null] +>> endobj +9392 0 obj << +/D [9420 0 R /XYZ 70.866 113.33 null] +>> endobj +2890 0 obj << +/D [9420 0 R /XYZ 70.866 113.33 null] +>> endobj +9419 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F73 4716 0 R /F95 6017 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9437 0 obj << +/Length 904 +/Filter /FlateDecode +>> +stream +x]o0+ݐHG:1i,qװ62~=NeKYA(R8u#p8# '@ (9B1,Gr YXC"d$˹ml3WvuRBI"gHGA$XUs1 +YTDY) +][B~#7z~ W.h'U⻳V)B`H"( :9L5-t<'!/uq + +[E쏨ڜSAC|*ӉM34oM +3-;Uu,:$,$/ܴ,‘sk0<PvfnS$ek`Ymf LL2YTiK?˜J+.Gj b,dPIֆ<ǹq$-[Sv#kf}=>hEϲP.BOscfHk˩ysnH'JD!bl6󀊵!LǪy <˧R)nN<  +j*Tnpu* (F҈4}i.KxDȗݡo$ +*$R) E0K!S;4-Y`lxA`E*T_J}Bn{pjd¨<[BݝC7!F\L^$堥)q_nFNĚv:ι#b: RI2e"eLp阀.]cG_S!1]C":me<]֛: +BϢlR N?K|}7 t~t= +endstream +endobj +9436 0 obj << +/Type /Page +/Contents 9437 0 R +/Resources 9435 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9322 0 R +>> endobj +9438 0 obj << +/D [9436 0 R /XYZ 69.866 801.979 null] +>> endobj +2894 0 obj << +/D [9436 0 R /XYZ 70.866 771.024 null] +>> endobj +9394 0 obj << +/D [9436 0 R /XYZ 70.866 753.773 null] +>> endobj +2898 0 obj << +/D [9436 0 R /XYZ 70.866 753.773 null] +>> endobj +6162 0 obj << +/D [9436 0 R /XYZ 70.866 709.51 null] +>> endobj +2902 0 obj << +/D [9436 0 R /XYZ 70.866 693.673 null] +>> endobj +9395 0 obj << +/D [9436 0 R /XYZ 70.866 651.27 null] +>> endobj +2906 0 obj << +/D [9436 0 R /XYZ 70.866 635.433 null] +>> endobj +9397 0 obj << +/D [9436 0 R /XYZ 70.866 593.03 null] +>> endobj +2910 0 obj << +/D [9436 0 R /XYZ 70.866 577.193 null] +>> endobj +9424 0 obj << +/D [9436 0 R /XYZ 70.866 534.791 null] +>> endobj +2914 0 obj << +/D [9436 0 R /XYZ 70.866 518.953 null] +>> endobj +9425 0 obj << +/D [9436 0 R /XYZ 70.866 476.551 null] +>> endobj +2918 0 obj << +/D [9436 0 R /XYZ 70.866 460.713 null] +>> endobj +9426 0 obj << +/D [9436 0 R /XYZ 70.866 418.311 null] +>> endobj +2922 0 obj << +/D [9436 0 R /XYZ 70.866 402.473 null] +>> endobj +9427 0 obj << +/D [9436 0 R /XYZ 70.866 360.071 null] +>> endobj +2926 0 obj << +/D [9436 0 R /XYZ 70.866 344.233 null] +>> endobj +9428 0 obj << +/D [9436 0 R /XYZ 70.866 301.831 null] +>> endobj +2930 0 obj << +/D [9436 0 R /XYZ 70.866 285.993 null] +>> endobj +9429 0 obj << +/D [9436 0 R /XYZ 70.866 243.591 null] +>> endobj +2934 0 obj << +/D [9436 0 R /XYZ 70.866 227.753 null] +>> endobj +9430 0 obj << +/D [9436 0 R /XYZ 70.866 185.351 null] +>> endobj +2938 0 obj << +/D [9436 0 R /XYZ 70.866 169.513 null] +>> endobj +9431 0 obj << +/D [9436 0 R /XYZ 70.866 127.111 null] +>> endobj +2942 0 obj << +/D [9436 0 R /XYZ 70.866 111.273 null] +>> endobj +9432 0 obj << +/D [9436 0 R /XYZ 70.866 68.871 null] +>> endobj +9435 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9462 0 obj << +/Length 1746 +/Filter /FlateDecode +>> +stream +xYYoF~ׯ[) .}H&m\[L(BRQ_ߙ=(R"m98Z1}s-M:f?-fO_F$ =gqDaD '!ssK'<ݷK꼭Ez_ihL\uE- a,旋f?/fg csVK7‰U3Wx$=K|nFE|XSSBFh#̛0Je}W9ʇsQiY3?]A`zI[QWħ/ z*pJT.>Y=Y@8)O_zIo Q B@hU d[x-ZCW4i 4'z,kQEuc4 +u E-L9 Ή$,ǰԞ>K ؅{8A U&W`iڦOF +|UWh-:1塝G=7 TtCЋIB PRP3DCLFk!tb|^ש2pJn3N :fVͨoZT?*1[㖚IĢ o$ֱh\ m}2۬Dզ o>0sX4 C`<&Aҹōh/L vtۊx 7^IYZ4#FB5 jlluB$vYf)7e9snKV0}5h}ub- ^?4krl1$9a4$:GkJnJ"ۓܓ1b_oLr)R7rrs5KQA.$7ZbFfb9BMnjƖōr6kyv WZ. knMO8K=vgp%žE[󺿺ODͤ8\>Cue C.I.,EN'oNm-"պOaһTV&Դx:{kD=j!$ +6Pު^'ڇ`Lnڽ,Äٶ33a@T2:W+qފuIJ5y +v6꫇nSn "qX], Manz!p$0Ls CNm~Iغګiq[[op;ߵ{+q6$Vڋc]_ܓ"{[? +9;u-W;c'"=~#6E>hב t(5=JYRn/R!pWU=Tdo*Nb%KO]:ͶKY +{7{ +8kydr{=5B5񎿎tcKŞv{qo/.&> endobj +9439 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [88.572 369.789 174.793 380.372] +/A << /S /GoTo /D (class_photon_stream_queue) >> +>> endobj +9440 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.207 369.789 525.406 380.372] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +9441 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.108 357.834 339.448 368.416] +/A << /S /GoTo /D (class_photon_stream_queue_ae75447cd718116990e0d0304eebc6935) >> +>> endobj +9442 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 345.987 122.172 356.461] +/A << /S /GoTo /D (class_photon_stream_queue_a40bc2e04c1641f36da8cb36423fd13c3) >> +>> endobj +9443 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 272.804 180.997 283.278] +/A << /S /GoTo /D (class_photon_stream_queue_a1c2a5d3c8a990b78b07650b0e1370eeb) >> +>> endobj +9444 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [222.593 258.407 300.391 266.787] +/A << /S /GoTo /D (class_photon_stream_queue) >> +>> endobj +9445 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 243.132 138.901 253.607] +/A << /S /GoTo /D (class_photon_stream_queue_a8034450d68cdf1a16e3f33a53b0ad2dd) >> +>> endobj +9446 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.766 227.392 227.564 237.115] +/A << /S /GoTo /D (class_photon_stream_queue) >> +>> endobj +9447 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 213.46 154.583 223.935] +/A << /S /GoTo /D (class_photon_stream_queue_acbae2dbbf5e5b4fd8c589fb7019adbf8) >> +>> endobj +9448 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.66 197.817 394.668 207.443] +/A << /S /GoTo /D (class_photon_stream_a8b1a1e59820ff95d2d2dd4c376841322) >> +>> endobj +9449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 183.789 194.447 194.263] +/A << /S /GoTo /D (class_photon_stream_queue_a9e8e0b7a881aea56cb21148def4b5c5d) >> +>> endobj +9450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.191 154.117 173.511 164.591] +/A << /S /GoTo /D (class_photon_stream_queue_ab9b77bbe2ddf53638dd96b63af8a533c) >> +>> endobj +9451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.659 138.474 428.77 148.1] +/A << /S /GoTo /D (class_photon_stream_ae1bda0f78819d5b29d72c968b856781b) >> +>> endobj +9452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 124.445 149.858 134.92] +/A << /S /GoTo /D (class_photon_stream_queue_ae75447cd718116990e0d0304eebc6935) >> +>> endobj +9453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.344 124.445 212.648 134.92] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 94.774 159.819 105.248] +/A << /S /GoTo /D (class_photon_stream_queue_a40bc2e04c1641f36da8cb36423fd13c3) >> +>> endobj +9455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.305 94.774 222.61 105.248] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9463 0 obj << +/D [9461 0 R /XYZ 69.866 801.979 null] +>> endobj +2946 0 obj << +/D [9461 0 R /XYZ 70.866 771.024 null] +>> endobj +9393 0 obj << +/D [9461 0 R /XYZ 70.866 733.99 null] +>> endobj +2950 0 obj << +/D [9461 0 R /XYZ 70.866 716.659 null] +>> endobj +9396 0 obj << +/D [9461 0 R /XYZ 70.866 691.583 null] +>> endobj +2954 0 obj << +/D [9461 0 R /XYZ 70.866 691.583 null] +>> endobj +2958 0 obj << +/D [9461 0 R /XYZ 70.866 631.659 null] +>> endobj +9434 0 obj << +/D [9461 0 R /XYZ 70.866 604.25 null] +>> endobj +2962 0 obj << +/D [9461 0 R /XYZ 70.866 604.25 null] +>> endobj +9433 0 obj << +/D [9461 0 R /XYZ 70.866 563.593 null] +>> endobj +2966 0 obj << +/D [9461 0 R /XYZ 70.866 546.262 null] +>> endobj +6161 0 obj << +/D [9461 0 R /XYZ 70.866 501.858 null] +>> endobj +2970 0 obj << +/D [9461 0 R /XYZ 70.866 484.527 null] +>> endobj +9464 0 obj << +/D [9461 0 R /XYZ 70.866 442.387 null] +>> endobj +2974 0 obj << +/D [9461 0 R /XYZ 70.866 423.884 null] +>> endobj +9465 0 obj << +/D [9461 0 R /XYZ 70.866 313.915 null] +>> endobj +9460 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F39 4678 0 R /F95 6017 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9481 0 obj << +/Length 1652 +/Filter /FlateDecode +>> +stream +xYKFWpJ[IUUR}`av-12 +_U9{<콞287B ˜x{, ( +h_-hW*ݬdQ'u +v|mB`)H+3PD&?c/g{8f!w;0NC}if(q5LčFd:#cJIL`Yenmfq؛QV|!jm8c/TۺFndO[B\b_mZ-vȴ +*r'nn?,diEK'^ŽXV)[@*WT"=KA%Y:8!~Rdv`-#-y7gJݷk{UEnҚ') ',0zu4`B3]њmLe=/lFJ)v9h֣ 7SH= xbԦa5ԉmqf98+@%+'DA:Xm-׭O4*Y iq@l:u, +&5u{ozƙ烞bFLkt>"m}qM(0 BK$0. {XڌrOnyä#^ +m%IQ}~gQ/JMM 倫I 0Zz + +m<]"o RG4!C Xm!oEEpJ"aˆŻo?q"BPWF Rݡcy@*H%qPeEь߹vNK~C8<3;"Oql"E46.̱ru'm]o0֏&1֒wF*w}J3U̒,fPCؒSW 1Yb]Q2?aLM'"xDW/}TNqBign{ro{-SU+njlJ:ReT³)C% +Dxr(`Bxq:=S(O)cu;MJ:)uj|o""`<cq9xNy۶N哄&]ń>KPNr*/Z z\G E +ܦn;TǍ|+5kSfj}Lm}V2qi7|ܗMD-:7Na1mcbB[MmPoʢ:B~3nRo:Ȩ~SwdX\k.s,Nl@)Ԧ}i+{~HyBF[Ydc .F+3GvRV!)IIfNl8G2fNO#'SS>7DÀ2 pT^opZw>V/\LdjD+$p3%/7tkώ,5'Yi߹O$}Y 3?]/ +endstream +endobj +9480 0 obj << +/Type /Page +/Contents 9481 0 R +/Resources 9479 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9466 0 R +/Annots [ 9456 0 R 9457 0 R 9458 0 R 9459 0 R 9474 0 R 9475 0 R 9476 0 R 9477 0 R 9478 0 R ] +>> endobj +9456 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [88.572 732.536 174.793 743.118] +/A << /S /GoTo /D (class_photon_stream_queue) >> +>> endobj +9457 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.207 732.536 525.406 743.118] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +9458 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.108 720.581 339.448 731.163] +/A << /S /GoTo /D (class_photon_stream_queue_ae75447cd718116990e0d0304eebc6935) >> +>> endobj +9459 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 708.734 122.172 719.208] +/A << /S /GoTo /D (class_photon_stream_queue_a40bc2e04c1641f36da8cb36423fd13c3) >> +>> endobj +9474 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.141 607.864 282.362 616.953] +/A << /S /GoTo /D (class_photon_stream_queue) >> +>> endobj +9475 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.57 432.506 233.874 444.68] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9476 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.881 297.3 425.005 307.775] +/A << /S /GoTo /D (class_photon_stream_ae1bda0f78819d5b29d72c968b856781b) >> +>> endobj +9477 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [115.221 175.971 201.442 186.553] +/A << /S /GoTo /D (class_photon_stream_queue) >> +>> endobj +9478 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.215 113.304 387.114 123.779] +/A << /S /GoTo /D (class_photon_stream_a8b1a1e59820ff95d2d2dd4c376841322) >> +>> endobj +9482 0 obj << +/D [9480 0 R /XYZ 69.866 801.979 null] +>> endobj +2978 0 obj << +/D [9480 0 R /XYZ 70.866 771.024 null] +>> endobj +2982 0 obj << +/D [9480 0 R /XYZ 70.866 679.943 null] +>> endobj +9469 0 obj << +/D [9480 0 R /XYZ 70.866 652.386 null] +>> endobj +2986 0 obj << +/D [9480 0 R /XYZ 70.866 652.386 null] +>> endobj +2990 0 obj << +/D [9480 0 R /XYZ 70.866 546.806 null] +>> endobj +9468 0 obj << +/D [9480 0 R /XYZ 70.866 524.248 null] +>> endobj +2994 0 obj << +/D [9480 0 R /XYZ 70.866 524.248 null] +>> endobj +9472 0 obj << +/D [9480 0 R /XYZ 70.866 425.732 null] +>> endobj +2998 0 obj << +/D [9480 0 R /XYZ 70.866 406.116 null] +>> endobj +9473 0 obj << +/D [9480 0 R /XYZ 70.866 361.071 null] +>> endobj +3002 0 obj << +/D [9480 0 R /XYZ 70.866 341.455 null] +>> endobj +9470 0 obj << +/D [9480 0 R /XYZ 70.866 241.736 null] +>> endobj +3006 0 obj << +/D [9480 0 R /XYZ 70.866 222.12 null] +>> endobj +9471 0 obj << +/D [9480 0 R /XYZ 70.866 176.967 null] +>> endobj +3010 0 obj << +/D [9480 0 R /XYZ 70.866 157.351 null] +>> endobj +9467 0 obj << +/D [9480 0 R /XYZ 70.866 70.866 null] +>> endobj +9479 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F115 6693 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9485 0 obj << +/Length 475 +/Filter /FlateDecode +>> +stream +xڕSv0:JBBؤ{9MMzIryb\ +KOvg;؆e]3'Rk5,eI,+3wBa?m۾mV}M?:æΦKc!x?oNŬϯJ{`;:v;-L=*x `2Y JK-B FPżJ?(OZ.VUy]#Ǒ/``tfVf-YЭZ3{C9!7o-G7gt`G$IA,qT5x1px0ey%%|@aIGٛj*< +x{(dKH۶vjMy6qH+[Zqi7OLlX{lqmCg=ł4t*vkxZuSS'?[l(uL66Vsl=al +endstream +endobj +9484 0 obj << +/Type /Page +/Contents 9485 0 R +/Resources 9483 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9466 0 R +>> endobj +9486 0 obj << +/D [9484 0 R /XYZ 69.866 801.979 null] +>> endobj +3014 0 obj << +/D [9484 0 R /XYZ 70.866 771.024 null] +>> endobj +9483 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9506 0 obj << +/Length 2563 +/Filter /FlateDecode +>> +stream +xZK6ϯ`T#U$qMXةGŒ! -IYF7(#iv  twIُg^&$[/"K/C*Y~%꟪afu}i{Uz 3D޲>V'EgXEB8E]L:VXuVf~u+s"P"N/0a Lơ2w rX&2)Xd)؄VC*q}Q>W" tftřMs_31^7[rV/ui*_SE>TcS^IwV =_7<6/ +}qC +X&=8"B*xn;m RHT[8nAqkVT Ar< #ܶ^nqKm #jk~P;1KuTu/pm !Fm;= B6^n@~b<[T_#_T.>ΣrMC)~\N_6DMASQUQpJUy*SUԃyl,B ֩R%cfr.h9@W +^8rlQlICo29IDib GKꔅNJd:L CpGI xBfSĜ[u_(ig/4 g)u sf:k2/`mW\ofWSӰwTȖvQsigD㼣^ a.65D`O +ĐpD2Γ8Vݱ)m[ķP-l[HdeA'| -ķ*c %+ ař-T2Bic! bm dt; +NKgTݯ G**hnGf\NkE;\9v]ㆺ ׏ 䑏$p}ѐjymBsmsq:dyWG~tIkun%rnݰSCO[V;Xh΅J9%浧!<n( ϕ]o!¶ݺ\њ'=Ozw۪ TFR1Ha.ӞG)Fw(x7܍&L\(;poÝ̴}xT+"*. 78ViWPɁJwgsR(sb 'cلk6GXYODcH/q#> 6从q>;q=GkoB`QT2S9vzg*fhEy0ZSu#":L{ ĆX5Qvԃ :={jj@jg #IJz $"{XǶ]I'޺9հAJ X:+Y8 UO<5l Hsy}4 +!M!ݬU#`%ӃT8"8AOo` w_25]~u{w4N oI.5vN7}EOB]agcz* aN.Sl{B]9]֔4mʞInC cL|#g37 +endstream +endobj +9505 0 obj << +/Type /Page +/Contents 9506 0 R +/Resources 9504 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9466 0 R +/Annots [ 9487 0 R 9488 0 R 9489 0 R 9490 0 R 9491 0 R 9492 0 R 9493 0 R 9494 0 R 9509 0 R 9495 0 R 9496 0 R 9510 0 R 9497 0 R 9498 0 R 9499 0 R 9500 0 R 9501 0 R 9502 0 R ] +>> endobj +9487 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.57 741.029 233.874 753.203] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9488 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.722 638.486 479.018 648.96] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +9489 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.493 609.466 252.639 619.381] +/A << /S /GoTo /D (interface_i_pun_observable) >> +>> endobj +9490 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 550.329 209.905 560.804] +/A << /S /GoTo /D (class_photon_transform_view_a914782b6d7ec46386636fa9fbaaa8f1f) >> +>> endobj +9491 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 500.019 209.483 510.601] +/A << /S /GoTo /D (class_photon_transform_view_a5d1d6606c9c935b2326b31b292f37a7e) >> +>> endobj +9492 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.969 500.019 272.273 510.601] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9493 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.159 500.019 386.628 510.601] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +9494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.098 485.176 525.406 494.802] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9509 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 475.823 128.268 483.658] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.722 390.052 479.018 400.526] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +9496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 293.28 525.406 303.755] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 283.11 91.113 291.594] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9497 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.942 263.593 451.598 274.175] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9498 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 253.449 220.405 262.22] +/A << /S /GoTo /D (class_photon_network_ac23d14ad150a87d51f4ffaa286db29e1) >> +>> endobj +9499 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 239.683 174.068 250.265] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +9500 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.249 210.103 356.906 220.686] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9501 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.206 180.524 473.863 191.106] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9502 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.189 150.944 258.493 161.527] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9507 0 obj << +/D [9505 0 R /XYZ 69.866 801.979 null] +>> endobj +8056 0 obj << +/D [9505 0 R /XYZ 70.866 734.255 null] +>> endobj +3018 0 obj << +/D [9505 0 R /XYZ 70.866 717.383 null] +>> endobj +9508 0 obj << +/D [9505 0 R /XYZ 70.866 590.421 null] +>> endobj +3022 0 obj << +/D [9505 0 R /XYZ 70.866 461.12 null] +>> endobj +3026 0 obj << +/D [9505 0 R /XYZ 70.866 363.394 null] +>> endobj +6709 0 obj << +/D [9505 0 R /XYZ 70.866 338.404 null] +>> endobj +3030 0 obj << +/D [9505 0 R /XYZ 70.866 338.404 null] +>> endobj +9504 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9523 0 obj << +/Length 2000 +/Filter /FlateDecode +>> +stream +xYY۸~ׯS`}V9xS#aF%rBR8>8xH13>F@40b}"dJ`q$JIƈ*Dќ%ixڪ\D) l"Fê:ex n7Uf~c׾Mc_]P׺\jJda,ůwٿf1HG&MIDξNP³4x4@HN׳<8 G}.`7_>̂FWmhi0Sn[hw&q k>s3cJ wV +z+T +Lj\Gp]o4OCD曝n,oTh. +ofzV5G_c9ɘdTFA+K8: +KO'F)va:~.KPIR#YuyB8Ĝ djW-ֺtƲ* +M4umt:Qt[v@Ušn Zk,QqϢlx4|Bмy9')g]a{}ϓ`C܉u5.(7th\`Azqad %)ɔfC0hHrdq~cG̢ăaȘ1$)!PW[)' +rB+ 77 |(My@ m%Gpj=xQ́rʀ(~@7c nOL@csLu\ +nZ&"`= H".\]5tpTp~Q78mf*K #f*K?*#~x:qin 8qD9qH-9ULQHCy(:(<x1x# xւG8<,F-xD^'NAOG.W]k~EeW7w[ηS4f"&tci!>}u=>, +ʂ;wۼr.s/%>5yٕ<&y9B';fp&YS;.Pw$Ici2r~1d_I}=NiWl +E8P6ܬss%<ʕűd ᳘}aXXbˇU_`r&M;"CNPE~wU)lS'"o("g$&2vNE㏊ E *:uqxv)I%96m)RRУ$PLwSo2!3U#< IR^{7ZwV/m'e4VnB/}4k0d߻2G[~._\OO +endstream +endobj +9522 0 obj << +/Type /Page +/Contents 9523 0 R +/Resources 9521 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9466 0 R +/Annots [ 9503 0 R 9512 0 R 9513 0 R 9514 0 R 9515 0 R 9516 0 R 9517 0 R 9518 0 R 9519 0 R 9520 0 R ] +>> endobj +9503 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 758.177 184.846 768.652] +/A << /S /GoTo /D (group__public_api_ga78c69bbb6f79d1e4fb23d3f761eaf4aa) >> +>> endobj +9512 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 527.498 244.416 537.972] +/A << /S /GoTo /D (class_photon_transform_view_position_control_a3f4cd754b21276bef76609b608e9e774) >> +>> endobj +9513 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.901 527.498 393.057 537.972] +/A << /S /GoTo /D (class_photon_transform_view_position_model) >> +>> endobj +9514 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 515.216 209.905 525.69] +/A << /S /GoTo /D (class_photon_transform_view_position_control_af8893b17871604614de5d5f80721d0e9) >> +>> endobj +9515 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [127.449 466.74 189.793 477.215] +/A << /S /GoTo /D (class_photon_transform_view_position_control_aea906d59f0637f9a1ee8a8c6504ad217) >> +>> endobj +9516 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [127.449 440.183 208.264 450.658] +/A << /S /GoTo /D (class_photon_transform_view_position_control_a7c378517491ed0878fa78f8834fa5c0b) >> +>> endobj +9517 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [127.449 413.626 249.508 424.1] +/A << /S /GoTo /D (class_photon_transform_view_position_control_a995fea08fe2aa2ad1c004513c5ba7d65) >> +>> endobj +9518 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 376.002 209.483 386.584] +/A << /S /GoTo /D (class_photon_transform_view_position_control_ac7cc0066925dc4ccf46f2a1ae8a7216f) >> +>> endobj +9519 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [309.974 376.002 369.279 386.584] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9520 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.164 376.002 483.633 386.584] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +9524 0 obj << +/D [9522 0 R /XYZ 69.866 801.979 null] +>> endobj +9511 0 obj << +/D [9522 0 R /XYZ 70.866 759.174 null] +>> endobj +3034 0 obj << +/D [9522 0 R /XYZ 70.866 744.563 null] +>> endobj +9525 0 obj << +/D [9522 0 R /XYZ 70.866 622.474 null] +>> endobj +3038 0 obj << +/D [9522 0 R /XYZ 70.866 606.691 null] +>> endobj +9526 0 obj << +/D [9522 0 R /XYZ 70.866 566.634 null] +>> endobj +3042 0 obj << +/D [9522 0 R /XYZ 70.866 362.387 null] +>> endobj +9527 0 obj << +/D [9522 0 R /XYZ 70.866 337.597 null] +>> endobj +3046 0 obj << +/D [9522 0 R /XYZ 70.866 337.597 null] +>> endobj +3050 0 obj << +/D [9522 0 R /XYZ 70.866 299.262 null] +>> endobj +9528 0 obj << +/D [9522 0 R /XYZ 70.866 274.332 null] +>> endobj +3054 0 obj << +/D [9522 0 R /XYZ 70.866 274.332 null] +>> endobj +9529 0 obj << +/D [9522 0 R /XYZ 70.866 172.161 null] +>> endobj +3058 0 obj << +/D [9522 0 R /XYZ 70.866 157.55 null] +>> endobj +9530 0 obj << +/D [9522 0 R /XYZ 70.866 70.866 null] +>> endobj +9521 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F115 6693 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9563 0 obj << +/Length 1925 +/Filter /FlateDecode +>> +stream +xZێ6}߯У\%ClMEMڒK7ޡHɖo>$%rt8sP^z{ueȽR2o4B")0Ho4>DDIyR" UI晞{q5Tfro{Èőw\x\0$~^z-NCѢfԀ# 1(tgyg@ +HrSBQ?/SyV9zCU< "_߱@` +8ո }rQzs\xZ~bV#1,PcA!(¬*. Y[UI@4(DXt^HX$ډ2Ұn@y`~|U5Ḁxd^< ?ń{-JM8\BK%I2]UPtq.z%{dgX _j6یE~ca +NG/2Ab̾Lz1|UV=a[BqȢX8Wec3 ,3_8!X{‡GI/, ^_PIkX[3Y> +5RΧ8G ~=ۉfP@ϲ(C5G #;%`x;[kAgnF?_o|4ÒkM\-jl?.׼ųt:گ +)F$ہMΉFCvK-Ζ;ZdA!ptoΘ5I1)&88vT\|#{BW_sa³LS_ 4eF{?B8m)[%Yۂqq;Ojm- !bm@y P񼞤퇼n{wQP׺=KaߨtX党6)w9$x} kWEo|+poBxOHDCͫEd3^_L> endobj +9534 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 370.573 195.128 381.048] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063) >> +>> endobj +9535 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 358.618 207.358 369.093] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063ab9f5c797ebbf55adccdd8539a65a0241) >> +>> endobj +9536 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.877 358.618 335.334 369.093] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063a8275b27924ce04ec0cbdf85a3f3dc866) >> +>> endobj +9537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.854 358.618 481.521 369.093] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063ad372923d229a8c3db765a1c1cdfcb19c) >> +>> endobj +9538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [484.04 358.618 525.406 369.093] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063a5ee3cb96945190e0162af2190c264380) >> +>> endobj +9566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 346.663 206.005 357.138] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063a5ee3cb96945190e0162af2190c264380) >> +>> endobj +9539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 334.708 190.869 345.183] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063a412cb411cecf9196f717d6bc9c272c62) >> +>> endobj +9540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.012 320.88 197.164 331.355] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06) >> +>> endobj +9541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.967 320.88 317.176 331.355] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06ab9f5c797ebbf55adccdd8539a65a0241) >> +>> endobj +9542 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [319.696 320.88 476.185 331.355] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06a5ee3cb96945190e0162af2190c264380) >> +>> endobj +9543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [478.704 320.88 525.406 331.355] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06a20ce760ebf36c55f29b275b42f3d6217) >> +>> endobj +9567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 308.925 224.358 319.4] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06a20ce760ebf36c55f29b275b42f3d6217) >> +>> endobj +9544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.351 308.925 355.435 319.4] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06a8275b27924ce04ec0cbdf85a3f3dc866) >> +>> endobj +9545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 247.743 198.123 258.217] +/A << /S /GoTo /D (class_photon_transform_view_position_model_adf69a879201b7b67af4508ccf795f6ac) >> +>> endobj +9546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 233.915 181.096 244.183] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a8e36aa06dc6644a53bd2d87844434e84) >> +>> endobj +9547 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 220.087 239.071 230.562] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a98c785fa35877aae22620b6533a15cd8) >> +>> endobj +9548 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 206.26 170.301 216.734] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063) >> +>> endobj +9549 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.801 206.26 241.842 216.734] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a333c00379e52fd0327337edb6d918d5f) >> +>> endobj +9550 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 192.432 239.359 202.906] +/A << /S /GoTo /D (class_photon_transform_view_position_model_aa0c899efb93f49d72d09f186cf0a61e0) >> +>> endobj +9551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 178.604 202.973 189.079] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a6a74d5fd4dca600a17784f38b70d2aa7) >> +>> endobj +9552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 164.776 262.68 175.251] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a51965afc54a2e2cbaafb57e050555688) >> +>> endobj +9553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 150.949 263.675 161.423] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a623f6bbf22e22073e9be25b84d98a11c) >> +>> endobj +9554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.09 137.121 255.596 147.596] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a3cd4b81cdcb3b099e1514ca7aba02d46) >> +>> endobj +9555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 123.293 172.928 133.768] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06) >> +>> endobj +9556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.428 123.293 247.096 133.768] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a5d3b8ed9c1fb9c3f352cb460489a823b) >> +>> endobj +9557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 109.466 187.39 119.94] +/A << /S /GoTo /D (class_photon_transform_view_position_model_adebb0a46d4de507ec529fdd3a87e192d) >> +>> endobj +9558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 95.53 258.188 105.906] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a7b871135ff0f36dfd41c5148b36612f7) >> +>> endobj +9559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 81.81 257.685 92.285] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a41cbf435a32e015857f534d3bd9e289c) >> +>> endobj +9560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 69.686 182.683 78.457] +/A << /S /GoTo /D (class_photon_transform_view_position_model_a24067fa6f667e913da06fac06773e483) >> +>> endobj +9564 0 obj << +/D [9562 0 R /XYZ 69.866 801.979 null] +>> endobj +3062 0 obj << +/D [9562 0 R /XYZ 70.866 771.024 null] +>> endobj +9532 0 obj << +/D [9562 0 R /XYZ 70.866 739.664 null] +>> endobj +3066 0 obj << +/D [9562 0 R /XYZ 70.866 739.664 null] +>> endobj +9533 0 obj << +/D [9562 0 R /XYZ 70.866 617.271 null] +>> endobj +3070 0 obj << +/D [9562 0 R /XYZ 70.866 599.968 null] +>> endobj +9531 0 obj << +/D [9562 0 R /XYZ 70.866 457.447 null] +>> endobj +3074 0 obj << +/D [9562 0 R /XYZ 70.866 450.25 null] +>> endobj +9565 0 obj << +/D [9562 0 R /XYZ 70.866 411.668 null] +>> endobj +9568 0 obj << +/D [9562 0 R /XYZ 70.866 288.837 null] +>> endobj +9561 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9596 0 obj << +/Length 1068 +/Filter /FlateDecode +>> +stream +xڽXr8+FHU/2$I?OoY#'ؐ8+ ıWB:G]#{G@h4A>RVbtX0c~|Ɋ,q(O\F,}KKs3=q)qtӱ!BP^'A&x6$(w< }9sX +):|74]ԞrD e*IWL]BS=9ds<2ٱa6Cƅnۥ1 &jk-Frgl\Ç"niTϷfxަ uOU*+4BݘUwDI؀ahṃ+S$SwQ}̿IGsqB"AloxYFrQ  OHV b $-tkA^ BX’:,)_ꥡYOY/CQTxeS _UAեGMq.ao=N~2 6Ek[C'OL3]Iz}-*vԙqo'iayrS-t{CԽ,T /eWk* iGm2膴{Ye;!j$[%=\x +dxVx퐥4*nmoI!pQl@lɰ&BtCd'Z-]_͌5UNiAwm{pTДujRd#,5 v`*mU'd_TO-gtqo\;veyxt9&?8 +endstream +endobj +9595 0 obj << +/Type /Page +/Contents 9596 0 R +/Resources 9594 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9598 0 R +>> endobj +9597 0 obj << +/D [9595 0 R /XYZ 69.866 801.979 null] +>> endobj +3078 0 obj << +/D [9595 0 R /XYZ 70.866 771.024 null] +>> endobj +9575 0 obj << +/D [9595 0 R /XYZ 70.866 753.522 null] +>> endobj +3082 0 obj << +/D [9595 0 R /XYZ 70.866 753.522 null] +>> endobj +9576 0 obj << +/D [9595 0 R /XYZ 88.314 695.713 null] +>> endobj +9577 0 obj << +/D [9595 0 R /XYZ 88.314 678.985 null] +>> endobj +9578 0 obj << +/D [9595 0 R /XYZ 88.314 662.258 null] +>> endobj +9579 0 obj << +/D [9595 0 R /XYZ 88.314 645.53 null] +>> endobj +9569 0 obj << +/D [9595 0 R /XYZ 70.866 632.53 null] +>> endobj +3086 0 obj << +/D [9595 0 R /XYZ 70.866 615.437 null] +>> endobj +9570 0 obj << +/D [9595 0 R /XYZ 88.314 559.35 null] +>> endobj +9571 0 obj << +/D [9595 0 R /XYZ 88.314 542.622 null] +>> endobj +9572 0 obj << +/D [9595 0 R /XYZ 88.314 525.894 null] +>> endobj +9573 0 obj << +/D [9595 0 R /XYZ 88.314 509.167 null] +>> endobj +9574 0 obj << +/D [9595 0 R /XYZ 88.314 492.439 null] +>> endobj +3090 0 obj << +/D [9595 0 R /XYZ 70.866 473.49 null] +>> endobj +9593 0 obj << +/D [9595 0 R /XYZ 70.866 448.19 null] +>> endobj +3094 0 obj << +/D [9595 0 R /XYZ 70.866 448.19 null] +>> endobj +9591 0 obj << +/D [9595 0 R /XYZ 70.866 423.183 null] +>> endobj +3098 0 obj << +/D [9595 0 R /XYZ 70.866 423.183 null] +>> endobj +9592 0 obj << +/D [9595 0 R /XYZ 70.866 396.271 null] +>> endobj +3102 0 obj << +/D [9595 0 R /XYZ 70.866 396.271 null] +>> endobj +9589 0 obj << +/D [9595 0 R /XYZ 70.866 371.381 null] +>> endobj +3106 0 obj << +/D [9595 0 R /XYZ 70.866 371.381 null] +>> endobj +9590 0 obj << +/D [9595 0 R /XYZ 70.866 346.352 null] +>> endobj +3110 0 obj << +/D [9595 0 R /XYZ 70.866 346.352 null] +>> endobj +9585 0 obj << +/D [9595 0 R /XYZ 70.866 321.323 null] +>> endobj +3114 0 obj << +/D [9595 0 R /XYZ 70.866 321.323 null] +>> endobj +9586 0 obj << +/D [9595 0 R /XYZ 70.866 296.294 null] +>> endobj +3118 0 obj << +/D [9595 0 R /XYZ 70.866 296.294 null] +>> endobj +9587 0 obj << +/D [9595 0 R /XYZ 70.866 271.265 null] +>> endobj +3122 0 obj << +/D [9595 0 R /XYZ 70.866 271.265 null] +>> endobj +9584 0 obj << +/D [9595 0 R /XYZ 70.866 246.236 null] +>> endobj +3126 0 obj << +/D [9595 0 R /XYZ 70.866 246.236 null] +>> endobj +9583 0 obj << +/D [9595 0 R /XYZ 70.866 221.207 null] +>> endobj +3130 0 obj << +/D [9595 0 R /XYZ 70.866 221.207 null] +>> endobj +9588 0 obj << +/D [9595 0 R /XYZ 70.866 196.178 null] +>> endobj +3134 0 obj << +/D [9595 0 R /XYZ 70.866 196.178 null] +>> endobj +9580 0 obj << +/D [9595 0 R /XYZ 70.866 70.866 null] +>> endobj +9594 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F109 6535 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9617 0 obj << +/Length 1425 +/Filter /FlateDecode +>> +stream +xXKs6W!gBoɡc3uj/vKHKQuN{ H%YI~Ƿi=b)7"^S$7x7>8:1I|h?GeH'xi1*,5{b2Bro|}0b΅CszeN0BzPB\VSDAH0].U,+tHtygD~La.tD,; T`u'Xa)10r {9a\?d9~J|_J;lTdYұ>p6J[xY@ E1!835ʸ{^ee~ҢtsEx:x/&"!tIƥ y|JIJ-=eZ"YQ淔Χ&K+M(A(ط&a7·vw.4`u $-حo*NWov+w `E},!zMyZf_Ľk,ŠZѰ."w5j\d~(Nt{yoMtn,P]+?qu")C1VUT W .NNIGLYgJ-NkRV{8!`4 簚o6ib^_4Z>D4к;T(#1j* cLٴVrD aljg$ 4Tx;0'ae#xXJ|K7xJFZ>>Ght(Fi_0yQ2S2hEoXV+JRv֊XYR}PJu&ĺAaT[v`q2.#MRku˱`Hm3A<5mͣuaQvJ8$$0R܄:?Xd]f;==ҩqjiia:p`!H9{^I`dS(LGXIwܓo8,_?4F#v)v +I_sZFQ;-c'~,<3VGg.K(eJOxlL s`3ghxvz#AGH\BTD2V" h$TIT`MU przL'_t+F`m,M|=-I͛j،>v/ٰ +endstream +endobj +9616 0 obj << +/Type /Page +/Contents 9617 0 R +/Resources 9615 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9598 0 R +/Annots [ 9599 0 R 9600 0 R 9601 0 R 9602 0 R 9603 0 R 9604 0 R 9605 0 R 9606 0 R 9607 0 R 9608 0 R 9609 0 R 9627 0 R 9610 0 R 9611 0 R 9612 0 R 9613 0 R 9614 0 R ] +>> endobj +9599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 619.749 246.361 630.224] +/A << /S /GoTo /D (class_photon_transform_view_rotation_control_af96141a535c6d346ea4564ab3e783b57) >> +>> endobj +9600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.847 619.749 396.949 630.224] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model) >> +>> endobj +9601 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.849 605.278 224.609 615.752] +/A << /S /GoTo /D (class_photon_transform_view_rotation_control_a01e908d07c6706c5cdfde03a03c6dd9f) >> +>> endobj +9602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.849 574.342 191.685 584.816] +/A << /S /GoTo /D (class_photon_transform_view_rotation_control_a76f5079286a1db6632ed646b5f06a5db) >> +>> endobj +9603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 559.762 209.483 570.344] +/A << /S /GoTo /D (class_photon_transform_view_rotation_control_ab52d02c6493092feed0d1c63e4da2d4b) >> +>> endobj +9604 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [326.319 559.762 385.624 570.344] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9605 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [418.51 559.762 499.979 570.344] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +9606 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [122.518 186.999 198.042 197.473] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494) >> +>> endobj +9607 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.856 186.999 322.438 197.473] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494ab9f5c797ebbf55adccdd8539a65a0241) >> +>> endobj +9608 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [329.073 186.999 466.401 197.473] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494abee31ba3ccf0149db072e62ab1b66c71) >> +>> endobj +9609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [473.036 186.999 525.406 197.473] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494a412cb411cecf9196f717d6bc9c272c62) >> +>> endobj +9627 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 175.044 148.235 185.518] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494a412cb411cecf9196f717d6bc9c272c62) >> +>> endobj +9610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 111.398 198.123 121.873] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model_a36cdb8874f88d786106aa6def2c00c4d) >> +>> endobj +9611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 96.926 170.301 107.401] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494) >> +>> endobj +9612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.801 96.926 241.842 107.401] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model_a39016931d8896e4c8c4074b374d2278c) >> +>> endobj +9613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 82.454 244.209 92.929] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model_a025f87682b9d5436e209106aa3e843cb) >> +>> endobj +9614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 67.983 202.973 78.457] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model_aef6a60daf9507129719aefc30dc45166) >> +>> endobj +9618 0 obj << +/D [9616 0 R /XYZ 69.866 801.979 null] +>> endobj +3138 0 obj << +/D [9616 0 R /XYZ 70.866 771.024 null] +>> endobj +9581 0 obj << +/D [9616 0 R /XYZ 70.866 751.455 null] +>> endobj +3142 0 obj << +/D [9616 0 R /XYZ 70.866 751.455 null] +>> endobj +9582 0 obj << +/D [9616 0 R /XYZ 70.866 726.081 null] +>> endobj +3146 0 obj << +/D [9616 0 R /XYZ 70.866 726.081 null] +>> endobj +9619 0 obj << +/D [9616 0 R /XYZ 70.866 700.707 null] +>> endobj +3150 0 obj << +/D [9616 0 R /XYZ 70.866 700.707 null] +>> endobj +9620 0 obj << +/D [9616 0 R /XYZ 70.866 661.791 null] +>> endobj +3154 0 obj << +/D [9616 0 R /XYZ 70.866 541.94 null] +>> endobj +9621 0 obj << +/D [9616 0 R /XYZ 70.866 516.434 null] +>> endobj +3158 0 obj << +/D [9616 0 R /XYZ 70.866 516.434 null] +>> endobj +3162 0 obj << +/D [9616 0 R /XYZ 70.866 477.383 null] +>> endobj +9622 0 obj << +/D [9616 0 R /XYZ 70.866 451.738 null] +>> endobj +3166 0 obj << +/D [9616 0 R /XYZ 70.866 451.738 null] +>> endobj +9623 0 obj << +/D [9616 0 R /XYZ 70.866 351.334 null] +>> endobj +3170 0 obj << +/D [9616 0 R /XYZ 70.866 332.516 null] +>> endobj +9624 0 obj << +/D [9616 0 R /XYZ 70.866 305.286 null] +>> endobj +3174 0 obj << +/D [9616 0 R /XYZ 70.866 305.286 null] +>> endobj +9625 0 obj << +/D [9616 0 R /XYZ 70.866 267.818 null] +>> endobj +3178 0 obj << +/D [9616 0 R /XYZ 70.866 267.818 null] +>> endobj +9626 0 obj << +/D [9616 0 R /XYZ 70.866 229.04 null] +>> endobj +9628 0 obj << +/D [9616 0 R /XYZ 70.866 153.439 null] +>> endobj +9615 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9650 0 obj << +/Length 1345 +/Filter /FlateDecode +>> +stream +xXrF+pJUhv%+E"GK$ӳ,rp^^>~.c$( (2S$ &6LI|2NpXfaLqX\Oz_Uie^zRSS$$$M>.&FiHPLWo8ڧ#&ٹ +`Hpep=ckQvXT=W9"`juJ0&E>JY(r;w^La&vaXQE:U6JUu"#bD;š%W|.Y o.Q?W\,ƢnJKDޡ*h<ّ]D~Ux5D^ʡHƈl 0֓C \-)] M +LGjb.- _5sc):$FX4-Z;[w~ٶ-?t)J^/O(6C`_}u'|s?IDcɽK@\)er3&Qqcjj}mH7a\|Qڡɲf"۹{= Y̿I +endstream +endobj +9649 0 obj << +/Type /Page +/Contents 9650 0 R +/Resources 9648 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9598 0 R +/Annots [ 9637 0 R 9638 0 R 9639 0 R 9640 0 R 9641 0 R 9642 0 R 9643 0 R ] +>> endobj +9637 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 439.925 235.396 450.4] +/A << /S /GoTo /D (class_photon_transform_view_scale_control_a4afeab195322ed62074a1bb41f091b91) >> +>> endobj +9638 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.881 439.925 375.018 450.4] +/A << /S /GoTo /D (class_photon_transform_view_scale_model) >> +>> endobj +9639 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [127.449 426.53 199.244 437.004] +/A << /S /GoTo /D (class_photon_transform_view_scale_control_a8b596e08ef92033d40af5c34a881bcd1) >> +>> endobj +9640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [127.449 397.745 166.32 408.22] +/A << /S /GoTo /D (class_photon_transform_view_scale_control_a8345675a1c1c122f426c525c5b3dc5d3) >> +>> endobj +9641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 384.242 209.483 394.824] +/A << /S /GoTo /D (class_photon_transform_view_scale_control_a4bc567bf020c6807ad2e9960a25435e2) >> +>> endobj +9642 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [300.82 384.242 360.124 394.824] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9643 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.01 384.242 474.479 394.824] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +9651 0 obj << +/D [9649 0 R /XYZ 69.866 801.979 null] +>> endobj +3182 0 obj << +/D [9649 0 R /XYZ 70.866 771.024 null] +>> endobj +9629 0 obj << +/D [9649 0 R /XYZ 70.866 753.683 null] +>> endobj +3186 0 obj << +/D [9649 0 R /XYZ 70.866 753.683 null] +>> endobj +9630 0 obj << +/D [9649 0 R /XYZ 88.314 696.036 null] +>> endobj +9631 0 obj << +/D [9649 0 R /XYZ 88.314 679.651 null] +>> endobj +9632 0 obj << +/D [9649 0 R /XYZ 88.314 663.267 null] +>> endobj +3190 0 obj << +/D [9649 0 R /XYZ 70.866 645.125 null] +>> endobj +9636 0 obj << +/D [9649 0 R /XYZ 70.866 619.986 null] +>> endobj +3194 0 obj << +/D [9649 0 R /XYZ 70.866 619.986 null] +>> endobj +9634 0 obj << +/D [9649 0 R /XYZ 70.866 593.397 null] +>> endobj +3198 0 obj << +/D [9649 0 R /XYZ 70.866 593.397 null] +>> endobj +9635 0 obj << +/D [9649 0 R /XYZ 70.866 568.529 null] +>> endobj +3202 0 obj << +/D [9649 0 R /XYZ 70.866 568.529 null] +>> endobj +9633 0 obj << +/D [9649 0 R /XYZ 70.866 543.662 null] +>> endobj +3206 0 obj << +/D [9649 0 R /XYZ 70.866 543.662 null] +>> endobj +9652 0 obj << +/D [9649 0 R /XYZ 70.866 518.794 null] +>> endobj +3210 0 obj << +/D [9649 0 R /XYZ 70.866 518.794 null] +>> endobj +9653 0 obj << +/D [9649 0 R /XYZ 70.866 480.384 null] +>> endobj +3214 0 obj << +/D [9649 0 R /XYZ 70.866 368.952 null] +>> endobj +9654 0 obj << +/D [9649 0 R /XYZ 70.866 343.953 null] +>> endobj +3218 0 obj << +/D [9649 0 R /XYZ 70.866 343.953 null] +>> endobj +3222 0 obj << +/D [9649 0 R /XYZ 70.866 305.408 null] +>> endobj +9655 0 obj << +/D [9649 0 R /XYZ 70.866 280.27 null] +>> endobj +3226 0 obj << +/D [9649 0 R /XYZ 70.866 280.27 null] +>> endobj +9656 0 obj << +/D [9649 0 R /XYZ 70.866 183.601 null] +>> endobj +3230 0 obj << +/D [9649 0 R /XYZ 70.866 167.314 null] +>> endobj +9657 0 obj << +/D [9649 0 R /XYZ 70.866 140.591 null] +>> endobj +3234 0 obj << +/D [9649 0 R /XYZ 70.866 140.591 null] +>> endobj +9658 0 obj << +/D [9649 0 R /XYZ 70.866 103.629 null] +>> endobj +3238 0 obj << +/D [9649 0 R /XYZ 70.866 103.629 null] +>> endobj +9648 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F109 6535 0 R /F39 4678 0 R /F106 6377 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9687 0 obj << +/Length 1578 +/Filter /FlateDecode +>> +stream +xYIs6WVr&Dp3C%LKEAk TH*Bq&`S߂{ (h`YX^7ȷгFS+ˆM6 iBXjd҈٧yZpQ%U );8 >b4:CV| {y141xkg kz5v"{e^R9VG^__{q+|EK=T뻥4xAhsl枌3!(BTp\|Tj)7*&4+C=瓎jn G{^šGjAKILSRő$>& n-1BkW lā В~="! ^`_z.Q+^B/ޯUUdcioU}~|{eõHgE.Lыa-^TpɷҳPwkπ8.ۗ|1e H njmcXe#~dckCZ!5zW9 E"ʩJ^,ȸBk&srHm}nHqC$/U6v}%P"oʚ;9!)(S W[)riRtD It&UIBɢ,L؊ dd2q"p~7'L\ TWtW7I#/4O n=)T mVEj BoRn g +t]f!tPa(sqLS[.֣8|S0 .Ra3gH +BS? mz KsP݂/Iej(0u<":j2qZ$3*ٽ`VnFLUq _SrƵlVGpEU|UtGZt(MicC`Dl,Mk쨚&31 +& ~5KMyjܧOӆb+q0ICVwg1dSƙN<8SMra*7# 7ts[zrb!\+8G:dn>XedUERyqL]L(i̽-R +=:]:bȜ,S5\7M$Ig衳w B0=WW#UM`0 $QXBVp49fVٶf+#O[@_)&Y^abA"֭oD*;y/:/ Zp +endstream +endobj +9686 0 obj << +/Type /Page +/Contents 9687 0 R +/Resources 9685 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9598 0 R +/Annots [ 9644 0 R 9645 0 R 9646 0 R 9647 0 R 9690 0 R 9659 0 R 9660 0 R 9661 0 R 9662 0 R 9663 0 R 9664 0 R 9665 0 R 9666 0 R 9667 0 R 9701 0 R 9668 0 R 9669 0 R 9670 0 R 9671 0 R 9672 0 R 9673 0 R 9674 0 R 9675 0 R 9676 0 R 9677 0 R 9678 0 R 9679 0 R 9680 0 R 9681 0 R ] +>> endobj +9644 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.4 734.716 198.924 745.19] +/A << /S /GoTo /D (class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432e) >> +>> endobj +9645 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.502 734.716 325.084 745.19] +/A << /S /GoTo /D (class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432eab9f5c797ebbf55adccdd8539a65a0241) >> +>> endobj +9646 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.821 734.716 465.299 745.19] +/A << /S /GoTo /D (class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432ea62e88848d85e21d979ff5e5efda8a268) >> +>> endobj +9647 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [473.036 734.716 525.406 745.19] +/A << /S /GoTo /D (class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432ea412cb411cecf9196f717d6bc9c272c62) >> +>> endobj +9690 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 722.761 148.235 733.235] +/A << /S /GoTo /D (class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432ea412cb411cecf9196f717d6bc9c272c62) >> +>> endobj +9659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 663.662 198.123 674.137] +/A << /S /GoTo /D (class_photon_transform_view_scale_model_a22b3360da0a4aa09e0086af1ae091da2) >> +>> endobj +9660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 650.379 170.301 660.854] +/A << /S /GoTo /D (class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432e) >> +>> endobj +9661 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.801 650.379 241.842 660.854] +/A << /S /GoTo /D (class_photon_transform_view_scale_model_a9680982f5a84536b57ae3f806291ab37) >> +>> endobj +9662 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 637.096 239.359 647.571] +/A << /S /GoTo /D (class_photon_transform_view_scale_model_ac326b99330c3bcfe8df598893a2f3261) >> +>> endobj +9663 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 623.814 202.973 634.288] +/A << /S /GoTo /D (class_photon_transform_view_scale_model_a7fd5e6b606026fb096e79391b587a66b) >> +>> endobj +9664 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [101.897 280.622 197.407 289.106] +/A << /S /GoTo /D (class_photon_1_1_mono_behaviour) >> +>> endobj +9665 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 219.739 191.721 230.214] +/A << /S /GoTo /D (class_photon_view_a0eee05bdd9c48c263a41ccfec45b8651) >> +>> endobj +9666 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.222 204.556 220.113 214.279] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9667 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.098 204.556 525.406 214.279] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 195.3 128.268 203.135] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9668 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 180.222 190.278 190.697] +/A << /S /GoTo /D (class_photon_view_a484df6eca8208330c00c317334dd8115) >> +>> endobj +9669 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.764 180.222 249.132 190.697] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9670 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.108 165.136 264.998 174.762] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9671 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 151.664 190.278 162.139] +/A << /S /GoTo /D (class_photon_view_ad892c308b04787c06907120e64f6bc03) >> +>> endobj +9672 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.108 136.578 264.998 146.204] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9673 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 123.106 214.137 133.581] +/A << /S /GoTo /D (class_photon_view_a2a681a9becf63f444139493379e2ada7) >> +>> endobj +9674 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.622 123.106 272.991 133.581] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9675 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 94.44 169.108 105.023] +/A << /S /GoTo /D (class_photon_view_af1871faa617868760d00e59d443d2ad8) >> +>> endobj +9676 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.594 94.44 231.899 105.023] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9677 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.784 94.44 346.254 105.023] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +9678 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 81.158 179.07 91.74] +/A << /S /GoTo /D (class_photon_view_a677557c203df8f79277095ce5f9da001) >> +>> endobj +9679 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.556 81.158 241.86 91.74] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +9680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.746 81.158 356.215 91.74] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +9681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 67.983 251.338 78.457] +/A << /S /GoTo /D (class_photon_view_a869710e081df022bbb4fa160e7ab9e0a) >> +>> endobj +9688 0 obj << +/D [9686 0 R /XYZ 69.866 801.979 null] +>> endobj +9689 0 obj << +/D [9686 0 R /XYZ 70.866 775.009 null] +>> endobj +9691 0 obj << +/D [9686 0 R /XYZ 70.866 703.955 null] +>> endobj +3242 0 obj << +/D [9686 0 R /XYZ 70.866 608.79 null] +>> endobj +9692 0 obj << +/D [9686 0 R /XYZ 70.866 583.736 null] +>> endobj +3246 0 obj << +/D [9686 0 R /XYZ 70.866 583.736 null] +>> endobj +9693 0 obj << +/D [9686 0 R /XYZ 88.314 526.141 null] +>> endobj +9694 0 obj << +/D [9686 0 R /XYZ 88.314 509.87 null] +>> endobj +9695 0 obj << +/D [9686 0 R /XYZ 88.314 493.598 null] +>> endobj +3250 0 obj << +/D [9686 0 R /XYZ 70.866 475.722 null] +>> endobj +9696 0 obj << +/D [9686 0 R /XYZ 70.866 450.637 null] +>> endobj +3254 0 obj << +/D [9686 0 R /XYZ 70.866 450.637 null] +>> endobj +9697 0 obj << +/D [9686 0 R /XYZ 70.866 424.101 null] +>> endobj +3258 0 obj << +/D [9686 0 R /XYZ 70.866 424.101 null] +>> endobj +9698 0 obj << +/D [9686 0 R /XYZ 70.866 399.287 null] +>> endobj +3262 0 obj << +/D [9686 0 R /XYZ 70.866 399.287 null] +>> endobj +9699 0 obj << +/D [9686 0 R /XYZ 70.866 374.472 null] +>> endobj +3266 0 obj << +/D [9686 0 R /XYZ 70.866 374.472 null] +>> endobj +6130 0 obj << +/D [9686 0 R /XYZ 70.866 349.658 null] +>> endobj +3270 0 obj << +/D [9686 0 R /XYZ 70.866 349.658 null] +>> endobj +9700 0 obj << +/D [9686 0 R /XYZ 70.866 260.032 null] +>> endobj +9685 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F109 6535 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9760 0 obj << +/Length 2206 +/Filter /FlateDecode +>> +stream +xr8୩,cW&qRf [P⸿~@JK{jrAo jZ:~:|+&IzƊ(Њ5˭+;&~4QlXZs6vNpxnYD׳-ߋIǀK䄞c6u,cl9V~(غӐK< k:׈.O͕CC`IrhBNR1kϙz:b9gJ`_ЂW5Ny'|إ.eef)<]/,3;-x5BF4#J/Aɿg,gbLaVA$bųOC?Q"Pn$vZ tE7kMJ A'ih@" ^k!ȟμd&Kd.Irv Ah-y[v,? 2qq.ǎ߃?2; eu5֟~DT:LF6R[uլRFv]UAvn[q QCčQԢQٶjϒ-epڵE)R"-ke]F"\dZ6; 77U6eٺdM,tR]Wڮ_*ETE{YۤzpwpYCᰭIeXi%7l{vLNk0VQqY=):$L8Ƒ5@{LLPqrp-Zd5a&i5x\P*ġQG>g.qJ +P1)?V*_jHE+OP N|ABHT (U^6,D"UN>ptA=Δ}W~Ve'`R&b}kzNM LjTSpPp1 +SOw{"&Ky~I$K/jC`NI/^(:qi9#Sl]ۻ,| O93x ėFcl},W4l2Q/+)7* E1OP_Jo+( S&%ۍsbar;yn`9"|5D +9խXLpwM ә@UxU#~{]Wͽ +\;H%-07L=.Y} HtڬߏиW +\5 +&e$r}%/vW!r-pԦ׏pe)=;N@wyIЉn0#d77@6g2+48pTkSLyoЎK- ''ZC̣a\os_Ln +(tm3ш +84"q`1Osnkx=ypts'2k| +V}'N>ĐWGMiݩNMo6VXvG==^M3& =}qA[:RK!h'J0l$Ӕ؜"x)d74FڠT)lԱQzR}t:yrKg[xв (ugvp_rG>$Ә6}^9y"ӮScHu6pJښaɌ{yλGj5nnҦՇKLːަ.?H]''JDsPvt!:e~ā.vZc.$n$}b.7G)-88e.uB3㽢onfc㏂צ)<|?'L nY +endstream +endobj +9759 0 obj << +/Type /Page +/Contents 9760 0 R +/Resources 9758 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9598 0 R +/Annots [ 9682 0 R 9762 0 R 9683 0 R 9684 0 R 9709 0 R 9710 0 R 9711 0 R 9712 0 R 9713 0 R 9714 0 R 9715 0 R 9716 0 R 9717 0 R 9718 0 R 9719 0 R 9720 0 R 9721 0 R 9722 0 R 9723 0 R 9724 0 R 9725 0 R 9726 0 R 9727 0 R 9728 0 R 9729 0 R 9730 0 R 9731 0 R 9732 0 R 9733 0 R 9734 0 R 9735 0 R 9736 0 R 9737 0 R 9738 0 R 9739 0 R 9740 0 R 9741 0 R 9742 0 R 9743 0 R 9744 0 R 9745 0 R 9746 0 R 9747 0 R 9748 0 R 9749 0 R 9750 0 R 9751 0 R 9752 0 R 9753 0 R ] +>> endobj +9682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [409.345 758.366 525.406 767.992] +/A << /S /GoTo /D (class_photon_network_a2ea887525d418e088bf99d303673d2f3) >> +>> endobj +9762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 748.94 170.431 757.034] +/A << /S /GoTo /D (class_photon_network_a2ea887525d418e088bf99d303673d2f3) >> +>> endobj +9683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 734.123 134.409 744.705] +/A << /S /GoTo /D (class_photon_view_ad288db13a15d581e0f7c5886f4036720) >> +>> endobj +9684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.11 734.123 280.836 744.705] +/A << /S /GoTo /D (group__public_api_gab84b274b6aa3b3a3d7810361da16170f) >> +>> endobj +9709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 706.154 159.828 716.736] +/A << /S /GoTo /D (class_photon_view_a2950cb34198fa050a7e65a6b2f722c68) >> +>> endobj +9710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.529 706.154 306.255 716.736] +/A << /S /GoTo /D (group__public_api_gab84b274b6aa3b3a3d7810361da16170f) >> +>> endobj +9711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 678.185 134.409 688.767] +/A << /S /GoTo /D (class_photon_view_a6bc9726af14a8c7b8bdd7793c495a6e8) >> +>> endobj +9712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.11 678.185 276.479 688.767] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9713 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 650.216 159.828 660.799] +/A << /S /GoTo /D (class_photon_view_ab6f075ebed73c05fa1c9ea6e81b66cca) >> +>> endobj +9714 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.529 650.216 301.898 660.799] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9715 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 622.248 188.914 632.83] +/A << /S /GoTo /D (class_photon_view_aaa61ad448b005df342350762476e367d) >> +>> endobj +9716 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 564.383 167.853 574.858] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9717 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.353 564.383 184.799 574.858] +/A << /S /GoTo /D (class_photon_view_ace8c64cae230e1fbd3356112274e4d8d) >> +>> endobj +9718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 551.288 167.853 561.87] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.353 551.288 184.799 561.87] +/A << /S /GoTo /D (class_photon_view_a24370932ff0a1f79d6dcb83a2bd7a27b) >> +>> endobj +9720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 538.407 167.853 548.882] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.353 538.407 187.785 548.882] +/A << /S /GoTo /D (class_photon_view_a84084cfaf09debaf88362629bb772907) >> +>> endobj +9722 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.231 538.407 231.943 548.882] +/A << /S /GoTo /D (class_photon_view_a309ddedb443400696cf80da2ff579262) >> +>> endobj +9723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 482.22 140.488 490.704] +/A << /S /GoTo /D (class_photon_view_af37a856ac051d3882de691851c7d2d08) >> +>> endobj +9724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 467.34 131.567 477.715] +/A << /S /GoTo /D (class_photon_view_a9f8a7d9f0fa7703f07dcc2f0daf0e4db) >> +>> endobj +9725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 454.459 220.046 464.934] +/A << /S /GoTo /D (class_photon_view_aa4792e336ad2b338fcae475c2cca545c) >> +>> endobj +9726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 415.531 160.375 426.006] +/A << /S /GoTo /D (class_photon_view_a3a3650071e812aca9b9cd518638ebd7d) >> +>> endobj +9727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 402.543 179.805 413.018] +/A << /S /GoTo /D (_photon_view_8cs_adca9c5e682d5417add581b004cd5b990) >> +>> endobj +9728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.305 402.543 244.586 413.018] +/A << /S /GoTo /D (class_photon_view_a634144e72774beb34d84c3ab7cac9cd4) >> +>> endobj +9729 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 389.555 182.746 400.03] +/A << /S /GoTo /D (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2) >> +>> endobj +9730 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.246 389.555 295.64 400.03] +/A << /S /GoTo /D (class_photon_view_a72f924cef0d24da2c542e80062cc3934) >> +>> endobj +9731 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.869 389.555 475.116 400.03] +/A << /S /GoTo /D (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2aa2090ce6165d865de2f99434311550a2) >> +>> endobj +9732 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 376.459 183.965 387.042] +/A << /S /GoTo /D (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3) >> +>> endobj +9733 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.465 376.459 298.078 387.042] +/A << /S /GoTo /D (class_photon_view_a57eb2e5b6b3aea9e4ac6cc494dc19a27) >> +>> endobj +9734 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.307 376.459 407.054 387.042] +/A << /S /GoTo /D (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3ab1c94ca2fbc3e78fc30069c8d0f01680) >> +>> endobj +9735 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 363.579 166.033 374.053] +/A << /S /GoTo /D (_photon_view_8cs_afcc67b7812df847096e32bd0a953b39f) >> +>> endobj +9736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.533 363.579 241.197 374.053] +/A << /S /GoTo /D (class_photon_view_a29400fef2cf398230b2c63a7d66f6d9a) >> +>> endobj +9737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.426 363.579 344.828 374.053] +/A << /S /GoTo /D (_photon_view_8cs_afcc67b7812df847096e32bd0a953b39fa4457d440870ad6d42bab9082d9bf9b61) >> +>> endobj +9738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.495 348.787 252.386 358.413] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.034 335.61 269.769 346.085] +/A << /S /GoTo /D (class_photon_view_ae0c6ba75b4b849f41a2164c0ad7dbf8f) >> +>> endobj +9740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 324.406 164.051 332.89] +/A << /S /GoTo /D (class_photon_view_aa32a59c1f2bd619673142ab75fc7c928) >> +>> endobj +9741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 311.418 173 319.902] +/A << /S /GoTo /D (class_photon_view_ac63b242555603f30ae5b7a099b6fae97) >> +>> endobj +9742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [348.845 294.842 445.002 304.468] +/A << /S /GoTo /D (class_photon_view_a2a681a9becf63f444139493379e2ada7) >> +>> endobj +9743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 214.764 130.652 225.238] +/A << /S /GoTo /D (class_photon_view_aae1e4dcb7cf0cf2cd460490cefdcda46) >> +>> endobj +9744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [127.283 201.775 196.056 212.044] +/A << /S /GoTo /D (class_photon_view_a0d1e63579ed533e6394ca7f12b313c7c) >> +>> endobj +9745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [315.593 186.887 412.265 196.61] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +9746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 163.201 135.449 173.116] +/A << /S /GoTo /D (class_photon_view_a309ddedb443400696cf80da2ff579262) >> +>> endobj +9747 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.843 147.959 202.733 157.682] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9748 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 135.232 167.351 145.354] +/A << /S /GoTo /D (class_photon_view_a65ea130a5d46f64984ff5361518f6050) >> +>> endobj +9749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.675 119.99 191.565 129.713] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9750 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 106.91 150.145 117.179] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9751 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.645 106.91 176.918 117.179] +/A << /S /GoTo /D (class_photon_view_ad696cb93fb9835d633b9def970650edc) >> +>> endobj +9752 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.028 92.118 208.919 101.745] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9753 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 68.336 165.522 78.457] +/A << /S /GoTo /D (class_photon_view_a535e478c9fe2fce6af7102e32833135a) >> +>> endobj +9761 0 obj << +/D [9759 0 R /XYZ 69.866 801.979 null] +>> endobj +9763 0 obj << +/D [9759 0 R /XYZ 70.866 604.243 null] +>> endobj +9764 0 obj << +/D [9759 0 R /XYZ 70.866 520.295 null] +>> endobj +9765 0 obj << +/D [9759 0 R /XYZ 70.866 254.623 null] +>> endobj +9758 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F73 4716 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9807 0 obj << +/Length 2277 +/Filter /FlateDecode +>> +stream +xr_AKPըRڙ)o/h0jK|}Ni.T^~sV|_̨lN^X MS|TDY25[1GgqPwx */pAEcQ Y-{B}>vn~j}@ [PpN[p>.۟uY[FaS%6*'NԻYL64S(5jX꺫U;A 1 |kguw^;.4y_G3dP-45(u3 F?& q*s &!G hX`'GP5[SjHKNZnj_ &- TOLx[Ϩ;R$S +l,v68H!V!u b*-zSu_Bw3yB-:=b{:ⶒ5_bfS2Đ&yww]il@0寊<:2SMЭ}<|0ۛu p"k0?<.xNâī|T6ܣL-1Ь0QBj#k/kYXv{iPɺk@zor+%O@/}GݖFl{2ܮYFUZ˦V8+>@ŝð\^n6}&܊pHxA/(i-wv]5pA+|֒:},dzépS,V8:`儺yGa}ᜇ]=5;UU7Y ]Ajmޘdt4̣fnvWCxLpjvSܴRkMUT%wȸ1ھa^{m{+$.btm:H7ж3Є2idm3a;ͲYVwk;Q7rũD;qO׉J@S{K/SR2˶F[cx7nUsk•Zpg $Q[gqn=1;}]Eq[ƥo7N%7 ݱ>*M Τ"wmVykkwԽT.wQ?1M:v7× +ng0ܫ\˛l'*zyZ/Y6|}&H'}o;8EJكmWot&Vӡ73o~,H("$BJQB΅\hޙ/I9^} +y?݆6$s5OsTdb # +endstream +endobj +9806 0 obj << +/Type /Page +/Contents 9807 0 R +/Resources 9805 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9598 0 R +/Annots [ 9754 0 R 9755 0 R 9756 0 R 9757 0 R 9796 0 R 9809 0 R 9797 0 R 9798 0 R 9799 0 R 9800 0 R 9810 0 R 9801 0 R 9802 0 R 9803 0 R 9804 0 R ] +>> endobj +9754 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 758.531 173.278 768.652] +/A << /S /GoTo /D (class_photon_view_afcf78ab953a119454750b7e85242eae4) >> +>> endobj +9755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 744.081 169.01 754.202] +/A << /S /GoTo /D (class_photon_view_aa9d1d25847f25afbac6b68c99c7e286c) >> +>> endobj +9756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 729.632 142.111 739.547] +/A << /S /GoTo /D (class_photon_view_a823593ba0cf86454176b4f0d04a70590) >> +>> endobj +9757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.675 713.025 191.565 722.652] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.531 351.343 525.406 361.818] +/A << /S /GoTo /D (class_photon_network_a2ea887525d418e088bf99d303673d2f3) >> +>> endobj +9809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 341.091 137.961 349.862] +/A << /S /GoTo /D (class_photon_network_a2ea887525d418e088bf99d303673d2f3) >> +>> endobj +9797 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [86.929 321.656 273.159 332.238] +/A << /S /GoTo /D (class_photon_network_a2ea887525d418e088bf99d303673d2f3) >> +>> endobj +9798 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.214 292.184 280.445 302.659] +/A << /S /GoTo /D (class_photon_network_a2ea887525d418e088bf99d303673d2f3) >> +>> endobj +9799 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.278 218.367 191.935 228.95] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9800 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 218.367 525.406 228.95] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9810 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 208.304 91.113 216.788] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9801 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.237 188.788 324.894 199.37] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9802 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.796 176.833 376.471 187.415] +/A << /S /GoTo /D (interface_i_pun_callbacks_a02364f5144b6305bbffc886d530b7bd2) >> +>> endobj +9803 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.394 159.316 221.051 169.79] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 79.83 169.4 90.412] +/A << /S /GoTo /D (general_rpcManual) >> +>> endobj +9808 0 obj << +/D [9806 0 R /XYZ 69.866 801.979 null] +>> endobj +3274 0 obj << +/D [9806 0 R /XYZ 70.866 695.256 null] +>> endobj +3278 0 obj << +/D [9806 0 R /XYZ 70.866 631.213 null] +>> endobj +9707 0 obj << +/D [9806 0 R /XYZ 70.866 605.717 null] +>> endobj +3282 0 obj << +/D [9806 0 R /XYZ 70.866 605.717 null] +>> endobj +9772 0 obj << +/D [9806 0 R /XYZ 70.866 578.493 null] +>> endobj +3286 0 obj << +/D [9806 0 R /XYZ 70.866 578.493 null] +>> endobj +9770 0 obj << +/D [9806 0 R /XYZ 70.866 553.269 null] +>> endobj +3290 0 obj << +/D [9806 0 R /XYZ 70.866 553.269 null] +>> endobj +9771 0 obj << +/D [9806 0 R /XYZ 70.866 527.905 null] +>> endobj +3294 0 obj << +/D [9806 0 R /XYZ 70.866 527.905 null] +>> endobj +9705 0 obj << +/D [9806 0 R /XYZ 70.866 502.403 null] +>> endobj +3298 0 obj << +/D [9806 0 R /XYZ 70.866 502.403 null] +>> endobj +9708 0 obj << +/D [9806 0 R /XYZ 70.866 415.98 null] +>> endobj +3302 0 obj << +/D [9806 0 R /XYZ 70.866 397.214 null] +>> endobj +9702 0 obj << +/D [9806 0 R /XYZ 172.121 283.112 null] +>> endobj +3306 0 obj << +/D [9806 0 R /XYZ 70.866 262.351 null] +>> endobj +6253 0 obj << +/D [9806 0 R /XYZ 489.264 162.199 null] +>> endobj +3310 0 obj << +/D [9806 0 R /XYZ 70.866 141.546 null] +>> endobj +9805 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F95 6017 0 R /F106 6377 0 R /F73 4716 0 R /F115 6693 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9825 0 obj << +/Length 2054 +/Filter /FlateDecode +>> +stream +xZKsW ZN捁ĻQeb{q|!B  +FѿOEHىẸ \ϑ &(1ZQ̉f:"G&%L8Hﲛ9a4ZHa2x9JL+;=i9nj, Xb '\%"6۹DI"x?ڪ|! Ӥ(vXI6UXmmpS_B*~@~kOR$esy64&٢JIu4Y;4\9;`BU (3'iGA &ښLv7*IlXY}X2NDSJ()-d%kb,WW'tޑd'=8L.-du3({74ثOw@s|KHt5/+bVtL'1?J]onGAj tG{۾Yu+SCKNX=Bnoa:D,U$l982]uN + +e5;uxhBwwQu3O#bb3:-`TX9I>a'uJ"\bH[DaX~ngǖoqBsfNŐcR +V.N )dT`'mx`w&ɮoyӵwQ?X7D+415(6l5lS ]-_7L?d<޺Ete(B@몈;؂c ( _яHjPa QHL3t4w)׿KAyQl|~SC- 0F22 WXj#-/6$\eVfkZ/o81P)i?#^QJf_8P捿d=n̰҅r-M &R +endstream +endobj +9824 0 obj << +/Type /Page +/Contents 9825 0 R +/Resources 9823 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9827 0 R +/Annots [ 9814 0 R 9815 0 R 9816 0 R 9817 0 R 9818 0 R 9819 0 R 9820 0 R 9821 0 R 9822 0 R ] +>> endobj +9814 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.294 716.535 296.951 727.117] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9815 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.398 700.722 191.05 709.493] +/A << /S /GoTo /D (general_rpcManual) >> +>> endobj +9816 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 552.434 169.4 563.016] +/A << /S /GoTo /D (general_rpcManual) >> +>> endobj +9817 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.294 493.274 296.951 503.857] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9818 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.398 477.461 191.05 486.232] +/A << /S /GoTo /D (general_rpcManual) >> +>> endobj +9819 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 317.218 169.4 327.8] +/A << /S /GoTo /D (general_rpcManual) >> +>> endobj +9820 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.294 246.103 296.951 256.686] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9821 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.398 230.29 191.05 239.061] +/A << /S /GoTo /D (general_rpcManual) >> +>> endobj +9822 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 67.875 169.4 78.457] +/A << /S /GoTo /D (general_rpcManual) >> +>> endobj +9826 0 obj << +/D [9824 0 R /XYZ 69.866 801.979 null] +>> endobj +9767 0 obj << +/D [9824 0 R /XYZ 70.866 633.576 null] +>> endobj +3314 0 obj << +/D [9824 0 R /XYZ 70.866 615.833 null] +>> endobj +9766 0 obj << +/D [9824 0 R /XYZ 70.866 410.316 null] +>> endobj +3318 0 obj << +/D [9824 0 R /XYZ 70.866 392.572 null] +>> endobj +9768 0 obj << +/D [9824 0 R /XYZ 426.701 160.973 null] +>> endobj +3322 0 obj << +/D [9824 0 R /XYZ 70.866 141.342 null] +>> endobj +9823 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F73 4716 0 R /F106 6377 0 R /F115 6693 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9839 0 obj << +/Length 2132 +/Filter /FlateDecode +>> +stream +xrί@|1XU] U>39J*TNfzpkmqfb}Y++, ++k>",~@(tZ&u=9ad_>E4YY ωPng4|[K̍# s]{Hbk=L~!nlx-6&4KY~Te4nG[N;e)ḼYL+M!' ˩vכMIϸ,HArE˂`4Ȑ=\m5Y};Ml: aWXZ"{o`!vJjj8eH?(u b?UM֤b_MB)Wd $[( 5rgOIHVdߔ9Kv+p UkF:ɥN՚fb}Rw)g?vAڿskzeATİ{@Z/kIоPB5d +X֚D;/\9CՄ iY0Q2g;<4/WYn$xoIY9yqaW6K; h*T멶li`aj +>niL:[BF (J4\~C6S½#b~CQayRx5Aj`niWG8.W{:5.72`YWȚ04xވ{h2 +tzM .%E,]WCWe! #&΢~ހ M7:;#軗l//xHfws.~0}L@$>#AY;*/gLS`nߋ-rv{ym9M{h՚Z ¡M`/֠Nc8 bԃ](ڞ.B7R(Q|0xsgT33p6s㈹7uk+`rQ׮}]^ +e&kH8q6GQwW~*_s7õ;m>o$Ne{^ݶ%v! Oa6U.UAVd'$ 躿 hKLSӡN/eד<<}޵zujl> endobj +9828 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.294 710.866 296.951 721.448] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9829 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.398 695.053 191.05 703.824] +/A << /S /GoTo /D (general_rpcManual) >> +>> endobj +9830 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.379 515.972 243.036 526.446] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9831 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.394 498.347 221.051 508.822] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9832 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.379 440.794 243.036 451.269] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9833 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.394 423.17 221.051 433.645] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9834 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [331.192 338.961 437.811 349.436] +/A << /S /GoTo /D (class_photon_view_a2a681a9becf63f444139493379e2ada7) >> +>> endobj +9835 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.365 97.562 229.022 108.037] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9836 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.404 67.983 317.079 78.457] +/A << /S /GoTo /D (interface_i_pun_callbacks_a02364f5144b6305bbffc886d530b7bd2) >> +>> endobj +9840 0 obj << +/D [9838 0 R /XYZ 69.866 801.979 null] +>> endobj +9706 0 obj << +/D [9838 0 R /XYZ 426.701 625.735 null] +>> endobj +3326 0 obj << +/D [9838 0 R /XYZ 70.866 608.583 null] +>> endobj +9769 0 obj << +/D [9838 0 R /XYZ 70.866 583.812 null] +>> endobj +3330 0 obj << +/D [9838 0 R /XYZ 70.866 583.812 null] +>> endobj +9703 0 obj << +/D [9838 0 R /XYZ 70.866 559.148 null] +>> endobj +3334 0 obj << +/D [9838 0 R /XYZ 70.866 559.148 null] +>> endobj +9704 0 obj << +/D [9838 0 R /XYZ 489.264 501.231 null] +>> endobj +3338 0 obj << +/D [9838 0 R /XYZ 70.866 484.078 null] +>> endobj +3342 0 obj << +/D [9838 0 R /XYZ 70.866 408.901 null] +>> endobj +9791 0 obj << +/D [9838 0 R /XYZ 70.866 383.998 null] +>> endobj +3346 0 obj << +/D [9838 0 R /XYZ 70.866 383.998 null] +>> endobj +9775 0 obj << +/D [9838 0 R /XYZ 70.866 316.047 null] +>> endobj +3350 0 obj << +/D [9838 0 R /XYZ 70.866 300.782 null] +>> endobj +9790 0 obj << +/D [9838 0 R /XYZ 70.866 276.011 null] +>> endobj +3354 0 obj << +/D [9838 0 R /XYZ 70.866 276.011 null] +>> endobj +9789 0 obj << +/D [9838 0 R /XYZ 70.866 253.23 null] +>> endobj +3358 0 obj << +/D [9838 0 R /XYZ 70.866 253.23 null] +>> endobj +9784 0 obj << +/D [9838 0 R /XYZ 70.866 226.823 null] +>> endobj +3362 0 obj << +/D [9838 0 R /XYZ 70.866 226.823 null] +>> endobj +9781 0 obj << +/D [9838 0 R /XYZ 70.866 202.02 null] +>> endobj +3366 0 obj << +/D [9838 0 R /XYZ 70.866 202.02 null] +>> endobj +9774 0 obj << +/D [9838 0 R /XYZ 70.866 167.285 null] +>> endobj +3370 0 obj << +/D [9838 0 R /XYZ 70.866 167.285 null] +>> endobj +9787 0 obj << +/D [9838 0 R /XYZ 70.866 142.621 null] +>> endobj +3374 0 obj << +/D [9838 0 R /XYZ 70.866 142.621 null] +>> endobj +9776 0 obj << +/D [9838 0 R /XYZ 454.592 70.866 null] +>> endobj +9837 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F82 5877 0 R /F73 4716 0 R /F115 6693 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9855 0 obj << +/Length 2148 +/Filter /FlateDecode +>> +stream +xڽYKs6Wr j>!.*גwZ(a!'$F78DeG@ wwbtn7NYNx,mܹ1ڋbö߅Z=؛2m[j~TjT__,c;0B(wD1YN̝~q8Ird/]:7F μ@7$t +cdj-8}]7QsRͶGwvnVfimsTJLF̹|-ӇZjf[<~n_߭4UomRk iUmP5pj%붊J`*Ǭijeu S ! %.*q*jVU?\%A@Pzׯ+/pUՑnK]x Bݴ2㭪r;X)gLQm 0$p8/4""zF9(2KdA٭ukt,H D0#&-E'0 'ǡ LAp r _ν?~N3-ÞHZLa*<,_AM@H&,ªfʴMv*vE]cMPҟۂ"*;ƓNH gQ|)N1|DnHF,'a81qơiTOoc} ˗|o*3"''.K@ ]]$s1=y&4Dbg| kB"<{kz*f>55tIp!*,5\:c6&u~C"2{uԄ_U_􊢑b\.NY4h:^Lum)&*{!?f)@1ZS% bgzķ/9h-*g19s 6 +$f+'vZta37`@f1K+jY]uM]6}0v,Xu ~z4An1ׅ:fS-SQt+DR)q[xf2RsQ4l`ɳӅ$m1ðTP8>?)aI^w({B%SQ׎XT3M:#xI "ې@I/USL F[Їa1)T:- w#јLr:B3 9鮣|n47Z剙N,RicF3& sZHCbڧ 1\dRqpkHkf{Ux&Ii; emGPZCU}Pf1iFp (_fTQTP +#+_QnMw.=j\`VڂcG-ܣ[\cI EDHZ=~^p/_R^:ӥŷƸÞ¥Iߛ^-4dq ٳBD3Z*#ɢ6x*~C3%=(z:@nL,z}|~뵹( 9†4JW1Pg)z 4ZlҜdToR7V}x$<нE(P8x6kjT{-m2ߩn[$L Dc1@yMݾTya>+L,dwk?`p_9ވ(DKfb7`![LUԙLtP_bw|q"xuG(y5˗i?$Y,Yo1ѷbo1~y`r_MrcsSrsi*)z<؛U^賶١l]?MV&[ᒀMM]Ig`DnͯOSwߦ bC&OYȼ(G*ȅyzF3{l5.Uf +Հ9_nTyAs 3˹]5 = +endstream +endobj +9854 0 obj << +/Type /Page +/Contents 9855 0 R +/Resources 9853 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9827 0 R +/Annots [ 9841 0 R 9842 0 R 9843 0 R 9844 0 R 9845 0 R 9846 0 R 9847 0 R 9848 0 R 9849 0 R 9850 0 R 9857 0 R 9851 0 R 9852 0 R ] +>> endobj +9841 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.024 545.123 412.216 555.706] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +9842 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [111.787 475.448 161.443 485.922] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9843 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [380.775 457.823 430.432 468.298] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9844 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.128 445.868 197.497 456.343] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9845 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [111.787 363.223 161.443 373.805] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9846 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.917 263.968 183.574 274.442] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9847 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.394 234.388 221.051 244.863] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9848 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [288.978 216.764 415.386 227.238] +/A << /S /GoTo /D (class_photon_view_a484df6eca8208330c00c317334dd8115) >> +>> endobj +9849 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.256 204.701 220.913 215.283] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9850 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.227 204.701 525.406 215.283] +/A << /S /GoTo /D (interface_i_pun_callbacks_a02364f5144b6305bbffc886d530b7bd2) >> +>> endobj +9857 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 192.854 201.102 203.328] +/A << /S /GoTo /D (interface_i_pun_callbacks_a02364f5144b6305bbffc886d530b7bd2) >> +>> endobj +9851 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.196 85.499 173.853 96.081] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9852 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.398 69.686 177.152 78.457] +/A << /S /GoTo /D (general_instantiateManual) >> +>> endobj +9856 0 obj << +/D [9854 0 R /XYZ 69.866 801.979 null] +>> endobj +3378 0 obj << +/D [9854 0 R /XYZ 70.866 771.024 null] +>> endobj +9777 0 obj << +/D [9854 0 R /XYZ 288.844 706.772 null] +>> endobj +3382 0 obj << +/D [9854 0 R /XYZ 70.866 689.39 null] +>> endobj +9779 0 obj << +/D [9854 0 R /XYZ 70.866 664.712 null] +>> endobj +3386 0 obj << +/D [9854 0 R /XYZ 70.866 664.712 null] +>> endobj +3390 0 obj << +/D [9854 0 R /XYZ 70.866 640.003 null] +>> endobj +9812 0 obj << +/D [9854 0 R /XYZ 70.866 612.93 null] +>> endobj +3394 0 obj << +/D [9854 0 R /XYZ 70.866 612.93 null] +>> endobj +8942 0 obj << +/D [9854 0 R /XYZ 70.866 588.914 null] +>> endobj +3398 0 obj << +/D [9854 0 R /XYZ 70.866 588.914 null] +>> endobj +9813 0 obj << +/D [9854 0 R /XYZ 70.866 534.272 null] +>> endobj +3402 0 obj << +/D [9854 0 R /XYZ 70.866 518.778 null] +>> endobj +9811 0 obj << +/D [9854 0 R /XYZ 419.642 448.752 null] +>> endobj +3406 0 obj << +/D [9854 0 R /XYZ 70.866 431.37 null] +>> endobj +9793 0 obj << +/D [9854 0 R /XYZ 70.866 407.014 null] +>> endobj +3410 0 obj << +/D [9854 0 R /XYZ 70.866 407.014 null] +>> endobj +9794 0 obj << +/D [9854 0 R /XYZ 175.161 324.68 null] +>> endobj +3414 0 obj << +/D [9854 0 R /XYZ 70.866 307.298 null] +>> endobj +9795 0 obj << +/D [9854 0 R /XYZ 338.615 195.737 null] +>> endobj +3418 0 obj << +/D [9854 0 R /XYZ 70.866 178.355 null] +>> endobj +9792 0 obj << +/D [9854 0 R /XYZ 70.866 153.999 null] +>> endobj +3422 0 obj << +/D [9854 0 R /XYZ 70.866 153.999 null] +>> endobj +9773 0 obj << +/D [9854 0 R /XYZ 70.866 128.968 null] +>> endobj +3426 0 obj << +/D [9854 0 R /XYZ 70.866 128.968 null] +>> endobj +9858 0 obj << +/D [9854 0 R /XYZ 181.141 70.866 null] +>> endobj +9853 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9877 0 obj << +/Length 1721 +/Filter /FlateDecode +>> +stream +xXKs6WpC +@;8''-6U.EułI`޵׳Iz J(fW^QE^RoVx>;/JGU4 X R +wf6kD`+H/3IPBC/_.`w<4Vf YXo#Ĉ2?ցG(J aj;Aa2?-MQ*Y49>ȹQ$HބT'SÝG )?\g=LW\wK+4s@55; Nt! dm`j(fiL Bʛs@*s _ι{3@n$Bq:JϔYrX1; μ؏')&e HzНzܩI + eV9f]S%Fu| | G\PMAlA)FABIBY- ê- +X+waLw%>1'´PpK +b0^MK0y~Y2\zX5Ȱt~;ކve8$r9_f +?t'uq)E__1Ҟ\U#P.:njpzOc߆h+b6DP0d(!߀o PJcsqm!t3nf +]e T$\.%o{>mU @]7H֓jMv4mk4 ܖ}c(|]D Ҳ8P{({u_wo3F0>iP('O-2eM?} DpinEO.d᮸˶SlBWںL!qPf}zD ]@ ahNOG>?nK!ľn{6:I2f]6̪Σf15yWwkwp?߰d_s ۳9czQɼ>ȫwY+5wjPgL#Lξ}ݪ2&3yMuƢٜ]&tZ cLo<6DW?tpu+n a/_ :'N4ُ);+_\Bц!KץPg S0Nw} 8̦q/<G DH4`Gсog}]f)&n6!+_Bq?k_o>p۾cڮknBL +endstream +endobj +9876 0 obj << +/Type /Page +/Contents 9877 0 R +/Resources 9875 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9827 0 R +/Annots [ 9859 0 R 9860 0 R 9861 0 R 9862 0 R 9863 0 R 9864 0 R 9865 0 R 9866 0 R 9867 0 R 9884 0 R 9868 0 R 9869 0 R 9870 0 R 9871 0 R ] +>> endobj +9859 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.87 654.306 188.098 664.888] +/A << /S /GoTo /D (class_ping_mono_editor_a2e854f702a4ced545a5b4405a511941e) >> +>> endobj +9860 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.87 626.622 172.291 637.097] +/A << /S /GoTo /D (class_ping_mono_editor_a4bcf82f6d83763d40da8a8b91a602245) >> +>> endobj +9861 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.143 613.723 182.522 624.198] +/A << /S /GoTo /D (class_ping_mono_editor_ae09a896c196c491b286e42b4bae1b5ff) >> +>> endobj +9862 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.216 317.891 164.622 346.271] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9863 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [101.897 220.604 197.407 230.518] +/A << /S /GoTo /D (class_photon_1_1_mono_behaviour) >> +>> endobj +9864 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.848 220.604 276.964 230.518] +/A << /S /GoTo /D (interface_i_pun_callbacks) >> +>> endobj +9865 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 162.314 235.369 172.788] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_addc4f79164cd22c37d330b5ee2e340c7) >> +>> endobj +9866 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.372 147.514 493.017 157.237] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a17686ad2c9bfdf6e64b8883792c81fee) >> +>> endobj +9867 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [504.905 147.514 525.406 157.237] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) >> +>> endobj +9884 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 136.652 188.451 146.278] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) >> +>> endobj +9868 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 123.564 193.075 134.039] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a4e9e2aebcfa279a2eec0020f0e44b57a) >> +>> endobj +9869 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 95.773 240.901 106.248] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a53833ef0f9be9906694fc600acc1b897) >> +>> endobj +9870 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [244.386 95.773 299.755 106.248] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9871 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 67.875 257.407 78.457] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a9fb00e512c59fa60c0a95e0d6e4dbe89) >> +>> endobj +9878 0 obj << +/D [9876 0 R /XYZ 69.866 801.979 null] +>> endobj +3430 0 obj << +/D [9876 0 R /XYZ 70.866 771.024 null] +>> endobj +9879 0 obj << +/D [9876 0 R /XYZ 70.866 694.166 null] +>> endobj +3434 0 obj << +/D [9876 0 R /XYZ 70.866 599.528 null] +>> endobj +3438 0 obj << +/D [9876 0 R /XYZ 70.866 522.438 null] +>> endobj +9880 0 obj << +/D [9876 0 R /XYZ 70.866 497.54 null] +>> endobj +3442 0 obj << +/D [9876 0 R /XYZ 70.866 497.54 null] +>> endobj +9881 0 obj << +/D [9876 0 R /XYZ 70.866 471.021 null] +>> endobj +3446 0 obj << +/D [9876 0 R /XYZ 70.866 471.021 null] +>> endobj +9882 0 obj << +/D [9876 0 R /XYZ 70.866 446.362 null] +>> endobj +3450 0 obj << +/D [9876 0 R /XYZ 70.866 446.362 null] +>> endobj +6129 0 obj << +/D [9876 0 R /XYZ 70.866 309.186 null] +>> endobj +3454 0 obj << +/D [9876 0 R /XYZ 70.866 302.524 null] +>> endobj +9883 0 obj << +/D [9876 0 R /XYZ 70.866 202.067 null] +>> endobj +9875 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F115 6693 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9933 0 obj << +/Length 2323 +/Filter /FlateDecode +>> +stream +x[[s6~ׯ>-5KtvQl2I핝C,]=Hv-H;ȶqcwgsXXQzژ" yZc\gsatŦܺ&:yK},f Wd=ul$O - 40~z?jām-d;6R{oؖ-;rkgϙq9Ė,t?KOv9OYIqېbA"VH"Wo'g$qEVElsz<[J`kn=l3p5yo^m⒋(ޒHEvʲ(EJNsy7K<wϙZ|wE F1s<ޯt@ɷmRS70 r8lCs*K+5 β1h#⚓u=uW]<:|TD`bZ4 3CqxF{ayHrn +_:E0,A[Ɗ$>>vbAӮjw㵆͌[T{m;= +i'挦Xo֖Vuϗ㌃}6Sk;M +\W@ + +ON+wU ~"Kyv+%iCQ\ ogl|1c$0)xMD`iɾ,%۞xBZTd+"dS"]橱|#l3Tv7~Ժܳ,vDG [n)ɿcQn AW=b +53!DK:H;^ kE^PƱSN6Txa[zGr%FKRytLc vz8K DĨg*~pXH.zo G5j~Ex]XRd_`kl<#<]qȱt vE#_ʒhGGD%J{zG9*q[mNPNΪN,%f vw- +{NRzV󆊚"F,P*KZlB s=OhUz<B m/l-PVAohFs(Ф* ++hfTXj3_™#׫Ϸe*> endobj +9872 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.322 758.269 215.427 767.992] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da942b62b9b9c5fa148dfe59f3488d4d08) >> +>> endobj +9873 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.789 758.269 380.998 767.992] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +9874 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 745.015 246.944 755.597] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ac808cb2ed21bbbe52a0d33f4d927644e) >> +>> endobj +9885 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.322 730.167 206.01 739.89] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da5988ddff3f148ce684fbbdb8f68896c1) >> +>> endobj +9886 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.372 730.167 371.581 739.89] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +9887 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 717.02 210.012 727.494] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a67049b5cdc50467f4790aca093c34e82) >> +>> endobj +9888 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [302.344 702.161 365.771 711.787] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a8ee05dd443b9e51ddf962e655ca8ab77) >> +>> endobj +9889 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 688.917 204.776 699.392] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a17686ad2c9bfdf6e64b8883792c81fee) >> +>> endobj +9890 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.504 673.962 523.162 683.685] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_aa45db114fa51d09929389bf0620f3150) >> +>> endobj +9891 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 660.815 193.317 671.289] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a0c64cd0591992e70393d719e07e09f6f) >> +>> endobj +9892 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 632.712 258.752 643.187] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a03bc6b8a9fffa6a7e7b43ff793ad2b28) >> +>> endobj +9893 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.238 632.712 334.49 643.187] +/A << /S /GoTo /D (group__public_api_gad61b1461cf60ad9e8d86923d111d5cc9) >> +>> endobj +9894 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.556 617.853 243.121 627.48] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9895 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [504.905 617.853 525.406 627.48] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) >> +>> endobj +9935 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 606.894 209.238 616.521] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) >> +>> endobj +9896 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 593.651 257.452 604.125] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) >> +>> endobj +9897 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.876 578.695 263.441 588.418] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 565.548 213.554 576.023] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a44be8bdd38ea28a1f540d38aede43bde) >> +>> endobj +9899 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.039 565.548 289.291 576.023] +/A << /S /GoTo /D (group__public_api_gad61b1461cf60ad9e8d86923d111d5cc9) >> +>> endobj +9900 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [456.02 550.592 525.406 560.316] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) >> +>> endobj +9936 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 539.73 160.352 549.357] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) >> +>> endobj +9901 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 526.379 223.99 536.961] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a2f6b448cd6a97e4281d543196872d29a) >> +>> endobj +9902 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.476 526.379 308.945 536.961] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +9903 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.087 511.531 515.759 521.254] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +9904 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 498.384 258.125 508.859] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_aa45db114fa51d09929389bf0620f3150) >> +>> endobj +9905 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.755 483.428 416.012 493.151] +/A << /S /GoTo /D (class_photon_network_a8ad64b1a76c7918bbe5642639afff458) >> +>> endobj +9906 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 470.281 204.534 480.756] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a8ee05dd443b9e51ddf962e655ca8ab77) >> +>> endobj +9907 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 442.179 250.943 452.653] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_abfe94f562c7abc261b25b0df95852a17) >> +>> endobj +9908 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.429 442.179 309.797 452.653] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9909 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.447 427.32 347.477 436.946] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9910 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 414.076 261.9 424.551] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_af2f8ef712d9942f861f3357bb548e937) >> +>> endobj +9911 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [265.385 414.076 320.754 424.551] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9912 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.847 399.217 330.878 408.844] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +9913 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 385.866 256.914 396.448] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a94f901ce1a7af7b6c49937c5c47ceae4) >> +>> endobj +9914 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.345 371.018 380.555 380.741] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +9915 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 357.871 234.355 368.346] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) >> +>> endobj +9916 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.72 343.012 525.406 352.639] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +9937 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 332.053 132.682 341.68] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +9917 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 318.81 255.866 329.284] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_adcef9694244295ad493bc4ec0b4463d4) >> +>> endobj +9918 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 290.599 315.024 301.182] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_abf25d63a39ef13cb9a0519e6e7672a2f) >> +>> endobj +9919 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.51 290.599 360.689 301.182] +/A << /S /GoTo /D (namespace_photon_ac2f4b49a218ef814d00e31cd5f32bf4e) >> +>> endobj +9920 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [491.905 275.751 525.406 285.475] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +9938 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 264.889 187.95 274.516] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +9921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 251.538 285.185 262.12] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_aaec2f5973228b99c6ad781d5cedadb6f) >> +>> endobj +9922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 223.543 227.191 234.018] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a443380e89534a70dfe4ce7ca16083035) >> +>> endobj +9923 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.71 208.684 482.812 218.311] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +9924 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 195.333 265.611 205.915] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ade038a534b66b6d9a5faad53e21e22c9) >> +>> endobj +9925 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 167.23 282.011 177.812] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a8a96aacb06c73f7cb25fe798ce01529a) >> +>> endobj +9926 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 139.235 228.68 149.71] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_abddb6286cecb1409cbca26088328e86d) >> +>> endobj +9927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 111.133 230.446 121.607] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a943727ed00dbd38afc4b7d16c9c3454d) >> +>> endobj +9928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [296.801 96.274 341.692 105.9] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +9929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.253 83.03 243.142 93.505] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a945651c506d001121aa81e4fc8010a42) >> +>> endobj +9930 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.347 68.074 509.812 77.798] +/A << /S /GoTo /D (class_photon_network_abdced09cccf61ae817cb97705ffce137) >> +>> endobj +9934 0 obj << +/D [9932 0 R /XYZ 69.866 801.979 null] +>> endobj +9931 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9960 0 obj << +/Length 2319 +/Filter /FlateDecode +>> +stream +xYKsFW| XeB7mRvco$}hPk@))u_@V352 gq0[^q)27H#k$@)(\E#DD!L 'f ˜,%+&[+7 W]~scǴ]Uݙwzs[P"3杩\tI|`ozT[ƣY xN3Cu9bnbj̕CYE +>\c +c(:}I2byNM%D;4^fZXf*>!gTD`!%'=vwXU[X=_z*>^=O͍t '/زL೵ +qI6Y5CnB"Rb :68MZm'^ܼ=CX(+dtzd1 +1bpٿTkާ%[m i9G.x0]68 ;Y@<3 ^^|?qaڢ>4y`Td?O^ȞYȢwQ0zQ%1UpoB)M9$Mxi*Q퀽 yy]\CxV66B&r`O+> endobj +9939 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.273 629.796 222.389 640.271] +/A << /S /GoTo /D (interface_i_pun_callbacks) >> +>> endobj +9940 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.227 629.796 525.406 640.271] +/A << /S /GoTo /D (interface_i_pun_callbacks) >> +>> endobj +9963 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 617.841 110.543 628.316] +/A << /S /GoTo /D (interface_i_pun_callbacks) >> +>> endobj +9941 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.384 617.841 299.514 628.316] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour) >> +>> endobj +9942 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.947 532.657 525.406 543.132] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +9964 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 520.702 96.017 531.177] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +9943 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.568 503.078 232.438 513.552] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +9944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [263.342 503.078 333.836 513.552] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a17686ad2c9bfdf6e64b8883792c81fee) >> +>> endobj +9945 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 455.874 177.816 466.348] +/A << /S /GoTo /D (interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) >> +>> endobj +9946 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.463 397.378 490.957 407.96] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a17686ad2c9bfdf6e64b8883792c81fee) >> +>> endobj +9947 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [503.709 397.378 525.406 407.96] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) >> +>> endobj +9965 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 385.53 157.983 396.005] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) >> +>> endobj +9948 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.715 355.951 238.186 366.425] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a03bc6b8a9fffa6a7e7b43ff793ad2b28) >> +>> endobj +9949 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.134 355.951 379.305 366.425] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) >> +>> endobj +9950 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 338.326 140.364 348.801] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a17686ad2c9bfdf6e64b8883792c81fee) >> +>> endobj +9951 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.328 338.326 251.402 348.801] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) >> +>> endobj +9952 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 291.122 177.816 301.597] +/A << /S /GoTo /D (interface_i_pun_callbacks_aa9014980a1dc2d9befc6129668c890a2) >> +>> endobj +9953 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [503.709 232.626 525.406 243.209] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) >> +>> endobj +9966 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 220.779 181.08 231.253] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) >> +>> endobj +9954 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 173.575 177.816 184.049] +/A << /S /GoTo /D (interface_i_pun_callbacks_a49f4cfb7c0e2c51ec71b8f52c7413b31) >> +>> endobj +9955 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [284.753 115.186 355.006 125.661] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a8ee05dd443b9e51ddf962e655ca8ab77) >> +>> endobj +9956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.785 97.562 453.428 108.037] +/A << /S /GoTo /D (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74) >> +>> endobj +9961 0 obj << +/D [9959 0 R /XYZ 69.866 801.979 null] +>> endobj +9962 0 obj << +/D [9959 0 R /XYZ 70.866 775.009 null] +>> endobj +3458 0 obj << +/D [9959 0 R /XYZ 70.866 753.748 null] +>> endobj +3462 0 obj << +/D [9959 0 R /XYZ 70.866 602.876 null] +>> endobj +7883 0 obj << +/D [9959 0 R /XYZ 70.866 577.834 null] +>> endobj +3466 0 obj << +/D [9959 0 R /XYZ 70.866 577.834 null] +>> endobj +7884 0 obj << +/D [9959 0 R /XYZ 70.866 456.87 null] +>> endobj +3470 0 obj << +/D [9959 0 R /XYZ 70.866 440.909 null] +>> endobj +7905 0 obj << +/D [9959 0 R /XYZ 70.866 292.119 null] +>> endobj +3474 0 obj << +/D [9959 0 R /XYZ 70.866 276.157 null] +>> endobj +7906 0 obj << +/D [9959 0 R /XYZ 70.866 174.571 null] +>> endobj +3478 0 obj << +/D [9959 0 R /XYZ 70.866 158.61 null] +>> endobj +9958 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F95 6017 0 R /F106 6377 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9983 0 obj << +/Length 2426 +/Filter /FlateDecode +>> +stream +xYmܶBɗh/Ի@r3mb׹(J]Zi#J9E{g۞3;9Ùgrgpu8 Kwn$8X$y&,H/N+~P{GQw,ֶFݭwULAS"X}vJvI/p;Oތ<8A0\:StAH0psa~\{ܭ;[mIUVƹa=p>؞cSHp-uc~խ!v.v,}8p+hwkcmM݇cjz͋ {U$u˲mWo<4ת\YN ]!XV5յ{*T +[memM3dju]2PMRذw"eUn.eYnTiW_q C~^e V<7s !"d 'uک 2 q٫m}gt-2uuˢT +^ +AO}q-D89F,#89g(rIi-ѭvxd/3w&b3.Ia ~[e~7Gm(`;/b³3>\p? !dF%,gJmjXgPe:7A|Y]U*kT@wM|{\tgh$#Z)[@oU)c>Æʼa]Ze5^Arak.:,ju> :lde n> 8U.*ޢjϡNĂ>T~,[$Dp [+.[SF`0ԭi?;y0zP4Ap@KMmv&0=;8(._c8RxO^]䄅H jM2^&f6GA)^ɪ]Uh>L՟&LM\nfSMiq4b)֊,mxN͋#nWRﷵl E Dc}{%8j|:l|@K=B/d +!e֖Rq04Y QJ];RA+%x4( ' !.Kj=N/:DhYC,*dYfNeEr_[0OLf1*[cصT0(--N00smI@0>Ctm>4*X!J/4q q$GE)bO)"Ծ"QXW%WE@4<.&P{![Y@8+`C^X6bXK =\9e|BK?>$X-ŀ՘;`P{Vy^K*)2;CKl[mSYʶ`cVsT$-z#aZ] sVul R-@Kae'} +wbi}N[+Zz"bΡFr@i?TCϖh Ÿ?6(0|N +΄8@Miٖ~ҹ&Z՜Cw]tF$ 3 #^=n= [U Gd`^O  +B6y|pq CFmÀE›c5"cL~"/3$`HY=e/;ɟcv`ۻEp|& Vx);q3ol5 XVV<1MqOa, *bsl!(ze_0||L^nݫ\kiEj[Q%Ygϣi$O, yBL'9! ^p֪ޕ- ؕ NXܐнN)b8p '+ {,!,fM_Gn1¿bd &QDRlvO+ق"9σל7&T\URgarU H.U a9 +endstream +endobj +9982 0 obj << +/Type /Page +/Contents 9983 0 R +/Resources 9981 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9986 0 R +/Annots [ 9957 0 R 9967 0 R 9968 0 R 9969 0 R 9970 0 R 9971 0 R 9972 0 R 9973 0 R 9974 0 R 9985 0 R 9975 0 R 9976 0 R 9977 0 R 9978 0 R 9979 0 R ] +>> endobj +9957 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.99 758.07 496.609 768.652] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a53833ef0f9be9906694fc600acc1b897) >> +>> endobj +9967 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 728.598 177.816 739.072] +/A << /S /GoTo /D (interface_i_pun_callbacks_a5d06d8035078d422f08b0c72c97ab136) >> +>> endobj +9968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.169 632.725 228.663 643.199] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a17686ad2c9bfdf6e64b8883792c81fee) >> +>> endobj +9969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.627 632.725 339.701 643.199] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) >> +>> endobj +9970 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [346.593 585.521 402.384 595.996] +/Subtype/Link/A<> +>> endobj +9971 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 515.98 177.816 526.455] +/A << /S /GoTo /D (interface_i_pun_callbacks_a9b55ef4a99252e1a9a111a3f88b61e1d) >> +>> endobj +9972 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 331.369 177.816 341.843] +/A << /S /GoTo /D (interface_i_pun_callbacks_af7c05722b8d15402bdb1a4e08850d989) >> +>> endobj +9973 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.899 264.968 241.305 275.55] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9974 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [458.358 247.451 525.406 257.925] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a44be8bdd38ea28a1f540d38aede43bde) >> +>> endobj +9985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 235.496 91.83 245.97] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a44be8bdd38ea28a1f540d38aede43bde) >> +>> endobj +9975 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.778 235.496 234.249 245.97] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a03bc6b8a9fffa6a7e7b43ff793ad2b28) >> +>> endobj +9976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 217.871 177.816 228.346] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) >> +>> endobj +9977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.24 151.578 224.646 162.052] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +9978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 139.623 193.041 150.097] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) >> +>> endobj +9979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 92.419 177.816 102.893] +/A << /S /GoTo /D (interface_i_pun_callbacks_a12268b49cbab2203f8b664c7bef4655a) >> +>> endobj +9984 0 obj << +/D [9982 0 R /XYZ 69.866 801.979 null] +>> endobj +7907 0 obj << +/D [9982 0 R /XYZ 70.866 729.594 null] +>> endobj +3482 0 obj << +/D [9982 0 R /XYZ 70.866 707.045 null] +>> endobj +7908 0 obj << +/D [9982 0 R /XYZ 70.866 516.976 null] +>> endobj +3486 0 obj << +/D [9982 0 R /XYZ 70.866 494.427 null] +>> endobj +7909 0 obj << +/D [9982 0 R /XYZ 70.866 332.365 null] +>> endobj +3490 0 obj << +/D [9982 0 R /XYZ 70.866 309.816 null] +>> endobj +7936 0 obj << +/D [9982 0 R /XYZ 70.866 218.868 null] +>> endobj +3494 0 obj << +/D [9982 0 R /XYZ 70.866 196.319 null] +>> endobj +7937 0 obj << +/D [9982 0 R /XYZ 70.866 93.415 null] +>> endobj +3498 0 obj << +/D [9982 0 R /XYZ 70.866 70.866 null] +>> endobj +9981 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F106 6377 0 R /F82 5877 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10009 0 obj << +/Length 2117 +/Filter /FlateDecode +>> +stream +xYKs6Wpz)5 H[4dԵ!` E"YX"eJfEө} djDևyy%ֹ)ɪQd +녮kUj#?K>J\*X8- "Ao", m60Rz(ZHܮ9vYVl2;&eRcp6j@`y$R7#4Z ̶z +@fHOD;~ոݯbMhBeLFʛ< +p6`ĚWxQ\i; o'èr&yB`Iw'v߽U +Ls\;5@!_2^ZQ$I6(!{ƔreI +!<5d6Ab|B2 )Tҥs[c`OZYQ$k+WU9^RYUW2ތ]H_&>2gq]ѮFd@]80ҊD?*g|Nzϥ@tny,#WLT5zSKrH5*}wʢ4t6kU+Ml`R߲ %]I_(JlCNoՄJ@έP{ H`IBMy6}ŕ:O,x`t2\&_=crP VSS!qZCfU7}S{?ڽûЩH5^z G貕D^y`Ȋ^fܼ$ve:.uCyx/s1Z+^a:l$0ylwQ@.CMàLdإ=¹| >soL,mVLܚ˚laa$=Y"^ ˶Z^?C$xJrȧg7!DѵP5{ƒ(MwܓQ,d7~Z4f*8Es8A۬w(ң6{bXtm?k5QHF{kkKe.B T3s PxKvWzUIGizvǏE{*?}(Ur⦶c7HdL&) +o|j#bm^UAD(,LlOqr(PrY?ekӧ~fZW[ =~_6 +endstream +endobj +10008 0 obj << +/Type /Page +/Contents 10009 0 R +/Resources 10007 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9986 0 R +/Annots [ 9980 0 R 10011 0 R 9987 0 R 9988 0 R 9989 0 R 9990 0 R 9991 0 R 9992 0 R 9993 0 R 9994 0 R 9995 0 R 9996 0 R 9997 0 R 9998 0 R 9999 0 R 10000 0 R 10001 0 R 10002 0 R 10003 0 R 10004 0 R 10005 0 R ] +>> endobj +9980 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.698 732.651 525.406 743.233] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_aa45db114fa51d09929389bf0620f3150) >> +>> endobj +10011 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 720.803 106.741 731.278] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_aa45db114fa51d09929389bf0620f3150) >> +>> endobj +9987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [120.878 703.179 244.748 713.653] +/A << /S /GoTo /D (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) >> +>> endobj +9988 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.364 703.179 378.438 713.653] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) >> +>> endobj +9989 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.521 661.536 274.364 672.119] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_aa45db114fa51d09929389bf0620f3150) >> +>> endobj +9990 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.649 661.536 411.144 672.119] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a17686ad2c9bfdf6e64b8883792c81fee) >> +>> endobj +9991 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 644.02 177.816 654.494] +/A << /S /GoTo /D (interface_i_pun_callbacks_affec2831a07b42447ac47919104c608e) >> +>> endobj +9992 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [82.333 552.245 119.204 562.827] +/A << /S /GoTo /D (class_photon_view_ad288db13a15d581e0f7c5886f4036720) >> +>> endobj +9993 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.172 534.62 522.913 544.996] +/A << /S /GoTo /D (class_photon_network_a2dc5e6cba79f899d9952f804db35b2f3) >> +>> endobj +9994 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.059 522.773 404.573 533.248] +/A << /S /GoTo /D (class_room_info_a928b103a3e88d2c090152440aa6fa874) >> +>> endobj +9995 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [438.495 522.773 514.782 533.248] +/A << /S /GoTo /D (class_room_aa9d85e54b2ff1b151de3670e87549966) >> +>> endobj +9996 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 493.193 177.816 503.668] +/A << /S /GoTo /D (interface_i_pun_callbacks_a113daf6c35e118aff8daa5537d8c1c6c) >> +>> endobj +9997 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.794 413.481 221.607 423.956] +/A << /S /GoTo /D (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74) >> +>> endobj +9998 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.555 413.481 315.788 423.956] +/A << /S /GoTo /D (class_photon_network_aa9a112ccaaf71a296b823e9637584445) >> +>> endobj +9999 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 395.857 177.816 406.332] +/A << /S /GoTo /D (interface_i_pun_callbacks_a74de405ce9dff20613c31ce891090f49) >> +>> endobj +10000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [99.629 304.082 170.123 314.665] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_a17686ad2c9bfdf6e64b8883792c81fee) >> +>> endobj +10001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.087 304.082 281.161 314.665] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) >> +>> endobj +10002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 286.566 177.816 297.04] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac6d7fe9f1dfe9aec1562c262a90f7d5b) >> +>> endobj +10003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.2 224.37 515.052 234.953] +/A << /S /GoTo /D (class_photon_network_abdced09cccf61ae817cb97705ffce137) >> +>> endobj +10004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 177.274 177.816 187.749] +/A << /S /GoTo /D (interface_i_pun_callbacks_a6922987e083f414d05464403e3b94bce) >> +>> endobj +10005 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 67.983 177.816 78.457] +/A << /S /GoTo /D (interface_i_pun_callbacks_abee2c86784a9a700b9f5b4073bd00be7) >> +>> endobj +10010 0 obj << +/D [10008 0 R /XYZ 69.866 801.979 null] +>> endobj +7938 0 obj << +/D [10008 0 R /XYZ 70.866 645.016 null] +>> endobj +3502 0 obj << +/D [10008 0 R /XYZ 70.866 625.972 null] +>> endobj +7939 0 obj << +/D [10008 0 R /XYZ 70.866 494.19 null] +>> endobj +3506 0 obj << +/D [10008 0 R /XYZ 70.866 475.146 null] +>> endobj +7940 0 obj << +/D [10008 0 R /XYZ 70.866 396.853 null] +>> endobj +3510 0 obj << +/D [10008 0 R /XYZ 70.866 377.809 null] +>> endobj +7941 0 obj << +/D [10008 0 R /XYZ 70.866 287.562 null] +>> endobj +3514 0 obj << +/D [10008 0 R /XYZ 70.866 268.518 null] +>> endobj +7968 0 obj << +/D [10008 0 R /XYZ 70.866 178.27 null] +>> endobj +3518 0 obj << +/D [10008 0 R /XYZ 70.866 159.226 null] +>> endobj +7969 0 obj << +/D [10008 0 R /XYZ 70.866 68.979 null] +>> endobj +10007 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10034 0 obj << +/Length 2098 +/Filter /FlateDecode +>> +stream +xZKsFW`U8<0hc\q\@r$"&1 +JO<@)8U{:'$"HI&%ί$"A1"ip .”l:cItKr-S|J~M7 a1G D]#4hE`@el5l픉PK4:E击RU^7o[U7v/QMg_բ-Wo(;d Y & +{ryΧ, +Xڥ= d+A'@ZI4OX֕#w%i&DƩ]zjinJ;Kݬ13c~qq6t{u$-atT.L>zw3*>Yb[Al6͠q3 !el>n +!ߨvNjhBM^}fyUªz>]\Dί31b sڃFGup;޴ n52b3!\8>>> p)a\בR$M!0=4SRId2"d6!|)!ҧ/4 ^g@Q}'Jd-0r?=,^ݏ%!X`㏐q,&qitsVn))R<_>kI>auRy>jy,>aKbg)Kq#t0W?4;/M\h+ +B^!RMmnTDUvoT]jm}w^c>#憯ZZCd1V`!fo-+jVkeT8\ gZ7v"n"/Xfwʊ҈ҭܝ.v(y6;t At1xohOY7yD(M|NcID{)? Sg"FYne>gf'$, 0X, 7@u |QԇqQߣ%gOWxpB% mSںM}o"E(C$ɋH$dG=m rYتoZdc rB [N8<6jyj9"ZB ~S6aWys2ʱ_ +g?*\=&eȈt-&/N!}MSmlJQ"U-CzMV-5=4Sm3ϳŶ/K:oNyJ0}0KTmR*Jye|)!#q5Sj= ]n?픦݄^F|=0mS> ƽ[v>B9ڬ*W}?kL_]ف +lPvxp|)6j4 E"]:&v6y蘔v~2$:TĄ1ƶmVnf'^x%^|-JƯm3KIaz8nzs.֙.2]\ߩGu eQWtÁ_ IXPkDJW.Uv<| +@+:^ /#sFOe|Cs$f綖seUM~qR90e +endstream +endobj +10033 0 obj << +/Type /Page +/Contents 10034 0 R +/Resources 10032 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9986 0 R +/Annots [ 10006 0 R 10012 0 R 10013 0 R 10014 0 R 10015 0 R 10016 0 R 10017 0 R 10018 0 R 10019 0 R 10020 0 R 10021 0 R 10022 0 R 10023 0 R 10024 0 R 10025 0 R 10026 0 R 10027 0 R 10028 0 R 10029 0 R 10030 0 R 10031 0 R ] +>> endobj +10006 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.594 733.519 328.251 743.994] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +10012 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 698.27 119.527 708.539] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +10013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.091 698.27 280.748 708.539] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +10014 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 680.538 125.238 690.914] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +10015 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.875 680.538 341.243 690.914] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +10016 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.57 644.875 224.227 656.842] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +10017 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 622.953 177.816 633.427] +/A << /S /GoTo /D (interface_i_pun_callbacks_a02364f5144b6305bbffc886d530b7bd2) >> +>> endobj +10018 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.172 565.322 187.957 575.904] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da942b62b9b9c5fa148dfe59f3488d4d08) >> +>> endobj +10019 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [328.58 565.322 371.925 575.904] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +10020 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.801 535.742 190.521 546.324] +/A << /S /GoTo /D (class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) >> +>> endobj +10021 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [260.645 500.079 303.99 512.252] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +10022 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 478.156 177.816 488.631] +/A << /S /GoTo /D (interface_i_pun_callbacks_a523ce991e9a0dcde1b57b13e4e3db38c) >> +>> endobj +10023 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 396.723 183.832 407.197] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +10024 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.963 367.036 335.926 377.618] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +10025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 297.495 177.816 307.969] +/A << /S /GoTo /D (interface_i_pun_callbacks_a3a210383eb25f1c6f509aaa23c792f6f) >> +>> endobj +10026 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.467 239.864 521.66 250.446] +/A << /S /GoTo /D (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) >> +>> endobj +10027 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 222.24 151.339 232.822] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +10028 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 192.768 177.816 203.242] +/A << /S /GoTo /D (interface_i_pun_callbacks_a28ef052b776a594b305b08d7e80b6df3) >> +>> endobj +10029 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.172 135.137 177.493 145.719] +/A << /S /GoTo /D (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da5988ddff3f148ce684fbbdb8f68896c1) >> +>> endobj +10030 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.117 135.137 361.462 145.719] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +10031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.893 105.557 231.613 116.14] +/A << /S /GoTo /D (class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) >> +>> endobj +10035 0 obj << +/D [10033 0 R /XYZ 69.866 801.979 null] +>> endobj +3522 0 obj << +/D [10033 0 R /XYZ 70.866 771.024 null] +>> endobj +7970 0 obj << +/D [10033 0 R /XYZ 70.866 623.949 null] +>> endobj +3526 0 obj << +/D [10033 0 R /XYZ 70.866 608.708 null] +>> endobj +7971 0 obj << +/D [10033 0 R /XYZ 70.866 479.153 null] +>> endobj +3530 0 obj << +/D [10033 0 R /XYZ 70.866 463.912 null] +>> endobj +7972 0 obj << +/D [10033 0 R /XYZ 70.866 298.491 null] +>> endobj +3534 0 obj << +/D [10033 0 R /XYZ 70.866 283.251 null] +>> endobj +7996 0 obj << +/D [10033 0 R /XYZ 70.866 193.764 null] +>> endobj +3538 0 obj << +/D [10033 0 R /XYZ 70.866 178.524 null] +>> endobj +10032 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F39 4678 0 R /F106 6377 0 R /F82 5877 0 R /F77 5876 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10053 0 obj << +/Length 2210 +/Filter /FlateDecode +>> +stream +xYK6ϯ-TUD|t*XvNY{\ hS gJn4@&o{n;w^_x"rR/KйZ; KYd0p]f7W8a¼tF=RyHݗ2vny[^ziA介)`,uʝšGȢr_7r^c?V H$,\hE3cUZ2KqQ/$vQ yI$i Ϣh`BTo澂Y̼(J<Y ~C6/V6y仭Q/ +ld^_8zݫ茬HGQEu4Vf&8S沫V.ЫB?pURӽz3,Fa=9 3MeYX^}%)Z;^V$QS?.0q6OhĬYW[WJRTJ%5})`jj)#V{q-?#>"eQ{kը^葎FE`C̋PwTPH? , (6d`0aU{}q=ȭ6 a |B4vwfC=4G]Ont.'RLW% t;mqO|ƴz^nاqrS* Era5@[QcxE0}j@#j:#ʈIgU4Ճ۶bӟCB\9i)g% Am %;rM0C% &M¤} 7'R"y"/XD(=M@! +aB9t2t {}mP&W/' Hv {@ڗ~}1ĨejwhDemgT r`4O`x>AG7rod+fiE؈֮H,mD޵}!׭7~=ImJo$,+;t-GpS]|p+3F^@"WjKt"e^tyZc&FЛifngRv%7h d~_ֹ~gA۞hsOX=l*'285V5Q1͡/.zMHkCnN<ӻ@`w}dИ6 -:!O޼C`P;|1Կib{QoRp5Hh3WnՁkC9Wɫѵ} k`ꟁOqxWFEދvrz+'㩮8P[*_ +13|$2ʑI,vqfbxP  <`^28'֯٤>ܯIg:3 zK $4񎱮S!<(dN2y槴G^|?p.FA{$uĔE-ldKGkn0q%f$|#[dG eS7R VLCJ/vu +endstream +endobj +10052 0 obj << +/Type /Page +/Contents 10053 0 R +/Resources 10051 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9986 0 R +/Annots [ 10036 0 R 10037 0 R 10038 0 R 10039 0 R 10040 0 R 10041 0 R 10042 0 R 10043 0 R 10044 0 R 10045 0 R 10046 0 R 10047 0 R 10048 0 R 10049 0 R 10050 0 R ] +>> endobj +10036 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.167 741.029 296.512 753.203] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +10037 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 719.107 177.816 729.582] +/A << /S /GoTo /D (interface_i_pun_callbacks_ad56f84b6647d2e61d273db297deb08b1) >> +>> endobj +10038 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.016 619.942 267.422 630.524] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10039 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.951 619.942 349.357 630.524] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10040 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 590.47 177.816 600.944] +/A << /S /GoTo /D (interface_i_pun_callbacks_a445d24c62e4e3d8bbc2cc0d25853d43c) >> +>> endobj +10041 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.311 532.947 334.679 543.421] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +10042 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.909 515.215 508.196 525.797] +/A << /S /GoTo /D (class_room_aa9d85e54b2ff1b151de3670e87549966) >> +>> endobj +10043 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 485.743 177.816 496.217] +/A << /S /GoTo /D (interface_i_pun_callbacks_a14eede4f84e088008e59fe63efb8775d) >> +>> endobj +10044 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [260.867 428.219 316.236 438.694] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +10045 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 381.016 177.816 391.49] +/A << /S /GoTo /D (interface_i_pun_callbacks_aa200001beb114a07eac4b9442e2b793e) >> +>> endobj +10046 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.38 281.958 195.748 292.432] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +10047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.963 210.736 364.94 221.318] +/A << /S /GoTo /D (class_photon_player_af8815abb8edaafbe6bddbf328f9612fb) >> +>> endobj +10048 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [96.769 170.124 437.69 179.231] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour_aaec2f5973228b99c6ad781d5cedadb6f) >> +>> endobj +10049 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.389 159.165 157.94 168.272] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +10050 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.38 159.165 426.93 168.272] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +10054 0 obj << +/D [10052 0 R /XYZ 69.866 801.979 null] +>> endobj +7997 0 obj << +/D [10052 0 R /XYZ 70.866 720.103 null] +>> endobj +3542 0 obj << +/D [10052 0 R /XYZ 70.866 704.863 null] +>> endobj +7998 0 obj << +/D [10052 0 R /XYZ 70.866 591.466 null] +>> endobj +3546 0 obj << +/D [10052 0 R /XYZ 70.866 576.226 null] +>> endobj +7999 0 obj << +/D [10052 0 R /XYZ 70.866 486.739 null] +>> endobj +3550 0 obj << +/D [10052 0 R /XYZ 70.866 471.498 null] +>> endobj +8025 0 obj << +/D [10052 0 R /XYZ 70.866 382.012 null] +>> endobj +3554 0 obj << +/D [10052 0 R /XYZ 70.866 366.771 null] +>> endobj +10051 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F39 4678 0 R /F95 6017 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10077 0 obj << +/Length 2322 +/Filter /FlateDecode +>> +stream +xY[sH~" 4oV87'*N?%Fdpc{yir!"oENu9BDA`ԺL+;rx2uȾXMY8W컬TqZ5gb>(]eMC6|wpryEȉ\JVWJ;8^Yr0߃vn}:*ećQQ(S]L\_FTJZJf0r\o-A0+Cǖ 91 H]( z!z%<\: K*` +8"Űj_OԠ bND3UOs`R'6Ny#ҋ\׻:Lu/M.~\ +=ܱZggU/j/v[`;hB5֠n2QQdɋГ> =+s 9nkLg,Şmݘtc' + [Çy1kQP oޮֹXw< r0ͷrXS/t q/Blx>r#R kTÚB}AtweVSy =+aB1H+ VDYOP7>Y}_/tbtI˨3 9pR5@STz`-gMV&̚aRV@e(*`j1Q}!HkMZڑIU1X|] &EnZgl~F,W:y%oR ^Gs\J|Kl~iMb@Cm&7wӂ.\Zi5HZVPގl^vv:J~%mVSe}ƹlzJ/2ִ'yO(Ds—\zJ|,β] 0 2DE'ۂ>:yB3{ś,x䛺4v<@ x/7NTxziG8.<;ㅛ=_뉉RޢQڦN*dm fԋ& XB1*F4d0HDv'yV7SE 307A< +`&IGX1aofi*zbHer"R%.$~떗|FՄq>֧FGR>`ƄI¹:YNxggXV|$mfmMEoKRsNԥgT>Lh {R{3yDa>7˲p d$Ԏ W +M;%=b2U&z^?Vl=dKvK=/3<Aڟ$/UQCFBȲs-(НmbR I\[yhA8J {jd= gb?Eם(-@1^gY&s6qQPPF9W HF~q3['.{70*<<͠h1#0PL4`@/pBHǟq fa`}^x4 ƒ.'<.$e枬!Iupċh2eLf/:qϙh6[C! < >B<')0L CO˽ӫuoJi;4\sBm3$IʢQE^d;ec͋r[=AL6d=>Q@Gs0 +@¬;$a~g|%G=BҮNFD>s#1L ɬW8|A+f)e@БD/7%tv(Fgev!30 ?&dz|KOe9~"U {ѣ^AI_}\y'߲ 7p٣f:<4RA419wwՙ+Dm<*-j2(=7~y4*LK ꜶA"a>J5տJ4) yTCY = 7%Rz?vhZ_vʾZg$wxXfyYѓk1}~ AF7{ҟëu kw{x+@3Q ]2܍\.7F$Az;"mȕEh#9v>yS"~{X UEmt, +endstream +endobj +10076 0 obj << +/Type /Page +/Contents 10077 0 R +/Resources 10075 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9986 0 R +/Annots [ 10055 0 R 10056 0 R 10057 0 R 10058 0 R 10059 0 R 10060 0 R 10061 0 R 10062 0 R 10063 0 R 10064 0 R 10065 0 R 10066 0 R 10067 0 R 10068 0 R 10069 0 R 10070 0 R 10079 0 R 10071 0 R 10072 0 R 10080 0 R 10073 0 R 10074 0 R ] +>> endobj +10055 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.502 741.029 249.87 753.203] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +10056 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 707.152 177.816 717.626] +/A << /S /GoTo /D (interface_i_pun_callbacks_aa6d84e9c68f93825fb3bf453d6f5ca1b) >> +>> endobj +10057 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [328.087 643.997 371.432 654.579] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +10058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.296 614.417 304.284 625] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +10059 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.25 602.462 271.97 613.045] +/A << /S /GoTo /D (class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) >> +>> endobj +10060 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.167 566.799 296.512 578.972] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +10061 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 544.877 177.816 555.351] +/A << /S /GoTo /D (interface_i_pun_callbacks_ac0d022a7c6abd23f0039efec687eb0dc) >> +>> endobj +10062 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.432 481.722 410.829 492.304] +/A << /S /GoTo /D (class_photon_network_a8ad64b1a76c7918bbe5642639afff458) >> +>> endobj +10063 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.089 464.205 329.201 474.68] +/A << /S /GoTo /D (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) >> +>> endobj +10064 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.931 452.142 170.523 462.724] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10065 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 393.091 177.816 403.565] +/A << /S /GoTo /D (interface_i_pun_callbacks_ad3e808558f778aec6b12e950d9632506) >> +>> endobj +10066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.604 330.043 485.051 340.518] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +10067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.013 312.311 284.46 322.894] +/A << /S /GoTo /D (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) >> +>> endobj +10068 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 294.795 177.816 305.269] +/A << /S /GoTo /D (interface_i_pun_callbacks_a5dd5d351e76698a0b6665064f6282baa) >> +>> endobj +10069 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.861 214.123 281.267 224.598] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10070 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [481.562 202.168 525.406 212.642] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +10079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 190.213 112.228 200.687] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +10071 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.428 190.213 358.522 200.687] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +10072 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [444.057 172.481 525.406 183.063] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +10080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 160.633 100.276 171.108] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +10073 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.651 144.005 263.058 154.48] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10074 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.7 67.983 177.816 78.457] +/A << /S /GoTo /D (interface_i_pun_callbacks_aae3221aa2d3b999574fc55a6aaee2877) >> +>> endobj +10078 0 obj << +/D [10076 0 R /XYZ 69.866 801.979 null] +>> endobj +8026 0 obj << +/D [10076 0 R /XYZ 70.866 708.148 null] +>> endobj +3558 0 obj << +/D [10076 0 R /XYZ 70.866 688.304 null] +>> endobj +8027 0 obj << +/D [10076 0 R /XYZ 70.866 545.873 null] +>> endobj +3562 0 obj << +/D [10076 0 R /XYZ 70.866 526.029 null] +>> endobj +8028 0 obj << +/D [10076 0 R /XYZ 70.866 394.087 null] +>> endobj +3566 0 obj << +/D [10076 0 R /XYZ 70.866 374.243 null] +>> endobj +8029 0 obj << +/D [10076 0 R /XYZ 70.866 295.791 null] +>> endobj +3570 0 obj << +/D [10076 0 R /XYZ 70.866 275.947 null] +>> endobj +6163 0 obj << +/D [10076 0 R /XYZ 70.866 68.979 null] +>> endobj +10075 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10095 0 obj << +/Length 1878 +/Filter /FlateDecode +>> +stream +xYKo6zԋ N]AP$9Z!$q9qbaW_$zsr楜;Ixw{O+'侗&!,GU޶E,UJY#jy)sgzi9v#s0a^΍:Qzq[T#9J:~e;b6_1/Ώ@ XW4.0(9 bW!sec>Fɕ!?vyN 3~S-˕^:ߊ90ܷX %M0_V\rjJ,rqE цp?8QQR30/3NZ +#/ ;{>XY@Ǣ-r{GOTܝ9#汌jV|1ϴrz3z+A'h*<教D.J|wvd/rGAH%*81cq;熑kc]=9`s>)d) X~Yr"N%/Jy!L9Q̾( M< oFK0=L\3IVHHG +0jWnU +>}wRga( +UW)!{1ʩ6ߖ2Le[ȺE.@oT._uJ>g? /sM^V' 0vd_tBo]}VM!tNW8 <`0#&/{1ã=z)vZZ|Qi̴F 8xzCђ6 (S>iqPE@|더9O&iNb$[@kL8ޙ:Q}  + ; r(YUfv x'jD깳.L{ScK-(B5?Sb1[N!-{l]z߲nKb*ND'W +<7\Lx=:w2[Τe`up7Rh&~GL%v4erss  !>"x$Ȳr"n,b( D=u z0c㱧֋0X:|xgӅVn@}-C*޽=ۛ /aQ` +h_3&%o{pu}7Yi8SF>e` FBsAJ s8^-%.: EӴ7@Z?CQ3bŏi4u=%VXQiTnFv(D)]B +endstream +endobj +10094 0 obj << +/Type /Page +/Contents 10095 0 R +/Resources 10093 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 9986 0 R +/Annots [ 10081 0 R 10082 0 R 10083 0 R 10084 0 R 10085 0 R 10086 0 R 10087 0 R 10088 0 R 10089 0 R 10090 0 R 10091 0 R 10092 0 R ] +>> endobj +10081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 525.92 152.36 536.502] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816) >> +>> endobj +10082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.86 525.92 214.155 536.502] +/A << /S /GoTo /D (class_raise_event_options_a4f5d60401abe2561ab71c9ff9290c06b) >> +>> endobj +10083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.036 498.063 170.848 508.538] +/A << /S /GoTo /D (class_raise_event_options_ab9fdfe47e82d2d049a347e7df4cef701) >> +>> endobj +10084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [112.829 459.032 165.069 469.408] +/A << /S /GoTo /D (class_raise_event_options_a2efd7020aa43343d1f07a3f8227deb6a) >> +>> endobj +10085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 431.176 156.834 441.65] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a8058430b43015a65b81946afb4017e41) >> +>> endobj +10086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.334 431.176 198.957 441.65] +/A << /S /GoTo /D (class_raise_event_options_a0df0c168fd813e5041f1b0afc6826a75) >> +>> endobj +10087 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.036 392.252 189.793 402.727] +/A << /S /GoTo /D (class_raise_event_options_a3fff0d28599564c9d69c147ea39682d6) >> +>> endobj +10088 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 355.113 195.676 363.597] +/A << /S /GoTo /D (class_raise_event_options_a389e7e5b0df4ce93ba2731a51abc560b) >> +>> endobj +10089 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 325.364 146.872 335.633] +/A << /S /GoTo /D (class_raise_event_options_aceba8258488a041c9b52df3bf485830c) >> +>> endobj +10090 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.074 267.401 233.584 277.875] +/A << /S /GoTo /D (class_raise_event_options) >> +>> endobj +10091 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.084 267.401 264.213 277.875] +/A << /S /GoTo /D (class_raise_event_options_af1fcb68ddd5f76876c8448de8b5ecb4d) >> +>> endobj +10092 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.199 267.401 369.709 277.875] +/A << /S /GoTo /D (class_raise_event_options) >> +>> endobj +10096 0 obj << +/D [10094 0 R /XYZ 69.866 801.979 null] +>> endobj +3574 0 obj << +/D [10094 0 R /XYZ 70.866 771.024 null] +>> endobj +3578 0 obj << +/D [10094 0 R /XYZ 70.866 699.586 null] +>> endobj +8584 0 obj << +/D [10094 0 R /XYZ 70.866 653.402 null] +>> endobj +3582 0 obj << +/D [10094 0 R /XYZ 70.866 636.908 null] +>> endobj +10097 0 obj << +/D [10094 0 R /XYZ 70.866 565.884 null] +>> endobj +10098 0 obj << +/D [10094 0 R /XYZ 70.866 307.257 null] +>> endobj +3586 0 obj << +/D [10094 0 R /XYZ 70.866 228.86 null] +>> endobj +3590 0 obj << +/D [10094 0 R /XYZ 70.866 167.417 null] +>> endobj +10099 0 obj << +/D [10094 0 R /XYZ 70.866 142.61 null] +>> endobj +3594 0 obj << +/D [10094 0 R /XYZ 70.866 142.61 null] +>> endobj +9012 0 obj << +/D [10094 0 R /XYZ 257.596 70.866 null] +>> endobj +10093 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10117 0 obj << +/Length 1578 +/Filter /FlateDecode +>> +stream +xڵXK6WTjԃGI.bYm5r(n Q g87pfz2zyNBRg2wbJΝ8 gdܹ |olj{#p|^fMN=F]Q*$`ìXO.'#a$!:jtwO|{P1+'KvLjZ)#=ԏv/pFf lQJZd3YcV8O v7YшoR6j 1֥>*og,%&r6XF~ IAft;kTޠԆU-<xlI/.)+ѳW8{ˢZvB~JmGBm +H7 r%k\NuY`E#HVZKg"ruf(-v8I { C.f!Eߓ 2c( 3fF|U( ]J0Ľ H!Ժ|^6cR6koCoN؇`J֛1M<rb˩i-h%<249N+O3Zmӛe/+ +-je:Sv+;2TERj"[_VIg@ZD*[ATv~ĸr[Q;U+Z7SVBF#LTNtB +iR[HѠjrQ[ͩ?/4fb/:+/ |Y}n7ikTLEY_;\vRn1?@ACf8!ڜoL]C7$3 +>%:~Qd^a)<|:3DsȒs~5>-J] JH<|]˦PK4hk-XYci]쯊gEK \|*,X eE -y'%~"fSK@YHZ3}д/rsb2o0 Y50,-x3q5No桏X-~6t .$UF݁dUCXȊʞ`cؙNR]m:-g6݊Ʀapx^/ui NSŠY7^4G}Gpc!"N`W5+G"/4][uK<)!{.IXdǾ899>skΑڡ$Rަ hz=U"E sa|\[08!8أG=]n3=71NT /gnZp1]G*1쐻;wB3n7R6@._ޅN㼔ɹAH qLZWNV7X3q&p)UudQ{bHڨi:H :Y5"f@N[O[-a CD1w??"@{۔x#*QMdiBXe>}ʸ ^Q*HCspgU-?A/]Om7Ƥ M*z `~) +endstream +endobj +10116 0 obj << +/Type /Page +/Contents 10117 0 R +/Resources 10115 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10122 0 R +/Annots [ 10108 0 R 10109 0 R 10110 0 R 10111 0 R 10112 0 R 10113 0 R 10114 0 R ] +>> endobj +10108 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 232.887 188.914 243.469] +/A << /S /GoTo /D (class_region_ab5ea75ba87f49f1bf46b1a257b6f4d9e) >> +>> endobj +10109 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.196 165.762 193.443 176.344] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819b) >> +>> endobj +10110 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.943 165.762 218.996 176.344] +/A << /S /GoTo /D (class_region_a8ffb04f77e0274519d29b6987c50aea0) >> +>> endobj +10111 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 98.638 170.023 109.22] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819b) >> +>> endobj +10112 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.523 98.638 193.945 109.22] +/A << /S /GoTo /D (class_region_a44c13a3119bebc2afd0295ac2ef6adb4) >> +>> endobj +10113 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 83.256 172.058 93.632] +/A << /S /GoTo /D (class_region_a5dc3538ba137c2e09e72a79e6ee5a786) >> +>> endobj +10114 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 67.875 126.671 78.251] +/A << /S /GoTo /D (class_region_a39045fbf04de42df3f1e1dbd1ec53581) >> +>> endobj +10118 0 obj << +/D [10116 0 R /XYZ 69.866 801.979 null] +>> endobj +3598 0 obj << +/D [10116 0 R /XYZ 70.866 771.024 null] +>> endobj +10107 0 obj << +/D [10116 0 R /XYZ 70.866 723.12 null] +>> endobj +3602 0 obj << +/D [10116 0 R /XYZ 70.866 702.16 null] +>> endobj +10106 0 obj << +/D [10116 0 R /XYZ 70.866 674.686 null] +>> endobj +3606 0 obj << +/D [10116 0 R /XYZ 70.866 674.686 null] +>> endobj +10101 0 obj << +/D [10116 0 R /XYZ 70.866 631.12 null] +>> endobj +3610 0 obj << +/D [10116 0 R /XYZ 70.866 610.161 null] +>> endobj +10104 0 obj << +/D [10116 0 R /XYZ 70.866 554.779 null] +>> endobj +3614 0 obj << +/D [10116 0 R /XYZ 70.866 533.82 null] +>> endobj +10105 0 obj << +/D [10116 0 R /XYZ 70.866 478.438 null] +>> endobj +3618 0 obj << +/D [10116 0 R /XYZ 70.866 457.479 null] +>> endobj +10102 0 obj << +/D [10116 0 R /XYZ 70.866 402.205 null] +>> endobj +3622 0 obj << +/D [10116 0 R /XYZ 70.866 381.245 null] +>> endobj +9168 0 obj << +/D [10116 0 R /XYZ 70.866 337.711 null] +>> endobj +3626 0 obj << +/D [10116 0 R /XYZ 70.866 315.579 null] +>> endobj +10119 0 obj << +/D [10116 0 R /XYZ 70.866 276.374 null] +>> endobj +10120 0 obj << +/D [10116 0 R /XYZ 70.866 209.249 null] +>> endobj +10121 0 obj << +/D [10116 0 R /XYZ 70.866 142.125 null] +>> endobj +10115 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10147 0 obj << +/Length 2255 +/Filter /FlateDecode +>> +stream +xYKsF Wpr)9cm~dԎSwT^\(q%H ERn'H,>VL"}G-kAd fv[Ah~aF,ʘAf#:"Gړ?O, 55"]m93‰B^Qn4s碈L>d=Ma{GY *ޡla4MgԵCJSk_RȝLmb"0þN\md_`۝ &+|V$bB-=az\WN|]XYm ;hy-@G=쁳Î[DyZD2;x ҩoD@O |?hKmYe&|X>ZIfuY$Nc:/}`tCǃx)jZG&A{y25[/4>Ҽp2:"Ly(6ĹM\JtY|14 'y*:i RV6LW%W:i5L?4grD,Z}-D0&tD-TTzJ똵OLRlE%bRBEtŒ+reAmѠp0BnUQjS4cȔd\ShA*)ʈR2_- Au}uA/J ǟ6sNI^!P}= - R ىf|nؤ I.M?hϚ.6RFcjCӁ#,  +>bdO3覿rQ7#08kd}nXd)$v0(2C?9@E8!׵#aZή&Qv  4qUM8״%Zmp~wDLO%E@#탗5 `X>z*gC9 %BtJwtHaVVwޝ>.;̳LˑS|#Br9~Jl`Y Ke4!l![pK08d\~pSɲG@Mt9k +Pʑ]\Ql`pGuֺJb#09w̒ʽ:Ԡx^$d`j6,aQ,[çh) }ZcH=8Iٙ.\@>+,t&E$4 jdW#wh 8qG}`>Fmos4=tDvm +{#o b֦?(u\. + +|l@ၚtVv|usoufD_ (P:h̏/xqJFu_V״J}Ú$(q۟pmwQk/zGXۡG< ]$]O0`-S9=U]\R}8lBÀ5l\c(A5ݏmTݶaqj1=Jn(\]˾?=E5W8Fӳu鼬X%MNqdXۉ/]f]4Y2rx2P| NJwO'x.poGB$,=>ʚe{KwVZ#T$@ [5 tuM_g-<)% _@ua5L|!,6HWU塘׾⨷ԭ9<}N@[ OO__؁.R"'lf\.hayM7;|mڻ|.5gYٗyzi0`/ +endstream +endobj +10146 0 obj << +/Type /Page +/Contents 10147 0 R +/Resources 10145 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10122 0 R +/Annots [ 10128 0 R 10129 0 R 10130 0 R 10131 0 R 10132 0 R 10133 0 R 10134 0 R 10135 0 R 10136 0 R 10137 0 R 10138 0 R 10139 0 R 10140 0 R 10141 0 R 10142 0 R 10143 0 R 10144 0 R ] +>> endobj +10128 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 536.836 110.462 547.31] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10129 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [101.897 520.996 142.489 529.686] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10130 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.149 460.976 205.706 471.451] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +10131 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.852 460.976 256.031 471.451] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10132 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [335.07 460.976 377.25 471.451] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10133 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 420.807 225.712 431.389] +/A << /S /GoTo /D (class_room_af3c714b645bb569f4b7f060a985dbf1a) >> +>> endobj +10134 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 392.808 197.693 403.282] +/A << /S /GoTo /D (class_room_ad78784268e9c07e7d345f95bd58f7bd3) >> +>> endobj +10135 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 364.594 188.914 375.176] +/A << /S /GoTo /D (class_room_ac193e5eddc588b1642b4de892d71082f) >> +>> endobj +10136 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.809 349.744 229.323 359.467] +/A << /S /GoTo /D (class_room) >> +>> endobj +10137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.083 336.487 187.462 347.069] +/A << /S /GoTo /D (class_room_a6f07e076b19abab3c30d2d7ce484538e) >> +>> endobj +10138 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.809 321.637 229.323 331.36] +/A << /S /GoTo /D (class_room) >> +>> endobj +10139 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.083 263.202 163.989 273.578] +/A << /S /GoTo /D (class_room_acd75df0fb26bd81f3345ced70740e832) >> +>> endobj +10140 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.972 235.203 163.872 245.678] +/A << /S /GoTo /D (class_room_a3908cd1b2109aae3b91027156607ccac) >> +>> endobj +10141 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.972 174.573 168.167 184.488] +/A << /S /GoTo /D (class_room_af507d1c93c87733c1a64cf00104e7501) >> +>> endobj +10142 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.418 135.047 224.183 145.423] +/A << /S /GoTo /D (class_room_a591b6c92b6ffff1c326f10dafdb7fc93) >> +>> endobj +10143 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 107.048 169.261 117.523] +/A << /S /GoTo /D (class_room_a353aed88c44abe4d35d945aef6922910) >> +>> endobj +10144 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.495 67.983 173.87 78.251] +/A << /S /GoTo /D (class_room_a6a994721651fbffbbec32be44c705642) >> +>> endobj +10148 0 obj << +/D [10146 0 R /XYZ 69.866 801.979 null] +>> endobj +3630 0 obj << +/D [10146 0 R /XYZ 70.866 771.024 null] +>> endobj +10124 0 obj << +/D [10146 0 R /XYZ 70.866 753.843 null] +>> endobj +3634 0 obj << +/D [10146 0 R /XYZ 70.866 753.843 null] +>> endobj +10123 0 obj << +/D [10146 0 R /XYZ 70.866 727.274 null] +>> endobj +3638 0 obj << +/D [10146 0 R /XYZ 70.866 727.274 null] +>> endobj +3642 0 obj << +/D [10146 0 R /XYZ 70.866 702.566 null] +>> endobj +10125 0 obj << +/D [10146 0 R /XYZ 70.866 677.726 null] +>> endobj +3646 0 obj << +/D [10146 0 R /XYZ 70.866 677.726 null] +>> endobj +10126 0 obj << +/D [10146 0 R /XYZ 70.866 651.157 null] +>> endobj +3650 0 obj << +/D [10146 0 R /XYZ 70.866 651.157 null] +>> endobj +10127 0 obj << +/D [10146 0 R /XYZ 70.866 626.449 null] +>> endobj +3654 0 obj << +/D [10146 0 R /XYZ 70.866 626.449 null] +>> endobj +6097 0 obj << +/D [10146 0 R /XYZ 70.866 601.741 null] +>> endobj +3658 0 obj << +/D [10146 0 R /XYZ 70.866 601.741 null] +>> endobj +10149 0 obj << +/D [10146 0 R /XYZ 70.866 500.937 null] +>> endobj +10150 0 obj << +/D [10146 0 R /XYZ 70.866 303.271 null] +>> endobj +10145 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10178 0 obj << +/Length 2455 +/Filter /FlateDecode +>> +stream +xڵYK8peXHQTc2\:9e,y%9N(KZI&'$HG-׋\<}MP.n6s0\DpCq^:r%vzYMÝz=G׺o@”8 f%}>z n,E-0se/FrtU ],/{_ a3^DK$-}k݂A wyK=ՆEu)pc,V4nsrsujkh{Nfءf[-}K.Ѓw+< +4VKXƨˍկO +6&wU%qy﹉J?h"?_yyOت;`s[\" =od҃JW$,nj0iqR*tJivA2qF&^m-I-IBW@1{{ۏӴ!Vt;Pn(M'm mbʓǚ#yYq].P?XQ8ۼAwł#HkM dKe'KŷT?.ypv~>|sGfx +'f ;Rm +Ί$ȺJBvd1{z9ͫ2E&bH[]JzwW҇4LmD&Qx*\6&^]n:ߣ9め-ȄNF6k݀uLxOX.aO[j]G d,OzA䇠S(,ȷ4"~_5o\ Ơa9S_ClCg^eI$⌃`)tW'KVflr[M|=39+^3v̱99sAvl3Lh;+py)g,Cpgd#g\%,h[۷L D) +SS[d +bF|z,:Sx_K9,}M} #dQ# +ǻE aZ'1kWAB6LG#ݴdYw'3<ډywW`foY<3:sA~!"ȏ[]vk^jn-Ln;gAGJ$ظ4;`73J`MYb*=[iQ2ZxD-Go37 тZՃO¼6&'y7:򤫠x]lJCp[eMB1sكI1eӛ6,ͶڊCl8 +%? o0[f:htۺ:og Mt82F%XN$gU󒭦/&1N}-V0|+߷CWDa 8 yR'e-?MW+> endobj +10161 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.495 733.576 176.371 744.051] +/A << /S /GoTo /D (class_room_a9e7c93f447ab113f8b6f8fed1502b997) >> +>> endobj +10162 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.418 704.191 188.201 714.567] +/A << /S /GoTo /D (class_room_a4451a1fa7f2f807af3b5e5ac8e65cbfe) >> +>> endobj +10163 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.273 688.756 371.838 698.479] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.083 663.955 162.5 674.331] +/A << /S /GoTo /D (class_room_ad9eb0946b646b789772238b429d6266c) >> +>> endobj +10165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.972 650.42 154.906 660.689] +/A << /S /GoTo /D (class_room_a86a1e0952d484cc7a679e141463f43c1) >> +>> endobj +10166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.972 637.131 159.694 647.046] +/A << /S /GoTo /D (class_room_a8792cdddd5a4b8933bea7adab8438edf) >> +>> endobj +10167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.418 623.028 223.187 633.404] +/A << /S /GoTo /D (class_room_a9f4957e84aefcd801a35a63f44ce42f3) >> +>> endobj +10168 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 609.493 168.535 619.968] +/A << /S /GoTo /D (class_room_a0f3fc9b00f2563209d7be0109cd9f98c) >> +>> endobj +10169 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.495 595.851 173.87 606.119] +/A << /S /GoTo /D (class_room_a3d3329a383d9cc0e4dcf10527ed42845) >> +>> endobj +10170 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.495 582.209 175.376 592.683] +/A << /S /GoTo /D (class_room_aa9d85e54b2ff1b151de3670e87549966) >> +>> endobj +10171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.418 568.459 186.937 578.835] +/A << /S /GoTo /D (class_room_ae88d660a721682a04e860c977ee13de2) >> +>> endobj +10172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 468.168 110.462 478.643] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [88.192 186.301 114.098 196.775] +/A << /S /GoTo /D (class_room) >> +>> endobj +10174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.145 186.301 203.513 196.775] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +10175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [476.438 97.454 506.844 108.037] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10179 0 obj << +/D [10177 0 R /XYZ 69.866 801.979 null] +>> endobj +10180 0 obj << +/D [10177 0 R /XYZ 70.866 548.914 null] +>> endobj +3662 0 obj << +/D [10177 0 R /XYZ 70.866 527.473 null] +>> endobj +3666 0 obj << +/D [10177 0 R /XYZ 70.866 452.298 null] +>> endobj +10152 0 obj << +/D [10177 0 R /XYZ 70.866 427.075 null] +>> endobj +3670 0 obj << +/D [10177 0 R /XYZ 70.866 427.075 null] +>> endobj +6102 0 obj << +/D [10177 0 R /XYZ 392.474 319.773 null] +>> endobj +3674 0 obj << +/D [10177 0 R /XYZ 70.866 300.912 null] +>> endobj +10176 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F95 6017 0 R /F73 4716 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10196 0 obj << +/Length 2438 +/Filter /FlateDecode +>> +stream +xZ[w۸~ׯR\oysmMcmszM2G#*C,]4i?t{ +hiц:hR7Z0Z&{FUv*NO V!^v oPB(zT +?Jsn&Re|X9/[ Py⼉sX'3<<z(jT)"O<.2dT_S/ 4 #Ew ыa-Fס.E+|?ŧZ.?&"8RajOxĝ e%v߁ 0`L n\$eCڋr\I#?v P[WbE\w sEshMa9l4 s'c]L~R%0up]3*Gti.(hOQ8ykL +9U?͑c~f`"3h7jaL񰜿k)v8b*=%G)(}8[q}KD;CIB1^X 1HE,T _ut9Z_N/*L>( +^Ə|'b܂9F;vKCnp<ϟf瞭l-l2aD'ƥ?` _C씧*>g~LUzN(|QYBneP&ED-XQZ-C(P7nD}:0]4Y$:uU;ɞm_Vu_DܭR^]Zm4^ɬoe*ۨ 89f0c΅V^ 0 ʐzUJv~uצzn>QF +F(H1|po2DŽWOO$ZqZk)j/`*DZZS5M+qޅ]%DQk&Lܵ“p]ștᒞ(G(/1Tqo}5>^Qrd]Cme1Egck@zfBNjxsa #0 +.df!>wj==憺>k^nհ!/[.vE[TF78 +endstream +endobj +10195 0 obj << +/Type /Page +/Contents 10196 0 R +/Resources 10194 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10122 0 R +/Annots [ 10188 0 R 10189 0 R 10190 0 R 10191 0 R 10192 0 R 10193 0 R ] +>> endobj +10188 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.718 645.421 215.124 656.003] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10189 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.342 610.172 206.512 620.754] +/A << /S /GoTo /D (class_photon_network_a4a1cd1887cb41a0592322527a7304ed7) >> +>> endobj +10190 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.491 314.65 203.397 325.232] +/A << /S /GoTo /D (class_room) >> +>> endobj +10191 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.833 272.592 185.738 300.865] +/A << /S /GoTo /D (class_room) >> +>> endobj +10192 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.491 206.009 203.397 216.592] +/A << /S /GoTo /D (class_room) >> +>> endobj +10193 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.833 163.952 185.738 192.224] +/A << /S /GoTo /D (class_room) >> +>> endobj +10197 0 obj << +/D [10195 0 R /XYZ 69.866 801.979 null] +>> endobj +10151 0 obj << +/D [10195 0 R /XYZ 70.866 507.269 null] +>> endobj +3678 0 obj << +/D [10195 0 R /XYZ 70.866 492.188 null] +>> endobj +10153 0 obj << +/D [10195 0 R /XYZ 70.866 375.004 null] +>> endobj +3682 0 obj << +/D [10195 0 R /XYZ 70.866 359.924 null] +>> endobj +10154 0 obj << +/D [10195 0 R /XYZ 70.866 264.476 null] +>> endobj +3686 0 obj << +/D [10195 0 R /XYZ 70.866 249.396 null] +>> endobj +3690 0 obj << +/D [10195 0 R /XYZ 70.866 149.868 null] +>> endobj +10159 0 obj << +/D [10195 0 R /XYZ 70.866 122.877 null] +>> endobj +3694 0 obj << +/D [10195 0 R /XYZ 70.866 122.877 null] +>> endobj +10185 0 obj << +/D [10195 0 R /XYZ 70.866 70.763 null] +>> endobj +10194 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F73 4716 0 R /F106 6377 0 R /F115 6693 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10203 0 obj << +/Length 1796 +/Filter /FlateDecode +>> +stream +xYKs6Wp|f,Wfrh$㌛܋EBkPI*}wP"m:&+}pntt6ND tDA1#L3ڍFgV:-r>++Yr|3},Q4yrω/8Ѕs9}D0I|KЮ)6xRwTF0cI6:-dR^Qᓷp >ŠZu͍kXLZ $>S7U^.FװƸ{ͷL]ղ{[iS"|dV} .-T{gpvi~6mr@lWž,M}Zhd[J+Lg].*U}kj+l]1Պ9׹ir/mk@lTЯ`CC)C _ "Ob|60tڦ;Sbv"k^0 {F 3inIuU%vBfoXhyt| ;8뮴8wK+5:CÞa˝[jtЊZPo.x{A10aL3DmfzAW !]Mױ%d!=glr X=sqlInoUStz$D*cGOT|~\1S5cPO[0#ÓpHH҃S Cw;WϼlwQP4NXJ0>װjOiM. =j636 hEz?}f +ſn*i{iweݦCbY`Y6w>H]+90Tr퐼Иď}0~(zw}sc! DmlW8Cm%,elSOY.78!0(:WWA[l7دqٮMcy[ gJ\_`\Y?xotb +endstream +endobj +10202 0 obj << +/Type /Page +/Contents 10203 0 R +/Resources 10201 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10122 0 R +/Annots [ 10198 0 R 10199 0 R 10200 0 R ] +>> endobj +10198 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.476 708.551 366.883 719.133] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10199 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.521 678.972 222.928 689.554] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10200 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.845 667.124 227.175 677.599] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +10204 0 obj << +/D [10202 0 R /XYZ 69.866 801.979 null] +>> endobj +3698 0 obj << +/D [10202 0 R /XYZ 70.866 771.024 null] +>> endobj +10182 0 obj << +/D [10202 0 R /XYZ 70.866 752.07 null] +>> endobj +3702 0 obj << +/D [10202 0 R /XYZ 70.866 752.07 null] +>> endobj +10187 0 obj << +/D [10202 0 R /XYZ 467.54 670.008 null] +>> endobj +3706 0 obj << +/D [10202 0 R /XYZ 70.866 652.375 null] +>> endobj +10156 0 obj << +/D [10202 0 R /XYZ 70.866 627.509 null] +>> endobj +3710 0 obj << +/D [10202 0 R /XYZ 70.866 627.509 null] +>> endobj +10157 0 obj << +/D [10202 0 R /XYZ 70.866 551.151 null] +>> endobj +3714 0 obj << +/D [10202 0 R /XYZ 70.866 535.406 null] +>> endobj +10160 0 obj << +/D [10202 0 R /XYZ 70.866 479.283 null] +>> endobj +3718 0 obj << +/D [10202 0 R /XYZ 70.866 463.538 null] +>> endobj +10186 0 obj << +/D [10202 0 R /XYZ 70.866 409.092 null] +>> endobj +3722 0 obj << +/D [10202 0 R /XYZ 70.866 393.347 null] +>> endobj +10155 0 obj << +/D [10202 0 R /XYZ 70.866 368.727 null] +>> endobj +3726 0 obj << +/D [10202 0 R /XYZ 70.866 368.727 null] +>> endobj +10183 0 obj << +/D [10202 0 R /XYZ 70.866 326.204 null] +>> endobj +3730 0 obj << +/D [10202 0 R /XYZ 70.866 310.459 null] +>> endobj +8929 0 obj << +/D [10202 0 R /XYZ 70.866 285.7 null] +>> endobj +3734 0 obj << +/D [10202 0 R /XYZ 70.866 285.7 null] +>> endobj +10181 0 obj << +/D [10202 0 R /XYZ 70.866 261.079 null] +>> endobj +3738 0 obj << +/D [10202 0 R /XYZ 70.866 261.079 null] +>> endobj +6647 0 obj << +/D [10202 0 R /XYZ 70.866 218.664 null] +>> endobj +3742 0 obj << +/D [10202 0 R /XYZ 70.866 202.919 null] +>> endobj +10158 0 obj << +/D [10202 0 R /XYZ 70.866 178.192 null] +>> endobj +3746 0 obj << +/D [10202 0 R /XYZ 70.866 178.192 null] +>> endobj +10184 0 obj << +/D [10202 0 R /XYZ 70.866 135.776 null] +>> endobj +3750 0 obj << +/D [10202 0 R /XYZ 70.866 120.032 null] +>> endobj +8928 0 obj << +/D [10202 0 R /XYZ 70.866 95.165 null] +>> endobj +3754 0 obj << +/D [10202 0 R /XYZ 70.866 95.165 null] +>> endobj +6096 0 obj << +/D [10202 0 R /XYZ 70.866 70.866 null] +>> endobj +3758 0 obj << +/D [10202 0 R /XYZ 70.866 70.866 null] +>> endobj +10201 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10231 0 obj << +/Length 1802 +/Filter /FlateDecode +>> +stream +xYK8WxSE䷩3 k!9hMb` É3,SYj%ϏCdDp{I^ǁ3tq$ԙΜ3| bIQv<},d5=>(,%eWs3P(RJ0 +(#Jh {Ѻ b<i}9+@U?~9N\:Jiʽ [8dfwۢZ{B|>3 #^r>t#zP>Q҆ƊB^A]nZRqUD)깖PJq1Ľ +#zITKCʂFFPeQqlhL -yO"}y]2T+M2a9#/ ŅV{m?d[37{s2r iv/X>$ LY?/xus$;8BKXdOm8hoyGyABr{?Ա1uvSro<7f(H%Y扼 0y>*{qj`bAf^g_T Iho vQouS#17C>4Dmryx{j\8"Ԫ13p!#)xL;q)\lm9,o1( :pnBwcZܡ_;$ma^` +8*9-o@%TvxR/BHhF}$+Uɵ}c6019Kn;ž*9@.ھ0&{$ +^5"4*t>*6ij 6`%>:-U v=Fu޽|q8^Q +#;ixaP"&j2EY.i3έ{q88ޚj_- +S%ɪ(:x>9+y +ѶnN_zI~,#B@ÍɤuˍD0W;V67 oܴEEiKhkݸ;z%E^Dl`F+,=4]5?Ʋ-w;,&zF #ټWL0B, +q,Y̓03&̦!l'ea U^f[#BFpIҞWV8UTk r?-*#N[!NTj٪Z :Oʿ +endstream +endobj +10230 0 obj << +/Type /Page +/Contents 10231 0 R +/Resources 10229 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10122 0 R +/Annots [ 10205 0 R 10206 0 R 10207 0 R 10208 0 R 10209 0 R 10210 0 R 10211 0 R 10212 0 R 10213 0 R 10214 0 R 10215 0 R 10216 0 R 10217 0 R 10218 0 R 10219 0 R 10220 0 R 10221 0 R 10222 0 R 10223 0 R 10224 0 R 10225 0 R 10226 0 R 10227 0 R ] +>> endobj +10205 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.166 700.004 145.071 710.273] +/A << /S /GoTo /D (class_room) >> +>> endobj +10206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.87 640.68 178.272 651.155] +/A << /S /GoTo /D (class_room_info_ae307da359dd23a36390aa8d0c15eed1c) >> +>> endobj +10207 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.797 625.535 171.529 635.161] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10208 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.392 612.004 200.194 622.479] +/A << /S /GoTo /D (class_room_info_a016c74172ba8d6be63ed46526e0eebd4) >> +>> endobj +10209 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 583.221 188.914 593.803] +/A << /S /GoTo /D (class_room_info_ad299fe650504477562a3cdf0609aa0eb) >> +>> endobj +10210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 554.545 168.705 565.127] +/A << /S /GoTo /D (class_room_info_a4ad3e14e919adab20770874e5b2a8e5d) >> +>> endobj +10211 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.036 479.994 181.841 490.262] +/A << /S /GoTo /D (class_room_info_a46f07a9998e906a0adb4f45bb94f1994) >> +>> endobj +10212 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.418 451.21 206.367 461.586] +/A << /S /GoTo /D (class_room_info_afa1e25ad6bf953012d67b7a7a2f35642) >> +>> endobj +10213 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 422.642 155.578 432.91] +/A << /S /GoTo /D (class_room_info_a6ee1a8dc240cfc8f983192806e751f14) >> +>> endobj +10214 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 395.751 160.366 404.235] +/A << /S /GoTo /D (class_room_info_a9fe8d4b4891f2d6e57dcd774048f2545) >> +>> endobj +10215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 365.29 187.964 375.765] +/A << /S /GoTo /D (class_room_info_ad4cd6791bdb87d9af9b2bf37bee89c90) >> +>> endobj +10216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.193 365.29 369.7 375.765] +/A << /S /GoTo /D (class_photon_network_a6c6fb3cd57d7e2a13d1fc354db0c1fd7) >> +>> endobj +10217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 336.507 163.173 346.883] +/A << /S /GoTo /D (class_room_info_a4a091adee00339d328654b93821ba49e) >> +>> endobj +10218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 262.309 185.194 272.224] +/A << /S /GoTo /D (class_room_info_af0811895b3b40f2b64d243d5fd8fd362) >> +>> endobj +10219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 233.28 136.956 243.755] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.456 233.28 211.554 243.755] +/A << /S /GoTo /D (class_room_info_af849403d0f422b62daaeb134b5e3ce54) >> +>> endobj +10221 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [323.186 218.135 425.952 227.761] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +10222 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [488.674 218.135 525.406 227.761] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10223 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 193.538 145.231 203.914] +/A << /S /GoTo /D (class_room_info_a7ae1c65429e1be34fdefd1b477fcd200) >> +>> endobj +10224 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 164.969 157.614 175.444] +/A << /S /GoTo /D (class_room_info_a9b0a35ab87c5fbe181e5ad4d87ea169d) >> +>> endobj +10225 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 136.647 191.452 146.768] +/A << /S /GoTo /D (class_room_info_adfbbe6beb22c1fb69dc2040c39162729) >> +>> endobj +10226 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.036 107.617 162.411 117.886] +/A << /S /GoTo /D (class_room_info_ace51e48417e36c6793b6530aa37cc10b) >> +>> endobj +10227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 67.983 145.115 78.457] +/A << /S /GoTo /D (class_room_info_a617c94cffce6c0adec48aa5302c2d92f) >> +>> endobj +10232 0 obj << +/D [10230 0 R /XYZ 69.866 801.979 null] +>> endobj +10233 0 obj << +/D [10230 0 R /XYZ 70.866 681.06 null] +>> endobj +10234 0 obj << +/D [10230 0 R /XYZ 70.866 520.374 null] +>> endobj +10235 0 obj << +/D [10230 0 R /XYZ 70.866 302.336 null] +>> endobj +10229 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10265 0 obj << +/Length 1743 +/Filter /FlateDecode +>> +stream +xXK8WSE$/n3 ;C2pp%10~vbg2ڪ=IZ_?2ssOO\D҉$ }gr"aDB̗ε{Do./T0Wە"mT)gU Gp4Ac'[yqB:Y9%p'P |üpN0a4:qR,L"TK$H 9Z=cR7_ٱ(;rYZɂv?RKo: D7Ktk'j5.}y՚/m@ ߒ@wN)ddy1Vn Jߨ_3KZR|Ә d+ +}ˊnveUFjim(dy,VdVUfZmfuW-l)XLꐎYWHjD"+9v~yvۼ)V3YY/ym˴iUM\ T45Ȫs`|8 jỊMP],`89:3g͓ ?H|8{BC,BwuAr0B'7 P(7L<ʾb\UaD;6 $7w\āMXR-"Aa@ƶS)HPPt~X#<{0ۤպ?.S9FqXFCI` dm?]CX| +"Qt0j0LM{-V,o›C9.Oת?pRr4-xjħ$@U{MbyE_ n{ kz2X!BH!t՝y8+rUU/!*ZCn,Ӱ2Ҫr BX B1ttDo%?ˉO DQ6j#/ |^fC3sB3f꺈c&J-$\ke;Vb6uxvBYġk7vc-}-%.{榁v83 +}`nofiOBDP ɶeM^ZY'78w K,tfHݍaV޳QWw3.aTmۊ H%m4o -hU8Y ҅7RsO)Haĭt~;aWB6aaSvyabaS) ^W-Xzջ:ɫMoy>3' %$]tE?uZ8 "/[z" +.x= :UMg'*Q0Ҋ~g[2+~denXϵyxt`L. +endstream +endobj +10264 0 obj << +/Type /Page +/Contents 10265 0 R +/Resources 10263 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10267 0 R +/Annots [ 10228 0 R 10252 0 R 10253 0 R 10254 0 R 10255 0 R 10256 0 R 10257 0 R 10258 0 R 10259 0 R 10260 0 R 10261 0 R 10262 0 R ] +>> endobj +10228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 712.026 149.41 721.941] +/A << /S /GoTo /D (class_room_info_aa738f42768356252e8a72c060dc4b49c) >> +>> endobj +10252 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 671.465 136.956 681.733] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10253 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.456 671.465 209.564 681.733] +/A << /S /GoTo /D (class_room_info_a928b103a3e88d2c090152440aa6fa874) >> +>> endobj +10254 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 657.729 143.743 668.105] +/A << /S /GoTo /D (class_room_info_a77189ececa62ba47ff70359fd2db9af5) >> +>> endobj +10255 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 644.209 156.618 654.684] +/A << /S /GoTo /D (class_room_info_a211655578d31b9fed0817cad42e8f0b5) >> +>> endobj +10256 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 630.934 190.95 641.056] +/A << /S /GoTo /D (class_room_info_a1e862ae572d36aba8d35f57241450082) >> +>> endobj +10257 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.036 616.953 162.411 627.221] +/A << /S /GoTo /D (class_room_info_a25abb4134a29834298f1c5abcfb85456) >> +>> endobj +10258 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 603.325 136.149 613.593] +/A << /S /GoTo /D (class_room_info_a870deed85986f1ca62f97ee3f50114ec) >> +>> endobj +10259 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 590.05 140.937 599.965] +/A << /S /GoTo /D (class_room_info_addfd04015dca91382c6505cf0e7171f0) >> +>> endobj +10260 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [98.589 400.332 139.181 410.807] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10261 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.833 182.425 200.425 210.698] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10262 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.833 67.983 200.425 96.255] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10266 0 obj << +/D [10264 0 R /XYZ 69.866 801.979 null] +>> endobj +3762 0 obj << +/D [10264 0 R /XYZ 70.866 574.214 null] +>> endobj +3766 0 obj << +/D [10264 0 R /XYZ 70.866 470.899 null] +>> endobj +10236 0 obj << +/D [10264 0 R /XYZ 70.866 445.683 null] +>> endobj +3770 0 obj << +/D [10264 0 R /XYZ 70.866 445.683 null] +>> endobj +10237 0 obj << +/D [10264 0 R /XYZ 70.866 401.329 null] +>> endobj +3774 0 obj << +/D [10264 0 R /XYZ 70.866 384.496 null] +>> endobj +10238 0 obj << +/D [10264 0 R /XYZ 70.866 288.773 null] +>> endobj +3778 0 obj << +/D [10264 0 R /XYZ 70.866 271.941 null] +>> endobj +10239 0 obj << +/D [10264 0 R /XYZ 70.866 172.444 null] +>> endobj +3782 0 obj << +/D [10264 0 R /XYZ 70.866 155.611 null] +>> endobj +10263 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F95 6017 0 R /F73 4716 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10282 0 obj << +/Length 1518 +/Filter /FlateDecode +>> +stream +xXKs6W顱kיqc$&$T!2cG͉ :+:8t28S0ĩOspz7#IE}Z8qdD5N~Ox@Jo3IHNVMn﨓 M{EY9a(Ds=}B.a8JY_mPZ`Ẹj!Puy3#ψZHYj郎.ԋ\IeI~@1uZvMtSguUr}z{uFN +<} /३yid"pe. 88OX@Sa |*^,IЙB "j'K +{YPJaeJ ^Qy2WE9lNJ\&]!Sհ~K{xrv\ 8Y6$HNŻl]qTg|#+Nbd؉ZąQGwm +OUƀd%6lI +T T7nwaؽ.Mi(1%keu-I)hv SY '0loZ#lsN.?H,x!7cr=UeYW1=F$0k( cZ tcޚ?{" /Oz(}2[lXM]7_X/gR!aSm4 +endstream +endobj +10281 0 obj << +/Type /Page +/Contents 10282 0 R +/Resources 10280 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10267 0 R +/Annots [ 10275 0 R 10276 0 R 10277 0 R ] +>> endobj +10275 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [302.732 321.135 416.694 331.61] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +10276 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [484.814 321.135 525.406 331.61] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10277 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 273.932 183.832 284.406] +/A << /S /GoTo /D (class_room_a9f8ac164f4f24be4140221b72792250a) >> +>> endobj +10283 0 obj << +/D [10281 0 R /XYZ 69.866 801.979 null] +>> endobj +3786 0 obj << +/D [10281 0 R /XYZ 70.866 771.024 null] +>> endobj +10244 0 obj << +/D [10281 0 R /XYZ 70.866 753.484 null] +>> endobj +3790 0 obj << +/D [10281 0 R /XYZ 70.866 753.484 null] +>> endobj +10241 0 obj << +/D [10281 0 R /XYZ 70.866 708.932 null] +>> endobj +3794 0 obj << +/D [10281 0 R /XYZ 70.866 691.649 null] +>> endobj +10240 0 obj << +/D [10281 0 R /XYZ 70.866 648.957 null] +>> endobj +3798 0 obj << +/D [10281 0 R /XYZ 70.866 631.674 null] +>> endobj +10245 0 obj << +/D [10281 0 R /XYZ 70.866 588.983 null] +>> endobj +3802 0 obj << +/D [10281 0 R /XYZ 70.866 571.699 null] +>> endobj +10242 0 obj << +/D [10281 0 R /XYZ 70.866 529.008 null] +>> endobj +3806 0 obj << +/D [10281 0 R /XYZ 70.866 511.724 null] +>> endobj +10243 0 obj << +/D [10281 0 R /XYZ 70.866 469.033 null] +>> endobj +3810 0 obj << +/D [10281 0 R /XYZ 70.866 451.75 null] +>> endobj +3814 0 obj << +/D [10281 0 R /XYZ 70.866 391.775 null] +>> endobj +10247 0 obj << +/D [10281 0 R /XYZ 70.866 364.483 null] +>> endobj +3818 0 obj << +/D [10281 0 R /XYZ 70.866 364.483 null] +>> endobj +6646 0 obj << +/D [10281 0 R /XYZ 185.329 276.815 null] +>> endobj +3822 0 obj << +/D [10281 0 R /XYZ 70.866 257.644 null] +>> endobj +10249 0 obj << +/D [10281 0 R /XYZ 70.866 232.609 null] +>> endobj +3826 0 obj << +/D [10281 0 R /XYZ 70.866 232.609 null] +>> endobj +10271 0 obj << +/D [10281 0 R /XYZ 70.866 189.778 null] +>> endobj +3830 0 obj << +/D [10281 0 R /XYZ 70.866 172.495 null] +>> endobj +10251 0 obj << +/D [10281 0 R /XYZ 70.866 147.889 null] +>> endobj +3834 0 obj << +/D [10281 0 R /XYZ 70.866 147.889 null] +>> endobj +10280 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10293 0 obj << +/Length 1686 +/Filter /FlateDecode +>> +stream +xXKs6Wpz19c!Ҥ$&'Z$6".$J\!39>FNFO^KHE7y1%IyqIļI] 28/|ꊺjebBF}ըjqi|c-$\xrtz9{Qwcf!"0cDw#F,UcA~3եRg#G,_Lݢ@Ӭ:1B#J١Vu nQpD%YEྫe .* +vlвsn֫ONNtN'Qr77v{ G-SԲ }fpAփdһWls(*qVC| +]r8*[ftù>=zx!_̺сg>Vw4"3. +3ckD]W iR"[¾F5*I{P/q<ċ0S$#N Bt#1'"jy@ $%|~X f42jE9-Kuy`rv٦<{!3^xXwn9FD7;`bM0qR54̵_5f<ϐQHbz4&1wBo0+2DYŝ +)D>y<:/t1NR$v=T${CF>q<ס#9Xxd+tzL]Q[ +TJ.7 U f׻k1 ..MWyq] *H={9r_0>^1L#Izn~mb[LOwM%TۏwYD$LjOVIЩ#%1؄7݃zH>FؐBa*";xpDp g+{tyEv @1*sϞGn}=6V@`qMw{Ih{G q^yv29؀\h$vusb? +lU7ۇ`ZWڛʩA;Do[ )KyvNplfMUU*x5+Z*P63}[?=GHs Iw*& 7YRMm+>,‘)OEN-=/Ή;Jx;nVkT|{' +endstream +endobj +10292 0 obj << +/Type /Page +/Contents 10293 0 R +/Resources 10291 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10267 0 R +/Annots [ 10278 0 R 10279 0 R 10284 0 R 10285 0 R 10286 0 R 10287 0 R 10288 0 R 10289 0 R ] +>> endobj +10278 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [111.332 758.177 151.924 768.652] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10279 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.868 758.177 295.773 768.652] +/A << /S /GoTo /D (class_room) >> +>> endobj +10284 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [111.332 658.548 151.924 669.022] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10285 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.868 658.548 295.773 669.022] +/A << /S /GoTo /D (class_room) >> +>> endobj +10286 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [111.332 558.918 151.924 569.393] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +10287 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.868 558.918 295.773 569.393] +/A << /S /GoTo /D (class_room) >> +>> endobj +10288 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.036 122.481 162.411 132.749] +/A << /S /GoTo /D (class_room_options_a62549ec6e071414957029b07705dc630) >> +>> endobj +10289 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 94.181 143.653 104.449] +/A << /S /GoTo /D (class_room_options_a2d2471ba446949054e81362057d0d8ad) >> +>> endobj +10294 0 obj << +/D [10292 0 R /XYZ 69.866 801.979 null] +>> endobj +10268 0 obj << +/D [10292 0 R /XYZ 130.626 749.106 null] +>> endobj +3838 0 obj << +/D [10292 0 R /XYZ 70.866 733.286 null] +>> endobj +10250 0 obj << +/D [10292 0 R /XYZ 130.626 649.476 null] +>> endobj +3842 0 obj << +/D [10292 0 R /XYZ 70.866 633.656 null] +>> endobj +10272 0 obj << +/D [10292 0 R /XYZ 130.626 549.847 null] +>> endobj +3846 0 obj << +/D [10292 0 R /XYZ 70.866 534.027 null] +>> endobj +8985 0 obj << +/D [10292 0 R /XYZ 70.866 507.52 null] +>> endobj +3850 0 obj << +/D [10292 0 R /XYZ 70.866 507.52 null] +>> endobj +10269 0 obj << +/D [10292 0 R /XYZ 70.866 465.003 null] +>> endobj +3854 0 obj << +/D [10292 0 R /XYZ 70.866 449.287 null] +>> endobj +10273 0 obj << +/D [10292 0 R /XYZ 70.866 424.533 null] +>> endobj +3858 0 obj << +/D [10292 0 R /XYZ 70.866 424.533 null] +>> endobj +10248 0 obj << +/D [10292 0 R /XYZ 70.866 399.918 null] +>> endobj +3862 0 obj << +/D [10292 0 R /XYZ 70.866 399.918 null] +>> endobj +10270 0 obj << +/D [10292 0 R /XYZ 70.866 357.509 null] +>> endobj +3866 0 obj << +/D [10292 0 R /XYZ 70.866 341.792 null] +>> endobj +10246 0 obj << +/D [10292 0 R /XYZ 70.866 317.07 null] +>> endobj +3870 0 obj << +/D [10292 0 R /XYZ 70.866 317.07 null] +>> endobj +10274 0 obj << +/D [10292 0 R /XYZ 70.866 274.553 null] +>> endobj +3874 0 obj << +/D [10292 0 R /XYZ 70.866 258.836 null] +>> endobj +6099 0 obj << +/D [10292 0 R /XYZ 70.866 234.543 null] +>> endobj +3878 0 obj << +/D [10292 0 R /XYZ 70.866 234.543 null] +>> endobj +10295 0 obj << +/D [10292 0 R /XYZ 70.866 162.584 null] +>> endobj +10291 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F95 6017 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10319 0 obj << +/Length 1819 +/Filter /FlateDecode +>> +stream +xY[w6~_AR" Nu6 [ %,Z!F͌غf|ꄻk~kq|,PĈ5+lz=k9 ;0Qua]OgQ-37a;9O-}S׊5bx |^,s%R 6z⾾NyA7*ROiNf$oLԪ3]rY<\E6oҁ ,R J kF8"h1O2!PlYeJ=[bG D:0B@#=~!r,p@ѭ2 ),&TY6ױ0Ppvҫe"(Ea-zjWbHrD]ZܵO1g Ͳ$MZDEhGaV6`l o˺)2 `˪(6M"ш +MtEjU.GΦZ4ƺj#n`02tgyݺ-s #gN7SmxE)W\m~eWz- q$>bLκ-.}`ل"ltNu#bK0~ty'C 4Y [tntgq;%:JTP>pXAv^՜a.*f4m!sR8un"nNeW'g,U;`m+_3vg.C4jIARnoIH k#LbэOjiW0,}HwȷBB3xD@8(4x8>vN_nCr ܲ< xnŦ!fIF%XnZdKOSX%"=0oڡyZHѮ[-g§oA;C~Yky6VM!! 2θP]2B04yj=#G-ݛ!}qP.tHP4F@󟖂q)ȡD TȆV̼-۱TDqP>KFp>,фv7I9$㓩نSCQߵˁanԒ%wCUo'|nMrfE؜L!|9 +Ϧ'^;U.4bYb7[4Z|&G+.Χ. F;*h|IAWSի|,#r͌h5fgR.ƀ ו+k9r}2}V0H:M >*) Fc%\ G~qK"ˊ|{\-HDz~aI0@c!Ko/7nԌaǑO[A!ʙnv9a$b̸*.;_z$" ~RLq^cemnbQ4yҘlhϝwc>>+;lQMF +endstream +endobj +10318 0 obj << +/Type /Page +/Contents 10319 0 R +/Resources 10317 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10267 0 R +/Annots [ 10290 0 R 10297 0 R 10298 0 R 10299 0 R 10300 0 R 10301 0 R 10302 0 R 10303 0 R 10304 0 R 10305 0 R 10306 0 R 10307 0 R 10308 0 R 10309 0 R 10310 0 R 10311 0 R 10312 0 R 10313 0 R 10314 0 R 10315 0 R 10316 0 R ] +>> endobj +10290 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 758.177 168.014 768.446] +/A << /S /GoTo /D (class_room_options_a5e0b37ab163b5a359d129f9820d8c733) >> +>> endobj +10297 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 714.868 136.956 725.343] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.456 714.868 235.467 725.343] +/A << /S /GoTo /D (class_room_options_a4ada64fca4050804b30c76a308a7a489) >> +>> endobj +10299 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.418 682.41 260.765 692.993] +/A << /S /GoTo /D (class_room_options_a7f8b6c449cea4f53046e0b4578ab5718) >> +>> endobj +10300 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.418 650.06 156.811 660.436] +/A << /S /GoTo /D (class_room_options_a694060e8b6a69e4e7091d8e37c2a203b) >> +>> endobj +10301 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 567 149.41 576.915] +/A << /S /GoTo /D (class_room_options_ac0d554f095700262fabd29cd28e4c7e8) >> +>> endobj +10302 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 534.297 145.115 544.771] +/A << /S /GoTo /D (class_room_options_aed6c5f5fd7c8f31010c242b967246c72) >> +>> endobj +10303 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 501.946 211.402 512.421] +/A << /S /GoTo /D (class_room_options_a8ca0d69c14df2296fcafa9701426dbd7) >> +>> endobj +10304 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 469.596 205.18 480.071] +/A << /S /GoTo /D (class_room_options_af4a6c36c95aa2a009377552769eafe4b) >> +>> endobj +10305 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 437.599 171.834 447.514] +/A << /S /GoTo /D (class_room_options_a76399e7b84d762bd0315bf89aa058caf) >> +>> endobj +10306 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 394.29 148.908 404.205] +/A << /S /GoTo /D (class_room_options_a750b1c08061aa357ae1d1e189cf8b66c) >> +>> endobj +10307 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 378.758 144.613 389.232] +/A << /S /GoTo /D (class_room_options_adcfa176960d9ab8c0e3667d7c6810192) >> +>> endobj +10308 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.036 363.579 162.411 373.847] +/A << /S /GoTo /D (class_room_options_aa6e8ee62ea58621a6ac3dc33deb319ba) >> +>> endobj +10309 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 348.4 209.412 358.875] +/A << /S /GoTo /D (class_room_options_a30d0b25a8b85c9232a8a9140bc7def4b) >> +>> endobj +10310 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 333.221 136.956 343.49] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10311 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.456 333.221 233.477 343.49] +/A << /S /GoTo /D (class_room_options_a0bc17f8465ed615ce0126674af329a1f) >> +>> endobj +10312 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.418 317.935 258.774 328.311] +/A << /S /GoTo /D (class_room_options_a8c4bca19c674840296f924ec701b9ee1) >> +>> endobj +10313 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.418 302.756 155.815 313.132] +/A << /S /GoTo /D (class_room_options_aed4944177ded9cd58c6c7f0f2bd95b4c) >> +>> endobj +10314 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 287.685 203.682 297.953] +/A << /S /GoTo /D (class_room_options_a0322774781bc0f5a76e8ea607af453ee) >> +>> endobj +10315 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 272.506 170.839 282.774] +/A << /S /GoTo /D (class_room_options_aae5bbcfe0897cf56694be07642d980be) >> +>> endobj +10316 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.373 189.075 243.278 199.55] +/A << /S /GoTo /D (class_room) >> +>> endobj +10320 0 obj << +/D [10318 0 R /XYZ 69.866 801.979 null] +>> endobj +10321 0 obj << +/D [10318 0 R /XYZ 70.866 609.728 null] +>> endobj +3882 0 obj << +/D [10318 0 R /XYZ 70.866 253.019 null] +>> endobj +3886 0 obj << +/D [10318 0 R /XYZ 70.866 169.589 null] +>> endobj +10322 0 obj << +/D [10318 0 R /XYZ 70.866 143.642 null] +>> endobj +3890 0 obj << +/D [10318 0 R /XYZ 70.866 143.642 null] +>> endobj +10323 0 obj << +/D [10318 0 R /XYZ 425.353 70.866 null] +>> endobj +10317 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F106 6377 0 R /F73 4716 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10341 0 obj << +/Length 2107 +/Filter /FlateDecode +>> +stream +x]6}/gb>>\n4ɥvd^D(gssm6\H %&1ų<Yth`Qa!I\\߈ +~0;L4$y=Lq?D@ +gB +ALD2 J]N33̫֪Ϩ`pϱs͒yNRBk:,xZO+#32!{O mi" .kzt֔}i."/niOii"[@N\iҹRFW©JOw^VVc([W+U(=_zR9tIڜ{ǨOy݄T㸛/$1N8941GxmE_?"0,4'bIs^UbxCD$mTKKI=o٢V{g8;R8sب]qb&|Vǘwj.5 _FTeKuL؞{unԟOoA^r2#O"xwR5#mE#/g|l4 z1+P>KLr#~{@ypػ~>P8>)tOC39B̃ +E8;תw#anALz>+S/[ PYlԛnHL~v9O's!iyF9 q "aQ${kd>(w%8; +q'"́OPaEh1|*Ɏ\7R +%\O=gGn:F=|ֹ@y,jb|"o;4j7.;U\vҘݘAwp2-(Qd01M 8!`m\IwrEHzٳl}bgS+jA{ q~ڂIr7TO|ώ)bI__V~ztiqWR+?5dUGh?wo1D=ٯ? +endstream +endobj +10340 0 obj << +/Type /Page +/Contents 10341 0 R +/Resources 10339 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10267 0 R +>> endobj +10342 0 obj << +/D [10340 0 R /XYZ 69.866 801.979 null] +>> endobj +3894 0 obj << +/D [10340 0 R /XYZ 70.866 771.024 null] +>> endobj +10324 0 obj << +/D [10340 0 R /XYZ 278.289 676.948 null] +>> endobj +3898 0 obj << +/D [10340 0 R /XYZ 70.866 658.345 null] +>> endobj +10296 0 obj << +/D [10340 0 R /XYZ 70.866 605.597 null] +>> endobj +3902 0 obj << +/D [10340 0 R /XYZ 70.866 588.881 null] +>> endobj +9022 0 obj << +/D [10340 0 R /XYZ 70.866 544.519 null] +>> endobj +3906 0 obj << +/D [10340 0 R /XYZ 70.866 527.803 null] +>> endobj +10325 0 obj << +/D [10340 0 R /XYZ 70.866 475.054 null] +>> endobj +3910 0 obj << +/D [10340 0 R /XYZ 70.866 458.339 null] +>> endobj +3914 0 obj << +/D [10340 0 R /XYZ 70.866 357.51 null] +>> endobj +10328 0 obj << +/D [10340 0 R /XYZ 70.866 328.44 null] +>> endobj +3918 0 obj << +/D [10340 0 R /XYZ 70.866 328.44 null] +>> endobj +10333 0 obj << +/D [10340 0 R /XYZ 235.118 246.555 null] +>> endobj +3922 0 obj << +/D [10340 0 R /XYZ 70.866 227.844 null] +>> endobj +10334 0 obj << +/D [10340 0 R /XYZ 70.866 203.03 null] +>> endobj +3926 0 obj << +/D [10340 0 R /XYZ 70.866 203.03 null] +>> endobj +10335 0 obj << +/D [10340 0 R /XYZ 70.866 178.076 null] +>> endobj +3930 0 obj << +/D [10340 0 R /XYZ 70.866 178.076 null] +>> endobj +10327 0 obj << +/D [10340 0 R /XYZ 70.866 152.984 null] +>> endobj +3934 0 obj << +/D [10340 0 R /XYZ 70.866 152.984 null] +>> endobj +10331 0 obj << +/D [10340 0 R /XYZ 173.825 70.866 null] +>> endobj +10339 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10352 0 obj << +/Length 1896 +/Filter /FlateDecode +>> +stream +xYݓ۸ _ٗ31}۵lf7w1UrU , uPpo9ӉܮIF,14?_Db;XE#w:>>t%r< +ӥkfǣ*M5sTSp̰.saf?jZ@Gmia;f;5{!ϦݷS%ԟ@r'K:ہw{(Ll7ԵݝnT.x&zUi6{8d@| +#: xq;b9˄*>:O{Qd. +  ̱&j/*+[uK1uʹJ5麺]WqAn 3mk}\W[OCSU]ug7B^Z:8|-RCu6JM~C62Vt4o;p=HO^B\7_(c+7`W `*ԍ~[QHC8Ep|G>MD7>pXbcN-mA.Z_ +\:+Nm\Y8#{>L>CBqZ%w>x^EЯ K涐 S9Yolrby 5]@=iCбj4UfQӳ\xC:ou+ڽ//)ծ>'U+I}L;ĆHڮ dɒ5C݆21~% ͨ8!J|!t ]K>}sl]}Yu36T +endstream +endobj +10351 0 obj << +/Type /Page +/Contents 10352 0 R +/Resources 10350 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10267 0 R +/Annots [ 10343 0 R 10344 0 R 10345 0 R 10346 0 R 10347 0 R 10348 0 R 10349 0 R ] +>> endobj +10343 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.061 476.587 208.467 487.062] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10344 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 464.632 153.688 475.107] +/A << /S /GoTo /D (class_photon_player_a53a95c12899049fa00d873d634eee5ba) >> +>> endobj +10345 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.023 452.569 289.203 463.151] +/A << /S /GoTo /D (class_photon_network_a8c94dd51fe8e8986117b499161ff4461) >> +>> endobj +10346 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.451 215.954 254.244 226.536] +/A << /S /GoTo /D (class_unity_engine_1_1_scene_management_1_1_scene_manager) >> +>> endobj +10347 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 149.232 184.261 159.814] +/A << /S /GoTo /D (class_unity_engine_1_1_scene_management_1_1_scene_manager_a44f218a648b456714c451e119db53b2b) >> +>> endobj +10348 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.909 134.064 184.261 144.538] +/A << /S /GoTo /D (class_unity_engine_1_1_scene_management_1_1_scene_manager_a87166a3e05d57edf58bc6e71d0cf75d5) >> +>> endobj +10349 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.451 67.875 254.244 78.457] +/A << /S /GoTo /D (class_unity_engine_1_1_scene_management_1_1_scene_manager) >> +>> endobj +10353 0 obj << +/D [10351 0 R /XYZ 69.866 801.979 null] +>> endobj +3938 0 obj << +/D [10351 0 R /XYZ 70.866 771.024 null] +>> endobj +10326 0 obj << +/D [10351 0 R /XYZ 70.866 751.077 null] +>> endobj +3942 0 obj << +/D [10351 0 R /XYZ 70.866 751.077 null] +>> endobj +10330 0 obj << +/D [10351 0 R /XYZ 183.374 650.397 null] +>> endobj +3946 0 obj << +/D [10351 0 R /XYZ 70.866 627.69 null] +>> endobj +10332 0 obj << +/D [10351 0 R /XYZ 70.866 602.077 null] +>> endobj +3950 0 obj << +/D [10351 0 R /XYZ 70.866 602.077 null] +>> endobj +10336 0 obj << +/D [10351 0 R /XYZ 70.866 576.324 null] +>> endobj +3954 0 obj << +/D [10351 0 R /XYZ 70.866 576.324 null] +>> endobj +6927 0 obj << +/D [10351 0 R /XYZ 70.866 550.432 null] +>> endobj +3958 0 obj << +/D [10351 0 R /XYZ 70.866 550.432 null] +>> endobj +10338 0 obj << +/D [10351 0 R /XYZ 314.083 455.56 null] +>> endobj +3962 0 obj << +/D [10351 0 R /XYZ 70.866 432.854 null] +>> endobj +10329 0 obj << +/D [10351 0 R /XYZ 70.866 407.24 null] +>> endobj +3966 0 obj << +/D [10351 0 R /XYZ 70.866 407.24 null] +>> endobj +10337 0 obj << +/D [10351 0 R /XYZ 268.212 318.515 null] +>> endobj +3970 0 obj << +/D [10351 0 R /XYZ 70.866 295.916 null] +>> endobj +6907 0 obj << +/D [10351 0 R /XYZ 70.866 270.195 null] +>> endobj +3974 0 obj << +/D [10351 0 R /XYZ 70.866 270.195 null] +>> endobj +10354 0 obj << +/D [10351 0 R /XYZ 70.866 192.564 null] +>> endobj +3978 0 obj << +/D [10351 0 R /XYZ 70.866 114.348 null] +>> endobj +10350 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10386 0 obj << +/Length 1538 +/Filter /FlateDecode +>> +stream +xX[s8~`3* $3:MNfw_<8Fvb]=lgɋB:O|Hؚ[8x?==+@!5Y>FRĉ5[;@w웩H$8sgbI$KF$71swN Omx׀ " @bp{}0rf.,y.'6n`D|)",u8AGT:}) tZYeBD I۵*[5,+CĨ˥VC=;#{\Dʺ>6'zhbŪ *kl*~̊,OKe~{+Lb#9 #>PE( +yәe1Q&%ß @Xs5|~̓2emϠ!E*X/K6ɌD_S@6WDq'["ѣ$[G=2Ḭ j7"A"5,ң,5l[(u +unYbPp'4G!03:؅v2D6n){| 5e{!:~o^6^R$޽ t ]"zGYQ.=].lbaqfLqۓ|JQGLaQE,|.(ysiD^6f^;L=^ LK-U>{3iQjGȃ!P?ɒ'0m-lMR?Ĥ0H4tC{i.~ŁCryqY"}͛gpHx*!Lg=B' I>iXcٿ>HЂ݇_}ū̳3y*QKwV>ۮ<s\ށsD}n=aG85&Ey+ǵ~9 3M5&܌0~3I&.]~WUԴI,SW;s0 +endstream +endobj +10385 0 obj << +/Type /Page +/Contents 10386 0 R +/Resources 10384 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10397 0 R +/Annots [ 10357 0 R 10358 0 R 10359 0 R 10360 0 R 10361 0 R 10362 0 R 10363 0 R 10364 0 R 10393 0 R 10365 0 R 10366 0 R 10367 0 R 10368 0 R 10369 0 R 10370 0 R 10371 0 R 10372 0 R 10373 0 R 10374 0 R 10375 0 R 10376 0 R 10377 0 R 10378 0 R 10379 0 R ] +>> endobj +10357 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.745 624.876 218.261 635.458] +/A << /S /GoTo /D (class_scene_manager_helper_a177df3595c98493f06aeec0aca449743) >> +>> endobj +10358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.157 612.521 223.354 622.643] +/A << /S /GoTo /D (class_scene_manager_helper_ab6409a5985d706aa80a8c1add2f88cad) >> +>> endobj +10359 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [309.985 468.969 464.51 479.551] +/A << /S /GoTo /D (class_photon_network_a0fdb79bcce45801ec81fbe56ffb939ec) >> +>> endobj +10360 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 393.776 178.406 404.359] +/A << /S /GoTo /D (class_server_settings_ac70398ae8a3414ab1429069965cfcd32) >> +>> endobj +10361 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 381.821 183.481 392.403] +/A << /S /GoTo /D (class_server_settings_ac70398ae8a3414ab1429069965cfcd32afaf396cbd83927b72a84d2616fac76ff) >> +>> endobj +10362 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.684 381.821 314.813 392.403] +/A << /S /GoTo /D (class_server_settings_ac70398ae8a3414ab1429069965cfcd32a90530e0e762e9297f4d32ed392eabe8e) >> +>> endobj +10363 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [333.016 381.821 438.164 392.403] +/A << /S /GoTo /D (class_server_settings_ac70398ae8a3414ab1429069965cfcd32a30679503fd5d3a59a6c5c5228d0077de) >> +>> endobj +10364 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [456.368 381.821 525.406 392.403] +/A << /S /GoTo /D (class_server_settings_ac70398ae8a3414ab1429069965cfcd32a08d79b550be04c0b3b76fc64a58efde0) >> +>> endobj +10393 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 370.534 145.106 380.448] +/A << /S /GoTo /D (class_server_settings_ac70398ae8a3414ab1429069965cfcd32a08d79b550be04c0b3b76fc64a58efde0) >> +>> endobj +10365 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 357.911 202.418 368.493] +/A << /S /GoTo /D (class_server_settings_ac70398ae8a3414ab1429069965cfcd32a57561f889c64fb3f0a85f31a7fb1d941) >> +>> endobj +10366 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 300.343 201.19 310.925] +/A << /S /GoTo /D (class_server_settings_aeb0c2bda5dd14905c6d82c5166971117) >> +>> endobj +10367 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 287.528 154.843 298.11] +/A << /S /GoTo /D (class_server_settings_a3fd2ceafc9192779c59a646884ba9810) >> +>> endobj +10368 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 274.712 154.843 285.294] +/A << /S /GoTo /D (class_server_settings_ae9dc8779d32a07848cb6e9063ae215d6) >> +>> endobj +10369 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.219 274.712 307.466 285.294] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819b) >> +>> endobj +10370 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.489 261.896 169.826 272.479] +/A << /S /GoTo /D (class_server_settings_ae0eef79dfdcf1d7d7577094dadc4ca4b) >> +>> endobj +10371 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 249.081 188.914 259.663] +/A << /S /GoTo /D (class_server_settings_a8a1c45242135b589ecc819e132c59655) >> +>> endobj +10372 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.635 191.513 170.032 202.095] +/A << /S /GoTo /D (class_server_settings_a5512de202f9fc04eaa51c9a82a7abb87) >> +>> endobj +10373 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 119.137 146.235 129.513] +/A << /S /GoTo /D (class_server_settings_a683ee8add05e046c395ecbcd2c077052) >> +>> endobj +10374 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 106.322 167.943 116.698] +/A << /S /GoTo /D (class_server_settings_aadefac90411116a558839e318ca90de0) >> +>> endobj +10375 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 93.506 165.172 104.088] +/A << /S /GoTo /D (class_server_settings_a3e7eed57634b89eabedaf6c852b7dc4b) >> +>> endobj +10376 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 80.69 153.579 91.273] +/A << /S /GoTo /D (class_server_settings_ac70398ae8a3414ab1429069965cfcd32) >> +>> endobj +10377 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.079 80.69 193.362 91.273] +/A << /S /GoTo /D (class_server_settings_ae09a675e680b68d1ed6117ae990e0140) >> +>> endobj +10378 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 67.875 170.023 78.457] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819b) >> +>> endobj +10379 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.523 67.875 238.023 78.457] +/A << /S /GoTo /D (class_server_settings_a3b8285422f8ec14b98457c0935304b6d) >> +>> endobj +10387 0 obj << +/D [10385 0 R /XYZ 69.866 801.979 null] +>> endobj +3982 0 obj << +/D [10385 0 R /XYZ 70.866 771.024 null] +>> endobj +10355 0 obj << +/D [10385 0 R /XYZ 70.866 753.893 null] +>> endobj +3986 0 obj << +/D [10385 0 R /XYZ 70.866 753.893 null] +>> endobj +10356 0 obj << +/D [10385 0 R /XYZ 70.866 727.374 null] +>> endobj +3990 0 obj << +/D [10385 0 R /XYZ 70.866 727.374 null] +>> endobj +10388 0 obj << +/D [10385 0 R /XYZ 70.866 702.715 null] +>> endobj +3994 0 obj << +/D [10385 0 R /XYZ 70.866 702.715 null] +>> endobj +10389 0 obj << +/D [10385 0 R /XYZ 70.866 664.653 null] +>> endobj +3998 0 obj << +/D [10385 0 R /XYZ 70.866 598.405 null] +>> endobj +10390 0 obj << +/D [10385 0 R /XYZ 70.866 571.061 null] +>> endobj +4002 0 obj << +/D [10385 0 R /XYZ 70.866 571.061 null] +>> endobj +10391 0 obj << +/D [10385 0 R /XYZ 70.866 546.635 null] +>> endobj +4006 0 obj << +/D [10385 0 R /XYZ 70.866 546.635 null] +>> endobj +8682 0 obj << +/D [10385 0 R /XYZ 70.866 521.977 null] +>> endobj +4010 0 obj << +/D [10385 0 R /XYZ 70.866 521.977 null] +>> endobj +10392 0 obj << +/D [10385 0 R /XYZ 70.866 433.554 null] +>> endobj +10394 0 obj << +/D [10385 0 R /XYZ 70.866 340.12 null] +>> endobj +10395 0 obj << +/D [10385 0 R /XYZ 70.866 231.29 null] +>> endobj +10396 0 obj << +/D [10385 0 R /XYZ 70.866 158.914 null] +>> endobj +10384 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10430 0 obj << +/Length 1668 +/Filter /FlateDecode +>> +stream +xYsF_ fqG&Į,N8L0(}DrKow 'oWg> +<ϵw<(5<gAwq3OAeXYNN瓯GEB Ax|VYU',]ęRXW?&mn+|qW(6+O)ؐ\$\~%ei:ۉtm.:j|ǻG!([0'JTKO5%.A0`vmdrBsgeȒA4׷N+]G~tb]QΔp;Nc}%᠋Gr[GQe1/8-rplgpa܅p8 ^!dnЇLgdx: ][`**;,]oSWN0qQƋbBp(\Ci|&`MlEh~4ϳHj,;ֽ (o./6!t UNgOJ:} JBg4_CUk,{: +QOu0JIU':=`D]V"mi hPm} +>[-jJ7ǀY>Y>*:V S s]N#As5]J\'̻R(^yP7%oM](f@\ ^C}a|NU<^5Ve)>5y%:rٝ]4|dS!t@!S8ֺ&s|&@7ӏ26[ 3[\V5!}cԧǛx|@S/߆5gh@;]mMV3tsMU-<(~{Vݐl ZOpp~&nHaTՑ@q-cVf!,LWyvHr _}؍S!^ +Ȣ#A5DdۓegtK5U(q b&IjPIL%7]QwDn$ MD +xoh؟xlJ A ֻNyKݻ: i:~^tCVaYʇUټTf#s&?yy*xisу!7QH}|c=lG8G*z_:Lo$ʲO3{P*P('$@b\jWz߯O8 }Ax̫y6[NaZXb9$Se2 pͿ0 +endstream +endobj +10429 0 obj << +/Type /Page +/Contents 10430 0 R +/Resources 10428 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10397 0 R +/Annots [ 10380 0 R 10381 0 R 10382 0 R 10383 0 R 10415 0 R 10416 0 R 10417 0 R 10418 0 R 10419 0 R 10420 0 R 10421 0 R 10422 0 R 10423 0 R 10424 0 R 10425 0 R 10426 0 R 10427 0 R ] +>> endobj +10380 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 758.07 166.033 768.652] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1) >> +>> endobj +10381 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.533 758.07 234.132 768.652] +/A << /S /GoTo /D (class_server_settings_a16c0927185e85b1c45492481b49e1721) >> +>> endobj +10382 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.346 758.07 316.603 768.652] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1) >> +>> endobj +10383 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.508 745.079 210.389 755.553] +/A << /S /GoTo /D (class_server_settings_a2fafc5c45a737f8090fef92f080bfd50) >> +>> endobj +10415 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 731.872 180.657 742.454] +/A << /S /GoTo /D (class_server_settings_ac93d5ddacf54f0efb974bb3c57537275) >> +>> endobj +10416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 720.585 151.534 729.356] +/A << /S /GoTo /D (class_server_settings_a61d571180623076b8a12b9d2ca550411) >> +>> endobj +10417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 707.486 173.242 716.257] +/A << /S /GoTo /D (class_server_settings_ab1470a61ee090390923d757d036b7c2d) >> +>> endobj +10418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 692.684 156.807 702.952] +/A << /S /GoTo /D (class_server_settings_ab20cfb9bd2fd6526bb96d76c5ef5fcdc) >> +>> endobj +10419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 679.585 203.969 690.06] +/A << /S /GoTo /D (class_server_settings_a604fa40c04419dd5972f6d6c0710ac44) >> +>> endobj +10420 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 666.379 161.075 676.961] +/A << /S /GoTo /D (group__public_api_gaf0468f6a0c8ab8caec09678e6dc6f3d5) >> +>> endobj +10421 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.575 666.379 211.42 676.961] +/A << /S /GoTo /D (class_server_settings_a5caaad8da076804ce522b9b5da31d846) >> +>> endobj +10422 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.649 666.379 331.28 676.961] +/A << /S /GoTo /D (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5ae0a1284706116eec7a83a489235a9ef8) >> +>> endobj +10423 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.44 653.28 211.259 663.862] +/A << /S /GoTo /D (class_server_settings_a98c6a355e14f4a2b76a1255162401aea) >> +>> endobj +10424 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 640.181 187.704 650.557] +/A << /S /GoTo /D (class_server_settings_abfb17f6528c617b0b7dff59f739de7ec) >> +>> endobj +10425 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.744 627.082 185.63 637.665] +/A << /S /GoTo /D (class_server_settings_abe34064564018fc67afae2142c244cba) >> +>> endobj +10426 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 614.091 213.922 624.566] +/A << /S /GoTo /D (class_server_settings_a0bc41aab7289ce45195f260077b91e48) >> +>> endobj +10427 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [309.985 554.052 464.51 564.634] +/A << /S /GoTo /D (class_photon_network_a0fdb79bcce45801ec81fbe56ffb939ec) >> +>> endobj +10431 0 obj << +/D [10429 0 R /XYZ 69.866 801.979 null] +>> endobj +4014 0 obj << +/D [10429 0 R /XYZ 70.866 599.501 null] +>> endobj +4018 0 obj << +/D [10429 0 R /XYZ 70.866 539.461 null] +>> endobj +10398 0 obj << +/D [10429 0 R /XYZ 70.866 514.602 null] +>> endobj +4022 0 obj << +/D [10429 0 R /XYZ 70.866 514.602 null] +>> endobj +10399 0 obj << +/D [10429 0 R /XYZ 88.314 456.955 null] +>> endobj +10400 0 obj << +/D [10429 0 R /XYZ 88.314 440.867 null] +>> endobj +10401 0 obj << +/D [10429 0 R /XYZ 88.314 424.78 null] +>> endobj +10402 0 obj << +/D [10429 0 R /XYZ 88.314 408.692 null] +>> endobj +10403 0 obj << +/D [10429 0 R /XYZ 88.314 392.605 null] +>> endobj +4026 0 obj << +/D [10429 0 R /XYZ 70.866 375.023 null] +>> endobj +10409 0 obj << +/D [10429 0 R /XYZ 70.866 350.163 null] +>> endobj +4030 0 obj << +/D [10429 0 R /XYZ 70.866 350.163 null] +>> endobj +10408 0 obj << +/D [10429 0 R /XYZ 70.866 210.199 null] +>> endobj +4034 0 obj << +/D [10429 0 R /XYZ 70.866 194.612 null] +>> endobj +10405 0 obj << +/D [10429 0 R /XYZ 70.866 169.777 null] +>> endobj +4038 0 obj << +/D [10429 0 R /XYZ 70.866 169.777 null] +>> endobj +10406 0 obj << +/D [10429 0 R /XYZ 70.866 145.049 null] +>> endobj +4042 0 obj << +/D [10429 0 R /XYZ 70.866 145.049 null] +>> endobj +10404 0 obj << +/D [10429 0 R /XYZ 70.866 120.322 null] +>> endobj +4046 0 obj << +/D [10429 0 R /XYZ 70.866 120.322 null] +>> endobj +10407 0 obj << +/D [10429 0 R /XYZ 70.866 95.594 null] +>> endobj +4050 0 obj << +/D [10429 0 R /XYZ 70.866 95.594 null] +>> endobj +4054 0 obj << +/D [10429 0 R /XYZ 70.866 70.866 null] +>> endobj +10428 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F82 5877 0 R /F73 4716 0 R /F109 6535 0 R /F115 6693 0 R /F95 6017 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10454 0 obj << +/Length 1274 +/Filter /FlateDecode +>> +stream +xڵX[s8~`V%LK7ouC+~$ I/ˆǽܳ +s1Y<k#(H͘HPϊoؚ·+ \X"sa=nzFd"q?`23yJb> \j!",4 WjFpOVzH`*/8)2Est\^ۻw-¢aއ vsKIy8q='U^/eO3̔Mzjˎ> y x1'= Ϋ= '%%|Kcb7pB(EYOqjP&z_]I.¦IM1֩EF9~^QA +zY֎8f-&QƎ'RnYc2UsA'5ǏU'Һ;(1Τ @؏Y4{3ڬR ωzԝKS`Lh102JdUZ.y& uvO"/ewUҤ1T1:ХW9ACM_4$(#J~ltjEϯ!O oVEUa k`6R]}8oMJ@ܫuPt(F0VGqr4Nz4{$ D ൉EGłz`y5b>Z%0R03J[j*\:w\d +>d!U,G0{C|/gᮝƑ|#1@|ӟS@"/;fo#DyDGGtvW5C=?ye\N) ѓem!wz 6/;D_KyxȎmJr"x{,YRc^AjHjLKLЯt\WptF +|~t a=إ[WmO9p7~q4…,>q"qcr԰ W-fў+s|bQNu^*g7 +2U~BNĵa~eg22 U՝bUYln7ξKkԳdx71'^,թl=3ᴝc@'&J +endstream +endobj +10453 0 obj << +/Type /Page +/Contents 10454 0 R +/Resources 10452 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10397 0 R +/Annots [ 10445 0 R 10446 0 R 10447 0 R 10448 0 R 10449 0 R ] +>> endobj +10445 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 251.413 164.823 261.887] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167f) >> +>> endobj +10446 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.323 251.413 235.369 261.887] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_layer_a68d11cfd6780c4237bda70ee5f92a72c) >> +>> endobj +10447 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 238.12 152.369 248.388] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_layer_ad1d491c302d7fbdf8f423c66561602b4) >> +>> endobj +10448 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 67.983 157.031 78.251] +/A << /S /GoTo /D (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894) >> +>> endobj +10449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.531 67.983 178.38 78.251] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_parameter_aed91d06642473f7978a3675b9e08e5de) >> +>> endobj +10455 0 obj << +/D [10453 0 R /XYZ 69.866 801.979 null] +>> endobj +10410 0 obj << +/D [10453 0 R /XYZ 70.866 753.732 null] +>> endobj +4058 0 obj << +/D [10453 0 R /XYZ 70.866 753.732 null] +>> endobj +10412 0 obj << +/D [10453 0 R /XYZ 70.866 727.052 null] +>> endobj +4062 0 obj << +/D [10453 0 R /XYZ 70.866 727.052 null] +>> endobj +10444 0 obj << +/D [10453 0 R /XYZ 70.866 702.233 null] +>> endobj +4066 0 obj << +/D [10453 0 R /XYZ 70.866 702.233 null] +>> endobj +10433 0 obj << +/D [10453 0 R /XYZ 70.866 677.413 null] +>> endobj +4070 0 obj << +/D [10453 0 R /XYZ 70.866 677.413 null] +>> endobj +10439 0 obj << +/D [10453 0 R /XYZ 70.866 652.594 null] +>> endobj +4074 0 obj << +/D [10453 0 R /XYZ 70.866 652.594 null] +>> endobj +10413 0 obj << +/D [10453 0 R /XYZ 70.866 627.775 null] +>> endobj +4078 0 obj << +/D [10453 0 R /XYZ 70.866 627.775 null] +>> endobj +10438 0 obj << +/D [10453 0 R /XYZ 70.866 602.956 null] +>> endobj +4082 0 obj << +/D [10453 0 R /XYZ 70.866 602.956 null] +>> endobj +10441 0 obj << +/D [10453 0 R /XYZ 70.866 578.136 null] +>> endobj +4086 0 obj << +/D [10453 0 R /XYZ 70.866 578.136 null] +>> endobj +10414 0 obj << +/D [10453 0 R /XYZ 70.866 553.317 null] +>> endobj +4090 0 obj << +/D [10453 0 R /XYZ 70.866 553.317 null] +>> endobj +10434 0 obj << +/D [10453 0 R /XYZ 70.866 528.498 null] +>> endobj +4094 0 obj << +/D [10453 0 R /XYZ 70.866 528.498 null] +>> endobj +10440 0 obj << +/D [10453 0 R /XYZ 70.866 503.679 null] +>> endobj +4098 0 obj << +/D [10453 0 R /XYZ 70.866 503.679 null] +>> endobj +10443 0 obj << +/D [10453 0 R /XYZ 70.866 478.859 null] +>> endobj +4102 0 obj << +/D [10453 0 R /XYZ 70.866 478.859 null] +>> endobj +10442 0 obj << +/D [10453 0 R /XYZ 70.866 454.04 null] +>> endobj +4106 0 obj << +/D [10453 0 R /XYZ 70.866 454.04 null] +>> endobj +10435 0 obj << +/D [10453 0 R /XYZ 70.866 429.221 null] +>> endobj +4110 0 obj << +/D [10453 0 R /XYZ 70.866 429.221 null] +>> endobj +10436 0 obj << +/D [10453 0 R /XYZ 70.866 404.401 null] +>> endobj +4114 0 obj << +/D [10453 0 R /XYZ 70.866 404.401 null] +>> endobj +10411 0 obj << +/D [10453 0 R /XYZ 70.866 379.582 null] +>> endobj +4118 0 obj << +/D [10453 0 R /XYZ 70.866 379.582 null] +>> endobj +10437 0 obj << +/D [10453 0 R /XYZ 70.866 354.763 null] +>> endobj +4122 0 obj << +/D [10453 0 R /XYZ 70.866 354.763 null] +>> endobj +8356 0 obj << +/D [10453 0 R /XYZ 70.866 329.944 null] +>> endobj +4126 0 obj << +/D [10453 0 R /XYZ 70.866 329.944 null] +>> endobj +10456 0 obj << +/D [10453 0 R /XYZ 70.866 291.721 null] +>> endobj +4130 0 obj << +/D [10453 0 R /XYZ 70.866 223.071 null] +>> endobj +10457 0 obj << +/D [10453 0 R /XYZ 70.866 198.012 null] +>> endobj +4134 0 obj << +/D [10453 0 R /XYZ 70.866 198.012 null] +>> endobj +10458 0 obj << +/D [10453 0 R /XYZ 70.866 171.472 null] +>> endobj +4138 0 obj << +/D [10453 0 R /XYZ 70.866 171.472 null] +>> endobj +8357 0 obj << +/D [10453 0 R /XYZ 70.866 146.652 null] +>> endobj +4142 0 obj << +/D [10453 0 R /XYZ 70.866 146.652 null] +>> endobj +10459 0 obj << +/D [10453 0 R /XYZ 70.866 108.291 null] +>> endobj +10452 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F82 5877 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10478 0 obj << +/Length 1336 +/Filter /FlateDecode +>> +stream +xXKs6WHD ҺfX`t %QO;:"B }}킌 #_'O"K# $a,d2#w0&4 +=ب˓v"2mT$MVvdma)#?3h$|>k¨GE|"~G95bVOT A7)|/DXnG5܍@:E"偣&.y}VwG6O<ءUn*:Y1wH< $QWpF 14B29:OET2AcS=M"4mve\Z8WHO YMY|*)2rp(: E~Gݸw +o@_?r_Fz/ZPBe! S}mm1so;h^=&KINi| s(7y287\wr:E~zTt]sM1dOdؔ晘G1y9EDMPf,)fv;3 e q]SsfgBaX(K$G[{Y'1RѫBY>a  IGj3檱slY$3 6o`GyV{̦I^-mS{fӤʵE1ls2㵣:Gje{z .Bgl9\L~&v;}YjwAh/9ުc̃^# W}}E?G~ڌYdi y^tEG0S$qZΈq W*E~tɆ]Sv_mž#_= &q@>G:MvzꞖe֫z>^A&ЃCm;16%\5Ik=Mi=oҶ+wY[vXlu%Ѓ]w0c:jmuSe2+S߳d?`j^pkiZ^Dٶ lNM +8NC:fhV˶| Wm_F-ߋYPDR2TJKU*EL'~R<0O3cg%2.0㿋>˾-K]_B1tE< +endstream +endobj +10477 0 obj << +/Type /Page +/Contents 10478 0 R +/Resources 10476 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10397 0 R +/Annots [ 10450 0 R 10451 0 R 10461 0 R 10462 0 R 10463 0 R 10464 0 R 10465 0 R 10466 0 R 10467 0 R 10468 0 R 10469 0 R 10470 0 R 10471 0 R 10472 0 R 10473 0 R 10474 0 R 10475 0 R ] +>> endobj +10450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 758.177 164.823 768.652] +/A << /S /GoTo /D (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167f) >> +>> endobj +10451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.323 758.177 235.369 768.652] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_parameter_a3bca909eb8a9c74c41c40c5ade8851f3) >> +>> endobj +10461 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 742.355 145.231 752.731] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_parameter_afdeabdbb8e7fa234bd2743435a4362e3) >> +>> endobj +10462 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.166 543.953 183.841 554.427] +/A << /S /GoTo /D (class_typed_lobby_info) >> +>> endobj +10463 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 475.553 144.765 486.028] +/A << /S /GoTo /D (class_typed_lobby_a3cc306cd96153d9e71b905ca7367da77) >> +>> endobj +10464 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 459.731 144.765 470.313] +/A << /S /GoTo /D (class_typed_lobby_aa384f44e95a51cd7b7fd5cfc3354fde3) >> +>> endobj +10465 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.076 459.731 245.079 470.313] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ad) >> +>> endobj +10466 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 444.016 188.914 454.598] +/A << /S /GoTo /D (class_typed_lobby_a7ba53ade2e4b461836a442872bdb5f71) >> +>> endobj +10467 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 375.617 145.231 385.993] +/A << /S /GoTo /D (class_typed_lobby_acd1dfdf3ed901ee8ebe75587fcd0c60b) >> +>> endobj +10468 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 331.343 139.78 341.612] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ad) >> +>> endobj +10469 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.28 331.343 161.129 341.612] +/A << /S /GoTo /D (class_typed_lobby_a6f007dbaead56a950745524463ce5219) >> +>> endobj +10470 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.074 245.237 205.063 255.711] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +10471 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.563 245.237 235.691 255.711] +/A << /S /GoTo /D (class_typed_lobby_a127f509c2991db15c8d1801ec9fe8b35) >> +>> endobj +10472 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.678 245.237 312.667 255.711] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +10473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [114.215 177.19 151.319 187.312] +/A << /S /GoTo /D (class_typed_lobby_a73ad6b86a44c2b93d32748ea667c5427) >> +>> endobj +10474 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.889 79.938 317.931 90.412] +/A << /S /GoTo /D (class_photon_network_a631231346113712f11319749d6e1a3eb) >> +>> endobj +10475 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.704 67.983 274.687 78.251] +/A << /S /GoTo /D (class_photon_network_a3af7f8d0082599e6e3a56a5b1481a505) >> +>> endobj +10479 0 obj << +/D [10477 0 R /XYZ 69.866 801.979 null] +>> endobj +4146 0 obj << +/D [10477 0 R /XYZ 70.866 721.607 null] +>> endobj +10480 0 obj << +/D [10477 0 R /XYZ 70.866 695.516 null] +>> endobj +4150 0 obj << +/D [10477 0 R /XYZ 70.866 695.516 null] +>> endobj +10481 0 obj << +/D [10477 0 R /XYZ 70.866 667.696 null] +>> endobj +4154 0 obj << +/D [10477 0 R /XYZ 70.866 667.696 null] +>> endobj +10460 0 obj << +/D [10477 0 R /XYZ 70.866 641.876 null] +>> endobj +4158 0 obj << +/D [10477 0 R /XYZ 70.866 641.876 null] +>> endobj +6070 0 obj << +/D [10477 0 R /XYZ 70.866 615.917 null] +>> endobj +4162 0 obj << +/D [10477 0 R /XYZ 70.866 615.917 null] +>> endobj +10482 0 obj << +/D [10477 0 R /XYZ 70.866 519.423 null] +>> endobj +10483 0 obj << +/D [10477 0 R /XYZ 70.866 419.594 null] +>> endobj +10484 0 obj << +/D [10477 0 R /XYZ 70.866 289.106 null] +>> endobj +10485 0 obj << +/D [10477 0 R /XYZ 70.866 220.707 null] +>> endobj +4166 0 obj << +/D [10477 0 R /XYZ 70.866 156.443 null] +>> endobj +10476 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F73 4716 0 R /F106 6377 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10499 0 obj << +/Length 1258 +/Filter /FlateDecode +>> +stream +xڽXKs8WpڂHB=ƛLNe)6M- oNf/,Z?u7`g`"dNb!gvB"!0Hg:n|F}r(/K(:%=/USV`>_0yjwh&+ ʴ ڀ=)C" +>zhbY7cBՌ`3j鏨e\IVl BO +t"I=1#Q:ўPŦg1"?FXQ,:# `Hb[`QCҲ-V͍F"MVUJƢφ~˛9sPuly$adE.>PAc]̟f SE@[&uqW3RY0aE 7ZAYqӋ;1R@&;Z{=>(1DuZO/0jq@54v]˥*l6fodcג4,=]aC^{1 B HM&Ym{~۔AH}ΒsWQbnoT*yk H`j ~bj[\5rz?g0]hk尚=l}VK7rJiۣA5G&Z{V7@ dB~(1+&"N$nN?n`[u +T]baX4Ղs0n^ϫJy[*D@=>.21\]rJV!OkTE<ګ(ukDb܅>ӹ6TacLPjаB1("Ze(s7@}W6iĖ>7D[%؞g+TQaBiPL9v0vi ;Hyɖ^YwˍYr6݁ɊeDeG}Ymal.Tx] 5oC +(SbFĵg=׍qۼfP.y[g:xT<:4uVkkԷKAC  +6$8TK؏Ut庴]bۚ\̄p3RL] 0>c$R?W۲5|̓PMnb^q_e1#bG +endstream +endobj +10498 0 obj << +/Type /Page +/Contents 10499 0 R +/Resources 10497 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10397 0 R +/Annots [ 10493 0 R 10494 0 R 10495 0 R 10496 0 R ] +>> endobj +10493 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [101.897 368.344 151.886 378.612] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +10494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.98 310.205 188.914 320.787] +/A << /S /GoTo /D (class_typed_lobby_info_afc589242ac6c9946eb6b5cea6fcf9d81) >> +>> endobj +10495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 252.281 157.614 262.756] +/A << /S /GoTo /D (class_typed_lobby_info_a5b7b6fb52a3b9813e8b2af49459c6475) >> +>> endobj +10496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 240.981 156.565 249.752] +/A << /S /GoTo /D (class_typed_lobby_info_a948789896eb6815a2628681f338d754b) >> +>> endobj +10500 0 obj << +/D [10498 0 R /XYZ 69.866 801.979 null] +>> endobj +4170 0 obj << +/D [10498 0 R /XYZ 70.866 771.024 null] +>> endobj +10486 0 obj << +/D [10498 0 R /XYZ 70.866 753.868 null] +>> endobj +4174 0 obj << +/D [10498 0 R /XYZ 70.866 753.868 null] +>> endobj +10487 0 obj << +/D [10498 0 R /XYZ 70.866 727.463 null] +>> endobj +4178 0 obj << +/D [10498 0 R /XYZ 70.866 727.463 null] +>> endobj +4182 0 obj << +/D [10498 0 R /XYZ 70.866 702.641 null] +>> endobj +10489 0 obj << +/D [10498 0 R /XYZ 70.866 677.826 null] +>> endobj +4186 0 obj << +/D [10498 0 R /XYZ 70.866 677.826 null] +>> endobj +4190 0 obj << +/D [10498 0 R /XYZ 70.866 651.283 null] +>> endobj +6101 0 obj << +/D [10498 0 R /XYZ 70.866 626.468 null] +>> endobj +4194 0 obj << +/D [10498 0 R /XYZ 70.866 626.468 null] +>> endobj +10490 0 obj << +/D [10498 0 R /XYZ 70.866 600.063 null] +>> endobj +4198 0 obj << +/D [10498 0 R /XYZ 70.866 600.063 null] +>> endobj +10491 0 obj << +/D [10498 0 R /XYZ 70.866 545.662 null] +>> endobj +4202 0 obj << +/D [10498 0 R /XYZ 70.866 530.298 null] +>> endobj +4206 0 obj << +/D [10498 0 R /XYZ 70.866 472.628 null] +>> endobj +10492 0 obj << +/D [10498 0 R /XYZ 70.866 445.72 null] +>> endobj +4210 0 obj << +/D [10498 0 R /XYZ 70.866 445.72 null] +>> endobj +8792 0 obj << +/D [10498 0 R /XYZ 70.866 421.408 null] +>> endobj +4214 0 obj << +/D [10498 0 R /XYZ 70.866 421.408 null] +>> endobj +10501 0 obj << +/D [10498 0 R /XYZ 70.866 350.195 null] +>> endobj +10502 0 obj << +/D [10498 0 R /XYZ 70.866 292.164 null] +>> endobj +10503 0 obj << +/D [10498 0 R /XYZ 70.866 221.128 null] +>> endobj +4218 0 obj << +/D [10498 0 R /XYZ 70.866 199.988 null] +>> endobj +10504 0 obj << +/D [10498 0 R /XYZ 70.866 173.312 null] +>> endobj +4222 0 obj << +/D [10498 0 R /XYZ 70.866 173.312 null] +>> endobj +4226 0 obj << +/D [10498 0 R /XYZ 70.866 146.769 null] +>> endobj +10505 0 obj << +/D [10498 0 R /XYZ 70.866 121.954 null] +>> endobj +4230 0 obj << +/D [10498 0 R /XYZ 70.866 121.954 null] +>> endobj +10506 0 obj << +/D [10498 0 R /XYZ 70.866 95.549 null] +>> endobj +4234 0 obj << +/D [10498 0 R /XYZ 70.866 95.549 null] +>> endobj +6695 0 obj << +/D [10498 0 R /XYZ 70.866 70.866 null] +>> endobj +4238 0 obj << +/D [10498 0 R /XYZ 70.866 70.866 null] +>> endobj +10497 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F115 6693 0 R /F95 6017 0 R /F39 4678 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10518 0 obj << +/Length 1394 +/Filter /FlateDecode +>> +stream +xX]oF}).˲DU6i"])7>M#}ga(Z ̜33{g,.7nxp~3Ks?[>Fs(OGy\N]x~|E /,2-2Rvx׀RlvO!̊'lM/^")0}{^7޺( a@uclsdFXfi!axd|ۑ|v|[2d :`kHbHS|6l)s`~qqg,!O6ۯlƀ~%̚"+Jba<_ +vQhY|/:^!xM`JAV.&n}]F‘/|"fz華g:F7qyYg=X=|ײ0Jk9y+]֐0q]go=RNOfiW?:t|غN=kx\ t?vc^]IOX|]E;S2,bõ1U1tFi䊄e,OW %kbfFi?}nZLgΐC,dtACyPmZz6ӽ?)B$ӓe2aF4 uMba1$ 6=8߃J.{#c%t/ǣ'+9Q'W5*ę`xeZ65T\,˕F\TW%R*OŰ!n_ DY~jV{!Ev~[b^?!頵{֜l Yʼ8Dd} 5C/*Yw@b2P'j"', ֧hz%0Nj+TK(lU!q2oM7yVfWY֜eMNL$(4- +JiP9h8 +0]*)C2cl20۩7k=%>TyV%*\=`,8kg@CT%x_UTfz-m(۶Jc]!H8onTRBgaP7a5SZbb[sncHC#GMݖh]s`݁!͔ ˇýzܩ's:.aƃh6=nEĔ N ۈSuj$n:LU4$it-}(mu|¦W@^W?=h4@BlF FG׶xA9 +3yׇ?G`gIY?s4ndziRX+URFJ1{-u[lDsGkuQ/{iS02G^Tz.IT +endstream +endobj +10517 0 obj << +/Type /Page +/Contents 10518 0 R +/Resources 10516 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10397 0 R +/Annots [ 10507 0 R 10508 0 R 10509 0 R 10510 0 R 10511 0 R 10512 0 R 10513 0 R 10514 0 R 10515 0 R ] +>> endobj +10507 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 672.27 171.243 682.744] +/A << /S /GoTo /D (class_web_rpc_response_af5d1ea1f048ed2527f025c8c19d9b133) >> +>> endobj +10508 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 644.61 168.705 655.192] +/A << /S /GoTo /D (class_web_rpc_response_a26d3e8a8ae6afce9d309b4c8a7f6105e) >> +>> endobj +10509 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 572.34 145.231 582.716] +/A << /S /GoTo /D (class_web_rpc_response_ab1431df146dda7dfd8c5771bf592504d) >> +>> endobj +10510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.737 545.249 157.291 555.37] +/A << /S /GoTo /D (class_web_rpc_response_ac0f2c0f4cf1ad20705f4bb1cff84461d) >> +>> endobj +10511 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 517.236 183.93 527.612] +/A << /S /GoTo /D (class_web_rpc_response_a328292c9db1a4c5559b00b9e6b7d1b69) >> +>> endobj +10512 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.823 489.685 256.705 500.061] +/A << /S /GoTo /D (class_web_rpc_response_a7c718bc7f77fa026307ac93f99c81c92) >> +>> endobj +10513 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [120.708 398.042 220.639 408.516] +/A << /S /GoTo /D (class_photon_network_ad9a866c73b3e417d55266ed548a52cb8) >> +>> endobj +10514 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.748 386.087 183.214 396.561] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +10515 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.483 374.132 374.651 384.606] +/A << /S /GoTo /D (class_operation_code_a4d45cf8e2d6766b2cc1613508ed92304) >> +>> endobj +10519 0 obj << +/D [10517 0 R /XYZ 69.866 801.979 null] +>> endobj +10520 0 obj << +/D [10517 0 R /XYZ 70.866 711.903 null] +>> endobj +10521 0 obj << +/D [10517 0 R /XYZ 70.866 612.081 null] +>> endobj +4242 0 obj << +/D [10517 0 R /XYZ 70.866 461.127 null] +>> endobj +4246 0 obj << +/D [10517 0 R /XYZ 70.866 349.981 null] +>> endobj +10522 0 obj << +/D [10517 0 R /XYZ 70.866 323.196 null] +>> endobj +4250 0 obj << +/D [10517 0 R /XYZ 70.866 323.196 null] +>> endobj +4254 0 obj << +/D [10517 0 R /XYZ 70.866 264.082 null] +>> endobj +10523 0 obj << +/D [10517 0 R /XYZ 70.866 239.184 null] +>> endobj +4258 0 obj << +/D [10517 0 R /XYZ 70.866 239.184 null] +>> endobj +4262 0 obj << +/D [10517 0 R /XYZ 70.866 137.805 null] +>> endobj +10524 0 obj << +/D [10517 0 R /XYZ 70.866 110.922 null] +>> endobj +4266 0 obj << +/D [10517 0 R /XYZ 70.866 110.922 null] +>> endobj +10525 0 obj << +/D [10517 0 R /XYZ 70.866 68.871 null] +>> endobj +10516 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F95 6017 0 R /F82 5877 0 R /F115 6693 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10530 0 obj << +/Length 755 +/Filter /FlateDecode +>> +stream +xڽUAo0+|qlc]M;]+mi8)+1f *M`އ7)P0 +r@,d39da0!1a)T/t&WFJ_q9䄂t-`(8ص@F4y_Dls@V:s+lMX+O6rP+wUrX4MA\gVJutc +uQfeS'SĐ!zlE6ݓz7cq#w-_n6*\lcUR6M>10n, +7Vn5JQPewShuTeqxSR2!rry4Dn}zQ/yM M CKZ*Y%MGTv?lRqdG0s_sΩ{[9%??MU卓V6;hЁ~mٗjo? +endstream +endobj +10529 0 obj << +/Type /Page +/Contents 10530 0 R +/Resources 10528 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10532 0 R +>> endobj +10531 0 obj << +/D [10529 0 R /XYZ 69.866 801.979 null] +>> endobj +4270 0 obj << +/D [10529 0 R /XYZ 70.866 771.024 null] +>> endobj +10527 0 obj << +/D [10529 0 R /XYZ 70.866 734.515 null] +>> endobj +4274 0 obj << +/D [10529 0 R /XYZ 70.866 719.275 null] +>> endobj +10526 0 obj << +/D [10529 0 R /XYZ 70.866 676.992 null] +>> endobj +4278 0 obj << +/D [10529 0 R /XYZ 70.866 661.752 null] +>> endobj +10528 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F95 6017 0 R /F39 4678 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10535 0 obj << +/Length 266 +/Filter /FlateDecode +>> +stream +xڕPn0 *%ٔU k+Fiewԉtβ'.$'u" +J7v7Z#|(OFj<չu/}w=ZD"_McT-[o[rU\<N29?Q45GoK׹c]ScdUyMZ .iڦ}g>;ϦEcsV A@jv +endstream +endobj +10534 0 obj << +/Type /Page +/Contents 10535 0 R +/Resources 10533 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10532 0 R +>> endobj +10536 0 obj << +/D [10534 0 R /XYZ 69.866 801.979 null] +>> endobj +10533 0 obj << +/Font << /F74 4717 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10540 0 obj << +/Length 872 +/Filter /FlateDecode +>> +stream +xVMo0WHW[iir5GT~=۲ݭTrxo޼̘%nGs?ɛIvbKiJ +*(QEU5fL.?3;Zp4ω,Eۙ`|nim[ptfIX+Ad.$eR|:;7 c{6h5wicތﳏ3HX٩sft7% /7#|xgKkO M.Qbw*a"@247{yc@SnFo>#T譊P1 URϩRQ4Vw} 3P5;нdvg0 `W%-oGJܘ̙k=[͸ {7VNȾ0<(I6>c+Lڀh\mOCO|!2J?,U XԶ + :]zŝl;Iɀ͖XD( -vd u]sn [O2޴XiЩ_ ^|8 +endstream +endobj +10539 0 obj << +/Type /Page +/Contents 10540 0 R +/Resources 10538 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10532 0 R +/Annots [ 10537 0 R ] +>> endobj +10537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 154.681 136.515 164.122] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10541 0 obj << +/D [10539 0 R /XYZ 69.866 801.979 null] +>> endobj +4282 0 obj << +/D [10539 0 R /XYZ 70.866 771.024 null] +>> endobj +10542 0 obj << +/D [10539 0 R /XYZ 70.866 585.06 null] +>> endobj +4286 0 obj << +/D [10539 0 R /XYZ 70.866 585.06 null] +>> endobj +10543 0 obj << +/D [10539 0 R /XYZ 70.866 532.077 null] +>> endobj +4290 0 obj << +/D [10539 0 R /XYZ 70.866 532.077 null] +>> endobj +10544 0 obj << +/D [10539 0 R /XYZ 70.866 478.976 null] +>> endobj +4294 0 obj << +/D [10539 0 R /XYZ 70.866 478.976 null] +>> endobj +10545 0 obj << +/D [10539 0 R /XYZ 70.866 425.875 null] +>> endobj +4298 0 obj << +/D [10539 0 R /XYZ 70.866 425.875 null] +>> endobj +10546 0 obj << +/D [10539 0 R /XYZ 70.866 372.775 null] +>> endobj +4302 0 obj << +/D [10539 0 R /XYZ 70.866 372.775 null] +>> endobj +9010 0 obj << +/D [10539 0 R /XYZ 70.866 319.674 null] +>> endobj +4306 0 obj << +/D [10539 0 R /XYZ 70.866 319.674 null] +>> endobj +10547 0 obj << +/D [10539 0 R /XYZ 70.866 224.298 null] +>> endobj +4310 0 obj << +/D [10539 0 R /XYZ 70.866 136.534 null] +>> endobj +10548 0 obj << +/D [10539 0 R /XYZ 70.866 91.182 null] +>> endobj +4314 0 obj << +/D [10539 0 R /XYZ 70.866 70.866 null] +>> endobj +10538 0 obj << +/Font << /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F74 4717 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10629 0 obj << +/Length 2237 +/Filter /FlateDecode +>> +stream +xZKwWpBDr& G$L<2HfAP[G<{*Jz|uu506|F~Mί[s sKi1\53 NTS9Y̲9X޾#1_&Aqaг_gFDᚶ,ξI)<X=#,\GHMiQ(erjJ]pCJGo/ŀRrI<̦i"?myW? (ӓ>gY&L>P=q/ˍh2hhElfەQ6.51C%fжa^ó,96*famk~XdFAlL\<Q!Bjt 19_f2Rfb`d ɝ +"AX$qT^_@bH k!<mh1qȇe5vH9怉7f&}2Ūt`=.Wq%ps<ҮEZmJu UpEtdKX9uL"ؔwH)5<ųxǧxır1 kswBF$Y&g`z&0A|3@( +??y0l<ܴ hI:z ԍ4${NX2@@FN;mh$qe7M?.,z`3=Mfh ĭ V ld7z¢b.A_c46b)&/)I2#c[# >1mcZ$V{=yX횼۴F؏Czc fbꌥB>(C}xaJYy%={GAPߩxN,OHiD/Cm"x)](qȡ:QX9^IjHIXڣP[R%  +E`O|/3w(聆}zaO>cW!:aWћI\Vؓ(YcUv( p) A 3BPdbCȵZ֧!f,CLr@8QjkXT[5QF@iE+?F^u'2,;U +Ԧhdw0{MMY!IO}'>j#Lhᙆa,ò>7fmid\ifGاؒ>ÿ(ҏ# +UG4OoDԨZ5Jf3oY"WWٛV8^zW5T5QU"ض~k$s[ 7Bpa$KJ"IFnJcYLY'5,kwM :"ꇵ-Aqdw#|Wܕi +:Qk}Zk%wg.WO K^Ky\ snEg|;ZO\d}a0X$yuSI ;NEB O()c1GTt^0եDϷdz(Z,[D=Dg":tӨ;CT.wZ'T=f~N/Z$q},Gø }0'hiI"MgYG#î/롨_~pUW,e|BmΪ^mK6@eZڗm݆3~V?Ô*:g}Oqhכ0Ihrjt矠aK!N5 zdRTڼkaR`m)EQVM|Y0MN2QakA~= Z&8At\9jR5`vPo/V+9v|{@5Nn}c\ ͨWbU^5jE nN(.ܚv`İ] `i6Pdn-tE&|N Ҟ18bGJca%fڸO y=6_?a/*qD\M:}U|2aOwBe637=PI\u/O3;)N_8Ss{\F\l3e+#jn#6*]gwU'B}C-EeLm 76|jA\!UCx{ 816/= +endstream +endobj +10628 0 obj << +/Type /Page +/Contents 10629 0 R +/Resources 10627 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10532 0 R +/Annots [ 10549 0 R 10550 0 R 10551 0 R 10552 0 R 10553 0 R 10633 0 R 10554 0 R 10555 0 R 10556 0 R 10557 0 R 10558 0 R 10559 0 R 10560 0 R 10561 0 R 10562 0 R 10634 0 R 10563 0 R 10564 0 R 10565 0 R 10566 0 R 10635 0 R 10567 0 R 10568 0 R 10569 0 R 10570 0 R 10571 0 R 10572 0 R 10636 0 R 10573 0 R 10574 0 R 10637 0 R 10575 0 R 10576 0 R 10638 0 R 10577 0 R 10578 0 R 10639 0 R 10579 0 R 10580 0 R 10581 0 R 10582 0 R 10583 0 R 10584 0 R 10585 0 R 10586 0 R 10587 0 R 10588 0 R 10589 0 R 10590 0 R 10591 0 R 10592 0 R 10593 0 R 10594 0 R 10595 0 R 10596 0 R 10597 0 R 10598 0 R 10599 0 R 10600 0 R 10601 0 R 10602 0 R 10603 0 R 10604 0 R 10605 0 R 10606 0 R 10607 0 R 10608 0 R 10609 0 R 10640 0 R 10610 0 R 10611 0 R 10612 0 R 10613 0 R 10641 0 R 10614 0 R 10615 0 R 10616 0 R 10617 0 R 10618 0 R 10619 0 R 10620 0 R 10621 0 R 10642 0 R 10622 0 R ] +>> endobj +10549 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 652.31 227.138 662.578] +/A << /S /GoTo /D (class_encryption_data_parameters) >> +>> endobj +10550 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 592.863 231.271 603.239] +/A << /S /GoTo /D (group__public_api_gaf30bbea51cc8c4b1ddc239d1c5c1468f) >> +>> endobj +10551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 580.908 301.925 591.49] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa9583b114e6efdfd8068051d562391dc0) >> +>> endobj +10552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.163 580.908 477.018 591.49] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faf0e999adc414b29857944d5e5fabfe2e) >> +>> endobj +10553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [487.256 580.908 525.406 591.49] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fadf130e855b7c27f0f10f66db4a7e83c4) >> +>> endobj +10633 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 568.953 279.043 579.535] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fadf130e855b7c27f0f10f66db4a7e83c4) >> +>> endobj +10554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.036 568.953 511.223 579.535] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab6273c525ff9cd304d2a8b0adb61a5ea) >> +>> endobj +10555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 556.998 313.5 567.58] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3ad62b9539e5cf97eacf06e2268dea5a) >> +>> endobj +10556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.121 556.998 522.913 567.58] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2959bccbe2dabb6a8d2024ea241f6f2f) >> +>> endobj +10557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 545.043 271.332 555.625] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) >> +>> endobj +10558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.325 545.043 439.422 555.625] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa62d34f824fc4c61b693dd35ff3e7e79b) >> +>> endobj +10559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 533.087 324.009 543.67] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa6fae9412143c8e2158841c492b22d698) >> +>> endobj +10560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.58 533.087 522.913 543.67] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918) >> +>> endobj +10561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 521.132 325.309 531.714] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) >> +>> endobj +10562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [330.616 521.132 525.406 531.714] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa75519954740466351e71d794425f6b12) >> +>> endobj +10634 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 509.285 139.627 519.553] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa75519954740466351e71d794425f6b12) >> +>> endobj +10563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 497.222 271.09 507.804] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) >> +>> endobj +10564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [300.19 497.222 522.913 507.804] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faccfd8b0940a4981818cc4147e29de834) >> +>> endobj +10565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 485.267 328.456 495.849] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa39b1e276b8dab1e7620a643b7e01d71c) >> +>> endobj +10566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.262 485.267 525.406 495.849] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fad07f29ca1e2135927cf0966873408125) >> +>> endobj +10635 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 473.98 171.063 483.688] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fad07f29ca1e2135927cf0966873408125) >> +>> endobj +10567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 461.356 300.912 471.939] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) >> +>> endobj +10568 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [314.886 461.356 522.913 471.939] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa864e7f0d7510922caf9c107b8dd771a3) >> +>> endobj +10569 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 449.401 290.547 459.983] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faa8bb589bf7df8d2be1f0b4b586ba8001) >> +>> endobj +10570 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [293.539 449.401 521.185 459.983] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa1d2567b2c2f8ec1799a293b0359b4046) >> +>> endobj +10571 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 437.446 381.581 448.028] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fafbc17ce96afe80127d732de2d4be0378) >> +>> endobj +10572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.676 437.446 525.406 448.028] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa67402d95c324cda2b6d6e2fc391ae941) >> +>> endobj +10636 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 425.491 227.747 436.073] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa67402d95c324cda2b6d6e2fc391ae941) >> +>> endobj +10573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.574 425.491 434.545 436.073] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab39600c160a074fb0b76467956dadec9) >> +>> endobj +10574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.371 425.491 525.406 436.073] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa03351bfa4fb9325a5b0486862d4be3be) >> +>> endobj +10637 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 413.536 258.869 424.118] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa03351bfa4fb9325a5b0486862d4be3be) >> +>> endobj +10575 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 401.581 348.567 412.163] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa8d87c972aaa1041a4f3778d2d7fab03c) >> +>> endobj +10576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.569 401.581 525.406 412.163] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faa98a8b15d4aa12e02e5ccbc98172eecc) >> +>> endobj +10638 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 389.625 137.135 400.208] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faa98a8b15d4aa12e02e5ccbc98172eecc) >> +>> endobj +10577 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.215 389.625 353.441 400.208] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fac859a296d058a67508e48b2a0363e71c) >> +>> endobj +10578 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.521 389.625 525.406 400.208] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab1a1f76626b99f398def802effe4908a) >> +>> endobj +10639 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 377.778 161.55 388.252] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab1a1f76626b99f398def802effe4908a) >> +>> endobj +10579 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.984 362.532 299.549 372.255] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10580 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 338.027 185.902 348.61] +/A << /S /GoTo /D (group__public_api_gaf0468f6a0c8ab8caec09678e6dc6f3d5) >> +>> endobj +10581 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.889 338.027 303.521 348.61] +/A << /S /GoTo /D (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5ae0a1284706116eec7a83a489235a9ef8) >> +>> endobj +10582 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.513 338.027 427.084 348.61] +/A << /S /GoTo /D (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5a5391f9a882a54c787b206138ed6d28b0) >> +>> endobj +10583 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.076 338.027 513.312 348.61] +/A << /S /GoTo /D (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5abbd47109890259c0127154db1af26c75) >> +>> endobj +10584 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 309.344 179.33 319.72] +/A << /S /GoTo /D (group__public_api_gab84b274b6aa3b3a3d7810361da16170f) >> +>> endobj +10585 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 297.388 166.822 307.971] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fab1c94ca2fbc3e78fc30069c8d0f01680) >> +>> endobj +10586 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.815 297.388 258.806 307.971] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa52ef9633d88a7480b3a938ff9eaa2a25) >> +>> endobj +10587 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [261.799 297.388 374.201 307.971] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fad0209f4a40060d6e7c37d29979d8f444) >> +>> endobj +10588 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.194 297.388 482.863 307.971] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170faf1983fc6b424304e28f91977e06f5881) >> +>> endobj +10589 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 285.433 217.391 296.015] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa7eb09c07159c5b57395510a1c3755705) >> +>> endobj +10590 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.384 285.433 331.836 296.015] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa07d978b16f68f868668a6384df9bc11b) >> +>> endobj +10591 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [334.828 285.433 479.904 296.015] +/A << /S /GoTo /D (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa2dd089935363426140d8d54fee80464c) >> +>> endobj +10592 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 256.749 194.85 267.332] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819b) >> +>> endobj +10593 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 244.794 182.352 255.376] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819ba4829322d03d1606fb09ae9af59a271d3) >> +>> endobj +10594 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.551 244.794 287.624 255.376] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819ba0b3b97fa66886c5688ee4ae80ec0c3c2) >> +>> endobj +10595 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.823 244.794 399.872 255.376] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819bacffe819d4413b95dd8c35c0085930789) >> +>> endobj +10596 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [418.071 244.794 502.651 255.376] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819ba55add3d845bfcd87a9b0949b0da49c0a) >> +>> endobj +10597 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 232.839 182.352 243.421] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819ba8bcc25c96aa5a71f7a76309077753e67) >> +>> endobj +10598 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.106 232.839 293.384 243.421] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819ba2cc2c74685f65f453bf6a6df1fc560df) >> +>> endobj +10599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [311.138 232.839 398.211 243.421] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819bac12e01f2a13ff5587e1e9e4aedb8242d) >> +>> endobj +10600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.966 232.839 508.024 243.421] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819ba43ef4393816412456a776afb5477cc24) >> +>> endobj +10601 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 220.884 179.85 231.466] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819badcf0d7d2cd120bf42580d43f29785dd3) >> +>> endobj +10602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.049 220.884 282.63 231.466] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819ba13b5bfe96f3e2fe411c9f66f4a582adf) >> +>> endobj +10603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.814 220.884 403.36 231.466] +/A << /S /GoTo /D (_enums_8cs_af823e3be9567fa753720895120c9819ba334c4a4c42fdb79d7ebc3e73b517e6f8) >> +>> endobj +10604 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [177.485 205.842 287.074 215.468] +/Subtype/Link/A<> +>> endobj +10605 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 192.2 190.861 202.782] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1) >> +>> endobj +10606 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 180.245 178.496 190.827] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a4829322d03d1606fb09ae9af59a271d3) >> +>> endobj +10607 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.277 180.245 308.495 190.827] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a0b3b97fa66886c5688ee4ae80ec0c3c2) >> +>> endobj +10608 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.276 180.245 445.469 190.827] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1acffe819d4413b95dd8c35c0085930789) >> +>> endobj +10609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [492.25 180.245 525.406 190.827] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a55add3d845bfcd87a9b0949b0da49c0a) >> +>> endobj +10640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 168.29 152.082 178.666] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a55add3d845bfcd87a9b0949b0da49c0a) >> +>> endobj +10610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 156.335 178.496 166.917] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a8bcc25c96aa5a71f7a76309077753e67) >> +>> endobj +10611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.534 156.335 314.956 166.917] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a2cc2c74685f65f453bf6a6df1fc560df) >> +>> endobj +10612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.995 156.335 445.212 166.917] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1ac12e01f2a13ff5587e1e9e4aedb8242d) >> +>> endobj +10613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [492.25 156.335 525.406 166.917] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a43ef4393816412456a776afb5477cc24) >> +>> endobj +10641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 144.379 159.559 154.755] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a43ef4393816412456a776afb5477cc24) >> +>> endobj +10614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 132.424 175.995 143.006] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1adcf0d7d2cd120bf42580d43f29785dd3) >> +>> endobj +10615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.646 132.424 300.371 143.006] +/A << /S /GoTo /D (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a13b5bfe96f3e2fe411c9f66f4a582adf) >> +>> endobj +10616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.003 117.286 401.56 127.009] +/A << /S /GoTo /D (class_region) >> +>> endobj +10617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 103.978 187.884 114.323] +/A << /S /GoTo /D (_enums_8cs_acdd867d72142510ce53521a63a062f9b) >> +>> endobj +10618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 91.785 219.732 102.367] +/A << /S /GoTo /D (_enums_8cs_acdd867d72142510ce53521a63a062f9baef70e46fd3bbc21e3e1f0b6815e750c0) >> +>> endobj +10619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.598 91.785 342.587 102.367] +/A << /S /GoTo /D (_enums_8cs_acdd867d72142510ce53521a63a062f9bae321c53b354930ba96f0243e652df458) >> +>> endobj +10620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.454 91.785 463.452 102.367] +/A << /S /GoTo /D (_enums_8cs_acdd867d72142510ce53521a63a062f9ba2ec0d16e4ca169baedb9b2d50ec5c6d7) >> +>> endobj +10621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [470.319 91.785 525.406 102.367] +/A << /S /GoTo /D (_enums_8cs_acdd867d72142510ce53521a63a062f9ba10b0501000c144cb2a7424bd45e1bcde) >> +>> endobj +10642 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 79.83 176.371 90.412] +/A << /S /GoTo /D (_enums_8cs_acdd867d72142510ce53521a63a062f9ba10b0501000c144cb2a7424bd45e1bcde) >> +>> endobj +10622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 67.875 248.629 78.457] +/A << /S /GoTo /D (_enums_8cs_acdd867d72142510ce53521a63a062f9baa745dcbcb79fe11077073440a0089d1b) >> +>> endobj +10630 0 obj << +/D [10628 0 R /XYZ 69.866 801.979 null] +>> endobj +10631 0 obj << +/D [10628 0 R /XYZ 70.866 692.695 null] +>> endobj +10632 0 obj << +/D [10628 0 R /XYZ 70.866 633.356 null] +>> endobj +10627 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F106 6377 0 R /F95 6017 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10675 0 obj << +/Length 1562 +/Filter /FlateDecode +>> +stream +xXmo6_! 4J,tkѢk\CؚeK`MXqD4E{H켚\NWQĈQ;['(ԉX?ve(μ(v/bJB|)"Uvu.<;QM=6uekcFba >}54_SfWUJ3Gĭ|)J`8\˜8\NňY&`'wYܩ;'}>3z O)@rK`XR(9 5]ooS/tEVEUZƶV?덙Xek4Au-J`((K(rm`j|>W_+z6,@:4<1#Hp, +/UW`@uȼ-0aZs7RQOr`rkߍKQ[}F~[?ZC_!n0raeSHTvy #QX$&J=C( +U3cxPƬ%D 51ƠW#&_ժL" o|p$N'XEݷXsulϥZr cmsdϘ M-`r00+xGdElZm@n8k"+X䅌۱<7_.`rfU즚,t00("U̖ +(%TVczȇ{Wyӑ֐Q/kԬχHq-"8"th}9%iu|N]cI`v(b-l/ nKlarjqS]*a143f"Q-N678ėMSwīi偧D,𑏃n}wqIgwy2pںV#צVgXSPbr~KZKN&LC?^WtzwEy)l웬{9 n +-mq;{q{O+FL̀wI.Wy,eMۦA>&'m9, m˓!nY?5RE45!J2bl[\n=+sPń/j{HËG5_5E!V]ly$# +endstream +endobj +10674 0 obj << +/Type /Page +/Contents 10675 0 R +/Resources 10673 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10532 0 R +/Annots [ 10623 0 R 10624 0 R 10625 0 R 10626 0 R 10669 0 R 10670 0 R 10671 0 R ] +>> endobj +10623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.08 758.269 398.541 767.992] +/A << /S /GoTo /D (group__public_api_ga8d4a6786d6193f0e6245c44e4a7bb4a0) >> +>> endobj +10624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 744.382 186.646 754.758] +/A << /S /GoTo /D (_enums_8cs_a8c224c940c96213eca8a8b02aa81fdb0) >> +>> endobj +10625 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.634 744.382 336.427 754.758] +/A << /S /GoTo /D (_enums_8cs_a8c224c940c96213eca8a8b02aa81fdb0a279497bbf0f95253e9d5bb0de757d10d) >> +>> endobj +10626 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [339.419 744.382 490.628 754.758] +/A << /S /GoTo /D (_enums_8cs_a8c224c940c96213eca8a8b02aa81fdb0ad8d9b213c7c5146145b74119aa01c9a3) >> +>> endobj +10669 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [146.02 580.616 267.564 591.09] +/Subtype/Link/A<> +>> endobj +10670 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.665 562.884 266.671 573.466] +/A << /S /GoTo /D (class_photon_network_a84b7be74d130b19eeeb1d7b4e8193ad4) >> +>> endobj +10671 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.374 286.052 394.771 296.634] +/A << /S /GoTo /D (class_region) >> +>> endobj +10676 0 obj << +/D [10674 0 R /XYZ 69.866 801.979 null] +>> endobj +4318 0 obj << +/D [10674 0 R /XYZ 70.866 712.925 null] +>> endobj +4322 0 obj << +/D [10674 0 R /XYZ 70.866 651.239 null] +>> endobj +8514 0 obj << +/D [10674 0 R /XYZ 70.866 623.901 null] +>> endobj +4326 0 obj << +/D [10674 0 R /XYZ 70.866 623.901 null] +>> endobj +10643 0 obj << +/D [10674 0 R /XYZ 88.314 524.115 null] +>> endobj +10644 0 obj << +/D [10674 0 R /XYZ 88.314 507.439 null] +>> endobj +10645 0 obj << +/D [10674 0 R /XYZ 88.314 490.763 null] +>> endobj +10646 0 obj << +/D [10674 0 R /XYZ 88.314 474.086 null] +>> endobj +10647 0 obj << +/D [10674 0 R /XYZ 88.314 457.41 null] +>> endobj +10648 0 obj << +/D [10674 0 R /XYZ 88.314 440.734 null] +>> endobj +10649 0 obj << +/D [10674 0 R /XYZ 88.314 424.057 null] +>> endobj +10650 0 obj << +/D [10674 0 R /XYZ 88.314 407.381 null] +>> endobj +10651 0 obj << +/D [10674 0 R /XYZ 88.314 390.704 null] +>> endobj +10652 0 obj << +/D [10674 0 R /XYZ 88.314 374.028 null] +>> endobj +10653 0 obj << +/D [10674 0 R /XYZ 88.314 357.352 null] +>> endobj +10432 0 obj << +/D [10674 0 R /XYZ 70.866 346.651 null] +>> endobj +4330 0 obj << +/D [10674 0 R /XYZ 70.866 329.678 null] +>> endobj +10654 0 obj << +/D [10674 0 R /XYZ 88.314 229.66 null] +>> endobj +10655 0 obj << +/D [10674 0 R /XYZ 88.314 212.983 null] +>> endobj +10656 0 obj << +/D [10674 0 R /XYZ 88.314 196.307 null] +>> endobj +10657 0 obj << +/D [10674 0 R /XYZ 88.314 179.63 null] +>> endobj +10658 0 obj << +/D [10674 0 R /XYZ 88.314 162.954 null] +>> endobj +10659 0 obj << +/D [10674 0 R /XYZ 88.314 146.278 null] +>> endobj +10660 0 obj << +/D [10674 0 R /XYZ 88.314 129.601 null] +>> endobj +10661 0 obj << +/D [10674 0 R /XYZ 88.314 112.925 null] +>> endobj +10662 0 obj << +/D [10674 0 R /XYZ 88.314 96.249 null] +>> endobj +10663 0 obj << +/D [10674 0 R /XYZ 88.314 79.572 null] +>> endobj +8743 0 obj << +/D [10674 0 R /XYZ 70.866 70.866 null] +>> endobj +10673 0 obj << +/Font << /F74 4717 0 R /F106 6377 0 R /F39 4678 0 R /F73 4716 0 R /F95 6017 0 R /F109 6535 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10687 0 obj << +/Length 1709 +/Filter /FlateDecode +>> +stream +xXKs8ϯrY +k$K~Pɒd9gx`ل{$Y2ȭVw[l~3'AiQ҉1JȉE9˝nCe,TӇE=?wY+Zf_f$CI9j3vrxi\+a!E!0.3l(P>#:E1 +|1vyn_I&Ö1˦Bq +p匵b~HӍY Ea׿*+W/]^Š\j 5l.[EY@DSx_OD5weۥA^*h41$>CiB{0(6vj @,H$Pk/X !J1x1)Sku]tEVÂuY,nBLbX=2E+7ki&|nO5:VGBzMUyO_[wwfWPe m‘_p'f^MOb+^@mvU҄#9Te'6á%'+goْ=ej;UYm~!^qGb%iܿ7&.*jZ@[Mi=ʊ%jac2ơCrM<ZLeereU@, !c Y@mdk)V9?Hݧz +̏c"~'DjPFwzzZ-K 04ès$s$`h9 0 0>ǵ?$ T:T2J+j<554 )׫ba.mTr+>vYl3]A= I(IEPZ~culen4s$=Xd |QU9^rZ] ͙*c7s8niP~R +endstream +endobj +10686 0 obj << +/Type /Page +/Contents 10687 0 R +/Resources 10685 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10532 0 R +/Annots [ 10672 0 R 10680 0 R 10681 0 R 10682 0 R 10683 0 R 10684 0 R ] +>> endobj +10672 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.571 733.411 391.417 743.994] +/A << /S /GoTo /D (group__public_api_ga8d4a6786d6193f0e6245c44e4a7bb4a0) >> +>> endobj +10680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 377.311 163.541 385.795] +/A << /S /GoTo /D (class_extensions) >> +>> endobj +10681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 349.24 213.868 359.714] +/A << /S /GoTo /D (class_game_object_extensions) >> +>> endobj +10682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 278.721 160.877 289.303] +/A << /S /GoTo /D (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 266.574 190.816 277.156] +/A << /S /GoTo /D (_extensions_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) >> +>> endobj +10684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 83.907 159.515 92.597] +/A << /S /GoTo /D (class_friend_info) >> +>> endobj +10688 0 obj << +/D [10686 0 R /XYZ 69.866 801.979 null] +>> endobj +4334 0 obj << +/D [10686 0 R /XYZ 70.866 771.024 null] +>> endobj +10664 0 obj << +/D [10686 0 R /XYZ 88.314 697.406 null] +>> endobj +10665 0 obj << +/D [10686 0 R /XYZ 88.314 683.074 null] +>> endobj +10666 0 obj << +/D [10686 0 R /XYZ 88.314 668.742 null] +>> endobj +10667 0 obj << +/D [10686 0 R /XYZ 88.314 654.409 null] +>> endobj +10668 0 obj << +/D [10686 0 R /XYZ 88.314 640.077 null] +>> endobj +10677 0 obj << +/D [10686 0 R /XYZ 70.866 632.139 null] +>> endobj +4338 0 obj << +/D [10686 0 R /XYZ 70.866 617.656 null] +>> endobj +10678 0 obj << +/D [10686 0 R /XYZ 88.314 538.372 null] +>> endobj +10679 0 obj << +/D [10686 0 R /XYZ 88.314 512.084 null] +>> endobj +10689 0 obj << +/D [10686 0 R /XYZ 70.866 480.344 null] +>> endobj +4342 0 obj << +/D [10686 0 R /XYZ 70.866 470.631 null] +>> endobj +10690 0 obj << +/D [10686 0 R /XYZ 70.866 414.529 null] +>> endobj +10691 0 obj << +/D [10686 0 R /XYZ 70.866 317.83 null] +>> endobj +4346 0 obj << +/D [10686 0 R /XYZ 70.866 253.086 null] +>> endobj +6098 0 obj << +/D [10686 0 R /XYZ 70.866 226.203 null] +>> endobj +4350 0 obj << +/D [10686 0 R /XYZ 70.866 226.203 null] +>> endobj +10692 0 obj << +/D [10686 0 R /XYZ 70.866 201.777 null] +>> endobj +4354 0 obj << +/D [10686 0 R /XYZ 70.866 201.777 null] +>> endobj +10693 0 obj << +/D [10686 0 R /XYZ 70.866 177.119 null] +>> endobj +4358 0 obj << +/D [10686 0 R /XYZ 70.866 177.119 null] +>> endobj +10694 0 obj << +/D [10686 0 R /XYZ 70.866 121.124 null] +>> endobj +10695 0 obj << +/D [10686 0 R /XYZ 70.866 64.758 null] +>> endobj +10685 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F109 6535 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10727 0 obj << +/Length 1851 +/Filter /FlateDecode +>> +stream +xY[sF~ׯ`frϛc;Du! BNNOr;7l, l\^Gמm(p]˘F^`#yl|2DxB=<}9=cc_2lR83VO~;V?)6>ӓbu(zyǑ^EUrɟ|>vX0MUR$eݍ 6Yɲ[ĤG# +`4{>rψVO7ʕa;rl SVhbD~/[ 8mp]KF|6cbrg+mo=T 'Lv(!6|Z ft,`e;@˒K8hm_rH\!m8COSy\ꂑWlL*ihU]1:}mP .|!sPt5>M5#.VMpg*ʫ_"\`;:MD +B/eCyZmjat|A(>\֝g+:ɳ2Nz> +vлm_Ǒg?&%P,!Vzw&C;2e goN׷{c@tV6 +0B6o+VzmY6e(\V`? Zq_m0zX]ymg\Wr:f)0N}\W,wy ]CrDw&bEQ%MbVɩ` &Lu1)x^cTDr 푂f4QWv20EDB=9LMT3U.V|.{ڪN{ O|L?ÀPHTףś<ɮ|u+Ja'QB"19.{_ i*3hm(D9(Sy!_5vʖ9[w֕ISUde: +Y)[_pd:70>64|zz ;d[.. 0[NoyŅ=U\p}:U E7mQt9!_D}I :Ywe& +&b5ra=n2  (k~:3lW 9&|gK-6O7hkwB +}89"ܱ'0aq|=ۣ-p7A^{s}()yB[ZixQNݯ9|_>L$| ZЍ6W,;  | TN@0J2jl:a`>=_IŚԈ9Y,8=%[~oN)eU5j4i: Gňƻ3;wXWXzL-~rko#^&?TD,J8^⧳bkPrL=hwYY[ê:Ȳuz>ܜt5s ,Ѯk$oRE`7Y"%atLu ӧPKN~:>OOhQϵ[Im ,w/5gLE +qb%/mWC7l_ +V֯ ~{U +endstream +endobj +10726 0 obj << +/Type /Page +/Contents 10727 0 R +/Resources 10725 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10736 0 R +/Annots [ 10696 0 R 10697 0 R 10698 0 R 10699 0 R 10700 0 R 10732 0 R 10701 0 R 10702 0 R 10733 0 R 10703 0 R 10704 0 R 10705 0 R 10706 0 R 10707 0 R 10708 0 R 10709 0 R 10710 0 R 10711 0 R 10712 0 R 10713 0 R 10714 0 R 10715 0 R 10716 0 R 10717 0 R 10718 0 R 10719 0 R ] +>> endobj +10696 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 687.147 283.024 697.622] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_g_u_i_1_1_gizmo_type_drawer) >> +>> endobj +10697 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 629.749 220.53 640.332] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i) >> +>> endobj +10698 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.744 572.567 260.543 583.042] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65) >> +>> endobj +10699 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.81 572.567 461.3 583.042] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65ab37d9c6b396307dda685c3c65c20e359) >> +>> endobj +10700 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.467 572.567 525.406 583.042] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65ab7095f057db3fefa7325ad93a04e14fd) >> +>> endobj +10732 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 560.612 216.638 571.087] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65ab7095f057db3fefa7325ad93a04e14fd) >> +>> endobj +10701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.624 560.612 410.637 571.087] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65a70ab99161d5df5bb7e0edb7407f65483) >> +>> endobj +10702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.622 560.612 525.406 571.087] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65aa296104f0c61a9cf39f4824d05315e12) >> +>> endobj +10733 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 548.657 165.316 559.131] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65aa296104f0c61a9cf39f4824d05315e12) >> +>> endobj +10703 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [287.489 412.342 315.054 422.066] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10704 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 375.937 161.039 384.708] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +10705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 361.29 148.159 369.383] +/A << /S /GoTo /D (class_error_code) >> +>> endobj +10706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.535 361.29 325.1 369.383] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10707 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 346.896 181.831 357.164] +/A << /S /GoTo /D (class_actor_properties) >> +>> endobj +10708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 308.599 193.255 319.074] +/A << /S /GoTo /D (class_game_property_key) >> +>> endobj +10709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [440.658 294.026 468.223 303.75] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 272.007 163.818 280.778] +/A << /S /GoTo /D (class_event_code) >> +>> endobj +10711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.132 255.73 364.697 265.453] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 233.71 182.522 242.481] +/A << /S /GoTo /D (class_parameter_code) >> +>> endobj +10713 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 204.67 180.397 215.144] +/A << /S /GoTo /D (class_operation_code) >> +>> endobj +10714 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 177.332 174.497 187.807] +/A << /S /GoTo /D (class_room_options) >> +>> endobj +10715 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 149.995 196.204 160.469] +/A << /S /GoTo /D (class_raise_event_options) >> +>> endobj +10716 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 122.657 167.683 132.926] +/A << /S /GoTo /D (class_typed_lobby) >> +>> endobj +10717 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 95.32 182.37 105.794] +/A << /S /GoTo /D (class_typed_lobby_info) >> +>> endobj +10718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 84.432 203.019 92.916] +/A << /S /GoTo /D (class_authentication_values) >> +>> endobj +10719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.537 68.171 264.102 77.798] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10728 0 obj << +/D [10726 0 R /XYZ 69.866 801.979 null] +>> endobj +4362 0 obj << +/D [10726 0 R /XYZ 70.866 771.024 null] +>> endobj +10729 0 obj << +/D [10726 0 R /XYZ 70.866 726.674 null] +>> endobj +10730 0 obj << +/D [10726 0 R /XYZ 70.866 669.384 null] +>> endobj +10731 0 obj << +/D [10726 0 R /XYZ 70.866 612.094 null] +>> endobj +10734 0 obj << +/D [10726 0 R /XYZ 70.866 541.085 null] +>> endobj +4366 0 obj << +/D [10726 0 R /XYZ 70.866 533.503 null] +>> endobj +10735 0 obj << +/D [10726 0 R /XYZ 70.866 477.401 null] +>> endobj +10725 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10786 0 obj << +/Length 2385 +/Filter /FlateDecode +>> +stream +xZs8_嘪 + *?xؕTgmg朗}aJ~j0''Zju?n-f|ui Љ|ߵn9[A$[W3-vra̕>|OLM"WEZȑ(0tB!dq7f`Qhkʅ%= ϙuy3dzҮřxߞVOu> lROjMө}'k*rEyy gop[ M%B~[b6pdzҾf?T(KH<+u3qjً1HمiY#|`|9_^ߡ[1C kʹyL졇zDR-lZA˦<˜U []Q?4 &³lUS *4x~S( =p$Lp7QV*JJX*"1TK-8k3 micgpi9, >/H^]&i? +j)rCncjѐYPwjA+G~5xBkmOpD)۸]qi~;dH6.޲q, L+#Bs a/'\,+l+eҕsDzp-oO{ci=ViNT#'%M!s L_{@|b KU؜? +Λ@i$ .ݳ5OwF]wC3R!S%ݽ'uDk~9]) >4 ?l.SA;Fh_- &%0,Zw0I9NfC~ ygBG+ĐC1Gx5 n2V6 J0O$2Q벝x !:i"f4 E1K1W3.93e琙=>\!?. - \icI:IC84#E0FSOA~<@p_&]v1#fACTlZZ _*;K}`#qf@q3ʼ+X(nk=U1k$.otJ43UE93PG~W\#c ]NUNoOBQ@F# BmYgtx:!OB3mkaq&7"MuC;D 1vS8⺄LnlסHokK +hw@Rw8/_*kCx[ܘ|k] .Ym7е.V =Yrĩ60s@ccОA,|Q({6QR*ꪙ+e'dqYC|PoM> endobj +10720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.649 733.366 160.51 743.841] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9) >> +>> endobj +10721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.559 733.366 262.914 743.841] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9a7a1920d61156abc05a60135aefe8bc67) >> +>> endobj +10722 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [281.26 733.366 394.236 743.841] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9a1e41e14c1f9344f2db61fe8653b5b001) >> +>> endobj +10723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.581 733.366 507.616 743.841] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9aa63ce0e3e810c781a410d3addc56db7f) >> +>> endobj +10724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 721.411 181.841 731.885] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9adc2168ee308fc14616dfd264d45cfd15) >> +>> endobj +10737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [120.171 679.951 197.901 690.533] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85e) >> +>> endobj +10738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.561 679.951 347.013 690.533] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85eaa5912f7a88c36ab01e9c1c38fd7bad9e) >> +>> endobj +10739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.056 679.951 506.572 690.533] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85ea85e600e069b55d677fcc38fe96002751) >> +>> endobj +10740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 667.996 245.124 678.371] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85ea43f0360f3d6dd072a905e7bf6343b565) >> +>> endobj +10741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.27 637.71 181.327 648.184] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a8058430b43015a65b81946afb4017e41) >> +>> endobj +10742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.982 637.71 302.126 648.184] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a8058430b43015a65b81946afb4017e41a52ef9633d88a7480b3a938ff9eaa2a25) >> +>> endobj +10743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [319.39 637.71 393.587 648.184] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a8058430b43015a65b81946afb4017e41ab1c94ca2fbc3e78fc30069c8d0f01680) >> +>> endobj +10744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.851 637.71 525.406 648.184] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a8058430b43015a65b81946afb4017e41ad0209f4a40060d6e7c37d29979d8f444) >> +>> endobj +10745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 584.294 177.187 594.876] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816) >> +>> endobj +10746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 572.339 206.175 582.921] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816aed89696ce2a8a4cfb22e37d482c72cbb) >> +>> endobj +10747 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.014 572.339 336.413 582.921] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816ac9a823ae99d397814cb62b335ba9e0a9) >> +>> endobj +10748 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.252 572.339 474.128 582.921] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a28f79c65a5ac3ff0e04978cf99f7e540) >> +>> endobj +10749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [492.968 572.339 525.406 582.921] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816ad45857356b7a23b7daac5ef397b3825e) >> +>> endobj +10789 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 560.384 191.085 570.966] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816ad45857356b7a23b7daac5ef397b3825e) >> +>> endobj +10750 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 548.429 230.016 559.011] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a53f67bc41da305a88205d1ded2f35954) >> +>> endobj +10751 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.714 548.429 407.866 559.011] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a187c171b946f4fb73de86aaee4d7aad2) >> +>> endobj +10752 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.564 548.429 525.406 559.011] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a92cb14adcb4e187b188c94fb74c53dab) >> +>> endobj +10790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 536.473 167.109 547.056] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a92cb14adcb4e187b188c94fb74c53dab) >> +>> endobj +10753 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.308 536.473 402.293 547.056] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a06e5db15df6ca1969b38628518d71d76) >> +>> endobj +10754 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 524.518 230.33 535.101] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a0dc854abbac4ba563d1151c331e58c91) >> +>> endobj +10755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.061 524.518 368.687 535.101] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816af8a05e1851a5563b3aff68bf8bf8486b) >> +>> endobj +10756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.419 524.518 517.509 535.101] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816acdf56f0af5cd6eecb93e8d808c131841) >> +>> endobj +10757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.732 512.563 255.668 523.145] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816ae426b4afc51b756484914daadb36ad4d) >> +>> endobj +10758 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.334 460.252 191.864 470.834] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8) >> +>> endobj +10759 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.744 460.252 318.195 470.834] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8a6adf97f83acf6453d4a6a4b1070f3754) >> +>> endobj +10760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.093 460.252 449.53 470.834] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8a63d72051e901c069f8aa1b32aa0c43bb) >> +>> endobj +10761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [481.428 460.252 525.406 470.834] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8a1cc84619677de81ee6e44149845270a3) >> +>> endobj +10791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 447.801 156.484 459.676] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8a1cc84619677de81ee6e44149845270a3) >> +>> endobj +10762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.137 447.801 325.452 459.676] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8a68ebb8ef1cbd0371b060a93d7788d460) >> +>> endobj +10763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.907 418.011 164.911 428.485] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ad) >> +>> endobj +10764 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.25 418.011 272.748 428.485] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ada7a1920d61156abc05a60135aefe8bc67) >> +>> endobj +10765 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.933 418.011 376.406 428.485] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ada5c1bd8d2513ea60a7adcc388b0702dd9) >> +>> endobj +10766 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.59 418.011 525.406 428.485] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74adac833c502bc8e709e70d75b82c027bb6b) >> +>> endobj +10767 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.86 389.954 413.425 399.677] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10768 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [120.55 364.703 189.556 375.177] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3) >> +>> endobj +10769 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.435 364.703 287.108 375.177] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3a632c9594449737188c71ee1c8534f893) >> +>> endobj +10770 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.283 364.703 402.385 375.177] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3aa3863fc49e47221d013aed5edca1ca03) >> +>> endobj +10771 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.56 364.703 525.406 375.177] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3ae36ec8ecce3ddc0a8ce532dd4d5133dd) >> +>> endobj +10792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 352.878 114.199 363.016] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3ae36ec8ecce3ddc0a8ce532dd4d5133dd) >> +>> endobj +10772 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 322.354 227.891 332.829] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257) >> +>> endobj +10773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 310.399 236.31 320.873] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a90589c47f06eb971d548591f23c285af) >> +>> endobj +10774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.385 310.399 389.943 320.873] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a4db4563826bad0eb2f60ee6e42d0ea4b) >> +>> endobj +10775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [407.017 310.399 525.406 320.873] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257ad85544fce402c7a2a96a48078edaf203) >> +>> endobj +10793 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 298.444 135.691 308.918] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257ad85544fce402c7a2a96a48078edaf203) >> +>> endobj +10776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.891 298.444 292.439 308.918] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257aa8a06837aec81e16c9a07221848aef6f) >> +>> endobj +10777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 286.489 250.504 296.963] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a3f6fb6f058deeea1407bacefec5265a2) >> +>> endobj +10778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.962 286.489 404.773 296.963] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a183709ebe3a1d675014d32b94ad7ed94) >> +>> endobj +10779 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.232 286.489 525.406 296.963] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a6adf97f83acf6453d4a6a4b1070f3754) >> +>> endobj +10794 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 274.533 139.413 284.802] +/A << /S /GoTo /D (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a6adf97f83acf6453d4a6a4b1070f3754) >> +>> endobj +10780 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.572 258.432 365.137 268.155] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10781 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 249.176 136.515 257.011] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10787 0 obj << +/D [10785 0 R /XYZ 69.866 801.979 null] +>> endobj +10788 0 obj << +/D [10785 0 R /XYZ 70.866 775.009 null] +>> endobj +4370 0 obj << +/D [10785 0 R /XYZ 70.866 231.992 null] +>> endobj +10795 0 obj << +/D [10785 0 R /XYZ 70.866 202.619 null] +>> endobj +4374 0 obj << +/D [10785 0 R /XYZ 70.866 202.619 null] +>> endobj +10796 0 obj << +/D [10785 0 R /XYZ 88.314 117.193 null] +>> endobj +10797 0 obj << +/D [10785 0 R /XYZ 88.314 100.004 null] +>> endobj +10798 0 obj << +/D [10785 0 R /XYZ 88.314 82.814 null] +>> endobj +7007 0 obj << +/D [10785 0 R /XYZ 70.866 70.866 null] +>> endobj +10784 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R /F109 6535 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10840 0 obj << +/Length 2370 +/Filter /FlateDecode +>> +stream +xڽYYw8~ϯpsvOu%fzNu?Pb0A$?J8yBhۧHaL8: $ &IQL˜܋&lŊmƦ37s1ex^V*gMuUsIȧXU5/OFFVj/Ȍ1;}6ZzSyl{JHL=e Ѹ A[q?e0e +];<\C.G1ÙNadq8IWG_p&G'5s5g܃v1Jul&~*lb.8g9 v܍6Zv6Z\Ri"\BoЧXdwO@;kݡIމq|Žu3 o2sk$ꎙu|T5Tj$)qJ?~7<z϶\)K ک~:|Qs5B6lygi@Ծ^ԟKI d'K<;k8buCԉu}/ӷ"Dl}=Ѐ4I*OjL]Z;Kelh΁t 'R4 R*MWZbspH;r1؞KF1.K<ֺ8kj11qg2ʫs Wef!C'/ސ9j JնL~B!!KJNgFjEFd1ٴY'Je\ HhJVUN@*5MjSvn\+p aG}mYTZ򲗏dZWFȉL}UWf鍮5w,w Ei,מTu{ic6޹P*i 9JRA1履ˆ0#8,q8Xw^Ak 7ȧh3\V]6_" `_HyKx>L<(.+Q)0vA٫3*#_U?)0ݯau?8f5O~ @IҖjSu%e5AˁO3.[L#0-BۅPi,<ˋ"bp1h`,%^4*'X/e>E^nP]׎Jqvsa nZ2X1.} W.7E˪>U훏^8?W{i`_uO߭ ;5:]5 pVZ+-DR.س#BB{y2~fJ{+{ʑUshSR Rfq;> endobj +10782 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.576 733.411 355.982 743.994] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10783 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [79.84 723.348 110.247 731.832] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10837 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.74 585.996 451.065 596.578] +/A << /S /GoTo /D (class_authentication_values) >> +>> endobj +10841 0 obj << +/D [10839 0 R /XYZ 69.866 801.979 null] +>> endobj +4378 0 obj << +/D [10839 0 R /XYZ 70.866 771.024 null] +>> endobj +10830 0 obj << +/D [10839 0 R /XYZ 88.314 683.707 null] +>> endobj +10831 0 obj << +/D [10839 0 R /XYZ 88.314 667.92 null] +>> endobj +10832 0 obj << +/D [10839 0 R /XYZ 88.314 652.134 null] +>> endobj +10833 0 obj << +/D [10839 0 R /XYZ 88.314 636.347 null] +>> endobj +10834 0 obj << +/D [10839 0 R /XYZ 88.314 620.56 null] +>> endobj +10835 0 obj << +/D [10839 0 R /XYZ 88.314 604.774 null] +>> endobj +10836 0 obj << +/D [10839 0 R /XYZ 88.314 588.987 null] +>> endobj +10100 0 obj << +/D [10839 0 R /XYZ 70.866 565.565 null] +>> endobj +4382 0 obj << +/D [10839 0 R /XYZ 70.866 550.397 null] +>> endobj +10810 0 obj << +/D [10839 0 R /XYZ 88.314 427.751 null] +>> endobj +10811 0 obj << +/D [10839 0 R /XYZ 88.314 411.964 null] +>> endobj +10812 0 obj << +/D [10839 0 R /XYZ 88.314 396.177 null] +>> endobj +10813 0 obj << +/D [10839 0 R /XYZ 88.314 380.391 null] +>> endobj +10814 0 obj << +/D [10839 0 R /XYZ 88.314 364.604 null] +>> endobj +10815 0 obj << +/D [10839 0 R /XYZ 88.314 348.817 null] +>> endobj +10816 0 obj << +/D [10839 0 R /XYZ 88.314 321.075 null] +>> endobj +10817 0 obj << +/D [10839 0 R /XYZ 88.314 305.289 null] +>> endobj +10818 0 obj << +/D [10839 0 R /XYZ 88.314 277.547 null] +>> endobj +10819 0 obj << +/D [10839 0 R /XYZ 88.314 261.76 null] +>> endobj +10820 0 obj << +/D [10839 0 R /XYZ 88.314 245.973 null] +>> endobj +10821 0 obj << +/D [10839 0 R /XYZ 88.314 218.231 null] +>> endobj +10799 0 obj << +/D [10839 0 R /XYZ 70.866 196.726 null] +>> endobj +4386 0 obj << +/D [10839 0 R /XYZ 70.866 181.558 null] +>> endobj +10800 0 obj << +/D [10839 0 R /XYZ 88.314 70.866 null] +>> endobj +10838 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F109 6535 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10845 0 obj << +/Length 2472 +/Filter /FlateDecode +>> +stream +xڵYIsWt1Xe"ër,Y%9RI$ @cldhIyY~=L̮~?}";wvŽ`jŒ›~ašpPOr5_0.ʴݩI,p3vӑ";,ݝ}]Vahwfھ8}>L0bȮ#@uY80 TҨ_7es=ZdC$TYѸ*57澰jz*ʆj + yȊ=_gV-qѼvᆳ 7@=jp<;N/mu@!O$p0tJQhW,+6ۆ&ʖ'59iGRhޖm%dxٚe]g˹V`ޡp܁--jʷeRZsGXj;}Pcūq-KW G*i)p*FpI-Kmy{'y`7fh)C+-# &c6 0KT;S7+osp;PPžJ~ROi$vh. h-OѸOEt6 wWg/zmٔͨj#CQKڷUqi / n+]h[/yv9@l%9eDj?\)mO@- Nڼ9(QX+\߳RK胣"W5&[xP0{jIvFFa3ث܁oAtYw\'8"V5y0R,5Q[Aü165,x4=ro\4SssyEcx:Mz:xtyHFGZp~5^SM^B׃pK׏+9G(psiGG*2 6u +vOz\hP r̊e}[?)IN"s"ϓ֪TW0XB&CN8Xq>dz:ڌH6WOJ#s'] ӧ UȦ˥MF0ܗ +uƶ X0'Qjگ8І]'u:ܡB7@ƈ6?tCӿ AdLf~׏OoG3rx \Xc2,dU7 +>%yc)~03PQJB +qR )5S?nABE +1rXv}R|iQwt>iwo4|{s!2{rp5kk)ab >U!LbgzA͑4v‹1=O69w~G+F]&l> j>xzyS')c; F|beD2@Ey'͚\ax?;gpj4Mn1z?mʺȟ.zhyҌ*ā +P{8twMna{LzňG.z&ݩTeTuE%!ދ 8ct5xV͕`HC-k>MNZ0goFqw0nqVKN kXʓ6Pkbbzu' +wxu-Ny{ 7n|o7nإ JFuC*|]1R9r!+xkvl~3n0yb(/m +endstream +endobj +10844 0 obj << +/Type /Page +/Contents 10845 0 R +/Resources 10843 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10736 0 R +/Annots [ 10842 0 R ] +>> endobj +10842 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [400.648 654.638 431.054 665.22] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10846 0 obj << +/D [10844 0 R /XYZ 69.866 801.979 null] +>> endobj +10801 0 obj << +/D [10844 0 R /XYZ 88.314 761.061 null] +>> endobj +10802 0 obj << +/D [10844 0 R /XYZ 88.314 746.44 null] +>> endobj +10803 0 obj << +/D [10844 0 R /XYZ 88.314 719.863 null] +>> endobj +10488 0 obj << +/D [10844 0 R /XYZ 70.866 712.644 null] +>> endobj +4390 0 obj << +/D [10844 0 R /XYZ 70.866 698.025 null] +>> endobj +10827 0 obj << +/D [10844 0 R /XYZ 88.314 607.848 null] +>> endobj +10828 0 obj << +/D [10844 0 R /XYZ 88.314 581.271 null] +>> endobj +10829 0 obj << +/D [10844 0 R /XYZ 88.314 554.695 null] +>> endobj +8576 0 obj << +/D [10844 0 R /XYZ 70.866 534.187 null] +>> endobj +4394 0 obj << +/D [10844 0 R /XYZ 70.866 519.568 null] +>> endobj +10804 0 obj << +/D [10844 0 R /XYZ 88.314 439.454 null] +>> endobj +10805 0 obj << +/D [10844 0 R /XYZ 88.314 412.878 null] +>> endobj +10806 0 obj << +/D [10844 0 R /XYZ 88.314 386.301 null] +>> endobj +10822 0 obj << +/D [10844 0 R /XYZ 70.866 365.686 null] +>> endobj +4398 0 obj << +/D [10844 0 R /XYZ 70.866 351.067 null] +>> endobj +10823 0 obj << +/D [10844 0 R /XYZ 88.314 271.06 null] +>> endobj +10824 0 obj << +/D [10844 0 R /XYZ 88.314 256.439 null] +>> endobj +10825 0 obj << +/D [10844 0 R /XYZ 88.314 241.818 null] +>> endobj +10826 0 obj << +/D [10844 0 R /XYZ 88.314 227.197 null] +>> endobj +10103 0 obj << +/D [10844 0 R /XYZ 70.866 218.537 null] +>> endobj +4402 0 obj << +/D [10844 0 R /XYZ 70.866 203.917 null] +>> endobj +10807 0 obj << +/D [10844 0 R /XYZ 88.314 112.064 null] +>> endobj +10808 0 obj << +/D [10844 0 R /XYZ 88.314 97.442 null] +>> endobj +10809 0 obj << +/D [10844 0 R /XYZ 88.314 82.821 null] +>> endobj +10847 0 obj << +/D [10844 0 R /XYZ 70.866 62.206 null] +>> endobj +10843 0 obj << +/Font << /F74 4717 0 R /F109 6535 0 R /F39 4678 0 R /F73 4716 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10893 0 obj << +/Length 2024 +/Filter /FlateDecode +>> +stream +xZ]s8ϯ`zgֲًMv'&U+ S ~ 4ɻ=G0B:zs>֝Egogg [ =ϵfOIyrͭvH3;~`O_O>/l\̿yr)Kʧɕj(ˇC|-&oByEޣf1c$BzVwIVlʝt;^\jKy&q'HRAbhbƒF +Dpv>; b ~@з翨5ga`= }jݜyF 8oRsZ!!cMXdF)Yf dyl$n{Qw[ }4-*PCB9սK؈h8.p'h&]dW#+[ilh[)~kL"&Rۦi]1:pVh0o"49茵>b]ncaA} 9+.T.dV;__+p l|rGQe1=fW$׫O'̵=Ǝ(MtWTiPfY¸ 23WL5fGEj(cePIěDKH!Gq|3էLU OTܗFn~CbxL|$4!iC R#ܓT%ڒSTwl7b3H*B2ɳnDWhnʨomtGwmKB` +pd(j$T$4*JV' y *1Ews[dr~EvAP!%K82.#.U=* Q+A#[ h21\jT=s=4OY':B.et8NlKhORJMlL3u`lff܁?\ڎ,n K\kRcP#)C +8$cw(̃XtΟ% WP#|Kl*e2Kñ4y{C!fgSSE^i2/a@;_wFCl=NZFt0#4otF< qM$׿Z عNmWzӒOi8 +AvUj2ru7G=̀]Y-IZ2ٚ [ι}nߕeCE Y?.@Xs_V!uV-qlFӜ; +˼э֞۟-e@lAcՄTҎL&Ns0s:UGªvs60<:hfiάz',1V׽x-m~Oah;Q29vgn=5|pqHNˉ_@.oiV=Pj8֡=%#>?Ax{.p|/3]K79sfB_<⾦5tA~G1,~|Cbq M`>3 +endstream +endobj +10892 0 obj << +/Type /Page +/Contents 10893 0 R +/Resources 10891 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10736 0 R +/Annots [ 10848 0 R 10849 0 R 10850 0 R 10851 0 R 10852 0 R 10853 0 R 10854 0 R 10855 0 R 10856 0 R 10857 0 R 10858 0 R 10859 0 R 10860 0 R 10861 0 R 10862 0 R 10863 0 R 10864 0 R 10865 0 R 10866 0 R 10867 0 R 10898 0 R 10868 0 R 10869 0 R 10870 0 R 10871 0 R 10899 0 R 10872 0 R 10873 0 R 10874 0 R 10875 0 R 10876 0 R 10900 0 R 10877 0 R 10901 0 R 10878 0 R 10879 0 R 10880 0 R 10881 0 R 10882 0 R 10902 0 R 10883 0 R 10884 0 R 10903 0 R 10885 0 R 10904 0 R 10886 0 R 10887 0 R 10888 0 R 10889 0 R 10890 0 R 10905 0 R ] +>> endobj +10848 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.754 670.247 180.318 679.784] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10849 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.655 670.247 452.852 679.784] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +10850 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 598.957 160.877 609.539] +/A << /S /GoTo /D (_networking_peer_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10851 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 585.404 190.816 595.986] +/A << /S /GoTo /D (_networking_peer_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) >> +>> endobj +10852 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 525.51 165.45 535.854] +/A << /S /GoTo /D (group__public_api_ga8d4a6786d6193f0e6245c44e4a7bb4a0) >> +>> endobj +10853 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 513.985 191.174 523.899] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0af704f57ea420275ad51bf55b7dec2c96) >> +>> endobj +10854 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.167 513.985 292.752 523.899] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a8f20319172b2aa6813ba3359f8790a39) >> +>> endobj +10855 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.745 513.985 375.851 523.899] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a7b2f31b90fe1c2cc33a52233c1925df3) >> +>> endobj +10856 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.843 513.985 481.607 523.899] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa927b3e1f83aa1b3c6feff945ca18f77) >> +>> endobj +10857 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 501.362 193.55 511.944] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a628d81b73c9e217e7388d07c448d98bf) >> +>> endobj +10858 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.069 501.362 373.45 511.944] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ab468dfbd5b304bf96c74152856bd09a7) >> +>> endobj +10859 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.969 501.362 528.28 511.944] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a2adb83359e79fb5cfc94ab00dcf2184b) >> +>> endobj +10860 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 490.075 245.097 499.989] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a5310d1fb96be7d3ddd41079a9249c2b3) >> +>> endobj +10861 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 477.452 171.386 488.034] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0af6807db4ae3a5c82b99bced82a0ca92b) >> +>> endobj +10862 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.378 477.452 248.997 488.034] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a7d50c09f1ad7d098e0a847bcdcab7efb) >> +>> endobj +10863 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.99 477.452 331.414 488.034] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa9c7b1d7219fa9d3de551ba5bc639eb6) >> +>> endobj +10864 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [334.407 477.452 508.802 488.034] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ac2b8e7a526f5bdbd0ca4e42a1fc87fdf) >> +>> endobj +10865 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 465.496 250.073 476.079] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a6bfd906f466d549d660a2e7356ac58dd) >> +>> endobj +10866 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.327 465.496 450.204 476.079] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a88a122d877a08d17b85e005b97321320) >> +>> endobj +10867 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.458 465.496 525.406 476.079] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a10b0501000c144cb2a7424bd45e1bcde) >> +>> endobj +10898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 453.541 153.077 464.123] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a10b0501000c144cb2a7424bd45e1bcde) >> +>> endobj +10868 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.07 453.541 258.591 464.123] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aef70e46fd3bbc21e3e1f0b6815e750c0) >> +>> endobj +10869 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 441.586 223.13 452.168] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aaf3c26fc49c920a4779844921baeeef8) >> +>> endobj +10870 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.31 441.586 384.617 452.168] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ae047588dabb5a0b1e059604b80289791) >> +>> endobj +10871 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.797 441.586 525.406 452.168] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ac495884e9133962e72063062d1382466) >> +>> endobj +10899 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 429.631 123.219 440.213] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ac495884e9133962e72063062d1382466) >> +>> endobj +10872 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.212 429.631 301.602 440.213] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa3db59f96790ca93f6c8ac703735f401) >> +>> endobj +10873 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 417.676 199.531 428.258] +/A << /S /GoTo /D (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aedb214653d9f3cecd840463790ac2894) >> +>> endobj +10874 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 366.897 191.856 377.242] +/A << /S /GoTo /D (group__public_api_gad61b1461cf60ad9e8d86923d111d5cc9) >> +>> endobj +10875 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 354.812 288.503 365.287] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a443ec8de9a697e190f4b24ab3ab36a9d) >> +>> endobj +10876 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [471.323 354.812 525.406 365.287] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ae28f71975b160263c7e6438b4b4429ef) >> +>> endobj +10900 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 342.857 209.761 353.331] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ae28f71975b160263c7e6438b4b4429ef) >> +>> endobj +10877 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.792 342.857 525.406 353.331] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a354c849d41c85993a8a28975e0d1c996) >> +>> endobj +10901 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 330.794 129.155 341.376] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a354c849d41c85993a8a28975e0d1c996) >> +>> endobj +10878 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [277.679 330.794 454.979 341.376] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9abbec862190460d01acb3557a0e9a13f5) >> +>> endobj +10879 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 306.991 208.757 317.466] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ab0d4998a26f5b5742ad38c4af8817e32) >> +>> endobj +10880 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [323.116 306.991 479.784 317.466] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ab67551dad56fc73fd4a580e810dc5f7f) >> +>> endobj +10881 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.134 295.597 348.507 305.511] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a522f961eb7a2b35f0ef4b99b4ad3bb0a) >> +>> endobj +10882 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [472.536 295.597 525.406 305.511] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9aa8534012cb63e62c0b3a2335206117cc) >> +>> endobj +10902 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 282.973 178.953 293.556] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9aa8534012cb63e62c0b3a2335206117cc) >> +>> endobj +10883 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 271.126 286.629 281.6] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a281086f3f83f5f38b4b9a4572b60a368) >> +>> endobj +10884 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [471.323 271.126 525.406 281.6] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a9b962f813e1575d4d311a9ab3e60afd4) >> +>> endobj +10903 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 259.171 235.154 269.645] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a9b962f813e1575d4d311a9ab3e60afd4) >> +>> endobj +10885 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [380.764 259.171 525.406 269.645] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a927b48448e5111f5bac2a7d59833f051) >> +>> endobj +10904 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 247.216 136.14 257.69] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a927b48448e5111f5bac2a7d59833f051) >> +>> endobj +10886 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [281.919 247.216 467.029 257.69] +/A << /S /GoTo /D (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a65537dc549af3f90695ff7cf0002b17b) >> +>> endobj +10887 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.433 218.247 198.227 228.592] +/A << /S /GoTo /D (_networking_peer_8cs_a85638c2837a71574f29802d46793c990) >> +>> endobj +10888 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.873 218.247 344.01 228.592] +/A << /S /GoTo /D (_networking_peer_8cs_a85638c2837a71574f29802d46793c990a183832aa8cc99ec3e781066d643b2d25) >> +>> endobj +10889 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.039 218.247 480.191 228.592] +/A << /S /GoTo /D (_networking_peer_8cs_a85638c2837a71574f29802d46793c990a1c7d561350ce0a5a7e51b973a3796315) >> +>> endobj +10890 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [489.22 218.247 525.406 228.592] +/A << /S /GoTo /D (_networking_peer_8cs_a85638c2837a71574f29802d46793c990a6f478184dbea3df0c2e9147987c01e64) >> +>> endobj +10905 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 206.292 194.976 216.637] +/A << /S /GoTo /D (_networking_peer_8cs_a85638c2837a71574f29802d46793c990a6f478184dbea3df0c2e9147987c01e64) >> +>> endobj +10894 0 obj << +/D [10892 0 R /XYZ 69.866 801.979 null] +>> endobj +4406 0 obj << +/D [10892 0 R /XYZ 70.866 771.024 null] +>> endobj +10895 0 obj << +/D [10892 0 R /XYZ 70.866 726.39 null] +>> endobj +10896 0 obj << +/D [10892 0 R /XYZ 70.866 639.754 null] +>> endobj +10897 0 obj << +/D [10892 0 R /XYZ 70.866 566.07 null] +>> endobj +4410 0 obj << +/D [10892 0 R /XYZ 70.866 175.146 null] +>> endobj +10906 0 obj << +/D [10892 0 R /XYZ 70.866 147.683 null] +>> endobj +4414 0 obj << +/D [10892 0 R /XYZ 70.866 147.683 null] +>> endobj +10907 0 obj << +/D [10892 0 R /XYZ 70.866 122.974 null] +>> endobj +4418 0 obj << +/D [10892 0 R /XYZ 70.866 122.974 null] +>> endobj +4422 0 obj << +/D [10892 0 R /XYZ 70.866 98.032 null] +>> endobj +8746 0 obj << +/D [10892 0 R /XYZ 70.866 70.866 null] +>> endobj +4426 0 obj << +/D [10892 0 R /XYZ 70.866 70.866 null] +>> endobj +10891 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10934 0 obj << +/Length 2189 +/Filter /FlateDecode +>> +stream +xYIw6W6{}[vw:o"acn);ί*Ti-N(~Um㉍]h>I,0&7qN3&_-]4`CX?䅚(TU'(o"vIZ|͞d0%^S?D{/&W'9LfCG؆D8p39m[FֶDFpd<+ʎyQI= BRv麔y*+&"%E6eTVjyK6u]2}E\ FfjƲΜ@DQHYU7RU +6Z쨞% +yݖKCCAUhO싰@xZQTm+WԥD*h*#Mr ? +@A+HKčoډ*8^A"سس}LDаw9>F@]̲ >P HDiPp%ܨ4GL{Vb:/UT\J4~U%Vl %hz axqGN ""Jz`SWM"4.l0reÙnp+MjJd֒$[)H9/jԁvp[DA"=_Dl}`脰* ]oi 2D;ZlϐЗBJ!phIĉM0} +STqaMOX7Cs{+Uj~bC)> )TW=)v0niRffɡ3SEojS]4L1)8qBC}h-\|G#St}X6B@\"|v[!]$OJjѧ.scÎ&l\tR6G^T1/Zc}ʙ1Sf5í{lHDF12Mc,|jwO%W:W"cGACl$in 1yEq^.NؘJ4 uz45A Cp4]GU4_.jo8+H2zۧmx1wU+_D"v_ vL@)]P@Xz培] um'mC@X̠f5maܯaD@) +endstream +endobj +10933 0 obj << +/Type /Page +/Contents 10934 0 R +/Resources 10932 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10736 0 R +/Annots [ 10911 0 R 10912 0 R 10913 0 R 10914 0 R 10915 0 R 10916 0 R 10917 0 R 10918 0 R 10919 0 R 10920 0 R 10921 0 R 10922 0 R 10923 0 R 10924 0 R 10925 0 R 10926 0 R 10927 0 R 10928 0 R 10929 0 R 10930 0 R ] +>> endobj +10911 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 716.455 100.276 726.369] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10912 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.854 620.403 174.261 630.878] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10913 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.385 478.154 197.531 486.925] +/A << /S /GoTo /D (interface_i_pun_observable) >> +>> endobj +10914 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.385 450.422 190.502 459.193] +/A << /S /GoTo /D (interface_i_pun_callbacks) >> +>> endobj +10915 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.385 411.812 195.46 420.502] +/A << /S /GoTo /D (interface_i_pun_prefab_pool) >> +>> endobj +10916 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 384.08 213.204 392.565] +/A << /S /GoTo /D (class_photon_1_1_mono_behaviour) >> +>> endobj +10917 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 356.349 206.731 364.833] +/A << /S /GoTo /D (class_photon_1_1_pun_behaviour) >> +>> endobj +10918 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.326 315.766 200.795 326.348] +/A << /S /GoTo /D (struct_photon_message_info) >> +>> endobj +10919 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.549 273.469 166.114 283.095] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10920 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 262.114 176.999 270.885] +/A << /S /GoTo /D (class_photon_stream) >> +>> endobj +10921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.21 245.64 295.179 255.363] +/A << /S /GoTo /D (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa864e7f0d7510922caf9c107b8dd771a3) >> +>> endobj +10922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.608 245.64 476.498 255.363] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +10923 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 221.72 156.054 231.988] +/A << /S /GoTo /D (class_help_u_r_l) >> +>> endobj +10924 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.675 206.95 285.398 216.673] +/A << /S /GoTo /D (class_help_u_r_l) >> +>> endobj +10925 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 193.881 311.42 204.463] +/A << /S /GoTo /D (class_unity_engine_1_1_scene_management_1_1_scene_manager) >> +>> endobj +10926 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.373 179.218 275.085 188.941] +/A << /S /GoTo /D (class_unity_engine_1_1_scene_management_1_1_scene_manager) >> +>> endobj +10927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 166.149 206.892 176.731] +/A << /S /GoTo /D (class_scene_manager_helper) >> +>> endobj +10928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 153.387 194.16 163.655] +/A << /S /GoTo /D (class_web_rpc_response) >> +>> endobj +10929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 80.744 161.389 91.12] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10930 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 67.875 261.416 78.457] +/A << /S /GoTo /D (namespace_unity_engine_1_1_scene_management) >> +>> endobj +10935 0 obj << +/D [10933 0 R /XYZ 69.866 801.979 null] +>> endobj +10908 0 obj << +/D [10933 0 R /XYZ 88.314 678.75 null] +>> endobj +10909 0 obj << +/D [10933 0 R /XYZ 88.314 662.974 null] +>> endobj +10910 0 obj << +/D [10933 0 R /XYZ 88.314 635.242 null] +>> endobj +10936 0 obj << +/D [10933 0 R /XYZ 70.866 613.757 null] +>> endobj +4430 0 obj << +/D [10933 0 R /XYZ 70.866 605.064 null] +>> endobj +10937 0 obj << +/D [10933 0 R /XYZ 70.866 516.174 null] +>> endobj +10938 0 obj << +/D [10933 0 R /XYZ 70.866 120.576 null] +>> endobj +10932 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F109 6535 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10951 0 obj << +/Length 1326 +/Filter /FlateDecode +>> +stream +xXKs6Wr394~ŝucezsIHbMHֿAeEC b~ `g`|n2܉P̙L(0戳șdε#={|4>r^5UٝUM)2o6KW{./gZ63hP'BS/,/rIrEimd4Orʕ,SErP-<:X;3Z'-R5׹u ejfm(|'In@x!oΓ"e=b2z^.s6ERחӺܧI{%@$|бy `NFWHz&Ħ[OMKZ2>|1ts(xB[5`,*A~>OU/ +mW/y.bhy7(Zw۝mRi*`uc1ub> xTGO`.Zj4:[^&zeO|>{ј4UO7]$3Ӹ⃖Nw3 $ %?u7O?iϫJ9֖Y5W2Ss̞ۢVISٴY]Ω]M2!Ɵq^]+q6e)WP+Z;|+5 ԛb?#n׭;ܾ34J> endobj +10931 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 733.671 160.877 744.254] +/A << /S /GoTo /D (_photon_classes_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10939 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 719.752 190.816 730.334] +/A << /S /GoTo /D (_photon_classes_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) >> +>> endobj +10940 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 705.832 191.784 716.414] +/A << /S /GoTo /D (namespace_photon_ac2f4b49a218ef814d00e31cd5f32bf4e) >> +>> endobj +10941 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.247 436.32 263.812 445.761] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10942 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 374.489 146.926 384.865] +/A << /S /GoTo /D (_photon_handler_8cs_a0100be52d45f14348918ea69ec09f959) >> +>> endobj +10943 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 360.569 160.877 371.152] +/A << /S /GoTo /D (_photon_handler_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 346.65 190.816 357.232] +/A << /S /GoTo /D (_photon_handler_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) >> +>> endobj +10945 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.732 156.388 167.549 166.863] +/A << /S /GoTo /D (group__optional_gui) >> +>> endobj +10946 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 94.746 218.772 105.328] +/A << /S /GoTo /D (class_photon_lag_simulation_gui) >> +>> endobj +10947 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.704 79.033 290.269 88.757] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10952 0 obj << +/D [10950 0 R /XYZ 69.866 801.979 null] +>> endobj +10953 0 obj << +/D [10950 0 R /XYZ 70.866 775.009 null] +>> endobj +4434 0 obj << +/D [10950 0 R /XYZ 70.866 689.309 null] +>> endobj +4438 0 obj << +/D [10950 0 R /XYZ 70.866 627.166 null] +>> endobj +10954 0 obj << +/D [10950 0 R /XYZ 70.866 599.72 null] +>> endobj +4442 0 obj << +/D [10950 0 R /XYZ 70.866 599.72 null] +>> endobj +10955 0 obj << +/D [10950 0 R /XYZ 70.866 574.838 null] +>> endobj +4446 0 obj << +/D [10950 0 R /XYZ 70.866 574.838 null] +>> endobj +10956 0 obj << +/D [10950 0 R /XYZ 70.866 549.723 null] +>> endobj +4450 0 obj << +/D [10950 0 R /XYZ 70.866 549.723 null] +>> endobj +10957 0 obj << +/D [10950 0 R /XYZ 70.866 493.273 null] +>> endobj +10958 0 obj << +/D [10950 0 R /XYZ 70.866 415.826 null] +>> endobj +4454 0 obj << +/D [10950 0 R /XYZ 70.866 330.126 null] +>> endobj +10959 0 obj << +/D [10950 0 R /XYZ 70.866 302.788 null] +>> endobj +4458 0 obj << +/D [10950 0 R /XYZ 70.866 302.788 null] +>> endobj +10960 0 obj << +/D [10950 0 R /XYZ 70.866 277.906 null] +>> endobj +4462 0 obj << +/D [10950 0 R /XYZ 70.866 277.906 null] +>> endobj +10961 0 obj << +/D [10950 0 R /XYZ 70.866 252.792 null] +>> endobj +4466 0 obj << +/D [10950 0 R /XYZ 70.866 252.792 null] +>> endobj +10962 0 obj << +/D [10950 0 R /XYZ 70.866 227.677 null] +>> endobj +4470 0 obj << +/D [10950 0 R /XYZ 70.866 227.677 null] +>> endobj +10963 0 obj << +/D [10950 0 R /XYZ 70.866 136.083 null] +>> endobj +10949 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +10976 0 obj << +/Length 1141 +/Filter /FlateDecode +>> +stream +xXMs8Whz"KBqm=%=X6Ll6`O:nO_cA4 !GGA  @ap@dFe,r=JgT$ʫʊ\&, -Ēq,w_»v$z-   `&>" +ڨI;T`zT)fX:[6  s.lDQ%w0]^ Gʥ:\EU^9}Ej9Ϫ]U.N~ײTUYshȝzyk*DB_jP\HLkpb$kY ,)ml#+NoJM)ӭNYRڙ\:ەi)Ndrq6c1xg; +Z/(]eYb\eZ! uշ Ux U].2 ylls:CMx)V,Mʉ=m>cw.B=!h(,N5 VIFpc8$P]Yt&=Nx4܆ +9OBD5q- +Z'S7XOlk5esv'.R,Ge!6ÛU7f1F٬(oL޳{BXf }~ WM +[gR#7$Ϋ(ԏ蹆(9/B-i^ߍWBIMvzjǟLbNū^MB|n 5^L2K6J]ykuL]疬S/uK(Pf,> endobj +10948 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.732 733.514 167.549 743.988] +/A << /S /GoTo /D (group__optional_gui) >> +>> endobj +10965 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 623.928 181.024 632.412] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +10966 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.138 607.281 260.334 616.818] +/A << /S /GoTo /D (class_photon_network) >> +>> endobj +10967 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 549.208 146.926 559.584] +/A << /S /GoTo /D (_photon_network_8cs_a0100be52d45f14348918ea69ec09f959) >> +>> endobj +10968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 536.246 160.877 546.828] +/A << /S /GoTo /D (_photon_network_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 350.173 173.063 360.441] +/A << /S /GoTo /D (class_photon_player) >> +>> endobj +10970 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 277.237 160.877 287.82] +/A << /S /GoTo /D (_photon_player_8cs_afa613ef589c02dbd94acc273b62cdcfd) >> +>> endobj +10971 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.732 140.81 167.549 151.285] +/A << /S /GoTo /D (group__optional_gui) >> +>> endobj +10972 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 84.641 182.486 93.412] +/A << /S /GoTo /D (class_photon_stats_gui) >> +>> endobj +10973 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.121 68.074 372.686 77.798] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +10977 0 obj << +/D [10975 0 R /XYZ 69.866 801.979 null] +>> endobj +4474 0 obj << +/D [10975 0 R /XYZ 70.866 771.024 null] +>> endobj +10978 0 obj << +/D [10975 0 R /XYZ 70.866 734.51 null] +>> endobj +4478 0 obj << +/D [10975 0 R /XYZ 70.866 718.072 null] +>> endobj +10979 0 obj << +/D [10975 0 R /XYZ 70.866 661.965 null] +>> endobj +10980 0 obj << +/D [10975 0 R /XYZ 70.866 589.137 null] +>> endobj +4482 0 obj << +/D [10975 0 R /XYZ 70.866 521.977 null] +>> endobj +10981 0 obj << +/D [10975 0 R /XYZ 70.866 495.088 null] +>> endobj +4486 0 obj << +/D [10975 0 R /XYZ 70.866 495.088 null] +>> endobj +10982 0 obj << +/D [10975 0 R /XYZ 70.866 470.657 null] +>> endobj +4490 0 obj << +/D [10975 0 R /XYZ 70.866 470.657 null] +>> endobj +10983 0 obj << +/D [10975 0 R /XYZ 70.866 445.994 null] +>> endobj +4494 0 obj << +/D [10975 0 R /XYZ 70.866 445.994 null] +>> endobj +10984 0 obj << +/D [10975 0 R /XYZ 70.866 389.994 null] +>> endobj +10985 0 obj << +/D [10975 0 R /XYZ 70.866 317.166 null] +>> endobj +4498 0 obj << +/D [10975 0 R /XYZ 70.866 262.968 null] +>> endobj +10986 0 obj << +/D [10975 0 R /XYZ 70.866 236.08 null] +>> endobj +4502 0 obj << +/D [10975 0 R /XYZ 70.866 236.08 null] +>> endobj +10987 0 obj << +/D [10975 0 R /XYZ 70.866 211.648 null] +>> endobj +4506 0 obj << +/D [10975 0 R /XYZ 70.866 211.648 null] +>> endobj +10988 0 obj << +/D [10975 0 R /XYZ 70.866 122.759 null] +>> endobj +10974 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +11018 0 obj << +/Length 1639 +/Filter /FlateDecode +>> +stream +xYMw8W8gP$]493&Mn.(6,\uݞyci;Axᄃ'SףU!|1#(}#\:1NwfHd4͋g"l1+UhEY}z}v+fʢ,njOΫՕ~Lև&E>͗ӌWvd͒-&J**˙jݱEJxD +P Wѧ mA(0l`"' +97\A@;7GoFXg#ꉦ4u QE~7>A'mCDؼdu SNC2[Mm]9Qg EA(͸l* D]ӆDTG~w=27YmH= +TEIQD2H)D .,b +,^P@0yc"Q'A.VB塐lgsKTfD-Q"jdo(e;E#jN]1d63L ADPy[|6zQ4.f"]͆P8ZUojS[ $E/R'@t}ࡰ +v)5 OlzE d'EdrZKpoŚ5$5[qG?xzWÉ]z3h,D3@cϟ3N>8sC`9:‡p|sHzf\מl,Q +OpfH7[$6;?cPe=Uɿ^ +endstream +endobj +11017 0 obj << +/Type /Page +/Contents 11018 0 R +/Resources 11016 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10964 0 R +/Annots [ 10989 0 R 10990 0 R 10991 0 R 10992 0 R 10993 0 R 10994 0 R 10995 0 R 10996 0 R 10997 0 R 10998 0 R 10999 0 R 11000 0 R 11001 0 R 11002 0 R 11003 0 R 11004 0 R 11005 0 R 11006 0 R 11007 0 R 11008 0 R 11009 0 R 11025 0 R 11010 0 R 11011 0 R 11012 0 R 11013 0 R 11014 0 R 11015 0 R ] +>> endobj +10989 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.732 733.401 167.549 743.875] +/A << /S /GoTo /D (group__optional_gui) >> +>> endobj +10990 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 622.383 203.915 631.472] +/A << /S /GoTo /D (class_photon_stream_queue) >> +>> endobj +10991 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.039 605.894 202.837 615.617] +/A << /S /GoTo /D (class_photon_stream_queue) >> +>> endobj +10992 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.243 605.894 510.22 615.617] +/A << /S /GoTo /D (class_photon_network_a154fc601fac7f0fddd704231189457fb) >> +>> endobj +10993 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [288.075 594.935 326.381 604.658] +/A << /S /GoTo /D (class_photon_stream_queue_ae75447cd718116990e0d0304eebc6935) >> +>> endobj +10994 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [478.135 594.935 525.406 604.658] +/A << /S /GoTo /D (class_photon_stream_queue_a40bc2e04c1641f36da8cb36423fd13c3) >> +>> endobj +10995 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 473.266 167.351 481.75] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +10996 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.92 397.494 208.949 407.968] +/A << /S /GoTo /D (_photon_view_8cs_adca9c5e682d5417add581b004cd5b990) >> +>> endobj +10997 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [223.568 397.494 323.05 407.968] +/A << /S /GoTo /D (_photon_view_8cs_adca9c5e682d5417add581b004cd5b990ad15305d7a4e34e02489c74a5ef542f36) >> +>> endobj +10998 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [331.437 397.494 522.913 407.968] +/A << /S /GoTo /D (_photon_view_8cs_adca9c5e682d5417add581b004cd5b990a4675cf4fdfedd2c2b31b60eff2d5a4da) >> +>> endobj +10999 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 385.431 222.475 396.013] +/A << /S /GoTo /D (_photon_view_8cs_adca9c5e682d5417add581b004cd5b990a98a19ff88f463baefac152f8641dea36) >> +>> endobj +11000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.468 385.431 396.527 396.013] +/A << /S /GoTo /D (_photon_view_8cs_adca9c5e682d5417add581b004cd5b990a921d92d43c84141ff815c24c48431c2e) >> +>> endobj +11001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 372.466 207.574 382.81] +/A << /S /GoTo /D (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2) >> +>> endobj +11002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 360.381 235.118 370.855] +/A << /S /GoTo /D (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2a13b388a622bc4a923c74b50c6f05ec13) >> +>> endobj +11003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.211 360.381 384.498 370.855] +/A << /S /GoTo /D (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2aa5c1fc068f4516291607c2b43fd4e229) >> +>> endobj +11004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.592 360.381 522.913 370.855] +/A << /S /GoTo /D (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2af18c3625579a7ac187ea5252f4be51e1) >> +>> endobj +11005 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 348.986 266.024 358.9] +/A << /S /GoTo /D (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2aa2090ce6165d865de2f99434311550a2) >> +>> endobj +11006 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 336.6 195.2 346.945] +/A << /S /GoTo /D (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2ab1c94ca2fbc3e78fc30069c8d0f01680) >> +>> endobj +11007 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.282 323.16 213.471 333.742] +/A << /S /GoTo /D (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3) >> +>> endobj +11008 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.813 323.16 368.706 333.742] +/A << /S /GoTo /D (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3a09e2739a1a164c20187c61c27b690cda) >> +>> endobj +11009 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.546 323.16 525.406 333.742] +/A << /S /GoTo /D (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3a73f73a9364f6e0d2b6a30a1a94ecfc26) >> +>> endobj +11025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 311.205 127.443 321.787] +/A << /S /GoTo /D (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3a73f73a9364f6e0d2b6a30a1a94ecfc26) >> +>> endobj +11010 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.435 311.205 231.181 321.787] +/A << /S /GoTo /D (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3ab1c94ca2fbc3e78fc30069c8d0f01680) >> +>> endobj +11011 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 298.11 190.86 308.584] +/A << /S /GoTo /D (_photon_view_8cs_afcc67b7812df847096e32bd0a953b39f) >> +>> endobj +11012 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.848 298.11 292.25 308.584] +/A << /S /GoTo /D (_photon_view_8cs_afcc67b7812df847096e32bd0a953b39fa4457d440870ad6d42bab9082d9bf9b61) >> +>> endobj +11013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.243 298.11 404.749 308.584] +/A << /S /GoTo /D (_photon_view_8cs_afcc67b7812df847096e32bd0a953b39fa9d42dba7120418ef641edb36d0edf0cb) >> +>> endobj +11014 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [407.742 298.11 514.881 308.584] +/A << /S /GoTo /D (_photon_view_8cs_afcc67b7812df847096e32bd0a953b39fa15c2d85f1fae22a3c3a0594510a1f611) >> +>> endobj +11015 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.852 283.103 358.743 292.73] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +11019 0 obj << +/D [11017 0 R /XYZ 69.866 801.979 null] +>> endobj +4510 0 obj << +/D [11017 0 R /XYZ 70.866 771.024 null] +>> endobj +11020 0 obj << +/D [11017 0 R /XYZ 70.866 734.397 null] +>> endobj +4514 0 obj << +/D [11017 0 R /XYZ 70.866 717.393 null] +>> endobj +11021 0 obj << +/D [11017 0 R /XYZ 70.866 661.173 null] +>> endobj +11022 0 obj << +/D [11017 0 R /XYZ 70.866 574.73 null] +>> endobj +4518 0 obj << +/D [11017 0 R /XYZ 70.866 568.065 null] +>> endobj +11023 0 obj << +/D [11017 0 R /XYZ 70.866 511.656 null] +>> endobj +11024 0 obj << +/D [11017 0 R /XYZ 70.866 437.669 null] +>> endobj +4522 0 obj << +/D [11017 0 R /XYZ 70.866 268.268 null] +>> endobj +9783 0 obj << +/D [11017 0 R /XYZ 70.866 240.97 null] +>> endobj +4526 0 obj << +/D [11017 0 R /XYZ 70.866 240.97 null] +>> endobj +11026 0 obj << +/D [11017 0 R /XYZ 88.314 185.367 null] +>> endobj +11027 0 obj << +/D [11017 0 R /XYZ 88.314 169.176 null] +>> endobj +9785 0 obj << +/D [11017 0 R /XYZ 88.314 152.984 null] +>> endobj +9780 0 obj << +/D [11017 0 R /XYZ 70.866 142.645 null] +>> endobj +4530 0 obj << +/D [11017 0 R /XYZ 70.866 126.813 null] +>> endobj +11028 0 obj << +/D [11017 0 R /XYZ 88.314 70.866 null] +>> endobj +11016 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R /F109 6535 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +11048 0 obj << +/Length 1617 +/Filter /FlateDecode +>> +stream +xڵXKs6WpR3%+39IgRKMA"kT$Rl7E$@`~u5u6]kJB߷Y挎~\ +6Y.BLڕ,.go#+v"Ð\Xj+7 $FQ+W\ snLj.^2a>#|]cP8'b.A juG+:]+>@GDr i 0F)e1vBza۱v)di^w$՚ϹB)/K%u&1Ԏz1v}?eFh\` _5DjiY-I˦,nzZ*+XovGղibBI[+f@=`-H}0ԓmd+W82 %"!d7eu'Cs"x + ^쏈(9,.:=OӚQu#F/yTPf(ffM7H:./,n}M֤ZXʬғI%;vHt#iqAbkP˼D'Ꙫ<`9BH{|siA#mp~CpYneuζ#c"$.˽ &~@L:0vJEUKڪ]@~ѩIi?wK]Q@nBƜjs1 *q}p\ɤ+nR^i(DmRS:!4R{ƥ|a$R"T^2>枭fݮl.l3هCg:XYX-q:kNji? f_GvWQH-ٌFąB+e%wPEj_O|Nâ +Ok(d/CneU./drd]2S?Ձ庘B_"%|1Iy.3ChcZN=peSfȚD FeƲz6`Toj6p,a uxO`$ +Pj ۹*^U 8FL_Eb)]#4_7ẙL%g$0aשs`e2C) }9V/@1ت> AL[so'<ϷLz~,r5GA1\D'C4 VQ4ABY_Gcn_ۺDjRְ84yVTlx9h@qS'4tFv-r_E[c~V +Ƿ{ +@eA'Qciø[~-6S8Jzc\+ /5a'mO+dItyw6ڿ)3vuF^ { VXU\FAUM)ޥgC[p( +pG (1PO |Rnԟ.+r |L#!@|WpeMj1K[L S o-T+enZ\jZ+v?qkD@iIT +endstream +endobj +11047 0 obj << +/Type /Page +/Contents 11048 0 R +/Resources 11046 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10964 0 R +/Annots [ 11038 0 R 11039 0 R 11040 0 R 11041 0 R 11042 0 R 11043 0 R 11044 0 R ] +>> endobj +11038 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.54 639.056 347.196 649.53] +/A << /S /GoTo /D (class_photon_view) >> +>> endobj +11039 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.907 535.01 401.758 545.484] +/A << /S /GoTo /D (class_photon_view_a0eee05bdd9c48c263a41ccfec45b8651) >> +>> endobj +11040 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.92 522.947 515.595 533.529] +/A << /S /GoTo /D (interface_i_pun_callbacks_a02364f5144b6305bbffc886d530b7bd2) >> +>> endobj +11041 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 265.272 183.472 275.648] +/A << /S /GoTo /D (class_ping_mono_editor) >> +>> endobj +11042 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 236.335 201.423 246.711] +/A << /S /GoTo /D (class_photon_ping_manager) >> +>> endobj +11043 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 176.512 146.926 186.888] +/A << /S /GoTo /D (_ping_cloud_regions_8cs_a0100be52d45f14348918ea69ec09f959) >> +>> endobj +11044 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.698 163.039 190.816 173.622] +/A << /S /GoTo /D (_ping_cloud_regions_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) >> +>> endobj +11049 0 obj << +/D [11047 0 R /XYZ 69.866 801.979 null] +>> endobj +11033 0 obj << +/D [11047 0 R /XYZ 88.314 761.061 null] +>> endobj +11034 0 obj << +/D [11047 0 R /XYZ 88.314 744.6 null] +>> endobj +9782 0 obj << +/D [11047 0 R /XYZ 88.314 728.139 null] +>> endobj +11035 0 obj << +/D [11047 0 R /XYZ 88.314 711.678 null] +>> endobj +9786 0 obj << +/D [11047 0 R /XYZ 70.866 700.934 null] +>> endobj +4534 0 obj << +/D [11047 0 R /XYZ 70.866 684.467 null] +>> endobj +9788 0 obj << +/D [11047 0 R /XYZ 88.314 582.771 null] +>> endobj +11036 0 obj << +/D [11047 0 R /XYZ 88.314 554.355 null] +>> endobj +11037 0 obj << +/D [11047 0 R /XYZ 88.314 537.893 null] +>> endobj +9778 0 obj << +/D [11047 0 R /XYZ 70.866 503.605 null] +>> endobj +4538 0 obj << +/D [11047 0 R /XYZ 70.866 487.139 null] +>> endobj +11029 0 obj << +/D [11047 0 R /XYZ 88.314 431.208 null] +>> endobj +11030 0 obj << +/D [11047 0 R /XYZ 88.314 414.747 null] +>> endobj +11031 0 obj << +/D [11047 0 R /XYZ 88.314 398.286 null] +>> endobj +11032 0 obj << +/D [11047 0 R /XYZ 88.314 381.825 null] +>> endobj +11050 0 obj << +/D [11047 0 R /XYZ 70.866 369.086 null] +>> endobj +4542 0 obj << +/D [11047 0 R /XYZ 70.866 362.191 null] +>> endobj +11051 0 obj << +/D [11047 0 R /XYZ 70.866 305.951 null] +>> endobj +11052 0 obj << +/D [11047 0 R /XYZ 70.866 217.191 null] +>> endobj +4546 0 obj << +/D [11047 0 R /XYZ 70.866 147.569 null] +>> endobj +11053 0 obj << +/D [11047 0 R /XYZ 70.866 120.441 null] +>> endobj +4550 0 obj << +/D [11047 0 R /XYZ 70.866 120.441 null] +>> endobj +11054 0 obj << +/D [11047 0 R /XYZ 70.866 95.77 null] +>> endobj +4554 0 obj << +/D [11047 0 R /XYZ 70.866 95.77 null] +>> endobj +11055 0 obj << +/D [11047 0 R /XYZ 70.866 70.866 null] +>> endobj +4558 0 obj << +/D [11047 0 R /XYZ 70.866 70.866 null] +>> endobj +11046 0 obj << +/Font << /F74 4717 0 R /F109 6535 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +11064 0 obj << +/Length 1366 +/Filter /FlateDecode +>> +stream +xXMs6Wpr)5SA#7Nt&j+8e&TbAZ4Ni K|-ΤVل /ieqˋ , SQ,M1)3 +~o.moYW~oL?T|_j*yhUu;FSӷ`!3!X5y;n;?v͊{ZՆSs1<4i +JC)N,ΒXO޼A m(eipz#UvM~=4 (eB]cx,vaGm8޷qP:?1 l%e\K؊[9WzrfCfo3FJCEu#Zh1Z  ܇s,v#HL 9?s۟ƗQCsd@s)L8,pZ߀iW?lN7?G)"N3!=v +{tfk:~ʱa>]Ed-^$㽅(y5M)F)@6xW֐s +v 4Yi8Ű/c|o<>3Ց9hMF]70Ӽ)IPlȽ~8tJ_ȏi7Ɗ;hTQ8Zddʆو#%OǝT9:9W^0/멮G%@Bm%8uEe V &s inᨽjVھÓ5X<RRja[Zýb'S28\?~?/ش7 lV?p6/Y7fL9;5Ht6M﯂.8{rAf'T?M5Wcm2^+/y]i*5N:(_Mx' d*{S4]mwԷ3*> endobj +11045 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 688.304 143.6 696.788] +/A << /S /GoTo /D (class_room) >> +>> endobj +11056 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.148 671.585 525.406 681.211] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +11067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 660.626 124.16 670.252] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +11057 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 550.127 158.286 558.817] +/A << /S /GoTo /D (class_room_info) >> +>> endobj +11058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.087 435.289 393.417 445.871] +/A << /S /GoTo /D (namespace_unity_engine) >> +>> endobj +11059 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 378.582 154.565 387.353] +/A << /S /GoTo /D (class_pun_r_p_c) >> +>> endobj +11060 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.087 301.625 393.417 312.208] +/A << /S /GoTo /D (namespace_unity_engine) >> +>> endobj +11065 0 obj << +/D [11063 0 R /XYZ 69.866 801.979 null] +>> endobj +11066 0 obj << +/D [11063 0 R /XYZ 70.866 726.589 null] +>> endobj +11068 0 obj << +/D [11063 0 R /XYZ 70.866 651.391 null] +>> endobj +4562 0 obj << +/D [11063 0 R /XYZ 70.866 644.787 null] +>> endobj +11069 0 obj << +/D [11063 0 R /XYZ 70.866 588.412 null] +>> endobj +11070 0 obj << +/D [11063 0 R /XYZ 70.866 513.214 null] +>> endobj +4566 0 obj << +/D [11063 0 R /XYZ 70.866 506.61 null] +>> endobj +11071 0 obj << +/D [11063 0 R /XYZ 70.866 416.948 null] +>> endobj +4570 0 obj << +/D [11063 0 R /XYZ 70.866 347.181 null] +>> endobj +11072 0 obj << +/D [11063 0 R /XYZ 70.866 302.622 null] +>> endobj +4574 0 obj << +/D [11063 0 R /XYZ 70.866 285.787 null] +>> endobj +4578 0 obj << +/D [11063 0 R /XYZ 70.866 200.203 null] +>> endobj +11073 0 obj << +/D [11063 0 R /XYZ 70.866 155.843 null] +>> endobj +4582 0 obj << +/D [11063 0 R /XYZ 70.866 139.008 null] +>> endobj +11062 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +11088 0 obj << +/Length 1675 +/Filter /FlateDecode +>> +stream +xYKs6WVr[7f$@Ě"UA"'ۦ\%D,<}€:l2MICXMN s/1KkŹr( Q];/jԤGH*8$}cFUi>F9}d{F$i<$!sΣZE[f7F,#ÏRf= )f1;vg 9YZE$h׵u- +M%Ϣm=wo VX~6(5U5U&8u-}leۼcmaOBo{:taAFh +0L tBFxLȢgBh }Uky僴X0ZqX+k7^;CsQ7o^m~zySzN!W9(z$t0 q-tdcG]i_s1,-5T) 39 8_?}4=cZi_rvdh7} .{5˒U 4yo81ɒ E +cg9 JWDR,o+#(dz~:k $ՃbM^gi˥@GCe!Im~W)ZpNRl aR|oY (á ],Mj4Yh2p^-i7zd~ˮm?1@BO,R:qV +4p,vKaDuC{bN=WnRjb_!iJTNLK\ZJ|Ï{p> V.7RQWcq{129?Lȇ9|:b8k/n!CDPpa~`RPfKVtoMνUyі8g'{ohwe`lC {Q {]TymQJmTρgRJ_OYҦp +}AꞸaZmrNTun51 @|K +~e teƚVjⲪhUw9mWֆ֞D44*gaa=QS&յ^} |ڪyJ-ldn^M^uWOaJtUhfWEkla5k1, +?^j]ƥlf:`t#VDZ{:5Y>;,E])lӀ'ϲԥo (u֥>ѭ/яɞO2T(眝!MENˁyt(МPt?ꈴw+p>лv쮇"L/;7E\Q j@"9$oCW*A<`%*`% +G.㪐ّK\ +={8EL~ 0b_;2jcF1y +T +\\Z8~hξ7oPv?6Ҏ}dH/ОS8N揷Ot]dܘ/`SBvg.մ9 pW] _g B=/CZ: +endstream +endobj +11087 0 obj << +/Type /Page +/Contents 11088 0 R +/Resources 11086 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 10964 0 R +/Annots [ 11061 0 R 11074 0 R 11075 0 R 11076 0 R 11077 0 R 11078 0 R 11079 0 R 11080 0 R 11081 0 R 11082 0 R 11083 0 R 11084 0 R 11085 0 R ] +>> endobj +11061 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 733.655 148.092 744.03] +/A << /S /GoTo /D (class_region) >> +>> endobj +11074 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 719.723 178.532 730.305] +/A << /S /GoTo /D (class_server_settings) >> +>> endobj +11075 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.053 703.999 464.325 713.722] +/A << /S /GoTo /D (class_photon_network_a0fdb79bcce45801ec81fbe56ffb939ec) >> +>> endobj +11076 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 475.095 203.225 483.579] +/A << /S /GoTo /D (class_photon_animator_view) >> +>> endobj +11077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.052 446.617 233.228 456.243] +/A << /S /GoTo /D (class_photon_animator_view) >> +>> endobj +11078 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 432.497 300.768 442.971] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_parameter) >> +>> endobj +11079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 418.566 281.339 429.04] +/A << /S /GoTo /D (class_photon_animator_view_1_1_synchronized_layer) >> +>> endobj +11080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 302.926 218.674 313.302] +/A << /S /GoTo /D (class_photon_rigidbody2_d_view) >> +>> endobj +11081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.832 254.422 298.398 264.048] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +11082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.105 243.366 332.186 253.089] +/A << /S /GoTo /D (class_photon_rigidbody2_d_view) >> +>> endobj +11083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 127.634 207.215 138.01] +/A << /S /GoTo /D (class_photon_rigidbody_view) >> +>> endobj +11084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.832 79.13 298.398 88.757] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +11085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.105 68.074 321.873 77.798] +/A << /S /GoTo /D (class_photon_rigidbody_view) >> +>> endobj +11089 0 obj << +/D [11087 0 R /XYZ 69.866 801.979 null] +>> endobj +11090 0 obj << +/D [11087 0 R /XYZ 70.866 775.009 null] +>> endobj +4586 0 obj << +/D [11087 0 R /XYZ 70.866 687.449 null] +>> endobj +11091 0 obj << +/D [11087 0 R /XYZ 70.866 642.513 null] +>> endobj +4590 0 obj << +/D [11087 0 R /XYZ 70.866 623.794 null] +>> endobj +11092 0 obj << +/D [11087 0 R /XYZ 70.866 570.135 null] +>> endobj +4594 0 obj << +/D [11087 0 R /XYZ 70.866 570.135 null] +>> endobj +11093 0 obj << +/D [11087 0 R /XYZ 70.866 514.557 null] +>> endobj +11094 0 obj << +/D [11087 0 R /XYZ 70.866 408.13 null] +>> endobj +4598 0 obj << +/D [11087 0 R /XYZ 70.866 400.843 null] +>> endobj +11095 0 obj << +/D [11087 0 R /XYZ 70.866 344.28 null] +>> endobj +11096 0 obj << +/D [11087 0 R /XYZ 70.866 232.93 null] +>> endobj +4602 0 obj << +/D [11087 0 R /XYZ 70.866 225.644 null] +>> endobj +11097 0 obj << +/D [11087 0 R /XYZ 70.866 168.988 null] +>> endobj +11098 0 obj << +/D [11087 0 R /XYZ 70.866 57.638 null] +>> endobj +11086 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F106 6377 0 R /F77 5876 0 R /F82 5877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +11107 0 obj << +/Length 1125 +/Filter /FlateDecode +>> +stream +xXMo6W(oII@4Ah[$;#'^4Yd)ro<m`jb6LxLJ,AQ*edq2 3H$ *""4߬۸/R濵հ_հ(uw_}ޏwq# AnGSj,8Rvy/G3:DݾUuT[@W&R _3p@$)Y#JeiMC3]겛Bft:RIAI +-Ab9p/%&GHISrOhnp !,Ժ܍u12' r!RZ"`lwF%FRD3f!}. +Xd{T`p dmנ]bdF9ύ+J@$a|xޖ~vʙzܹ\Sb8X^~U)~[if41*ʓ93 Emߛ%]{QХPzkѤ27C5$`q[7[;kM*KCPֻzD˥YjF0՝WnK'Ij6v}¼4SрQf[ÞuAs_.m&g~/3am2|xg +KoI 42 RlU?80jۻ^P䕮?'J̤ a0\"ġ+h>W/צޛG\CgkT*Kć<@W^ ɛ#AHF=\ٻ\_$ןtjSEfW>R +*oIi]_,Sy)ʔLo%kX_Wo"T^PI1e>c_Oz3H#D4|sZky|ZθP3p-Dv_q'1}P3~Bޯy3'^) +endstream +endobj +11106 0 obj << +/Type /Page +/Contents 11107 0 R +/Resources 11105 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 11119 0 R +/Annots [ 11099 0 R 11100 0 R 11101 0 R 11102 0 R 11103 0 R 11104 0 R ] +>> endobj +11099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 683.438 206.991 692.129] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +11100 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.045 642.295 482.611 651.922] +/A << /S /GoTo /D (class_photon_transform_view) >> +>> endobj +11101 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 492.06 267.333 500.831] +/A << /S /GoTo /D (class_photon_transform_view_position_control) >> +>> endobj +11102 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 351.349 262.85 360.04] +/A << /S /GoTo /D (class_photon_transform_view_position_model) >> +>> endobj +11103 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 210.477 269.279 219.248] +/A << /S /GoTo /D (class_photon_transform_view_rotation_control) >> +>> endobj +11104 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 69.767 264.796 78.457] +/A << /S /GoTo /D (class_photon_transform_view_rotation_model) >> +>> endobj +11108 0 obj << +/D [11106 0 R /XYZ 69.866 801.979 null] +>> endobj +4606 0 obj << +/D [11106 0 R /XYZ 70.866 771.024 null] +>> endobj +11109 0 obj << +/D [11106 0 R /XYZ 70.866 725.409 null] +>> endobj +11110 0 obj << +/D [11106 0 R /XYZ 70.866 618.342 null] +>> endobj +4610 0 obj << +/D [11106 0 R /XYZ 70.866 609.599 null] +>> endobj +11111 0 obj << +/D [11106 0 R /XYZ 70.866 534.112 null] +>> endobj +11112 0 obj << +/D [11106 0 R /XYZ 70.866 479.065 null] +>> endobj +4614 0 obj << +/D [11106 0 R /XYZ 70.866 470.323 null] +>> endobj +11113 0 obj << +/D [11106 0 R /XYZ 70.866 393.32 null] +>> endobj +11114 0 obj << +/D [11106 0 R /XYZ 70.866 338.355 null] +>> endobj +4618 0 obj << +/D [11106 0 R /XYZ 70.866 329.612 null] +>> endobj +11115 0 obj << +/D [11106 0 R /XYZ 70.866 252.529 null] +>> endobj +11116 0 obj << +/D [11106 0 R /XYZ 70.866 197.483 null] +>> endobj +4622 0 obj << +/D [11106 0 R /XYZ 70.866 188.74 null] +>> endobj +11117 0 obj << +/D [11106 0 R /XYZ 70.866 111.738 null] +>> endobj +11118 0 obj << +/D [11106 0 R /XYZ 70.866 56.772 null] +>> endobj +11105 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +11146 0 obj << +/Length 966 +/Filter /FlateDecode +>> +stream +xXr6}W)AIM/L몶ڙd%R8..DǭnL_X.vV$h:DgJq4T)d +f%[a /jÈ%ipەژfF, .Lb5xOP soxRtm-WHH_ѯ#$I5M4GRag0`rCl**][]u7Ԏ:2h6WUm΅4"wMZȄL1YlJ&nF%uqƹ3.n?> _sP`Yz"_ISw;EF~3%3=@[D:Cׅ~\Ndl.,U|L96>GIq,2wE$ + +O2ngз2@$(q(e`s -ZvYQŎ}AnJX +ԄlC/"aHhy +LeލUlÅ0l# +.l5zo$_̑Uw`iOܹx +}qa7](,12YN r^xwf24U};\ՏgRn;]?͹u-,؛ټ`i w=;/?RA\=@ U*f y|N$n%^=ZY>=BOն܄KΫ q 0ݥ~Q)~52Wr +(pv&W +Geo[ U 'L0,fV_R p/\Nt7/Nf[BCkʏBHlLԚJuĔoWy7Y`h +endstream +endobj +11145 0 obj << +/Type /Page +/Contents 11146 0 R +/Resources 11144 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 11119 0 R +/Annots [ 11120 0 R 11121 0 R 11122 0 R 11123 0 R 11124 0 R 11125 0 R 11126 0 R 11127 0 R 11128 0 R 11129 0 R 11130 0 R 11131 0 R ] +>> endobj +11120 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 669.957 258.313 678.728] +/A << /S /GoTo /D (class_photon_transform_view_scale_control) >> +>> endobj +11121 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 557.124 253.83 565.895] +/A << /S /GoTo /D (class_photon_transform_view_scale_model) >> +>> endobj +11122 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 444.291 295.962 453.062] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel) >> +>> endobj +11123 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.996 427.481 248.561 437.108] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +11124 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.811 427.481 267.847 437.108] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11125 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.351 427.481 352.012 437.108] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +11126 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 368.01 254.431 378.592] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11127 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 256.989 285.49 265.76] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +11128 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.18 240.082 207.745 249.805] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +11129 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.995 240.082 227.031 249.805] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11130 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 180.708 254.431 191.29] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11131 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 67.875 254.431 78.457] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11147 0 obj << +/D [11145 0 R /XYZ 69.866 801.979 null] +>> endobj +4626 0 obj << +/D [11145 0 R /XYZ 70.866 771.024 null] +>> endobj +11148 0 obj << +/D [11145 0 R /XYZ 70.866 708.575 null] +>> endobj +11149 0 obj << +/D [11145 0 R /XYZ 70.866 660.464 null] +>> endobj +4630 0 obj << +/D [11145 0 R /XYZ 70.866 653.714 null] +>> endobj +11150 0 obj << +/D [11145 0 R /XYZ 70.866 595.743 null] +>> endobj +11151 0 obj << +/D [11145 0 R /XYZ 70.866 547.631 null] +>> endobj +4634 0 obj << +/D [11145 0 R /XYZ 70.866 540.881 null] +>> endobj +11152 0 obj << +/D [11145 0 R /XYZ 70.866 482.91 null] +>> endobj +11153 0 obj << +/D [11145 0 R /XYZ 70.866 408.44 null] +>> endobj +11154 0 obj << +/D [11145 0 R /XYZ 70.866 358.517 null] +>> endobj +4638 0 obj << +/D [11145 0 R /XYZ 70.866 351.767 null] +>> endobj +11155 0 obj << +/D [11145 0 R /XYZ 70.866 295.607 null] +>> endobj +11156 0 obj << +/D [11145 0 R /XYZ 70.866 221.137 null] +>> endobj +11157 0 obj << +/D [11145 0 R /XYZ 70.866 171.214 null] +>> endobj +4642 0 obj << +/D [11145 0 R /XYZ 70.866 164.464 null] +>> endobj +11158 0 obj << +/D [11145 0 R /XYZ 70.866 108.305 null] +>> endobj +11144 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F77 5876 0 R /F82 5877 0 R /F39 4678 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +11173 0 obj << +/Length 1335 +/Filter /FlateDecode +>> +stream +xY]S6}ϯ[Fd}ؼA;ٲ>;>+KXȲtGG;#;:GND2'@3v$F b~  #^G{כeu䶛eޗ,-{gU*=|vfaQ7Qy8M{:SYcŅY$+K +97k`WT$Ap ;ub,rtI+v ? jaG;:庩/5jC0<˰ &AIw>QLZLh?\B$t)G$df+JʳesLC1{:f|^HC4QS#.2@՟㴈,Sqُj/{J"I׬zivޒ!'IGPj_;19t64zL X)^it)pxf^ٗB>#w&qOkڿBY4?ڛ 6]2j Zn[30Sz]+?<`M(ITM8.4Qtu"2ϥ3M*mC]L% 7S]iK|;`Rm4R~{v,m:JjBj$5ЭDfŇNrVɉauk@VBO'^}ӘGPjy 0>ՇyìoyKR +Ft9;@CBA_%[ c\q*f7c3b0vtY``blT*fb7!V*V;4źO\"Q{|8 -}!g a?:|P>c~X>Vina{&ڜMU\Swǹ&H _yyF +endstream +endobj +11172 0 obj << +/Type /Page +/Contents 11173 0 R +/Resources 11171 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 11119 0 R +/Annots [ 11132 0 R 11133 0 R 11134 0 R 11176 0 R 11135 0 R 11177 0 R 11136 0 R 11137 0 R 11138 0 R 11178 0 R 11139 0 R 11179 0 R 11140 0 R 11141 0 R 11142 0 R 11180 0 R 11143 0 R 11181 0 R 11159 0 R 11160 0 R 11161 0 R 11162 0 R 11163 0 R 11164 0 R 11165 0 R 11166 0 R 11167 0 R 11168 0 R 11169 0 R ] +>> endobj +11132 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 733.113 334.741 743.458] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8b) >> +>> endobj +11133 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 721.588 333.701 731.502] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba6adf97f83acf6453d4a6a4b1070f3754) >> +>> endobj +11134 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.22 721.588 525.406 731.502] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba443ec8de9a697e190f4b24ab3ab36a9d) >> +>> endobj +11176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 709.073 244.156 719.547] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba443ec8de9a697e190f4b24ab3ab36a9d) >> +>> endobj +11135 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.836 709.073 525.406 719.547] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bae28f71975b160263c7e6438b4b4429ef) >> +>> endobj +11177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 697.118 130.159 707.592] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bae28f71975b160263c7e6438b4b4429ef) >> +>> endobj +11136 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.152 697.118 431.908 707.592] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba0777deff381bd76ec1ab2dc434860022) >> +>> endobj +11137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 685.723 389.005 695.637] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bad376a854099d47f8a5279893e854ec27) >> +>> endobj +11138 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.15 685.723 525.406 695.637] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bab0d4998a26f5b5742ad38c4af8817e32) >> +>> endobj +11178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 673.207 249.123 683.682] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bab0d4998a26f5b5742ad38c4af8817e32) >> +>> endobj +11139 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.658 673.207 525.406 683.682] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bab67551dad56fc73fd4a580e810dc5f7f) >> +>> endobj +11179 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 661.812 153.319 671.727] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bab67551dad56fc73fd4a580e810dc5f7f) >> +>> endobj +11140 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.311 661.812 442.569 671.727] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba522f961eb7a2b35f0ef4b99b4ad3bb0a) >> +>> endobj +11141 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 649.189 366.186 659.771] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8baa8534012cb63e62c0b3a2335206117cc) >> +>> endobj +11142 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.785 649.189 525.406 659.771] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba85a7970b25fcbdfd2f82f78609298e56) >> +>> endobj +11180 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 637.342 312.093 647.816] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba85a7970b25fcbdfd2f82f78609298e56) >> +>> endobj +11143 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [328.438 637.342 525.406 647.816] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bac18fb72fa24e41efb70cd214f7681dfc) >> +>> endobj +11181 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 625.517 236.445 635.861] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bac18fb72fa24e41efb70cd214f7681dfc) >> +>> endobj +11159 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 492.829 306.704 501.6] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code) >> +>> endobj +11160 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.414 474.861 272.979 484.487] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +11161 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.23 474.861 292.265 484.487] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11162 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 410.96 254.431 421.542] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11163 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 293.26 323.282 303.735] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code) >> +>> endobj +11164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [283.664 276.995 311.229 286.622] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +11165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [311.48 276.995 330.515 286.622] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 213.095 254.431 223.677] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 97.099 325.407 105.87] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code) >> +>> endobj +11168 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.522 79.13 406.087 88.757] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +11169 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.065 79.13 425.1 88.757] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11174 0 obj << +/D [11172 0 R /XYZ 69.866 801.979 null] +>> endobj +11175 0 obj << +/D [11172 0 R /XYZ 70.866 775.009 null] +>> endobj +11182 0 obj << +/D [11172 0 R /XYZ 70.866 597.794 null] +>> endobj +4646 0 obj << +/D [11172 0 R /XYZ 70.866 590.056 null] +>> endobj +11183 0 obj << +/D [11172 0 R /XYZ 70.866 533.151 null] +>> endobj +11184 0 obj << +/D [11172 0 R /XYZ 70.866 453.093 null] +>> endobj +11185 0 obj << +/D [11172 0 R /XYZ 70.866 399.729 null] +>> endobj +4650 0 obj << +/D [11172 0 R /XYZ 70.866 391.991 null] +>> endobj +11186 0 obj << +/D [11172 0 R /XYZ 70.866 335.286 null] +>> endobj +11187 0 obj << +/D [11172 0 R /XYZ 70.866 255.228 null] +>> endobj +11188 0 obj << +/D [11172 0 R /XYZ 70.866 201.864 null] +>> endobj +4654 0 obj << +/D [11172 0 R /XYZ 70.866 194.126 null] +>> endobj +11189 0 obj << +/D [11172 0 R /XYZ 70.866 137.421 null] +>> endobj +11171 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +11227 0 obj << +/Length 1497 +/Filter /FlateDecode +>> +stream +xYn8+$ +LimBdcm\>ȎDNlLs=waۨ78 XJ.HJ/)MO>%22z1hc\‡$TЧaLUREG{zb"QgO_7G7sq 3G;QuQf(ldy2V˕7x(! +3b[S_àur\r|?0T0KHٴ Im%IQL5F bA`H_s3A\'Ej1OiD:ͯeҴ"װ順8BO8dC Ϙc)NE}nu6KZ!]}|4.A_4OejrdA"(r٩Yğ\c=lwY 0}C, -T%`25VJXU "ֳENTiC")ӱ},0^\\ڲޣp ywK< j*8GJJy*khj_jyˀN.uY! ɟEk ɫtlg AwQ˰<͍ϥp/˲N֦Y-ƺ窲OoWSCjF;JTJO|ɋsYǙj(<'Ţf{?Dpc;pc"+7jHYU+`b&U|Ktˌ6`srSf3e"I(FXoG1RJd8ŅmRvSU46oS ~mi!4M[^LViq"!}s +Wi"Dy?`yG#e=.HNU款M=rᎮHW0>ಾ6.i5&&4ݮm"qsdG7W:EBo<[R +endstream +endobj +11226 0 obj << +/Type /Page +/Contents 11227 0 R +/Resources 11225 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 11119 0 R +/Annots [ 11170 0 R 11190 0 R 11191 0 R 11192 0 R 11193 0 R 11194 0 R 11195 0 R 11196 0 R 11197 0 R 11198 0 R 11199 0 R 11200 0 R 11201 0 R 11202 0 R 11203 0 R 11234 0 R 11204 0 R 11205 0 R 11206 0 R 11207 0 R 11235 0 R 11208 0 R 11209 0 R 11210 0 R 11211 0 R 11212 0 R 11213 0 R 11214 0 R 11239 0 R 11215 0 R 11216 0 R 11240 0 R 11217 0 R 11218 0 R 11241 0 R 11219 0 R 11220 0 R 11242 0 R 11221 0 R 11222 0 R 11243 0 R ] +>> endobj +11170 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 734.783 254.431 745.365] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11190 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 624.356 281.06 633.127] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer) >> +>> endobj +11191 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.813 607.684 253.378 617.311] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +11192 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.629 607.684 272.664 617.311] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11193 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.577 607.684 468.238 617.311] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +11194 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 596.035 326.967 604.806] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values) >> +>> endobj +11195 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.537 579.363 264.102 588.99] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +11196 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 567.714 306.471 576.485] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code) >> +>> endobj +11197 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 554.55 284.988 563.321] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code) >> +>> endobj +11198 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 539.411 148.159 547.504] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code) >> +>> endobj +11199 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.535 539.411 325.1 547.504] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon) >> +>> endobj +11200 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 478.936 254.431 489.519] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11201 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 420.399 351.84 430.873] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1c) >> +>> endobj +11202 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 408.444 360.259 418.918] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca90589c47f06eb971d548591f23c285af) >> +>> endobj +11203 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.721 408.444 525.406 418.918] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca4db4563826bad0eb2f60ee6e42d0ea4b) >> +>> endobj +11234 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 396.488 231.334 406.963] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca4db4563826bad0eb2f60ee6e42d0ea4b) >> +>> endobj +11204 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.889 396.488 525.406 406.963] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1cad85544fce402c7a2a96a48078edaf203) >> +>> endobj +11205 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [112.476 384.533 374.972 395.008] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1caa8a06837aec81e16c9a07221848aef6f) >> +>> endobj +11206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 372.578 374.452 383.053] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca3f6fb6f058deeea1407bacefec5265a2) >> +>> endobj +11207 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.721 372.578 525.406 383.053] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca183709ebe3a1d675014d32b94ad7ed94) >> +>> endobj +11235 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 360.623 225.587 371.097] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca183709ebe3a1d675014d32b94ad7ed94) >> +>> endobj +11208 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.45 360.623 513.473 371.097] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca6adf97f83acf6453d4a6a4b1070f3754) >> +>> endobj +11209 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.572 333.603 365.137 343.326] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +11210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.95 324.347 136.515 332.181] +/A << /S /GoTo /D (namespace_photon) >> +>> endobj +11211 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 210.206 254.431 220.789] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11212 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [119.604 151.799 285.418 162.143] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19) >> +>> endobj +11213 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 139.606 311.142 150.188] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19af704f57ea420275ad51bf55b7dec2c96) >> +>> endobj +11214 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.661 139.606 525.406 150.188] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ae047588dabb5a0b1e059604b80289791) >> +>> endobj +11239 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 128.319 156.52 138.233] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ae047588dabb5a0b1e059604b80289791) >> +>> endobj +11215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.647 128.319 435.93 138.233] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ac495884e9133962e72063062d1382466) >> +>> endobj +11216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [444.057 128.319 525.406 138.233] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aedb214653d9f3cecd840463790ac2894) >> +>> endobj +11240 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 115.696 247.885 126.278] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aedb214653d9f3cecd840463790ac2894) >> +>> endobj +11217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 104.408 317.508 114.323] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aa927b3e1f83aa1b3c6feff945ca18f77) >> +>> endobj +11218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.491 104.408 525.406 114.323] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aa3db59f96790ca93f6c8ac703735f401) >> +>> endobj +11241 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 91.785 223.955 102.367] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aa3db59f96790ca93f6c8ac703735f401) >> +>> endobj +11219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.647 91.785 492.032 102.367] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19a8678b4480f40853432f680fccf4dab40) >> +>> endobj +11220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [500.723 91.785 525.406 102.367] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19a47d270be4d53cc3a1bc56b9eb1c36595) >> +>> endobj +11242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 80.498 337.225 90.412] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19a47d270be4d53cc3a1bc56b9eb1c36595) >> +>> endobj +11221 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 67.875 376.246 78.457] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ab9ef7abda3055a11dd964fd93a07dc40) >> +>> endobj +11222 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.721 67.875 525.406 78.457] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ad61e8ad0770b4d06dc1716dfce52751e) >> +>> endobj +11243 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 41.083 525.406 55.031] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ad61e8ad0770b4d06dc1716dfce52751e) >> +>> endobj +11228 0 obj << +/D [11226 0 R /XYZ 69.866 801.979 null] +>> endobj +11229 0 obj << +/D [11226 0 R /XYZ 70.866 775.009 null] +>> endobj +11230 0 obj << +/D [11226 0 R /XYZ 70.866 725.497 null] +>> endobj +4658 0 obj << +/D [11226 0 R /XYZ 70.866 718.865 null] +>> endobj +11231 0 obj << +/D [11226 0 R /XYZ 70.866 662.771 null] +>> endobj +11232 0 obj << +/D [11226 0 R /XYZ 70.866 519.162 null] +>> endobj +11233 0 obj << +/D [11226 0 R /XYZ 70.866 460.517 null] +>> endobj +11236 0 obj << +/D [11226 0 R /XYZ 70.866 315.061 null] +>> endobj +4662 0 obj << +/D [11226 0 R /XYZ 70.866 308.429 null] +>> endobj +11237 0 obj << +/D [11226 0 R /XYZ 70.866 250.432 null] +>> endobj +11238 0 obj << +/D [11226 0 R /XYZ 70.866 191.787 null] +>> endobj +11225 0 obj << +/Font << /F74 4717 0 R /F73 4716 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +11252 0 obj << +/Length 1051 +/Filter /FlateDecode +>> +stream +xWMs6WHT@["L;iʡc@1"hG.>hS8=ݷ-klv1 +(K,(M@d 123Ēh4͎eDxx7[4QӶVR>Jog{R׳7m+uorf]sEE|V,s'F@)Z<9YLlHQXM.ࠄw, *`"(|qfѢ#!h pB\&- }d'yN#M'倯 c4#ixgJvy]IhqRD ʄ2`1 K̰JG){3An wkDKwqvJpa`C0DS3\"m0hkgOeD CwM^\ޅbnH2BŁfFƸ1.{pGsJ)6a8A2SRg:x5ngFb NJ #b%ň+!@wG| H2I'aa=SG}boX +Qوsy<#fjTuO] x`mmyeR҇g򈦔0뼣\I)/1W6n&|~XHPʅKAr/(%v)aSm~-_P(}]1ZWRe$wtPzWZ*XRZn84*[#l~Zy]_y.<mz}0ٯvVc )k UO ;[M?ֿ7A|Ñq"s0YP&R۵|,ӾDFZ ۮ=űq -①X$lp`%0ӠJYKcY n1B0>-Kwq.?7Mwo,nl6xd +endstream +endobj +11251 0 obj << +/Type /Page +/Contents 11252 0 R +/Resources 11250 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 11119 0 R +/Annots [ 11254 0 R 11255 0 R 11223 0 R 11224 0 R 11256 0 R 11244 0 R 11245 0 R 11246 0 R 11247 0 R 11248 0 R 11249 0 R ] +>> endobj +11254 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.87 788.027 525.406 801.975] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ad61e8ad0770b4d06dc1716dfce52751e) >> +>> endobj +11255 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 758.07 258.78 768.652] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ad61e8ad0770b4d06dc1716dfce52751e) >> +>> endobj +11223 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.511 758.07 491.991 768.652] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19a10b0501000c144cb2a7424bd45e1bcde) >> +>> endobj +11224 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [500.723 758.07 525.406 768.652] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aef70e46fd3bbc21e3e1f0b6815e750c0) >> +>> endobj +11256 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.777 746.352 302.319 756.697] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aef70e46fd3bbc21e3e1f0b6815e750c0) >> +>> endobj +11244 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.694 621.658 306.919 630.429] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status) >> +>> endobj +11245 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 547.071 254.431 557.653] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11246 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.385 437.558 333.566 446.329] +/A << /S /GoTo /D (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener) >> +>> endobj +11247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.707 421.099 204.742 430.726] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11248 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.805 411.674 174.466 419.767] +/A << /S /GoTo /D (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) >> +>> endobj +11249 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.982 352.012 254.431 362.595] +/A << /S /GoTo /D (namespace_exit_games_1_1_client_1_1_photon_1_1_chat) >> +>> endobj +11253 0 obj << +/D [11251 0 R /XYZ 69.866 801.979 null] +>> endobj +11257 0 obj << +/D [11251 0 R /XYZ 70.866 722.404 null] +>> endobj +4666 0 obj << +/D [11251 0 R /XYZ 70.866 715.954 null] +>> endobj +11258 0 obj << +/D [11251 0 R /XYZ 70.866 659.76 null] +>> endobj +11259 0 obj << +/D [11251 0 R /XYZ 70.866 586.984 null] +>> endobj +11260 0 obj << +/D [11251 0 R /XYZ 70.866 538.105 null] +>> endobj +4670 0 obj << +/D [11251 0 R /XYZ 70.866 531.655 null] +>> endobj +11261 0 obj << +/D [11251 0 R /XYZ 70.866 475.66 null] +>> endobj +11262 0 obj << +/D [11251 0 R /XYZ 70.866 391.926 null] +>> endobj +11250 0 obj << +/Font << /F74 4717 0 R /F39 4678 0 R /F77 5876 0 R /F82 5877 0 R /F106 6377 0 R /F73 4716 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6602 0 obj +[4674 0 R /Fit] +endobj +6128 0 obj +[4674 0 R /Fit] +endobj +6100 0 obj +[4674 0 R /Fit] +endobj +11264 0 obj +[501 501 137 273 501 228 273 273 0 273 479 0 501 410 273 228 0 0 0 0 0 0 0 0 0 0 0 0 273 195 228 273 389 456 456 729 592 228 273 273 319 479 228 273 228 228 456 456 456 456 456 456 456 456 456 456 273 273 479 479 479 501 800 592 592 592 592 547 501 638 592 228 456 592 501 683 592 638 547 638 592 547 501 592 547 774 547 547 501 273 228 273 479 456 228 456 501 456 501 456 273 501 501 228 228 456 228 729 501 501 501 501 319 456 273 501 456 638 456 456 410] +endobj +11265 0 obj +[611 167 333 611 278 333 333 0 333 584 0 611 500 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 238 278 333 474 556 556 889 722 278 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 278 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556 500] +endobj +11266 0 obj +[500 500 167 333 556 222 333 333 0 333 584 0 611 500 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 191 278 278 355 556 556 889 667 222 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 222 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500] +endobj +11267 0 obj +[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 600 600] +endobj +11268 0 obj +[277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8] +endobj +11269 0 obj +[500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.8 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8] +endobj +11270 0 obj +[611 167 333 611 278 333 333 0 333 584 0 611 500 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 238 278 333 474 556 556 889 722 278 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 278 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556 500 389 280 389 584 0 0 0 278 556 500 1000 556 556 333 1000 667 333 1000 0 0 0 0 0 0 500 500 350 556] +endobj +11271 0 obj +[501 501 137 273 501 228 273 273 0 273 479 0 501 410 273 228 0 0 0 0 0 0 0 0 0 0 0 0 273 195 228 273 389 456 456 729 592 228 273 273 319 479 228 273 228 228 456 456 456 456 456 456 456 456 456 456 273 273 479 479 479 501 800 592 592 592 592 547 501 638 592 228 456 592 501 683 592 638 547 638 592 547 501 592 547 774 547 547 501 273 228 273 479 456 228 456 501 456 501 456 273 501 501 228 228 456 228 729 501 501 501 501 319 456 273 501 456 638 456 456 410] +endobj +11272 0 obj +[500 500 167 333 556 222 333 333 0 333 584 0 611 500 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 191 278 278 355 556 556 889 667 222 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 222 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 0 0 0 222 556 333 1000 556 556 333 1000 667 333 1000 0 0 0 0 0 0 333 333 350 556 1000 333 1000 500 333 944 0 0 667 0 333 556 556 556 556 260 556 333 737 370 556 584 333 737 333 400 584 333 333 333 556 537 278 333 333 365 556 834 834 834 611 667 667 667 667 667 667 1000 722 667 667 667 667 278 278 278 278 722 722 778 778 778 778 778 584 778 722 722 722 722 667 667 611 556 556 556 556 556 556 889 500 556 556] +endobj +11273 0 obj << +/Length1 1465 +/Length2 6153 +/Length3 0 +/Length 7141 +/Filter /FlateDecode +>> +stream +xڍwT}?R"!")CFIw4Flcҍ]" J +4HH(Py?}~W_7H + $`88 Xgz2cG"$C `q:%稍D4ܜ`!XT|O@;"%;-@"`2E$ wr~]`h8hC0\E(`aXrbQ@#Dp Cl:hdC8ia!07- UktQ0og|? Oe"8W0 +E /8`wtUX>a{q qwbs:"(,FwL;fe"b.SaPܹ{ @-v0lP@# " `'xY e_q|PH~|0wv C=A85? 0.?z1pu5uy@QA  `yu?2#쐀(p7?7܀A pA" ( ނ_!?_f_9;svݰFV߮& U -<Gt~HQ{lñPd{p>xpQ pu].~ "bRV}(#H˝@h8I--@ 0hA ({8/ hyN_:|ߥ@h\oMy dSHdcmHQ<vڑ p% Gyj) ;kZLebءz3agKUeݞ&nD!If&) +%J=xY:Iem{ 8(}I[rO#M4KY'}lM_\/67l{/p8lYq%usN>fF* +֢lgrY d1]pX4C5'Fipi'H|kxnWu +2/]]p~/sW脉XCLxHk);<:s"oviתhD,MbݬoFӓm0M=4&FesBYW"u5fGTH,@k䝊qx:yO"KcN϶3:dzo7%:E{e.~ȴhȃ'[xh}yZWhĩBn#I+r~7fSo$.$>/=S!Fh<>ރ-$Pa+D4'mi+_LjP,Ӭ2vNY- ^9fGyOWV6iTsb+ަ ڽl56@FI[") wڻP'<#7TxS8n/x@\{mDW'-ÚTw#6Z;j|<|0anA.z 5q8p>] FZD^9*>6/>}ͫ$0_(^<9ְ #xcz0c?GYLX6p4u=~!yصi;v\!v'~4kIab^h0ɺmKTמe.Lʫ) VA~OQ3l?8 DD]P*.۳M ۚZ.u4Ȓ$kzZY`ީЄnY|9*]|Wa] btafHq@m@! &~)3QX@ +}(jVzӼϞy'ӆIIO+Yw}ñ;ۉ|E@bX8}onQ'~,\``k"fQ"8lSŜ+,gqq0},/kZ[^eU1;]w˥nǠX'`B%g7c ?/h?("lc>rrQp e3Ԋko1TcG{evÌz{/~bB gBþ*5&9Jd$F`08dߨ$@M|vy,^d~5Ajj:dĪf5^HwR= j ^ݲ{_l=c6#? &!ߝYr +Zֺ2}JmG:i's18CZ"]{W1j55wHzQv4&G kDL4}vSN7b:*nKWzO MwNj׶7>s;G!F״M2>0ǮmTW +zgRN&e 78wYXmSߢe~;aRn(2|y$Rz!G> @+k]皠WJ"vz2k>[62,C5D=ORMp{W?AYӗ/SV+(7؋ȵQq%8TrƆn u Y^oFk"W pB w3~j-9)NEK{/4oWD[Ax' >eBɜ"3?{$9l,Bv;+ģ ԛ uV?^h^&J)p8gm($ǿIŹQ1ω(Ï +kKRcQ]P^xX5ͫǷӁdJK>pXtrUL#g|RG\%tӏIxenfz|bpPֳ+%źq/ܚ/"*.3ANlg_9k}ZbPUMn8x֑@| aXƃoU*m(!3']N`d #€Wʛ6|]ag7 2{'/4zsTvOXjEB~ʲ{8|d *lb׉8?x_>kB{5%)le`{繑w^{"1 AЯA'(ԓJЗDoϝZT&8eo +n,V2Y'g/ˉG!i%B S-_(;byuh$Ư<ʸ|ahiCdKv_4=]XaKX*27| I)U& l Z.$rXda&$?}xbA{I~cˉ:4Z%bڀ9*! ʯ:wxjmsr[0k~HFkF"ѝxi',Mk"v>&I5ЗPZsE{l0M~,G #/F*,9q@1λm/"1UHpۛ&'P-&VPrԧiPF%b=ݩZnVK+~Ϗ=^}U2" sX $]U|vOqK& ciq?3yDOДlrc&= 崥aRy9JcQ':ʸZPs +IgB+^ f1.es>i6HQu~R=AHmJAY/$" 0Lht5Sp.EQ8af9iu*ۙW~"Aa 6y/{6G7]|_>ȀR) 1&[Ib&37Y8JJTJ}eB UycW5{VQ#IƏ"YbvSHJ%Rsh:YR_=в7.ۇ&1苂 +Nl[^񱥢BRz5:n:e6ٵKb#]Ɣc"[2 M۹N{܅&Sf&gnd! )$Jo듙r`|<4١4E&̣GbT (ΰZHr$ i퀈)h|Ol>N' +Do^p}J%M/-j!Xl#}HuƛZ5+&7D!%%U̫FD/t.<% wT^ D"/RTUb 6ѐ_njuEʊ.8 ż6Dꗗ\{x83 c*/6:97mW׿Hzǒ>QaI/횩;~ /}^g[N@(t6#qoI#YPikkxA\at%R6E(i~khk<]X@ד33G ybV@ul=bCp>b6Tͺa\ Dӛ;Z&fQme-[p|ͫrB~3Б{Z@=F<ʄ 42) m]&Jbϟ;T7>S;KN\0v vU}rAȻQ +y\2E<'c_E"ַ[}D^Y/8 ,UOqCD:˒ Z*d *[}RŮCˏ7Qv sv^0myaKW-s-2fWzF."D7LɆNo6lb=ʜ +xE-oY0:X;s,6EqT@dy`끊E2Ti]DⅩ[Ý G*WiSRL&(K:`h:hx5-A0)! +endstream +endobj +11274 0 obj << +/Type /FontDescriptor +/FontName /EOEKOR+CMMI10 +/Flags 4 +/FontBBox [-32 -250 1048 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 72 +/XHeight 431 +/CharSet (/arrowhookright/greater/less) +/FontFile 11273 0 R +>> endobj +11275 0 obj << +/Length1 1447 +/Length2 6243 +/Length3 0 +/Length 7226 +/Filter /FlateDecode +>> +stream +xڍxT۶5Ҥ# Հ@{B WHGRTM(H^DʋϽ㽑1ok+8 !H_H(P1@ PCƉM!(!J)G$ Ĥĥ@0(#C + 9tHEĮt9:1u~pB| +NWLE00Ba?Rp=pBݤ@(,7vBP/e.; `A +px0F=7/g $ t%!~` C808-A@_ 8 +y`p=AU?F `_ +A +AQD 1+.7p&h{B4` c4@()&&* >`'_} a @7 A!" @{xBF!0ѿc`50#?!_O9 pn2**"}’~I1 @HHH .. +g ؟GF  &G\Ɔ +H!!PƼ wOz\9?v+ gO4f6t A䯁ց8<]۪afD9}pJqЇNif`ja>u`aF삹[P6A0Ϻ*0 +@ _"0+QfV >%@ јc Xa & + @ѿL9 B@1=7}==<0[0M}/@ >04,:Zmoq=&ɢ'Z1I?[m] ٲrCX*=+?9B1+LdvVVf"믾lG[Jn\', xm,lK V&؏a qt?|W>~ۓ!rXU%2&K`JurRYZ+]k$ޖ>zG][z'TjR}EDfϽ1&V F!hb!S!n6n?d"+/u9$qMIKPCXNUGm+Ǎjn']k58E?E>}4{變{nmΠӄmq("qj\_@RxV˦2z?-ΎVO$ɹ]&l'ŻYM?9d^< Ҧ6tzŬgh oDP\4EBBGlޭ <1yY^V~.w\%+ *H`Ѹz; )lѓfYC2<yJ&o<X $Z +Ik?d1NQ7S(|,]taDyv)6cޫ9o'E]'52d{WJ*VhH˦7ܽe6[kDDG:)o˗G3KBIo+h`fyeS;hpOE|~&1 kBFʆQ{U;^G +~27jogER>XL|>8휞ݘ|l a{vthM!OK\}j'lÝb "9^ܛ] i3b-NH2!R=S/BgJme?- +ϟL}̘ #qY!W&L薅b;~oft_ЄU~\ e[oMcڣ ਖ਼Nbz^%xCIF]SwI Mb喇j-7:zWf%]})hS|ݤgVtBcR֕sԔXC Y6j҇ 7ؾinߖrovȁk0 C[B`\C'Zb* BmRѷsQ9mZ3̃-|z[snQ ])M.8sGkNF/>טSRqYEt[U}XR;߅hqjFxpqނ7B p CN)OgL2)U@jG^3w?Q'|x=ӻ=#f=sɎW[gU $.!ϳ*PMz7`ktbZi%\~K#o`#rڠϏ@q>h[ă 勇poT.vJ2ٌ5y9ϐC-on=$=**m(FuGÅ_7(hXGq꜑5~HCӇe%Nq$0%s^Ȗ\px8"㴝y~zk epÃG;Y&!n,%r/̔%)~l]G81,S =f awex?R+r\=>Q_$IT^n:~LƐD_%zwRҺ=:υŅv5Xp^Eޢk.8xSI]AճTY1KԂnG7ꏞ1K^M)Pt >_j%sI? q=\m>Csnl|q~0r(H W&Jǝ78 +=nM[Z.<ǵReѿՀ9WȁZi:+VVNyF>Cl:R>glՕM}3n/ʴv*F̝i;>ҭj݊V"80[>Lwr>[YEhZr3]!!Y(Ǡ˺.BSS\iVݡVqּ䂈Lb|Ρ)3:^w"3o/K WBSbN(!-b" p fzUX̸yխѺ:hY_H{%G6$m8gYOqэǧ!ah4Goe0c\ AjZ/͔ y_}| 8(4],孤(zSxl *4tY@w*q~腚 ^7[bTFG@ub}G,j嫳y[$Ux:^k\δ蒰EɷBķ!;zѮq^Zӎe"u8Jp*jt]:AO\R*ˬZюQe=/:ɨr+8A'ZvZ_ +߯z*GƐq_vKH +\N{)yT:xE9MccB u)N$<#p/Uї +=qs²6A*ΰ{L4dԝLJ^Kh#Q3"QY迥9%yUktW${\ +FF2@]@E;"7ҍx3%K[h>K֜wOFzm RE~t( DఽY%ݺηÃ\} v.4_@hM'7k3*ulAfV^^\4cgyhnM4fU vdЅMtq^XC&ACSUƚ,4= |쬻XPq\\YZRx/i(ߊzR;);{)*Bxz=_=!_H1 +[@Ube5jSɭ&K;X| NFf8#w8TȔ~]{Z KŰ.ꯆ{wَŨcYDbYm8_Ik*\n2WP@jwJip;d%PǷm;LR 1ZtK%Aꧮ+> }`{ey\I('ӛK{1SjBMG*Ñ vd=^?~2OYBcY2L+}c^>SR4_;?]i= )}"fZCYY]4QZl5ih;NH& W%a߲^Dc /b"5ƅANrnXLB*]D3 vz"dnvDʞ'Wn2Y:'Bt?x'|Yԇ4~6խX_Y3N9=YdE~iZLzr{*^bS0aigm=ފc˭F-y93?馚L ߩ*37 nŸyǓp}& A~fg +t3;[{[zGޓ(S"z=W*<']T=˺}kj#8es ߋ|!xC+4*[|+S +Z$mMpR&s㍲B3SY: ̚]~OϣYx ~Raqivv*qgKf[ŝ[| +E4\ج%kJNgqs-`\2zANƘy "3C/Ϻ>U.'>內9;mK;7}1R-enΙ!q+^16paPxeBQsvɡ i/0©}zyN|fDyfʧv~wEWyPKo1&8IfխˀשfI4FI]~Ƒ6K - E eM?P,Yߗ{w6,-dvއqpO}lWsg@PMhJr2l iΫZ5zsrpMC/=}┴P?u>aNiS ޛ܏5'&Rd$M}я#=!L i0jP}kl;q_MTȨ@t_J5Inv>ch:/ރbTH0 m{u9D6XI\3jJܵW>i6t K4t>q zy'~a#ְrE|62ʎR:l=Dh̔`J+ǖH&âr9ú4I?(Oes3;+nPiČ#ImR0bz[dP#x;_gfet]V\Ylk"SVj/%|igJ|7>~7R +endstream +endobj +11276 0 obj << +/Type /FontDescriptor +/FontName /FMWGLG+CMSY10 +/Flags 4 +/FontBBox [-29 -960 1116 775] +/Ascent 750 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 40 +/XHeight 431 +/CharSet (/arrowleft/asteriskmath/bar) +/FontFile 11275 0 R +>> endobj +11277 0 obj << +/Length1 1612 +/Length2 16269 +/Length3 0 +/Length 17108 +/Filter /FlateDecode +>> +stream +xڬc%+͝+m۶vZVm۬mҶm{Nw=cX3fČ +t&vF@1;[':&zF. \hdag+bM"@c33 lg`afTUR/?!#@hmgou Q8@8R\N :Z-2@[G `b : @cۀn@\{o#o&k7!{6},*?-v#M쌝)_0N'? G{kC;X18 LabӝUohoov_,֦pLs;mfa ϠHښm7q>ÿDP%ahbgk019M SO[ovs3;`o; ;nhcat2 A[03h(f4Qp26ZԿ쪶&@k [_EL#T-li&IH &!Hw꿢jn(E-sx=t, 9~ ֲNn%32ۙ3+N&q;;8U_'osA݀p+v܁iN5X9C"}=LCA%*Uv>ۜA >[N?Fz0w'/RnP3 Gz^lAh1L(*Cigqz%uE'{G6N@iA)8=H8~z>0:<4}ٻGKmtJnp_o íRNkĉJsPBp(ԟ=P@,4,i8k j.V.)!6>J;˖pOG^␂YD{5 Odż`eº82n4΀ؙ^_H +o^YP)8v 4;ǒDф7߹H;6d 3_x渍lrY>Ɗɖ|52#U y PRF VM5 2W&'-E8>VrTNaJH-|XHdX{q6Cv:Xel/| bFB>=0 v2Ăt)_|(VQ +Ա]*5kG!p/]$Dя3oKSzgG u"?/oluQ<*]8V(Ow +tHؿ赒o~)W띨r!NZV!i*&Z538r]nzH~躺yNcooHZH1B>3 +y{{^ʊ29Sx)3m+sbu7yvIOԯ-mʋ6Vv ܣ_KWntȯ!Ǚȇ5䗚ls%tWrv#u2YX9$OSPLã~;f</ѝstSW1ӟe~d~ç43#H ުgչmMWݶAЂvqr<=b-T[ynC[gM"5ўX;,Pqq\"eýD˲LbL]Z^G=ZO(16LBu2h + w> gzT=J!ΣP"Ʒjh=s0H~+lپa@IJXмWtnz^.$ΘMa 1#rk0 nmL4rFlDsL,qF_)5LLYaw|Y/O :`ӤVp@TT?-?>kB_n& +SKPlTrSp^ޯZN"ɤbGdۏnV:]~Ե}HqyRha{Cso[ |[!q/^~)zR[*)djOY|r ^oW3W\Й +3h $@Qhu|v;5y^ +H'+%[XPe.g%:gV=8u˄ ݧȜL [nYr( r-ûQu/?D<1AK֫`4, +WQ27";  #9n0Y@ى* .vQDci[#Voqh ,wܾLXo5U0縉 e@_Xgc'Ĝ!^[V򰧨A7%Ȣ˷ \G-wp[je$|*9EjuNґ@)f)[/xߖVhf" +KZf0=[M*JRkXր^ֶ %v?E{>,0ox)m+ji +ҨY#;<&fe}.}$p/qnwŌn/x0_F@2iθ"ijH:Y0Ε^h$*l?s|&҅#7'cO¿~Ķo$$5Dᓝ\2{<>mxMPFplT@`,܇^#eߕh Sy'o/df:ĬaJ,#k=P0h3ȹC趨Ŧ>XΈqvZ[gm-8aD_v;TQ N]a4'GǓ'Ă]8dtvuVnۼ}x9HZ;yDEaf^ukkB>+zlji܍#vCbg3v0.䧡 bg:f7ܣDhDXƝYC'؈mSe +V' + +'Nݼ[LZy fgEy?: s}'[yJ[+n2H6-ou|WpvW`0XUƯ[06]f' +}UѬõ74z:qa4>YGG-0|: izB7/)91 /PtOƢfL0-u|)N9nhg>Jt.;Mˣ_Efؗp#aLLzЎڇ;'Lb#.]/| He3q+zuKZśmh1z X.VE]ԊF"rJ| +Bj)z2啝g1k^dSvF'x~8m֬ b "&qN+Z:+}ލkLۖ<|C2 n!U!q$v!X&+yrg8 C8^oA+weQ|u-ǘwϙ|Bhs74î:"+b) ΅f,>`# & O*x+ߒ0WtT(8;6d?kq''K`op`m 52&ZBKx;=Z/L7onй8Py۹U¥I(67A@xu$y;D^x /)פ:f}_X{7E$aޚ4|w(ritos:2LET$@lHIto9aF}9_XrܿD]\)l!b-=`W J;\ZK9e?c>_K֝XLϦᜏgڈLq (dQ'*{o$Uc\Lq +/ "t-3? Ks$Ӽ_j#u;-x(`A^&F곢v.2ͥ&y$D$ +'zu("P%HF.s' J4<Ҋ,:fz!UoN>%u; JPm +4Y/qجBb˗V<,(T`$I2Ψ˨W#I *",y1t?kf\lJ,*U@ukdaU=jI昇rdtܑ/cox?Hex-Hd ^ܑΏH%Ie:cdf~U1jeKA@U0K0ȕ[]/pTI80z }i +ipxUu:DL !nPwHӎwΑ18 *ܸ>-3fO@i~Wiz&"!E'6,G9OvH]ldo\L"n:l*0>N0:5ٚ:+C6ZeIۮsz@XG)B8|ׁm 3tCd|YVlxT!=*\R⒛׭0N$1C-$2C |. V iQMb4X|ξt=mOG{ S]~@A'Y{y-YUotrazJFNz1ܲ$4\1.CkY'W,Hθ΄C*w'bEˡL:}X-fX_U=*?FxWʶ*tD8 Bș- l]wrij wRW+ǫBR IadwJ MNyL}s:r'4,a5ƃSU9k:xw臦JLS9WlQMW-t/}z](TՓ@Gg>a, YZH%<+Oد`|$g$-\Tߞ#y>YVjMC46Ejy͉%U'}60䎔P|ui}=d[fvËcЏ*rfٵu$y{V4.C +`($.SHn[;" u]щSwEٚ%t[UeGv1U"$!@P2؏AG)U~`Z0c{3'0g\w_xwP!S?LjM 讳K(#Q*Sg%ϔ%|Pp9r$+[w{`-*Jb&=g Pwguxe:1X-DfÚSKqpRa'BHL#DL?d[-˶)+MQ{QT,I^_Kg8A/w'^]YyjZ4j]NZMc=a+Awmd.E:1f5.7/ +hxhyQ:+ ŽCv[Vld8T\~f"wq;Ɉ.bn͉C%.t=}87[_S BUXLg>[PQDT~*1t+ *<쮱ǂEL!\|[4 Ye-ܮoovX[WDז*N@l۟pݶ DWO`F%P~x{ +Sad˟ХkP_ UdѸOn~bOD??MAI3.L &0iӾ/c ,=:6ҌqM,B-0WAM2Vh@MT9U:-Xz4D KVoۚll̀-7ق絓E͟OZ7=N$;n7&7}3i7m@fUiiսc35@d}aipX +.,I]R.O!i7\TƳaVcjFM]q(vԮIql)qsȐX0}!2^ε.º1ȶCiwe 62-όE;gg -ԅx +`^{=&s(iQYwT5_@+vǦQdyXYxQ1csZާh]Ԭ^1 )7v\d+G )mQ9i]KhOd |fZ_ &t=65A悒l&WU,Gů/+QdZ1M7zZ#ٕjs|[Laq>B{~7hKh**YR0<]<ĿͰ >iON"[YGFc \WY>zbE:WשTCy)܏ §QSz1*!||,Eʘͮ\8\GfDV*ùT[#Hx&h!~'\QU\J it&yqiHjhjV\tsM}rPrVe#D3A s=x\SMp;~tIR8ҤkooNޟvCaLQ 322BƤ' VVfskSeh%DWI~z_G3qwɢZ㏵tCfo3`ywA,#f:\5c!#Z-m)`4}Kq"qtƊ9eW+&@y%r7Y ϴ}HI~Aň\yQWld +tS6 ŪYH}>OhvJ0&+|M]]|"2nf"5|Q8M~ +=>]f@M'H 8p»S֑!ywb{kԍ3nYL>6jxmmZw#WBߚ5^М15Z7sm?*p)fW]Tn'Nǣ7SزL)Z1Mc^Kt8%tW`d!QnNJcv74X5 ( 3k}vH1$^[!\ט)3,=h|@k@#8YO D(. f/ +lJ2+ kIXÖyw`\q +8ȺZ4 ;_\seZBxZkEoEsq:aD%g<!$ g֓|2 L +<寉9Kӯ^鱒G\qs\+Y#XnQѽ)W@$.?ɪ `>ɢgπd=EVl +?UÑ]As);& Jv'Ea;[56;CnDšGЮ3 !=2[" Qi +}[LM|U(0ûpD08 :HUGѰp'-8 ql jeAh#,АtyaG$r:,9s-r92L'+hGռq삘WɬAi轔PNAZ,7xk;'H&DXۭY0o1W_nŦJ_imYыσk|:TcHa.]7ba7 U.'N˦kA#O!{欘t5߾;OycJt}.xGw~Y<ڽ)YNɱ&Z=13<,D_U + +Džj --T=ߣ=rOc0^SZ8XE| }يf18DMסJuz(Nn@->տtW5sqXAL2IN\s ,;guzME|slIz6yw2΁M' 8 Mc6Nai|GvTpBˡ b@)SMriG; >AW""mUqu2fsRwq[> V_e91k7{ 2eH{6(Vg)Ft:Z-To$K0B' +vۗTbSUH 8 %vҬ83Uw+SwI;obB.F#\|_:"P{ɼm +z! ,"4l$FKvzmb/5!:s=/ .2֐TʞRho`| lh&3L-nw3A {:םry=.pEKSZfJ.- +H B w \;OiȑgmZ0I#~ +[]_YSZG(Н$QS6b.C Cr^Ǒۦ)?&do둫.@d)iز vQ/"VAɰ*Rٕ#QYAt 4 oq&tn +ևv͚F[UrϷڟ ^4DU?r/$Y].86V[(j8 ޻/ⰸzt1e`>>yo#n;9-Q՚lYnK(C ,JG+E ԑX3n")LN_XҐ-Li*|3GJ.H''c@qYbVIk1iOS#-Ƌ;|ěA +QW`ĺ6&* uR% ZţWjTOM ] l2n-zf3Ҹ{>GTPj(kGCdE3iq|S(vkfwR%fԘrឯ@_I] C|x#4T$/ a~Ŏ9!. +5n" +{3P(uCDV1qo?jn#yzaQLqk֣mbWmx*ܲu7?/Y)dBmo5}A[>܊bC!RmխԀY]GXBWW22K ™%1hma'dK;j?Z۱EYXjPJqpco7:z wܤ@+P3iNF8ÚPjۖ ئ^IU0>}s;99RZUP49Ϻ4#İ6g:TTcʠ3+U8#q"#O4^~N}W~yu SC [l-yV2HC!=SOSt]U$K^} +(v#i%b +,m&A-ћCWQ"徐 L_M 2Xl?EIP] @!"LRs]kw}|c6Yrm.Y䢆/(%kS|j(ë-AF2,@W$gCYl4[\ |ڠ3 (Tȩzu4Uv4Kfn`L_Jr$>KDTnLbEϹpJyv3 +i~6XڟȗJeg!\»JBcrF"#DD %Oyx8ٹjzw*9_.9,>Ln)!&|՛pjK y)S;^ULIÛ/uC +endstream +endobj +11278 0 obj << +/Type /FontDescriptor +/FontName /EVHKTQ+NimbusMonL-Regu +/Flags 4 +/FontBBox [-12 -237 650 811] +/Ascent 625 +/CapHeight 557 +/Descent -147 +/ItalicAngle 0 +/StemV 41 +/XHeight 426 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/a/at/b/braceleft/braceright/bracketleft/bracketright/c/colon/comma/d/e/equal/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/o/one/p/parenleft/parenright/period/plus/quotedbl/quotedblleft/quotedblright/r/s/semicolon/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 11277 0 R +>> endobj +11279 0 obj << +/Length1 1608 +/Length2 11573 +/Length3 0 +/Length 12399 +/Filter /FlateDecode +>> +stream +xڭueTݒuָw 4ָ$Xp%x;3wk=ή]TS)1MR`{&6fV>"Y^I lkx7r!PQ;M\@`{  @ hlTq@EO_!StY?܀`;;p,@@4VZQ :]MmAfyH;lqA% 08;@׀f@\rX:ػ ٛٺEn= vvq6s9޳*KH_An=lWIa޽.& {g \@9=;o {2`8-Mm0uu[&_@.@[ f6f.-A, ܀N7{'ab-X.);}"$o&j=+c73@׎bM@Cju1yo̬0@@seG5́N {໖/>u+_M7W͛EQJUBT_Q請{::u CL rx9y|`w_`$͉h/ӻ@3uJzK5n^o7`CQzJpoJ&osUskˮp7-MW<țu'="ȯsкܬ{[c*ϰmN/(~aQ9%~nGQw|BxG?248uӳKȐ',wً;S%_f|8Y0,C%b7%(չA FY/9#9 X~~D>S)K'zKz*B.X~{0sI(K('N~TgD"7xK JiD֯^.ZSˆL&Fns\ ma"ox&~Nb"ni9 X }I̠Hdܷn3D3[93Hl܅3Gs@w߃cLQ#R HIR^- i`h+|,kvvH #2 v|;s|,afŻ_ a+:Hh_(ZV Wp**L[^4EvЯ@ZSQ?I%h=UzG^wo,9v'ܿtz[eXIJ&DFq!,bH)t:C8FaK~z +K:{|a}B -/Z] !n EGeW#Ia$̦xA3fc{llbqJܼxQKRw^;ZAG=⥜F&nWęx5Ut YX@MZ`rׂW+ܒe#GЗ# x*bUr?;ևɊ2m<`h|#D8.Ic,tS:$ZO8oKV7VH +@'0hU +]pWC[inP[%Ӗ/+}ٹe̱_TGG Ywθ*Dz#hKbQc%4֪`}JD}!zi(-&5/Ywhn?i/B{7Ht'~K03F²y POsWQ[&qk_ń!Oem_l5M?,em׍E["Zr$$U5Sthalw}0z?}md얧wA ^(.JmюZJv@ٍ**Kv:Bk%P`h\EטѥϛV{g eKj|֐Mc <{iN"ޒ4)4T}~)Тп@Ln \%[==V `]pڸ ȉhEkPw7 0hwrKWEVXm#:hcdmJf+SIU*JO{ j,ʗ@5#k4FW9w +}5dwN'Q\#c¯+~k`&@=ͷB 1=<uJq/!hݧ[Øn{ŕ4F xԨl?|c35?C au|@^+x~@^-ҝCA2Jn8xYB1g|rT~[Iy:7K?p s{]YsgoF@ֳMMv9T¹VŠRSZ*yQf1}E-| v9En)w AN^!: 9eU6W 1Z$VsBYTroGB9d{p͝ eU9qܻ= +9, "oayGA>DE6](RO63RW,Rk<+rtY.SWN,M[-bT@ظҔ5bCOfcVB#GToW@]F%rm\dXг?Đ2ѯqQ;ޱcZs1Ib&Z^#6WYĵߦ'Vir5)V3>x e:+hyJw/WqK䘤; mŌtXZIޕ +nq,܂F̒ɴPHd;˸Q<\QJ̥]:߯xm N'2 +0x6wVzMٺ|@Y!|S*Ki)EkSˉIU˂.ĺb +]JzGTKF! ywygֱה3OeD3Ⱦ#&;/iP&ȕwˌxMB-4~ax#~ʻfۤ&ʎJ8KҪōl#28bU%CQVL`=Ig6Jdh˽2nӂ&Vk֕%rr5oBOѸ` >=eu7>JmFD+lY@f1167{GIzî* qZTHP<[~8qOm;ʥSQ]Pg ڂm(o +-%\.qnn98 +{V}i+RL: x#$a(GFt(%F!vUiRpe(ӵ[4'5D,9ni-+4D]T~C˨6ru*ٗ17[1$0ŗ|8+EϠә2x +tNau@re5/-jh-h`!`JTb'1Ɔ,һvT&,ZB?ƅ LNNudWNxȆZ 4@[H;ƒΙ')&}ȷB1:e\[6&g$ޭĭ]2=u%|kŋds7;9lK7A2놉jկ2l\bzgkY{/w\>$]]Doy%iz dwWeWm * +U!ЇZW6 MĿV/^Orï-s[*}x N8/C;>Dw qAHՔk0"M7O@ o׋'פ1KJH/βشo^|,ݚA|ChCH}sHG5% yS7+R}j{yӕ"$sG(n?#9OȞ8YtďS};~@,r5W̤AmHyOK9"2_K곔-F z{gF4F2k5Sdz"t:fwͻh|@ZmD넟KWӈ5q> MQ(I)RS mRPE-#pñ|A$r78 qaG; )t;tbID+/ޝ儸2; eaۛɚ i@!: .֗Vat%zً=7E,5S/}% Pd/yD8 +&_ GSHQ~Ʊ(O4M4VAʹ69{~Ai(&o(hDJd(cTJ'[P!LkfHtjE|l (%>Ot)lxzn)Q2uD%0&%8yLκ0;H22ɪ2>1\Mi3i^tO&cUiqߑ]^]S^0B&v 6JY~sjpcjSt RD@ƾ\!!z{[C$x.x%o;[t;܈^B~ꓴ$0/=*bp6 Ci> # 0!e_\U:qjOAA(%Urv^[a$a<|O uQ\f!ti=7EN}Wc vnq{5R?t{e:-Z%Y+tMJ"(r4GQ "DI!Y$.ǿy v!9M|t"_k@!Z*Xp}v7RFd(S=O՗ q@\96x!Kx'?ۦҒUFƟS<No4̕g9.)J,.ȗq(PdY݊ ߮FA+҇*Mi],q:r@LXet"4dB^18$ai͂q]ۍ!Nܧ>=d[eD #n<>ew?xdceSkaap@ G^ɈI,Sx}'*WVSd)VTǷO4h<ʓ4υ6k]=$J>NfՁDȡsd' CY^V AO&),J#IoM\Y;KIpLnM}x^#&2yT2VcwCSMiYVJ Ic܇̟A3K<-W]-tM6(1Z̍ ꅩCG%K РZ3>8@yL(ɺX*;HSN|bý_v<&/U5 +,bL#?Ylsҙ䙑& a]FQM,>qA2|!28Z F;PkOU >!ɓf܆ɲ gmSGj.?]+R"G elsQPW'7[f,:{Q̓))ng3EW♦W{j=˯S3{ï3Z Bqh-i)Z7>;!N,sj؝\=S#$Bͽ# +#o`.LVC6d9dH~{?"㩸t3S~iH/ӷ_IYwݷk$ ^b _--lĂqziIˎwt'5IJ"H{7`sԔQ 7'T )@Xȴf1 D{ݔF:uˠ:fP#@δwp|aQhs@Pf.}pos'Kt؎afѸt( g?Ʈ,hgoYs*tuUC[>VE1LnZQ6t %G5]#NlimTLb*m̥KmFGo=$UyixUL͇  +rMr.'@o}Ӕ[Ej +A%f,q LhOBNI3zs''[$ɲ?+*O+Hn[k\yJKN[jۦm#`99m gղ o?b}h + ɣ!E͜ݖPQ .rl6W*zF +|Fx8eHu1[ 1#W.dɬsrte\u/j>ף=~r2B05@#Odb~+ы4&ѵUN:jy |v?]VDi`U!8.B'F*Qy%OV8lϓ;y&DQ3*)kSϖћg9k=j;دcam⬫ZwUE~&*cn#t)..zeG1 9uѧ_.|-T|@K6~Ux3H՝PE:IJƓ8OG][hXYYc.o&oJݣw˛@0!FL.2lP[BQ{%= +&d+5t$e}ZڼpN_y~k:Zip^S!-C&f^oDz~NIך4쉺0:lp@^GwЪ=g=zz9Wn(8|k6y<-v6lv@y>W6*Z*k}fYYIx32Ldh)F){u"yqh7odk 0^[F_ *IU@zjKe8~ 66.9ؤ7 Pykc1{phK)XTŭGDbp2=I+z B՜0N09+-n^`mwj^-(3棢bAHHM"H$`NdXVN?y-ui[|MCsmj:2N[AƒTކ4s0CW@iG'U[B6S ;jT`a6$,TLLc-5?<.(ޯ Q1:ѷ*Tr/Q!ySWh&g" ߚ!S`W/.,KL42I6^)&.Y 6ۍT1%F IC ̇,p+wҎ~$Dnظ2<"!v7g! 7J+Ev8;[PЩB#K)ymʨUp{yWnX^H(K`0鑖= $qWHaQ]0Ka-1lUhF 0g/j?e=ě1|Xnvh 2jn\< _)JܜF/p -$gv8ȏx)HܵP@G4>Hz#28<3ElZ4ncANJ^5r(&Rm="u +6D5q"I[srvb)?a**ǗW,,SLzm/\1uo:r%R\(gdSof\e|a>o ?OΟ0*9:PD}HIi;bk$5my ^1 +RcDS&e+|>|Y)Q+ f+:f|A.@u8y!/5 js%9A{jx֎&;&#q}d'M <ag~ &|Mcs1t%h(ah޲g| i0$9!HVB(nws`@6YPЕ̏Ĕia[8V{E9ɘ:P ŎΥ%X3@u R}PkĴ=ʈj&Jo0Ր,W8" T_&ōmbXhU9%8 +μqhDž6+qxPj43 wƝs3o䓾~j!y'M"hZoQa/B,?묭T`na!cܒ SSrPhN{UC~)S )KkF`ĒP +ǠW~3]ܯl'@̖P'[aqFaPīIy5 +sTya6|މt:n-X3A-Nf~AGh +< צ[ n |t.Vu2x{aV%syzhog]Īo ⽩;O(FNı tk_̥p=7Ϭ)S,yQ$ +$Ska7v1lj9aGޢrUURL[C +:2Ef}ĸĥHn(ׇf!$ ?1ڤtSvg +{7g~2d;$TiBiɝ +l3RY`(CxUt ߩTyUsxLuqxHxѡ k85X~R""M|ir sw`}W8--"d&WVے|x.o`:m٤2\X=P"Ec2y;03!C9,8[Tqv +:?_ {:vdgKhC}QT6;Z܌J TƉja`.|I%b:_"GU<ӵkfV^Zu?aR> endobj +11281 0 obj << +/Length1 1625 +/Length2 13299 +/Length3 0 +/Length 14141 +/Filter /FlateDecode +>> +stream +xڭueT]eNS@Bp waMwZg>rOQ(0lX c'#[Ya;kS;[SGA!4rي9@S( +`₣{8-j4tte0@ +:P?_T@QPԒPKȫ$@G#k5 2:ifv&Y%08M@׀&@=hrrF5plM]L +# Ssrv2q;>*KN`gijg7dp;e 쭍<>b;5/G5ou+O?O g'# GL [8"ekf`a?0W?;34"Ll=@38&y;珐.35# i_sG#}N-bm-od1Z2-3`떑 㿹iKGAl?/#I4U9X̌?]C5 + +``af7Ldbeߔ4L2JڢtnScU=?\LGX``c|X\>MxX,gr|O_'53;4*FsG{yY݁&pˋv&L}jhltds>]n,o1Im'WJj;6BDfoo|:@Q +w.b,jTB߂r8TY3,B&#OQxldcxd/΢h WvFuRd=,VVTdD`,vXH;Seb~A>v1+99XRrE {eYfHݸ"!Şr]M.tAE'P6c\]zq:uLR*xloy㦥wԧ+\A(g*bc=ELj }:؊o8WxoHϮRbDaOpU "{.8o 4)Qnfvf7zcWlZԐ aޣe9h&BJ;m PࣲT | V8WTۓb Yu;#VdxghP[ɯb 8տTvˬFn"7kk:(!=R]_r#/ +$zztڜ19j`6«3OlBU<1Ѷ v v" .6YtoMGAI·D +'xoe5gDž> GWn.oI3:A]mG苐4Bd={w`D!6߉' ef*>l^GΩ6*m2%>F'O?Yܠ1ٍ֓MHPĚ<&%/j}#ϺX h| -)Pe5"_;a^XQFT#-$TN]*:{VquҡD*#I2ZO"H-=|/g,m +Y}DH_2"Hs7BO.Z"JYew=~;Љ1t.J>o~ EҼ}0N/dn+ +P]@dPq Xk9.+#V㰍h:oX#Iݲݱa5X-c-* U\YpLlc\V,wARe ǜ{DAag|mn2GF¾ʮj99.e2 E/NNX?_nL{p㽌c@o +05ԳUzCpt/fiJb[+-*W^ݥ]n(ռhG*@c!I񕇏 ߀ID_z(;ʄСѾǕRxnm6sP4k,#xxQߚK?zɳ&hLO {A;MuVn! ,x9(&zƦVS7j'01^R\_,rzM-?.^ppN,ZyevSutWpQDP(o}makw{З(8vd$l,t+4nQaGOT}O. DA +xċH^bYR\LՕ`F8@c1zSf)7Sn HvZit(MqzSSY~ m鹚EJl㯋iuHJWPk/}bY(!CyyJ4 FRm-jN,G]a5ԑ!3KAI6qj䯣r$3^P{3{&;/nKV$s0lBA#;O( l- ~6Orǃ*fx?UyNiIB Y.C}7>#9BUKǍv ז d35AFp+B\aHvCpñbEMPyx;%jSM~_jn-Ӣ~j=DFj)t/S4&,q|9.<'4e[el_= BvV`*zUɧ>cEW@ZgLoOvz#x7B]$'_RU@ݖe~?&|FG,/p ({M4fTIWLhiu(8lWNR} bRyW`Se7λ0ʯ3.y")EF8[3d9A^)b1U-dף9>a$Th^E~^&wKکAbTc#\eͫ02wUZ Gidi%2(|pΨAk(<h$=YǷ94 r$H5"ab;w85T[1S+cg6> +ɖ?|mJBeMsFX}5 {e*t\I*MBppjLYGOy87 CJ._59G Fa5 R"EaT@z{ӟX0o5juZPs@r^kT苴oL辡d9lώiR&"c0g v/EaeIawXrә`|x1N]](p?g!%y7ݚ:\ Q'6"7DP8MA-I!$K3::4{m(Тh@VG׫!2A&u4NY* +0|Qqf¥7۬4t +T1 fIr{NְٝՐc@.F/m(Ĵˌ> Azz]5~.@}<$)`:`l +  2 +b|y;jwz]/n35Wu2dyri''F́%240أT;{7l3Vg/KяM|qk2*^p~Z\C$n̫GV?B{1 ׄPu Á{abtכz<+|[3EhBf/Ur%bFkG2fay~ЎJt`Goj硑Ԫ^{0Ps 7H3OŖo9i%ޢdBv?IK{X;(+Ax@rNC-xp%R%~ mkF4V4 +3$~HZ 6#M*h N n2 uvd`גy|Hnr}vGu(=xlgBm|TYDy3u,5 +V\@yY\dȘgLм%p!g؁pR2O*h&?5ɤM!ڮ$*iS~])H\km^L}Y蟷I5ĝW,ę"LGZ˥*;e%uUuL8=:ۙ\cGsE.]*la]!iN6Ȳ$-E;wr4NĐXo>Jl@B`2K7]Z4Z iMa>),VBE oGGAm_^@dxu |4[&11ǐNC&I4 E%;&o mI`»1{zFFyPjաT>¶0(%fWJj,-rNk: -kP.NNk#a>Kj*\'R/LxޠDwMJ)=w4W!e7O Uqb&sH?<.27O r +++r+ \r*QjtmoXngt_ez'{շB磎@zoA0D2s^OD& JtR9i+ء2ikNQufP)&Z# 8贵%Z) :cOq(ov2;n}-L7CQݵnfB))Ңp +[89AfY׸,ܑs +7Sگ{ +esNavs;JثCz3̃?RWG Qӵv!du00"#+77~15˥ދd;!³tҧBjTZ*Az Rf.W+/"`/R|,2[@X*j.t< +mr9_݅*Y(Na  + qZ>sOhV䧽z/OܖUn`㭽 "M W&slKzZD]^ Th"錑NPoOB-##i{^+z!F.ww+PIvMj&Wif~hq=2BBc9g# J(, r N[Nʦcg-_'SZ-锻f"Fkí3Õ| />B*rcgk(r4Ǥ XobcEaB@QFNz@CȺFbjE$O]ߴ{Jy/"A,ub_!VU:?e`[Ӭni8k%}j\Z ٭D 1iOPB|>u; +4L=MPiZ5(E-;ѲMN]USĖt-`$`i3u"wGW6Eb O-#bP4*m"jYn!LB yת=џn<~Qפے㥰T0M;X2ssݒz-_7#ލ˒V~pFfc: +7 +I+Mk6eENqONI|tSx2O]3 m'j)~[DoNY9%0}I&]$iWCH{FG[.;WŠ_W0qͲȥ+VȣBa[C6UB7tŅ1%C)VgB=s0kG+_U[`6y#yxoԠMVc`ix^B_-9HH.Zi$$DњKV9`65a()2t2`crɏHL])mǃwJ/1aWG1*,lbeOJv_.Hw) )M&f2&y"#)[g>x&u  cq௰+S͸X]2U?:5'g=Ý-/ KZ92889p]1%]5ԤmJxSb̫5̓_cp& (]97-@os9?ϚLZe~~}g6I#ދOM3C%L4b=p0Ҫc"2#o݌G7cs)A.gb7^ᓾkU# y>֦EV~\% D kg gx}cwj>@6ڔ}SGW#ȕ@NFY巬7{$@$sY&NtzFԡZSuW keKvĹ>~Ĩ$ VX2TrOֽӺV`[X"]鉒2o{y}<̵kY"f6pnM颐:c\3GebI;|R(ץOW ?;^xq<`UJp.@HIrF55YAU|Y%~j@SN If2,Zn]k@nhxǽ O|3j!>Fj48 ` L7j6:F^y"zޒny{6s0JM+&[ pGߕbWG5CAdCWl9Y+ +@lNRgRnڹvۭ-墓}8rjqLk˗$iMxjJR *HW"n&,Z%܅w`´7RE +mY[&v5u[^u﫨{hپ&Ç>W,A0lMǖѶ0 eNe&ņm{Ud({R+B1׊JzɦZwԒ.V[+g$$?+xXLA!=C(BF׌`vm>GhE#V3 Y4Md>/X P=#I_*'%~*-F'WrEy l7E1IT|j7lʹ0&p ?kpUGTvxn!g-?`9C&spक I@tĊ ԯ$#h"F1nn7^J};Ze"amAb255{ b^2c2< 2X9-'O,f9,-Hns2*ebP{XÔLsO>5掺#Fd)41]/"5`V@FD}V36x"\]bgoTRk[:˞qs:LHS0`~k|39E{y^^`[*R/ +*_ Ciuadv#P`U$|D_}跬dh ͻ%\*K# +k,fM>V2J0x]rn~F_NTυXA?cX/ڪ^̫nԚa┎sy gpz`YGoK-Ip8]ܥrJ!oNe绀TT + C;O>wلH(ᰩK!L;tOwx14 +GQ a| K:hHu \ma;}r9} +rSg5ع/ѧݲ5fQ9KfE18'<P?"{攋I-1>DΠqgZx)j 4W {lJmeǠ1|3nץ*MQe9ċO;{Esqfl+]T|t [)8CqiɱzƓ'7'63W PP gX(hLxMFsZGXUErQۖI N]:W~V֜g{qچ3K2x\/P~}i<a VMfd-O4X>ll7ǧ)KP;s.zIF~~sVn%NDMHeBD#]`l\;YR?uFᨙSZJ#ΡL }DIYH*3PJKiAlxoISY u{5A^DHR$K}\MXHZ +nu\ _.Ws| ~(撛^bBwbφa쎡w+0n +ܻgdp%:e|:Zqfu2 sk؂- gխnٚ+h*;Ʀk'1e GdN|ؓoWpúgdGeǁHPJ.NuuH HY& R2 u/(F0J3ȄUBk@RcGQlnZG%N +btQhEh?,T*Hht5S2eSO<X[>-k|cOTbKts;pI[Аq|X> +4 C[sjxrZܾQ[QcDM~wJEREŁ/J{)P&&x$_! ʹ<7ƪZ]$Ȃ=]\wZHpHPI r5~2/\1'W֓C s+KG{| P:|\¤i9Z\U$UVXq ?p x!-hhPcқ!?&{&׍doUwb{5G3CAbK+}.~&NSY- !m7bX38툃9#3RfTh `o3⾡"F2z']acuC(ӱ8{҃U(]K@GA}/O͛g9|}IOAm[){)X^Rdr{o&-ؚdhF)7 F}ѹaL*"&5-[g!=c2VM9.gA+UqZAgA@~BFة*S믻H$6)_I Pe>Q}@ :>+#,wQWi[ʧS y rM^! |km?J|USCGUW5Otl[d8Z[u:7*_yƯo h22JBC$3Dg8]Q~R +[#+P"bYȍ_q XBBI_i5_&:RY3+7&V$^t3ҸQ?WyWZX) i:oDCs]5YC<; SX]~qc*0uqKܻ~IV]ÍЪجv&\YdܡBԦ;4G1av%Z?br蠁POs sW<f3'vxwT~Jϻjdya[[Zz_& +endstream +endobj +11282 0 obj << +/Type /FontDescriptor +/FontName /KLZQZD+NimbusSanL-BoldCond +/Flags 4 +/FontBBox [-139 -307 822 975] +/Ascent 722 +/CapHeight 722 +/Descent -217 +/ItalicAngle 0 +/StemV 114 +/XHeight 532 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/a/ampersand/b/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/question/quotedbl/r/s/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 11281 0 R +>> endobj +11283 0 obj << +/Length1 1625 +/Length2 10485 +/Length3 0 +/Length 11322 +/Filter /FlateDecode +>> +stream +xڭxctemnTI*v*qR]AŶmsǶmVl۶]ۧ{~?Ϝ;؛PVFHH@K 6wtPг4Y>RҟFz@3kA='@ hd`d0ppp~غڛJ*TTw'i`fb p22~R @S#ৌBDZ bdmd@`lc``cmhWj\=٧_5`0׳~h06t4+O|jX}bd6@{3[ ӫ?` l?5 m JoY;F.| l-\?}ڛɿ"Z98||rU oZmm`t04a`imbf CװY!7t'ddw( m-]F0t6O]isM?H{=o>;c>@מh =+3KU_\#4 9ʚ Lz[dmhdoifmԿio_g26?wtRʪTj[SsFq0h9 l&D :K\ ?FQY~ ?L'feƀ+<%=Xkp\P|0жN1?קҦ;%dL*~umOp7%yWy'1eO.:Yվv|Jż&:+v+$d=Sɽ-Arm4z;R=Ju Y{/={8TY_I0 uo4ÐOU$$8|xZ)|QM!ǐ3,r ٱڰ EA_a&Q]D<3\jv +)½ zTԅZ-29yh%F1u8Z9Xs;H:2bIrp7k;B,G+}7_Ox'/8K,-] &kGqo<|$tq1שQ;$Lj{K]h ai:rGr/D+neB|`!x3[Dnks +NI6){e2ѳD*i K[$Z]AKM`9tYK F){6f%~!Y='Q<򒯧Zx(גG&0WB|_؄7$fԈhY]zyR'hɱݑs:؟_T@"QYd0aFuL!.UogTG6 d ;xʓ+GY{z6 4:}Cҹ(P$}+*֯*Go;ڷxn"Ib CK1=>v^ -v%eLdۂy0}eJI[ީ'pN"O!Ֆf\ZB{4&a 2ih]Ŏ),ž9$7xR2ͽc92frA@7}=pƀӯ1f0/v&K+xѽc!Բ^(U(=v-a!^+ApқӤ2$n%.=wqA75}ry@1n-.Pr] ad_걢Ρf_)x NP~"m02DqI!ʅ)cfe֫ztjBJTi ++v\Ovu+V!):˾M!kUUÄKIOl.`fVS}ev]*3bv%Idmy rOZJ@H9ȟ{ Rq {I &T(RZ04寋hPAS s~=Nm%>HH[;{"gFdx 덹L[^C>`$nHAg@+Rz> jAq)BjǮ_xX;jc}8O _=3M֭<~LXXV"6&}bk;]{߇"D~A@tf7ZBtb<\˸K:g{Z)/,ޯ}}Za]-=溑 Qx1*sTޯW +\Vt MD15"^=T_=\S5J~ݡ[\ YfCkjWKbUQC,!@ݶ@gbٳ'y!МoC)lW]lA$ .&a_Ҁ 4tHP%*L[f ]WH 7%OBu k  +5C4ݸֵ2KC^ynFm6Ўz 4uE|_bo#XKwZnhۀjIZ]}R+4[lD/*伧)e (+a +zh02.kAdUGd$NLg,Ҫ\fiʂ$y5I'ZBq= +&uS)oO!^_Vhkl UP茪g z.Ы͎.Uq=חJv[bؒWۉ<#Jby`z lY#8;N0s-.Gܠ5DL12J=\(yU!Bꫵ}mȐ|"6vXPঐ[nF3`0(|<:kpppf mk-=VD,zl/r|۽AT&2D"Ij~"ܓ=(غ?0l%0PUrNI,y +<8{.i Hr{r n}!zX3[٫oϴ;h-}ГBy`U 6vy_cV,߃5?i//lhZ5AKE$ʬs v pnce'nDBӼ$0AhMOrW +s.hf5ڿN҈*fJb\~<_&w,8!RkrX_VZa˟1S~GO]}]͑r x[0ێi2s –r>@Y7tfk  +cգVmH:d`"ܛu(wQsTGPdx %;m/ +>o!NPny D .+ Ue1v>U@:9riWհ&,3.Y@j0dɝh8Nط`^Lmb"i=kO:fN яrYCW${_ܹlOQ98[urd挪vc:ړ=JaomYt R[FKEDڂ/!Gю51#ɏӈYJs<ĕN*`=\KK;FMj||;i? b0g(N5bp|*)' p',E +Of^چ zVYg(ҟ@@=XL) +dS(•}16ܰQ쑟~C:/^SYδ5D!yhcA_hlj;?ӝ[mV4$m= 6"P(&%Fu9,1Lt/3-tUӯƦ %k Ɗ{xzۓE2b~T*n;rL:•}I[Mw344kGRkfPKVjk <8((sA +]idA_nb7 !16B.\rGj 0S!3KRLC8׺lg/pCZSq9&,ȃw{$ :V`/\rfƬH5ZCԉ/hf*JaI1.6hUX%< +2x-&䴄OyNqA!vяG^`nq-A藒DzsgGU2"pzHE>9,+hkG|gF'THQ-7Q03龋ͮ[h0 Nh65$j~΂!i G^ŒS6R&q$3۫$k-)j6Ƭ:cJ<87N-LY㓹MC+|HbV%Rfj aS@ɝ(:TZGHѠa^2`,A0uu#*փ8H mYZ?x\{ov/N3IN#>!ҵ~P/,lsSxUDLǚ!+HAyk%`bu&L*͵WY1:S"x DAFmaNcƯzQ.f{^Mg+ T왌+JF9-L^A޵zB}[+O96S`g,G/Rni~zW[ (gKM 89%HdzH6q]7O~~{ "I +xZ-w"y6ZHSZ>P\3H ~lլSGc! pTiΞ19Đim ;MhȸU?#?;G0_ +ڳ(q9ApXnտqT-S/T.h5"K5%[ ] +֢ %GOv_ü4 h7Rژ6Δ#Am~ѷD"rq,w?s=$ 傱c'!4\+hGJVb^ǎk'a29K#a3{Nvqnpfd;M-|8E1$›nYgT$tOSpQSMD/jSľ-RY, Y] p[rgW6iAq\墜Ϊ %䵣l +!7= [jېDY~yB( %Id8FAL*+w/=%~5i@i(ᖞ!S5{kϾzʲL_ƙ0HVCOjo;x:+P6pDA&b/>|g;w:!] '_h)N`%?KrcGWwPzAIN@L_X1ny@XS G8@bRTH#گiUy+@ %#7e*LV3B,߇Hg[xqy矍sP5)Is0 +*.!`Zl|іVڶe@u*Nʙ +Y^!de7Pw_h/"94 +|5ȍO +|D[c|-՛nSW$a,GRcfI*q$J9V_k!*XƦ([>]V.M@WRq'1[[}VLm،BfQ}[z&˄A'u:q֚rV2q¸6fpJFm%Q)!ós=#VW&!n +h.H,A6zGP2VA(!o8%\ܢ$/3z3Xk^K>l\wZA?_NFiI#_vɃ\'Lj TiB샂5zԩȋbDG:p0P NdQ7_K*JC+.=' |Kɦ?Gr>??b'~ 7D/>]+}9ZS?*>ux*W 'L>RZe6k̭>iCO/HS&JI^Gg:uGXoPE긿J~M[&VȰ385b(9[`]njMRJ.FG-N W~mbt|O .fLT'pwiد'i +=~ {\V`7,1W%6t!0rߍIjrtD<^HFu]_I~J?qCρ۾y}]2RV㏾ +XQAzyeFxF=6s= ,ʶPngǰ|6_f%hǣDi@rFͭ@mVȳ)Xg/V0"2F4:((Wɿ "|`1(M > PYado{wQT)|U9%8ʉ4"JWck5L h>[]˕D -W(|7Y6xe'Z7gb{$Wd:<ި{U)iyjk;Դ}w³蹠j?R_;(M/ (1^"`SI|%IR^ .a#8 )MV嫭mU94~H?<^aZ3$鍪 n|3lP@J(Z,bn=40'pI +?xޫ1&r7l7»&X ˾a%B[:(" o +.AiRѦy0>2iͪNr3kJ}cqs'^Ek: EsιV~)v\cةX'*CH:HU|Ng6t*s&9i :I)4KLWEzWw("/Xm-ܴ1w ?t%#oP;͹ lmK:ri#+q+VRDGVM(S^7.fGzV[Iey"]/( ^9 +f⣊n D%hnL̡҄2JR(P;" _"XGD+*f%Ѿ TU0ѭx{nKHxIz VB< 9K"Z `7;kq|T"&-bT`p2)BolҏTnYhIE|ބ!GӏdI +">&G! h$KtZ&|{ӑ +endstream +endobj +11284 0 obj << +/Type /FontDescriptor +/FontName /MVXLPF+NimbusSanL-BoldItal +/Flags 4 +/FontBBox [-177 -309 1107 953] +/Ascent 722 +/CapHeight 722 +/Descent -217 +/ItalicAngle -12 +/StemV 145 +/XHeight 532 +/CharSet (/A/B/C/D/E/F/G/H/I/J/L/M/N/O/P/Q/R/S/T/U/V/W/X/a/b/c/d/e/f/fl/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) +/FontFile 11283 0 R +>> endobj +11285 0 obj << +/Length1 1641 +/Length2 9866 +/Length3 0 +/Length 10710 +/Filter /FlateDecode +>> +stream +xڭueX\m-`;wwwiwwwww |ߝ=9oUު]DIA$avb`ad(Xښ8;DlLEN6WBddi3v4A1 +`AA,-*4ttqyt4(_\@6v[ +,@3K@TQI[ZA@-AE(9Xr@D0s}_+S#+#-_@n@Dl-_sc8,@g?^fv 8ؽzؾbdJvN@K5:,v|vfv@?%ҼNƖ`GO.bc ` gGK@6 GWW?:zchdcƈg`fvΐ`. .м06۸LAf(L +vN).3h=//}wj gc{^7#@g,?MV% 6qoQ?M- 6 #VKG K7`flzk_9XAb ,YX7׆%IAXIG[gVz'5wSiۙKD ``xy,o`efdffшvHl:s4k V_(sv@d*̾1ݮؾ@HaZ^ouR@ƺ1fCmڝ l/2Μ\t;~LGft85v6FU +Z~'`xk"0UQP 8ƧˈD3?$sr7r>?p^E`=ߗ[<5\353{ZZҔU]ys0niqʵzri7e>Pz&O޳ߌ"GK3fnGIݿHqɨ\J6 !04J4WaO ++#o c'EjX^Y] ֒7e|ʍ#VՋ)(=YcѐXn\VP޺S!,뚚c +P0۲Ƌ>V?mfx}ٮ4jg1جߦ?cUdpz,\_Y6A, _/'Bn.[3 Iqvx8~$Ẹt 1J+D]W)Y3]F=5-~0fu+ק}\<׊8d=F]pUͥS7ݮ~pެ!]qwmCc/|X>ѯU.abq 9A(Q}[Q:džLAfK_ܦFߒzUЏV\7c\qnh[ݣ]"'(=1[ n8~ӵ+R/^301$=ȳzH?V +dba U:2,3|2LݜOEAIEڨu.b_S,t4l7&SfUDTĘ6XnbNa]/ 겎TJEgյKa0obr'7%H-RxSIeԓ7h bXW"oA]jܱ2aJ?C34rPK6ߵ ~uGZ} D 'Hx8~\X; -hi{T{]q +d}d &BbiSɊ'7#~z<{ղnuK+:"4Oa{maGnt],vYrQ:Z@a}N+C.?<LT5AUEf6願 ]f͹m[V^8};Zԥ%ǭMM?霰:-ꆎpGJOj1οWjD +Oq]ْn^3À0sU'iDe#{zBxS*ZO 92zۄEZs(byO?iIF`?e1}\cSc~4~ׄ]F ?zHʇϞ]d.ziv*}] +'M41z”zr:>5e|;}0` + 7T?}_LF?>w?T_f9tSO^º[zO2(kDx݅<oLQU?HO.+lL-ɟ1 M#wV ۖ|!4MWNLєa:k3 |Bg^Z :/h*`g\SX X&@#]YYLθKNۥ+]{TLC(jV]&k4D!ccL5M,FOfJz)fϯo>||G&/LdOHTgUCW.[ 8]/wtΘfA 1a }R7Ye+yrp_9o0gkW,nkɥrҘ!9~Pi)\>jFzg) )-M5d:MQ$g\(zREl0~NQk*7}gtrU4D57%Q>LUy%y=OCΙ]#~zZu1pIm̛N;}#|l2via%ěbJu4 ب@JT03)=|o+߉rv-*!%?RdǬSoQxsR~l@y8xL& 0n-:eA羽 +ZPcp]r\J;"W[}'q{́,s.ȱUxyM '?>]Ny0 2P3T)3XfoOd6N +K ><5pgہCOS;m.+U 09>(Y 6$화FGfN>aa@d%BB(oxv@%خ2)N$%y2 +_Űtǥ ;2L։rc| +(%SfZr#sZiMlݱ`f?uR8Ua88}R1a<7 ( WjN0CHb& q +Վ:?ݩoK+\Roe/z7  4ӬksMNTXjQGt0!W No T=/q\'|(Kȡcڳpş̼ IͯRrw޸x&D1rRQ{9~+訰 + zE>E"i +)G織;_LJ$l?b~J7({CBkrX^aylz?M-noe/r_6ECvlY+;̦VϢjN5=~{.{Ae8b.mṣnk; Ej ZPSxk3>w_Y PPA0m<2%-TF~0=:P{s&ܼzV{rmfw [ 4䰡|]}ъ<YРc[TI!,>rX~&BqTlZ?pX<E2+:N}2"|;|xLsv~9$9Ti T.kzC.3?&"|hXLY}}꩗pMMMƃݞ4YgYy}3@6k]jہ]rZa7jYm &}ckvk8Ͽ|K.YYԐ*_2\qK{lozSfьxh@R?Kg˩t*c$rrF嚎C9U7t +8O<Yk8͞V%/w/Elh1/Ep4a2XV S8٦5wAA͞tIP>\۾Qhh\"\X`.SKU6B)C'"]j1vڽ)v≮່Rզ\t6A$ڠ.HiS'۰{z#RK/X j7̰(\#gc\ Rp)Clw(=}2IYbВ{ ܟ9/yM``z( #\7|'gN/ѹ a &|Y68!e +b)!lMq%WE`;ȩ"l1M=`~:K@`~di[%EHZX%,l7BuKؕ5?28et]X/>z>reŖ# U{Yzd^56Eye|. Lo Ûge3 u Pn2Ϟ{u~A {,jDzVe~ٽF߾j-pK*ֽ[oH\oh›+|rCWZ|%VZB"Uߦqk† +Vpnz\WmX\nfYPX-?xY"yX\pݘw+T.Z޹Z'wVXL:ƅeұSo1 .Ϛ {q߉܇kbV&4ShuR*GI{'[ Dz2pm_g@ vW ȯ<>US*t#Vڮo4FFFd,F6gsɨa@sRT.# |K`xZm3S sl6v&1HǛ DEKW6{6N<jl/ |T'=mM yxq!ժyH -`P \$ދuG[):c(*t@i nwbч@Ӽ餓r\%e/DA.yAr ݛwk +z@|Kkj*,FRQ \.Ic1!k]^4q;m=h>$oM΃փ"S}ҸKa Z.κ#R]4O\ NCkU.馤00چȅfx.lIDg HPX5n#EMn3QIoo8( aGSr`Y\NuHqLc~0#} 5-5x'u5c3!R;|^ߨawМv(|Fwsv8;i +EٍW $~H,m*AΆ=|U]]Jk;mk‡w¥G_&²KDa+D4Q@dj`>^K^bQ471kt#.kT + L. _(a- ̒G0fEBV3;HYcaoEb^S?]ƉhFu! +4bN݅O!xT.%]j y+dPPaԾ)N ^{:uD K#ZO@|E3ڱB>!ƶ +F CƱul+vJ8DY8#>C 0:P3o8фNk!đl\ӧ+1&MrI8,x pYqhr[ &ln;]288ضBgم'*Kp~Mb?-U,twӦfRSm +e&Oַ=14q>ךӪ0:~!NW[{}t+'GEMLTI Y>=xMho /YH)P؊%(|sdZU3璟a}ʼK4HE!}'~2Ca6Smz (54P AOd%ܝ$t%" eHn/1#~s4a\~j!&X^Oا!vղx*ퟻ#*aң(ĿWN?qRjOu[P wC/nذW{Ehj"$+Pn9^DLé:LԼ04ru L1bo23n1l2j}q=)R\VLfḠț5 KWg\S(j%!vJu:ni{B#V-58l(I?4VaLIe*˂.":@o;(HLd<tf+~-^*i)v >i#_l<58D^g~9z6'33?(a4ȡ)-dS6`B )䓻H&d|cw^B#oK!HmX^J~ +)^)5URy4g?ƒYgaۈu]>.3{CXzo0]'ILI}z"&P gE!@ W1Y4)n.Ki}*qfz]fd37PCwDBY59yB ֚|pWwɯ곘pF 0C}WV!]kŶA5&sĶ0:).T]dc'ӡEPoz2dGwHJ@X/aPAL}}vHUa]LRDԋsDʤmWV&؇ި}J=f2Y]bLjY[y^`0g +sEd7o jsF'hP4eS}ZS/yU". Ԝ2pX:$^DJh(R{6<6rVJƒَ8v=3}uKMLe X# SpНɻ5wsu<"fm$ +ѦU=U_ˬo#ql*3_`?t;%4D + ŢEܲ@a/aīX6翵鏂G@X I^[Fޑ{[A7x>ӂ_gz a/|E-Mch`դ z6&CS`+sj}6hgJRDXxa^1՚HrGKu{!ij^7 +ذ1܆avZM^2qw!"}"1 +a:DZ`s3O/&1kTӲFrU)2R)PS U<2a~00e7j.,JBtKG%HV vd;02P_~t[YIhV.P")xXPg5~Dh 9Me="q>/#4ru7`s !+=z2z R>%7DԸ~9W9T(U}vK +endstream +endobj +11286 0 obj << +/Type /FontDescriptor +/FontName /NAPZYO+NimbusSanL-BoldCondItal +/Flags 4 +/FontBBox [-143 -298 913 989] +/Ascent 722 +/CapHeight 722 +/Descent -217 +/ItalicAngle -9 +/StemV 120 +/XHeight 532 +/CharSet (/A/B/C/D/F/G/H/I/L/M/N/O/P/R/S/T/U/V/a/b/c/comma/d/e/equal/f/fi/fl/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) +/FontFile 11285 0 R +>> endobj +11287 0 obj << +/Length1 1166 +/Length2 11441 +/Length3 0 +/Length 12220 +/Filter /FlateDecode +>> +stream +xuveT\[-ܥV!8]܃{pw׼ӯo{9\si)յX$ Y; + @MIEy,Phim@E!\A'i ?@`dfg UjAN(i` A<\ 7A*@ +j qh1011XHlN? OJRȁ@+VBq6΂ll?5ȝO2NVRǿ+g( _#Yy88ٺxoad`\ o _%}ANV~gf z_P88V@w% ^``ρZA|jJ))2I `?x3㿴OTp19'7ۘ?Bm c5^?kz88 +? K +pu_>@=?ɣn` p;K&[7Y[o;vVC: `NhrssS '()X:Z\ij//GϷ[iQV @P·: /)~^({0}$܅65F* $2|^]8a0?Y + +]"\'K _PVЊJMbkC \H+Վ>j",vKJGUi}|h |qi@'`!\ŽҒĠO{ɦKIKTk ԷQ4DhA<ʎB@$ŢYQ4 'SZ/MjBeD 5$&tu1KwɑT_T19i69S|AA[q&\|;gFsۀ$$jY1Q-Nn"Id|@^*23znsfDSvw0 &*dB÷Ѿ^JԐ@3a,<[O:.s2  UXI[_E?93G +r/e!5|C$u#T7k|7}:-,7<,|=VchYIخ lCoJ Rn!礄G$vI.GKx?ak;!;O.׶MXF/_$; hּOM釡Gou<>pAv?(w1q}V%{餶weh?kh[/fw{t#hDyݗ3F!fqkھիjWI!1 lBq&\tCz*;?oXlTM +@lM%k 樣IE->Fy@!,{}^CMok\SC&?%a:WTJ4D_@wg _-֓DuoVjBa!<j4E|У(+o7==IcyCRNvp85u +'{ + }})~m!\jQO2w,E?\Uq$jVA".qVl25t/ճGt8(u#tY=}6jٽ*L9EK u]ݾj,%L*O~ax2ʬ3UvZ=&en,{>)t 'Mjdn96|Ȱ[%^-$X "H7ku5';v%HQSb#M5+*8br&$x w1elx'mKhDugOǝguHpzc:"Ilu( N燢Eu|54פWUAo`+d5B̌FR+0.8Ҕ^?,R:MI|#*?C80>ᦙ$!ˋ1c&MhfgwBq4x%1K{:%þ)ɌqgD/tdJ|o%їm TÏlԼX2%ߴVeהTȼ`9Qe^3MZ$kϚl19ywٞV{8iz t`X=聤||F@HLa)fC͝AO\C.QmX&rWB]Y7nuHp:Ì4ϹQTT߁Ts5k3mɇb!ba'GUѦ{259t_y ]ES@i2~׿fK.7^ cլ0(3nqʐM}F"ga̙'nX^rk^diF\' ><-<ʑj+ޣLaA) +"s cE9 1- Ѡ[D):G)2ڞ&a~84La L|T(*=Ԙ2Џ1Gx3轔~ьE^4M~BUIW?`-L"E)fkcAgjS['k53O9N FLc}8$.'<NFQ*I_bǏ޼jzES&$mˌm!iH>#@1wih|6Ȥ=Ū.&t_~OdZf$:>+SӉ~-pT +x䯋 CFWþ> iB)|}N53R>x=,eI:IcnNvQE}/p/C$6Y?Gܷ܅Z)zSXIYzD9UP:r +X!S fm2Dbsԁ#w~{tu4 +K#({N\,Ҷrݖ,״0wX?wjx B\ZU|os/fs ]vSqO ڲ0DPҞ{AalI4a4$\&=m!7uRdB\K9Ԃk,0pN Lm*qT%ѱAK۸1w>#N]7.#lzOJ֩;oq8fK⻷+ٷ:5&TJ϶f텮w+$L~#ɹeb"N.ŇDτ /;bSl|\^N\vM-6%f)U!YuR!q 0Q(>qΔa㗇yLAyBSK;_@bTwjd*@!4錥bc6Mˀ6D].Z? T-(C/ޏy n1 4=e7b(ŵ?˺ޣX8h%[M ˗GӾ'v! ~>NE'ys?DDUHfp(yHk@+s@Z#aRr".޺3;\wlU +3W\5CPm\[r_ۭ Zաx*\:j2`Ae C!fƺt&fouTܚ Ur%fF+NJ{;ƍÈ#XA}2jHZI*a.SLk=8Moue{sc(}hY'ȡ s= +cT[<֋`jKb#4RUK)@xuzcKܵOF.8Scc.^tӶJM3iUKeUlJ@ {O|E"\cRQfFtS/ds^Z|n7EIJ(Wy쳽;xw=e1e|ڹjQZ([GwOr79WQOOITOMgbz܏׊SYAtx?]!aoHpXŖhW|FRxP/t/`޼[_;f +sQ F:1dEú6r fe,(Aڃ24!1sٽEy݊Bvڻ}5MeB!X`AYsb}^aϹsTNmP}^!;)ᗗtk3;c<;Y +^xW,)썾U4:5m*Y{76*C ;DMTj,,pt[Uq͔O&\xJI?,Q~/i +-|5YDmVr5WAσIGpxTڏ\>{"nf`k6Έ/s^ʃ2Fk\ͭtѲfs#J\6, LE/z/i.ߨ{pTͮ}e]  bSњC=燾F]@&b$3g]upS@߳]XE8|BA*v7BuTf=#z/ɩ-gwq]E!8P^yuh3s;ve kQ;ҝP7|h ý@Q_<3k%$j,.JvAL qѹauǁ%AT4YӍt .ԤddN δFefl~vܐzl9L]?LL|Y<@zͮjjnAB򻹅@|cK"O؜ɑ\aV((v!nuj +櫽^0:>a-[Os_Y +ʚycL5&~De%zKS+(Z0qUUd!ӿB/uݑtr٠%cțװeP5_]DzD l9>Jz:LX7Mgvyn8el’xN7%Я@sI:k3l$qs)gX(_?r N׏"V*U?]>ã$KMg?o +Gwow҉]!$tyJNE YF[@^'謱ԛsʑwc( 1:HkȮvwa)j]_W$xț0~u̐wlTSq5Ul77YH*8[s2GtGOS@hc>~KDT%{ Oa$܏bSX6D{@]s܀6uީW4bPkn3 +O!;Ĵ}oc86Q|N9.47r?c֣^o(8@:WRMu! 6 8DxLL-U!H# ulp24JfqD,ac7uXUhKPk5}L%|fZ8Z b; :b5S ӖH{[0tܝ n˯AZl ~^߼ńN/״7y P ~2V`&LzH#oXNC[-#_ul +Ly„t >tG +vu]蝋 U\RQ?BLEoWS iʍEf54X5߉@.@C4QS랺rYwo'q%"^_tbZLoT7~Z|{Ja{y_+F3Y`2%7qnV 뚮B Ia]Tv~i|pEs˷]8}!clV:qp.ԶŃ+#ZqӜH-ir|C}]3_%cXx0O(OE ,NݸqvFW\ +媙qYZ¬^ oUN[ 9>fJ]:pqְ4F?)/tcOc*yPN\ሲ{a +玟/{3Fɷ'yiz'ߪ887k$ꝊusaLpBsF c1xl7'U\\x̡z9n}zܦR"ne"vk0:uԄ0'M˫Z/~tnxzo<3`r3tkq +bևr ZOam ȌʏRK:G>݄;|jsJۧv*+H }UtbfT,%Ӫrs#n6bދ7f_/ LXԽ"}ͨʹ>o/ޠQ=73.eIU/P8ֿ;El D-](Z.1BDg>kEy;4?*5f͘VB@HǬL-@^);xd$@D8Þתq_JĂ:wBb>鲅7cӟDwF3%]>+j)y8dURRd ]&֬a}hUs~B8|6;oZݵ-SO vfj>X +C.۵%{)n}XL+mRP`UkXTe +X"a$Sߧ,N[}i z7`bT@q0w朘vDm%3HY N1!-m56G ;!+ S1`iN3@4FN6JN8ޱb!|_JWУ cޔ>'D(5/aG=-jNqPK瑊zNgvxiiBH\7_ t1:sA2)lFʣ3گs[Ua;`Ypiqb1Ȋ1.ĭJ-*kd!j-jb!Abdݳ*_vL8ב{^YwFql=s֔'C(J|YZ7o0dYwQ*F-oFc?hΓKq6pp.&j2nC4CǞ:WS}b=7=?V)i̚mf{ܫFaFxq# Wg`y /6l +%HAcY+r6 Y +vZ3QdO>ţSF15ML^OJ +>ҥbm`#5-(Sy97yr(oԉՖ IE4E?zHAw輈z w~YmZ!8ȔIMDX`>_wV=%&:,&9e"}ObwD&dWUٺ@KE%.ؾp= ShXcnV&S-&2ɵ7Nxxw>s/v󖒁PAqۏ'&]^mV|bw?OT0M@UPxB*]*(qM>46>I. JgBix*Ai`+7ϛ7Q1XPb,r:|ʆPoxFXKoE][N,YWf]n>[UPƄީHriӇɨYK#.HPzPNx0Gȥ`gw>&!H[nS?gTA% ,`Mҕ 6'n7ðIxhJX1f+{`X$q4b0^yOɑ#?w~˼}J}v=פ=oKK + +9dQWZNsughK&Q|AxR#"rXroXTEa(Ws[9xZ@.riՏE:%͠dʡ[婝p^?7f*8 OܥV+hXE:0'Fn'gP('~\loMl&27Y_]fsM4<NV9w'=v3Hi7'S]45;F_SyDfSgԑ#^y9S<=RSq/j!&%߿=|LȆWGnf(L1I^RBZN:.o=mBrk׳LLFyyi}~=R8f:qם9͚<6Aw;PR"z{|`c%|jyU4/j 뇰̬ne#O sTyXM;dx;(;??l|-@jBwC D6{꺽d6%$LS3i7S;nA۸wP5lVa:uJGvC&+z W0b(G;*{{+6>? Gۖ ȝ#̶ĺLtqf~1P{ ~N_h3C;EYhA7mW0/+=Nnff*L#Iּd;G}Iĺ#>:HûGno9m$AY)ܢ &^GMZHq)_Iu5NGHGLu?2W4+c/<kAJŖvCH1o".U3{uޑhLQ|U7*aTI@Frۉ$aWOS*b:hJ_M!-=mtMR?ƤVZ[ +!t3FMM29 +04]*]rvЎ𤰶y0[:{[%Mx!C(]y1v[F7%F k3r ’\95A[ĺp4&LmhRӤ"iiU$ћ) e+Q%*+ *D?I᧤~W;hNQ$c M#mBw '{/厪BWgB)h=9mгS(M HLk㘧>!78^[Tfɶ) GnmHE8!$ߏv0=Ai%sE"X·F6YTzsl_EM`Zv;Q 5~M4䘓x`9:9y*NyW<^ўƘ0+ +p%B݌ы7i[_1TW0%6Er碐)a@yvzOʟe)C'eIOsaCx8 +endstream +endobj +11288 0 obj << +/Type /FontDescriptor +/FontName /OWNCKJ+NimbusSanL-Regu +/Flags 4 +/FontBBox [-174 -285 1001 953] +/Ascent 712 +/CapHeight 712 +/Descent -213 +/ItalicAngle 0 +/StemV 85 +/XHeight 523 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/a/ampersand/b/backslash/braceleft/braceright/bracketleft/bracketright/bullet/c/colon/comma/d/e/eacute/eight/equal/exclam/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/numbersign/o/one/p/parenleft/parenright/percent/period/plus/q/question/quotedbl/quotedblleft/quotedblright/quoteleft/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 11287 0 R +>> endobj +11289 0 obj << +/Length1 1199 +/Length2 10700 +/Length3 0 +/Length 11490 +/Filter /FlateDecode +>> +stream +xmeT˲5;=Bk w]CoGw׬U5zDI^(ag gf`(X9;ѫ͜AրBd GPh3}; ,Lf&&.6=yJ6v% hma;mA@1Љ`Q?gٻ;ZT*Դt0sssĀNfʏ l@[G&*Xj@e02ڛ?l N @#G&v68!#1w!S [3qgTppJO ?63 :nVs 2e65Z;-L rtz{{B`fXF@+h! `ݷ5v UZUZ_OZzfN.= Onvf_=V%C?Ҷvr::}*Ѧ_~;1@1ebg8dCoe% C'/U?_X m,!5zC؅mͬzf-$,܀&J cο6,z![[>.ohk_ImL,l5t4__NGϦ%n@cy;c ˚*aW ^wgb6hkm\b[bJ:! ģ9]E`1!Ojx.ਦ.zpEIJ(DUC| aJ橹}y`~w1Y&!t6L?~Fl8(oG7Af"0"*dy2o+81L 7>p.? 1A\n_40"Q+iĚGqf6֟1хE;koQA:&D kOHsDg*8jaU֬҉!4OY膒 +#K +'EV#G RO?*Zį3;?'> +8Ss Hdx&CEqG JL2 kq7fg,jRHt;Wr S)#bl᧣qc ᯑ/ץ&KX*# ڶ =qgobA??T3KKO&Wy;?Eo`R*iXPF8|OcxSʹ8Q~4xÞ!LT`M*L7 q?A,$;4$&*h,T~E"Pu+-n~죠v{BMr\r5OU%:}Iat^lE*e0d7^uwтPEVf֑bP*G:#Ƀ爠_XT>覅E(<י&KR2E}8vA/U빬|DPj|CL;wlkbޡT%0 8$e +1T;'Fw4 zU4@]X8vu>gX֌Jd[4 V 7KJBmg&ȵVKڻ9U"Y&9%7ԯ|!.bVOe+~ŨbíLm" Ʒo͸9 HęS>=Xl4ERJ-2 HOrK\}vNbF' v +L K"#-߹E2.- d'8Cz؏k`ڪ +*frlai"B"&ҷGPRJ?(zG +&4\RdC/?+|{wUƠ\>DX-W|ʢ~$i { F:5]T;I&<*@鮁gY;t{xIʂii!M`%%hA&xWq*h8%?nqVz'h,moyAPǣ!ZϺN#}|1.6?a ;IW7~{Vt/^dQLF"sĈ֓ +Eɪ)3hX[h-igx;@lΞh/^vh-_@GQA.<0M*u0NM]j-Q׿aTvvU- 0~udyTWv~,ғUU3 !TW\~y&haV@)(n'" heծG-zR02lah`$'9fnEC~Yc![ষQ@MIJ]҆EksM}3;J06"#xnh۬p!E*xz ES汍[No$mi6fzݙ\ts+]JPxXxնlϜss2׉wpr! +_v r7.azJ;ˀ7& 9!UpBՀwүfg=?ï;g%|g:亀.x ɾSd+i6tRWmaf[\Jt9BTmgtˬM}ZeFL#;dC9w֑CctJ{$8;h@t,Kb~#]).k3Mm-g`00'5/Ea5qM}E )G*DrIM%OQlf3 4/zh zu|l "vlks^d9B䓭+kN Goh\i1Q ~/9<)F"s @BƎqkJ~Xe͖3]k6/'zV +yne }Zv|8 fjS FPnN"u <:1 ؎Y<UoPS..Ulv=NjHw T|kκ?=3 j޸AAnⴄ/s`X\ +/UVOlE,D2Ju3uiBDV8-Ȍ3NbQQR|1E#V9jr4L#t"?dpdWvǼr~DoLZ) +Ϩґ+J ε SXZzv1]5 ! /18n_u{h5z`=$:# +nFB:퓾]h& &r^Ux,N bn R$s| _VbB"}qCuQe>pe򤦓|2zfyT +;f,n-,E}K<өCF (\jZ̧c y:+BA삭% D-TJkaZ}C>FA6ʜ8ʃّRk4%!aM@?;M2bO:I~5|@"DXs*4 9e[+YzMRaiuD1FA)RÀބJ@iQyOlRZMvOd ӆMVFI&M Rh8j;Ao+سL⏿""m2=zʹ?ajik+jp }'0kM4di}H0xNBKѩ6۪|=WߘseG$mo|- \ !m^s@hKi^y\ۯ*AuK ^rn~o7:-yI +#mʱnW3߸L֐m8[G9rwcV)eϞH3sA_0kA$v5Ā AC->p[`_Xf.j:7B<_ز&XEHl`r{0 Ͼo+} d>Y&>Ir|.N@e6g/t'zgBP*[ ?7$-Q%ss[/]2ʹ>3. O ljHF$GPcɴ^b)a(N"PCE%‡Pr94,XbXEA8a2o_=hrXȲܲ+}{@*egZhFOMVoj{a%>!3Bd0 +X>0υMJ'늿i?~mO' ʘF :7샜}XDrKH~46nOx؟KIqK4Qs8DXHM.8h>Q=YIiq'2ɼ $yrn1T߯X[ۡPh%3`E% @ׄymVUCeϮ*ɺE~(wT#zSڃ]=1&{ɯFڡ˭'Nou}DX8zY]+\GFj*\:"U*:;fH9 x$JXO_iLJz,wp#2MhZz/9▙VƛxBzlh։*u]NWd"YUiRo}MUie]=ׯ3ffIk>)*H9&@J=#-mb)Hu`ؠI5jY3=^WFBv TN3Js4Sd~"z +@tMMo'>:c.GR޷$LۭHa׶7{yKzSύG˵1!w.bUԞ1fs5[֥j<*ž}Ģ/) O)l-Q(ه xa`gBbQEyu4E*H;.w蛼 +6ܷ~|qJ6yxZ(g|WgPRRVݾI}C7JdTq}@~| s*&^9m* +#:+՛^ =،W.¨'3xb4-D5n^uz(Mo:̺ٛ lY}.Z큑3亚lwwG:Rkr)`L+V,L,7 u췧(NHoqm*a~Ds[~GG +aJ1e_sfsx_Yٷ)YJ5uoܿ5xBAe,>}JiN(^ߤBrK#RtfɾS> FNƗ< vNP9B.orwYgC=isW+%C#WՈ } 2Jph(DbM|٨/~D-O.'TYME#FzjE :XOsIOhpG:&Ԭ?rf5Q=>[~/aQ[w3}r +}v"UMhFPbJ+hl e 1EBmtl|'+qBo-J+lP~B `6ZU<EaH_ fl'> +7Y&~ N^cq>*şBe`9DU^r$J3oNWpV;scwUpCM9Fi׎ 8zQz + rR?>?v%:7fԇi:oxIJ@2˷]r6. r3TWfh;qKWs,'8ֿ{)G`k2%FFk8!<"z}_^b5 7;55on%`X鶵;5s, P.cϱACLk0&&'Eq.1Gb9 'ǜ~QjL{- ;B@/?̱#& .z7UJȃ;IAwLex&p7?G(d4ջL34 +穤WCH +D.,ubRRϗ<RHUXke5C~ԫax5Ÿvx, $(ݞO$Jh zaE4紌qB]lӿN@ +U'o*g`N:=A*5fm<: qfU e^-q48CHH+wDŽuɛ~'BI {舜-3om<ɄMNX5=bI +5_DP +{O(X|or B&p3'dWoƵw9Y` ެoqL,٣cj=H?Ku,2 r=d Yه<-gJ%wE-.^iUnW#5)2c.5l85KYX|y R- +:\#I9ul +21Q ̬˒PuZ]| <.xj/kJ(8QXba7) ,}fp%$Uy+{R-6BH +/\fx e6űSWzp߆n@i]!GE~4eͷLܼm,9wD!T,'RӘM6\YX?`T ETH'(Mf$ɐoρ fQ-[b3zen N\mWouSI YR +N/4oR1Z'ʨeZhpPjg=ңH+ЩphL*cP^IowJ*x^u>]@*"e8d1EbIޓޑ$ܤpO!eBIԆ 6j$aN)$>j\},y0ra[8櫟*4-I-Ǝr{(k0?i 3)MUA! +D;ryor'3p[&ұj HltDna0UvcXɋ/35|A|Ń65++A7Af2۟\{\>^Wk +Ҟ-oXACYOJח"  !_:RkbR0mׯ[fcfDnsEK f-h~9Tu$6q,+:8T0 cyf ڻZ}>7Wm>"OFbdԲI`"H8{I&wfOMY5[ + KJXSDNJ3l<,-x{V֥0 ohFґZs|G27Ҳaf1KןW'@/G{um]B`#VXOV\BN m`VX\F [kJAq'.vO}f5<Rc6?z˽HXqX@wӿ(``Q9a(JV((`qaD3IAyQ{5m,^@fޝ[Bs𛛝P8. +WoVV \D>du  Yk6nwrSCKGl7(|YS <6vn8X+]aHxPd#_}-?7z+JT{8/4-/c J.&Qt`rWNh wտSC;B$ױv6+{ܫ~خfoRsJ9[6ژ`ozf8::c{r)-q9$=B8wn=4y}U:dTTMPgfɒjy+ Z+z6>~ ˟W[/g*PO{@okBўW9{4kmHhP7N&ymFJ/1_i3xTު'+\*ҟpiF]#1I#'Vg9KxOaYN[,Փh3CuʌxwDt +-#jc!zr0_fN;kCCbOHK5+g*,*$QѤC.HRjah*}NSRݨ͈c| 0yёZX +endstream +endobj +11290 0 obj << +/Type /FontDescriptor +/FontName /SXISIP+NimbusSanL-ReguItal +/Flags 4 +/FontBBox [-178 -284 1108 953] +/Ascent 712 +/CapHeight 712 +/Descent -213 +/ItalicAngle -12 +/StemV 88 +/XHeight 523 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/Y/a/b/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/exclam/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/plus/q/question/quotedbl/quoteright/r/s/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) +/FontFile 11289 0 R +>> endobj +11263 0 obj << +/Type /Encoding +/Differences [2/fi/fl 33/exclam/quotedbl/numbersign 37/percent/ampersand/quoteright/parenleft/parenright 43/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y 91/bracketleft/backslash/bracketright 95/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft 125/braceright 147/quotedblleft/quotedblright/bullet/endash 233/eacute] +>> endobj +5877 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /EOEKOR+CMMI10 +/FontDescriptor 11274 0 R +/FirstChar 45 +/LastChar 62 +/Widths 11268 0 R +>> endobj +5876 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /FMWGLG+CMSY10 +/FontDescriptor 11276 0 R +/FirstChar 3 +/LastChar 106 +/Widths 11269 0 R +>> endobj +6017 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /EVHKTQ+NimbusMonL-Regu +/FontDescriptor 11278 0 R +/FirstChar 33 +/LastChar 148 +/Widths 11267 0 R +/Encoding 11263 0 R +>> endobj +4717 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /NFRDAC+NimbusSanL-Bold +/FontDescriptor 11280 0 R +/FirstChar 3 +/LastChar 150 +/Widths 11270 0 R +/Encoding 11263 0 R +>> endobj +4716 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /KLZQZD+NimbusSanL-BoldCond +/FontDescriptor 11282 0 R +/FirstChar 2 +/LastChar 122 +/Widths 11271 0 R +/Encoding 11263 0 R +>> endobj +6535 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /MVXLPF+NimbusSanL-BoldItal +/FontDescriptor 11284 0 R +/FirstChar 3 +/LastChar 122 +/Widths 11265 0 R +/Encoding 11263 0 R +>> endobj +6693 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /NAPZYO+NimbusSanL-BoldCondItal +/FontDescriptor 11286 0 R +/FirstChar 2 +/LastChar 122 +/Widths 11264 0 R +/Encoding 11263 0 R +>> endobj +4678 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /OWNCKJ+NimbusSanL-Regu +/FontDescriptor 11288 0 R +/FirstChar 2 +/LastChar 233 +/Widths 11272 0 R +/Encoding 11263 0 R +>> endobj +6377 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /SXISIP+NimbusSanL-ReguItal +/FontDescriptor 11290 0 R +/FirstChar 2 +/LastChar 122 +/Widths 11266 0 R +/Encoding 11263 0 R +>> endobj +4679 0 obj << +/Type /Pages +/Count 6 +/Parent 11291 0 R +/Kids [4674 0 R 4681 0 R 4713 0 R 4758 0 R 4801 0 R 4844 0 R] +>> endobj +4889 0 obj << +/Type /Pages +/Count 6 +/Parent 11291 0 R +/Kids [4887 0 R 4931 0 R 4974 0 R 5017 0 R 5060 0 R 5103 0 R] +>> endobj +5148 0 obj << +/Type /Pages +/Count 6 +/Parent 11291 0 R +/Kids [5146 0 R 5190 0 R 5233 0 R 5276 0 R 5319 0 R 5362 0 R] +>> endobj +5407 0 obj << +/Type /Pages +/Count 6 +/Parent 11291 0 R +/Kids [5405 0 R 5449 0 R 5492 0 R 5535 0 R 5578 0 R 5621 0 R] +>> endobj +5666 0 obj << +/Type /Pages +/Count 6 +/Parent 11291 0 R +/Kids [5664 0 R 5708 0 R 5751 0 R 5794 0 R 5837 0 R 5874 0 R] +>> endobj +5930 0 obj << +/Type /Pages +/Count 6 +/Parent 11291 0 R +/Kids [5919 0 R 5958 0 R 5987 0 R 5997 0 R 6012 0 R 6025 0 R] +>> endobj +6043 0 obj << +/Type /Pages +/Count 6 +/Parent 11292 0 R +/Kids [6037 0 R 6060 0 R 6089 0 R 6119 0 R 6151 0 R 6177 0 R] +>> endobj +6208 0 obj << +/Type /Pages +/Count 6 +/Parent 11292 0 R +/Kids [6199 0 R 6233 0 R 6269 0 R 6283 0 R 6288 0 R 6293 0 R] +>> endobj +6308 0 obj << +/Type /Pages +/Count 6 +/Parent 11292 0 R +/Kids [6298 0 R 6311 0 R 6319 0 R 6326 0 R 6373 0 R 6443 0 R] +>> endobj +6536 0 obj << +/Type /Pages +/Count 6 +/Parent 11292 0 R +/Kids [6532 0 R 6548 0 R 6591 0 R 6637 0 R 6669 0 R 6689 0 R] +>> endobj +6707 0 obj << +/Type /Pages +/Count 6 +/Parent 11292 0 R +/Kids [6704 0 R 6717 0 R 6733 0 R 6816 0 R 6865 0 R 6891 0 R] +>> endobj +6906 0 obj << +/Type /Pages +/Count 6 +/Parent 11292 0 R +/Kids [6902 0 R 6909 0 R 6919 0 R 6947 0 R 6965 0 R 6972 0 R] +>> endobj +7000 0 obj << +/Type /Pages +/Count 6 +/Parent 11293 0 R +/Kids [6994 0 R 7017 0 R 7036 0 R 7059 0 R 7079 0 R 7118 0 R] +>> endobj +7173 0 obj << +/Type /Pages +/Count 6 +/Parent 11293 0 R +/Kids [7169 0 R 7193 0 R 7208 0 R 7212 0 R 7223 0 R 7230 0 R] +>> endobj +7240 0 obj << +/Type /Pages +/Count 6 +/Parent 11293 0 R +/Kids [7237 0 R 7256 0 R 7282 0 R 7301 0 R 7323 0 R 7341 0 R] +>> endobj +7373 0 obj << +/Type /Pages +/Count 6 +/Parent 11293 0 R +/Kids [7362 0 R 7385 0 R 7402 0 R 7430 0 R 7460 0 R 7478 0 R] +>> endobj +7518 0 obj << +/Type /Pages +/Count 6 +/Parent 11293 0 R +/Kids [7515 0 R 7541 0 R 7551 0 R 7559 0 R 7581 0 R 7605 0 R] +>> endobj +7634 0 obj << +/Type /Pages +/Count 6 +/Parent 11293 0 R +/Kids [7629 0 R 7650 0 R 7657 0 R 7667 0 R 7692 0 R 7713 0 R] +>> endobj +7747 0 obj << +/Type /Pages +/Count 6 +/Parent 11294 0 R +/Kids [7740 0 R 7758 0 R 7766 0 R 7823 0 R 7873 0 R 7901 0 R] +>> endobj +7935 0 obj << +/Type /Pages +/Count 6 +/Parent 11294 0 R +/Kids [7931 0 R 7965 0 R 7974 0 R 7993 0 R 8022 0 R 8045 0 R] +>> endobj +8079 0 obj << +/Type /Pages +/Count 6 +/Parent 11294 0 R +/Kids [8072 0 R 8100 0 R 8124 0 R 8138 0 R 8156 0 R 8192 0 R] +>> endobj +8248 0 obj << +/Type /Pages +/Count 6 +/Parent 11294 0 R +/Kids [8244 0 R 8289 0 R 8313 0 R 8319 0 R 8324 0 R 8329 0 R] +>> endobj +8338 0 obj << +/Type /Pages +/Count 6 +/Parent 11294 0 R +/Kids [8334 0 R 8352 0 R 8385 0 R 8411 0 R 8425 0 R 8438 0 R] +>> endobj +8467 0 obj << +/Type /Pages +/Count 6 +/Parent 11294 0 R +/Kids [8461 0 R 8500 0 R 8563 0 R 8617 0 R 8669 0 R 8730 0 R] +>> endobj +8786 0 obj << +/Type /Pages +/Count 6 +/Parent 11295 0 R +/Kids [8782 0 R 8811 0 R 8846 0 R 8869 0 R 8876 0 R 8889 0 R] +>> endobj +8903 0 obj << +/Type /Pages +/Count 6 +/Parent 11295 0 R +/Kids [8900 0 R 8912 0 R 8924 0 R 8939 0 R 8951 0 R 8960 0 R] +>> endobj +8968 0 obj << +/Type /Pages +/Count 6 +/Parent 11295 0 R +/Kids [8965 0 R 8982 0 R 8993 0 R 9006 0 R 9019 0 R 9028 0 R] +>> endobj +9036 0 obj << +/Type /Pages +/Count 6 +/Parent 11295 0 R +/Kids [9033 0 R 9038 0 R 9043 0 R 9054 0 R 9064 0 R 9072 0 R] +>> endobj +9090 0 obj << +/Type /Pages +/Count 6 +/Parent 11295 0 R +/Kids [9086 0 R 9096 0 R 9101 0 R 9113 0 R 9129 0 R 9142 0 R] +>> endobj +9167 0 obj << +/Type /Pages +/Count 6 +/Parent 11295 0 R +/Kids [9156 0 R 9208 0 R 9251 0 R 9272 0 R 9281 0 R 9294 0 R] +>> endobj +9322 0 obj << +/Type /Pages +/Count 6 +/Parent 11296 0 R +/Kids [9316 0 R 9340 0 R 9360 0 R 9388 0 R 9420 0 R 9436 0 R] +>> endobj +9466 0 obj << +/Type /Pages +/Count 6 +/Parent 11296 0 R +/Kids [9461 0 R 9480 0 R 9484 0 R 9505 0 R 9522 0 R 9562 0 R] +>> endobj +9598 0 obj << +/Type /Pages +/Count 6 +/Parent 11296 0 R +/Kids [9595 0 R 9616 0 R 9649 0 R 9686 0 R 9759 0 R 9806 0 R] +>> endobj +9827 0 obj << +/Type /Pages +/Count 6 +/Parent 11296 0 R +/Kids [9824 0 R 9838 0 R 9854 0 R 9876 0 R 9932 0 R 9959 0 R] +>> endobj +9986 0 obj << +/Type /Pages +/Count 6 +/Parent 11296 0 R +/Kids [9982 0 R 10008 0 R 10033 0 R 10052 0 R 10076 0 R 10094 0 R] +>> endobj +10122 0 obj << +/Type /Pages +/Count 6 +/Parent 11296 0 R +/Kids [10116 0 R 10146 0 R 10177 0 R 10195 0 R 10202 0 R 10230 0 R] +>> endobj +10267 0 obj << +/Type /Pages +/Count 6 +/Parent 11297 0 R +/Kids [10264 0 R 10281 0 R 10292 0 R 10318 0 R 10340 0 R 10351 0 R] +>> endobj +10397 0 obj << +/Type /Pages +/Count 6 +/Parent 11297 0 R +/Kids [10385 0 R 10429 0 R 10453 0 R 10477 0 R 10498 0 R 10517 0 R] +>> endobj +10532 0 obj << +/Type /Pages +/Count 6 +/Parent 11297 0 R +/Kids [10529 0 R 10534 0 R 10539 0 R 10628 0 R 10674 0 R 10686 0 R] +>> endobj +10736 0 obj << +/Type /Pages +/Count 6 +/Parent 11297 0 R +/Kids [10726 0 R 10785 0 R 10839 0 R 10844 0 R 10892 0 R 10933 0 R] +>> endobj +10964 0 obj << +/Type /Pages +/Count 6 +/Parent 11297 0 R +/Kids [10950 0 R 10975 0 R 11017 0 R 11047 0 R 11063 0 R 11087 0 R] +>> endobj +11119 0 obj << +/Type /Pages +/Count 5 +/Parent 11297 0 R +/Kids [11106 0 R 11145 0 R 11172 0 R 11226 0 R 11251 0 R] +>> endobj +11291 0 obj << +/Type /Pages +/Count 36 +/Parent 11298 0 R +/Kids [4679 0 R 4889 0 R 5148 0 R 5407 0 R 5666 0 R 5930 0 R] +>> endobj +11292 0 obj << +/Type /Pages +/Count 36 +/Parent 11298 0 R +/Kids [6043 0 R 6208 0 R 6308 0 R 6536 0 R 6707 0 R 6906 0 R] +>> endobj +11293 0 obj << +/Type /Pages +/Count 36 +/Parent 11298 0 R +/Kids [7000 0 R 7173 0 R 7240 0 R 7373 0 R 7518 0 R 7634 0 R] +>> endobj +11294 0 obj << +/Type /Pages +/Count 36 +/Parent 11298 0 R +/Kids [7747 0 R 7935 0 R 8079 0 R 8248 0 R 8338 0 R 8467 0 R] +>> endobj +11295 0 obj << +/Type /Pages +/Count 36 +/Parent 11298 0 R +/Kids [8786 0 R 8903 0 R 8968 0 R 9036 0 R 9090 0 R 9167 0 R] +>> endobj +11296 0 obj << +/Type /Pages +/Count 36 +/Parent 11298 0 R +/Kids [9322 0 R 9466 0 R 9598 0 R 9827 0 R 9986 0 R 10122 0 R] +>> endobj +11297 0 obj << +/Type /Pages +/Count 35 +/Parent 11299 0 R +/Kids [10267 0 R 10397 0 R 10532 0 R 10736 0 R 10964 0 R 11119 0 R] +>> endobj +11298 0 obj << +/Type /Pages +/Count 216 +/Parent 11300 0 R +/Kids [11291 0 R 11292 0 R 11293 0 R 11294 0 R 11295 0 R 11296 0 R] +>> endobj +11299 0 obj << +/Type /Pages +/Count 35 +/Parent 11300 0 R +/Kids [11297 0 R] +>> endobj +11300 0 obj << +/Type /Pages +/Count 251 +/Kids [11298 0 R 11299 0 R] +>> endobj +11301 0 obj << +/Type /Outlines +/First 3 0 R +/Last 4283 0 R +/Count 9 +>> endobj +4671 0 obj << +/Title 4672 0 R +/A 4669 0 R +/Parent 4283 0 R +/Prev 4667 0 R +>> endobj +4667 0 obj << +/Title 4668 0 R +/A 4665 0 R +/Parent 4283 0 R +/Prev 4663 0 R +/Next 4671 0 R +>> endobj +4663 0 obj << +/Title 4664 0 R +/A 4661 0 R +/Parent 4283 0 R +/Prev 4659 0 R +/Next 4667 0 R +>> endobj +4659 0 obj << +/Title 4660 0 R +/A 4657 0 R +/Parent 4283 0 R +/Prev 4655 0 R +/Next 4663 0 R +>> endobj +4655 0 obj << +/Title 4656 0 R +/A 4653 0 R +/Parent 4283 0 R +/Prev 4651 0 R +/Next 4659 0 R +>> endobj +4651 0 obj << +/Title 4652 0 R +/A 4649 0 R +/Parent 4283 0 R +/Prev 4647 0 R +/Next 4655 0 R +>> endobj +4647 0 obj << +/Title 4648 0 R +/A 4645 0 R +/Parent 4283 0 R +/Prev 4643 0 R +/Next 4651 0 R +>> endobj +4643 0 obj << +/Title 4644 0 R +/A 4641 0 R +/Parent 4283 0 R +/Prev 4639 0 R +/Next 4647 0 R +>> endobj +4639 0 obj << +/Title 4640 0 R +/A 4637 0 R +/Parent 4283 0 R +/Prev 4635 0 R +/Next 4643 0 R +>> endobj +4635 0 obj << +/Title 4636 0 R +/A 4633 0 R +/Parent 4283 0 R +/Prev 4631 0 R +/Next 4639 0 R +>> endobj +4631 0 obj << +/Title 4632 0 R +/A 4629 0 R +/Parent 4283 0 R +/Prev 4627 0 R +/Next 4635 0 R +>> endobj +4627 0 obj << +/Title 4628 0 R +/A 4625 0 R +/Parent 4283 0 R +/Prev 4623 0 R +/Next 4631 0 R +>> endobj +4623 0 obj << +/Title 4624 0 R +/A 4621 0 R +/Parent 4283 0 R +/Prev 4619 0 R +/Next 4627 0 R +>> endobj +4619 0 obj << +/Title 4620 0 R +/A 4617 0 R +/Parent 4283 0 R +/Prev 4615 0 R +/Next 4623 0 R +>> endobj +4615 0 obj << +/Title 4616 0 R +/A 4613 0 R +/Parent 4283 0 R +/Prev 4611 0 R +/Next 4619 0 R +>> endobj +4611 0 obj << +/Title 4612 0 R +/A 4609 0 R +/Parent 4283 0 R +/Prev 4607 0 R +/Next 4615 0 R +>> endobj +4607 0 obj << +/Title 4608 0 R +/A 4605 0 R +/Parent 4283 0 R +/Prev 4603 0 R +/Next 4611 0 R +>> endobj +4603 0 obj << +/Title 4604 0 R +/A 4601 0 R +/Parent 4283 0 R +/Prev 4599 0 R +/Next 4607 0 R +>> endobj +4599 0 obj << +/Title 4600 0 R +/A 4597 0 R +/Parent 4283 0 R +/Prev 4595 0 R +/Next 4603 0 R +>> endobj +4595 0 obj << +/Title 4596 0 R +/A 4593 0 R +/Parent 4283 0 R +/Prev 4591 0 R +/Next 4599 0 R +>> endobj +4591 0 obj << +/Title 4592 0 R +/A 4589 0 R +/Parent 4283 0 R +/Prev 4583 0 R +/Next 4595 0 R +>> endobj +4587 0 obj << +/Title 4588 0 R +/A 4585 0 R +/Parent 4583 0 R +>> endobj +4583 0 obj << +/Title 4584 0 R +/A 4581 0 R +/Parent 4283 0 R +/Prev 4575 0 R +/Next 4591 0 R +/First 4587 0 R +/Last 4587 0 R +/Count -1 +>> endobj +4579 0 obj << +/Title 4580 0 R +/A 4577 0 R +/Parent 4575 0 R +>> endobj +4575 0 obj << +/Title 4576 0 R +/A 4573 0 R +/Parent 4283 0 R +/Prev 4567 0 R +/Next 4583 0 R +/First 4579 0 R +/Last 4579 0 R +/Count -1 +>> endobj +4571 0 obj << +/Title 4572 0 R +/A 4569 0 R +/Parent 4567 0 R +>> endobj +4567 0 obj << +/Title 4568 0 R +/A 4565 0 R +/Parent 4283 0 R +/Prev 4563 0 R +/Next 4575 0 R +/First 4571 0 R +/Last 4571 0 R +/Count -1 +>> endobj +4563 0 obj << +/Title 4564 0 R +/A 4561 0 R +/Parent 4283 0 R +/Prev 4559 0 R +/Next 4567 0 R +>> endobj +4559 0 obj << +/Title 4560 0 R +/A 4557 0 R +/Parent 4283 0 R +/Prev 4543 0 R +/Next 4563 0 R +>> endobj +4555 0 obj << +/Title 4556 0 R +/A 4553 0 R +/Parent 4547 0 R +/Prev 4551 0 R +>> endobj +4551 0 obj << +/Title 4552 0 R +/A 4549 0 R +/Parent 4547 0 R +/Next 4555 0 R +>> endobj +4547 0 obj << +/Title 4548 0 R +/A 4545 0 R +/Parent 4543 0 R +/First 4551 0 R +/Last 4555 0 R +/Count -2 +>> endobj +4543 0 obj << +/Title 4544 0 R +/A 4541 0 R +/Parent 4283 0 R +/Prev 4519 0 R +/Next 4559 0 R +/First 4547 0 R +/Last 4547 0 R +/Count -1 +>> endobj +4539 0 obj << +/Title 4540 0 R +/A 4537 0 R +/Parent 4523 0 R +/Prev 4535 0 R +>> endobj +4535 0 obj << +/Title 4536 0 R +/A 4533 0 R +/Parent 4523 0 R +/Prev 4531 0 R +/Next 4539 0 R +>> endobj +4531 0 obj << +/Title 4532 0 R +/A 4529 0 R +/Parent 4523 0 R +/Prev 4527 0 R +/Next 4535 0 R +>> endobj +4527 0 obj << +/Title 4528 0 R +/A 4525 0 R +/Parent 4523 0 R +/Next 4531 0 R +>> endobj +4523 0 obj << +/Title 4524 0 R +/A 4521 0 R +/Parent 4519 0 R +/First 4527 0 R +/Last 4539 0 R +/Count -4 +>> endobj +4519 0 obj << +/Title 4520 0 R +/A 4517 0 R +/Parent 4283 0 R +/Prev 4515 0 R +/Next 4543 0 R +/First 4523 0 R +/Last 4523 0 R +/Count -1 +>> endobj +4515 0 obj << +/Title 4516 0 R +/A 4513 0 R +/Parent 4283 0 R +/Prev 4507 0 R +/Next 4519 0 R +>> endobj +4511 0 obj << +/Title 4512 0 R +/A 4509 0 R +/Parent 4507 0 R +>> endobj +4507 0 obj << +/Title 4508 0 R +/A 4505 0 R +/Parent 4283 0 R +/Prev 4495 0 R +/Next 4515 0 R +/First 4511 0 R +/Last 4511 0 R +/Count -1 +>> endobj +4503 0 obj << +/Title 4504 0 R +/A 4501 0 R +/Parent 4499 0 R +>> endobj +4499 0 obj << +/Title 4500 0 R +/A 4497 0 R +/Parent 4495 0 R +/First 4503 0 R +/Last 4503 0 R +/Count -1 +>> endobj +4495 0 obj << +/Title 4496 0 R +/A 4493 0 R +/Parent 4283 0 R +/Prev 4479 0 R +/Next 4507 0 R +/First 4499 0 R +/Last 4499 0 R +/Count -1 +>> endobj +4491 0 obj << +/Title 4492 0 R +/A 4489 0 R +/Parent 4483 0 R +/Prev 4487 0 R +>> endobj +4487 0 obj << +/Title 4488 0 R +/A 4485 0 R +/Parent 4483 0 R +/Next 4491 0 R +>> endobj +4483 0 obj << +/Title 4484 0 R +/A 4481 0 R +/Parent 4479 0 R +/First 4487 0 R +/Last 4491 0 R +/Count -2 +>> endobj +4479 0 obj << +/Title 4480 0 R +/A 4477 0 R +/Parent 4283 0 R +/Prev 4471 0 R +/Next 4495 0 R +/First 4483 0 R +/Last 4483 0 R +/Count -1 +>> endobj +4475 0 obj << +/Title 4476 0 R +/A 4473 0 R +/Parent 4471 0 R +>> endobj +4471 0 obj << +/Title 4472 0 R +/A 4469 0 R +/Parent 4283 0 R +/Prev 4451 0 R +/Next 4479 0 R +/First 4475 0 R +/Last 4475 0 R +/Count -1 +>> endobj +4467 0 obj << +/Title 4468 0 R +/A 4465 0 R +/Parent 4455 0 R +/Prev 4463 0 R +>> endobj +4463 0 obj << +/Title 4464 0 R +/A 4461 0 R +/Parent 4455 0 R +/Prev 4459 0 R +/Next 4467 0 R +>> endobj +4459 0 obj << +/Title 4460 0 R +/A 4457 0 R +/Parent 4455 0 R +/Next 4463 0 R +>> endobj +4455 0 obj << +/Title 4456 0 R +/A 4453 0 R +/Parent 4451 0 R +/First 4459 0 R +/Last 4467 0 R +/Count -3 +>> endobj +4451 0 obj << +/Title 4452 0 R +/A 4449 0 R +/Parent 4283 0 R +/Prev 4431 0 R +/Next 4471 0 R +/First 4455 0 R +/Last 4455 0 R +/Count -1 +>> endobj +4447 0 obj << +/Title 4448 0 R +/A 4445 0 R +/Parent 4439 0 R +/Prev 4443 0 R +>> endobj +4443 0 obj << +/Title 4444 0 R +/A 4441 0 R +/Parent 4439 0 R +/Next 4447 0 R +>> endobj +4439 0 obj << +/Title 4440 0 R +/A 4437 0 R +/Parent 4431 0 R +/Prev 4435 0 R +/First 4443 0 R +/Last 4447 0 R +/Count -2 +>> endobj +4435 0 obj << +/Title 4436 0 R +/A 4433 0 R +/Parent 4431 0 R +/Next 4439 0 R +>> endobj +4431 0 obj << +/Title 4432 0 R +/A 4429 0 R +/Parent 4283 0 R +/Prev 4407 0 R +/Next 4451 0 R +/First 4435 0 R +/Last 4439 0 R +/Count -2 +>> endobj +4427 0 obj << +/Title 4428 0 R +/A 4425 0 R +/Parent 4423 0 R +>> endobj +4423 0 obj << +/Title 4424 0 R +/A 4421 0 R +/Parent 4407 0 R +/Prev 4411 0 R +/First 4427 0 R +/Last 4427 0 R +/Count -1 +>> endobj +4419 0 obj << +/Title 4420 0 R +/A 4417 0 R +/Parent 4411 0 R +/Prev 4415 0 R +>> endobj +4415 0 obj << +/Title 4416 0 R +/A 4413 0 R +/Parent 4411 0 R +/Next 4419 0 R +>> endobj +4411 0 obj << +/Title 4412 0 R +/A 4409 0 R +/Parent 4407 0 R +/Next 4423 0 R +/First 4415 0 R +/Last 4419 0 R +/Count -2 +>> endobj +4407 0 obj << +/Title 4408 0 R +/A 4405 0 R +/Parent 4283 0 R +/Prev 4367 0 R +/Next 4431 0 R +/First 4411 0 R +/Last 4423 0 R +/Count -2 +>> endobj +4403 0 obj << +/Title 4404 0 R +/A 4401 0 R +/Parent 4371 0 R +/Prev 4399 0 R +>> endobj +4399 0 obj << +/Title 4400 0 R +/A 4397 0 R +/Parent 4371 0 R +/Prev 4395 0 R +/Next 4403 0 R +>> endobj +4395 0 obj << +/Title 4396 0 R +/A 4393 0 R +/Parent 4371 0 R +/Prev 4391 0 R +/Next 4399 0 R +>> endobj +4391 0 obj << +/Title 4392 0 R +/A 4389 0 R +/Parent 4371 0 R +/Prev 4387 0 R +/Next 4395 0 R +>> endobj +4387 0 obj << +/Title 4388 0 R +/A 4385 0 R +/Parent 4371 0 R +/Prev 4383 0 R +/Next 4391 0 R +>> endobj +4383 0 obj << +/Title 4384 0 R +/A 4381 0 R +/Parent 4371 0 R +/Prev 4379 0 R +/Next 4387 0 R +>> endobj +4379 0 obj << +/Title 4380 0 R +/A 4377 0 R +/Parent 4371 0 R +/Prev 4375 0 R +/Next 4383 0 R +>> endobj +4375 0 obj << +/Title 4376 0 R +/A 4373 0 R +/Parent 4371 0 R +/Next 4379 0 R +>> endobj +4371 0 obj << +/Title 4372 0 R +/A 4369 0 R +/Parent 4367 0 R +/First 4375 0 R +/Last 4403 0 R +/Count -8 +>> endobj +4367 0 obj << +/Title 4368 0 R +/A 4365 0 R +/Parent 4283 0 R +/Prev 4363 0 R +/Next 4407 0 R +/First 4371 0 R +/Last 4371 0 R +/Count -1 +>> endobj +4363 0 obj << +/Title 4364 0 R +/A 4361 0 R +/Parent 4283 0 R +/Prev 4359 0 R +/Next 4367 0 R +>> endobj +4359 0 obj << +/Title 4360 0 R +/A 4357 0 R +/Parent 4283 0 R +/Prev 4343 0 R +/Next 4363 0 R +>> endobj +4355 0 obj << +/Title 4356 0 R +/A 4353 0 R +/Parent 4347 0 R +/Prev 4351 0 R +>> endobj +4351 0 obj << +/Title 4352 0 R +/A 4349 0 R +/Parent 4347 0 R +/Next 4355 0 R +>> endobj +4347 0 obj << +/Title 4348 0 R +/A 4345 0 R +/Parent 4343 0 R +/First 4351 0 R +/Last 4355 0 R +/Count -2 +>> endobj +4343 0 obj << +/Title 4344 0 R +/A 4341 0 R +/Parent 4283 0 R +/Prev 4315 0 R +/Next 4359 0 R +/First 4347 0 R +/Last 4347 0 R +/Count -1 +>> endobj +4339 0 obj << +/Title 4340 0 R +/A 4337 0 R +/Parent 4323 0 R +/Prev 4335 0 R +>> endobj +4335 0 obj << +/Title 4336 0 R +/A 4333 0 R +/Parent 4323 0 R +/Prev 4331 0 R +/Next 4339 0 R +>> endobj +4331 0 obj << +/Title 4332 0 R +/A 4329 0 R +/Parent 4323 0 R +/Prev 4327 0 R +/Next 4335 0 R +>> endobj +4327 0 obj << +/Title 4328 0 R +/A 4325 0 R +/Parent 4323 0 R +/Next 4331 0 R +>> endobj +4323 0 obj << +/Title 4324 0 R +/A 4321 0 R +/Parent 4315 0 R +/Prev 4319 0 R +/First 4327 0 R +/Last 4339 0 R +/Count -4 +>> endobj +4319 0 obj << +/Title 4320 0 R +/A 4317 0 R +/Parent 4315 0 R +/Next 4323 0 R +>> endobj +4315 0 obj << +/Title 4316 0 R +/A 4313 0 R +/Parent 4283 0 R +/Prev 4307 0 R +/Next 4343 0 R +/First 4319 0 R +/Last 4323 0 R +/Count -2 +>> endobj +4311 0 obj << +/Title 4312 0 R +/A 4309 0 R +/Parent 4307 0 R +>> endobj +4307 0 obj << +/Title 4308 0 R +/A 4305 0 R +/Parent 4283 0 R +/Prev 4303 0 R +/Next 4315 0 R +/First 4311 0 R +/Last 4311 0 R +/Count -1 +>> endobj +4303 0 obj << +/Title 4304 0 R +/A 4301 0 R +/Parent 4283 0 R +/Prev 4299 0 R +/Next 4307 0 R +>> endobj +4299 0 obj << +/Title 4300 0 R +/A 4297 0 R +/Parent 4283 0 R +/Prev 4295 0 R +/Next 4303 0 R +>> endobj +4295 0 obj << +/Title 4296 0 R +/A 4293 0 R +/Parent 4283 0 R +/Prev 4291 0 R +/Next 4299 0 R +>> endobj +4291 0 obj << +/Title 4292 0 R +/A 4289 0 R +/Parent 4283 0 R +/Prev 4287 0 R +/Next 4295 0 R +>> endobj +4287 0 obj << +/Title 4288 0 R +/A 4285 0 R +/Parent 4283 0 R +/Next 4291 0 R +>> endobj +4283 0 obj << +/Title 4284 0 R +/A 4281 0 R +/Parent 11301 0 R +/Prev 159 0 R +/First 4287 0 R +/Last 4671 0 R +/Count -47 +>> endobj +4279 0 obj << +/Title 4280 0 R +/A 4277 0 R +/Parent 4263 0 R +/Prev 4275 0 R +>> endobj +4275 0 obj << +/Title 4276 0 R +/A 4273 0 R +/Parent 4263 0 R +/Prev 4271 0 R +/Next 4279 0 R +>> endobj +4271 0 obj << +/Title 4272 0 R +/A 4269 0 R +/Parent 4263 0 R +/Prev 4267 0 R +/Next 4275 0 R +>> endobj +4267 0 obj << +/Title 4268 0 R +/A 4265 0 R +/Parent 4263 0 R +/Next 4271 0 R +>> endobj +4263 0 obj << +/Title 4264 0 R +/A 4261 0 R +/Parent 4239 0 R +/Prev 4255 0 R +/First 4267 0 R +/Last 4279 0 R +/Count -4 +>> endobj +4259 0 obj << +/Title 4260 0 R +/A 4257 0 R +/Parent 4255 0 R +>> endobj +4255 0 obj << +/Title 4256 0 R +/A 4253 0 R +/Parent 4239 0 R +/Prev 4247 0 R +/Next 4263 0 R +/First 4259 0 R +/Last 4259 0 R +/Count -1 +>> endobj +4251 0 obj << +/Title 4252 0 R +/A 4249 0 R +/Parent 4247 0 R +>> endobj +4247 0 obj << +/Title 4248 0 R +/A 4245 0 R +/Parent 4239 0 R +/Prev 4243 0 R +/Next 4255 0 R +/First 4251 0 R +/Last 4251 0 R +/Count -1 +>> endobj +4243 0 obj << +/Title 4244 0 R +/A 4241 0 R +/Parent 4239 0 R +/Next 4247 0 R +>> endobj +4239 0 obj << +/Title 4240 0 R +/A 4237 0 R +/Parent 159 0 R +/Prev 4215 0 R +/First 4243 0 R +/Last 4263 0 R +/Count -4 +>> endobj +4235 0 obj << +/Title 4236 0 R +/A 4233 0 R +/Parent 4227 0 R +/Prev 4231 0 R +>> endobj +4231 0 obj << +/Title 4232 0 R +/A 4229 0 R +/Parent 4227 0 R +/Next 4235 0 R +>> endobj +4227 0 obj << +/Title 4228 0 R +/A 4225 0 R +/Parent 4215 0 R +/Prev 4219 0 R +/First 4231 0 R +/Last 4235 0 R +/Count -2 +>> endobj +4223 0 obj << +/Title 4224 0 R +/A 4221 0 R +/Parent 4219 0 R +>> endobj +4219 0 obj << +/Title 4220 0 R +/A 4217 0 R +/Parent 4215 0 R +/Next 4227 0 R +/First 4223 0 R +/Last 4223 0 R +/Count -1 +>> endobj +4215 0 obj << +/Title 4216 0 R +/A 4213 0 R +/Parent 159 0 R +/Prev 4163 0 R +/Next 4239 0 R +/First 4219 0 R +/Last 4227 0 R +/Count -2 +>> endobj +4211 0 obj << +/Title 4212 0 R +/A 4209 0 R +/Parent 4207 0 R +>> endobj +4207 0 obj << +/Title 4208 0 R +/A 4205 0 R +/Parent 4163 0 R +/Prev 4191 0 R +/First 4211 0 R +/Last 4211 0 R +/Count -1 +>> endobj +4203 0 obj << +/Title 4204 0 R +/A 4201 0 R +/Parent 4191 0 R +/Prev 4199 0 R +>> endobj +4199 0 obj << +/Title 4200 0 R +/A 4197 0 R +/Parent 4191 0 R +/Prev 4195 0 R +/Next 4203 0 R +>> endobj +4195 0 obj << +/Title 4196 0 R +/A 4193 0 R +/Parent 4191 0 R +/Next 4199 0 R +>> endobj +4191 0 obj << +/Title 4192 0 R +/A 4189 0 R +/Parent 4163 0 R +/Prev 4183 0 R +/Next 4207 0 R +/First 4195 0 R +/Last 4203 0 R +/Count -3 +>> endobj +4187 0 obj << +/Title 4188 0 R +/A 4185 0 R +/Parent 4183 0 R +>> endobj +4183 0 obj << +/Title 4184 0 R +/A 4181 0 R +/Parent 4163 0 R +/Prev 4171 0 R +/Next 4191 0 R +/First 4187 0 R +/Last 4187 0 R +/Count -1 +>> endobj +4179 0 obj << +/Title 4180 0 R +/A 4177 0 R +/Parent 4171 0 R +/Prev 4175 0 R +>> endobj +4175 0 obj << +/Title 4176 0 R +/A 4173 0 R +/Parent 4171 0 R +/Next 4179 0 R +>> endobj +4171 0 obj << +/Title 4172 0 R +/A 4169 0 R +/Parent 4163 0 R +/Prev 4167 0 R +/Next 4183 0 R +/First 4175 0 R +/Last 4179 0 R +/Count -2 +>> endobj +4167 0 obj << +/Title 4168 0 R +/A 4165 0 R +/Parent 4163 0 R +/Next 4171 0 R +>> endobj +4163 0 obj << +/Title 4164 0 R +/A 4161 0 R +/Parent 159 0 R +/Prev 4143 0 R +/Next 4215 0 R +/First 4167 0 R +/Last 4207 0 R +/Count -5 +>> endobj +4159 0 obj << +/Title 4160 0 R +/A 4157 0 R +/Parent 4147 0 R +/Prev 4155 0 R +>> endobj +4155 0 obj << +/Title 4156 0 R +/A 4153 0 R +/Parent 4147 0 R +/Prev 4151 0 R +/Next 4159 0 R +>> endobj +4151 0 obj << +/Title 4152 0 R +/A 4149 0 R +/Parent 4147 0 R +/Next 4155 0 R +>> endobj +4147 0 obj << +/Title 4148 0 R +/A 4145 0 R +/Parent 4143 0 R +/First 4151 0 R +/Last 4159 0 R +/Count -3 +>> endobj +4143 0 obj << +/Title 4144 0 R +/A 4141 0 R +/Parent 159 0 R +/Prev 4127 0 R +/Next 4163 0 R +/First 4147 0 R +/Last 4147 0 R +/Count -1 +>> endobj +4139 0 obj << +/Title 4140 0 R +/A 4137 0 R +/Parent 4131 0 R +/Prev 4135 0 R +>> endobj +4135 0 obj << +/Title 4136 0 R +/A 4133 0 R +/Parent 4131 0 R +/Next 4139 0 R +>> endobj +4131 0 obj << +/Title 4132 0 R +/A 4129 0 R +/Parent 4127 0 R +/First 4135 0 R +/Last 4139 0 R +/Count -2 +>> endobj +4127 0 obj << +/Title 4128 0 R +/A 4125 0 R +/Parent 159 0 R +/Prev 4011 0 R +/Next 4143 0 R +/First 4131 0 R +/Last 4131 0 R +/Count -1 +>> endobj +4123 0 obj << +/Title 4124 0 R +/A 4121 0 R +/Parent 4055 0 R +/Prev 4119 0 R +>> endobj +4119 0 obj << +/Title 4120 0 R +/A 4117 0 R +/Parent 4055 0 R +/Prev 4115 0 R +/Next 4123 0 R +>> endobj +4115 0 obj << +/Title 4116 0 R +/A 4113 0 R +/Parent 4055 0 R +/Prev 4111 0 R +/Next 4119 0 R +>> endobj +4111 0 obj << +/Title 4112 0 R +/A 4109 0 R +/Parent 4055 0 R +/Prev 4107 0 R +/Next 4115 0 R +>> endobj +4107 0 obj << +/Title 4108 0 R +/A 4105 0 R +/Parent 4055 0 R +/Prev 4103 0 R +/Next 4111 0 R +>> endobj +4103 0 obj << +/Title 4104 0 R +/A 4101 0 R +/Parent 4055 0 R +/Prev 4099 0 R +/Next 4107 0 R +>> endobj +4099 0 obj << +/Title 4100 0 R +/A 4097 0 R +/Parent 4055 0 R +/Prev 4095 0 R +/Next 4103 0 R +>> endobj +4095 0 obj << +/Title 4096 0 R +/A 4093 0 R +/Parent 4055 0 R +/Prev 4091 0 R +/Next 4099 0 R +>> endobj +4091 0 obj << +/Title 4092 0 R +/A 4089 0 R +/Parent 4055 0 R +/Prev 4087 0 R +/Next 4095 0 R +>> endobj +4087 0 obj << +/Title 4088 0 R +/A 4085 0 R +/Parent 4055 0 R +/Prev 4083 0 R +/Next 4091 0 R +>> endobj +4083 0 obj << +/Title 4084 0 R +/A 4081 0 R +/Parent 4055 0 R +/Prev 4079 0 R +/Next 4087 0 R +>> endobj +4079 0 obj << +/Title 4080 0 R +/A 4077 0 R +/Parent 4055 0 R +/Prev 4075 0 R +/Next 4083 0 R +>> endobj +4075 0 obj << +/Title 4076 0 R +/A 4073 0 R +/Parent 4055 0 R +/Prev 4071 0 R +/Next 4079 0 R +>> endobj +4071 0 obj << +/Title 4072 0 R +/A 4069 0 R +/Parent 4055 0 R +/Prev 4067 0 R +/Next 4075 0 R +>> endobj +4067 0 obj << +/Title 4068 0 R +/A 4065 0 R +/Parent 4055 0 R +/Prev 4063 0 R +/Next 4071 0 R +>> endobj +4063 0 obj << +/Title 4064 0 R +/A 4061 0 R +/Parent 4055 0 R +/Prev 4059 0 R +/Next 4067 0 R +>> endobj +4059 0 obj << +/Title 4060 0 R +/A 4057 0 R +/Parent 4055 0 R +/Next 4063 0 R +>> endobj +4055 0 obj << +/Title 4056 0 R +/A 4053 0 R +/Parent 4011 0 R +/Prev 4027 0 R +/First 4059 0 R +/Last 4123 0 R +/Count -17 +>> endobj +4051 0 obj << +/Title 4052 0 R +/A 4049 0 R +/Parent 4027 0 R +/Prev 4047 0 R +>> endobj +4047 0 obj << +/Title 4048 0 R +/A 4045 0 R +/Parent 4027 0 R +/Prev 4043 0 R +/Next 4051 0 R +>> endobj +4043 0 obj << +/Title 4044 0 R +/A 4041 0 R +/Parent 4027 0 R +/Prev 4039 0 R +/Next 4047 0 R +>> endobj +4039 0 obj << +/Title 4040 0 R +/A 4037 0 R +/Parent 4027 0 R +/Prev 4035 0 R +/Next 4043 0 R +>> endobj +4035 0 obj << +/Title 4036 0 R +/A 4033 0 R +/Parent 4027 0 R +/Prev 4031 0 R +/Next 4039 0 R +>> endobj +4031 0 obj << +/Title 4032 0 R +/A 4029 0 R +/Parent 4027 0 R +/Next 4035 0 R +>> endobj +4027 0 obj << +/Title 4028 0 R +/A 4025 0 R +/Parent 4011 0 R +/Prev 4019 0 R +/Next 4055 0 R +/First 4031 0 R +/Last 4051 0 R +/Count -6 +>> endobj +4023 0 obj << +/Title 4024 0 R +/A 4021 0 R +/Parent 4019 0 R +>> endobj +4019 0 obj << +/Title 4020 0 R +/A 4017 0 R +/Parent 4011 0 R +/Prev 4015 0 R +/Next 4027 0 R +/First 4023 0 R +/Last 4023 0 R +/Count -1 +>> endobj +4015 0 obj << +/Title 4016 0 R +/A 4013 0 R +/Parent 4011 0 R +/Next 4019 0 R +>> endobj +4011 0 obj << +/Title 4012 0 R +/A 4009 0 R +/Parent 159 0 R +/Prev 3995 0 R +/Next 4127 0 R +/First 4015 0 R +/Last 4055 0 R +/Count -4 +>> endobj +4007 0 obj << +/Title 4008 0 R +/A 4005 0 R +/Parent 3999 0 R +/Prev 4003 0 R +>> endobj +4003 0 obj << +/Title 4004 0 R +/A 4001 0 R +/Parent 3999 0 R +/Next 4007 0 R +>> endobj +3999 0 obj << +/Title 4000 0 R +/A 3997 0 R +/Parent 3995 0 R +/First 4003 0 R +/Last 4007 0 R +/Count -2 +>> endobj +3995 0 obj << +/Title 3996 0 R +/A 3993 0 R +/Parent 159 0 R +/Prev 3975 0 R +/Next 4011 0 R +/First 3999 0 R +/Last 3999 0 R +/Count -1 +>> endobj +3991 0 obj << +/Title 3992 0 R +/A 3989 0 R +/Parent 3983 0 R +/Prev 3987 0 R +>> endobj +3987 0 obj << +/Title 3988 0 R +/A 3985 0 R +/Parent 3983 0 R +/Next 3991 0 R +>> endobj +3983 0 obj << +/Title 3984 0 R +/A 3981 0 R +/Parent 3975 0 R +/Prev 3979 0 R +/First 3987 0 R +/Last 3991 0 R +/Count -2 +>> endobj +3979 0 obj << +/Title 3980 0 R +/A 3977 0 R +/Parent 3975 0 R +/Next 3983 0 R +>> endobj +3975 0 obj << +/Title 3976 0 R +/A 3973 0 R +/Parent 159 0 R +/Prev 3879 0 R +/Next 3995 0 R +/First 3979 0 R +/Last 3983 0 R +/Count -2 +>> endobj +3971 0 obj << +/Title 3972 0 R +/A 3969 0 R +/Parent 3915 0 R +/Prev 3967 0 R +>> endobj +3967 0 obj << +/Title 3968 0 R +/A 3965 0 R +/Parent 3915 0 R +/Prev 3963 0 R +/Next 3971 0 R +>> endobj +3963 0 obj << +/Title 3964 0 R +/A 3961 0 R +/Parent 3915 0 R +/Prev 3959 0 R +/Next 3967 0 R +>> endobj +3959 0 obj << +/Title 3960 0 R +/A 3957 0 R +/Parent 3915 0 R +/Prev 3955 0 R +/Next 3963 0 R +>> endobj +3955 0 obj << +/Title 3956 0 R +/A 3953 0 R +/Parent 3915 0 R +/Prev 3951 0 R +/Next 3959 0 R +>> endobj +3951 0 obj << +/Title 3952 0 R +/A 3949 0 R +/Parent 3915 0 R +/Prev 3947 0 R +/Next 3955 0 R +>> endobj +3947 0 obj << +/Title 3948 0 R +/A 3945 0 R +/Parent 3915 0 R +/Prev 3943 0 R +/Next 3951 0 R +>> endobj +3943 0 obj << +/Title 3944 0 R +/A 3941 0 R +/Parent 3915 0 R +/Prev 3939 0 R +/Next 3947 0 R +>> endobj +3939 0 obj << +/Title 3940 0 R +/A 3937 0 R +/Parent 3915 0 R +/Prev 3935 0 R +/Next 3943 0 R +>> endobj +3935 0 obj << +/Title 3936 0 R +/A 3933 0 R +/Parent 3915 0 R +/Prev 3931 0 R +/Next 3939 0 R +>> endobj +3931 0 obj << +/Title 3932 0 R +/A 3929 0 R +/Parent 3915 0 R +/Prev 3927 0 R +/Next 3935 0 R +>> endobj +3927 0 obj << +/Title 3928 0 R +/A 3925 0 R +/Parent 3915 0 R +/Prev 3923 0 R +/Next 3931 0 R +>> endobj +3923 0 obj << +/Title 3924 0 R +/A 3921 0 R +/Parent 3915 0 R +/Prev 3919 0 R +/Next 3927 0 R +>> endobj +3919 0 obj << +/Title 3920 0 R +/A 3917 0 R +/Parent 3915 0 R +/Next 3923 0 R +>> endobj +3915 0 obj << +/Title 3916 0 R +/A 3913 0 R +/Parent 3879 0 R +/Prev 3887 0 R +/First 3919 0 R +/Last 3971 0 R +/Count -14 +>> endobj +3911 0 obj << +/Title 3912 0 R +/A 3909 0 R +/Parent 3887 0 R +/Prev 3907 0 R +>> endobj +3907 0 obj << +/Title 3908 0 R +/A 3905 0 R +/Parent 3887 0 R +/Prev 3903 0 R +/Next 3911 0 R +>> endobj +3903 0 obj << +/Title 3904 0 R +/A 3901 0 R +/Parent 3887 0 R +/Prev 3899 0 R +/Next 3907 0 R +>> endobj +3899 0 obj << +/Title 3900 0 R +/A 3897 0 R +/Parent 3887 0 R +/Prev 3895 0 R +/Next 3903 0 R +>> endobj +3895 0 obj << +/Title 3896 0 R +/A 3893 0 R +/Parent 3887 0 R +/Prev 3891 0 R +/Next 3899 0 R +>> endobj +3891 0 obj << +/Title 3892 0 R +/A 3889 0 R +/Parent 3887 0 R +/Next 3895 0 R +>> endobj +3887 0 obj << +/Title 3888 0 R +/A 3885 0 R +/Parent 3879 0 R +/Prev 3883 0 R +/Next 3915 0 R +/First 3891 0 R +/Last 3911 0 R +/Count -6 +>> endobj +3883 0 obj << +/Title 3884 0 R +/A 3881 0 R +/Parent 3879 0 R +/Next 3887 0 R +>> endobj +3879 0 obj << +/Title 3880 0 R +/A 3877 0 R +/Parent 159 0 R +/Prev 3759 0 R +/Next 3975 0 R +/First 3883 0 R +/Last 3915 0 R +/Count -3 +>> endobj +3875 0 obj << +/Title 3876 0 R +/A 3873 0 R +/Parent 3815 0 R +/Prev 3871 0 R +>> endobj +3871 0 obj << +/Title 3872 0 R +/A 3869 0 R +/Parent 3815 0 R +/Prev 3867 0 R +/Next 3875 0 R +>> endobj +3867 0 obj << +/Title 3868 0 R +/A 3865 0 R +/Parent 3815 0 R +/Prev 3863 0 R +/Next 3871 0 R +>> endobj +3863 0 obj << +/Title 3864 0 R +/A 3861 0 R +/Parent 3815 0 R +/Prev 3859 0 R +/Next 3867 0 R +>> endobj +3859 0 obj << +/Title 3860 0 R +/A 3857 0 R +/Parent 3815 0 R +/Prev 3855 0 R +/Next 3863 0 R +>> endobj +3855 0 obj << +/Title 3856 0 R +/A 3853 0 R +/Parent 3815 0 R +/Prev 3851 0 R +/Next 3859 0 R +>> endobj +3851 0 obj << +/Title 3852 0 R +/A 3849 0 R +/Parent 3815 0 R +/Prev 3847 0 R +/Next 3855 0 R +>> endobj +3847 0 obj << +/Title 3848 0 R +/A 3845 0 R +/Parent 3815 0 R +/Prev 3843 0 R +/Next 3851 0 R +>> endobj +3843 0 obj << +/Title 3844 0 R +/A 3841 0 R +/Parent 3815 0 R +/Prev 3839 0 R +/Next 3847 0 R +>> endobj +3839 0 obj << +/Title 3840 0 R +/A 3837 0 R +/Parent 3815 0 R +/Prev 3835 0 R +/Next 3843 0 R +>> endobj +3835 0 obj << +/Title 3836 0 R +/A 3833 0 R +/Parent 3815 0 R +/Prev 3831 0 R +/Next 3839 0 R +>> endobj +3831 0 obj << +/Title 3832 0 R +/A 3829 0 R +/Parent 3815 0 R +/Prev 3827 0 R +/Next 3835 0 R +>> endobj +3827 0 obj << +/Title 3828 0 R +/A 3825 0 R +/Parent 3815 0 R +/Prev 3823 0 R +/Next 3831 0 R +>> endobj +3823 0 obj << +/Title 3824 0 R +/A 3821 0 R +/Parent 3815 0 R +/Prev 3819 0 R +/Next 3827 0 R +>> endobj +3819 0 obj << +/Title 3820 0 R +/A 3817 0 R +/Parent 3815 0 R +/Next 3823 0 R +>> endobj +3815 0 obj << +/Title 3816 0 R +/A 3813 0 R +/Parent 3759 0 R +/Prev 3787 0 R +/First 3819 0 R +/Last 3875 0 R +/Count -15 +>> endobj +3811 0 obj << +/Title 3812 0 R +/A 3809 0 R +/Parent 3787 0 R +/Prev 3807 0 R +>> endobj +3807 0 obj << +/Title 3808 0 R +/A 3805 0 R +/Parent 3787 0 R +/Prev 3803 0 R +/Next 3811 0 R +>> endobj +3803 0 obj << +/Title 3804 0 R +/A 3801 0 R +/Parent 3787 0 R +/Prev 3799 0 R +/Next 3807 0 R +>> endobj +3799 0 obj << +/Title 3800 0 R +/A 3797 0 R +/Parent 3787 0 R +/Prev 3795 0 R +/Next 3803 0 R +>> endobj +3795 0 obj << +/Title 3796 0 R +/A 3793 0 R +/Parent 3787 0 R +/Prev 3791 0 R +/Next 3799 0 R +>> endobj +3791 0 obj << +/Title 3792 0 R +/A 3789 0 R +/Parent 3787 0 R +/Next 3795 0 R +>> endobj +3787 0 obj << +/Title 3788 0 R +/A 3785 0 R +/Parent 3759 0 R +/Prev 3767 0 R +/Next 3815 0 R +/First 3791 0 R +/Last 3811 0 R +/Count -6 +>> endobj +3783 0 obj << +/Title 3784 0 R +/A 3781 0 R +/Parent 3767 0 R +/Prev 3779 0 R +>> endobj +3779 0 obj << +/Title 3780 0 R +/A 3777 0 R +/Parent 3767 0 R +/Prev 3775 0 R +/Next 3783 0 R +>> endobj +3775 0 obj << +/Title 3776 0 R +/A 3773 0 R +/Parent 3767 0 R +/Prev 3771 0 R +/Next 3779 0 R +>> endobj +3771 0 obj << +/Title 3772 0 R +/A 3769 0 R +/Parent 3767 0 R +/Next 3775 0 R +>> endobj +3767 0 obj << +/Title 3768 0 R +/A 3765 0 R +/Parent 3759 0 R +/Prev 3763 0 R +/Next 3787 0 R +/First 3771 0 R +/Last 3783 0 R +/Count -4 +>> endobj +3763 0 obj << +/Title 3764 0 R +/A 3761 0 R +/Parent 3759 0 R +/Next 3767 0 R +>> endobj +3759 0 obj << +/Title 3760 0 R +/A 3757 0 R +/Parent 159 0 R +/Prev 3659 0 R +/Next 3879 0 R +/First 3763 0 R +/Last 3815 0 R +/Count -4 +>> endobj +3755 0 obj << +/Title 3756 0 R +/A 3753 0 R +/Parent 3691 0 R +/Prev 3751 0 R +>> endobj +3751 0 obj << +/Title 3752 0 R +/A 3749 0 R +/Parent 3691 0 R +/Prev 3747 0 R +/Next 3755 0 R +>> endobj +3747 0 obj << +/Title 3748 0 R +/A 3745 0 R +/Parent 3691 0 R +/Prev 3743 0 R +/Next 3751 0 R +>> endobj +3743 0 obj << +/Title 3744 0 R +/A 3741 0 R +/Parent 3691 0 R +/Prev 3739 0 R +/Next 3747 0 R +>> endobj +3739 0 obj << +/Title 3740 0 R +/A 3737 0 R +/Parent 3691 0 R +/Prev 3735 0 R +/Next 3743 0 R +>> endobj +3735 0 obj << +/Title 3736 0 R +/A 3733 0 R +/Parent 3691 0 R +/Prev 3731 0 R +/Next 3739 0 R +>> endobj +3731 0 obj << +/Title 3732 0 R +/A 3729 0 R +/Parent 3691 0 R +/Prev 3727 0 R +/Next 3735 0 R +>> endobj +3727 0 obj << +/Title 3728 0 R +/A 3725 0 R +/Parent 3691 0 R +/Prev 3723 0 R +/Next 3731 0 R +>> endobj +3723 0 obj << +/Title 3724 0 R +/A 3721 0 R +/Parent 3691 0 R +/Prev 3719 0 R +/Next 3727 0 R +>> endobj +3719 0 obj << +/Title 3720 0 R +/A 3717 0 R +/Parent 3691 0 R +/Prev 3715 0 R +/Next 3723 0 R +>> endobj +3715 0 obj << +/Title 3716 0 R +/A 3713 0 R +/Parent 3691 0 R +/Prev 3711 0 R +/Next 3719 0 R +>> endobj +3711 0 obj << +/Title 3712 0 R +/A 3709 0 R +/Parent 3691 0 R +/Prev 3707 0 R +/Next 3715 0 R +>> endobj +3707 0 obj << +/Title 3708 0 R +/A 3705 0 R +/Parent 3691 0 R +/Prev 3703 0 R +/Next 3711 0 R +>> endobj +3703 0 obj << +/Title 3704 0 R +/A 3701 0 R +/Parent 3691 0 R +/Prev 3699 0 R +/Next 3707 0 R +>> endobj +3699 0 obj << +/Title 3700 0 R +/A 3697 0 R +/Parent 3691 0 R +/Prev 3695 0 R +/Next 3703 0 R +>> endobj +3695 0 obj << +/Title 3696 0 R +/A 3693 0 R +/Parent 3691 0 R +/Next 3699 0 R +>> endobj +3691 0 obj << +/Title 3692 0 R +/A 3689 0 R +/Parent 3659 0 R +/Prev 3667 0 R +/First 3695 0 R +/Last 3755 0 R +/Count -16 +>> endobj +3687 0 obj << +/Title 3688 0 R +/A 3685 0 R +/Parent 3667 0 R +/Prev 3683 0 R +>> endobj +3683 0 obj << +/Title 3684 0 R +/A 3681 0 R +/Parent 3667 0 R +/Prev 3679 0 R +/Next 3687 0 R +>> endobj +3679 0 obj << +/Title 3680 0 R +/A 3677 0 R +/Parent 3667 0 R +/Prev 3675 0 R +/Next 3683 0 R +>> endobj +3675 0 obj << +/Title 3676 0 R +/A 3673 0 R +/Parent 3667 0 R +/Prev 3671 0 R +/Next 3679 0 R +>> endobj +3671 0 obj << +/Title 3672 0 R +/A 3669 0 R +/Parent 3667 0 R +/Next 3675 0 R +>> endobj +3667 0 obj << +/Title 3668 0 R +/A 3665 0 R +/Parent 3659 0 R +/Prev 3663 0 R +/Next 3691 0 R +/First 3671 0 R +/Last 3687 0 R +/Count -5 +>> endobj +3663 0 obj << +/Title 3664 0 R +/A 3661 0 R +/Parent 3659 0 R +/Next 3667 0 R +>> endobj +3659 0 obj << +/Title 3660 0 R +/A 3657 0 R +/Parent 159 0 R +/Prev 3627 0 R +/Next 3759 0 R +/First 3663 0 R +/Last 3691 0 R +/Count -3 +>> endobj +3655 0 obj << +/Title 3656 0 R +/A 3653 0 R +/Parent 3643 0 R +/Prev 3651 0 R +>> endobj +3651 0 obj << +/Title 3652 0 R +/A 3649 0 R +/Parent 3643 0 R +/Prev 3647 0 R +/Next 3655 0 R +>> endobj +3647 0 obj << +/Title 3648 0 R +/A 3645 0 R +/Parent 3643 0 R +/Next 3651 0 R +>> endobj +3643 0 obj << +/Title 3644 0 R +/A 3641 0 R +/Parent 3627 0 R +/Prev 3631 0 R +/First 3647 0 R +/Last 3655 0 R +/Count -3 +>> endobj +3639 0 obj << +/Title 3640 0 R +/A 3637 0 R +/Parent 3631 0 R +/Prev 3635 0 R +>> endobj +3635 0 obj << +/Title 3636 0 R +/A 3633 0 R +/Parent 3631 0 R +/Next 3639 0 R +>> endobj +3631 0 obj << +/Title 3632 0 R +/A 3629 0 R +/Parent 3627 0 R +/Next 3643 0 R +/First 3635 0 R +/Last 3639 0 R +/Count -2 +>> endobj +3627 0 obj << +/Title 3628 0 R +/A 3625 0 R +/Parent 159 0 R +/Prev 3583 0 R +/Next 3659 0 R +/First 3631 0 R +/Last 3643 0 R +/Count -2 +>> endobj +3623 0 obj << +/Title 3624 0 R +/A 3621 0 R +/Parent 3591 0 R +/Prev 3619 0 R +>> endobj +3619 0 obj << +/Title 3620 0 R +/A 3617 0 R +/Parent 3591 0 R +/Prev 3615 0 R +/Next 3623 0 R +>> endobj +3615 0 obj << +/Title 3616 0 R +/A 3613 0 R +/Parent 3591 0 R +/Prev 3611 0 R +/Next 3619 0 R +>> endobj +3611 0 obj << +/Title 3612 0 R +/A 3609 0 R +/Parent 3591 0 R +/Prev 3607 0 R +/Next 3615 0 R +>> endobj +3607 0 obj << +/Title 3608 0 R +/A 3605 0 R +/Parent 3591 0 R +/Prev 3603 0 R +/Next 3611 0 R +>> endobj +3603 0 obj << +/Title 3604 0 R +/A 3601 0 R +/Parent 3591 0 R +/Prev 3599 0 R +/Next 3607 0 R +>> endobj +3599 0 obj << +/Title 3600 0 R +/A 3597 0 R +/Parent 3591 0 R +/Prev 3595 0 R +/Next 3603 0 R +>> endobj +3595 0 obj << +/Title 3596 0 R +/A 3593 0 R +/Parent 3591 0 R +/Next 3599 0 R +>> endobj +3591 0 obj << +/Title 3592 0 R +/A 3589 0 R +/Parent 3583 0 R +/Prev 3587 0 R +/First 3595 0 R +/Last 3623 0 R +/Count -8 +>> endobj +3587 0 obj << +/Title 3588 0 R +/A 3585 0 R +/Parent 3583 0 R +/Next 3591 0 R +>> endobj +3583 0 obj << +/Title 3584 0 R +/A 3581 0 R +/Parent 159 0 R +/Prev 3575 0 R +/Next 3627 0 R +/First 3587 0 R +/Last 3591 0 R +/Count -2 +>> endobj +3579 0 obj << +/Title 3580 0 R +/A 3577 0 R +/Parent 3575 0 R +>> endobj +3575 0 obj << +/Title 3576 0 R +/A 3573 0 R +/Parent 159 0 R +/Prev 3455 0 R +/Next 3583 0 R +/First 3579 0 R +/Last 3579 0 R +/Count -1 +>> endobj +3571 0 obj << +/Title 3572 0 R +/A 3569 0 R +/Parent 3463 0 R +/Prev 3567 0 R +>> endobj +3567 0 obj << +/Title 3568 0 R +/A 3565 0 R +/Parent 3463 0 R +/Prev 3563 0 R +/Next 3571 0 R +>> endobj +3563 0 obj << +/Title 3564 0 R +/A 3561 0 R +/Parent 3463 0 R +/Prev 3559 0 R +/Next 3567 0 R +>> endobj +3559 0 obj << +/Title 3560 0 R +/A 3557 0 R +/Parent 3463 0 R +/Prev 3555 0 R +/Next 3563 0 R +>> endobj +3555 0 obj << +/Title 3556 0 R +/A 3553 0 R +/Parent 3463 0 R +/Prev 3551 0 R +/Next 3559 0 R +>> endobj +3551 0 obj << +/Title 3552 0 R +/A 3549 0 R +/Parent 3463 0 R +/Prev 3547 0 R +/Next 3555 0 R +>> endobj +3547 0 obj << +/Title 3548 0 R +/A 3545 0 R +/Parent 3463 0 R +/Prev 3543 0 R +/Next 3551 0 R +>> endobj +3543 0 obj << +/Title 3544 0 R +/A 3541 0 R +/Parent 3463 0 R +/Prev 3539 0 R +/Next 3547 0 R +>> endobj +3539 0 obj << +/Title 3540 0 R +/A 3537 0 R +/Parent 3463 0 R +/Prev 3535 0 R +/Next 3543 0 R +>> endobj +3535 0 obj << +/Title 3536 0 R +/A 3533 0 R +/Parent 3463 0 R +/Prev 3531 0 R +/Next 3539 0 R +>> endobj +3531 0 obj << +/Title 3532 0 R +/A 3529 0 R +/Parent 3463 0 R +/Prev 3527 0 R +/Next 3535 0 R +>> endobj +3527 0 obj << +/Title 3528 0 R +/A 3525 0 R +/Parent 3463 0 R +/Prev 3523 0 R +/Next 3531 0 R +>> endobj +3523 0 obj << +/Title 3524 0 R +/A 3521 0 R +/Parent 3463 0 R +/Prev 3519 0 R +/Next 3527 0 R +>> endobj +3519 0 obj << +/Title 3520 0 R +/A 3517 0 R +/Parent 3463 0 R +/Prev 3515 0 R +/Next 3523 0 R +>> endobj +3515 0 obj << +/Title 3516 0 R +/A 3513 0 R +/Parent 3463 0 R +/Prev 3511 0 R +/Next 3519 0 R +>> endobj +3511 0 obj << +/Title 3512 0 R +/A 3509 0 R +/Parent 3463 0 R +/Prev 3507 0 R +/Next 3515 0 R +>> endobj +3507 0 obj << +/Title 3508 0 R +/A 3505 0 R +/Parent 3463 0 R +/Prev 3503 0 R +/Next 3511 0 R +>> endobj +3503 0 obj << +/Title 3504 0 R +/A 3501 0 R +/Parent 3463 0 R +/Prev 3499 0 R +/Next 3507 0 R +>> endobj +3499 0 obj << +/Title 3500 0 R +/A 3497 0 R +/Parent 3463 0 R +/Prev 3495 0 R +/Next 3503 0 R +>> endobj +3495 0 obj << +/Title 3496 0 R +/A 3493 0 R +/Parent 3463 0 R +/Prev 3491 0 R +/Next 3499 0 R +>> endobj +3491 0 obj << +/Title 3492 0 R +/A 3489 0 R +/Parent 3463 0 R +/Prev 3487 0 R +/Next 3495 0 R +>> endobj +3487 0 obj << +/Title 3488 0 R +/A 3485 0 R +/Parent 3463 0 R +/Prev 3483 0 R +/Next 3491 0 R +>> endobj +3483 0 obj << +/Title 3484 0 R +/A 3481 0 R +/Parent 3463 0 R +/Prev 3479 0 R +/Next 3487 0 R +>> endobj +3479 0 obj << +/Title 3480 0 R +/A 3477 0 R +/Parent 3463 0 R +/Prev 3475 0 R +/Next 3483 0 R +>> endobj +3475 0 obj << +/Title 3476 0 R +/A 3473 0 R +/Parent 3463 0 R +/Prev 3471 0 R +/Next 3479 0 R +>> endobj +3471 0 obj << +/Title 3472 0 R +/A 3469 0 R +/Parent 3463 0 R +/Prev 3467 0 R +/Next 3475 0 R +>> endobj +3467 0 obj << +/Title 3468 0 R +/A 3465 0 R +/Parent 3463 0 R +/Next 3471 0 R +>> endobj +3463 0 obj << +/Title 3464 0 R +/A 3461 0 R +/Parent 3455 0 R +/Prev 3459 0 R +/First 3467 0 R +/Last 3571 0 R +/Count -27 +>> endobj +3459 0 obj << +/Title 3460 0 R +/A 3457 0 R +/Parent 3455 0 R +/Next 3463 0 R +>> endobj +3455 0 obj << +/Title 3456 0 R +/A 3453 0 R +/Parent 159 0 R +/Prev 3431 0 R +/Next 3575 0 R +/First 3459 0 R +/Last 3463 0 R +/Count -2 +>> endobj +3451 0 obj << +/Title 3452 0 R +/A 3449 0 R +/Parent 3439 0 R +/Prev 3447 0 R +>> endobj +3447 0 obj << +/Title 3448 0 R +/A 3445 0 R +/Parent 3439 0 R +/Prev 3443 0 R +/Next 3451 0 R +>> endobj +3443 0 obj << +/Title 3444 0 R +/A 3441 0 R +/Parent 3439 0 R +/Next 3447 0 R +>> endobj +3439 0 obj << +/Title 3440 0 R +/A 3437 0 R +/Parent 3431 0 R +/Prev 3435 0 R +/First 3443 0 R +/Last 3451 0 R +/Count -3 +>> endobj +3435 0 obj << +/Title 3436 0 R +/A 3433 0 R +/Parent 3431 0 R +/Next 3439 0 R +>> endobj +3431 0 obj << +/Title 3432 0 R +/A 3429 0 R +/Parent 159 0 R +/Prev 3271 0 R +/Next 3455 0 R +/First 3435 0 R +/Last 3439 0 R +/Count -2 +>> endobj +3427 0 obj << +/Title 3428 0 R +/A 3425 0 R +/Parent 3391 0 R +/Prev 3423 0 R +>> endobj +3423 0 obj << +/Title 3424 0 R +/A 3421 0 R +/Parent 3391 0 R +/Prev 3419 0 R +/Next 3427 0 R +>> endobj +3419 0 obj << +/Title 3420 0 R +/A 3417 0 R +/Parent 3391 0 R +/Prev 3415 0 R +/Next 3423 0 R +>> endobj +3415 0 obj << +/Title 3416 0 R +/A 3413 0 R +/Parent 3391 0 R +/Prev 3411 0 R +/Next 3419 0 R +>> endobj +3411 0 obj << +/Title 3412 0 R +/A 3409 0 R +/Parent 3391 0 R +/Prev 3407 0 R +/Next 3415 0 R +>> endobj +3407 0 obj << +/Title 3408 0 R +/A 3405 0 R +/Parent 3391 0 R +/Prev 3403 0 R +/Next 3411 0 R +>> endobj +3403 0 obj << +/Title 3404 0 R +/A 3401 0 R +/Parent 3391 0 R +/Prev 3399 0 R +/Next 3407 0 R +>> endobj +3399 0 obj << +/Title 3400 0 R +/A 3397 0 R +/Parent 3391 0 R +/Prev 3395 0 R +/Next 3403 0 R +>> endobj +3395 0 obj << +/Title 3396 0 R +/A 3393 0 R +/Parent 3391 0 R +/Next 3399 0 R +>> endobj +3391 0 obj << +/Title 3392 0 R +/A 3389 0 R +/Parent 3271 0 R +/Prev 3343 0 R +/First 3395 0 R +/Last 3427 0 R +/Count -9 +>> endobj +3387 0 obj << +/Title 3388 0 R +/A 3385 0 R +/Parent 3343 0 R +/Prev 3383 0 R +>> endobj +3383 0 obj << +/Title 3384 0 R +/A 3381 0 R +/Parent 3343 0 R +/Prev 3379 0 R +/Next 3387 0 R +>> endobj +3379 0 obj << +/Title 3380 0 R +/A 3377 0 R +/Parent 3343 0 R +/Prev 3375 0 R +/Next 3383 0 R +>> endobj +3375 0 obj << +/Title 3376 0 R +/A 3373 0 R +/Parent 3343 0 R +/Prev 3371 0 R +/Next 3379 0 R +>> endobj +3371 0 obj << +/Title 3372 0 R +/A 3369 0 R +/Parent 3343 0 R +/Prev 3367 0 R +/Next 3375 0 R +>> endobj +3367 0 obj << +/Title 3368 0 R +/A 3365 0 R +/Parent 3343 0 R +/Prev 3363 0 R +/Next 3371 0 R +>> endobj +3363 0 obj << +/Title 3364 0 R +/A 3361 0 R +/Parent 3343 0 R +/Prev 3359 0 R +/Next 3367 0 R +>> endobj +3359 0 obj << +/Title 3360 0 R +/A 3357 0 R +/Parent 3343 0 R +/Prev 3355 0 R +/Next 3363 0 R +>> endobj +3355 0 obj << +/Title 3356 0 R +/A 3353 0 R +/Parent 3343 0 R +/Prev 3351 0 R +/Next 3359 0 R +>> endobj +3351 0 obj << +/Title 3352 0 R +/A 3349 0 R +/Parent 3343 0 R +/Prev 3347 0 R +/Next 3355 0 R +>> endobj +3347 0 obj << +/Title 3348 0 R +/A 3345 0 R +/Parent 3343 0 R +/Next 3351 0 R +>> endobj +3343 0 obj << +/Title 3344 0 R +/A 3341 0 R +/Parent 3271 0 R +/Prev 3279 0 R +/Next 3391 0 R +/First 3347 0 R +/Last 3387 0 R +/Count -11 +>> endobj +3339 0 obj << +/Title 3340 0 R +/A 3337 0 R +/Parent 3279 0 R +/Prev 3335 0 R +>> endobj +3335 0 obj << +/Title 3336 0 R +/A 3333 0 R +/Parent 3279 0 R +/Prev 3331 0 R +/Next 3339 0 R +>> endobj +3331 0 obj << +/Title 3332 0 R +/A 3329 0 R +/Parent 3279 0 R +/Prev 3327 0 R +/Next 3335 0 R +>> endobj +3327 0 obj << +/Title 3328 0 R +/A 3325 0 R +/Parent 3279 0 R +/Prev 3323 0 R +/Next 3331 0 R +>> endobj +3323 0 obj << +/Title 3324 0 R +/A 3321 0 R +/Parent 3279 0 R +/Prev 3319 0 R +/Next 3327 0 R +>> endobj +3319 0 obj << +/Title 3320 0 R +/A 3317 0 R +/Parent 3279 0 R +/Prev 3315 0 R +/Next 3323 0 R +>> endobj +3315 0 obj << +/Title 3316 0 R +/A 3313 0 R +/Parent 3279 0 R +/Prev 3311 0 R +/Next 3319 0 R +>> endobj +3311 0 obj << +/Title 3312 0 R +/A 3309 0 R +/Parent 3279 0 R +/Prev 3307 0 R +/Next 3315 0 R +>> endobj +3307 0 obj << +/Title 3308 0 R +/A 3305 0 R +/Parent 3279 0 R +/Prev 3303 0 R +/Next 3311 0 R +>> endobj +3303 0 obj << +/Title 3304 0 R +/A 3301 0 R +/Parent 3279 0 R +/Prev 3299 0 R +/Next 3307 0 R +>> endobj +3299 0 obj << +/Title 3300 0 R +/A 3297 0 R +/Parent 3279 0 R +/Prev 3295 0 R +/Next 3303 0 R +>> endobj +3295 0 obj << +/Title 3296 0 R +/A 3293 0 R +/Parent 3279 0 R +/Prev 3291 0 R +/Next 3299 0 R +>> endobj +3291 0 obj << +/Title 3292 0 R +/A 3289 0 R +/Parent 3279 0 R +/Prev 3287 0 R +/Next 3295 0 R +>> endobj +3287 0 obj << +/Title 3288 0 R +/A 3285 0 R +/Parent 3279 0 R +/Prev 3283 0 R +/Next 3291 0 R +>> endobj +3283 0 obj << +/Title 3284 0 R +/A 3281 0 R +/Parent 3279 0 R +/Next 3287 0 R +>> endobj +3279 0 obj << +/Title 3280 0 R +/A 3277 0 R +/Parent 3271 0 R +/Prev 3275 0 R +/Next 3343 0 R +/First 3283 0 R +/Last 3339 0 R +/Count -15 +>> endobj +3275 0 obj << +/Title 3276 0 R +/A 3273 0 R +/Parent 3271 0 R +/Next 3279 0 R +>> endobj +3271 0 obj << +/Title 3272 0 R +/A 3269 0 R +/Parent 159 0 R +/Prev 3239 0 R +/Next 3431 0 R +/First 3275 0 R +/Last 3391 0 R +/Count -4 +>> endobj +3267 0 obj << +/Title 3268 0 R +/A 3265 0 R +/Parent 3251 0 R +/Prev 3263 0 R +>> endobj +3263 0 obj << +/Title 3264 0 R +/A 3261 0 R +/Parent 3251 0 R +/Prev 3259 0 R +/Next 3267 0 R +>> endobj +3259 0 obj << +/Title 3260 0 R +/A 3257 0 R +/Parent 3251 0 R +/Prev 3255 0 R +/Next 3263 0 R +>> endobj +3255 0 obj << +/Title 3256 0 R +/A 3253 0 R +/Parent 3251 0 R +/Next 3259 0 R +>> endobj +3251 0 obj << +/Title 3252 0 R +/A 3249 0 R +/Parent 3239 0 R +/Prev 3243 0 R +/First 3255 0 R +/Last 3267 0 R +/Count -4 +>> endobj +3247 0 obj << +/Title 3248 0 R +/A 3245 0 R +/Parent 3243 0 R +>> endobj +3243 0 obj << +/Title 3244 0 R +/A 3241 0 R +/Parent 3239 0 R +/Next 3251 0 R +/First 3247 0 R +/Last 3247 0 R +/Count -1 +>> endobj +3239 0 obj << +/Title 3240 0 R +/A 3237 0 R +/Parent 159 0 R +/Prev 3211 0 R +/Next 3271 0 R +/First 3243 0 R +/Last 3251 0 R +/Count -2 +>> endobj +3235 0 obj << +/Title 3236 0 R +/A 3233 0 R +/Parent 3223 0 R +/Prev 3231 0 R +>> endobj +3231 0 obj << +/Title 3232 0 R +/A 3229 0 R +/Parent 3223 0 R +/Prev 3227 0 R +/Next 3235 0 R +>> endobj +3227 0 obj << +/Title 3228 0 R +/A 3225 0 R +/Parent 3223 0 R +/Next 3231 0 R +>> endobj +3223 0 obj << +/Title 3224 0 R +/A 3221 0 R +/Parent 3211 0 R +/Prev 3215 0 R +/First 3227 0 R +/Last 3235 0 R +/Count -3 +>> endobj +3219 0 obj << +/Title 3220 0 R +/A 3217 0 R +/Parent 3215 0 R +>> endobj +3215 0 obj << +/Title 3216 0 R +/A 3213 0 R +/Parent 3211 0 R +/Next 3223 0 R +/First 3219 0 R +/Last 3219 0 R +/Count -1 +>> endobj +3211 0 obj << +/Title 3212 0 R +/A 3209 0 R +/Parent 159 0 R +/Prev 3179 0 R +/Next 3239 0 R +/First 3215 0 R +/Last 3223 0 R +/Count -2 +>> endobj +3207 0 obj << +/Title 3208 0 R +/A 3205 0 R +/Parent 3191 0 R +/Prev 3203 0 R +>> endobj +3203 0 obj << +/Title 3204 0 R +/A 3201 0 R +/Parent 3191 0 R +/Prev 3199 0 R +/Next 3207 0 R +>> endobj +3199 0 obj << +/Title 3200 0 R +/A 3197 0 R +/Parent 3191 0 R +/Prev 3195 0 R +/Next 3203 0 R +>> endobj +3195 0 obj << +/Title 3196 0 R +/A 3193 0 R +/Parent 3191 0 R +/Next 3199 0 R +>> endobj +3191 0 obj << +/Title 3192 0 R +/A 3189 0 R +/Parent 3179 0 R +/Prev 3183 0 R +/First 3195 0 R +/Last 3207 0 R +/Count -4 +>> endobj +3187 0 obj << +/Title 3188 0 R +/A 3185 0 R +/Parent 3183 0 R +>> endobj +3183 0 obj << +/Title 3184 0 R +/A 3181 0 R +/Parent 3179 0 R +/Next 3191 0 R +/First 3187 0 R +/Last 3187 0 R +/Count -1 +>> endobj +3179 0 obj << +/Title 3180 0 R +/A 3177 0 R +/Parent 159 0 R +/Prev 3151 0 R +/Next 3211 0 R +/First 3183 0 R +/Last 3191 0 R +/Count -2 +>> endobj +3175 0 obj << +/Title 3176 0 R +/A 3173 0 R +/Parent 3163 0 R +/Prev 3171 0 R +>> endobj +3171 0 obj << +/Title 3172 0 R +/A 3169 0 R +/Parent 3163 0 R +/Prev 3167 0 R +/Next 3175 0 R +>> endobj +3167 0 obj << +/Title 3168 0 R +/A 3165 0 R +/Parent 3163 0 R +/Next 3171 0 R +>> endobj +3163 0 obj << +/Title 3164 0 R +/A 3161 0 R +/Parent 3151 0 R +/Prev 3155 0 R +/First 3167 0 R +/Last 3175 0 R +/Count -3 +>> endobj +3159 0 obj << +/Title 3160 0 R +/A 3157 0 R +/Parent 3155 0 R +>> endobj +3155 0 obj << +/Title 3156 0 R +/A 3153 0 R +/Parent 3151 0 R +/Next 3163 0 R +/First 3159 0 R +/Last 3159 0 R +/Count -1 +>> endobj +3151 0 obj << +/Title 3152 0 R +/A 3149 0 R +/Parent 159 0 R +/Prev 3075 0 R +/Next 3179 0 R +/First 3155 0 R +/Last 3163 0 R +/Count -2 +>> endobj +3147 0 obj << +/Title 3148 0 R +/A 3145 0 R +/Parent 3091 0 R +/Prev 3143 0 R +>> endobj +3143 0 obj << +/Title 3144 0 R +/A 3141 0 R +/Parent 3091 0 R +/Prev 3139 0 R +/Next 3147 0 R +>> endobj +3139 0 obj << +/Title 3140 0 R +/A 3137 0 R +/Parent 3091 0 R +/Prev 3135 0 R +/Next 3143 0 R +>> endobj +3135 0 obj << +/Title 3136 0 R +/A 3133 0 R +/Parent 3091 0 R +/Prev 3131 0 R +/Next 3139 0 R +>> endobj +3131 0 obj << +/Title 3132 0 R +/A 3129 0 R +/Parent 3091 0 R +/Prev 3127 0 R +/Next 3135 0 R +>> endobj +3127 0 obj << +/Title 3128 0 R +/A 3125 0 R +/Parent 3091 0 R +/Prev 3123 0 R +/Next 3131 0 R +>> endobj +3123 0 obj << +/Title 3124 0 R +/A 3121 0 R +/Parent 3091 0 R +/Prev 3119 0 R +/Next 3127 0 R +>> endobj +3119 0 obj << +/Title 3120 0 R +/A 3117 0 R +/Parent 3091 0 R +/Prev 3115 0 R +/Next 3123 0 R +>> endobj +3115 0 obj << +/Title 3116 0 R +/A 3113 0 R +/Parent 3091 0 R +/Prev 3111 0 R +/Next 3119 0 R +>> endobj +3111 0 obj << +/Title 3112 0 R +/A 3109 0 R +/Parent 3091 0 R +/Prev 3107 0 R +/Next 3115 0 R +>> endobj +3107 0 obj << +/Title 3108 0 R +/A 3105 0 R +/Parent 3091 0 R +/Prev 3103 0 R +/Next 3111 0 R +>> endobj +3103 0 obj << +/Title 3104 0 R +/A 3101 0 R +/Parent 3091 0 R +/Prev 3099 0 R +/Next 3107 0 R +>> endobj +3099 0 obj << +/Title 3100 0 R +/A 3097 0 R +/Parent 3091 0 R +/Prev 3095 0 R +/Next 3103 0 R +>> endobj +3095 0 obj << +/Title 3096 0 R +/A 3093 0 R +/Parent 3091 0 R +/Next 3099 0 R +>> endobj +3091 0 obj << +/Title 3092 0 R +/A 3089 0 R +/Parent 3075 0 R +/Prev 3079 0 R +/First 3095 0 R +/Last 3147 0 R +/Count -14 +>> endobj +3087 0 obj << +/Title 3088 0 R +/A 3085 0 R +/Parent 3079 0 R +/Prev 3083 0 R +>> endobj +3083 0 obj << +/Title 3084 0 R +/A 3081 0 R +/Parent 3079 0 R +/Next 3087 0 R +>> endobj +3079 0 obj << +/Title 3080 0 R +/A 3077 0 R +/Parent 3075 0 R +/Next 3091 0 R +/First 3083 0 R +/Last 3087 0 R +/Count -2 +>> endobj +3075 0 obj << +/Title 3076 0 R +/A 3073 0 R +/Parent 159 0 R +/Prev 3039 0 R +/Next 3151 0 R +/First 3079 0 R +/Last 3091 0 R +/Count -2 +>> endobj +3071 0 obj << +/Title 3072 0 R +/A 3069 0 R +/Parent 3051 0 R +/Prev 3067 0 R +>> endobj +3067 0 obj << +/Title 3068 0 R +/A 3065 0 R +/Parent 3051 0 R +/Prev 3063 0 R +/Next 3071 0 R +>> endobj +3063 0 obj << +/Title 3064 0 R +/A 3061 0 R +/Parent 3051 0 R +/Prev 3059 0 R +/Next 3067 0 R +>> endobj +3059 0 obj << +/Title 3060 0 R +/A 3057 0 R +/Parent 3051 0 R +/Prev 3055 0 R +/Next 3063 0 R +>> endobj +3055 0 obj << +/Title 3056 0 R +/A 3053 0 R +/Parent 3051 0 R +/Next 3059 0 R +>> endobj +3051 0 obj << +/Title 3052 0 R +/A 3049 0 R +/Parent 3039 0 R +/Prev 3043 0 R +/First 3055 0 R +/Last 3071 0 R +/Count -5 +>> endobj +3047 0 obj << +/Title 3048 0 R +/A 3045 0 R +/Parent 3043 0 R +>> endobj +3043 0 obj << +/Title 3044 0 R +/A 3041 0 R +/Parent 3039 0 R +/Next 3051 0 R +/First 3047 0 R +/Last 3047 0 R +/Count -1 +>> endobj +3039 0 obj << +/Title 3040 0 R +/A 3037 0 R +/Parent 159 0 R +/Prev 3019 0 R +/Next 3075 0 R +/First 3043 0 R +/Last 3051 0 R +/Count -2 +>> endobj +3035 0 obj << +/Title 3036 0 R +/A 3033 0 R +/Parent 3027 0 R +/Prev 3031 0 R +>> endobj +3031 0 obj << +/Title 3032 0 R +/A 3029 0 R +/Parent 3027 0 R +/Next 3035 0 R +>> endobj +3027 0 obj << +/Title 3028 0 R +/A 3025 0 R +/Parent 3019 0 R +/Prev 3023 0 R +/First 3031 0 R +/Last 3035 0 R +/Count -2 +>> endobj +3023 0 obj << +/Title 3024 0 R +/A 3021 0 R +/Parent 3019 0 R +/Next 3027 0 R +>> endobj +3019 0 obj << +/Title 3020 0 R +/A 3017 0 R +/Parent 159 0 R +/Prev 2975 0 R +/Next 3039 0 R +/First 3023 0 R +/Last 3027 0 R +/Count -2 +>> endobj +3015 0 obj << +/Title 3016 0 R +/A 3013 0 R +/Parent 2991 0 R +/Prev 3011 0 R +>> endobj +3011 0 obj << +/Title 3012 0 R +/A 3009 0 R +/Parent 2991 0 R +/Prev 3007 0 R +/Next 3015 0 R +>> endobj +3007 0 obj << +/Title 3008 0 R +/A 3005 0 R +/Parent 2991 0 R +/Prev 3003 0 R +/Next 3011 0 R +>> endobj +3003 0 obj << +/Title 3004 0 R +/A 3001 0 R +/Parent 2991 0 R +/Prev 2999 0 R +/Next 3007 0 R +>> endobj +2999 0 obj << +/Title 3000 0 R +/A 2997 0 R +/Parent 2991 0 R +/Prev 2995 0 R +/Next 3003 0 R +>> endobj +2995 0 obj << +/Title 2996 0 R +/A 2993 0 R +/Parent 2991 0 R +/Next 2999 0 R +>> endobj +2991 0 obj << +/Title 2992 0 R +/A 2989 0 R +/Parent 2975 0 R +/Prev 2983 0 R +/First 2995 0 R +/Last 3015 0 R +/Count -6 +>> endobj +2987 0 obj << +/Title 2988 0 R +/A 2985 0 R +/Parent 2983 0 R +>> endobj +2983 0 obj << +/Title 2984 0 R +/A 2981 0 R +/Parent 2975 0 R +/Prev 2979 0 R +/Next 2991 0 R +/First 2987 0 R +/Last 2987 0 R +/Count -1 +>> endobj +2979 0 obj << +/Title 2980 0 R +/A 2977 0 R +/Parent 2975 0 R +/Next 2983 0 R +>> endobj +2975 0 obj << +/Title 2976 0 R +/A 2973 0 R +/Parent 159 0 R +/Prev 2879 0 R +/Next 3019 0 R +/First 2979 0 R +/Last 2991 0 R +/Count -3 +>> endobj +2971 0 obj << +/Title 2972 0 R +/A 2969 0 R +/Parent 2959 0 R +/Prev 2967 0 R +>> endobj +2967 0 obj << +/Title 2968 0 R +/A 2965 0 R +/Parent 2959 0 R +/Prev 2963 0 R +/Next 2971 0 R +>> endobj +2963 0 obj << +/Title 2964 0 R +/A 2961 0 R +/Parent 2959 0 R +/Next 2967 0 R +>> endobj +2959 0 obj << +/Title 2960 0 R +/A 2957 0 R +/Parent 2879 0 R +/Prev 2895 0 R +/First 2963 0 R +/Last 2971 0 R +/Count -3 +>> endobj +2955 0 obj << +/Title 2956 0 R +/A 2953 0 R +/Parent 2895 0 R +/Prev 2951 0 R +>> endobj +2951 0 obj << +/Title 2952 0 R +/A 2949 0 R +/Parent 2895 0 R +/Prev 2947 0 R +/Next 2955 0 R +>> endobj +2947 0 obj << +/Title 2948 0 R +/A 2945 0 R +/Parent 2895 0 R +/Prev 2943 0 R +/Next 2951 0 R +>> endobj +2943 0 obj << +/Title 2944 0 R +/A 2941 0 R +/Parent 2895 0 R +/Prev 2939 0 R +/Next 2947 0 R +>> endobj +2939 0 obj << +/Title 2940 0 R +/A 2937 0 R +/Parent 2895 0 R +/Prev 2935 0 R +/Next 2943 0 R +>> endobj +2935 0 obj << +/Title 2936 0 R +/A 2933 0 R +/Parent 2895 0 R +/Prev 2931 0 R +/Next 2939 0 R +>> endobj +2931 0 obj << +/Title 2932 0 R +/A 2929 0 R +/Parent 2895 0 R +/Prev 2927 0 R +/Next 2935 0 R +>> endobj +2927 0 obj << +/Title 2928 0 R +/A 2925 0 R +/Parent 2895 0 R +/Prev 2923 0 R +/Next 2931 0 R +>> endobj +2923 0 obj << +/Title 2924 0 R +/A 2921 0 R +/Parent 2895 0 R +/Prev 2919 0 R +/Next 2927 0 R +>> endobj +2919 0 obj << +/Title 2920 0 R +/A 2917 0 R +/Parent 2895 0 R +/Prev 2915 0 R +/Next 2923 0 R +>> endobj +2915 0 obj << +/Title 2916 0 R +/A 2913 0 R +/Parent 2895 0 R +/Prev 2911 0 R +/Next 2919 0 R +>> endobj +2911 0 obj << +/Title 2912 0 R +/A 2909 0 R +/Parent 2895 0 R +/Prev 2907 0 R +/Next 2915 0 R +>> endobj +2907 0 obj << +/Title 2908 0 R +/A 2905 0 R +/Parent 2895 0 R +/Prev 2903 0 R +/Next 2911 0 R +>> endobj +2903 0 obj << +/Title 2904 0 R +/A 2901 0 R +/Parent 2895 0 R +/Prev 2899 0 R +/Next 2907 0 R +>> endobj +2899 0 obj << +/Title 2900 0 R +/A 2897 0 R +/Parent 2895 0 R +/Next 2903 0 R +>> endobj +2895 0 obj << +/Title 2896 0 R +/A 2893 0 R +/Parent 2879 0 R +/Prev 2887 0 R +/Next 2959 0 R +/First 2899 0 R +/Last 2955 0 R +/Count -15 +>> endobj +2891 0 obj << +/Title 2892 0 R +/A 2889 0 R +/Parent 2887 0 R +>> endobj +2887 0 obj << +/Title 2888 0 R +/A 2885 0 R +/Parent 2879 0 R +/Prev 2883 0 R +/Next 2895 0 R +/First 2891 0 R +/Last 2891 0 R +/Count -1 +>> endobj +2883 0 obj << +/Title 2884 0 R +/A 2881 0 R +/Parent 2879 0 R +/Next 2887 0 R +>> endobj +2879 0 obj << +/Title 2880 0 R +/A 2877 0 R +/Parent 159 0 R +/Prev 2819 0 R +/Next 2975 0 R +/First 2883 0 R +/Last 2959 0 R +/Count -4 +>> endobj +2875 0 obj << +/Title 2876 0 R +/A 2873 0 R +/Parent 2847 0 R +/Prev 2871 0 R +>> endobj +2871 0 obj << +/Title 2872 0 R +/A 2869 0 R +/Parent 2847 0 R +/Prev 2867 0 R +/Next 2875 0 R +>> endobj +2867 0 obj << +/Title 2868 0 R +/A 2865 0 R +/Parent 2847 0 R +/Prev 2863 0 R +/Next 2871 0 R +>> endobj +2863 0 obj << +/Title 2864 0 R +/A 2861 0 R +/Parent 2847 0 R +/Prev 2859 0 R +/Next 2867 0 R +>> endobj +2859 0 obj << +/Title 2860 0 R +/A 2857 0 R +/Parent 2847 0 R +/Prev 2855 0 R +/Next 2863 0 R +>> endobj +2855 0 obj << +/Title 2856 0 R +/A 2853 0 R +/Parent 2847 0 R +/Prev 2851 0 R +/Next 2859 0 R +>> endobj +2851 0 obj << +/Title 2852 0 R +/A 2849 0 R +/Parent 2847 0 R +/Next 2855 0 R +>> endobj +2847 0 obj << +/Title 2848 0 R +/A 2845 0 R +/Parent 2819 0 R +/Prev 2827 0 R +/First 2851 0 R +/Last 2875 0 R +/Count -7 +>> endobj +2843 0 obj << +/Title 2844 0 R +/A 2841 0 R +/Parent 2827 0 R +/Prev 2839 0 R +>> endobj +2839 0 obj << +/Title 2840 0 R +/A 2837 0 R +/Parent 2827 0 R +/Prev 2835 0 R +/Next 2843 0 R +>> endobj +2835 0 obj << +/Title 2836 0 R +/A 2833 0 R +/Parent 2827 0 R +/Prev 2831 0 R +/Next 2839 0 R +>> endobj +2831 0 obj << +/Title 2832 0 R +/A 2829 0 R +/Parent 2827 0 R +/Next 2835 0 R +>> endobj +2827 0 obj << +/Title 2828 0 R +/A 2825 0 R +/Parent 2819 0 R +/Prev 2823 0 R +/Next 2847 0 R +/First 2831 0 R +/Last 2843 0 R +/Count -4 +>> endobj +2823 0 obj << +/Title 2824 0 R +/A 2821 0 R +/Parent 2819 0 R +/Next 2827 0 R +>> endobj +2819 0 obj << +/Title 2820 0 R +/A 2817 0 R +/Parent 159 0 R +/Prev 2803 0 R +/Next 2879 0 R +/First 2823 0 R +/Last 2847 0 R +/Count -3 +>> endobj +2815 0 obj << +/Title 2816 0 R +/A 2813 0 R +/Parent 2811 0 R +>> endobj +2811 0 obj << +/Title 2812 0 R +/A 2809 0 R +/Parent 2803 0 R +/Prev 2807 0 R +/First 2815 0 R +/Last 2815 0 R +/Count -1 +>> endobj +2807 0 obj << +/Title 2808 0 R +/A 2805 0 R +/Parent 2803 0 R +/Next 2811 0 R +>> endobj +2803 0 obj << +/Title 2804 0 R +/A 2801 0 R +/Parent 159 0 R +/Prev 2787 0 R +/Next 2819 0 R +/First 2807 0 R +/Last 2811 0 R +/Count -2 +>> endobj +2799 0 obj << +/Title 2800 0 R +/A 2797 0 R +/Parent 2795 0 R +>> endobj +2795 0 obj << +/Title 2796 0 R +/A 2793 0 R +/Parent 2787 0 R +/Prev 2791 0 R +/First 2799 0 R +/Last 2799 0 R +/Count -1 +>> endobj +2791 0 obj << +/Title 2792 0 R +/A 2789 0 R +/Parent 2787 0 R +/Next 2795 0 R +>> endobj +2787 0 obj << +/Title 2788 0 R +/A 2785 0 R +/Parent 159 0 R +/Prev 2639 0 R +/Next 2803 0 R +/First 2791 0 R +/Last 2795 0 R +/Count -2 +>> endobj +2783 0 obj << +/Title 2784 0 R +/A 2781 0 R +/Parent 2727 0 R +/Prev 2779 0 R +>> endobj +2779 0 obj << +/Title 2780 0 R +/A 2777 0 R +/Parent 2727 0 R +/Prev 2775 0 R +/Next 2783 0 R +>> endobj +2775 0 obj << +/Title 2776 0 R +/A 2773 0 R +/Parent 2727 0 R +/Prev 2771 0 R +/Next 2779 0 R +>> endobj +2771 0 obj << +/Title 2772 0 R +/A 2769 0 R +/Parent 2727 0 R +/Prev 2767 0 R +/Next 2775 0 R +>> endobj +2767 0 obj << +/Title 2768 0 R +/A 2765 0 R +/Parent 2727 0 R +/Prev 2763 0 R +/Next 2771 0 R +>> endobj +2763 0 obj << +/Title 2764 0 R +/A 2761 0 R +/Parent 2727 0 R +/Prev 2759 0 R +/Next 2767 0 R +>> endobj +2759 0 obj << +/Title 2760 0 R +/A 2757 0 R +/Parent 2727 0 R +/Prev 2755 0 R +/Next 2763 0 R +>> endobj +2755 0 obj << +/Title 2756 0 R +/A 2753 0 R +/Parent 2727 0 R +/Prev 2751 0 R +/Next 2759 0 R +>> endobj +2751 0 obj << +/Title 2752 0 R +/A 2749 0 R +/Parent 2727 0 R +/Prev 2747 0 R +/Next 2755 0 R +>> endobj +2747 0 obj << +/Title 2748 0 R +/A 2745 0 R +/Parent 2727 0 R +/Prev 2743 0 R +/Next 2751 0 R +>> endobj +2743 0 obj << +/Title 2744 0 R +/A 2741 0 R +/Parent 2727 0 R +/Prev 2739 0 R +/Next 2747 0 R +>> endobj +2739 0 obj << +/Title 2740 0 R +/A 2737 0 R +/Parent 2727 0 R +/Prev 2735 0 R +/Next 2743 0 R +>> endobj +2735 0 obj << +/Title 2736 0 R +/A 2733 0 R +/Parent 2727 0 R +/Prev 2731 0 R +/Next 2739 0 R +>> endobj +2731 0 obj << +/Title 2732 0 R +/A 2729 0 R +/Parent 2727 0 R +/Next 2735 0 R +>> endobj +2727 0 obj << +/Title 2728 0 R +/A 2725 0 R +/Parent 2639 0 R +/Prev 2715 0 R +/First 2731 0 R +/Last 2783 0 R +/Count -14 +>> endobj +2723 0 obj << +/Title 2724 0 R +/A 2721 0 R +/Parent 2715 0 R +/Prev 2719 0 R +>> endobj +2719 0 obj << +/Title 2720 0 R +/A 2717 0 R +/Parent 2715 0 R +/Next 2723 0 R +>> endobj +2715 0 obj << +/Title 2716 0 R +/A 2713 0 R +/Parent 2639 0 R +/Prev 2655 0 R +/Next 2727 0 R +/First 2719 0 R +/Last 2723 0 R +/Count -2 +>> endobj +2711 0 obj << +/Title 2712 0 R +/A 2709 0 R +/Parent 2655 0 R +/Prev 2707 0 R +>> endobj +2707 0 obj << +/Title 2708 0 R +/A 2705 0 R +/Parent 2655 0 R +/Prev 2703 0 R +/Next 2711 0 R +>> endobj +2703 0 obj << +/Title 2704 0 R +/A 2701 0 R +/Parent 2655 0 R +/Prev 2699 0 R +/Next 2707 0 R +>> endobj +2699 0 obj << +/Title 2700 0 R +/A 2697 0 R +/Parent 2655 0 R +/Prev 2695 0 R +/Next 2703 0 R +>> endobj +2695 0 obj << +/Title 2696 0 R +/A 2693 0 R +/Parent 2655 0 R +/Prev 2691 0 R +/Next 2699 0 R +>> endobj +2691 0 obj << +/Title 2692 0 R +/A 2689 0 R +/Parent 2655 0 R +/Prev 2687 0 R +/Next 2695 0 R +>> endobj +2687 0 obj << +/Title 2688 0 R +/A 2685 0 R +/Parent 2655 0 R +/Prev 2683 0 R +/Next 2691 0 R +>> endobj +2683 0 obj << +/Title 2684 0 R +/A 2681 0 R +/Parent 2655 0 R +/Prev 2679 0 R +/Next 2687 0 R +>> endobj +2679 0 obj << +/Title 2680 0 R +/A 2677 0 R +/Parent 2655 0 R +/Prev 2675 0 R +/Next 2683 0 R +>> endobj +2675 0 obj << +/Title 2676 0 R +/A 2673 0 R +/Parent 2655 0 R +/Prev 2671 0 R +/Next 2679 0 R +>> endobj +2671 0 obj << +/Title 2672 0 R +/A 2669 0 R +/Parent 2655 0 R +/Prev 2667 0 R +/Next 2675 0 R +>> endobj +2667 0 obj << +/Title 2668 0 R +/A 2665 0 R +/Parent 2655 0 R +/Prev 2663 0 R +/Next 2671 0 R +>> endobj +2663 0 obj << +/Title 2664 0 R +/A 2661 0 R +/Parent 2655 0 R +/Prev 2659 0 R +/Next 2667 0 R +>> endobj +2659 0 obj << +/Title 2660 0 R +/A 2657 0 R +/Parent 2655 0 R +/Next 2663 0 R +>> endobj +2655 0 obj << +/Title 2656 0 R +/A 2653 0 R +/Parent 2639 0 R +/Prev 2647 0 R +/Next 2715 0 R +/First 2659 0 R +/Last 2711 0 R +/Count -14 +>> endobj +2651 0 obj << +/Title 2652 0 R +/A 2649 0 R +/Parent 2647 0 R +>> endobj +2647 0 obj << +/Title 2648 0 R +/A 2645 0 R +/Parent 2639 0 R +/Prev 2643 0 R +/Next 2655 0 R +/First 2651 0 R +/Last 2651 0 R +/Count -1 +>> endobj +2643 0 obj << +/Title 2644 0 R +/A 2641 0 R +/Parent 2639 0 R +/Next 2647 0 R +>> endobj +2639 0 obj << +/Title 2640 0 R +/A 2637 0 R +/Parent 159 0 R +/Prev 2591 0 R +/Next 2787 0 R +/First 2643 0 R +/Last 2727 0 R +/Count -5 +>> endobj +2635 0 obj << +/Title 2636 0 R +/A 2633 0 R +/Parent 2627 0 R +/Prev 2631 0 R +>> endobj +2631 0 obj << +/Title 2632 0 R +/A 2629 0 R +/Parent 2627 0 R +/Next 2635 0 R +>> endobj +2627 0 obj << +/Title 2628 0 R +/A 2625 0 R +/Parent 2591 0 R +/Prev 2607 0 R +/First 2631 0 R +/Last 2635 0 R +/Count -2 +>> endobj +2623 0 obj << +/Title 2624 0 R +/A 2621 0 R +/Parent 2607 0 R +/Prev 2619 0 R +>> endobj +2619 0 obj << +/Title 2620 0 R +/A 2617 0 R +/Parent 2607 0 R +/Prev 2615 0 R +/Next 2623 0 R +>> endobj +2615 0 obj << +/Title 2616 0 R +/A 2613 0 R +/Parent 2607 0 R +/Prev 2611 0 R +/Next 2619 0 R +>> endobj +2611 0 obj << +/Title 2612 0 R +/A 2609 0 R +/Parent 2607 0 R +/Next 2615 0 R +>> endobj +2607 0 obj << +/Title 2608 0 R +/A 2605 0 R +/Parent 2591 0 R +/Prev 2595 0 R +/Next 2627 0 R +/First 2611 0 R +/Last 2623 0 R +/Count -4 +>> endobj +2603 0 obj << +/Title 2604 0 R +/A 2601 0 R +/Parent 2595 0 R +/Prev 2599 0 R +>> endobj +2599 0 obj << +/Title 2600 0 R +/A 2597 0 R +/Parent 2595 0 R +/Next 2603 0 R +>> endobj +2595 0 obj << +/Title 2596 0 R +/A 2593 0 R +/Parent 2591 0 R +/Next 2607 0 R +/First 2599 0 R +/Last 2603 0 R +/Count -2 +>> endobj +2591 0 obj << +/Title 2592 0 R +/A 2589 0 R +/Parent 159 0 R +/Prev 2071 0 R +/Next 2639 0 R +/First 2595 0 R +/Last 2627 0 R +/Count -3 +>> endobj +2587 0 obj << +/Title 2588 0 R +/A 2585 0 R +/Parent 2407 0 R +/Prev 2583 0 R +>> endobj +2583 0 obj << +/Title 2584 0 R +/A 2581 0 R +/Parent 2407 0 R +/Prev 2579 0 R +/Next 2587 0 R +>> endobj +2579 0 obj << +/Title 2580 0 R +/A 2577 0 R +/Parent 2407 0 R +/Prev 2575 0 R +/Next 2583 0 R +>> endobj +2575 0 obj << +/Title 2576 0 R +/A 2573 0 R +/Parent 2407 0 R +/Prev 2571 0 R +/Next 2579 0 R +>> endobj +2571 0 obj << +/Title 2572 0 R +/A 2569 0 R +/Parent 2407 0 R +/Prev 2567 0 R +/Next 2575 0 R +>> endobj +2567 0 obj << +/Title 2568 0 R +/A 2565 0 R +/Parent 2407 0 R +/Prev 2563 0 R +/Next 2571 0 R +>> endobj +2563 0 obj << +/Title 2564 0 R +/A 2561 0 R +/Parent 2407 0 R +/Prev 2559 0 R +/Next 2567 0 R +>> endobj +2559 0 obj << +/Title 2560 0 R +/A 2557 0 R +/Parent 2407 0 R +/Prev 2555 0 R +/Next 2563 0 R +>> endobj +2555 0 obj << +/Title 2556 0 R +/A 2553 0 R +/Parent 2407 0 R +/Prev 2551 0 R +/Next 2559 0 R +>> endobj +2551 0 obj << +/Title 2552 0 R +/A 2549 0 R +/Parent 2407 0 R +/Prev 2547 0 R +/Next 2555 0 R +>> endobj +2547 0 obj << +/Title 2548 0 R +/A 2545 0 R +/Parent 2407 0 R +/Prev 2543 0 R +/Next 2551 0 R +>> endobj +2543 0 obj << +/Title 2544 0 R +/A 2541 0 R +/Parent 2407 0 R +/Prev 2539 0 R +/Next 2547 0 R +>> endobj +2539 0 obj << +/Title 2540 0 R +/A 2537 0 R +/Parent 2407 0 R +/Prev 2535 0 R +/Next 2543 0 R +>> endobj +2535 0 obj << +/Title 2536 0 R +/A 2533 0 R +/Parent 2407 0 R +/Prev 2531 0 R +/Next 2539 0 R +>> endobj +2531 0 obj << +/Title 2532 0 R +/A 2529 0 R +/Parent 2407 0 R +/Prev 2527 0 R +/Next 2535 0 R +>> endobj +2527 0 obj << +/Title 2528 0 R +/A 2525 0 R +/Parent 2407 0 R +/Prev 2523 0 R +/Next 2531 0 R +>> endobj +2523 0 obj << +/Title 2524 0 R +/A 2521 0 R +/Parent 2407 0 R +/Prev 2519 0 R +/Next 2527 0 R +>> endobj +2519 0 obj << +/Title 2520 0 R +/A 2517 0 R +/Parent 2407 0 R +/Prev 2515 0 R +/Next 2523 0 R +>> endobj +2515 0 obj << +/Title 2516 0 R +/A 2513 0 R +/Parent 2407 0 R +/Prev 2511 0 R +/Next 2519 0 R +>> endobj +2511 0 obj << +/Title 2512 0 R +/A 2509 0 R +/Parent 2407 0 R +/Prev 2507 0 R +/Next 2515 0 R +>> endobj +2507 0 obj << +/Title 2508 0 R +/A 2505 0 R +/Parent 2407 0 R +/Prev 2503 0 R +/Next 2511 0 R +>> endobj +2503 0 obj << +/Title 2504 0 R +/A 2501 0 R +/Parent 2407 0 R +/Prev 2499 0 R +/Next 2507 0 R +>> endobj +2499 0 obj << +/Title 2500 0 R +/A 2497 0 R +/Parent 2407 0 R +/Prev 2495 0 R +/Next 2503 0 R +>> endobj +2495 0 obj << +/Title 2496 0 R +/A 2493 0 R +/Parent 2407 0 R +/Prev 2491 0 R +/Next 2499 0 R +>> endobj +2491 0 obj << +/Title 2492 0 R +/A 2489 0 R +/Parent 2407 0 R +/Prev 2487 0 R +/Next 2495 0 R +>> endobj +2487 0 obj << +/Title 2488 0 R +/A 2485 0 R +/Parent 2407 0 R +/Prev 2483 0 R +/Next 2491 0 R +>> endobj +2483 0 obj << +/Title 2484 0 R +/A 2481 0 R +/Parent 2407 0 R +/Prev 2479 0 R +/Next 2487 0 R +>> endobj +2479 0 obj << +/Title 2480 0 R +/A 2477 0 R +/Parent 2407 0 R +/Prev 2475 0 R +/Next 2483 0 R +>> endobj +2475 0 obj << +/Title 2476 0 R +/A 2473 0 R +/Parent 2407 0 R +/Prev 2471 0 R +/Next 2479 0 R +>> endobj +2471 0 obj << +/Title 2472 0 R +/A 2469 0 R +/Parent 2407 0 R +/Prev 2467 0 R +/Next 2475 0 R +>> endobj +2467 0 obj << +/Title 2468 0 R +/A 2465 0 R +/Parent 2407 0 R +/Prev 2463 0 R +/Next 2471 0 R +>> endobj +2463 0 obj << +/Title 2464 0 R +/A 2461 0 R +/Parent 2407 0 R +/Prev 2459 0 R +/Next 2467 0 R +>> endobj +2459 0 obj << +/Title 2460 0 R +/A 2457 0 R +/Parent 2407 0 R +/Prev 2455 0 R +/Next 2463 0 R +>> endobj +2455 0 obj << +/Title 2456 0 R +/A 2453 0 R +/Parent 2407 0 R +/Prev 2451 0 R +/Next 2459 0 R +>> endobj +2451 0 obj << +/Title 2452 0 R +/A 2449 0 R +/Parent 2407 0 R +/Prev 2447 0 R +/Next 2455 0 R +>> endobj +2447 0 obj << +/Title 2448 0 R +/A 2445 0 R +/Parent 2407 0 R +/Prev 2443 0 R +/Next 2451 0 R +>> endobj +2443 0 obj << +/Title 2444 0 R +/A 2441 0 R +/Parent 2407 0 R +/Prev 2439 0 R +/Next 2447 0 R +>> endobj +2439 0 obj << +/Title 2440 0 R +/A 2437 0 R +/Parent 2407 0 R +/Prev 2435 0 R +/Next 2443 0 R +>> endobj +2435 0 obj << +/Title 2436 0 R +/A 2433 0 R +/Parent 2407 0 R +/Prev 2431 0 R +/Next 2439 0 R +>> endobj +2431 0 obj << +/Title 2432 0 R +/A 2429 0 R +/Parent 2407 0 R +/Prev 2427 0 R +/Next 2435 0 R +>> endobj +2427 0 obj << +/Title 2428 0 R +/A 2425 0 R +/Parent 2407 0 R +/Prev 2423 0 R +/Next 2431 0 R +>> endobj +2423 0 obj << +/Title 2424 0 R +/A 2421 0 R +/Parent 2407 0 R +/Prev 2419 0 R +/Next 2427 0 R +>> endobj +2419 0 obj << +/Title 2420 0 R +/A 2417 0 R +/Parent 2407 0 R +/Prev 2415 0 R +/Next 2423 0 R +>> endobj +2415 0 obj << +/Title 2416 0 R +/A 2413 0 R +/Parent 2407 0 R +/Prev 2411 0 R +/Next 2419 0 R +>> endobj +2411 0 obj << +/Title 2412 0 R +/A 2409 0 R +/Parent 2407 0 R +/Next 2415 0 R +>> endobj +2407 0 obj << +/Title 2408 0 R +/A 2405 0 R +/Parent 2071 0 R +/Prev 2335 0 R +/First 2411 0 R +/Last 2587 0 R +/Count -45 +>> endobj +2403 0 obj << +/Title 2404 0 R +/A 2401 0 R +/Parent 2335 0 R +/Prev 2399 0 R +>> endobj +2399 0 obj << +/Title 2400 0 R +/A 2397 0 R +/Parent 2335 0 R +/Prev 2395 0 R +/Next 2403 0 R +>> endobj +2395 0 obj << +/Title 2396 0 R +/A 2393 0 R +/Parent 2335 0 R +/Prev 2391 0 R +/Next 2399 0 R +>> endobj +2391 0 obj << +/Title 2392 0 R +/A 2389 0 R +/Parent 2335 0 R +/Prev 2387 0 R +/Next 2395 0 R +>> endobj +2387 0 obj << +/Title 2388 0 R +/A 2385 0 R +/Parent 2335 0 R +/Prev 2383 0 R +/Next 2391 0 R +>> endobj +2383 0 obj << +/Title 2384 0 R +/A 2381 0 R +/Parent 2335 0 R +/Prev 2379 0 R +/Next 2387 0 R +>> endobj +2379 0 obj << +/Title 2380 0 R +/A 2377 0 R +/Parent 2335 0 R +/Prev 2375 0 R +/Next 2383 0 R +>> endobj +2375 0 obj << +/Title 2376 0 R +/A 2373 0 R +/Parent 2335 0 R +/Prev 2371 0 R +/Next 2379 0 R +>> endobj +2371 0 obj << +/Title 2372 0 R +/A 2369 0 R +/Parent 2335 0 R +/Prev 2367 0 R +/Next 2375 0 R +>> endobj +2367 0 obj << +/Title 2368 0 R +/A 2365 0 R +/Parent 2335 0 R +/Prev 2363 0 R +/Next 2371 0 R +>> endobj +2363 0 obj << +/Title 2364 0 R +/A 2361 0 R +/Parent 2335 0 R +/Prev 2359 0 R +/Next 2367 0 R +>> endobj +2359 0 obj << +/Title 2360 0 R +/A 2357 0 R +/Parent 2335 0 R +/Prev 2355 0 R +/Next 2363 0 R +>> endobj +2355 0 obj << +/Title 2356 0 R +/A 2353 0 R +/Parent 2335 0 R +/Prev 2351 0 R +/Next 2359 0 R +>> endobj +2351 0 obj << +/Title 2352 0 R +/A 2349 0 R +/Parent 2335 0 R +/Prev 2347 0 R +/Next 2355 0 R +>> endobj +2347 0 obj << +/Title 2348 0 R +/A 2345 0 R +/Parent 2335 0 R +/Prev 2343 0 R +/Next 2351 0 R +>> endobj +2343 0 obj << +/Title 2344 0 R +/A 2341 0 R +/Parent 2335 0 R +/Prev 2339 0 R +/Next 2347 0 R +>> endobj +2339 0 obj << +/Title 2340 0 R +/A 2337 0 R +/Parent 2335 0 R +/Next 2343 0 R +>> endobj +2335 0 obj << +/Title 2336 0 R +/A 2333 0 R +/Parent 2071 0 R +/Prev 2079 0 R +/Next 2407 0 R +/First 2339 0 R +/Last 2403 0 R +/Count -17 +>> endobj +2331 0 obj << +/Title 2332 0 R +/A 2329 0 R +/Parent 2079 0 R +/Prev 2327 0 R +>> endobj +2327 0 obj << +/Title 2328 0 R +/A 2325 0 R +/Parent 2079 0 R +/Prev 2323 0 R +/Next 2331 0 R +>> endobj +2323 0 obj << +/Title 2324 0 R +/A 2321 0 R +/Parent 2079 0 R +/Prev 2319 0 R +/Next 2327 0 R +>> endobj +2319 0 obj << +/Title 2320 0 R +/A 2317 0 R +/Parent 2079 0 R +/Prev 2315 0 R +/Next 2323 0 R +>> endobj +2315 0 obj << +/Title 2316 0 R +/A 2313 0 R +/Parent 2079 0 R +/Prev 2311 0 R +/Next 2319 0 R +>> endobj +2311 0 obj << +/Title 2312 0 R +/A 2309 0 R +/Parent 2079 0 R +/Prev 2307 0 R +/Next 2315 0 R +>> endobj +2307 0 obj << +/Title 2308 0 R +/A 2305 0 R +/Parent 2079 0 R +/Prev 2303 0 R +/Next 2311 0 R +>> endobj +2303 0 obj << +/Title 2304 0 R +/A 2301 0 R +/Parent 2079 0 R +/Prev 2299 0 R +/Next 2307 0 R +>> endobj +2299 0 obj << +/Title 2300 0 R +/A 2297 0 R +/Parent 2079 0 R +/Prev 2295 0 R +/Next 2303 0 R +>> endobj +2295 0 obj << +/Title 2296 0 R +/A 2293 0 R +/Parent 2079 0 R +/Prev 2291 0 R +/Next 2299 0 R +>> endobj +2291 0 obj << +/Title 2292 0 R +/A 2289 0 R +/Parent 2079 0 R +/Prev 2287 0 R +/Next 2295 0 R +>> endobj +2287 0 obj << +/Title 2288 0 R +/A 2285 0 R +/Parent 2079 0 R +/Prev 2283 0 R +/Next 2291 0 R +>> endobj +2283 0 obj << +/Title 2284 0 R +/A 2281 0 R +/Parent 2079 0 R +/Prev 2279 0 R +/Next 2287 0 R +>> endobj +2279 0 obj << +/Title 2280 0 R +/A 2277 0 R +/Parent 2079 0 R +/Prev 2275 0 R +/Next 2283 0 R +>> endobj +2275 0 obj << +/Title 2276 0 R +/A 2273 0 R +/Parent 2079 0 R +/Prev 2271 0 R +/Next 2279 0 R +>> endobj +2271 0 obj << +/Title 2272 0 R +/A 2269 0 R +/Parent 2079 0 R +/Prev 2267 0 R +/Next 2275 0 R +>> endobj +2267 0 obj << +/Title 2268 0 R +/A 2265 0 R +/Parent 2079 0 R +/Prev 2263 0 R +/Next 2271 0 R +>> endobj +2263 0 obj << +/Title 2264 0 R +/A 2261 0 R +/Parent 2079 0 R +/Prev 2259 0 R +/Next 2267 0 R +>> endobj +2259 0 obj << +/Title 2260 0 R +/A 2257 0 R +/Parent 2079 0 R +/Prev 2255 0 R +/Next 2263 0 R +>> endobj +2255 0 obj << +/Title 2256 0 R +/A 2253 0 R +/Parent 2079 0 R +/Prev 2251 0 R +/Next 2259 0 R +>> endobj +2251 0 obj << +/Title 2252 0 R +/A 2249 0 R +/Parent 2079 0 R +/Prev 2247 0 R +/Next 2255 0 R +>> endobj +2247 0 obj << +/Title 2248 0 R +/A 2245 0 R +/Parent 2079 0 R +/Prev 2243 0 R +/Next 2251 0 R +>> endobj +2243 0 obj << +/Title 2244 0 R +/A 2241 0 R +/Parent 2079 0 R +/Prev 2239 0 R +/Next 2247 0 R +>> endobj +2239 0 obj << +/Title 2240 0 R +/A 2237 0 R +/Parent 2079 0 R +/Prev 2235 0 R +/Next 2243 0 R +>> endobj +2235 0 obj << +/Title 2236 0 R +/A 2233 0 R +/Parent 2079 0 R +/Prev 2231 0 R +/Next 2239 0 R +>> endobj +2231 0 obj << +/Title 2232 0 R +/A 2229 0 R +/Parent 2079 0 R +/Prev 2227 0 R +/Next 2235 0 R +>> endobj +2227 0 obj << +/Title 2228 0 R +/A 2225 0 R +/Parent 2079 0 R +/Prev 2223 0 R +/Next 2231 0 R +>> endobj +2223 0 obj << +/Title 2224 0 R +/A 2221 0 R +/Parent 2079 0 R +/Prev 2219 0 R +/Next 2227 0 R +>> endobj +2219 0 obj << +/Title 2220 0 R +/A 2217 0 R +/Parent 2079 0 R +/Prev 2215 0 R +/Next 2223 0 R +>> endobj +2215 0 obj << +/Title 2216 0 R +/A 2213 0 R +/Parent 2079 0 R +/Prev 2211 0 R +/Next 2219 0 R +>> endobj +2211 0 obj << +/Title 2212 0 R +/A 2209 0 R +/Parent 2079 0 R +/Prev 2207 0 R +/Next 2215 0 R +>> endobj +2207 0 obj << +/Title 2208 0 R +/A 2205 0 R +/Parent 2079 0 R +/Prev 2203 0 R +/Next 2211 0 R +>> endobj +2203 0 obj << +/Title 2204 0 R +/A 2201 0 R +/Parent 2079 0 R +/Prev 2199 0 R +/Next 2207 0 R +>> endobj +2199 0 obj << +/Title 2200 0 R +/A 2197 0 R +/Parent 2079 0 R +/Prev 2195 0 R +/Next 2203 0 R +>> endobj +2195 0 obj << +/Title 2196 0 R +/A 2193 0 R +/Parent 2079 0 R +/Prev 2191 0 R +/Next 2199 0 R +>> endobj +2191 0 obj << +/Title 2192 0 R +/A 2189 0 R +/Parent 2079 0 R +/Prev 2187 0 R +/Next 2195 0 R +>> endobj +2187 0 obj << +/Title 2188 0 R +/A 2185 0 R +/Parent 2079 0 R +/Prev 2183 0 R +/Next 2191 0 R +>> endobj +2183 0 obj << +/Title 2184 0 R +/A 2181 0 R +/Parent 2079 0 R +/Prev 2179 0 R +/Next 2187 0 R +>> endobj +2179 0 obj << +/Title 2180 0 R +/A 2177 0 R +/Parent 2079 0 R +/Prev 2175 0 R +/Next 2183 0 R +>> endobj +2175 0 obj << +/Title 2176 0 R +/A 2173 0 R +/Parent 2079 0 R +/Prev 2171 0 R +/Next 2179 0 R +>> endobj +2171 0 obj << +/Title 2172 0 R +/A 2169 0 R +/Parent 2079 0 R +/Prev 2167 0 R +/Next 2175 0 R +>> endobj +2167 0 obj << +/Title 2168 0 R +/A 2165 0 R +/Parent 2079 0 R +/Prev 2163 0 R +/Next 2171 0 R +>> endobj +2163 0 obj << +/Title 2164 0 R +/A 2161 0 R +/Parent 2079 0 R +/Prev 2159 0 R +/Next 2167 0 R +>> endobj +2159 0 obj << +/Title 2160 0 R +/A 2157 0 R +/Parent 2079 0 R +/Prev 2155 0 R +/Next 2163 0 R +>> endobj +2155 0 obj << +/Title 2156 0 R +/A 2153 0 R +/Parent 2079 0 R +/Prev 2151 0 R +/Next 2159 0 R +>> endobj +2151 0 obj << +/Title 2152 0 R +/A 2149 0 R +/Parent 2079 0 R +/Prev 2147 0 R +/Next 2155 0 R +>> endobj +2147 0 obj << +/Title 2148 0 R +/A 2145 0 R +/Parent 2079 0 R +/Prev 2143 0 R +/Next 2151 0 R +>> endobj +2143 0 obj << +/Title 2144 0 R +/A 2141 0 R +/Parent 2079 0 R +/Prev 2139 0 R +/Next 2147 0 R +>> endobj +2139 0 obj << +/Title 2140 0 R +/A 2137 0 R +/Parent 2079 0 R +/Prev 2135 0 R +/Next 2143 0 R +>> endobj +2135 0 obj << +/Title 2136 0 R +/A 2133 0 R +/Parent 2079 0 R +/Prev 2131 0 R +/Next 2139 0 R +>> endobj +2131 0 obj << +/Title 2132 0 R +/A 2129 0 R +/Parent 2079 0 R +/Prev 2127 0 R +/Next 2135 0 R +>> endobj +2127 0 obj << +/Title 2128 0 R +/A 2125 0 R +/Parent 2079 0 R +/Prev 2123 0 R +/Next 2131 0 R +>> endobj +2123 0 obj << +/Title 2124 0 R +/A 2121 0 R +/Parent 2079 0 R +/Prev 2119 0 R +/Next 2127 0 R +>> endobj +2119 0 obj << +/Title 2120 0 R +/A 2117 0 R +/Parent 2079 0 R +/Prev 2115 0 R +/Next 2123 0 R +>> endobj +2115 0 obj << +/Title 2116 0 R +/A 2113 0 R +/Parent 2079 0 R +/Prev 2111 0 R +/Next 2119 0 R +>> endobj +2111 0 obj << +/Title 2112 0 R +/A 2109 0 R +/Parent 2079 0 R +/Prev 2107 0 R +/Next 2115 0 R +>> endobj +2107 0 obj << +/Title 2108 0 R +/A 2105 0 R +/Parent 2079 0 R +/Prev 2103 0 R +/Next 2111 0 R +>> endobj +2103 0 obj << +/Title 2104 0 R +/A 2101 0 R +/Parent 2079 0 R +/Prev 2099 0 R +/Next 2107 0 R +>> endobj +2099 0 obj << +/Title 2100 0 R +/A 2097 0 R +/Parent 2079 0 R +/Prev 2095 0 R +/Next 2103 0 R +>> endobj +2095 0 obj << +/Title 2096 0 R +/A 2093 0 R +/Parent 2079 0 R +/Prev 2091 0 R +/Next 2099 0 R +>> endobj +2091 0 obj << +/Title 2092 0 R +/A 2089 0 R +/Parent 2079 0 R +/Prev 2087 0 R +/Next 2095 0 R +>> endobj +2087 0 obj << +/Title 2088 0 R +/A 2085 0 R +/Parent 2079 0 R +/Prev 2083 0 R +/Next 2091 0 R +>> endobj +2083 0 obj << +/Title 2084 0 R +/A 2081 0 R +/Parent 2079 0 R +/Next 2087 0 R +>> endobj +2079 0 obj << +/Title 2080 0 R +/A 2077 0 R +/Parent 2071 0 R +/Prev 2075 0 R +/Next 2335 0 R +/First 2083 0 R +/Last 2331 0 R +/Count -63 +>> endobj +2075 0 obj << +/Title 2076 0 R +/A 2073 0 R +/Parent 2071 0 R +/Next 2079 0 R +>> endobj +2071 0 obj << +/Title 2072 0 R +/A 2069 0 R +/Parent 159 0 R +/Prev 2027 0 R +/Next 2591 0 R +/First 2075 0 R +/Last 2407 0 R +/Count -4 +>> endobj +2067 0 obj << +/Title 2068 0 R +/A 2065 0 R +/Parent 2063 0 R +>> endobj +2063 0 obj << +/Title 2064 0 R +/A 2061 0 R +/Parent 2027 0 R +/Prev 2051 0 R +/First 2067 0 R +/Last 2067 0 R +/Count -1 +>> endobj +2059 0 obj << +/Title 2060 0 R +/A 2057 0 R +/Parent 2051 0 R +/Prev 2055 0 R +>> endobj +2055 0 obj << +/Title 2056 0 R +/A 2053 0 R +/Parent 2051 0 R +/Next 2059 0 R +>> endobj +2051 0 obj << +/Title 2052 0 R +/A 2049 0 R +/Parent 2027 0 R +/Prev 2043 0 R +/Next 2063 0 R +/First 2055 0 R +/Last 2059 0 R +/Count -2 +>> endobj +2047 0 obj << +/Title 2048 0 R +/A 2045 0 R +/Parent 2043 0 R +>> endobj +2043 0 obj << +/Title 2044 0 R +/A 2041 0 R +/Parent 2027 0 R +/Prev 2035 0 R +/Next 2051 0 R +/First 2047 0 R +/Last 2047 0 R +/Count -1 +>> endobj +2039 0 obj << +/Title 2040 0 R +/A 2037 0 R +/Parent 2035 0 R +>> endobj +2035 0 obj << +/Title 2036 0 R +/A 2033 0 R +/Parent 2027 0 R +/Prev 2031 0 R +/Next 2043 0 R +/First 2039 0 R +/Last 2039 0 R +/Count -1 +>> endobj +2031 0 obj << +/Title 2032 0 R +/A 2029 0 R +/Parent 2027 0 R +/Next 2035 0 R +>> endobj +2027 0 obj << +/Title 2028 0 R +/A 2025 0 R +/Parent 159 0 R +/Prev 1983 0 R +/Next 2071 0 R +/First 2031 0 R +/Last 2063 0 R +/Count -5 +>> endobj +2023 0 obj << +/Title 2024 0 R +/A 2021 0 R +/Parent 2019 0 R +>> endobj +2019 0 obj << +/Title 2020 0 R +/A 2017 0 R +/Parent 1983 0 R +/Prev 2003 0 R +/First 2023 0 R +/Last 2023 0 R +/Count -1 +>> endobj +2015 0 obj << +/Title 2016 0 R +/A 2013 0 R +/Parent 2003 0 R +/Prev 2011 0 R +>> endobj +2011 0 obj << +/Title 2012 0 R +/A 2009 0 R +/Parent 2003 0 R +/Prev 2007 0 R +/Next 2015 0 R +>> endobj +2007 0 obj << +/Title 2008 0 R +/A 2005 0 R +/Parent 2003 0 R +/Next 2011 0 R +>> endobj +2003 0 obj << +/Title 2004 0 R +/A 2001 0 R +/Parent 1983 0 R +/Prev 1991 0 R +/Next 2019 0 R +/First 2007 0 R +/Last 2015 0 R +/Count -3 +>> endobj +1999 0 obj << +/Title 2000 0 R +/A 1997 0 R +/Parent 1991 0 R +/Prev 1995 0 R +>> endobj +1995 0 obj << +/Title 1996 0 R +/A 1993 0 R +/Parent 1991 0 R +/Next 1999 0 R +>> endobj +1991 0 obj << +/Title 1992 0 R +/A 1989 0 R +/Parent 1983 0 R +/Prev 1987 0 R +/Next 2003 0 R +/First 1995 0 R +/Last 1999 0 R +/Count -2 +>> endobj +1987 0 obj << +/Title 1988 0 R +/A 1985 0 R +/Parent 1983 0 R +/Next 1991 0 R +>> endobj +1983 0 obj << +/Title 1984 0 R +/A 1981 0 R +/Parent 159 0 R +/Prev 1919 0 R +/Next 2027 0 R +/First 1987 0 R +/Last 2019 0 R +/Count -4 +>> endobj +1979 0 obj << +/Title 1980 0 R +/A 1977 0 R +/Parent 1939 0 R +/Prev 1975 0 R +>> endobj +1975 0 obj << +/Title 1976 0 R +/A 1973 0 R +/Parent 1939 0 R +/Prev 1971 0 R +/Next 1979 0 R +>> endobj +1971 0 obj << +/Title 1972 0 R +/A 1969 0 R +/Parent 1939 0 R +/Prev 1967 0 R +/Next 1975 0 R +>> endobj +1967 0 obj << +/Title 1968 0 R +/A 1965 0 R +/Parent 1939 0 R +/Prev 1963 0 R +/Next 1971 0 R +>> endobj +1963 0 obj << +/Title 1964 0 R +/A 1961 0 R +/Parent 1939 0 R +/Prev 1959 0 R +/Next 1967 0 R +>> endobj +1959 0 obj << +/Title 1960 0 R +/A 1957 0 R +/Parent 1939 0 R +/Prev 1955 0 R +/Next 1963 0 R +>> endobj +1955 0 obj << +/Title 1956 0 R +/A 1953 0 R +/Parent 1939 0 R +/Prev 1951 0 R +/Next 1959 0 R +>> endobj +1951 0 obj << +/Title 1952 0 R +/A 1949 0 R +/Parent 1939 0 R +/Prev 1947 0 R +/Next 1955 0 R +>> endobj +1947 0 obj << +/Title 1948 0 R +/A 1945 0 R +/Parent 1939 0 R +/Prev 1943 0 R +/Next 1951 0 R +>> endobj +1943 0 obj << +/Title 1944 0 R +/A 1941 0 R +/Parent 1939 0 R +/Next 1947 0 R +>> endobj +1939 0 obj << +/Title 1940 0 R +/A 1937 0 R +/Parent 1919 0 R +/Prev 1927 0 R +/First 1943 0 R +/Last 1979 0 R +/Count -10 +>> endobj +1935 0 obj << +/Title 1936 0 R +/A 1933 0 R +/Parent 1927 0 R +/Prev 1931 0 R +>> endobj +1931 0 obj << +/Title 1932 0 R +/A 1929 0 R +/Parent 1927 0 R +/Next 1935 0 R +>> endobj +1927 0 obj << +/Title 1928 0 R +/A 1925 0 R +/Parent 1919 0 R +/Prev 1923 0 R +/Next 1939 0 R +/First 1931 0 R +/Last 1935 0 R +/Count -2 +>> endobj +1923 0 obj << +/Title 1924 0 R +/A 1921 0 R +/Parent 1919 0 R +/Next 1927 0 R +>> endobj +1919 0 obj << +/Title 1920 0 R +/A 1917 0 R +/Parent 159 0 R +/Prev 1643 0 R +/Next 1983 0 R +/First 1923 0 R +/Last 1939 0 R +/Count -3 +>> endobj +1915 0 obj << +/Title 1916 0 R +/A 1913 0 R +/Parent 1651 0 R +/Prev 1911 0 R +>> endobj +1911 0 obj << +/Title 1912 0 R +/A 1909 0 R +/Parent 1651 0 R +/Prev 1907 0 R +/Next 1915 0 R +>> endobj +1907 0 obj << +/Title 1908 0 R +/A 1905 0 R +/Parent 1651 0 R +/Prev 1903 0 R +/Next 1911 0 R +>> endobj +1903 0 obj << +/Title 1904 0 R +/A 1901 0 R +/Parent 1651 0 R +/Prev 1899 0 R +/Next 1907 0 R +>> endobj +1899 0 obj << +/Title 1900 0 R +/A 1897 0 R +/Parent 1651 0 R +/Prev 1895 0 R +/Next 1903 0 R +>> endobj +1895 0 obj << +/Title 1896 0 R +/A 1893 0 R +/Parent 1651 0 R +/Prev 1891 0 R +/Next 1899 0 R +>> endobj +1891 0 obj << +/Title 1892 0 R +/A 1889 0 R +/Parent 1651 0 R +/Prev 1887 0 R +/Next 1895 0 R +>> endobj +1887 0 obj << +/Title 1888 0 R +/A 1885 0 R +/Parent 1651 0 R +/Prev 1883 0 R +/Next 1891 0 R +>> endobj +1883 0 obj << +/Title 1884 0 R +/A 1881 0 R +/Parent 1651 0 R +/Prev 1879 0 R +/Next 1887 0 R +>> endobj +1879 0 obj << +/Title 1880 0 R +/A 1877 0 R +/Parent 1651 0 R +/Prev 1875 0 R +/Next 1883 0 R +>> endobj +1875 0 obj << +/Title 1876 0 R +/A 1873 0 R +/Parent 1651 0 R +/Prev 1871 0 R +/Next 1879 0 R +>> endobj +1871 0 obj << +/Title 1872 0 R +/A 1869 0 R +/Parent 1651 0 R +/Prev 1867 0 R +/Next 1875 0 R +>> endobj +1867 0 obj << +/Title 1868 0 R +/A 1865 0 R +/Parent 1651 0 R +/Prev 1863 0 R +/Next 1871 0 R +>> endobj +1863 0 obj << +/Title 1864 0 R +/A 1861 0 R +/Parent 1651 0 R +/Prev 1859 0 R +/Next 1867 0 R +>> endobj +1859 0 obj << +/Title 1860 0 R +/A 1857 0 R +/Parent 1651 0 R +/Prev 1855 0 R +/Next 1863 0 R +>> endobj +1855 0 obj << +/Title 1856 0 R +/A 1853 0 R +/Parent 1651 0 R +/Prev 1851 0 R +/Next 1859 0 R +>> endobj +1851 0 obj << +/Title 1852 0 R +/A 1849 0 R +/Parent 1651 0 R +/Prev 1847 0 R +/Next 1855 0 R +>> endobj +1847 0 obj << +/Title 1848 0 R +/A 1845 0 R +/Parent 1651 0 R +/Prev 1843 0 R +/Next 1851 0 R +>> endobj +1843 0 obj << +/Title 1844 0 R +/A 1841 0 R +/Parent 1651 0 R +/Prev 1839 0 R +/Next 1847 0 R +>> endobj +1839 0 obj << +/Title 1840 0 R +/A 1837 0 R +/Parent 1651 0 R +/Prev 1835 0 R +/Next 1843 0 R +>> endobj +1835 0 obj << +/Title 1836 0 R +/A 1833 0 R +/Parent 1651 0 R +/Prev 1831 0 R +/Next 1839 0 R +>> endobj +1831 0 obj << +/Title 1832 0 R +/A 1829 0 R +/Parent 1651 0 R +/Prev 1827 0 R +/Next 1835 0 R +>> endobj +1827 0 obj << +/Title 1828 0 R +/A 1825 0 R +/Parent 1651 0 R +/Prev 1823 0 R +/Next 1831 0 R +>> endobj +1823 0 obj << +/Title 1824 0 R +/A 1821 0 R +/Parent 1651 0 R +/Prev 1819 0 R +/Next 1827 0 R +>> endobj +1819 0 obj << +/Title 1820 0 R +/A 1817 0 R +/Parent 1651 0 R +/Prev 1815 0 R +/Next 1823 0 R +>> endobj +1815 0 obj << +/Title 1816 0 R +/A 1813 0 R +/Parent 1651 0 R +/Prev 1811 0 R +/Next 1819 0 R +>> endobj +1811 0 obj << +/Title 1812 0 R +/A 1809 0 R +/Parent 1651 0 R +/Prev 1807 0 R +/Next 1815 0 R +>> endobj +1807 0 obj << +/Title 1808 0 R +/A 1805 0 R +/Parent 1651 0 R +/Prev 1803 0 R +/Next 1811 0 R +>> endobj +1803 0 obj << +/Title 1804 0 R +/A 1801 0 R +/Parent 1651 0 R +/Prev 1799 0 R +/Next 1807 0 R +>> endobj +1799 0 obj << +/Title 1800 0 R +/A 1797 0 R +/Parent 1651 0 R +/Prev 1795 0 R +/Next 1803 0 R +>> endobj +1795 0 obj << +/Title 1796 0 R +/A 1793 0 R +/Parent 1651 0 R +/Prev 1791 0 R +/Next 1799 0 R +>> endobj +1791 0 obj << +/Title 1792 0 R +/A 1789 0 R +/Parent 1651 0 R +/Prev 1787 0 R +/Next 1795 0 R +>> endobj +1787 0 obj << +/Title 1788 0 R +/A 1785 0 R +/Parent 1651 0 R +/Prev 1783 0 R +/Next 1791 0 R +>> endobj +1783 0 obj << +/Title 1784 0 R +/A 1781 0 R +/Parent 1651 0 R +/Prev 1779 0 R +/Next 1787 0 R +>> endobj +1779 0 obj << +/Title 1780 0 R +/A 1777 0 R +/Parent 1651 0 R +/Prev 1775 0 R +/Next 1783 0 R +>> endobj +1775 0 obj << +/Title 1776 0 R +/A 1773 0 R +/Parent 1651 0 R +/Prev 1771 0 R +/Next 1779 0 R +>> endobj +1771 0 obj << +/Title 1772 0 R +/A 1769 0 R +/Parent 1651 0 R +/Prev 1767 0 R +/Next 1775 0 R +>> endobj +1767 0 obj << +/Title 1768 0 R +/A 1765 0 R +/Parent 1651 0 R +/Prev 1763 0 R +/Next 1771 0 R +>> endobj +1763 0 obj << +/Title 1764 0 R +/A 1761 0 R +/Parent 1651 0 R +/Prev 1759 0 R +/Next 1767 0 R +>> endobj +1759 0 obj << +/Title 1760 0 R +/A 1757 0 R +/Parent 1651 0 R +/Prev 1755 0 R +/Next 1763 0 R +>> endobj +1755 0 obj << +/Title 1756 0 R +/A 1753 0 R +/Parent 1651 0 R +/Prev 1751 0 R +/Next 1759 0 R +>> endobj +1751 0 obj << +/Title 1752 0 R +/A 1749 0 R +/Parent 1651 0 R +/Prev 1747 0 R +/Next 1755 0 R +>> endobj +1747 0 obj << +/Title 1748 0 R +/A 1745 0 R +/Parent 1651 0 R +/Prev 1743 0 R +/Next 1751 0 R +>> endobj +1743 0 obj << +/Title 1744 0 R +/A 1741 0 R +/Parent 1651 0 R +/Prev 1739 0 R +/Next 1747 0 R +>> endobj +1739 0 obj << +/Title 1740 0 R +/A 1737 0 R +/Parent 1651 0 R +/Prev 1735 0 R +/Next 1743 0 R +>> endobj +1735 0 obj << +/Title 1736 0 R +/A 1733 0 R +/Parent 1651 0 R +/Prev 1731 0 R +/Next 1739 0 R +>> endobj +1731 0 obj << +/Title 1732 0 R +/A 1729 0 R +/Parent 1651 0 R +/Prev 1727 0 R +/Next 1735 0 R +>> endobj +1727 0 obj << +/Title 1728 0 R +/A 1725 0 R +/Parent 1651 0 R +/Prev 1723 0 R +/Next 1731 0 R +>> endobj +1723 0 obj << +/Title 1724 0 R +/A 1721 0 R +/Parent 1651 0 R +/Prev 1719 0 R +/Next 1727 0 R +>> endobj +1719 0 obj << +/Title 1720 0 R +/A 1717 0 R +/Parent 1651 0 R +/Prev 1715 0 R +/Next 1723 0 R +>> endobj +1715 0 obj << +/Title 1716 0 R +/A 1713 0 R +/Parent 1651 0 R +/Prev 1711 0 R +/Next 1719 0 R +>> endobj +1711 0 obj << +/Title 1712 0 R +/A 1709 0 R +/Parent 1651 0 R +/Prev 1707 0 R +/Next 1715 0 R +>> endobj +1707 0 obj << +/Title 1708 0 R +/A 1705 0 R +/Parent 1651 0 R +/Prev 1703 0 R +/Next 1711 0 R +>> endobj +1703 0 obj << +/Title 1704 0 R +/A 1701 0 R +/Parent 1651 0 R +/Prev 1699 0 R +/Next 1707 0 R +>> endobj +1699 0 obj << +/Title 1700 0 R +/A 1697 0 R +/Parent 1651 0 R +/Prev 1695 0 R +/Next 1703 0 R +>> endobj +1695 0 obj << +/Title 1696 0 R +/A 1693 0 R +/Parent 1651 0 R +/Prev 1691 0 R +/Next 1699 0 R +>> endobj +1691 0 obj << +/Title 1692 0 R +/A 1689 0 R +/Parent 1651 0 R +/Prev 1687 0 R +/Next 1695 0 R +>> endobj +1687 0 obj << +/Title 1688 0 R +/A 1685 0 R +/Parent 1651 0 R +/Prev 1683 0 R +/Next 1691 0 R +>> endobj +1683 0 obj << +/Title 1684 0 R +/A 1681 0 R +/Parent 1651 0 R +/Prev 1679 0 R +/Next 1687 0 R +>> endobj +1679 0 obj << +/Title 1680 0 R +/A 1677 0 R +/Parent 1651 0 R +/Prev 1675 0 R +/Next 1683 0 R +>> endobj +1675 0 obj << +/Title 1676 0 R +/A 1673 0 R +/Parent 1651 0 R +/Prev 1671 0 R +/Next 1679 0 R +>> endobj +1671 0 obj << +/Title 1672 0 R +/A 1669 0 R +/Parent 1651 0 R +/Prev 1667 0 R +/Next 1675 0 R +>> endobj +1667 0 obj << +/Title 1668 0 R +/A 1665 0 R +/Parent 1651 0 R +/Prev 1663 0 R +/Next 1671 0 R +>> endobj +1663 0 obj << +/Title 1664 0 R +/A 1661 0 R +/Parent 1651 0 R +/Prev 1659 0 R +/Next 1667 0 R +>> endobj +1659 0 obj << +/Title 1660 0 R +/A 1657 0 R +/Parent 1651 0 R +/Prev 1655 0 R +/Next 1663 0 R +>> endobj +1655 0 obj << +/Title 1656 0 R +/A 1653 0 R +/Parent 1651 0 R +/Next 1659 0 R +>> endobj +1651 0 obj << +/Title 1652 0 R +/A 1649 0 R +/Parent 1643 0 R +/Prev 1647 0 R +/First 1655 0 R +/Last 1915 0 R +/Count -66 +>> endobj +1647 0 obj << +/Title 1648 0 R +/A 1645 0 R +/Parent 1643 0 R +/Next 1651 0 R +>> endobj +1643 0 obj << +/Title 1644 0 R +/A 1641 0 R +/Parent 159 0 R +/Prev 1599 0 R +/Next 1919 0 R +/First 1647 0 R +/Last 1651 0 R +/Count -2 +>> endobj +1639 0 obj << +/Title 1640 0 R +/A 1637 0 R +/Parent 1603 0 R +/Prev 1635 0 R +>> endobj +1635 0 obj << +/Title 1636 0 R +/A 1633 0 R +/Parent 1603 0 R +/Prev 1631 0 R +/Next 1639 0 R +>> endobj +1631 0 obj << +/Title 1632 0 R +/A 1629 0 R +/Parent 1603 0 R +/Prev 1627 0 R +/Next 1635 0 R +>> endobj +1627 0 obj << +/Title 1628 0 R +/A 1625 0 R +/Parent 1603 0 R +/Prev 1623 0 R +/Next 1631 0 R +>> endobj +1623 0 obj << +/Title 1624 0 R +/A 1621 0 R +/Parent 1603 0 R +/Prev 1619 0 R +/Next 1627 0 R +>> endobj +1619 0 obj << +/Title 1620 0 R +/A 1617 0 R +/Parent 1603 0 R +/Prev 1615 0 R +/Next 1623 0 R +>> endobj +1615 0 obj << +/Title 1616 0 R +/A 1613 0 R +/Parent 1603 0 R +/Prev 1611 0 R +/Next 1619 0 R +>> endobj +1611 0 obj << +/Title 1612 0 R +/A 1609 0 R +/Parent 1603 0 R +/Prev 1607 0 R +/Next 1615 0 R +>> endobj +1607 0 obj << +/Title 1608 0 R +/A 1605 0 R +/Parent 1603 0 R +/Next 1611 0 R +>> endobj +1603 0 obj << +/Title 1604 0 R +/A 1601 0 R +/Parent 1599 0 R +/First 1607 0 R +/Last 1639 0 R +/Count -9 +>> endobj +1599 0 obj << +/Title 1600 0 R +/A 1597 0 R +/Parent 159 0 R +/Prev 1511 0 R +/Next 1643 0 R +/First 1603 0 R +/Last 1603 0 R +/Count -1 +>> endobj +1595 0 obj << +/Title 1596 0 R +/A 1593 0 R +/Parent 1519 0 R +/Prev 1591 0 R +>> endobj +1591 0 obj << +/Title 1592 0 R +/A 1589 0 R +/Parent 1519 0 R +/Prev 1587 0 R +/Next 1595 0 R +>> endobj +1587 0 obj << +/Title 1588 0 R +/A 1585 0 R +/Parent 1519 0 R +/Prev 1583 0 R +/Next 1591 0 R +>> endobj +1583 0 obj << +/Title 1584 0 R +/A 1581 0 R +/Parent 1519 0 R +/Prev 1579 0 R +/Next 1587 0 R +>> endobj +1579 0 obj << +/Title 1580 0 R +/A 1577 0 R +/Parent 1519 0 R +/Prev 1575 0 R +/Next 1583 0 R +>> endobj +1575 0 obj << +/Title 1576 0 R +/A 1573 0 R +/Parent 1519 0 R +/Prev 1571 0 R +/Next 1579 0 R +>> endobj +1571 0 obj << +/Title 1572 0 R +/A 1569 0 R +/Parent 1519 0 R +/Prev 1567 0 R +/Next 1575 0 R +>> endobj +1567 0 obj << +/Title 1568 0 R +/A 1565 0 R +/Parent 1519 0 R +/Prev 1563 0 R +/Next 1571 0 R +>> endobj +1563 0 obj << +/Title 1564 0 R +/A 1561 0 R +/Parent 1519 0 R +/Prev 1559 0 R +/Next 1567 0 R +>> endobj +1559 0 obj << +/Title 1560 0 R +/A 1557 0 R +/Parent 1519 0 R +/Prev 1555 0 R +/Next 1563 0 R +>> endobj +1555 0 obj << +/Title 1556 0 R +/A 1553 0 R +/Parent 1519 0 R +/Prev 1551 0 R +/Next 1559 0 R +>> endobj +1551 0 obj << +/Title 1552 0 R +/A 1549 0 R +/Parent 1519 0 R +/Prev 1547 0 R +/Next 1555 0 R +>> endobj +1547 0 obj << +/Title 1548 0 R +/A 1545 0 R +/Parent 1519 0 R +/Prev 1543 0 R +/Next 1551 0 R +>> endobj +1543 0 obj << +/Title 1544 0 R +/A 1541 0 R +/Parent 1519 0 R +/Prev 1539 0 R +/Next 1547 0 R +>> endobj +1539 0 obj << +/Title 1540 0 R +/A 1537 0 R +/Parent 1519 0 R +/Prev 1535 0 R +/Next 1543 0 R +>> endobj +1535 0 obj << +/Title 1536 0 R +/A 1533 0 R +/Parent 1519 0 R +/Prev 1531 0 R +/Next 1539 0 R +>> endobj +1531 0 obj << +/Title 1532 0 R +/A 1529 0 R +/Parent 1519 0 R +/Prev 1527 0 R +/Next 1535 0 R +>> endobj +1527 0 obj << +/Title 1528 0 R +/A 1525 0 R +/Parent 1519 0 R +/Prev 1523 0 R +/Next 1531 0 R +>> endobj +1523 0 obj << +/Title 1524 0 R +/A 1521 0 R +/Parent 1519 0 R +/Next 1527 0 R +>> endobj +1519 0 obj << +/Title 1520 0 R +/A 1517 0 R +/Parent 1511 0 R +/Prev 1515 0 R +/First 1523 0 R +/Last 1595 0 R +/Count -19 +>> endobj +1515 0 obj << +/Title 1516 0 R +/A 1513 0 R +/Parent 1511 0 R +/Next 1519 0 R +>> endobj +1511 0 obj << +/Title 1512 0 R +/A 1509 0 R +/Parent 159 0 R +/Prev 1491 0 R +/Next 1599 0 R +/First 1515 0 R +/Last 1519 0 R +/Count -2 +>> endobj +1507 0 obj << +/Title 1508 0 R +/A 1505 0 R +/Parent 1499 0 R +/Prev 1503 0 R +>> endobj +1503 0 obj << +/Title 1504 0 R +/A 1501 0 R +/Parent 1499 0 R +/Next 1507 0 R +>> endobj +1499 0 obj << +/Title 1500 0 R +/A 1497 0 R +/Parent 1491 0 R +/Prev 1495 0 R +/First 1503 0 R +/Last 1507 0 R +/Count -2 +>> endobj +1495 0 obj << +/Title 1496 0 R +/A 1493 0 R +/Parent 1491 0 R +/Next 1499 0 R +>> endobj +1491 0 obj << +/Title 1492 0 R +/A 1489 0 R +/Parent 159 0 R +/Prev 1471 0 R +/Next 1511 0 R +/First 1495 0 R +/Last 1499 0 R +/Count -2 +>> endobj +1487 0 obj << +/Title 1488 0 R +/A 1485 0 R +/Parent 1479 0 R +/Prev 1483 0 R +>> endobj +1483 0 obj << +/Title 1484 0 R +/A 1481 0 R +/Parent 1479 0 R +/Next 1487 0 R +>> endobj +1479 0 obj << +/Title 1480 0 R +/A 1477 0 R +/Parent 1471 0 R +/Prev 1475 0 R +/First 1483 0 R +/Last 1487 0 R +/Count -2 +>> endobj +1475 0 obj << +/Title 1476 0 R +/A 1473 0 R +/Parent 1471 0 R +/Next 1479 0 R +>> endobj +1471 0 obj << +/Title 1472 0 R +/A 1469 0 R +/Parent 159 0 R +/Prev 1463 0 R +/Next 1491 0 R +/First 1475 0 R +/Last 1479 0 R +/Count -2 +>> endobj +1467 0 obj << +/Title 1468 0 R +/A 1465 0 R +/Parent 1463 0 R +>> endobj +1463 0 obj << +/Title 1464 0 R +/A 1461 0 R +/Parent 159 0 R +/Prev 1343 0 R +/Next 1471 0 R +/First 1467 0 R +/Last 1467 0 R +/Count -1 +>> endobj +1459 0 obj << +/Title 1460 0 R +/A 1457 0 R +/Parent 1351 0 R +/Prev 1455 0 R +>> endobj +1455 0 obj << +/Title 1456 0 R +/A 1453 0 R +/Parent 1351 0 R +/Prev 1451 0 R +/Next 1459 0 R +>> endobj +1451 0 obj << +/Title 1452 0 R +/A 1449 0 R +/Parent 1351 0 R +/Prev 1447 0 R +/Next 1455 0 R +>> endobj +1447 0 obj << +/Title 1448 0 R +/A 1445 0 R +/Parent 1351 0 R +/Prev 1443 0 R +/Next 1451 0 R +>> endobj +1443 0 obj << +/Title 1444 0 R +/A 1441 0 R +/Parent 1351 0 R +/Prev 1439 0 R +/Next 1447 0 R +>> endobj +1439 0 obj << +/Title 1440 0 R +/A 1437 0 R +/Parent 1351 0 R +/Prev 1435 0 R +/Next 1443 0 R +>> endobj +1435 0 obj << +/Title 1436 0 R +/A 1433 0 R +/Parent 1351 0 R +/Prev 1431 0 R +/Next 1439 0 R +>> endobj +1431 0 obj << +/Title 1432 0 R +/A 1429 0 R +/Parent 1351 0 R +/Prev 1427 0 R +/Next 1435 0 R +>> endobj +1427 0 obj << +/Title 1428 0 R +/A 1425 0 R +/Parent 1351 0 R +/Prev 1423 0 R +/Next 1431 0 R +>> endobj +1423 0 obj << +/Title 1424 0 R +/A 1421 0 R +/Parent 1351 0 R +/Prev 1419 0 R +/Next 1427 0 R +>> endobj +1419 0 obj << +/Title 1420 0 R +/A 1417 0 R +/Parent 1351 0 R +/Prev 1415 0 R +/Next 1423 0 R +>> endobj +1415 0 obj << +/Title 1416 0 R +/A 1413 0 R +/Parent 1351 0 R +/Prev 1411 0 R +/Next 1419 0 R +>> endobj +1411 0 obj << +/Title 1412 0 R +/A 1409 0 R +/Parent 1351 0 R +/Prev 1407 0 R +/Next 1415 0 R +>> endobj +1407 0 obj << +/Title 1408 0 R +/A 1405 0 R +/Parent 1351 0 R +/Prev 1403 0 R +/Next 1411 0 R +>> endobj +1403 0 obj << +/Title 1404 0 R +/A 1401 0 R +/Parent 1351 0 R +/Prev 1399 0 R +/Next 1407 0 R +>> endobj +1399 0 obj << +/Title 1400 0 R +/A 1397 0 R +/Parent 1351 0 R +/Prev 1395 0 R +/Next 1403 0 R +>> endobj +1395 0 obj << +/Title 1396 0 R +/A 1393 0 R +/Parent 1351 0 R +/Prev 1391 0 R +/Next 1399 0 R +>> endobj +1391 0 obj << +/Title 1392 0 R +/A 1389 0 R +/Parent 1351 0 R +/Prev 1387 0 R +/Next 1395 0 R +>> endobj +1387 0 obj << +/Title 1388 0 R +/A 1385 0 R +/Parent 1351 0 R +/Prev 1383 0 R +/Next 1391 0 R +>> endobj +1383 0 obj << +/Title 1384 0 R +/A 1381 0 R +/Parent 1351 0 R +/Prev 1379 0 R +/Next 1387 0 R +>> endobj +1379 0 obj << +/Title 1380 0 R +/A 1377 0 R +/Parent 1351 0 R +/Prev 1375 0 R +/Next 1383 0 R +>> endobj +1375 0 obj << +/Title 1376 0 R +/A 1373 0 R +/Parent 1351 0 R +/Prev 1371 0 R +/Next 1379 0 R +>> endobj +1371 0 obj << +/Title 1372 0 R +/A 1369 0 R +/Parent 1351 0 R +/Prev 1367 0 R +/Next 1375 0 R +>> endobj +1367 0 obj << +/Title 1368 0 R +/A 1365 0 R +/Parent 1351 0 R +/Prev 1363 0 R +/Next 1371 0 R +>> endobj +1363 0 obj << +/Title 1364 0 R +/A 1361 0 R +/Parent 1351 0 R +/Prev 1359 0 R +/Next 1367 0 R +>> endobj +1359 0 obj << +/Title 1360 0 R +/A 1357 0 R +/Parent 1351 0 R +/Prev 1355 0 R +/Next 1363 0 R +>> endobj +1355 0 obj << +/Title 1356 0 R +/A 1353 0 R +/Parent 1351 0 R +/Next 1359 0 R +>> endobj +1351 0 obj << +/Title 1352 0 R +/A 1349 0 R +/Parent 1343 0 R +/Prev 1347 0 R +/First 1355 0 R +/Last 1459 0 R +/Count -27 +>> endobj +1347 0 obj << +/Title 1348 0 R +/A 1345 0 R +/Parent 1343 0 R +/Next 1351 0 R +>> endobj +1343 0 obj << +/Title 1344 0 R +/A 1341 0 R +/Parent 159 0 R +/Prev 1295 0 R +/Next 1463 0 R +/First 1347 0 R +/Last 1351 0 R +/Count -2 +>> endobj +1339 0 obj << +/Title 1340 0 R +/A 1337 0 R +/Parent 1303 0 R +/Prev 1335 0 R +>> endobj +1335 0 obj << +/Title 1336 0 R +/A 1333 0 R +/Parent 1303 0 R +/Prev 1331 0 R +/Next 1339 0 R +>> endobj +1331 0 obj << +/Title 1332 0 R +/A 1329 0 R +/Parent 1303 0 R +/Prev 1327 0 R +/Next 1335 0 R +>> endobj +1327 0 obj << +/Title 1328 0 R +/A 1325 0 R +/Parent 1303 0 R +/Prev 1323 0 R +/Next 1331 0 R +>> endobj +1323 0 obj << +/Title 1324 0 R +/A 1321 0 R +/Parent 1303 0 R +/Prev 1319 0 R +/Next 1327 0 R +>> endobj +1319 0 obj << +/Title 1320 0 R +/A 1317 0 R +/Parent 1303 0 R +/Prev 1315 0 R +/Next 1323 0 R +>> endobj +1315 0 obj << +/Title 1316 0 R +/A 1313 0 R +/Parent 1303 0 R +/Prev 1311 0 R +/Next 1319 0 R +>> endobj +1311 0 obj << +/Title 1312 0 R +/A 1309 0 R +/Parent 1303 0 R +/Prev 1307 0 R +/Next 1315 0 R +>> endobj +1307 0 obj << +/Title 1308 0 R +/A 1305 0 R +/Parent 1303 0 R +/Next 1311 0 R +>> endobj +1303 0 obj << +/Title 1304 0 R +/A 1301 0 R +/Parent 1295 0 R +/Prev 1299 0 R +/First 1307 0 R +/Last 1339 0 R +/Count -9 +>> endobj +1299 0 obj << +/Title 1300 0 R +/A 1297 0 R +/Parent 1295 0 R +/Next 1303 0 R +>> endobj +1295 0 obj << +/Title 1296 0 R +/A 1293 0 R +/Parent 159 0 R +/Prev 1279 0 R +/Next 1343 0 R +/First 1299 0 R +/Last 1303 0 R +/Count -2 +>> endobj +1291 0 obj << +/Title 1292 0 R +/A 1289 0 R +/Parent 1287 0 R +>> endobj +1287 0 obj << +/Title 1288 0 R +/A 1285 0 R +/Parent 1279 0 R +/Prev 1283 0 R +/First 1291 0 R +/Last 1291 0 R +/Count -1 +>> endobj +1283 0 obj << +/Title 1284 0 R +/A 1281 0 R +/Parent 1279 0 R +/Next 1287 0 R +>> endobj +1279 0 obj << +/Title 1280 0 R +/A 1277 0 R +/Parent 159 0 R +/Prev 1267 0 R +/Next 1295 0 R +/First 1283 0 R +/Last 1287 0 R +/Count -2 +>> endobj +1275 0 obj << +/Title 1276 0 R +/A 1273 0 R +/Parent 1271 0 R +>> endobj +1271 0 obj << +/Title 1272 0 R +/A 1269 0 R +/Parent 1267 0 R +/First 1275 0 R +/Last 1275 0 R +/Count -1 +>> endobj +1267 0 obj << +/Title 1268 0 R +/A 1265 0 R +/Parent 159 0 R +/Prev 1219 0 R +/Next 1279 0 R +/First 1271 0 R +/Last 1271 0 R +/Count -1 +>> endobj +1263 0 obj << +/Title 1264 0 R +/A 1261 0 R +/Parent 1227 0 R +/Prev 1259 0 R +>> endobj +1259 0 obj << +/Title 1260 0 R +/A 1257 0 R +/Parent 1227 0 R +/Prev 1255 0 R +/Next 1263 0 R +>> endobj +1255 0 obj << +/Title 1256 0 R +/A 1253 0 R +/Parent 1227 0 R +/Prev 1251 0 R +/Next 1259 0 R +>> endobj +1251 0 obj << +/Title 1252 0 R +/A 1249 0 R +/Parent 1227 0 R +/Prev 1247 0 R +/Next 1255 0 R +>> endobj +1247 0 obj << +/Title 1248 0 R +/A 1245 0 R +/Parent 1227 0 R +/Prev 1243 0 R +/Next 1251 0 R +>> endobj +1243 0 obj << +/Title 1244 0 R +/A 1241 0 R +/Parent 1227 0 R +/Prev 1239 0 R +/Next 1247 0 R +>> endobj +1239 0 obj << +/Title 1240 0 R +/A 1237 0 R +/Parent 1227 0 R +/Prev 1235 0 R +/Next 1243 0 R +>> endobj +1235 0 obj << +/Title 1236 0 R +/A 1233 0 R +/Parent 1227 0 R +/Prev 1231 0 R +/Next 1239 0 R +>> endobj +1231 0 obj << +/Title 1232 0 R +/A 1229 0 R +/Parent 1227 0 R +/Next 1235 0 R +>> endobj +1227 0 obj << +/Title 1228 0 R +/A 1225 0 R +/Parent 1219 0 R +/Prev 1223 0 R +/First 1231 0 R +/Last 1263 0 R +/Count -9 +>> endobj +1223 0 obj << +/Title 1224 0 R +/A 1221 0 R +/Parent 1219 0 R +/Next 1227 0 R +>> endobj +1219 0 obj << +/Title 1220 0 R +/A 1217 0 R +/Parent 159 0 R +/Prev 1203 0 R +/Next 1267 0 R +/First 1223 0 R +/Last 1227 0 R +/Count -2 +>> endobj +1215 0 obj << +/Title 1216 0 R +/A 1213 0 R +/Parent 1211 0 R +>> endobj +1211 0 obj << +/Title 1212 0 R +/A 1209 0 R +/Parent 1203 0 R +/Prev 1207 0 R +/First 1215 0 R +/Last 1215 0 R +/Count -1 +>> endobj +1207 0 obj << +/Title 1208 0 R +/A 1205 0 R +/Parent 1203 0 R +/Next 1211 0 R +>> endobj +1203 0 obj << +/Title 1204 0 R +/A 1201 0 R +/Parent 159 0 R +/Prev 1167 0 R +/Next 1219 0 R +/First 1207 0 R +/Last 1211 0 R +/Count -2 +>> endobj +1199 0 obj << +/Title 1200 0 R +/A 1197 0 R +/Parent 1183 0 R +/Prev 1195 0 R +>> endobj +1195 0 obj << +/Title 1196 0 R +/A 1193 0 R +/Parent 1183 0 R +/Prev 1191 0 R +/Next 1199 0 R +>> endobj +1191 0 obj << +/Title 1192 0 R +/A 1189 0 R +/Parent 1183 0 R +/Prev 1187 0 R +/Next 1195 0 R +>> endobj +1187 0 obj << +/Title 1188 0 R +/A 1185 0 R +/Parent 1183 0 R +/Next 1191 0 R +>> endobj +1183 0 obj << +/Title 1184 0 R +/A 1181 0 R +/Parent 1167 0 R +/Prev 1175 0 R +/First 1187 0 R +/Last 1199 0 R +/Count -4 +>> endobj +1179 0 obj << +/Title 1180 0 R +/A 1177 0 R +/Parent 1175 0 R +>> endobj +1175 0 obj << +/Title 1176 0 R +/A 1173 0 R +/Parent 1167 0 R +/Prev 1171 0 R +/Next 1183 0 R +/First 1179 0 R +/Last 1179 0 R +/Count -1 +>> endobj +1171 0 obj << +/Title 1172 0 R +/A 1169 0 R +/Parent 1167 0 R +/Next 1175 0 R +>> endobj +1167 0 obj << +/Title 1168 0 R +/A 1165 0 R +/Parent 159 0 R +/Prev 1091 0 R +/Next 1203 0 R +/First 1171 0 R +/Last 1183 0 R +/Count -3 +>> endobj +1163 0 obj << +/Title 1164 0 R +/A 1161 0 R +/Parent 1159 0 R +>> endobj +1159 0 obj << +/Title 1160 0 R +/A 1157 0 R +/Parent 1091 0 R +/Prev 1099 0 R +/First 1163 0 R +/Last 1163 0 R +/Count -1 +>> endobj +1155 0 obj << +/Title 1156 0 R +/A 1153 0 R +/Parent 1099 0 R +/Prev 1151 0 R +>> endobj +1151 0 obj << +/Title 1152 0 R +/A 1149 0 R +/Parent 1099 0 R +/Prev 1147 0 R +/Next 1155 0 R +>> endobj +1147 0 obj << +/Title 1148 0 R +/A 1145 0 R +/Parent 1099 0 R +/Prev 1143 0 R +/Next 1151 0 R +>> endobj +1143 0 obj << +/Title 1144 0 R +/A 1141 0 R +/Parent 1099 0 R +/Prev 1139 0 R +/Next 1147 0 R +>> endobj +1139 0 obj << +/Title 1140 0 R +/A 1137 0 R +/Parent 1099 0 R +/Prev 1135 0 R +/Next 1143 0 R +>> endobj +1135 0 obj << +/Title 1136 0 R +/A 1133 0 R +/Parent 1099 0 R +/Prev 1131 0 R +/Next 1139 0 R +>> endobj +1131 0 obj << +/Title 1132 0 R +/A 1129 0 R +/Parent 1099 0 R +/Prev 1127 0 R +/Next 1135 0 R +>> endobj +1127 0 obj << +/Title 1128 0 R +/A 1125 0 R +/Parent 1099 0 R +/Prev 1123 0 R +/Next 1131 0 R +>> endobj +1123 0 obj << +/Title 1124 0 R +/A 1121 0 R +/Parent 1099 0 R +/Prev 1119 0 R +/Next 1127 0 R +>> endobj +1119 0 obj << +/Title 1120 0 R +/A 1117 0 R +/Parent 1099 0 R +/Prev 1115 0 R +/Next 1123 0 R +>> endobj +1115 0 obj << +/Title 1116 0 R +/A 1113 0 R +/Parent 1099 0 R +/Prev 1111 0 R +/Next 1119 0 R +>> endobj +1111 0 obj << +/Title 1112 0 R +/A 1109 0 R +/Parent 1099 0 R +/Prev 1107 0 R +/Next 1115 0 R +>> endobj +1107 0 obj << +/Title 1108 0 R +/A 1105 0 R +/Parent 1099 0 R +/Prev 1103 0 R +/Next 1111 0 R +>> endobj +1103 0 obj << +/Title 1104 0 R +/A 1101 0 R +/Parent 1099 0 R +/Next 1107 0 R +>> endobj +1099 0 obj << +/Title 1100 0 R +/A 1097 0 R +/Parent 1091 0 R +/Prev 1095 0 R +/Next 1159 0 R +/First 1103 0 R +/Last 1155 0 R +/Count -14 +>> endobj +1095 0 obj << +/Title 1096 0 R +/A 1093 0 R +/Parent 1091 0 R +/Next 1099 0 R +>> endobj +1091 0 obj << +/Title 1092 0 R +/A 1089 0 R +/Parent 159 0 R +/Prev 1023 0 R +/Next 1167 0 R +/First 1095 0 R +/Last 1159 0 R +/Count -3 +>> endobj +1087 0 obj << +/Title 1088 0 R +/A 1085 0 R +/Parent 1031 0 R +/Prev 1083 0 R +>> endobj +1083 0 obj << +/Title 1084 0 R +/A 1081 0 R +/Parent 1031 0 R +/Prev 1079 0 R +/Next 1087 0 R +>> endobj +1079 0 obj << +/Title 1080 0 R +/A 1077 0 R +/Parent 1031 0 R +/Prev 1075 0 R +/Next 1083 0 R +>> endobj +1075 0 obj << +/Title 1076 0 R +/A 1073 0 R +/Parent 1031 0 R +/Prev 1071 0 R +/Next 1079 0 R +>> endobj +1071 0 obj << +/Title 1072 0 R +/A 1069 0 R +/Parent 1031 0 R +/Prev 1067 0 R +/Next 1075 0 R +>> endobj +1067 0 obj << +/Title 1068 0 R +/A 1065 0 R +/Parent 1031 0 R +/Prev 1063 0 R +/Next 1071 0 R +>> endobj +1063 0 obj << +/Title 1064 0 R +/A 1061 0 R +/Parent 1031 0 R +/Prev 1059 0 R +/Next 1067 0 R +>> endobj +1059 0 obj << +/Title 1060 0 R +/A 1057 0 R +/Parent 1031 0 R +/Prev 1055 0 R +/Next 1063 0 R +>> endobj +1055 0 obj << +/Title 1056 0 R +/A 1053 0 R +/Parent 1031 0 R +/Prev 1051 0 R +/Next 1059 0 R +>> endobj +1051 0 obj << +/Title 1052 0 R +/A 1049 0 R +/Parent 1031 0 R +/Prev 1047 0 R +/Next 1055 0 R +>> endobj +1047 0 obj << +/Title 1048 0 R +/A 1045 0 R +/Parent 1031 0 R +/Prev 1043 0 R +/Next 1051 0 R +>> endobj +1043 0 obj << +/Title 1044 0 R +/A 1041 0 R +/Parent 1031 0 R +/Prev 1039 0 R +/Next 1047 0 R +>> endobj +1039 0 obj << +/Title 1040 0 R +/A 1037 0 R +/Parent 1031 0 R +/Prev 1035 0 R +/Next 1043 0 R +>> endobj +1035 0 obj << +/Title 1036 0 R +/A 1033 0 R +/Parent 1031 0 R +/Next 1039 0 R +>> endobj +1031 0 obj << +/Title 1032 0 R +/A 1029 0 R +/Parent 1023 0 R +/Prev 1027 0 R +/First 1035 0 R +/Last 1087 0 R +/Count -14 +>> endobj +1027 0 obj << +/Title 1028 0 R +/A 1025 0 R +/Parent 1023 0 R +/Next 1031 0 R +>> endobj +1023 0 obj << +/Title 1024 0 R +/A 1021 0 R +/Parent 159 0 R +/Prev 895 0 R +/Next 1091 0 R +/First 1027 0 R +/Last 1031 0 R +/Count -2 +>> endobj +1019 0 obj << +/Title 1020 0 R +/A 1017 0 R +/Parent 903 0 R +/Prev 1015 0 R +>> endobj +1015 0 obj << +/Title 1016 0 R +/A 1013 0 R +/Parent 903 0 R +/Prev 1011 0 R +/Next 1019 0 R +>> endobj +1011 0 obj << +/Title 1012 0 R +/A 1009 0 R +/Parent 903 0 R +/Prev 1007 0 R +/Next 1015 0 R +>> endobj +1007 0 obj << +/Title 1008 0 R +/A 1005 0 R +/Parent 903 0 R +/Prev 1003 0 R +/Next 1011 0 R +>> endobj +1003 0 obj << +/Title 1004 0 R +/A 1001 0 R +/Parent 903 0 R +/Prev 999 0 R +/Next 1007 0 R +>> endobj +999 0 obj << +/Title 1000 0 R +/A 997 0 R +/Parent 903 0 R +/Prev 995 0 R +/Next 1003 0 R +>> endobj +995 0 obj << +/Title 996 0 R +/A 993 0 R +/Parent 903 0 R +/Prev 991 0 R +/Next 999 0 R +>> endobj +991 0 obj << +/Title 992 0 R +/A 989 0 R +/Parent 903 0 R +/Prev 987 0 R +/Next 995 0 R +>> endobj +987 0 obj << +/Title 988 0 R +/A 985 0 R +/Parent 903 0 R +/Prev 983 0 R +/Next 991 0 R +>> endobj +983 0 obj << +/Title 984 0 R +/A 981 0 R +/Parent 903 0 R +/Prev 979 0 R +/Next 987 0 R +>> endobj +979 0 obj << +/Title 980 0 R +/A 977 0 R +/Parent 903 0 R +/Prev 975 0 R +/Next 983 0 R +>> endobj +975 0 obj << +/Title 976 0 R +/A 973 0 R +/Parent 903 0 R +/Prev 971 0 R +/Next 979 0 R +>> endobj +971 0 obj << +/Title 972 0 R +/A 969 0 R +/Parent 903 0 R +/Prev 967 0 R +/Next 975 0 R +>> endobj +967 0 obj << +/Title 968 0 R +/A 965 0 R +/Parent 903 0 R +/Prev 963 0 R +/Next 971 0 R +>> endobj +963 0 obj << +/Title 964 0 R +/A 961 0 R +/Parent 903 0 R +/Prev 959 0 R +/Next 967 0 R +>> endobj +959 0 obj << +/Title 960 0 R +/A 957 0 R +/Parent 903 0 R +/Prev 955 0 R +/Next 963 0 R +>> endobj +955 0 obj << +/Title 956 0 R +/A 953 0 R +/Parent 903 0 R +/Prev 951 0 R +/Next 959 0 R +>> endobj +951 0 obj << +/Title 952 0 R +/A 949 0 R +/Parent 903 0 R +/Prev 947 0 R +/Next 955 0 R +>> endobj +947 0 obj << +/Title 948 0 R +/A 945 0 R +/Parent 903 0 R +/Prev 943 0 R +/Next 951 0 R +>> endobj +943 0 obj << +/Title 944 0 R +/A 941 0 R +/Parent 903 0 R +/Prev 939 0 R +/Next 947 0 R +>> endobj +939 0 obj << +/Title 940 0 R +/A 937 0 R +/Parent 903 0 R +/Prev 935 0 R +/Next 943 0 R +>> endobj +935 0 obj << +/Title 936 0 R +/A 933 0 R +/Parent 903 0 R +/Prev 931 0 R +/Next 939 0 R +>> endobj +931 0 obj << +/Title 932 0 R +/A 929 0 R +/Parent 903 0 R +/Prev 927 0 R +/Next 935 0 R +>> endobj +927 0 obj << +/Title 928 0 R +/A 925 0 R +/Parent 903 0 R +/Prev 923 0 R +/Next 931 0 R +>> endobj +923 0 obj << +/Title 924 0 R +/A 921 0 R +/Parent 903 0 R +/Prev 919 0 R +/Next 927 0 R +>> endobj +919 0 obj << +/Title 920 0 R +/A 917 0 R +/Parent 903 0 R +/Prev 915 0 R +/Next 923 0 R +>> endobj +915 0 obj << +/Title 916 0 R +/A 913 0 R +/Parent 903 0 R +/Prev 911 0 R +/Next 919 0 R +>> endobj +911 0 obj << +/Title 912 0 R +/A 909 0 R +/Parent 903 0 R +/Prev 907 0 R +/Next 915 0 R +>> endobj +907 0 obj << +/Title 908 0 R +/A 905 0 R +/Parent 903 0 R +/Next 911 0 R +>> endobj +903 0 obj << +/Title 904 0 R +/A 901 0 R +/Parent 895 0 R +/Prev 899 0 R +/First 907 0 R +/Last 1019 0 R +/Count -29 +>> endobj +899 0 obj << +/Title 900 0 R +/A 897 0 R +/Parent 895 0 R +/Next 903 0 R +>> endobj +895 0 obj << +/Title 896 0 R +/A 893 0 R +/Parent 159 0 R +/Prev 823 0 R +/Next 1023 0 R +/First 899 0 R +/Last 903 0 R +/Count -2 +>> endobj +891 0 obj << +/Title 892 0 R +/A 889 0 R +/Parent 831 0 R +/Prev 887 0 R +>> endobj +887 0 obj << +/Title 888 0 R +/A 885 0 R +/Parent 831 0 R +/Prev 883 0 R +/Next 891 0 R +>> endobj +883 0 obj << +/Title 884 0 R +/A 881 0 R +/Parent 831 0 R +/Prev 879 0 R +/Next 887 0 R +>> endobj +879 0 obj << +/Title 880 0 R +/A 877 0 R +/Parent 831 0 R +/Prev 875 0 R +/Next 883 0 R +>> endobj +875 0 obj << +/Title 876 0 R +/A 873 0 R +/Parent 831 0 R +/Prev 871 0 R +/Next 879 0 R +>> endobj +871 0 obj << +/Title 872 0 R +/A 869 0 R +/Parent 831 0 R +/Prev 867 0 R +/Next 875 0 R +>> endobj +867 0 obj << +/Title 868 0 R +/A 865 0 R +/Parent 831 0 R +/Prev 863 0 R +/Next 871 0 R +>> endobj +863 0 obj << +/Title 864 0 R +/A 861 0 R +/Parent 831 0 R +/Prev 859 0 R +/Next 867 0 R +>> endobj +859 0 obj << +/Title 860 0 R +/A 857 0 R +/Parent 831 0 R +/Prev 855 0 R +/Next 863 0 R +>> endobj +855 0 obj << +/Title 856 0 R +/A 853 0 R +/Parent 831 0 R +/Prev 851 0 R +/Next 859 0 R +>> endobj +851 0 obj << +/Title 852 0 R +/A 849 0 R +/Parent 831 0 R +/Prev 847 0 R +/Next 855 0 R +>> endobj +847 0 obj << +/Title 848 0 R +/A 845 0 R +/Parent 831 0 R +/Prev 843 0 R +/Next 851 0 R +>> endobj +843 0 obj << +/Title 844 0 R +/A 841 0 R +/Parent 831 0 R +/Prev 839 0 R +/Next 847 0 R +>> endobj +839 0 obj << +/Title 840 0 R +/A 837 0 R +/Parent 831 0 R +/Prev 835 0 R +/Next 843 0 R +>> endobj +835 0 obj << +/Title 836 0 R +/A 833 0 R +/Parent 831 0 R +/Next 839 0 R +>> endobj +831 0 obj << +/Title 832 0 R +/A 829 0 R +/Parent 823 0 R +/Prev 827 0 R +/First 835 0 R +/Last 891 0 R +/Count -15 +>> endobj +827 0 obj << +/Title 828 0 R +/A 825 0 R +/Parent 823 0 R +/Next 831 0 R +>> endobj +823 0 obj << +/Title 824 0 R +/A 821 0 R +/Parent 159 0 R +/Prev 803 0 R +/Next 895 0 R +/First 827 0 R +/Last 831 0 R +/Count -2 +>> endobj +819 0 obj << +/Title 820 0 R +/A 817 0 R +/Parent 807 0 R +/Prev 815 0 R +>> endobj +815 0 obj << +/Title 816 0 R +/A 813 0 R +/Parent 807 0 R +/Prev 811 0 R +/Next 819 0 R +>> endobj +811 0 obj << +/Title 812 0 R +/A 809 0 R +/Parent 807 0 R +/Next 815 0 R +>> endobj +807 0 obj << +/Title 808 0 R +/A 805 0 R +/Parent 803 0 R +/First 811 0 R +/Last 819 0 R +/Count -3 +>> endobj +803 0 obj << +/Title 804 0 R +/A 801 0 R +/Parent 159 0 R +/Prev 763 0 R +/Next 823 0 R +/First 807 0 R +/Last 807 0 R +/Count -1 +>> endobj +799 0 obj << +/Title 800 0 R +/A 797 0 R +/Parent 771 0 R +/Prev 795 0 R +>> endobj +795 0 obj << +/Title 796 0 R +/A 793 0 R +/Parent 771 0 R +/Prev 791 0 R +/Next 799 0 R +>> endobj +791 0 obj << +/Title 792 0 R +/A 789 0 R +/Parent 771 0 R +/Prev 787 0 R +/Next 795 0 R +>> endobj +787 0 obj << +/Title 788 0 R +/A 785 0 R +/Parent 771 0 R +/Prev 783 0 R +/Next 791 0 R +>> endobj +783 0 obj << +/Title 784 0 R +/A 781 0 R +/Parent 771 0 R +/Prev 779 0 R +/Next 787 0 R +>> endobj +779 0 obj << +/Title 780 0 R +/A 777 0 R +/Parent 771 0 R +/Prev 775 0 R +/Next 783 0 R +>> endobj +775 0 obj << +/Title 776 0 R +/A 773 0 R +/Parent 771 0 R +/Next 779 0 R +>> endobj +771 0 obj << +/Title 772 0 R +/A 769 0 R +/Parent 763 0 R +/Prev 767 0 R +/First 775 0 R +/Last 799 0 R +/Count -7 +>> endobj +767 0 obj << +/Title 768 0 R +/A 765 0 R +/Parent 763 0 R +/Next 771 0 R +>> endobj +763 0 obj << +/Title 764 0 R +/A 761 0 R +/Parent 159 0 R +/Prev 715 0 R +/Next 803 0 R +/First 767 0 R +/Last 771 0 R +/Count -2 +>> endobj +759 0 obj << +/Title 760 0 R +/A 757 0 R +/Parent 755 0 R +>> endobj +755 0 obj << +/Title 756 0 R +/A 753 0 R +/Parent 715 0 R +/Prev 743 0 R +/First 759 0 R +/Last 759 0 R +/Count -1 +>> endobj +751 0 obj << +/Title 752 0 R +/A 749 0 R +/Parent 743 0 R +/Prev 747 0 R +>> endobj +747 0 obj << +/Title 748 0 R +/A 745 0 R +/Parent 743 0 R +/Next 751 0 R +>> endobj +743 0 obj << +/Title 744 0 R +/A 741 0 R +/Parent 715 0 R +/Prev 731 0 R +/Next 755 0 R +/First 747 0 R +/Last 751 0 R +/Count -2 +>> endobj +739 0 obj << +/Title 740 0 R +/A 737 0 R +/Parent 731 0 R +/Prev 735 0 R +>> endobj +735 0 obj << +/Title 736 0 R +/A 733 0 R +/Parent 731 0 R +/Next 739 0 R +>> endobj +731 0 obj << +/Title 732 0 R +/A 729 0 R +/Parent 715 0 R +/Prev 723 0 R +/Next 743 0 R +/First 735 0 R +/Last 739 0 R +/Count -2 +>> endobj +727 0 obj << +/Title 728 0 R +/A 725 0 R +/Parent 723 0 R +>> endobj +723 0 obj << +/Title 724 0 R +/A 721 0 R +/Parent 715 0 R +/Prev 719 0 R +/Next 731 0 R +/First 727 0 R +/Last 727 0 R +/Count -1 +>> endobj +719 0 obj << +/Title 720 0 R +/A 717 0 R +/Parent 715 0 R +/Next 723 0 R +>> endobj +715 0 obj << +/Title 716 0 R +/A 713 0 R +/Parent 159 0 R +/Prev 639 0 R +/Next 763 0 R +/First 719 0 R +/Last 755 0 R +/Count -5 +>> endobj +711 0 obj << +/Title 712 0 R +/A 709 0 R +/Parent 647 0 R +/Prev 707 0 R +>> endobj +707 0 obj << +/Title 708 0 R +/A 705 0 R +/Parent 647 0 R +/Prev 703 0 R +/Next 711 0 R +>> endobj +703 0 obj << +/Title 704 0 R +/A 701 0 R +/Parent 647 0 R +/Prev 699 0 R +/Next 707 0 R +>> endobj +699 0 obj << +/Title 700 0 R +/A 697 0 R +/Parent 647 0 R +/Prev 695 0 R +/Next 703 0 R +>> endobj +695 0 obj << +/Title 696 0 R +/A 693 0 R +/Parent 647 0 R +/Prev 691 0 R +/Next 699 0 R +>> endobj +691 0 obj << +/Title 692 0 R +/A 689 0 R +/Parent 647 0 R +/Prev 687 0 R +/Next 695 0 R +>> endobj +687 0 obj << +/Title 688 0 R +/A 685 0 R +/Parent 647 0 R +/Prev 683 0 R +/Next 691 0 R +>> endobj +683 0 obj << +/Title 684 0 R +/A 681 0 R +/Parent 647 0 R +/Prev 679 0 R +/Next 687 0 R +>> endobj +679 0 obj << +/Title 680 0 R +/A 677 0 R +/Parent 647 0 R +/Prev 675 0 R +/Next 683 0 R +>> endobj +675 0 obj << +/Title 676 0 R +/A 673 0 R +/Parent 647 0 R +/Prev 671 0 R +/Next 679 0 R +>> endobj +671 0 obj << +/Title 672 0 R +/A 669 0 R +/Parent 647 0 R +/Prev 667 0 R +/Next 675 0 R +>> endobj +667 0 obj << +/Title 668 0 R +/A 665 0 R +/Parent 647 0 R +/Prev 663 0 R +/Next 671 0 R +>> endobj +663 0 obj << +/Title 664 0 R +/A 661 0 R +/Parent 647 0 R +/Prev 659 0 R +/Next 667 0 R +>> endobj +659 0 obj << +/Title 660 0 R +/A 657 0 R +/Parent 647 0 R +/Prev 655 0 R +/Next 663 0 R +>> endobj +655 0 obj << +/Title 656 0 R +/A 653 0 R +/Parent 647 0 R +/Prev 651 0 R +/Next 659 0 R +>> endobj +651 0 obj << +/Title 652 0 R +/A 649 0 R +/Parent 647 0 R +/Next 655 0 R +>> endobj +647 0 obj << +/Title 648 0 R +/A 645 0 R +/Parent 639 0 R +/Prev 643 0 R +/First 651 0 R +/Last 711 0 R +/Count -16 +>> endobj +643 0 obj << +/Title 644 0 R +/A 641 0 R +/Parent 639 0 R +/Next 647 0 R +>> endobj +639 0 obj << +/Title 640 0 R +/A 637 0 R +/Parent 159 0 R +/Prev 591 0 R +/Next 715 0 R +/First 643 0 R +/Last 647 0 R +/Count -2 +>> endobj +635 0 obj << +/Title 636 0 R +/A 633 0 R +/Parent 599 0 R +/Prev 631 0 R +>> endobj +631 0 obj << +/Title 632 0 R +/A 629 0 R +/Parent 599 0 R +/Prev 627 0 R +/Next 635 0 R +>> endobj +627 0 obj << +/Title 628 0 R +/A 625 0 R +/Parent 599 0 R +/Prev 623 0 R +/Next 631 0 R +>> endobj +623 0 obj << +/Title 624 0 R +/A 621 0 R +/Parent 599 0 R +/Prev 619 0 R +/Next 627 0 R +>> endobj +619 0 obj << +/Title 620 0 R +/A 617 0 R +/Parent 599 0 R +/Prev 615 0 R +/Next 623 0 R +>> endobj +615 0 obj << +/Title 616 0 R +/A 613 0 R +/Parent 599 0 R +/Prev 611 0 R +/Next 619 0 R +>> endobj +611 0 obj << +/Title 612 0 R +/A 609 0 R +/Parent 599 0 R +/Prev 607 0 R +/Next 615 0 R +>> endobj +607 0 obj << +/Title 608 0 R +/A 605 0 R +/Parent 599 0 R +/Prev 603 0 R +/Next 611 0 R +>> endobj +603 0 obj << +/Title 604 0 R +/A 601 0 R +/Parent 599 0 R +/Next 607 0 R +>> endobj +599 0 obj << +/Title 600 0 R +/A 597 0 R +/Parent 591 0 R +/Prev 595 0 R +/First 603 0 R +/Last 635 0 R +/Count -9 +>> endobj +595 0 obj << +/Title 596 0 R +/A 593 0 R +/Parent 591 0 R +/Next 599 0 R +>> endobj +591 0 obj << +/Title 592 0 R +/A 589 0 R +/Parent 159 0 R +/Prev 551 0 R +/Next 639 0 R +/First 595 0 R +/Last 599 0 R +/Count -2 +>> endobj +587 0 obj << +/Title 588 0 R +/A 585 0 R +/Parent 559 0 R +/Prev 583 0 R +>> endobj +583 0 obj << +/Title 584 0 R +/A 581 0 R +/Parent 559 0 R +/Prev 579 0 R +/Next 587 0 R +>> endobj +579 0 obj << +/Title 580 0 R +/A 577 0 R +/Parent 559 0 R +/Prev 575 0 R +/Next 583 0 R +>> endobj +575 0 obj << +/Title 576 0 R +/A 573 0 R +/Parent 559 0 R +/Prev 571 0 R +/Next 579 0 R +>> endobj +571 0 obj << +/Title 572 0 R +/A 569 0 R +/Parent 559 0 R +/Prev 567 0 R +/Next 575 0 R +>> endobj +567 0 obj << +/Title 568 0 R +/A 565 0 R +/Parent 559 0 R +/Prev 563 0 R +/Next 571 0 R +>> endobj +563 0 obj << +/Title 564 0 R +/A 561 0 R +/Parent 559 0 R +/Next 567 0 R +>> endobj +559 0 obj << +/Title 560 0 R +/A 557 0 R +/Parent 551 0 R +/Prev 555 0 R +/First 563 0 R +/Last 587 0 R +/Count -7 +>> endobj +555 0 obj << +/Title 556 0 R +/A 553 0 R +/Parent 551 0 R +/Next 559 0 R +>> endobj +551 0 obj << +/Title 552 0 R +/A 549 0 R +/Parent 159 0 R +/Prev 387 0 R +/Next 591 0 R +/First 555 0 R +/Last 559 0 R +/Count -2 +>> endobj +547 0 obj << +/Title 548 0 R +/A 545 0 R +/Parent 503 0 R +/Prev 543 0 R +>> endobj +543 0 obj << +/Title 544 0 R +/A 541 0 R +/Parent 503 0 R +/Prev 539 0 R +/Next 547 0 R +>> endobj +539 0 obj << +/Title 540 0 R +/A 537 0 R +/Parent 503 0 R +/Prev 535 0 R +/Next 543 0 R +>> endobj +535 0 obj << +/Title 536 0 R +/A 533 0 R +/Parent 503 0 R +/Prev 531 0 R +/Next 539 0 R +>> endobj +531 0 obj << +/Title 532 0 R +/A 529 0 R +/Parent 503 0 R +/Prev 527 0 R +/Next 535 0 R +>> endobj +527 0 obj << +/Title 528 0 R +/A 525 0 R +/Parent 503 0 R +/Prev 523 0 R +/Next 531 0 R +>> endobj +523 0 obj << +/Title 524 0 R +/A 521 0 R +/Parent 503 0 R +/Prev 519 0 R +/Next 527 0 R +>> endobj +519 0 obj << +/Title 520 0 R +/A 517 0 R +/Parent 503 0 R +/Prev 515 0 R +/Next 523 0 R +>> endobj +515 0 obj << +/Title 516 0 R +/A 513 0 R +/Parent 503 0 R +/Prev 511 0 R +/Next 519 0 R +>> endobj +511 0 obj << +/Title 512 0 R +/A 509 0 R +/Parent 503 0 R +/Prev 507 0 R +/Next 515 0 R +>> endobj +507 0 obj << +/Title 508 0 R +/A 505 0 R +/Parent 503 0 R +/Next 511 0 R +>> endobj +503 0 obj << +/Title 504 0 R +/A 501 0 R +/Parent 387 0 R +/Prev 483 0 R +/First 507 0 R +/Last 547 0 R +/Count -11 +>> endobj +499 0 obj << +/Title 500 0 R +/A 497 0 R +/Parent 483 0 R +/Prev 495 0 R +>> endobj +495 0 obj << +/Title 496 0 R +/A 493 0 R +/Parent 483 0 R +/Prev 491 0 R +/Next 499 0 R +>> endobj +491 0 obj << +/Title 492 0 R +/A 489 0 R +/Parent 483 0 R +/Prev 487 0 R +/Next 495 0 R +>> endobj +487 0 obj << +/Title 488 0 R +/A 485 0 R +/Parent 483 0 R +/Next 491 0 R +>> endobj +483 0 obj << +/Title 484 0 R +/A 481 0 R +/Parent 387 0 R +/Prev 403 0 R +/Next 503 0 R +/First 487 0 R +/Last 499 0 R +/Count -4 +>> endobj +479 0 obj << +/Title 480 0 R +/A 477 0 R +/Parent 403 0 R +/Prev 475 0 R +>> endobj +475 0 obj << +/Title 476 0 R +/A 473 0 R +/Parent 403 0 R +/Prev 471 0 R +/Next 479 0 R +>> endobj +471 0 obj << +/Title 472 0 R +/A 469 0 R +/Parent 403 0 R +/Prev 467 0 R +/Next 475 0 R +>> endobj +467 0 obj << +/Title 468 0 R +/A 465 0 R +/Parent 403 0 R +/Prev 463 0 R +/Next 471 0 R +>> endobj +463 0 obj << +/Title 464 0 R +/A 461 0 R +/Parent 403 0 R +/Prev 459 0 R +/Next 467 0 R +>> endobj +459 0 obj << +/Title 460 0 R +/A 457 0 R +/Parent 403 0 R +/Prev 455 0 R +/Next 463 0 R +>> endobj +455 0 obj << +/Title 456 0 R +/A 453 0 R +/Parent 403 0 R +/Prev 451 0 R +/Next 459 0 R +>> endobj +451 0 obj << +/Title 452 0 R +/A 449 0 R +/Parent 403 0 R +/Prev 447 0 R +/Next 455 0 R +>> endobj +447 0 obj << +/Title 448 0 R +/A 445 0 R +/Parent 403 0 R +/Prev 443 0 R +/Next 451 0 R +>> endobj +443 0 obj << +/Title 444 0 R +/A 441 0 R +/Parent 403 0 R +/Prev 439 0 R +/Next 447 0 R +>> endobj +439 0 obj << +/Title 440 0 R +/A 437 0 R +/Parent 403 0 R +/Prev 435 0 R +/Next 443 0 R +>> endobj +435 0 obj << +/Title 436 0 R +/A 433 0 R +/Parent 403 0 R +/Prev 431 0 R +/Next 439 0 R +>> endobj +431 0 obj << +/Title 432 0 R +/A 429 0 R +/Parent 403 0 R +/Prev 427 0 R +/Next 435 0 R +>> endobj +427 0 obj << +/Title 428 0 R +/A 425 0 R +/Parent 403 0 R +/Prev 423 0 R +/Next 431 0 R +>> endobj +423 0 obj << +/Title 424 0 R +/A 421 0 R +/Parent 403 0 R +/Prev 419 0 R +/Next 427 0 R +>> endobj +419 0 obj << +/Title 420 0 R +/A 417 0 R +/Parent 403 0 R +/Prev 415 0 R +/Next 423 0 R +>> endobj +415 0 obj << +/Title 416 0 R +/A 413 0 R +/Parent 403 0 R +/Prev 411 0 R +/Next 419 0 R +>> endobj +411 0 obj << +/Title 412 0 R +/A 409 0 R +/Parent 403 0 R +/Prev 407 0 R +/Next 415 0 R +>> endobj +407 0 obj << +/Title 408 0 R +/A 405 0 R +/Parent 403 0 R +/Next 411 0 R +>> endobj +403 0 obj << +/Title 404 0 R +/A 401 0 R +/Parent 387 0 R +/Prev 395 0 R +/Next 483 0 R +/First 407 0 R +/Last 479 0 R +/Count -19 +>> endobj +399 0 obj << +/Title 400 0 R +/A 397 0 R +/Parent 395 0 R +>> endobj +395 0 obj << +/Title 396 0 R +/A 393 0 R +/Parent 387 0 R +/Prev 391 0 R +/Next 403 0 R +/First 399 0 R +/Last 399 0 R +/Count -1 +>> endobj +391 0 obj << +/Title 392 0 R +/A 389 0 R +/Parent 387 0 R +/Next 395 0 R +>> endobj +387 0 obj << +/Title 388 0 R +/A 385 0 R +/Parent 159 0 R +/Prev 315 0 R +/Next 551 0 R +/First 391 0 R +/Last 503 0 R +/Count -5 +>> endobj +383 0 obj << +/Title 384 0 R +/A 381 0 R +/Parent 375 0 R +/Prev 379 0 R +>> endobj +379 0 obj << +/Title 380 0 R +/A 377 0 R +/Parent 375 0 R +/Next 383 0 R +>> endobj +375 0 obj << +/Title 376 0 R +/A 373 0 R +/Parent 315 0 R +/Prev 355 0 R +/First 379 0 R +/Last 383 0 R +/Count -2 +>> endobj +371 0 obj << +/Title 372 0 R +/A 369 0 R +/Parent 355 0 R +/Prev 367 0 R +>> endobj +367 0 obj << +/Title 368 0 R +/A 365 0 R +/Parent 355 0 R +/Prev 363 0 R +/Next 371 0 R +>> endobj +363 0 obj << +/Title 364 0 R +/A 361 0 R +/Parent 355 0 R +/Prev 359 0 R +/Next 367 0 R +>> endobj +359 0 obj << +/Title 360 0 R +/A 357 0 R +/Parent 355 0 R +/Next 363 0 R +>> endobj +355 0 obj << +/Title 356 0 R +/A 353 0 R +/Parent 315 0 R +/Prev 331 0 R +/Next 375 0 R +/First 359 0 R +/Last 371 0 R +/Count -4 +>> endobj +351 0 obj << +/Title 352 0 R +/A 349 0 R +/Parent 331 0 R +/Prev 347 0 R +>> endobj +347 0 obj << +/Title 348 0 R +/A 345 0 R +/Parent 331 0 R +/Prev 343 0 R +/Next 351 0 R +>> endobj +343 0 obj << +/Title 344 0 R +/A 341 0 R +/Parent 331 0 R +/Prev 339 0 R +/Next 347 0 R +>> endobj +339 0 obj << +/Title 340 0 R +/A 337 0 R +/Parent 331 0 R +/Prev 335 0 R +/Next 343 0 R +>> endobj +335 0 obj << +/Title 336 0 R +/A 333 0 R +/Parent 331 0 R +/Next 339 0 R +>> endobj +331 0 obj << +/Title 332 0 R +/A 329 0 R +/Parent 315 0 R +/Prev 323 0 R +/Next 355 0 R +/First 335 0 R +/Last 351 0 R +/Count -5 +>> endobj +327 0 obj << +/Title 328 0 R +/A 325 0 R +/Parent 323 0 R +>> endobj +323 0 obj << +/Title 324 0 R +/A 321 0 R +/Parent 315 0 R +/Prev 319 0 R +/Next 331 0 R +/First 327 0 R +/Last 327 0 R +/Count -1 +>> endobj +319 0 obj << +/Title 320 0 R +/A 317 0 R +/Parent 315 0 R +/Next 323 0 R +>> endobj +315 0 obj << +/Title 316 0 R +/A 313 0 R +/Parent 159 0 R +/Prev 251 0 R +/Next 387 0 R +/First 319 0 R +/Last 375 0 R +/Count -5 +>> endobj +311 0 obj << +/Title 312 0 R +/A 309 0 R +/Parent 291 0 R +/Prev 307 0 R +>> endobj +307 0 obj << +/Title 308 0 R +/A 305 0 R +/Parent 291 0 R +/Prev 303 0 R +/Next 311 0 R +>> endobj +303 0 obj << +/Title 304 0 R +/A 301 0 R +/Parent 291 0 R +/Prev 299 0 R +/Next 307 0 R +>> endobj +299 0 obj << +/Title 300 0 R +/A 297 0 R +/Parent 291 0 R +/Prev 295 0 R +/Next 303 0 R +>> endobj +295 0 obj << +/Title 296 0 R +/A 293 0 R +/Parent 291 0 R +/Next 299 0 R +>> endobj +291 0 obj << +/Title 292 0 R +/A 289 0 R +/Parent 251 0 R +/Prev 271 0 R +/First 295 0 R +/Last 311 0 R +/Count -5 +>> endobj +287 0 obj << +/Title 288 0 R +/A 285 0 R +/Parent 271 0 R +/Prev 283 0 R +>> endobj +283 0 obj << +/Title 284 0 R +/A 281 0 R +/Parent 271 0 R +/Prev 279 0 R +/Next 287 0 R +>> endobj +279 0 obj << +/Title 280 0 R +/A 277 0 R +/Parent 271 0 R +/Prev 275 0 R +/Next 283 0 R +>> endobj +275 0 obj << +/Title 276 0 R +/A 273 0 R +/Parent 271 0 R +/Next 279 0 R +>> endobj +271 0 obj << +/Title 272 0 R +/A 269 0 R +/Parent 251 0 R +/Prev 259 0 R +/Next 291 0 R +/First 275 0 R +/Last 287 0 R +/Count -4 +>> endobj +267 0 obj << +/Title 268 0 R +/A 265 0 R +/Parent 259 0 R +/Prev 263 0 R +>> endobj +263 0 obj << +/Title 264 0 R +/A 261 0 R +/Parent 259 0 R +/Next 267 0 R +>> endobj +259 0 obj << +/Title 260 0 R +/A 257 0 R +/Parent 251 0 R +/Prev 255 0 R +/Next 271 0 R +/First 263 0 R +/Last 267 0 R +/Count -2 +>> endobj +255 0 obj << +/Title 256 0 R +/A 253 0 R +/Parent 251 0 R +/Next 259 0 R +>> endobj +251 0 obj << +/Title 252 0 R +/A 249 0 R +/Parent 159 0 R +/Prev 187 0 R +/Next 315 0 R +/First 255 0 R +/Last 291 0 R +/Count -4 +>> endobj +247 0 obj << +/Title 248 0 R +/A 245 0 R +/Parent 227 0 R +/Prev 243 0 R +>> endobj +243 0 obj << +/Title 244 0 R +/A 241 0 R +/Parent 227 0 R +/Prev 239 0 R +/Next 247 0 R +>> endobj +239 0 obj << +/Title 240 0 R +/A 237 0 R +/Parent 227 0 R +/Prev 235 0 R +/Next 243 0 R +>> endobj +235 0 obj << +/Title 236 0 R +/A 233 0 R +/Parent 227 0 R +/Prev 231 0 R +/Next 239 0 R +>> endobj +231 0 obj << +/Title 232 0 R +/A 229 0 R +/Parent 227 0 R +/Next 235 0 R +>> endobj +227 0 obj << +/Title 228 0 R +/A 225 0 R +/Parent 187 0 R +/Prev 207 0 R +/First 231 0 R +/Last 247 0 R +/Count -5 +>> endobj +223 0 obj << +/Title 224 0 R +/A 221 0 R +/Parent 207 0 R +/Prev 219 0 R +>> endobj +219 0 obj << +/Title 220 0 R +/A 217 0 R +/Parent 207 0 R +/Prev 215 0 R +/Next 223 0 R +>> endobj +215 0 obj << +/Title 216 0 R +/A 213 0 R +/Parent 207 0 R +/Prev 211 0 R +/Next 219 0 R +>> endobj +211 0 obj << +/Title 212 0 R +/A 209 0 R +/Parent 207 0 R +/Next 215 0 R +>> endobj +207 0 obj << +/Title 208 0 R +/A 205 0 R +/Parent 187 0 R +/Prev 195 0 R +/Next 227 0 R +/First 211 0 R +/Last 223 0 R +/Count -4 +>> endobj +203 0 obj << +/Title 204 0 R +/A 201 0 R +/Parent 195 0 R +/Prev 199 0 R +>> endobj +199 0 obj << +/Title 200 0 R +/A 197 0 R +/Parent 195 0 R +/Next 203 0 R +>> endobj +195 0 obj << +/Title 196 0 R +/A 193 0 R +/Parent 187 0 R +/Prev 191 0 R +/Next 207 0 R +/First 199 0 R +/Last 203 0 R +/Count -2 +>> endobj +191 0 obj << +/Title 192 0 R +/A 189 0 R +/Parent 187 0 R +/Next 195 0 R +>> endobj +187 0 obj << +/Title 188 0 R +/A 185 0 R +/Parent 159 0 R +/Prev 163 0 R +/Next 251 0 R +/First 191 0 R +/Last 227 0 R +/Count -4 +>> endobj +183 0 obj << +/Title 184 0 R +/A 181 0 R +/Parent 171 0 R +/Prev 179 0 R +>> endobj +179 0 obj << +/Title 180 0 R +/A 177 0 R +/Parent 171 0 R +/Prev 175 0 R +/Next 183 0 R +>> endobj +175 0 obj << +/Title 176 0 R +/A 173 0 R +/Parent 171 0 R +/Next 179 0 R +>> endobj +171 0 obj << +/Title 172 0 R +/A 169 0 R +/Parent 163 0 R +/Prev 167 0 R +/First 175 0 R +/Last 183 0 R +/Count -3 +>> endobj +167 0 obj << +/Title 168 0 R +/A 165 0 R +/Parent 163 0 R +/Next 171 0 R +>> endobj +163 0 obj << +/Title 164 0 R +/A 161 0 R +/Parent 159 0 R +/Next 187 0 R +/First 167 0 R +/Last 171 0 R +/Count -2 +>> endobj +159 0 obj << +/Title 160 0 R +/A 157 0 R +/Parent 11301 0 R +/Prev 91 0 R +/Next 4283 0 R +/First 163 0 R +/Last 4239 0 R +/Count -63 +>> endobj +155 0 obj << +/Title 156 0 R +/A 153 0 R +/Parent 91 0 R +/Prev 151 0 R +>> endobj +151 0 obj << +/Title 152 0 R +/A 149 0 R +/Parent 91 0 R +/Prev 139 0 R +/Next 155 0 R +>> endobj +147 0 obj << +/Title 148 0 R +/A 145 0 R +/Parent 143 0 R +>> endobj +143 0 obj << +/Title 144 0 R +/A 141 0 R +/Parent 139 0 R +/First 147 0 R +/Last 147 0 R +/Count -1 +>> endobj +139 0 obj << +/Title 140 0 R +/A 137 0 R +/Parent 91 0 R +/Prev 119 0 R +/Next 151 0 R +/First 143 0 R +/Last 143 0 R +/Count -1 +>> endobj +135 0 obj << +/Title 136 0 R +/A 133 0 R +/Parent 123 0 R +/Prev 131 0 R +>> endobj +131 0 obj << +/Title 132 0 R +/A 129 0 R +/Parent 123 0 R +/Prev 127 0 R +/Next 135 0 R +>> endobj +127 0 obj << +/Title 128 0 R +/A 125 0 R +/Parent 123 0 R +/Next 131 0 R +>> endobj +123 0 obj << +/Title 124 0 R +/A 121 0 R +/Parent 119 0 R +/First 127 0 R +/Last 135 0 R +/Count -3 +>> endobj +119 0 obj << +/Title 120 0 R +/A 117 0 R +/Parent 91 0 R +/Prev 115 0 R +/Next 139 0 R +/First 123 0 R +/Last 123 0 R +/Count -1 +>> endobj +115 0 obj << +/Title 116 0 R +/A 113 0 R +/Parent 91 0 R +/Prev 103 0 R +/Next 119 0 R +>> endobj +111 0 obj << +/Title 112 0 R +/A 109 0 R +/Parent 107 0 R +>> endobj +107 0 obj << +/Title 108 0 R +/A 105 0 R +/Parent 103 0 R +/First 111 0 R +/Last 111 0 R +/Count -1 +>> endobj +103 0 obj << +/Title 104 0 R +/A 101 0 R +/Parent 91 0 R +/Prev 99 0 R +/Next 115 0 R +/First 107 0 R +/Last 107 0 R +/Count -1 +>> endobj +99 0 obj << +/Title 100 0 R +/A 97 0 R +/Parent 91 0 R +/Prev 95 0 R +/Next 103 0 R +>> endobj +95 0 obj << +/Title 96 0 R +/A 93 0 R +/Parent 91 0 R +/Next 99 0 R +>> endobj +91 0 obj << +/Title 92 0 R +/A 89 0 R +/Parent 11301 0 R +/Prev 39 0 R +/Next 159 0 R +/First 95 0 R +/Last 155 0 R +/Count -8 +>> endobj +87 0 obj << +/Title 88 0 R +/A 85 0 R +/Parent 83 0 R +>> endobj +83 0 obj << +/Title 84 0 R +/A 81 0 R +/Parent 39 0 R +/Prev 43 0 R +/First 87 0 R +/Last 87 0 R +/Count -1 +>> endobj +79 0 obj << +/Title 80 0 R +/A 77 0 R +/Parent 75 0 R +>> endobj +75 0 obj << +/Title 76 0 R +/A 73 0 R +/Parent 43 0 R +/Prev 51 0 R +/First 79 0 R +/Last 79 0 R +/Count -1 +>> endobj +71 0 obj << +/Title 72 0 R +/A 69 0 R +/Parent 51 0 R +/Prev 67 0 R +>> endobj +67 0 obj << +/Title 68 0 R +/A 65 0 R +/Parent 51 0 R +/Prev 63 0 R +/Next 71 0 R +>> endobj +63 0 obj << +/Title 64 0 R +/A 61 0 R +/Parent 51 0 R +/Prev 59 0 R +/Next 67 0 R +>> endobj +59 0 obj << +/Title 60 0 R +/A 57 0 R +/Parent 51 0 R +/Prev 55 0 R +/Next 63 0 R +>> endobj +55 0 obj << +/Title 56 0 R +/A 53 0 R +/Parent 51 0 R +/Next 59 0 R +>> endobj +51 0 obj << +/Title 52 0 R +/A 49 0 R +/Parent 43 0 R +/Prev 47 0 R +/Next 75 0 R +/First 55 0 R +/Last 71 0 R +/Count -5 +>> endobj +47 0 obj << +/Title 48 0 R +/A 45 0 R +/Parent 43 0 R +/Next 51 0 R +>> endobj +43 0 obj << +/Title 44 0 R +/A 41 0 R +/Parent 39 0 R +/Next 83 0 R +/First 47 0 R +/Last 75 0 R +/Count -3 +>> endobj +39 0 obj << +/Title 40 0 R +/A 37 0 R +/Parent 11301 0 R +/Prev 35 0 R +/Next 91 0 R +/First 43 0 R +/Last 83 0 R +/Count -2 +>> endobj +35 0 obj << +/Title 36 0 R +/A 33 0 R +/Parent 11301 0 R +/Prev 31 0 R +/Next 39 0 R +>> endobj +31 0 obj << +/Title 32 0 R +/A 29 0 R +/Parent 11301 0 R +/Prev 27 0 R +/Next 35 0 R +>> endobj +27 0 obj << +/Title 28 0 R +/A 25 0 R +/Parent 11301 0 R +/Prev 7 0 R +/Next 31 0 R +>> endobj +23 0 obj << +/Title 24 0 R +/A 21 0 R +/Parent 11 0 R +/Prev 19 0 R +>> endobj +19 0 obj << +/Title 20 0 R +/A 17 0 R +/Parent 11 0 R +/Prev 15 0 R +/Next 23 0 R +>> endobj +15 0 obj << +/Title 16 0 R +/A 13 0 R +/Parent 11 0 R +/Next 19 0 R +>> endobj +11 0 obj << +/Title 12 0 R +/A 9 0 R +/Parent 7 0 R +/First 15 0 R +/Last 23 0 R +/Count -3 +>> endobj +7 0 obj << +/Title 8 0 R +/A 5 0 R +/Parent 11301 0 R +/Prev 3 0 R +/Next 27 0 R +/First 11 0 R +/Last 11 0 R +/Count -1 +>> endobj +3 0 obj << +/Title 4 0 R +/A 1 0 R +/Parent 11301 0 R +/Next 7 0 R +>> endobj +11302 0 obj << +/Names [(Doc-Start) 4677 0 R (Item.1) 6183 0 R (Item.2) 6184 0 R (Item.3) 6185 0 R (Item.4) 6202 0 R (Item.5) 6203 0 R] +/Limits [(Doc-Start) (Item.5)] +>> endobj +11303 0 obj << +/Names [(Item.6) 6204 0 R (_chat_channel_8cs) 11151 0 R (_chat_client_8cs) 11154 0 R (_chat_disconnect_cause_8cs) 11157 0 R (_chat_event_code_8cs) 11182 0 R (_chat_operation_code_8cs) 11185 0 R] +/Limits [(Item.6) (_chat_operation_code_8cs)] +>> endobj +11304 0 obj << +/Names [(_chat_parameter_code_8cs) 11188 0 R (_chat_peer_8cs) 11230 0 R (_chat_state_8cs) 11236 0 R (_chat_user_status_8cs) 11257 0 R (_custom_types_8cs) 9010 0 R (_enums_8cs) 10548 0 R] +/Limits [(_chat_parameter_code_8cs) (_enums_8cs)] +>> endobj +11305 0 obj << +/Names [(_enums_8cs_a8c224c940c96213eca8a8b02aa81fdb0) 10677 0 R (_enums_8cs_a8c224c940c96213eca8a8b02aa81fdb0a279497bbf0f95253e9d5bb0de757d10d) 10678 0 R (_enums_8cs_a8c224c940c96213eca8a8b02aa81fdb0ad8d9b213c7c5146145b74119aa01c9a3) 10679 0 R (_enums_8cs_acdd867d72142510ce53521a63a062f9b) 8743 0 R (_enums_8cs_acdd867d72142510ce53521a63a062f9ba10b0501000c144cb2a7424bd45e1bcde) 10667 0 R (_enums_8cs_acdd867d72142510ce53521a63a062f9ba2ec0d16e4ca169baedb9b2d50ec5c6d7) 10666 0 R] +/Limits [(_enums_8cs_a8c224c940c96213eca8a8b02aa81fdb0) (_enums_8cs_acdd867d72142510ce53521a63a062f9ba2ec0d16e4ca169baedb9b2d50ec5c6d7)] +>> endobj +11306 0 obj << +/Names [(_enums_8cs_acdd867d72142510ce53521a63a062f9baa745dcbcb79fe11077073440a0089d1b) 10668 0 R (_enums_8cs_acdd867d72142510ce53521a63a062f9bae321c53b354930ba96f0243e652df458) 10665 0 R (_enums_8cs_acdd867d72142510ce53521a63a062f9baef70e46fd3bbc21e3e1f0b6815e750c0) 10664 0 R (_enums_8cs_af823e3be9567fa753720895120c9819b) 8514 0 R (_enums_8cs_af823e3be9567fa753720895120c9819ba0b3b97fa66886c5688ee4ae80ec0c3c2) 10644 0 R (_enums_8cs_af823e3be9567fa753720895120c9819ba13b5bfe96f3e2fe411c9f66f4a582adf) 10652 0 R] +/Limits [(_enums_8cs_acdd867d72142510ce53521a63a062f9baa745dcbcb79fe11077073440a0089d1b) (_enums_8cs_af823e3be9567fa753720895120c9819ba13b5bfe96f3e2fe411c9f66f4a582adf)] +>> endobj +11307 0 obj << +/Names [(_enums_8cs_af823e3be9567fa753720895120c9819ba2cc2c74685f65f453bf6a6df1fc560df) 10648 0 R (_enums_8cs_af823e3be9567fa753720895120c9819ba334c4a4c42fdb79d7ebc3e73b517e6f8) 10653 0 R (_enums_8cs_af823e3be9567fa753720895120c9819ba43ef4393816412456a776afb5477cc24) 10650 0 R (_enums_8cs_af823e3be9567fa753720895120c9819ba4829322d03d1606fb09ae9af59a271d3) 10643 0 R (_enums_8cs_af823e3be9567fa753720895120c9819ba55add3d845bfcd87a9b0949b0da49c0a) 10646 0 R (_enums_8cs_af823e3be9567fa753720895120c9819ba8bcc25c96aa5a71f7a76309077753e67) 10647 0 R] +/Limits [(_enums_8cs_af823e3be9567fa753720895120c9819ba2cc2c74685f65f453bf6a6df1fc560df) (_enums_8cs_af823e3be9567fa753720895120c9819ba8bcc25c96aa5a71f7a76309077753e67)] +>> endobj +11308 0 obj << +/Names [(_enums_8cs_af823e3be9567fa753720895120c9819bac12e01f2a13ff5587e1e9e4aedb8242d) 10649 0 R (_enums_8cs_af823e3be9567fa753720895120c9819bacffe819d4413b95dd8c35c0085930789) 10645 0 R (_enums_8cs_af823e3be9567fa753720895120c9819badcf0d7d2cd120bf42580d43f29785dd3) 10651 0 R (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1) 10432 0 R (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a0b3b97fa66886c5688ee4ae80ec0c3c2) 10655 0 R (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a13b5bfe96f3e2fe411c9f66f4a582adf) 10663 0 R] +/Limits [(_enums_8cs_af823e3be9567fa753720895120c9819bac12e01f2a13ff5587e1e9e4aedb8242d) (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a13b5bfe96f3e2fe411c9f66f4a582adf)] +>> endobj +11309 0 obj << +/Names [(_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a2cc2c74685f65f453bf6a6df1fc560df) 10659 0 R (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a43ef4393816412456a776afb5477cc24) 10661 0 R (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a4829322d03d1606fb09ae9af59a271d3) 10654 0 R (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a55add3d845bfcd87a9b0949b0da49c0a) 10657 0 R (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a8bcc25c96aa5a71f7a76309077753e67) 10658 0 R (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1ac12e01f2a13ff5587e1e9e4aedb8242d) 10660 0 R] +/Limits [(_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1a2cc2c74685f65f453bf6a6df1fc560df) (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1ac12e01f2a13ff5587e1e9e4aedb8242d)] +>> endobj +11310 0 obj << +/Names [(_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1acffe819d4413b95dd8c35c0085930789) 10656 0 R (_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1adcf0d7d2cd120bf42580d43f29785dd3) 10662 0 R (_extensions_8cs) 10689 0 R (_extensions_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) 10692 0 R (_extensions_8cs_afa613ef589c02dbd94acc273b62cdcfd) 6098 0 R (_friend_info_8cs) 10693 0 R] +/Limits [(_enums_8cs_aff1692196dd6f4a13b64044f3b1456d1acffe819d4413b95dd8c35c0085930789) (_friend_info_8cs)] +>> endobj +11311 0 obj << +/Names [(_gizmo_type_8cs) 10695 0 R (_i_chat_client_listener_8cs) 11260 0 R (_loadbalancing_peer_8cs) 10734 0 R (_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85e) 8576 0 R (_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85ea43f0360f3d6dd072a905e7bf6343b565) 10806 0 R (_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85ea85e600e069b55d677fcc38fe96002751) 10805 0 R] +/Limits [(_gizmo_type_8cs) (_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85ea85e600e069b55d677fcc38fe96002751)] +>> endobj +11312 0 obj << +/Names [(_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85eaa5912f7a88c36ab01e9c1c38fd7bad9e) 10804 0 R (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8) 10822 0 R (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8a1cc84619677de81ee6e44149845270a3) 10825 0 R (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8a63d72051e901c069f8aa1b32aa0c43bb) 10824 0 R (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8a68ebb8ef1cbd0371b060a93d7788d460) 10826 0 R (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8a6adf97f83acf6453d4a6a4b1070f3754) 10823 0 R] +/Limits [(_loadbalancing_peer_8cs_a0b5a0270c468f91b73474bae9bbca85eaa5912f7a88c36ab01e9c1c38fd7bad9e) (_loadbalancing_peer_8cs_a56ba95f412db928c4d3998aa8a7663a8a6adf97f83acf6453d4a6a4b1070f3754)] +>> endobj +11313 0 obj << +/Names [(_loadbalancing_peer_8cs_a8058430b43015a65b81946afb4017e41) 10103 0 R (_loadbalancing_peer_8cs_a8058430b43015a65b81946afb4017e41a52ef9633d88a7480b3a938ff9eaa2a25) 10807 0 R (_loadbalancing_peer_8cs_a8058430b43015a65b81946afb4017e41ab1c94ca2fbc3e78fc30069c8d0f01680) 10808 0 R (_loadbalancing_peer_8cs_a8058430b43015a65b81946afb4017e41ad0209f4a40060d6e7c37d29979d8f444) 10809 0 R (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ad) 10488 0 R (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ada5c1bd8d2513ea60a7adcc388b0702dd9) 10828 0 R] +/Limits [(_loadbalancing_peer_8cs_a8058430b43015a65b81946afb4017e41) (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ada5c1bd8d2513ea60a7adcc388b0702dd9)] +>> endobj +11314 0 obj << +/Names [(_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ada7a1920d61156abc05a60135aefe8bc67) 10827 0 R (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74adac833c502bc8e709e70d75b82c027bb6b) 10829 0 R (_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9) 10799 0 R (_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9a1e41e14c1f9344f2db61fe8653b5b001) 10801 0 R (_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9a7a1920d61156abc05a60135aefe8bc67) 10800 0 R (_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9aa63ce0e3e810c781a410d3addc56db7f) 10802 0 R] +/Limits [(_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ada7a1920d61156abc05a60135aefe8bc67) (_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9aa63ce0e3e810c781a410d3addc56db7f)] +>> endobj +11315 0 obj << +/Names [(_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9adc2168ee308fc14616dfd264d45cfd15) 10803 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816) 10100 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a06e5db15df6ca1969b38628518d71d76) 10817 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a0dc854abbac4ba563d1151c331e58c91) 10818 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a187c171b946f4fb73de86aaee4d7aad2) 10815 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a28f79c65a5ac3ff0e04978cf99f7e540) 10812 0 R] +/Limits [(_loadbalancing_peer_8cs_abd3983d6b6f953da6a8da5402ff9f8c9adc2168ee308fc14616dfd264d45cfd15) (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a28f79c65a5ac3ff0e04978cf99f7e540)] +>> endobj +11316 0 obj << +/Names [(_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a53f67bc41da305a88205d1ded2f35954) 10814 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a92cb14adcb4e187b188c94fb74c53dab) 10816 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816ac9a823ae99d397814cb62b335ba9e0a9) 10811 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816acdf56f0af5cd6eecb93e8d808c131841) 10820 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816ad45857356b7a23b7daac5ef397b3825e) 10813 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816ae426b4afc51b756484914daadb36ad4d) 10821 0 R] +/Limits [(_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816a53f67bc41da305a88205d1ded2f35954) (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816ae426b4afc51b756484914daadb36ad4d)] +>> endobj +11317 0 obj << +/Names [(_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816aed89696ce2a8a4cfb22e37d482c72cbb) 10810 0 R (_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816af8a05e1851a5563b3aff68bf8bf8486b) 10819 0 R (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257) 7007 0 R (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a183709ebe3a1d675014d32b94ad7ed94) 10835 0 R (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a3f6fb6f058deeea1407bacefec5265a2) 10834 0 R (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a4db4563826bad0eb2f60ee6e42d0ea4b) 10831 0 R] +/Limits [(_loadbalancing_peer_8cs_ae10dce4ddb0b729888faca30c8f8e816aed89696ce2a8a4cfb22e37d482c72cbb) (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a4db4563826bad0eb2f60ee6e42d0ea4b)] +>> endobj +11318 0 obj << +/Names [(_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a6adf97f83acf6453d4a6a4b1070f3754) 10836 0 R (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a90589c47f06eb971d548591f23c285af) 10830 0 R (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257aa8a06837aec81e16c9a07221848aef6f) 10833 0 R (_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257ad85544fce402c7a2a96a48078edaf203) 10832 0 R (_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3) 10795 0 R (_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3a632c9594449737188c71ee1c8534f893) 10796 0 R] +/Limits [(_loadbalancing_peer_8cs_aeb4d921fa77465ceb160913c4950e257a6adf97f83acf6453d4a6a4b1070f3754) (_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3a632c9594449737188c71ee1c8534f893)] +>> endobj +11319 0 obj << +/Names [(_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3aa3863fc49e47221d013aed5edca1ca03) 10797 0 R (_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3ae36ec8ecce3ddc0a8ce532dd4d5133dd) 10798 0 R (_networking_peer_8cs) 10847 0 R (_networking_peer_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) 10907 0 R (_networking_peer_8cs_a85638c2837a71574f29802d46793c990) 8746 0 R (_networking_peer_8cs_a85638c2837a71574f29802d46793c990a183832aa8cc99ec3e781066d643b2d25) 10908 0 R] +/Limits [(_loadbalancing_peer_8cs_af45954e80665db66500544dbdcfd2ce3aa3863fc49e47221d013aed5edca1ca03) (_networking_peer_8cs_a85638c2837a71574f29802d46793c990a183832aa8cc99ec3e781066d643b2d25)] +>> endobj +11320 0 obj << +/Names [(_networking_peer_8cs_a85638c2837a71574f29802d46793c990a1c7d561350ce0a5a7e51b973a3796315) 10909 0 R (_networking_peer_8cs_a85638c2837a71574f29802d46793c990a6f478184dbea3df0c2e9147987c01e64) 10910 0 R (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da4cd18dd5dcd9d56224a0f41273998bdc) 6128 0 R (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da5988ddff3f148ce684fbbdb8f68896c1) 6602 0 R (_networking_peer_8cs_aef400c43b34e3ecc3f7b342aa821395da942b62b9b9c5fa148dfe59f3488d4d08) 6100 0 R (_networking_peer_8cs_afa613ef589c02dbd94acc273b62cdcfd) 10906 0 R] +/Limits [(_networking_peer_8cs_a85638c2837a71574f29802d46793c990a1c7d561350ce0a5a7e51b973a3796315) (_networking_peer_8cs_afa613ef589c02dbd94acc273b62cdcfd)] +>> endobj +11321 0 obj << +/Names [(_photon_animator_view_8cs) 11092 0 R (_photon_classes_8cs) 10936 0 R (_photon_classes_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) 10955 0 R (_photon_classes_8cs_afa613ef589c02dbd94acc273b62cdcfd) 10954 0 R (_photon_handler_8cs) 10956 0 R (_photon_handler_8cs_a0100be52d45f14348918ea69ec09f959) 10959 0 R] +/Limits [(_photon_animator_view_8cs) (_photon_handler_8cs_a0100be52d45f14348918ea69ec09f959)] +>> endobj +11322 0 obj << +/Names [(_photon_handler_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) 10961 0 R (_photon_handler_8cs_afa613ef589c02dbd94acc273b62cdcfd) 10960 0 R (_photon_lag_simulation_gui_8cs) 10962 0 R (_photon_network_8cs) 10978 0 R (_photon_network_8cs_a0100be52d45f14348918ea69ec09f959) 10981 0 R (_photon_network_8cs_afa613ef589c02dbd94acc273b62cdcfd) 10982 0 R] +/Limits [(_photon_handler_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) (_photon_network_8cs_afa613ef589c02dbd94acc273b62cdcfd)] +>> endobj +11323 0 obj << +/Names [(_photon_player_8cs) 10983 0 R (_photon_player_8cs_afa613ef589c02dbd94acc273b62cdcfd) 10986 0 R (_photon_rigidbody2_d_view_8cs) 11094 0 R (_photon_rigidbody_view_8cs) 11096 0 R (_photon_stats_gui_8cs) 10987 0 R (_photon_stream_queue_8cs) 11020 0 R] +/Limits [(_photon_player_8cs) (_photon_stream_queue_8cs)] +>> endobj +11324 0 obj << +/Names [(_photon_transform_view_8cs) 11098 0 R (_photon_transform_view_position_control_8cs) 11110 0 R (_photon_transform_view_position_model_8cs) 11112 0 R (_photon_transform_view_rotation_control_8cs) 11114 0 R (_photon_transform_view_rotation_model_8cs) 11116 0 R (_photon_transform_view_scale_control_8cs) 11118 0 R] +/Limits [(_photon_transform_view_8cs) (_photon_transform_view_scale_control_8cs)] +>> endobj +11325 0 obj << +/Names [(_photon_transform_view_scale_model_8cs) 11149 0 R (_photon_view_8cs) 11022 0 R (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2) 9780 0 R (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2a13b388a622bc4a923c74b50c6f05ec13) 11028 0 R (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2aa2090ce6165d865de2f99434311550a2) 9782 0 R (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2aa5c1fc068f4516291607c2b43fd4e229) 11033 0 R] +/Limits [(_photon_transform_view_scale_model_8cs) (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2aa5c1fc068f4516291607c2b43fd4e229)] +>> endobj +11326 0 obj << +/Names [(_photon_view_8cs_a2188da6000e577148a984d5c78b279d2ab1c94ca2fbc3e78fc30069c8d0f01680) 11035 0 R (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2af18c3625579a7ac187ea5252f4be51e1) 11034 0 R (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3) 9783 0 R (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3a09e2739a1a164c20187c61c27b690cda) 11026 0 R (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3a73f73a9364f6e0d2b6a30a1a94ecfc26) 11027 0 R (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3ab1c94ca2fbc3e78fc30069c8d0f01680) 9785 0 R] +/Limits [(_photon_view_8cs_a2188da6000e577148a984d5c78b279d2ab1c94ca2fbc3e78fc30069c8d0f01680) (_photon_view_8cs_a30dff10dfe67eb47ed952eac57dd6dc3ab1c94ca2fbc3e78fc30069c8d0f01680)] +>> endobj +11327 0 obj << +/Names [(_photon_view_8cs_adca9c5e682d5417add581b004cd5b990) 9778 0 R (_photon_view_8cs_adca9c5e682d5417add581b004cd5b990a4675cf4fdfedd2c2b31b60eff2d5a4da) 11030 0 R (_photon_view_8cs_adca9c5e682d5417add581b004cd5b990a921d92d43c84141ff815c24c48431c2e) 11032 0 R (_photon_view_8cs_adca9c5e682d5417add581b004cd5b990a98a19ff88f463baefac152f8641dea36) 11031 0 R (_photon_view_8cs_adca9c5e682d5417add581b004cd5b990ad15305d7a4e34e02489c74a5ef542f36) 11029 0 R (_photon_view_8cs_afcc67b7812df847096e32bd0a953b39f) 9786 0 R] +/Limits [(_photon_view_8cs_adca9c5e682d5417add581b004cd5b990) (_photon_view_8cs_afcc67b7812df847096e32bd0a953b39f)] +>> endobj +11328 0 obj << +/Names [(_photon_view_8cs_afcc67b7812df847096e32bd0a953b39fa15c2d85f1fae22a3c3a0594510a1f611) 11037 0 R (_photon_view_8cs_afcc67b7812df847096e32bd0a953b39fa4457d440870ad6d42bab9082d9bf9b61) 9788 0 R (_photon_view_8cs_afcc67b7812df847096e32bd0a953b39fa9d42dba7120418ef641edb36d0edf0cb) 11036 0 R (_ping_cloud_regions_8cs) 11050 0 R (_ping_cloud_regions_8cs_a0100be52d45f14348918ea69ec09f959) 11053 0 R (_ping_cloud_regions_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0) 11054 0 R] +/Limits [(_photon_view_8cs_afcc67b7812df847096e32bd0a953b39fa15c2d85f1fae22a3c3a0594510a1f611) (_ping_cloud_regions_8cs_a4f22422f74b51c3b696d9c0e5dcb96b0)] +>> endobj +11329 0 obj << +/Names [(_r_p_c_8cs) 11070 0 R (_room_8cs) 11055 0 R (_room_info_8cs) 11068 0 R (_rpc_index_component_8cs) 11072 0 R (_server_settings_8cs) 11073 0 R (_socket_web_tcp_8cs) 11091 0 R] +/Limits [(_r_p_c_8cs) (_socket_web_tcp_8cs)] +>> endobj +11330 0 obj << +/Names [(chapter*.1) 4715 0 R (chapter.1) 2 0 R (chapter.2) 6 0 R (chapter.3) 26 0 R (chapter.4) 30 0 R (chapter.5) 34 0 R] +/Limits [(chapter*.1) (chapter.5)] +>> endobj +11331 0 obj << +/Names [(chapter.6) 38 0 R (chapter.7) 90 0 R (chapter.8) 158 0 R (chapter.9) 4282 0 R (class_actor_properties) 6922 0 R (class_actor_properties_a08edbcddcc29b968467fe728e478eaa4) 6926 0 R] +/Limits [(chapter.6) (class_actor_properties_a08edbcddcc29b968467fe728e478eaa4)] +>> endobj +11332 0 obj << +/Names [(class_actor_properties_a61f77cdeb2dffd485952b106feec37bb) 6924 0 R (class_actor_properties_acfa9b932f472314d1efe0f0dad359524) 6925 0 R (class_authentication_values) 6997 0 R (class_authentication_values_a0fa90664bfe590fec56cf4f399ff26b2) 7011 0 R (class_authentication_values_a25eb4617207f2cb2f97ecbf91091ed96) 7001 0 R (class_authentication_values_a3fd84b1b6fca86c6838d6c2fff8926e0) 7004 0 R] +/Limits [(class_actor_properties_a61f77cdeb2dffd485952b106feec37bb) (class_authentication_values_a3fd84b1b6fca86c6838d6c2fff8926e0)] +>> endobj +11333 0 obj << +/Names [(class_authentication_values_a59e9550389ab702b9bc033eeb6e117a2) 7002 0 R (class_authentication_values_a60a4d92454c4b2bbca1f299631da2f94) 7012 0 R (class_authentication_values_a6902d22f3f59653cac4ee895273ed5c5) 7008 0 R (class_authentication_values_a960384fb735ced0be6ee2d3e365fd5aa) 7009 0 R (class_authentication_values_adac06329a99f2a0035e485e45460d9af) 7003 0 R (class_authentication_values_ae5df4bb87c20c0e83e1f13ca126a3b5f) 7010 0 R] +/Limits [(class_authentication_values_a59e9550389ab702b9bc033eeb6e117a2) (class_authentication_values_ae5df4bb87c20c0e83e1f13ca126a3b5f)] +>> endobj +11334 0 obj << +/Names [(class_authentication_values_af74e9d15a79034c547ea621bb70899b4) 7006 0 R (class_authentication_values_af800bbd7144b184c244277c37297dba1) 7005 0 R (class_encryption_data_parameters) 7405 0 R (class_encryption_data_parameters_a60cf6b811cc22df22cb516c1ce93be54) 7408 0 R (class_encryption_data_parameters_a837720bb0e44718f0a815f7fa5cf7d76) 7409 0 R (class_encryption_data_parameters_a93bed68ee0b94820d7579c2b3010a309) 7407 0 R] +/Limits [(class_authentication_values_af74e9d15a79034c547ea621bb70899b4) (class_encryption_data_parameters_a93bed68ee0b94820d7579c2b3010a309)] +>> endobj +11335 0 obj << +/Names [(class_error_code) 6600 0 R (class_error_code_a0f2f47487dda3e4731fb00da4447df72) 7523 0 R (class_error_code_a10cbd27d35c99b76eee99f90247a0a0d) 7520 0 R (class_error_code_a1c4efacb70415130bd0dda612c9fd99e) 7490 0 R (class_error_code_a1c7a999816947e7e4db6f0c9b3e444ad) 7535 0 R (class_error_code_a20d30b808843239ec76b929ef2c316e5) 7485 0 R] +/Limits [(class_error_code) (class_error_code_a20d30b808843239ec76b929ef2c316e5)] +>> endobj +11336 0 obj << +/Names [(class_error_code_a2366ccf7d7ec923b52be91c277bc7405) 7534 0 R (class_error_code_a28b15046c7f8086552e38ba805a241af) 7538 0 R (class_error_code_a294ef9a4f4abbfd3defd4c0db705ba61) 7527 0 R (class_error_code_a2c2a6c12d1f2a7c7f02cecfdd6aa0db3) 7484 0 R (class_error_code_a40e5e7b6bf6688df5c6de67e9922fd5b) 7521 0 R (class_error_code_a511ab919439555b4edc36bf28d821e0b) 7533 0 R] +/Limits [(class_error_code_a2366ccf7d7ec923b52be91c277bc7405) (class_error_code_a511ab919439555b4edc36bf28d821e0b)] +>> endobj +11337 0 obj << +/Names [(class_error_code_a589b20e6c22d3c24bf3969e75b2868f6) 7482 0 R (class_error_code_a60de7771513847052846f54e5debbaf9) 7532 0 R (class_error_code_a77dd2b2f1f69b7f2883afb0266b04e5c) 7486 0 R (class_error_code_a7aefe6e82478c9a479b7e925e27130b7) 7530 0 R (class_error_code_a7f823534f0d35beb53a78d6083a69d2d) 7489 0 R (class_error_code_a8126103517b94ed6ebd0c92c6a832e4a) 7536 0 R] +/Limits [(class_error_code_a589b20e6c22d3c24bf3969e75b2868f6) (class_error_code_a8126103517b94ed6ebd0c92c6a832e4a)] +>> endobj +11338 0 obj << +/Names [(class_error_code_a84290da3689bc3ea86a19c488ede9d6f) 7522 0 R (class_error_code_a872edd00cf4eab84fab8fd69c2d90a74) 7487 0 R (class_error_code_ab693a622556ed2e6aa7095b2ec29fc41) 7524 0 R (class_error_code_ab799ccd0f66a406266346f29c5c46538) 7525 0 R (class_error_code_abaf9c6de084558d58e8387e278837a00) 7529 0 R (class_error_code_ac3ca1983dd44173e855b61f87961fbd9) 7531 0 R] +/Limits [(class_error_code_a84290da3689bc3ea86a19c488ede9d6f) (class_error_code_ac3ca1983dd44173e855b61f87961fbd9)] +>> endobj +11339 0 obj << +/Names [(class_error_code_ac764d0c308a4249ab16939ef30cc00c8) 7519 0 R (class_error_code_acb92a50685729588d3dfc4594b1e0595) 7526 0 R (class_error_code_acf7dfe0e3482105d028c258b6bab0b17) 7488 0 R (class_error_code_adb4ef5f067b08c6bdc7cb0a672c357f7) 7528 0 R (class_error_code_ae522215ae10edc565a60b7790637e262) 7537 0 R (class_error_code_ae5e576ba8cd8ba6c430789a3244587b9) 7483 0 R] +/Limits [(class_error_code_ac764d0c308a4249ab16939ef30cc00c8) (class_error_code_ae5e576ba8cd8ba6c430789a3244587b9)] +>> endobj +11340 0 obj << +/Names [(class_event_code) 7584 0 R (class_event_code_a0058917d1018cde229ae231366e60325) 7598 0 R (class_event_code_a0ab9a45c50351f9fef9cf11ca9c50f10) 7599 0 R (class_event_code_a1ec979abe73b626a2b17b1a2d5db06dd) 7586 0 R (class_event_code_a2371306aa8691dbea0f3e05687f2a5d5) 7593 0 R (class_event_code_a34917fc738d56feff082f993d13e52e6) 7596 0 R] +/Limits [(class_event_code) (class_event_code_a34917fc738d56feff082f993d13e52e6)] +>> endobj +11341 0 obj << +/Names [(class_event_code_a395440a821a6c6400b9df174fb366fa1) 7595 0 R (class_event_code_a59dfbd091af6bb7cdc69802c39ea414b) 7589 0 R (class_event_code_a7ce7fa1807af9b040e3066ef62a35e6c) 7597 0 R (class_event_code_a7f4c65ba232d561a371baa95148b3ee3) 7590 0 R (class_event_code_a7fe212e647bd96d83003bb053b243440) 7588 0 R (class_event_code_a805b47e96977c416d2c7c34adaa75c2c) 7591 0 R] +/Limits [(class_event_code_a395440a821a6c6400b9df174fb366fa1) (class_event_code_a805b47e96977c416d2c7c34adaa75c2c)] +>> endobj +11342 0 obj << +/Names [(class_event_code_a8764d71552a912c1db73d41c7e4fb01f) 7594 0 R (class_event_code_a9f7e3812d0fea07355c6f4468e3983f3) 7587 0 R (class_event_code_ac3ccf8aec263389580df5634f8788e3a) 7592 0 R (class_exit_games_1_1_client_1_1_g_u_i_1_1_gizmo_type_drawer) 6748 0 R (class_exit_games_1_1_client_1_1_g_u_i_1_1_gizmo_type_drawer_a9a9c702995c512168fae27aefc07f666) 7718 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values) 6828 0 R] +/Limits [(class_event_code_a8764d71552a912c1db73d41c7e4fb01f) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values)] +>> endobj +11343 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a083a5547fef3709586481254c256e04e) 6958 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a2b0231eb3737127f6c905fca3bda5976) 6955 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a400c002afb41d2ea2a2288e3d010afa6) 6962 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a551321f83ae6ae95688ebfa99251daf4) 6956 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a62980bf198ce9565c41d408a4df93310) 6961 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a62b771eb77744555663093db81de52ad) 6960 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a083a5547fef3709586481254c256e04e) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a62b771eb77744555663093db81de52ad)] +>> endobj +11344 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a731ad99cd27c9c9943ebae6e7aade2e2) 6954 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a8736f9ea3a807749dfe4bdbab4d4ff5a) 6959 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_aa1a218337b71411767e9d5ef7740bf02) 6953 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_abe4f64001e4651f97f688a44992caa3b) 6963 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_ad82074fee0c1ef809978e612dd882405) 6957 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel) 6829 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a731ad99cd27c9c9943ebae6e7aade2e2) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel)] +>> endobj +11345 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a17c00992e4bc685fbea02345c8e206cb) 7042 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a289e0448db95485404474b3702e80943) 7044 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a2e1d1cb310690b115794661ffdbb68b2) 7040 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a3486dbba0f3a83529fe4f327375548cb) 7069 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a5f663f2af6204ea58ab29a5ee2bee316) 7066 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a647d38d28697bcb1c6600520130d4cbf) 7068 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a17c00992e4bc685fbea02345c8e206cb) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a647d38d28697bcb1c6600520130d4cbf)] +>> endobj +11346 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a6aee5506a39fd2a26113addf8287f31a) 7046 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a6ed4416ea6c6778dd857c95f3276a005) 7067 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a837567f440a3174151eab88afb34d019) 7045 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a91a15ffc97cfd40eea6cf7965b99e5dc) 7070 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_aa672474d138d6e1a4d7ef8c4ec616617) 7043 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_ad5488b697206375ef6b13d4fa33eafdf) 7065 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_a6aee5506a39fd2a26113addf8287f31a) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_channel_ad5488b697206375ef6b13d4fa33eafdf)] +>> endobj +11347 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) 6830 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a05085dc638466b2660f1c694f90fbf8e) 7178 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a0a8f7a1907bebc71607c3adedf11b9fd) 7131 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a21acfc202dc0114eabdba678e03f21f1) 7127 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a24f6e608fc1b838de8de908c6756571f) 7138 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a25f9db0c022bb0feda81d31f43053a81) 7072 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a25f9db0c022bb0feda81d31f43053a81)] +>> endobj +11348 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a3506656c033fb2bdc7822275aab6dac2) 7184 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a423b766a0d908278cdced1e149d197b4) 7132 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a4693102ef8b77518b9eed0cbbdd650e1) 7175 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a4e5b2c3dc8f4e43b053bd3436dd39c5f) 7126 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a4fb7f78c7820b02fb0ec3c173ff0d2d5) 7125 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5088b919addd1ae88cf8ed72d68c52c2) 7124 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a3506656c033fb2bdc7822275aab6dac2) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5088b919addd1ae88cf8ed72d68c52c2)] +>> endobj +11349 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a518706086a60688c5dbe946e3b437491) 7139 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5b8e2b595533f33e5c298fe5ced2726b) 7176 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5c03b22e8271f95ee0b46ebbd2bac651) 7182 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5d233da812511bdf2f833461d4a501b6) 7130 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a5d523809d52088df6fbd8927523d6238) 7177 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a66aa30bff5ca81b1a1811d8e36b09546) 7136 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a518706086a60688c5dbe946e3b437491) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a66aa30bff5ca81b1a1811d8e36b09546)] +>> endobj +11350 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a66e028cd73b441bbdd8d37ee0e2b1dee) 7142 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a6b1cdbd8b56655e88e678441452f65a1) 7141 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a6f6d0d0942fff96f3be1d7efbe1c00be) 7129 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a71c10e565150962413bb1abaa89af66a) 7179 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a8071d5a27bc1828fdcb19deee57deac2) 7137 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a876c9a53400fe18fc365775ca728928f) 7181 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a66e028cd73b441bbdd8d37ee0e2b1dee) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a876c9a53400fe18fc365775ca728928f)] +>> endobj +11351 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a8f757bc4e9f4038dc388a8fee3f47150) 7183 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a96bec51384215e8622397b8fe2fc90e1) 7180 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a9ae2d62c65f72f1ebea7b22ca8ce3b91) 7135 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aa3d4261b652969dd5f94971ca48f5a7e) 7071 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_ad48f9b88b0635c9f2363322123044fb8) 7140 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aecfdac4a2de6577291597477bcaec9c7) 7041 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a8f757bc4e9f4038dc388a8fee3f47150) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aecfdac4a2de6577291597477bcaec9c7)] +>> endobj +11352 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aef3dc7f94f289f1dab629cbf647875db) 7143 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_af3dade275735d7490a9872e965e6830f) 7134 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_af4140117fa6da92e0a428c9666cfea94) 7123 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_af671de33e90172784c8b0392571a1d72) 7133 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_af9ac75f889489a06dbc8f6d7881367c4) 7128 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_afc6baf1a806a9a9ea803b14889ffb8c3) 7174 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_aef3dc7f94f289f1dab629cbf647875db) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_afc6baf1a806a9a9ea803b14889ffb8c3)] +>> endobj +11353 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code) 6831 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a3b479b981bb71508f954d8dcf7390552) 7265 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a3d73aefea41f86d82c9c4895e595250a) 7264 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a87ce4bd7e75af0c0dff70221ba197dcc) 7263 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a8aac3f985184cfbe4e228510d8f94c86) 7262 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a9746eb3bc69c51490ee9834efa47c74f) 7267 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_a9746eb3bc69c51490ee9834efa47c74f)] +>> endobj +11354 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_ab7e29d342c622f6c6831c7c20638871e) 7261 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_ad5cb96a758e791541abac48e347f7517) 7266 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code) 6832 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a0f990d91b96cc9540bd90bb00e1cd59a) 7289 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a32c3f60a2876738427dca3f2de3bdb30) 7287 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a5adb2a4d7ca5b4edd59bef60d9d1ccae) 7294 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_event_code_ab7e29d342c622f6c6831c7c20638871e) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a5adb2a4d7ca5b4edd59bef60d9d1ccae)] +>> endobj +11355 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a73fb9701994e0bff895effbb28361f68) 7291 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a740302e78e835ec1753d4cfa356be98f) 7288 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a76eac50d9c1919c0dfd65cde6d0f2464) 7292 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_abb220662c7522ea1b0943bb845b6c7dc) 7290 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_ade61a55585e9a364cdfaabc6c8b55e5a) 7293 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_af1232f522b282a7a5111802982b9ba42) 7286 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_a73fb9701994e0bff895effbb28361f68) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_af1232f522b282a7a5111802982b9ba42)] +>> endobj +11356 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code) 6833 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a0a54ebe20f51af2268716891be3d6570) 7333 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a3125fb72f9cff51b552d77abd26bdcfe) 7328 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a4725b80416516202851fced3224ddf10) 7332 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a4991d2c2c138a78d8c95be54d1c805da) 7336 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a556f1d5a6cc2e8fb7dfb4f80fa39311b) 7306 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a556f1d5a6cc2e8fb7dfb4f80fa39311b)] +>> endobj +11357 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a57a10f00289e58aff71bdabf7cf4f319) 7305 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a7e8317fba9446f840f9f76af1ed77a05) 7331 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a967db1960edbaaa9ee6de1cad924569b) 7326 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_aaaeab778bcf9ca4da5add8112086e360) 7335 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_abc7e73d686ae0713e349611c6ddd7a8e) 7334 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_ac71ce98ee09da1f9b010b11e8d6f73aa) 7338 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_a57a10f00289e58aff71bdabf7cf4f319) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_ac71ce98ee09da1f9b010b11e8d6f73aa)] +>> endobj +11358 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_ac8bd1610fc654ffbd7f37af327116d51) 7337 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_ad3428d51c4eac42c0de3aa6d5819ecd3) 7339 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_ad5bc5de57ba8e78b5002e4a3c7b760ac) 7329 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_add457c04174a03d5ba481dce96f4e8b9) 7327 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_af53fe36e56bbddcc7595ef9145c232f0) 7330 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer) 6834 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code_ac8bd1610fc654ffbd7f37af327116d51) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer)] +>> endobj +11359 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_a519dfbe02f058960380c92f72117dfc8) 7371 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_a782952fe0a9498b789f00f83e36d525e) 7369 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_a8eb05b4c21ba305d16c96abd95f809b7) 7370 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_a98b8e0e86ca3713afbcbe5836c732ad1) 7372 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_aea1e4db906d1cfe6c05d5215de564a7e) 7374 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_aed91dcd5ee2d58fe552890a22ce44b8c) 7368 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_a519dfbe02f058960380c92f72117dfc8) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_peer_aed91dcd5ee2d58fe552890a22ce44b8c)] +>> endobj +11360 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status) 6835 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_a3ad23f7750af493dc34e7bb84fa6edcd) 7391 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_a428da57bdeeb644c8fbeb3b1f5fb53b5) 7390 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_a5d307822db6e769821d9dc86477171e2) 7226 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_a6db26d8e73bd24a01a9239caab6c6112) 7394 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_ac0d131911c02002db06c39f7bd03d3b7) 7389 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_ac0d131911c02002db06c39f7bd03d3b7)] +>> endobj +11361 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_af729b56f77e02acbe8d1f079ace322a3) 7393 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_af9f7b1d3f7cb4f6acb966679e7080ac2) 7392 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code) 6836 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a020efa506a911d78481761219ad1a87a) 7441 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a0f067e65b9ee1a19254cddf431cf7f73) 7442 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a112f0f8b62f7271dfc9793463f389482) 7434 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_user_status_af729b56f77e02acbe8d1f079ace322a3) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a112f0f8b62f7271dfc9793463f389482)] +>> endobj +11362 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a2c770f32de9265fe53d881768167d7b4) 7444 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a305ae576c8bcc601f64595333623287a) 7436 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a432f4d428147b0455487dc2b28474e86) 7437 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a5ece2c1d9636a3725b3d38dffaeafad2) 7435 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a83ca01ddd4c0f0dd69c9ae9d135716dc) 7439 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a989671a923b1616f8831545f9e5baf01) 7445 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a2c770f32de9265fe53d881768167d7b4) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a989671a923b1616f8831545f9e5baf01)] +>> endobj +11363 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_aa6418d5e27dd1c577387df71dbd2d97c) 7440 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_ab1d9ee69b2b2f4112c84e6d3c2c54b6c) 7447 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_abe840b6d5d214a382cc3126010610e61) 7438 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_ae5450434e0a521ecfa9491c225e59fce) 7446 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_aefa4bbc103cc10797c8b695ec03544b0) 7443 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_af2c3cf51125257fba0d2d9f76cbb55f1) 7448 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_aa6418d5e27dd1c577387df71dbd2d97c) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_af2c3cf51125257fba0d2d9f76cbb55f1)] +>> endobj +11364 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code) 6838 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a188165801d2b627e28b1476353e103ad) 8147 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a244b3fc5ac2e8b3a97428b6534ca9da6) 8145 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a2b1f96b419566ad8b1bfc78caf261f76) 8150 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a2baac6007f6dfe71804735eb52225e9a) 8144 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a3e0593b8bebedc54bb00c47d6b079409) 8142 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a3e0593b8bebedc54bb00c47d6b079409)] +>> endobj +11365 0 obj << +/Names [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a70f578a01789db64e2aefa055fba1732) 8146 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a7fa2bc4b15e962459df490987acb4745) 8149 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a8024f1b6758fb3fa6bcb54581965d7c9) 8143 0 R (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a858cbc8aac0919b92ab761e92decf1da) 8148 0 R (class_extensions) 7632 0 R (class_extensions_a0d7e1279d0951869d76856a5ea84e7f3) 7639 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_parameter_code_a70f578a01789db64e2aefa055fba1732) (class_extensions_a0d7e1279d0951869d76856a5ea84e7f3)] +>> endobj +11366 0 obj << +/Names [(class_extensions_a1b7b71e82ac4afff238c3cf8cc5e54b0) 7645 0 R (class_extensions_a32cd3eb67b60887a800ecbc88ed7f121) 7637 0 R (class_extensions_a35fba37c30e813d78f40fbb4b88dca33) 7638 0 R (class_extensions_a59cc48f36f7bf9a0ae0f8efefff91a74) 7646 0 R (class_extensions_a646282c077a078cdaeab9184809c2e76) 7644 0 R (class_extensions_a6b5d90a1ed678d74548f4ce759b47043) 7642 0 R] +/Limits [(class_extensions_a1b7b71e82ac4afff238c3cf8cc5e54b0) (class_extensions_a6b5d90a1ed678d74548f4ce759b47043)] +>> endobj +11367 0 obj << +/Names [(class_extensions_a733a7e102e781cf0879e96d535bbd2d8) 7647 0 R (class_extensions_a740813774fff222b8d4a4f23f2fa2326) 7641 0 R (class_extensions_a7ce33f2b493f18ef1d30ffd06a249517) 7640 0 R (class_extensions_a7d1d7b0427c24c20a65ea55d51faecd5) 7654 0 R (class_extensions_abd9afd41c4e0ce06bc3b49c04bed4523) 7636 0 R (class_extensions_ac26ac025c1ad77aebc61385abb9a0aa0) 7635 0 R] +/Limits [(class_extensions_a733a7e102e781cf0879e96d535bbd2d8) (class_extensions_ac26ac025c1ad77aebc61385abb9a0aa0)] +>> endobj +11368 0 obj << +/Names [(class_extensions_ac37ceea048b52ed7df7dc2dc3ea49c04) 7643 0 R (class_extensions_ac89906aaca1f1603398873874d981417) 7648 0 R (class_friend_info) 7670 0 R (class_friend_info_a33b6ef199b025fda1898b8063f43b713) 7673 0 R (class_friend_info_a40b0b66eced3c5d88c29f6a7409d1315) 7677 0 R (class_friend_info_a62a8cc42bf1e25a3f8d2fdf7adbedeb3) 7675 0 R] +/Limits [(class_extensions_ac37ceea048b52ed7df7dc2dc3ea49c04) (class_friend_info_a62a8cc42bf1e25a3f8d2fdf7adbedeb3)] +>> endobj +11369 0 obj << +/Names [(class_friend_info_a9126b3a854a21d428ad1af0eda981bfd) 7676 0 R (class_friend_info_abe22fa87b796bce51e9250c46464e057) 7674 0 R (class_game_object_extensions) 7678 0 R (class_game_object_extensions_a2452ee61f765d9c4fbc27bf409666392) 7696 0 R (class_game_property_key) 7697 0 R (class_game_property_key_a24becd835a58abe1cbd1267607526f94) 7704 0 R] +/Limits [(class_friend_info_a9126b3a854a21d428ad1af0eda981bfd) (class_game_property_key_a24becd835a58abe1cbd1267607526f94)] +>> endobj +11370 0 obj << +/Names [(class_game_property_key_a79f4c70a196de29329f4c190da9b389c) 7705 0 R (class_game_property_key_a9cfd46c08dabfee0a0650e54c38dd41d) 7703 0 R (class_game_property_key_aa4161fbfcb2e11e18a9a5e08096d5ac0) 7701 0 R (class_game_property_key_aa8d61743bfc509faa8260341ca3e5cc2) 7700 0 R (class_game_property_key_ab502d2822a156527d8e8a1dcf8938848) 7702 0 R (class_game_property_key_ade2fa0e08b62cc99f3a18b2baaa095c5) 7699 0 R] +/Limits [(class_game_property_key_a79f4c70a196de29329f4c190da9b389c) (class_game_property_key_ade2fa0e08b62cc99f3a18b2baaa095c5)] +>> endobj +11371 0 obj << +/Names [(class_game_property_key_af08d8a2181d2b416c408403b1496ed52) 7707 0 R (class_game_property_key_afb02ab4aae7ce3f39f4cf0ee5bc9b9c0) 7706 0 R (class_help_u_r_l) 7743 0 R (class_help_u_r_l_a05ccd7cc690df9533724d2c7cc8419d8) 7745 0 R (class_operation_code) 8078 0 R (class_operation_code_a093642aa2579e1ad7c6aafc91e28c70c) 8114 0 R] +/Limits [(class_game_property_key_af08d8a2181d2b416c408403b1496ed52) (class_operation_code_a093642aa2579e1ad7c6aafc91e28c70c)] +>> endobj +11372 0 obj << +/Names [(class_operation_code_a0bb85825f6c89af48ed17ee6a7eff997) 8109 0 R (class_operation_code_a1114cce9c7f9a533469a77f0ad48b3e5) 8117 0 R (class_operation_code_a1a42bb1ca4a7e0d72418ce410bbb8b0d) 8112 0 R (class_operation_code_a22684fd1b6171ab6e21258a0a425a2d1) 8119 0 R (class_operation_code_a2cc120dfb6e75603acd7fa8c6f813885) 8105 0 R (class_operation_code_a42fcaeed38b9159d966bbc8495924ac9) 8113 0 R] +/Limits [(class_operation_code_a0bb85825f6c89af48ed17ee6a7eff997) (class_operation_code_a42fcaeed38b9159d966bbc8495924ac9)] +>> endobj +11373 0 obj << +/Names [(class_operation_code_a4d45cf8e2d6766b2cc1613508ed92304) 8121 0 R (class_operation_code_a508bcbe157617ab316b42f6e12551641) 8122 0 R (class_operation_code_a7af6e5117f55d3efc5299112e7865940) 8118 0 R (class_operation_code_aa33e652aaa457306f31741d8b4d78e80) 8115 0 R (class_operation_code_aa9c07799ccf6674d641bcf88fd65f27b) 8111 0 R (class_operation_code_ab70f6436c1fae5974e820c66ab291fd0) 8116 0 R] +/Limits [(class_operation_code_a4d45cf8e2d6766b2cc1613508ed92304) (class_operation_code_ab70f6436c1fae5974e820c66ab291fd0)] +>> endobj +11374 0 obj << +/Names [(class_operation_code_ac5d8c14445b243abacb4bdbf357d62ba) 8106 0 R (class_operation_code_af07ef9cbfd9be6c65a0e778636cc7d29) 8104 0 R (class_operation_code_af0b568d437be437d31d9eb27588dc9f6) 8110 0 R (class_operation_code_af6b5f9fc1d1cb173c4d078b7bee72e11) 8107 0 R (class_operation_code_afcf10d9c4731816a135b1e010592423c) 8108 0 R (class_operation_code_afdf083bb0c5cbd242b3a02b5af56854c) 8120 0 R] +/Limits [(class_operation_code_ac5d8c14445b243abacb4bdbf357d62ba) (class_operation_code_afdf083bb0c5cbd242b3a02b5af56854c)] +>> endobj +11375 0 obj << +/Names [(class_parameter_code) 8159 0 R (class_parameter_code_a0009ad9f8e50d67349e3295cb7420ea0) 8206 0 R (class_parameter_code_a010c8bd777442bf8c547c5ecf6874cf5) 8306 0 R (class_parameter_code_a016c3b6d2d92b725e08969cca989d4bc) 8305 0 R (class_parameter_code_a0a4e0bd7b7dfb7cc503e305c6f70e126) 8265 0 R (class_parameter_code_a0c9894a9caad2641e8053124e3001c74) 8264 0 R] +/Limits [(class_parameter_code) (class_parameter_code_a0c9894a9caad2641e8053124e3001c74)] +>> endobj +11376 0 obj << +/Names [(class_parameter_code_a0e764e415c813d30ccd343d6e58998dc) 8197 0 R (class_parameter_code_a0ebf68ac761870ce49218902d58d2b9b) 8263 0 R (class_parameter_code_a11f321547e2882495b0a72d0dd3253d0) 8213 0 R (class_parameter_code_a1530bb122ef29d3e24143cf0aefe07e8) 8217 0 R (class_parameter_code_a27a0956c0cf773371a4a45cab7ac538e) 8296 0 R (class_parameter_code_a2a6f0892c24a74942ad1fd06b429e1f7) 8266 0 R] +/Limits [(class_parameter_code_a0e764e415c813d30ccd343d6e58998dc) (class_parameter_code_a2a6f0892c24a74942ad1fd06b429e1f7)] +>> endobj +11377 0 obj << +/Names [(class_parameter_code_a2d0752d2a36dcc59026ee5afbc475831) 8292 0 R (class_parameter_code_a2ef96c9739f0db1265d3d2f9555c5dee) 8198 0 R (class_parameter_code_a2f03a14e3f937193ed05b44b332c72f4) 8294 0 R (class_parameter_code_a35b5bf3035e3e77e8f6b3af0e7f3cbdd) 8295 0 R (class_parameter_code_a3f9bca747a97dfebb9985a99cefc8d46) 8251 0 R (class_parameter_code_a482f50451b3deaac386d9d5993ec6d86) 8214 0 R] +/Limits [(class_parameter_code_a2d0752d2a36dcc59026ee5afbc475831) (class_parameter_code_a482f50451b3deaac386d9d5993ec6d86)] +>> endobj +11378 0 obj << +/Names [(class_parameter_code_a48a87958496857f3248adf5dc1a4ce04) 8298 0 R (class_parameter_code_a4c7eb043b3ab8753feaf83447e1d64f3) 8254 0 R (class_parameter_code_a4ec68978f777837045882cd08b596f70) 8216 0 R (class_parameter_code_a50d6ee26796535284d0f9a244300de28) 8249 0 R (class_parameter_code_a56c07276d621b868fbe18ce04a8b3ede) 8252 0 R (class_parameter_code_a56d42106e3806d826ee38fdf70ccdfe9) 8259 0 R] +/Limits [(class_parameter_code_a48a87958496857f3248adf5dc1a4ce04) (class_parameter_code_a56d42106e3806d826ee38fdf70ccdfe9)] +>> endobj +11379 0 obj << +/Names [(class_parameter_code_a5f9268263fa113b241f3b0af5e388fe6) 8208 0 R (class_parameter_code_a629a7615ac2fd13c2872b459bb7ea246) 8299 0 R (class_parameter_code_a655b4c0d24601789dd140608f4473c57) 8215 0 R (class_parameter_code_a687905530b32439509cf6375402a3e09) 8258 0 R (class_parameter_code_a6dd3c089d5163862f166f84fe1739ea5) 8212 0 R (class_parameter_code_a71f83a62a57f9f2191e4bf2d3c6cd5d3) 8253 0 R] +/Limits [(class_parameter_code_a5f9268263fa113b241f3b0af5e388fe6) (class_parameter_code_a71f83a62a57f9f2191e4bf2d3c6cd5d3)] +>> endobj +11380 0 obj << +/Names [(class_parameter_code_a7269ad7651361581a36c94f0eea57e6f) 8209 0 R (class_parameter_code_a75d56249641f1fbb3dee2240561aee2f) 8267 0 R (class_parameter_code_a7b9f7c20130b6c6b7cbae3b66d48292b) 8261 0 R (class_parameter_code_a7dafd17f70c1621b05c4732cca997fa7) 8260 0 R (class_parameter_code_a800c504da29fb79933110e88f28b8e8b) 8163 0 R (class_parameter_code_a82aa021471b89acff7663a664b9a3fc9) 8250 0 R] +/Limits [(class_parameter_code_a7269ad7651361581a36c94f0eea57e6f) (class_parameter_code_a82aa021471b89acff7663a664b9a3fc9)] +>> endobj +11381 0 obj << +/Names [(class_parameter_code_a89266a1af9d29e429ee93fde92e295fb) 8200 0 R (class_parameter_code_a8a0f2f34b88d3da46ad79b46e2e32835) 8195 0 R (class_parameter_code_a9351f4aeb562c43eddf27290cffb5684) 8309 0 R (class_parameter_code_a944cc6bb015ba7083cc9819ac487a39e) 8161 0 R (class_parameter_code_a9518836815815703bcec8e838602112c) 8203 0 R (class_parameter_code_a96213fcf8761742fa24c3f4e1c0e264e) 8304 0 R] +/Limits [(class_parameter_code_a89266a1af9d29e429ee93fde92e295fb) (class_parameter_code_a96213fcf8761742fa24c3f4e1c0e264e)] +>> endobj +11382 0 obj << +/Names [(class_parameter_code_a96257bad8abedbae6f1f3bb6bcb292d7) 8207 0 R (class_parameter_code_a99d43f3bd5c63476c0861df5c3a0c851) 8300 0 R (class_parameter_code_aa15af7fc19b63e3842c1730d6c464853) 8268 0 R (class_parameter_code_aae1727a167cc76e53eefa0330dd3ffb1) 8257 0 R (class_parameter_code_ab160bb168c782479330c2bc83e20c7e5) 8297 0 R (class_parameter_code_ab7f1030635b7abcec92d1986a8b892f2) 8199 0 R] +/Limits [(class_parameter_code_a96257bad8abedbae6f1f3bb6bcb292d7) (class_parameter_code_ab7f1030635b7abcec92d1986a8b892f2)] +>> endobj +11383 0 obj << +/Names [(class_parameter_code_abbfa6241444b2357788deed7df0a9eb8) 8201 0 R (class_parameter_code_abf9a97fb9da41635cdd881baaa9312d3) 8302 0 R (class_parameter_code_ac0aa424c63a083d5dd46e45fd0cd071f) 8293 0 R (class_parameter_code_ac3df3792ba12483dfc9b7b1e90fe5817) 7608 0 R (class_parameter_code_ac9de2b206b5285ede493970ebe773af4) 8301 0 R (class_parameter_code_ad05db066ac86d9670539d1ec1cb9ef55) 7717 0 R] +/Limits [(class_parameter_code_abbfa6241444b2357788deed7df0a9eb8) (class_parameter_code_ad05db066ac86d9670539d1ec1cb9ef55)] +>> endobj +11384 0 obj << +/Names [(class_parameter_code_ad66570a6adf1aa47db32f6b97db3eb71) 8262 0 R (class_parameter_code_adc5f593d0a28eb9285f1f82f3ecd8c2d) 8202 0 R (class_parameter_code_addcfa8d34a8a951c0249688ba5a87388) 8256 0 R (class_parameter_code_adf15cecb04e6ace568d821177e6a8ec0) 8308 0 R (class_parameter_code_ae14214ee59dd64d41c3d5c8796f6dc30) 8255 0 R (class_parameter_code_ae3588b14921f4873c0b2de805fb0c62b) 8210 0 R] +/Limits [(class_parameter_code_ad66570a6adf1aa47db32f6b97db3eb71) (class_parameter_code_ae3588b14921f4873c0b2de805fb0c62b)] +>> endobj +11385 0 obj << +/Names [(class_parameter_code_ae5c9b6ccc15e66103106afc52dfaa90b) 8307 0 R (class_parameter_code_ae7ded9f621203e1055637f052dbed9a1) 8204 0 R (class_parameter_code_aead33191ff4786c0de1241b940d8ca61) 8303 0 R (class_parameter_code_aee141dbaedc9a7cec46a50ff249e9169) 8205 0 R (class_parameter_code_aeee59502abab94712ec48dd74e717138) 8196 0 R (class_parameter_code_af3ad8a7afbfeece08aa218613827fdbd) 8211 0 R] +/Limits [(class_parameter_code_ae5c9b6ccc15e66103106afc52dfaa90b) (class_parameter_code_af3ad8a7afbfeece08aa218613827fdbd)] +>> endobj +11386 0 obj << +/Names [(class_parameter_code_af4b80fb4f18f31a9cb58112385d6af8b) 8162 0 R (class_photon_1_1_mono_behaviour) 6164 0 R (class_photon_1_1_mono_behaviour_a00c97185c3a8594bf5c1c518a701706e) 8076 0 R (class_photon_1_1_mono_behaviour_a27027ef7d8204896cb9381a200953892) 8077 0 R (class_photon_1_1_pun_behaviour) 6129 0 R (class_photon_1_1_pun_behaviour_a03bc6b8a9fffa6a7e7b43ff793ad2b28) 7936 0 R] +/Limits [(class_parameter_code_af4b80fb4f18f31a9cb58112385d6af8b) (class_photon_1_1_pun_behaviour_a03bc6b8a9fffa6a7e7b43ff793ad2b28)] +>> endobj +11387 0 obj << +/Names [(class_photon_1_1_pun_behaviour_a0c64cd0591992e70393d719e07e09f6f) 7939 0 R (class_photon_1_1_pun_behaviour_a17686ad2c9bfdf6e64b8883792c81fee) 7937 0 R (class_photon_1_1_pun_behaviour_a2f6b448cd6a97e4281d543196872d29a) 7972 0 R (class_photon_1_1_pun_behaviour_a443380e89534a70dfe4ce7ca16083035) 8028 0 R (class_photon_1_1_pun_behaviour_a44be8bdd38ea28a1f540d38aede43bde) 7905 0 R (class_photon_1_1_pun_behaviour_a4e9e2aebcfa279a2eec0020f0e44b57a) 7940 0 R] +/Limits [(class_photon_1_1_pun_behaviour_a0c64cd0591992e70393d719e07e09f6f) (class_photon_1_1_pun_behaviour_a4e9e2aebcfa279a2eec0020f0e44b57a)] +>> endobj +11388 0 obj << +/Names [(class_photon_1_1_pun_behaviour_a53833ef0f9be9906694fc600acc1b897) 7968 0 R (class_photon_1_1_pun_behaviour_a57675c88d17befc4746b7812a69b6b93) 7909 0 R (class_photon_1_1_pun_behaviour_a67049b5cdc50467f4790aca093c34e82) 7906 0 R (class_photon_1_1_pun_behaviour_a8a96aacb06c73f7cb25fe798ce01529a) 7908 0 R (class_photon_1_1_pun_behaviour_a8ee05dd443b9e51ddf962e655ca8ab77) 7938 0 R (class_photon_1_1_pun_behaviour_a943727ed00dbd38afc4b7d16c9c3454d) 7969 0 R] +/Limits [(class_photon_1_1_pun_behaviour_a53833ef0f9be9906694fc600acc1b897) (class_photon_1_1_pun_behaviour_a943727ed00dbd38afc4b7d16c9c3454d)] +>> endobj +11389 0 obj << +/Names [(class_photon_1_1_pun_behaviour_a945651c506d001121aa81e4fc8010a42) 7941 0 R (class_photon_1_1_pun_behaviour_a94f901ce1a7af7b6c49937c5c47ceae4) 8026 0 R (class_photon_1_1_pun_behaviour_a9fb00e512c59fa60c0a95e0d6e4dbe89) 7970 0 R (class_photon_1_1_pun_behaviour_aa45db114fa51d09929389bf0620f3150) 8027 0 R (class_photon_1_1_pun_behaviour_aaec2f5973228b99c6ad781d5cedadb6f) 8025 0 R (class_photon_1_1_pun_behaviour_abddb6286cecb1409cbca26088328e86d) 8029 0 R] +/Limits [(class_photon_1_1_pun_behaviour_a945651c506d001121aa81e4fc8010a42) (class_photon_1_1_pun_behaviour_abddb6286cecb1409cbca26088328e86d)] +>> endobj +11390 0 obj << +/Names [(class_photon_1_1_pun_behaviour_abf25d63a39ef13cb9a0519e6e7672a2f) 7971 0 R (class_photon_1_1_pun_behaviour_abfe94f562c7abc261b25b0df95852a17) 7998 0 R (class_photon_1_1_pun_behaviour_ac808cb2ed21bbbe52a0d33f4d927644e) 7996 0 R (class_photon_1_1_pun_behaviour_ad77f0474fa75a37a3a39e96aa386ab09) 7883 0 R (class_photon_1_1_pun_behaviour_adcef9694244295ad493bc4ec0b4463d4) 7997 0 R (class_photon_1_1_pun_behaviour_addc4f79164cd22c37d330b5ee2e340c7) 7884 0 R] +/Limits [(class_photon_1_1_pun_behaviour_abf25d63a39ef13cb9a0519e6e7672a2f) (class_photon_1_1_pun_behaviour_addc4f79164cd22c37d330b5ee2e340c7)] +>> endobj +11391 0 obj << +/Names [(class_photon_1_1_pun_behaviour_ade038a534b66b6d9a5faad53e21e22c9) 7907 0 R (class_photon_1_1_pun_behaviour_af2f8ef712d9942f861f3357bb548e937) 7999 0 R (class_photon_animator_view) 8053 0 R (class_photon_animator_view_1_1_synchronized_layer) 8356 0 R (class_photon_animator_view_1_1_synchronized_layer_a68d11cfd6780c4237bda70ee5f92a72c) 10458 0 R (class_photon_animator_view_1_1_synchronized_layer_ad1d491c302d7fbdf8f423c66561602b4) 10457 0 R] +/Limits [(class_photon_1_1_pun_behaviour_ade038a534b66b6d9a5faad53e21e22c9) (class_photon_animator_view_1_1_synchronized_layer_ad1d491c302d7fbdf8f423c66561602b4)] +>> endobj +11392 0 obj << +/Names [(class_photon_animator_view_1_1_synchronized_parameter) 8357 0 R (class_photon_animator_view_1_1_synchronized_parameter_a3bca909eb8a9c74c41c40c5ade8851f3) 10481 0 R (class_photon_animator_view_1_1_synchronized_parameter_aed91d06642473f7978a3675b9e08e5de) 10460 0 R (class_photon_animator_view_1_1_synchronized_parameter_afdeabdbb8e7fa234bd2743435a4362e3) 10480 0 R (class_photon_animator_view_a03c466f84479ffeb0509324adfa27c5b) 8405 0 R (class_photon_animator_view_a1ee474865e5e736760591b1c50644413) 8408 0 R] +/Limits [(class_photon_animator_view_1_1_synchronized_parameter) (class_photon_animator_view_a1ee474865e5e736760591b1c50644413)] +>> endobj +11393 0 obj << +/Names [(class_photon_animator_view_a4baf9e4d43b5cd41c0a1e0514ec63829) 8409 0 R (class_photon_animator_view_a58c3ae7da3a1217062dd6f510c69e5a8) 8403 0 R (class_photon_animator_view_a5cd222a56cf3364aea3fa1d2641383ed) 8404 0 R (class_photon_animator_view_aa061f0b6fb761c3da8635b9ce7e85c8b) 6708 0 R (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894) 8392 0 R (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894a1686a6c336b71b36d77354cea19a8b52) 8394 0 R] +/Limits [(class_photon_animator_view_a4baf9e4d43b5cd41c0a1e0514ec63829) (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894a1686a6c336b71b36d77354cea19a8b52)] +>> endobj +11394 0 obj << +/Names [(class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894a22ae0e2b89e5e3d477f988cc36d3272b) 8393 0 R (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894ac26f15e86e3de4c398a8273272aba034) 8395 0 R (class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894af698f67f5666aff10729d8a1cb1c14d2) 8396 0 R (class_photon_animator_view_ab5c89d5d60a51fdd97b883f85d27a10f) 8407 0 R (class_photon_animator_view_aca2599e3520233dd0a92550d2fef3781) 8406 0 R (class_photon_animator_view_ad411c8f3e398f0b7b7ebcc09543f6cfe) 8401 0 R] +/Limits [(class_photon_animator_view_aa41dc91e8da385b9f10cf9bf5dc47894a22ae0e2b89e5e3d477f988cc36d3272b) (class_photon_animator_view_ad411c8f3e398f0b7b7ebcc09543f6cfe)] +>> endobj +11395 0 obj << +/Names [(class_photon_animator_view_adc769a9e9d902955529aa36fd7f94c77) 8402 0 R (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167f) 8397 0 R (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167fa4984667940802dedc139aa7a430a6553) 8399 0 R (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167fa535863a82f163709557e59e2eb8139a7) 8400 0 R (class_photon_animator_view_ae3ad07de936a811cbb923adffe1f167fab9f5c797ebbf55adccdd8539a65a0241) 8398 0 R (class_photon_lag_simulation_gui) 6722 0 R] +/Limits [(class_photon_animator_view_adc769a9e9d902955529aa36fd7f94c77) (class_photon_lag_simulation_gui)] +>> endobj +11396 0 obj << +/Names [(class_photon_lag_simulation_gui_a0e20da80809bd2181828edabed39ccc9) 8447 0 R (class_photon_lag_simulation_gui_a1d267bda81b30f6b32f77e4b5cc90649) 8446 0 R (class_photon_lag_simulation_gui_ab080d78f9ae59eeb2779b5e61be897bb) 8444 0 R (class_photon_lag_simulation_gui_abc9399cb95160e6994a1ad8661adbdc5) 8445 0 R (class_photon_lag_simulation_gui_ad6ae62fc67cdb2936b13029ec7c68d64) 8449 0 R (class_photon_lag_simulation_gui_ad790a872afa4c4c1b34401f55982203a) 8448 0 R] +/Limits [(class_photon_lag_simulation_gui_a0e20da80809bd2181828edabed39ccc9) (class_photon_lag_simulation_gui_ad790a872afa4c4c1b34401f55982203a)] +>> endobj +11397 0 obj << +/Names [(class_photon_network) 6022 0 R (class_photon_network_a0141dc0df0d2e0a7fcda2e2101c44254) 8741 0 R (class_photon_network_a026d325f77bc2f87f2d4926ba64f21da) 8577 0 R (class_photon_network_a08119a6962c1d179a34d0388927ead3c) 8574 0 R (class_photon_network_a08435c2d064fd6a85e51e1520e5a63d8) 8569 0 R (class_photon_network_a0b99a01696f62ff29e005e6f939f8dc4) 6252 0 R] +/Limits [(class_photon_network) (class_photon_network_a0b99a01696f62ff29e005e6f939f8dc4)] +>> endobj +11398 0 obj << +/Names [(class_photon_network_a0fdb79bcce45801ec81fbe56ffb939ec) 8507 0 R (class_photon_network_a154fc601fac7f0fddd704231189457fb) 6649 0 R (class_photon_network_a1b3803f17c6d713593bca41547b8b9b3) 6244 0 R (class_photon_network_a1e23b1e0ff44046e6532c8588ac08140) 8799 0 R (class_photon_network_a1ed1ac94f91b8746d218e22146eb515e) 8788 0 R (class_photon_network_a208a46eaefe19c965eb62d18ca59ac41) 8676 0 R] +/Limits [(class_photon_network_a0fdb79bcce45801ec81fbe56ffb939ec) (class_photon_network_a208a46eaefe19c965eb62d18ca59ac41)] +>> endobj +11399 0 obj << +/Names [(class_photon_network_a232458dc1894d99134f6d978524cbb99) 8689 0 R (class_photon_network_a282677f512ce2f53e4a0893d4e3844b8) 8748 0 R (class_photon_network_a2a8b1690325d73930d6bc8b99d8e736d) 8508 0 R (class_photon_network_a2dc5e6cba79f899d9952f804db35b2f3) 6247 0 R (class_photon_network_a2ea887525d418e088bf99d303673d2f3) 8688 0 R (class_photon_network_a2eefb7151b27169d11062be9996a0eab) 6209 0 R] +/Limits [(class_photon_network_a232458dc1894d99134f6d978524cbb99) (class_photon_network_a2eefb7151b27169d11062be9996a0eab)] +>> endobj +11400 0 obj << +/Names [(class_photon_network_a3315be88f62dbdc24819946fc6171e08) 8795 0 R (class_photon_network_a3af7f8d0082599e6e3a56a5b1481a505) 8793 0 R (class_photon_network_a3b52beccf64860705cc467d7abf9fc41) 8632 0 R (class_photon_network_a3b8d0c1cefdf577e1dff8aecb147b7fd) 8626 0 R (class_photon_network_a3b90d30007fbeced0293dde881d0421e) 8739 0 R (class_photon_network_a3badca00ee2bacec4eaccac76002f0ac) 8581 0 R] +/Limits [(class_photon_network_a3315be88f62dbdc24819946fc6171e08) (class_photon_network_a3badca00ee2bacec4eaccac76002f0ac)] +>> endobj +11401 0 obj << +/Names [(class_photon_network_a43f616ce19891d3de81269a7821c5656) 8517 0 R (class_photon_network_a4a1cd1887cb41a0592322527a7304ed7) 6255 0 R (class_photon_network_a4c59e3c4feeaf44293eef1d8d19b98a2) 8582 0 R (class_photon_network_a4c8c84b764c759a16296a1f3ebe48c46) 8630 0 R (class_photon_network_a4f968278990dea7202b04eed1f833b6c) 8797 0 R (class_photon_network_a505f06c3eb4ca67db5dd517aab34143d) 8683 0 R] +/Limits [(class_photon_network_a43f616ce19891d3de81269a7821c5656) (class_photon_network_a505f06c3eb4ca67db5dd517aab34143d)] +>> endobj +11402 0 obj << +/Names [(class_photon_network_a50fc7126ad9a866ce32951d87f13e8ed) 8575 0 R (class_photon_network_a52fdada993f0729be0912113c0ddb3f8) 6251 0 R (class_photon_network_a56b04c065a4f5d54e3f9113056b32da2) 8801 0 R (class_photon_network_a587a1fb0147ddc48a5176e48a2940985) 8818 0 R (class_photon_network_a598db34bb93cdb17a3032a96c64b0ce3) 8734 0 R (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74) 6603 0 R] +/Limits [(class_photon_network_a50fc7126ad9a866ce32951d87f13e8ed) (class_photon_network_a5ab80136622c2ae46b0e4f766e489d74)] +>> endobj +11403 0 obj << +/Names [(class_photon_network_a5aca6d5aea9bb5b55967959d1ecd0ccd) 8787 0 R (class_photon_network_a5bb203a37b6db717583ea7b81fb56852) 6186 0 R (class_photon_network_a5c08f89cdf5766c1b69d5b7b8786b734) 8568 0 R (class_photon_network_a5d231578fbaadcb89dd592d2d8ddfd0a) 8690 0 R (class_photon_network_a62c512b8fe143fac07ff55e849aa48d5) 6069 0 R (class_photon_network_a631231346113712f11319749d6e1a3eb) 8578 0 R] +/Limits [(class_photon_network_a5aca6d5aea9bb5b55967959d1ecd0ccd) (class_photon_network_a631231346113712f11319749d6e1a3eb)] +>> endobj +11404 0 obj << +/Names [(class_photon_network_a65cc14cdfda9c9cb8dad3b3f862097d4) 8686 0 R (class_photon_network_a67cb40d5f2dede55b03b2be1f792e93a) 8815 0 R (class_photon_network_a6b98294843798e6ebac72704a867b6da) 8677 0 R (class_photon_network_a6c6fb3cd57d7e2a13d1fc354db0c1fd7) 8790 0 R (class_photon_network_a6cbf85644c07b9ceb4b4a1accd0f4ce9) 8814 0 R (class_photon_network_a6dbc821988042fe109d28017cd955c73) 8622 0 R] +/Limits [(class_photon_network_a65cc14cdfda9c9cb8dad3b3f862097d4) (class_photon_network_a6dbc821988042fe109d28017cd955c73)] +>> endobj +11405 0 obj << +/Names [(class_photon_network_a6ffa9e23d8060c9898064cda0a21710b) 8516 0 R (class_photon_network_a71b2a9299c3906b3e3d49f0ac296a87b) 8691 0 R (class_photon_network_a734d436869fa53cb8660de63e79e6252) 8687 0 R (class_photon_network_a7698c3e61503df2cb5375ffc3182fb1f) 8742 0 R (class_photon_network_a7a74751daa6e6e979cff9ba3aceb56dd) 8736 0 R (class_photon_network_a7b1f4dbdcb9e30722be54b374bba6934) 8745 0 R] +/Limits [(class_photon_network_a6ffa9e23d8060c9898064cda0a21710b) (class_photon_network_a7b1f4dbdcb9e30722be54b374bba6934)] +>> endobj +11406 0 obj << +/Names [(class_photon_network_a7dc90dd05d697c3f8f04e50cc0e039b2) 8515 0 R (class_photon_network_a808fc6d1770c999fb1f5716abb45451a) 8633 0 R (class_photon_network_a81af9e901341d6b647df1f6d7f2d7583) 8738 0 R (class_photon_network_a843d9f62d28ab123c83291c1e6bb857d) 6131 0 R (class_photon_network_a84b7be74d130b19eeeb1d7b4e8193ad4) 8513 0 R (class_photon_network_a85b058bab4a369d0c5730cf43b462962) 8628 0 R] +/Limits [(class_photon_network_a7dc90dd05d697c3f8f04e50cc0e039b2) (class_photon_network_a85b058bab4a369d0c5730cf43b462962)] +>> endobj +11407 0 obj << +/Names [(class_photon_network_a86ab96957666ef72830a35662ef3d30b) 6249 0 R (class_photon_network_a8830a7a4b92490f7882780630b1fcf99) 8800 0 R (class_photon_network_a88ef2952a1d0a468d5ba2bff48fa084c) 8625 0 R (class_photon_network_a890353cbe3141ca134a1b0e28aa8ea9f) 8623 0 R (class_photon_network_a894df24398c8cfe2d06e22ddc39576fa) 6248 0 R (class_photon_network_a89e99e64c1b6232132012bc311e7e205) 8636 0 R] +/Limits [(class_photon_network_a86ab96957666ef72830a35662ef3d30b) (class_photon_network_a89e99e64c1b6232132012bc311e7e205)] +>> endobj +11408 0 obj << +/Names [(class_photon_network_a8a2bd25668b204f681c7d27174735ba1) 8620 0 R (class_photon_network_a8ad64b1a76c7918bbe5642639afff458) 6645 0 R (class_photon_network_a8c94dd51fe8e8986117b499161ff4461) 6286 0 R (class_photon_network_a8ce4ab4a44e705199ff795b2eb9b395b) 8791 0 R (class_photon_network_a8f8d6db18d74855e18ec43b3a221102b) 8675 0 R (class_photon_network_a901a33962274b4467919acd868016d6b) 8624 0 R] +/Limits [(class_photon_network_a8a2bd25668b204f681c7d27174735ba1) (class_photon_network_a901a33962274b4467919acd868016d6b)] +>> endobj +11409 0 obj << +/Names [(class_photon_network_a902344ffd109a23f1a0606599af5eb96) 8572 0 R (class_photon_network_a90ec16d1df1a0332d0ad16493d641f56) 8505 0 R (class_photon_network_a9225b990f7b3d0fffadc23c7b3118ef2) 8747 0 R (class_photon_network_a941ac37ca7e275c93f3a1f95f0df84ae) 8579 0 R (class_photon_network_a981e7244e915f41e18cb9da5f12fc858) 8509 0 R (class_photon_network_a9cc8da229d513fce2fddbc5e2c6eaed2) 8627 0 R] +/Limits [(class_photon_network_a902344ffd109a23f1a0606599af5eb96) (class_photon_network_a9cc8da229d513fce2fddbc5e2c6eaed2)] +>> endobj +11410 0 obj << +/Names [(class_photon_network_a9cf8214080471001a1a32e17eff9b402) 8794 0 R (class_photon_network_aa2a46d8ce13fedd3f4550b6164524e81) 8744 0 R (class_photon_network_aa323d9dd09d0a64352d5232f8fe23996) 8571 0 R (class_photon_network_aa3c3ed1a8a1da54e52c5b7284f69c8a4) 8796 0 R (class_photon_network_aa3e39af39baae3611730b914a8fe6f8b) 8631 0 R (class_photon_network_aa4005f5ff36461d51f9d2c2c326550ac) 8566 0 R] +/Limits [(class_photon_network_a9cf8214080471001a1a32e17eff9b402) (class_photon_network_aa4005f5ff36461d51f9d2c2c326550ac)] +>> endobj +11411 0 obj << +/Names [(class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) 6601 0 R (class_photon_network_aa7e51b5e5f9f8b89f057096f47d11c5b) 8749 0 R (class_photon_network_aa9088b089a8c1b3548f8a7a792146e50) 8583 0 R (class_photon_network_aa93441ca5a719b31dddb38e4aaeccf7c) 8510 0 R (class_photon_network_aa9a112ccaaf71a296b823e9637584445) 6604 0 R (class_photon_network_aaa7a2114de2a80a0a2ded65d1c0079ba) 8678 0 R] +/Limits [(class_photon_network_aa7c0c32ec0a25f37438436f10c5bde59) (class_photon_network_aaa7a2114de2a80a0a2ded65d1c0079ba)] +>> endobj +11412 0 obj << +/Names [(class_photon_network_aaaf92ee5eec22fff548ee9bb735913b6) 8816 0 R (class_photon_network_ab5e68c8f4799fabb200d08ff8c313c43) 8820 0 R (class_photon_network_ab7c39b4f0ec783b86b59cb2460332058) 8511 0 R (class_photon_network_ab979353e224caa01b6ff654e6d131fef) 8570 0 R (class_photon_network_abade51a8c3af0e9c280c2817f9ca15e5) 8629 0 R (class_photon_network_abb168e543c15731ec4de869d3a1ad8f4) 6246 0 R] +/Limits [(class_photon_network_aaaf92ee5eec22fff548ee9bb735913b6) (class_photon_network_abb168e543c15731ec4de869d3a1ad8f4)] +>> endobj +11413 0 obj << +/Names [(class_photon_network_abb27939f0325b53c94f5ad52199b63b7) 8580 0 R (class_photon_network_abdced09cccf61ae817cb97705ffce137) 6697 0 R (class_photon_network_ac23d14ad150a87d51f4ffaa286db29e1) 6648 0 R (class_photon_network_ac6b98cecd29a9ced8ec4a6ae78908dfc) 8680 0 R (class_photon_network_ac7c6623c88f254b965aa366b1229781e) 6254 0 R (class_photon_network_ac8fda24b1f55b00f4968559a599ca88b) 8735 0 R] +/Limits [(class_photon_network_abb27939f0325b53c94f5ad52199b63b7) (class_photon_network_ac8fda24b1f55b00f4968559a599ca88b)] +>> endobj +11414 0 obj << +/Names [(class_photon_network_acff20b8fd3871e0b3be350e0d1c98605) 8685 0 R (class_photon_network_ad3b82aa2ac8d89db5ebf0bc5ac9add9e) 8681 0 R (class_photon_network_ad534d4da7222bd8a6d8423cbd238d7f4) 6068 0 R (class_photon_network_ad86d4af661dd7365f6e172e106ca7cb2) 8819 0 R (class_photon_network_ad96fd99b5e9384771ee44b427edf7487) 8740 0 R (class_photon_network_ad9a866c73b3e417d55266ed548a52cb8) 8679 0 R] +/Limits [(class_photon_network_acff20b8fd3871e0b3be350e0d1c98605) (class_photon_network_ad9a866c73b3e417d55266ed548a52cb8)] +>> endobj +11415 0 obj << +/Names [(class_photon_network_ada44c5edfa6e93e67db635bd0764ef70) 8674 0 R (class_photon_network_adbb6045e5c8e64e0076cadbcb62703b5) 8635 0 R (class_photon_network_ae0036d259f2b793b4838393837d4cf6d) 8684 0 R (class_photon_network_ae4186352869ef922cb84efbd5c1f2465) 8737 0 R (class_photon_network_ae5c32625fb17b425e105de49ea267ddf) 8621 0 R (class_photon_network_ae6fd306fd4adf0c44d64d9cfadc038aa) 8634 0 R] +/Limits [(class_photon_network_ada44c5edfa6e93e67db635bd0764ef70) (class_photon_network_ae6fd306fd4adf0c44d64d9cfadc038aa)] +>> endobj +11416 0 obj << +/Names [(class_photon_network_ae995c021d1295f00afd9f87cd3bd118c) 8817 0 R (class_photon_network_aeb81fe77dfd0ebf7c8a63191a6a8fced) 8567 0 R (class_photon_network_aebed3f221d6a2d918cb734a15b9df8e0) 8518 0 R (class_photon_network_aeef2085375accb7d4bc88e60cbe15eb9) 6067 0 R (class_photon_network_af022551a359708341bd3b73c3c946f68) 8573 0 R (class_photon_network_af498064a6019a6c69e875bd64db40216) 6250 0 R] +/Limits [(class_photon_network_ae995c021d1295f00afd9f87cd3bd118c) (class_photon_network_af498064a6019a6c69e875bd64db40216)] +>> endobj +11417 0 obj << +/Names [(class_photon_network_af4ff9e4128181a1a4974c20bf899a4c4) 8506 0 R (class_photon_network_af721675dc5cf3c5ac4d4b67339246cdf) 8789 0 R (class_photon_network_af7728267e9576c7b2d205df53ac74fe1) 8637 0 R (class_photon_network_afba456bbc9d1525b87eb060c959af2b6) 8512 0 R (class_photon_network_afbff4452088b29acf41bf3012a8d2545) 8798 0 R (class_photon_network_afd22fd553d52fdc63e975c32ea47514f) 6673 0 R] +/Limits [(class_photon_network_af4ff9e4128181a1a4974c20bf899a4c4) (class_photon_network_afd22fd553d52fdc63e975c32ea47514f)] +>> endobj +11418 0 obj << +/Names [(class_photon_ping_manager) 9159 0 R (class_photon_ping_manager_a0e897316745a60839e2ed3e80cefd2f2) 9171 0 R (class_photon_ping_manager_a0ece3c53b5e9db217825d5a3ba74a5f5) 9165 0 R (class_photon_ping_manager_a489f87655185eb46b0e15de0726c771c) 9166 0 R (class_photon_ping_manager_a5907c89dd76795d37d656c1b21fbe32a) 9174 0 R (class_photon_ping_manager_a81be8a928664c188bfe172c493116f88) 9173 0 R] +/Limits [(class_photon_ping_manager) (class_photon_ping_manager_a81be8a928664c188bfe172c493116f88)] +>> endobj +11419 0 obj << +/Names [(class_photon_ping_manager_aa37a48018a49beafdb317dbdfbff6d54) 9170 0 R (class_photon_ping_manager_ab5bc2677649632ad08c581dff24cec4a) 9169 0 R (class_photon_ping_manager_ac0c24ceeeff3345bcf1d98bbe37b4014) 9172 0 R (class_photon_player) 6245 0 R (class_photon_player_a027b1aeee40c53f98d29af4ca8e07f47) 9262 0 R (class_photon_player_a0f41b47ae95448d2e6f7a4394c54f359) 9225 0 R] +/Limits [(class_photon_ping_manager_aa37a48018a49beafdb317dbdfbff6d54) (class_photon_player_a0f41b47ae95448d2e6f7a4394c54f359)] +>> endobj +11420 0 obj << +/Names [(class_photon_player_a191f6b25501f46fe0ca29cc74706ddb1) 9266 0 R (class_photon_player_a2aaf48a90dc7e618da31f47c4f1a1c03) 9217 0 R (class_photon_player_a2c234cfef38c2013337182a008844398) 9215 0 R (class_photon_player_a2cc6f30dc2691bc700b0a11bdaffcffd) 9219 0 R (class_photon_player_a32462ded2866ee76839b59bd2cb3cd8c) 9257 0 R (class_photon_player_a4c7bf5d0bf28c15b67929a8a5297b96e) 9218 0 R] +/Limits [(class_photon_player_a191f6b25501f46fe0ca29cc74706ddb1) (class_photon_player_a4c7bf5d0bf28c15b67929a8a5297b96e)] +>> endobj +11421 0 obj << +/Names [(class_photon_player_a53a95c12899049fa00d873d634eee5ba) 9259 0 R (class_photon_player_a6b80a7016483f33ee19521a3bf39f20d) 9264 0 R (class_photon_player_a74e5bb916dbfdb6960b8f2f11fa6aba9) 9214 0 R (class_photon_player_a7a74ea86be2a6adf1560ccea712d0900) 9223 0 R (class_photon_player_a82ba921802edc4960d075f1deacfb19d) 9267 0 R (class_photon_player_a9cb80ad93a84e86451e6d2becfacef2b) 9260 0 R] +/Limits [(class_photon_player_a53a95c12899049fa00d873d634eee5ba) (class_photon_player_a9cb80ad93a84e86451e6d2becfacef2b)] +>> endobj +11422 0 obj << +/Names [(class_photon_player_aaea56ca79d674b3e05c79f7b5c28fd7a) 9258 0 R (class_photon_player_aaef707bae718e28cd6a079e4514ce597) 9221 0 R (class_photon_player_aaf54b32878a605d3e4d47f16ad106aa3) 9133 0 R (class_photon_player_ab0bad4e5c05adfe0d524bc32430ecc20) 9261 0 R (class_photon_player_ab2da3547ad9a8f18aa25b0facfed4005) 9224 0 R (class_photon_player_ab4efd41ca7624963586a30e0d360da67) 9212 0 R] +/Limits [(class_photon_player_aaea56ca79d674b3e05c79f7b5c28fd7a) (class_photon_player_ab4efd41ca7624963586a30e0d360da67)] +>> endobj +11423 0 obj << +/Names [(class_photon_player_ab7e0bc6125b15524e74b5ac9d7c337d7) 9132 0 R (class_photon_player_ac363d86e7c6ea63573e0ecfda7f7eaa7) 9011 0 R (class_photon_player_adb4677870c9c5903527ce75dc0edba2b) 9220 0 R (class_photon_player_add5b31ca48483e67dbd5cb5d4d67a8d3) 9222 0 R (class_photon_player_ade88a2875960de99e5ab98fc6db1650c) 9265 0 R (class_photon_player_ae67e332f9ad5a44834a8cf78db6a6f01) 9134 0 R] +/Limits [(class_photon_player_ab7e0bc6125b15524e74b5ac9d7c337d7) (class_photon_player_ae67e332f9ad5a44834a8cf78db6a6f01)] +>> endobj +11424 0 obj << +/Names [(class_photon_player_aea8c8ca461e7b2ac695b49024272a4c1) 9213 0 R (class_photon_player_af03034498d0b8bedf022decd6a570d70) 9226 0 R (class_photon_player_af8815abb8edaafbe6bddbf328f9612fb) 6672 0 R (class_photon_player_af88693cf6b3b3fb1c8afdb5892fd525c) 9216 0 R (class_photon_player_afaf4ec87dcd684752ffb92c465f9ce87) 9263 0 R (class_photon_rigidbody2_d_view) 8054 0 R] +/Limits [(class_photon_player_aea8c8ca461e7b2ac695b49024272a4c1) (class_photon_rigidbody2_d_view)] +>> endobj +11425 0 obj << +/Names [(class_photon_rigidbody2_d_view_a980ea46d1725668b1ae12f958840dc61) 6710 0 R (class_photon_rigidbody_view) 8055 0 R (class_photon_rigidbody_view_a4a7145633e24084001a4cd0ed9f8a15c) 6711 0 R (class_photon_stats_gui) 6309 0 R (class_photon_stats_gui_a05204c8969fd4fc0546f7926e5e5da8e) 9371 0 R (class_photon_stats_gui_a222bbb9f4b1c640489101a5f3bcada8a) 9368 0 R] +/Limits [(class_photon_rigidbody2_d_view_a980ea46d1725668b1ae12f958840dc61) (class_photon_stats_gui_a222bbb9f4b1c640489101a5f3bcada8a)] +>> endobj +11426 0 obj << +/Names [(class_photon_stats_gui_a58101a043bbe7de9d53f14ac111646b2) 9367 0 R (class_photon_stats_gui_a7e1cb11640167171f7b160089b71e5d7) 9370 0 R (class_photon_stats_gui_a8aa98b7db81d540b6e9c42f37d3a927b) 9365 0 R (class_photon_stats_gui_a9e96e77b74435c5ff2eeccf2d409685f) 9375 0 R (class_photon_stats_gui_aac6e6189d7a7723ef4fbcbb5c7a6b6e8) 9369 0 R (class_photon_stats_gui_ac7c5c8556de5ac92dd227339b2e3c36b) 9373 0 R] +/Limits [(class_photon_stats_gui_a58101a043bbe7de9d53f14ac111646b2) (class_photon_stats_gui_ac7c5c8556de5ac92dd227339b2e3c36b)] +>> endobj +11427 0 obj << +/Names [(class_photon_stats_gui_ac8015189e49ffdb616367c7d9f9e91db) 9372 0 R (class_photon_stats_gui_ae7fb408f7fb6e9525337271d2363ae33) 9366 0 R (class_photon_stats_gui_af9e7598de2be45c63c6368727bb60ae5) 9374 0 R (class_photon_stream) 6159 0 R (class_photon_stream_a03bcbb2ade3cc109364416476083da0d) 9431 0 R (class_photon_stream_a0a74157c27454d59c9ebcd2f12480611) 9430 0 R] +/Limits [(class_photon_stats_gui_ac8015189e49ffdb616367c7d9f9e91db) (class_photon_stream_a0a74157c27454d59c9ebcd2f12480611)] +>> endobj +11428 0 obj << +/Names [(class_photon_stream_a0f65bddf114f21922e307a67e9a959a1) 9428 0 R (class_photon_stream_a1bfb478104459081a25e0cf8208de9f4) 9397 0 R (class_photon_stream_a1e34f079e1ab0c8a86cb864bc6aa5443) 9394 0 R (class_photon_stream_a23ad49d3b2a2395d29f6035595c33a60) 9427 0 R (class_photon_stream_a372ce5e9fc5a92e0a5581ed2cb357724) 9425 0 R (class_photon_stream_a546034701bbab3d113219f81c0ae8080) 9396 0 R] +/Limits [(class_photon_stream_a0f65bddf114f21922e307a67e9a959a1) (class_photon_stream_a546034701bbab3d113219f81c0ae8080)] +>> endobj +11429 0 obj << +/Names [(class_photon_stream_a64fe29df11450f421046871947a54d5d) 9426 0 R (class_photon_stream_a67f264145ca1f4d1cb8518cbbb607797) 9434 0 R (class_photon_stream_a8192fc59b4ffe6ecc3ac70a793b36dc5) 9433 0 R (class_photon_stream_a87b96b24a15203e84e5bb3f3996609d0) 9392 0 R (class_photon_stream_a8b1a1e59820ff95d2d2dd4c376841322) 9395 0 R (class_photon_stream_a8ba68f5108d3ab8bbc69d7b88aa661da) 9432 0 R] +/Limits [(class_photon_stream_a64fe29df11450f421046871947a54d5d) (class_photon_stream_a8ba68f5108d3ab8bbc69d7b88aa661da)] +>> endobj +11430 0 obj << +/Names [(class_photon_stream_a99e20ecd7737381042751acf8ec8fc4b) 6161 0 R (class_photon_stream_aa2dcbaa4e900d5d5c5327ac840c36c35) 9393 0 R (class_photon_stream_ab3cf6c969d02214b001ddecc8dcd34ca) 9424 0 R (class_photon_stream_ae1bda0f78819d5b29d72c968b856781b) 6162 0 R (class_photon_stream_af7d4afc02408fb47b41e28b8f920be35) 9429 0 R (class_photon_stream_queue) 9464 0 R] +/Limits [(class_photon_stream_a99e20ecd7737381042751acf8ec8fc4b) (class_photon_stream_queue)] +>> endobj +11431 0 obj << +/Names [(class_photon_stream_queue_a1c2a5d3c8a990b78b07650b0e1370eeb) 9469 0 R (class_photon_stream_queue_a40bc2e04c1641f36da8cb36423fd13c3) 9468 0 R (class_photon_stream_queue_a8034450d68cdf1a16e3f33a53b0ad2dd) 9470 0 R (class_photon_stream_queue_a9e8e0b7a881aea56cb21148def4b5c5d) 9472 0 R (class_photon_stream_queue_ab9b77bbe2ddf53638dd96b63af8a533c) 9473 0 R (class_photon_stream_queue_acbae2dbbf5e5b4fd8c589fb7019adbf8) 9471 0 R] +/Limits [(class_photon_stream_queue_a1c2a5d3c8a990b78b07650b0e1370eeb) (class_photon_stream_queue_acbae2dbbf5e5b4fd8c589fb7019adbf8)] +>> endobj +11432 0 obj << +/Names [(class_photon_stream_queue_ae75447cd718116990e0d0304eebc6935) 9467 0 R (class_photon_transform_view) 8056 0 R (class_photon_transform_view_a5d1d6606c9c935b2326b31b292f37a7e) 6709 0 R (class_photon_transform_view_a914782b6d7ec46386636fa9fbaaa8f1f) 9511 0 R (class_photon_transform_view_position_control) 9525 0 R (class_photon_transform_view_position_control_a3f4cd754b21276bef76609b608e9e774) 9527 0 R] +/Limits [(class_photon_stream_queue_ae75447cd718116990e0d0304eebc6935) (class_photon_transform_view_position_control_a3f4cd754b21276bef76609b608e9e774)] +>> endobj +11433 0 obj << +/Names [(class_photon_transform_view_position_control_a7c378517491ed0878fa78f8834fa5c0b) 9529 0 R (class_photon_transform_view_position_control_a995fea08fe2aa2ad1c004513c5ba7d65) 9528 0 R (class_photon_transform_view_position_control_ac7cc0066925dc4ccf46f2a1ae8a7216f) 9530 0 R (class_photon_transform_view_position_control_aea906d59f0637f9a1ee8a8c6504ad217) 9533 0 R (class_photon_transform_view_position_control_af8893b17871604614de5d5f80721d0e9) 9532 0 R (class_photon_transform_view_position_model) 9531 0 R] +/Limits [(class_photon_transform_view_position_control_a7c378517491ed0878fa78f8834fa5c0b) (class_photon_transform_view_position_model)] +>> endobj +11434 0 obj << +/Names [(class_photon_transform_view_position_model_a24067fa6f667e913da06fac06773e483) 9593 0 R (class_photon_transform_view_position_model_a333c00379e52fd0327337edb6d918d5f) 9583 0 R (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063) 9569 0 R (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063a412cb411cecf9196f717d6bc9c272c62) 9574 0 R (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063a5ee3cb96945190e0162af2190c264380) 9573 0 R (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063a8275b27924ce04ec0cbdf85a3f3dc866) 9571 0 R] +/Limits [(class_photon_transform_view_position_model_a24067fa6f667e913da06fac06773e483) (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063a8275b27924ce04ec0cbdf85a3f3dc866)] +>> endobj +11435 0 obj << +/Names [(class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063ab9f5c797ebbf55adccdd8539a65a0241) 9570 0 R (class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063ad372923d229a8c3db765a1c1cdfcb19c) 9572 0 R (class_photon_transform_view_position_model_a3cd4b81cdcb3b099e1514ca7aba02d46) 9588 0 R (class_photon_transform_view_position_model_a41cbf435a32e015857f534d3bd9e289c) 9592 0 R (class_photon_transform_view_position_model_a51965afc54a2e2cbaafb57e050555688) 9586 0 R (class_photon_transform_view_position_model_a5d3b8ed9c1fb9c3f352cb460489a823b) 9589 0 R] +/Limits [(class_photon_transform_view_position_model_a36efab5955c4f805aa7ce703fc363063ab9f5c797ebbf55adccdd8539a65a0241) (class_photon_transform_view_position_model_a5d3b8ed9c1fb9c3f352cb460489a823b)] +>> endobj +11436 0 obj << +/Names [(class_photon_transform_view_position_model_a623f6bbf22e22073e9be25b84d98a11c) 9587 0 R (class_photon_transform_view_position_model_a6a74d5fd4dca600a17784f38b70d2aa7) 9585 0 R (class_photon_transform_view_position_model_a7b871135ff0f36dfd41c5148b36612f7) 9591 0 R (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06) 9575 0 R (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06a20ce760ebf36c55f29b275b42f3d6217) 9578 0 R (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06a5ee3cb96945190e0162af2190c264380) 9577 0 R] +/Limits [(class_photon_transform_view_position_model_a623f6bbf22e22073e9be25b84d98a11c) (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06a5ee3cb96945190e0162af2190c264380)] +>> endobj +11437 0 obj << +/Names [(class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06a8275b27924ce04ec0cbdf85a3f3dc866) 9579 0 R (class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06ab9f5c797ebbf55adccdd8539a65a0241) 9576 0 R (class_photon_transform_view_position_model_a8e36aa06dc6644a53bd2d87844434e84) 9581 0 R (class_photon_transform_view_position_model_a98c785fa35877aae22620b6533a15cd8) 9582 0 R (class_photon_transform_view_position_model_aa0c899efb93f49d72d09f186cf0a61e0) 9584 0 R (class_photon_transform_view_position_model_adebb0a46d4de507ec529fdd3a87e192d) 9590 0 R] +/Limits [(class_photon_transform_view_position_model_a81cc14379a959c4fc0e6b144360adb06a8275b27924ce04ec0cbdf85a3f3dc866) (class_photon_transform_view_position_model_adebb0a46d4de507ec529fdd3a87e192d)] +>> endobj +11438 0 obj << +/Names [(class_photon_transform_view_position_model_adf69a879201b7b67af4508ccf795f6ac) 9580 0 R (class_photon_transform_view_rotation_control) 9619 0 R (class_photon_transform_view_rotation_control_a01e908d07c6706c5cdfde03a03c6dd9f) 9622 0 R (class_photon_transform_view_rotation_control_a76f5079286a1db6632ed646b5f06a5db) 9623 0 R (class_photon_transform_view_rotation_control_ab52d02c6493092feed0d1c63e4da2d4b) 9624 0 R (class_photon_transform_view_rotation_control_af96141a535c6d346ea4564ab3e783b57) 9621 0 R] +/Limits [(class_photon_transform_view_position_model_adf69a879201b7b67af4508ccf795f6ac) (class_photon_transform_view_rotation_control_af96141a535c6d346ea4564ab3e783b57)] +>> endobj +11439 0 obj << +/Names [(class_photon_transform_view_rotation_model) 9625 0 R (class_photon_transform_view_rotation_model_a025f87682b9d5436e209106aa3e843cb) 9635 0 R (class_photon_transform_view_rotation_model_a36cdb8874f88d786106aa6def2c00c4d) 9633 0 R (class_photon_transform_view_rotation_model_a39016931d8896e4c8c4074b374d2278c) 9634 0 R (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494) 9629 0 R (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494a412cb411cecf9196f717d6bc9c272c62) 9632 0 R] +/Limits [(class_photon_transform_view_rotation_model) (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494a412cb411cecf9196f717d6bc9c272c62)] +>> endobj +11440 0 obj << +/Names [(class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494ab9f5c797ebbf55adccdd8539a65a0241) 9630 0 R (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494abee31ba3ccf0149db072e62ab1b66c71) 9631 0 R (class_photon_transform_view_rotation_model_aef6a60daf9507129719aefc30dc45166) 9636 0 R (class_photon_transform_view_scale_control) 9652 0 R (class_photon_transform_view_scale_control_a4afeab195322ed62074a1bb41f091b91) 9654 0 R (class_photon_transform_view_scale_control_a4bc567bf020c6807ad2e9960a25435e2) 9657 0 R] +/Limits [(class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494ab9f5c797ebbf55adccdd8539a65a0241) (class_photon_transform_view_scale_control_a4bc567bf020c6807ad2e9960a25435e2)] +>> endobj +11441 0 obj << +/Names [(class_photon_transform_view_scale_control_a8345675a1c1c122f426c525c5b3dc5d3) 9656 0 R (class_photon_transform_view_scale_control_a8b596e08ef92033d40af5c34a881bcd1) 9655 0 R (class_photon_transform_view_scale_model) 9658 0 R (class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432e) 9692 0 R (class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432ea412cb411cecf9196f717d6bc9c272c62) 9695 0 R (class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432ea62e88848d85e21d979ff5e5efda8a268) 9694 0 R] +/Limits [(class_photon_transform_view_scale_control_a8345675a1c1c122f426c525c5b3dc5d3) (class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432ea62e88848d85e21d979ff5e5efda8a268)] +>> endobj +11442 0 obj << +/Names [(class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432eab9f5c797ebbf55adccdd8539a65a0241) 9693 0 R (class_photon_transform_view_scale_model_a22b3360da0a4aa09e0086af1ae091da2) 9699 0 R (class_photon_transform_view_scale_model_a7fd5e6b606026fb096e79391b587a66b) 9696 0 R (class_photon_transform_view_scale_model_a9680982f5a84536b57ae3f806291ab37) 9698 0 R (class_photon_transform_view_scale_model_ac326b99330c3bcfe8df598893a2f3261) 9697 0 R (class_photon_view) 6130 0 R] +/Limits [(class_photon_transform_view_scale_model_a08ebb1a595144712993238495531432eab9f5c797ebbf55adccdd8539a65a0241) (class_photon_view)] +>> endobj +11443 0 obj << +/Names [(class_photon_view_a0d1e63579ed533e6394ca7f12b313c7c) 8942 0 R (class_photon_view_a0eee05bdd9c48c263a41ccfec45b8651) 9702 0 R (class_photon_view_a24370932ff0a1f79d6dcb83a2bd7a27b) 9771 0 R (class_photon_view_a29400fef2cf398230b2c63a7d66f6d9a) 9787 0 R (class_photon_view_a2950cb34198fa050a7e65a6b2f722c68) 9766 0 R (class_photon_view_a2a681a9becf63f444139493379e2ada7) 9705 0 R] +/Limits [(class_photon_view_a0d1e63579ed533e6394ca7f12b313c7c) (class_photon_view_a2a681a9becf63f444139493379e2ada7)] +>> endobj +11444 0 obj << +/Names [(class_photon_view_a309ddedb443400696cf80da2ff579262) 9773 0 R (class_photon_view_a3a3650071e812aca9b9cd518638ebd7d) 9777 0 R (class_photon_view_a484df6eca8208330c00c317334dd8115) 9703 0 R (class_photon_view_a535e478c9fe2fce6af7102e32833135a) 9795 0 R (class_photon_view_a57eb2e5b6b3aea9e4ac6cc494dc19a27) 9784 0 R (class_photon_view_a634144e72774beb34d84c3ab7cac9cd4) 9779 0 R] +/Limits [(class_photon_view_a309ddedb443400696cf80da2ff579262) (class_photon_view_a634144e72774beb34d84c3ab7cac9cd4)] +>> endobj +11445 0 obj << +/Names [(class_photon_view_a65ea130a5d46f64984ff5361518f6050) 9793 0 R (class_photon_view_a677557c203df8f79277095ce5f9da001) 9707 0 R (class_photon_view_a6bc9726af14a8c7b8bdd7793c495a6e8) 9767 0 R (class_photon_view_a72f924cef0d24da2c542e80062cc3934) 9781 0 R (class_photon_view_a823593ba0cf86454176b4f0d04a70590) 9813 0 R (class_photon_view_a84084cfaf09debaf88362629bb772907) 9772 0 R] +/Limits [(class_photon_view_a65ea130a5d46f64984ff5361518f6050) (class_photon_view_a84084cfaf09debaf88362629bb772907)] +>> endobj +11446 0 obj << +/Names [(class_photon_view_a869710e081df022bbb4fa160e7ab9e0a) 9708 0 R (class_photon_view_a9f8a7d9f0fa7703f07dcc2f0daf0e4db) 9775 0 R (class_photon_view_aa32a59c1f2bd619673142ab75fc7c928) 9790 0 R (class_photon_view_aa4792e336ad2b338fcae475c2cca545c) 9776 0 R (class_photon_view_aa9d1d25847f25afbac6b68c99c7e286c) 9812 0 R (class_photon_view_aaa61ad448b005df342350762476e367d) 9769 0 R] +/Limits [(class_photon_view_a869710e081df022bbb4fa160e7ab9e0a) (class_photon_view_aaa61ad448b005df342350762476e367d)] +>> endobj +11447 0 obj << +/Names [(class_photon_view_aae1e4dcb7cf0cf2cd460490cefdcda46) 9792 0 R (class_photon_view_ab6f075ebed73c05fa1c9ea6e81b66cca) 9768 0 R (class_photon_view_ac63b242555603f30ae5b7a099b6fae97) 9791 0 R (class_photon_view_ace8c64cae230e1fbd3356112274e4d8d) 9770 0 R (class_photon_view_ad288db13a15d581e0f7c5886f4036720) 6253 0 R (class_photon_view_ad696cb93fb9835d633b9def970650edc) 9794 0 R] +/Limits [(class_photon_view_aae1e4dcb7cf0cf2cd460490cefdcda46) (class_photon_view_ad696cb93fb9835d633b9def970650edc)] +>> endobj +11448 0 obj << +/Names [(class_photon_view_ad892c308b04787c06907120e64f6bc03) 9704 0 R (class_photon_view_ae0c6ba75b4b849f41a2164c0ad7dbf8f) 9789 0 R (class_photon_view_af1871faa617868760d00e59d443d2ad8) 9706 0 R (class_photon_view_af37a856ac051d3882de691851c7d2d08) 9774 0 R (class_photon_view_afcf78ab953a119454750b7e85242eae4) 9811 0 R (class_ping_mono_editor) 9858 0 R] +/Limits [(class_photon_view_ad892c308b04787c06907120e64f6bc03) (class_ping_mono_editor)] +>> endobj +11449 0 obj << +/Names [(class_ping_mono_editor_a2e854f702a4ced545a5b4405a511941e) 9882 0 R (class_ping_mono_editor_a4bcf82f6d83763d40da8a8b91a602245) 9881 0 R (class_ping_mono_editor_ae09a896c196c491b286e42b4bae1b5ff) 9880 0 R (class_pun_r_p_c) 6163 0 R (class_raise_event_options) 8584 0 R (class_raise_event_options_a0df0c168fd813e5041f1b0afc6826a75) 10104 0 R] +/Limits [(class_ping_mono_editor_a2e854f702a4ced545a5b4405a511941e) (class_raise_event_options_a0df0c168fd813e5041f1b0afc6826a75)] +>> endobj +11450 0 obj << +/Names [(class_raise_event_options_a2efd7020aa43343d1f07a3f8227deb6a) 10102 0 R (class_raise_event_options_a389e7e5b0df4ce93ba2731a51abc560b) 10106 0 R (class_raise_event_options_a3fff0d28599564c9d69c147ea39682d6) 10105 0 R (class_raise_event_options_a4f5d60401abe2561ab71c9ff9290c06b) 10099 0 R (class_raise_event_options_ab9fdfe47e82d2d049a347e7df4cef701) 10101 0 R (class_raise_event_options_aceba8258488a041c9b52df3bf485830c) 10107 0 R] +/Limits [(class_raise_event_options_a2efd7020aa43343d1f07a3f8227deb6a) (class_raise_event_options_aceba8258488a041c9b52df3bf485830c)] +>> endobj +11451 0 obj << +/Names [(class_raise_event_options_af1fcb68ddd5f76876c8448de8b5ecb4d) 9012 0 R (class_region) 9168 0 R (class_region_a39045fbf04de42df3f1e1dbd1ec53581) 10127 0 R (class_region_a44c13a3119bebc2afd0295ac2ef6adb4) 10125 0 R (class_region_a5dc3538ba137c2e09e72a79e6ee5a786) 10126 0 R (class_region_a8ffb04f77e0274519d29b6987c50aea0) 10124 0 R] +/Limits [(class_raise_event_options_af1fcb68ddd5f76876c8448de8b5ecb4d) (class_region_a8ffb04f77e0274519d29b6987c50aea0)] +>> endobj +11452 0 obj << +/Names [(class_region_ab5ea75ba87f49f1bf46b1a257b6f4d9e) 10123 0 R (class_room) 6097 0 R (class_room_a0f3fc9b00f2563209d7be0109cd9f98c) 10185 0 R (class_room_a353aed88c44abe4d35d945aef6922910) 10159 0 R (class_room_a3908cd1b2109aae3b91027156607ccac) 10156 0 R (class_room_a3d3329a383d9cc0e4dcf10527ed42845) 10186 0 R] +/Limits [(class_region_ab5ea75ba87f49f1bf46b1a257b6f4d9e) (class_room_a3d3329a383d9cc0e4dcf10527ed42845)] +>> endobj +11453 0 obj << +/Names [(class_room_a4451a1fa7f2f807af3b5e5ac8e65cbfe) 10182 0 R (class_room_a591b6c92b6ffff1c326f10dafdb7fc93) 10158 0 R (class_room_a6a994721651fbffbbec32be44c705642) 10160 0 R (class_room_a6f07e076b19abab3c30d2d7ce484538e) 10154 0 R (class_room_a86a1e0952d484cc7a679e141463f43c1) 8929 0 R (class_room_a8792cdddd5a4b8933bea7adab8438edf) 8928 0 R] +/Limits [(class_room_a4451a1fa7f2f807af3b5e5ac8e65cbfe) (class_room_a8792cdddd5a4b8933bea7adab8438edf)] +>> endobj +11454 0 obj << +/Names [(class_room_a9e7c93f447ab113f8b6f8fed1502b997) 10181 0 R (class_room_a9f4957e84aefcd801a35a63f44ce42f3) 10184 0 R (class_room_a9f8ac164f4f24be4140221b72792250a) 6102 0 R (class_room_aa9d85e54b2ff1b151de3670e87549966) 6647 0 R (class_room_ac193e5eddc588b1642b4de892d71082f) 10153 0 R (class_room_acd75df0fb26bd81f3345ced70740e832) 10155 0 R] +/Limits [(class_room_a9e7c93f447ab113f8b6f8fed1502b997) (class_room_acd75df0fb26bd81f3345ced70740e832)] +>> endobj +11455 0 obj << +/Names [(class_room_ad78784268e9c07e7d345f95bd58f7bd3) 10152 0 R (class_room_ad9eb0946b646b789772238b429d6266c) 10183 0 R (class_room_ae88d660a721682a04e860c977ee13de2) 10187 0 R (class_room_af3c714b645bb569f4b7f060a985dbf1a) 10151 0 R (class_room_af507d1c93c87733c1a64cf00104e7501) 10157 0 R (class_room_info) 6096 0 R] +/Limits [(class_room_ad78784268e9c07e7d345f95bd58f7bd3) (class_room_info)] +>> endobj +11456 0 obj << +/Names [(class_room_info_a016c74172ba8d6be63ed46526e0eebd4) 10237 0 R (class_room_info_a1e862ae572d36aba8d35f57241450082) 10271 0 R (class_room_info_a211655578d31b9fed0817cad42e8f0b5) 10270 0 R (class_room_info_a25abb4134a29834298f1c5abcfb85456) 10272 0 R (class_room_info_a46f07a9998e906a0adb4f45bb94f1994) 10240 0 R (class_room_info_a4a091adee00339d328654b93821ba49e) 10245 0 R] +/Limits [(class_room_info_a016c74172ba8d6be63ed46526e0eebd4) (class_room_info_a4a091adee00339d328654b93821ba49e)] +>> endobj +11457 0 obj << +/Names [(class_room_info_a4ad3e14e919adab20770874e5b2a8e5d) 10239 0 R (class_room_info_a617c94cffce6c0adec48aa5302c2d92f) 10251 0 R (class_room_info_a6ee1a8dc240cfc8f983192806e751f14) 10242 0 R (class_room_info_a77189ececa62ba47ff70359fd2db9af5) 10269 0 R (class_room_info_a7ae1c65429e1be34fdefd1b477fcd200) 8985 0 R (class_room_info_a870deed85986f1ca62f97ee3f50114ec) 10273 0 R] +/Limits [(class_room_info_a4ad3e14e919adab20770874e5b2a8e5d) (class_room_info_a870deed85986f1ca62f97ee3f50114ec)] +>> endobj +11458 0 obj << +/Names [(class_room_info_a928b103a3e88d2c090152440aa6fa874) 6646 0 R (class_room_info_a9b0a35ab87c5fbe181e5ad4d87ea169d) 10248 0 R (class_room_info_a9fe8d4b4891f2d6e57dcd774048f2545) 10243 0 R (class_room_info_aa738f42768356252e8a72c060dc4b49c) 10268 0 R (class_room_info_ace51e48417e36c6793b6530aa37cc10b) 10250 0 R (class_room_info_ad299fe650504477562a3cdf0609aa0eb) 10238 0 R] +/Limits [(class_room_info_a928b103a3e88d2c090152440aa6fa874) (class_room_info_ad299fe650504477562a3cdf0609aa0eb)] +>> endobj +11459 0 obj << +/Names [(class_room_info_ad4cd6791bdb87d9af9b2bf37bee89c90) 10244 0 R (class_room_info_addfd04015dca91382c6505cf0e7171f0) 10274 0 R (class_room_info_adfbbe6beb22c1fb69dc2040c39162729) 10249 0 R (class_room_info_ae307da359dd23a36390aa8d0c15eed1c) 10236 0 R (class_room_info_af0811895b3b40f2b64d243d5fd8fd362) 10246 0 R (class_room_info_af849403d0f422b62daaeb134b5e3ce54) 10247 0 R] +/Limits [(class_room_info_ad4cd6791bdb87d9af9b2bf37bee89c90) (class_room_info_af849403d0f422b62daaeb134b5e3ce54)] +>> endobj +11460 0 obj << +/Names [(class_room_info_afa1e25ad6bf953012d67b7a7a2f35642) 10241 0 R (class_room_options) 6099 0 R (class_room_options_a0322774781bc0f5a76e8ea607af453ee) 10337 0 R (class_room_options_a0bc17f8465ed615ce0126674af329a1f) 10334 0 R (class_room_options_a2d2471ba446949054e81362057d0d8ad) 9022 0 R (class_room_options_a30d0b25a8b85c9232a8a9140bc7def4b) 10333 0 R] +/Limits [(class_room_info_afa1e25ad6bf953012d67b7a7a2f35642) (class_room_options_a30d0b25a8b85c9232a8a9140bc7def4b)] +>> endobj +11461 0 obj << +/Names [(class_room_options_a4ada64fca4050804b30c76a308a7a489) 10322 0 R (class_room_options_a5e0b37ab163b5a359d129f9820d8c733) 10324 0 R (class_room_options_a62549ec6e071414957029b07705dc630) 10296 0 R (class_room_options_a694060e8b6a69e4e7091d8e37c2a203b) 10325 0 R (class_room_options_a750b1c08061aa357ae1d1e189cf8b66c) 10330 0 R (class_room_options_a76399e7b84d762bd0315bf89aa058caf) 6927 0 R] +/Limits [(class_room_options_a4ada64fca4050804b30c76a308a7a489) (class_room_options_a76399e7b84d762bd0315bf89aa058caf)] +>> endobj +11462 0 obj << +/Names [(class_room_options_a7f8b6c449cea4f53046e0b4578ab5718) 10323 0 R (class_room_options_a8c4bca19c674840296f924ec701b9ee1) 10335 0 R (class_room_options_a8ca0d69c14df2296fcafa9701426dbd7) 10328 0 R (class_room_options_aa6e8ee62ea58621a6ac3dc33deb319ba) 10332 0 R (class_room_options_aae5bbcfe0897cf56694be07642d980be) 10338 0 R (class_room_options_ac0d554f095700262fabd29cd28e4c7e8) 10326 0 R] +/Limits [(class_room_options_a7f8b6c449cea4f53046e0b4578ab5718) (class_room_options_ac0d554f095700262fabd29cd28e4c7e8)] +>> endobj +11463 0 obj << +/Names [(class_room_options_adcfa176960d9ab8c0e3667d7c6810192) 10331 0 R (class_room_options_aed4944177ded9cd58c6c7f0f2bd95b4c) 10336 0 R (class_room_options_aed6c5f5fd7c8f31010c242b967246c72) 10327 0 R (class_room_options_af4a6c36c95aa2a009377552769eafe4b) 10329 0 R (class_scene_manager_helper) 10388 0 R (class_scene_manager_helper_a177df3595c98493f06aeec0aca449743) 10391 0 R] +/Limits [(class_room_options_adcfa176960d9ab8c0e3667d7c6810192) (class_scene_manager_helper_a177df3595c98493f06aeec0aca449743)] +>> endobj +11464 0 obj << +/Names [(class_scene_manager_helper_ab6409a5985d706aa80a8c1add2f88cad) 10390 0 R (class_server_settings) 8682 0 R (class_server_settings_a0bc41aab7289ce45195f260077b91e48) 10444 0 R (class_server_settings_a16c0927185e85b1c45492481b49e1721) 10433 0 R (class_server_settings_a2fafc5c45a737f8090fef92f080bfd50) 10434 0 R (class_server_settings_a3b8285422f8ec14b98457c0935304b6d) 10414 0 R] +/Limits [(class_scene_manager_helper_ab6409a5985d706aa80a8c1add2f88cad) (class_server_settings_a3b8285422f8ec14b98457c0935304b6d)] +>> endobj +11465 0 obj << +/Names [(class_server_settings_a3e7eed57634b89eabedaf6c852b7dc4b) 10412 0 R (class_server_settings_a3fd2ceafc9192779c59a646884ba9810) 10405 0 R (class_server_settings_a5512de202f9fc04eaa51c9a82a7abb87) 10409 0 R (class_server_settings_a5caaad8da076804ce522b9b5da31d846) 10440 0 R (class_server_settings_a604fa40c04419dd5972f6d6c0710ac44) 10439 0 R (class_server_settings_a61d571180623076b8a12b9d2ca550411) 10436 0 R] +/Limits [(class_server_settings_a3e7eed57634b89eabedaf6c852b7dc4b) (class_server_settings_a61d571180623076b8a12b9d2ca550411)] +>> endobj +11466 0 obj << +/Names [(class_server_settings_a683ee8add05e046c395ecbcd2c077052) 10410 0 R (class_server_settings_a8a1c45242135b589ecc819e132c59655) 10408 0 R (class_server_settings_a98c6a355e14f4a2b76a1255162401aea) 10441 0 R (class_server_settings_aadefac90411116a558839e318ca90de0) 10411 0 R (class_server_settings_ab1470a61ee090390923d757d036b7c2d) 10437 0 R (class_server_settings_ab20cfb9bd2fd6526bb96d76c5ef5fcdc) 10438 0 R] +/Limits [(class_server_settings_a683ee8add05e046c395ecbcd2c077052) (class_server_settings_ab20cfb9bd2fd6526bb96d76c5ef5fcdc)] +>> endobj +11467 0 obj << +/Names [(class_server_settings_abe34064564018fc67afae2142c244cba) 10443 0 R (class_server_settings_abfb17f6528c617b0b7dff59f739de7ec) 10442 0 R (class_server_settings_ac70398ae8a3414ab1429069965cfcd32) 10398 0 R (class_server_settings_ac70398ae8a3414ab1429069965cfcd32a08d79b550be04c0b3b76fc64a58efde0) 10402 0 R (class_server_settings_ac70398ae8a3414ab1429069965cfcd32a30679503fd5d3a59a6c5c5228d0077de) 10401 0 R (class_server_settings_ac70398ae8a3414ab1429069965cfcd32a57561f889c64fb3f0a85f31a7fb1d941) 10403 0 R] +/Limits [(class_server_settings_abe34064564018fc67afae2142c244cba) (class_server_settings_ac70398ae8a3414ab1429069965cfcd32a57561f889c64fb3f0a85f31a7fb1d941)] +>> endobj +11468 0 obj << +/Names [(class_server_settings_ac70398ae8a3414ab1429069965cfcd32a90530e0e762e9297f4d32ed392eabe8e) 10400 0 R (class_server_settings_ac70398ae8a3414ab1429069965cfcd32afaf396cbd83927b72a84d2616fac76ff) 10399 0 R (class_server_settings_ac93d5ddacf54f0efb974bb3c57537275) 10435 0 R (class_server_settings_ae09a675e680b68d1ed6117ae990e0140) 10413 0 R (class_server_settings_ae0eef79dfdcf1d7d7577094dadc4ca4b) 10407 0 R (class_server_settings_ae9dc8779d32a07848cb6e9063ae215d6) 10406 0 R] +/Limits [(class_server_settings_ac70398ae8a3414ab1429069965cfcd32a90530e0e762e9297f4d32ed392eabe8e) (class_server_settings_ae9dc8779d32a07848cb6e9063ae215d6)] +>> endobj +11469 0 obj << +/Names [(class_server_settings_aeb0c2bda5dd14905c6d82c5166971117) 10404 0 R (class_typed_lobby) 6070 0 R (class_typed_lobby_a127f509c2991db15c8d1801ec9fe8b35) 6101 0 R (class_typed_lobby_a3cc306cd96153d9e71b905ca7367da77) 10486 0 R (class_typed_lobby_a6f007dbaead56a950745524463ce5219) 10491 0 R (class_typed_lobby_a73ad6b86a44c2b93d32748ea667c5427) 10492 0 R] +/Limits [(class_server_settings_aeb0c2bda5dd14905c6d82c5166971117) (class_typed_lobby_a73ad6b86a44c2b93d32748ea667c5427)] +>> endobj +11470 0 obj << +/Names [(class_typed_lobby_a7ba53ade2e4b461836a442872bdb5f71) 10489 0 R (class_typed_lobby_aa384f44e95a51cd7b7fd5cfc3354fde3) 10487 0 R (class_typed_lobby_acd1dfdf3ed901ee8ebe75587fcd0c60b) 10490 0 R (class_typed_lobby_info) 8792 0 R (class_typed_lobby_info_a5b7b6fb52a3b9813e8b2af49459c6475) 10505 0 R (class_typed_lobby_info_a948789896eb6815a2628681f338d754b) 10506 0 R] +/Limits [(class_typed_lobby_a7ba53ade2e4b461836a442872bdb5f71) (class_typed_lobby_info_a948789896eb6815a2628681f338d754b)] +>> endobj +11471 0 obj << +/Names [(class_typed_lobby_info_afc589242ac6c9946eb6b5cea6fcf9d81) 10504 0 R (class_unity_engine_1_1_scene_management_1_1_scene_manager) 6907 0 R (class_unity_engine_1_1_scene_management_1_1_scene_manager_a44f218a648b456714c451e119db53b2b) 10355 0 R (class_unity_engine_1_1_scene_management_1_1_scene_manager_a87166a3e05d57edf58bc6e71d0cf75d5) 10356 0 R (class_web_rpc_response) 6695 0 R (class_web_rpc_response_a26d3e8a8ae6afce9d309b4c8a7f6105e) 10523 0 R] +/Limits [(class_typed_lobby_info_afc589242ac6c9946eb6b5cea6fcf9d81) (class_web_rpc_response_a26d3e8a8ae6afce9d309b4c8a7f6105e)] +>> endobj +11472 0 obj << +/Names [(class_web_rpc_response_a328292c9db1a4c5559b00b9e6b7d1b69) 10524 0 R (class_web_rpc_response_a7c718bc7f77fa026307ac93f99c81c92) 10527 0 R (class_web_rpc_response_ab1431df146dda7dfd8c5771bf592504d) 10525 0 R (class_web_rpc_response_ac0f2c0f4cf1ad20705f4bb1cff84461d) 10526 0 R (class_web_rpc_response_af5d1ea1f048ed2527f025c8c19d9b133) 10522 0 R (general) 6023 0 R] +/Limits [(class_web_rpc_response_a328292c9db1a4c5559b00b9e6b7d1b69) (general)] +>> endobj +11473 0 obj << +/Names [(general_8md) 10542 0 R (general_instantiateManual) 6205 0 R (general_masterServerAndLobby) 6065 0 R (general_photonInGeneral) 6040 0 R (general_rpcManual) 6156 0 R (group__optional_gui) 6720 0 R] +/Limits [(general_8md) (group__optional_gui)] +>> endobj +11474 0 obj << +/Names [(group__public_api) 6324 0 R (group__public_api_ga78c69bbb6f79d1e4fb23d3f761eaf4aa) 6527 0 R (group__public_api_ga8d4a6786d6193f0e6245c44e4a7bb4a0) 6492 0 R (group__public_api_gab84b274b6aa3b3a3d7810361da16170f) 6486 0 R (group__public_api_gad61b1461cf60ad9e8d86923d111d5cc9) 6514 0 R (group__public_api_gaf0468f6a0c8ab8caec09678e6dc6f3d5) 6482 0 R] +/Limits [(group__public_api) (group__public_api_gaf0468f6a0c8ab8caec09678e6dc6f3d5)] +>> endobj +11475 0 obj << +/Names [(group__public_api_gaf30bbea51cc8c4b1ddc239d1c5c1468f) 6383 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a10b0501000c144cb2a7424bd45e1bcde) 6507 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a2adb83359e79fb5cfc94ab00dcf2184b) 6499 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a5310d1fb96be7d3ddd41079a9249c2b3) 6500 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a628d81b73c9e217e7388d07c448d98bf) 6497 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a6bfd906f466d549d660a2e7356ac58dd) 6505 0 R] +/Limits [(group__public_api_gaf30bbea51cc8c4b1ddc239d1c5c1468f) (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a6bfd906f466d549d660a2e7356ac58dd)] +>> endobj +11476 0 obj << +/Names [(group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a7b2f31b90fe1c2cc33a52233c1925df3) 6495 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a7d50c09f1ad7d098e0a847bcdcab7efb) 6502 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a88a122d877a08d17b85e005b97321320) 6506 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a8f20319172b2aa6813ba3359f8790a39) 6494 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa3db59f96790ca93f6c8ac703735f401) 6512 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa927b3e1f83aa1b3c6feff945ca18f77) 6496 0 R] +/Limits [(group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a7b2f31b90fe1c2cc33a52233c1925df3) (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa927b3e1f83aa1b3c6feff945ca18f77)] +>> endobj +11477 0 obj << +/Names [(group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa9c7b1d7219fa9d3de551ba5bc639eb6) 6503 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aaf3c26fc49c920a4779844921baeeef8) 6509 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ab468dfbd5b304bf96c74152856bd09a7) 6498 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ac2b8e7a526f5bdbd0ca4e42a1fc87fdf) 6504 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ac495884e9133962e72063062d1382466) 6511 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ae047588dabb5a0b1e059604b80289791) 6510 0 R] +/Limits [(group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aa9c7b1d7219fa9d3de551ba5bc639eb6) (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0ae047588dabb5a0b1e059604b80289791)] +>> endobj +11478 0 obj << +/Names [(group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aedb214653d9f3cecd840463790ac2894) 6513 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aef70e46fd3bbc21e3e1f0b6815e750c0) 6508 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0af6807db4ae3a5c82b99bced82a0ca92b) 6501 0 R (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0af704f57ea420275ad51bf55b7dec2c96) 6493 0 R (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa07d978b16f68f868668a6384df9bc11b) 6490 0 R (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa2dd089935363426140d8d54fee80464c) 6491 0 R] +/Limits [(group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0aedb214653d9f3cecd840463790ac2894) (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa2dd089935363426140d8d54fee80464c)] +>> endobj +11479 0 obj << +/Names [(group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa52ef9633d88a7480b3a938ff9eaa2a25) 6487 0 R (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa7eb09c07159c5b57395510a1c3755705) 6489 0 R (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fab1c94ca2fbc3e78fc30069c8d0f01680) 6165 0 R (group__public_api_ggab84b274b6aa3b3a3d7810361da16170fad0209f4a40060d6e7c37d29979d8f444) 6488 0 R (group__public_api_ggab84b274b6aa3b3a3d7810361da16170faf1983fc6b424304e28f91977e06f5881) 6243 0 R (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a281086f3f83f5f38b4b9a4572b60a368) 6523 0 R] +/Limits [(group__public_api_ggab84b274b6aa3b3a3d7810361da16170fa52ef9633d88a7480b3a938ff9eaa2a25) (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a281086f3f83f5f38b4b9a4572b60a368)] +>> endobj +11480 0 obj << +/Names [(group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a354c849d41c85993a8a28975e0d1c996) 6517 0 R (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a443ec8de9a697e190f4b24ab3ab36a9d) 6515 0 R (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a522f961eb7a2b35f0ef4b99b4ad3bb0a) 6521 0 R (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a65537dc549af3f90695ff7cf0002b17b) 6526 0 R (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a927b48448e5111f5bac2a7d59833f051) 6525 0 R (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a9b962f813e1575d4d311a9ab3e60afd4) 6524 0 R] +/Limits [(group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a354c849d41c85993a8a28975e0d1c996) (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9a9b962f813e1575d4d311a9ab3e60afd4)] +>> endobj +11481 0 obj << +/Names [(group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9aa8534012cb63e62c0b3a2335206117cc) 6522 0 R (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ab0d4998a26f5b5742ad38c4af8817e32) 6519 0 R (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ab67551dad56fc73fd4a580e810dc5f7f) 6520 0 R (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9abbec862190460d01acb3557a0e9a13f5) 6518 0 R (group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9ae28f71975b160263c7e6438b4b4429ef) 6516 0 R (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5a5391f9a882a54c787b206138ed6d28b0) 6484 0 R] +/Limits [(group__public_api_ggad61b1461cf60ad9e8d86923d111d5cc9aa8534012cb63e62c0b3a2335206117cc) (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5a5391f9a882a54c787b206138ed6d28b0)] +>> endobj +11482 0 obj << +/Names [(group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5abbd47109890259c0127154db1af26c75) 6485 0 R (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5ae0a1284706116eec7a83a489235a9ef8) 6483 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa03351bfa4fb9325a5b0486862d4be3be) 6477 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa1d2567b2c2f8ec1799a293b0359b4046) 6473 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2959bccbe2dabb6a8d2024ea241f6f2f) 6389 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2) 6461 0 R] +/Limits [(group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5abbd47109890259c0127154db1af26c75) (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa2af1a9ab5a169e8800132c0625d3c6b2)] +>> endobj +11483 0 obj << +/Names [(group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa39b1e276b8dab1e7620a643b7e01d71c) 6469 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3ad62b9539e5cf97eacf06e2268dea5a) 6388 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa3f4efa6b23780a66a9462d8634cca4c8) 6467 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa62d34f824fc4c61b693dd35ff3e7e79b) 6462 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa67402d95c324cda2b6d6e2fc391ae941) 6475 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa6fae9412143c8e2158841c492b22d698) 6463 0 R] +/Limits [(group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa39b1e276b8dab1e7620a643b7e01d71c) (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa6fae9412143c8e2158841c492b22d698)] +>> endobj +11484 0 obj << +/Names [(group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) 6465 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa75519954740466351e71d794425f6b12) 6466 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa864e7f0d7510922caf9c107b8dd771a3) 6158 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa883ba3af22ed6fc336cde8cb71624d30) 6471 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa8d87c972aaa1041a4f3778d2d7fab03c) 6478 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918) 6464 0 R] +/Limits [(group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa7546497495fd3c2f785966943e8d0568) (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa90c9be8eb52ae376a236bfd0a28d7918)] +>> endobj +11485 0 obj << +/Names [(group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa9583b114e6efdfd8068051d562391dc0) 6384 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faa8bb589bf7df8d2be1f0b4b586ba8001) 6472 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faa98a8b15d4aa12e02e5ccbc98172eecc) 6479 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab1a1f76626b99f398def802effe4908a) 6481 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab39600c160a074fb0b76467956dadec9) 6476 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab6273c525ff9cd304d2a8b0adb61a5ea) 6387 0 R] +/Limits [(group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fa9583b114e6efdfd8068051d562391dc0) (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fab6273c525ff9cd304d2a8b0adb61a5ea)] +>> endobj +11486 0 obj << +/Names [(group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fac859a296d058a67508e48b2a0363e71c) 6480 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faccfd8b0940a4981818cc4147e29de834) 6468 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fad07f29ca1e2135927cf0966873408125) 6470 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fadf130e855b7c27f0f10f66db4a7e83c4) 6386 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468faf0e999adc414b29857944d5e5fabfe2e) 6385 0 R (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fafbc17ce96afe80127d732de2d4be0378) 6474 0 R] +/Limits [(group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fac859a296d058a67508e48b2a0363e71c) (group__public_api_ggaf30bbea51cc8c4b1ddc239d1c5c1468fafbc17ce96afe80127d732de2d4be0378)] +>> endobj +11487 0 obj << +/Names [(index) 6015 0 R (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener) 6837 0 R (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a40b8c46d27d74b519f0fa34abd6fb81a) 7752 0 R (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a4dae08c2527025369671d13d8d67853e) 7753 0 R (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a601455f328ead10ff4b8be9a30698170) 7748 0 R (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a84ca1d0eee402e737803930a6ee6ec73) 7751 0 R] +/Limits [(index) (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a84ca1d0eee402e737803930a6ee6ec73)] +>> endobj +11488 0 obj << +/Names [(interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a9e1b1dd69f646b62d2958f9c49db2630) 7241 0 R (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_aa2165bd3e01be72b48d2cd1f7b7a94e9) 7754 0 R (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_aafb9a56eee22abe2c728d643629e8c28) 7750 0 R (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_ae4c3e779b7761f6a254231b9775fabcf) 7260 0 R (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_af843b2308e71621bedf3d8ee060eb1cc) 7749 0 R (interface_i_pun_callbacks) 6382 0 R] +/Limits [(interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a9e1b1dd69f646b62d2958f9c49db2630) (interface_i_pun_callbacks)] +>> endobj +11489 0 obj << +/Names [(interface_i_pun_callbacks_a02364f5144b6305bbffc886d530b7bd2) 7881 0 R (interface_i_pun_callbacks_a113daf6c35e118aff8daa5537d8c1c6c) 7838 0 R (interface_i_pun_callbacks_a12268b49cbab2203f8b664c7bef4655a) 7841 0 R (interface_i_pun_callbacks_a14eede4f84e088008e59fe63efb8775d) 7845 0 R (interface_i_pun_callbacks_a28ef052b776a594b305b08d7e80b6df3) 7844 0 R (interface_i_pun_callbacks_a3a210383eb25f1c6f509aaa23c792f6f) 7849 0 R] +/Limits [(interface_i_pun_callbacks_a02364f5144b6305bbffc886d530b7bd2) (interface_i_pun_callbacks_a3a210383eb25f1c6f509aaa23c792f6f)] +>> endobj +11490 0 obj << +/Names [(interface_i_pun_callbacks_a445d24c62e4e3d8bbc2cc0d25853d43c) 7848 0 R (interface_i_pun_callbacks_a49f4cfb7c0e2c51ec71b8f52c7413b31) 7843 0 R (interface_i_pun_callbacks_a523ce991e9a0dcde1b57b13e4e3db38c) 7835 0 R (interface_i_pun_callbacks_a5d06d8035078d422f08b0c72c97ab136) 7837 0 R (interface_i_pun_callbacks_a5dd5d351e76698a0b6665064f6282baa) 7851 0 R (interface_i_pun_callbacks_a6922987e083f414d05464403e3b94bce) 7882 0 R] +/Limits [(interface_i_pun_callbacks_a445d24c62e4e3d8bbc2cc0d25853d43c) (interface_i_pun_callbacks_a6922987e083f414d05464403e3b94bce)] +>> endobj +11491 0 obj << +/Names [(interface_i_pun_callbacks_a74de405ce9dff20613c31ce891090f49) 7840 0 R (interface_i_pun_callbacks_a9b55ef4a99252e1a9a111a3f88b61e1d) 7852 0 R (interface_i_pun_callbacks_aa200001beb114a07eac4b9442e2b793e) 7846 0 R (interface_i_pun_callbacks_aa6d84e9c68f93825fb3bf453d6f5ca1b) 7850 0 R (interface_i_pun_callbacks_aa9014980a1dc2d9befc6129668c890a2) 7770 0 R (interface_i_pun_callbacks_aae3221aa2d3b999574fc55a6aaee2877) 7880 0 R] +/Limits [(interface_i_pun_callbacks_a74de405ce9dff20613c31ce891090f49) (interface_i_pun_callbacks_aae3221aa2d3b999574fc55a6aaee2877)] +>> endobj +11492 0 obj << +/Names [(interface_i_pun_callbacks_abee2c86784a9a700b9f5b4073bd00be7) 7834 0 R (interface_i_pun_callbacks_ac0d022a7c6abd23f0039efec687eb0dc) 7847 0 R (interface_i_pun_callbacks_ac345f1ed2f24bcc73593988f1ac44f7d) 7842 0 R (interface_i_pun_callbacks_ac6d7fe9f1dfe9aec1562c262a90f7d5b) 7833 0 R (interface_i_pun_callbacks_ad3e808558f778aec6b12e950d9632506) 7839 0 R (interface_i_pun_callbacks_ad56f84b6647d2e61d273db297deb08b1) 7836 0 R] +/Limits [(interface_i_pun_callbacks_abee2c86784a9a700b9f5b4073bd00be7) (interface_i_pun_callbacks_ad56f84b6647d2e61d273db297deb08b1)] +>> endobj +11493 0 obj << +/Names [(interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) 7832 0 R (interface_i_pun_callbacks_af7c05722b8d15402bdb1a4e08850d989) 7853 0 R (interface_i_pun_callbacks_affec2831a07b42447ac47919104c608e) 7831 0 R (interface_i_pun_observable) 6381 0 R (interface_i_pun_prefab_pool) 8050 0 R (interface_i_pun_prefab_pool_a7e4be9281d4a5d2474134e54ef766aa0) 8052 0 R] +/Limits [(interface_i_pun_callbacks_aee4c7c26520ae45019b605b054fa1ac0) (interface_i_pun_prefab_pool_a7e4be9281d4a5d2474134e54ef766aa0)] +>> endobj +11494 0 obj << +/Names [(interface_i_pun_prefab_pool_a7faad9f73d3ef1574d3bf512f5d870ea) 8057 0 R (main_8md) 10543 0 R (md__c_1__dev_photon-sdk-dotnet__unity__photon_networking__assets___doc_optional_gui) 6291 0 R (namespace_exit_games) 6736 0 R (namespace_exit_games_1_1_client) 6738 0 R (namespace_exit_games_1_1_client_1_1_g_u_i) 6740 0 R] +/Limits [(interface_i_pun_prefab_pool_a7faad9f73d3ef1574d3bf512f5d870ea) (namespace_exit_games_1_1_client_1_1_g_u_i)] +>> endobj +11495 0 obj << +/Names [(namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65) 6743 0 R (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65a70ab99161d5df5bb7e0edb7407f65483) 6746 0 R (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65aa296104f0c61a9cf39f4824d05315e12) 6747 0 R (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65ab37d9c6b396307dda685c3c65c20e359) 6744 0 R (namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65ab7095f057db3fefa7325ad93a04e14fd) 6745 0 R (namespace_exit_games_1_1_client_1_1_photon) 6696 0 R] +/Limits [(namespace_exit_games_1_1_client_1_1_g_u_i_a818c6c37f51ee72cef59e460e7295d65) (namespace_exit_games_1_1_client_1_1_photon)] +>> endobj +11496 0 obj << +/Names [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat) 6820 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19) 6869 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19a10b0501000c144cb2a7424bd45e1bcde) 6880 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19a47d270be4d53cc3a1bc56b9eb1c36595) 6877 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19a8678b4480f40853432f680fccf4dab40) 6876 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aa3db59f96790ca93f6c8ac703735f401) 6875 0 R] +/Limits [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat) (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aa3db59f96790ca93f6c8ac703735f401)] +>> endobj +11497 0 obj << +/Names [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aa927b3e1f83aa1b3c6feff945ca18f77) 6874 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ab9ef7abda3055a11dd964fd93a07dc40) 6878 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ac495884e9133962e72063062d1382466) 6872 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ad61e8ad0770b4d06dc1716dfce52751e) 6879 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19ae047588dabb5a0b1e059604b80289791) 6871 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aedb214653d9f3cecd840463790ac2894) 6873 0 R] +/Limits [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aa927b3e1f83aa1b3c6feff945ca18f77) (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aedb214653d9f3cecd840463790ac2894)] +>> endobj +11498 0 obj << +/Names [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aef70e46fd3bbc21e3e1f0b6815e750c0) 6881 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19af704f57ea420275ad51bf55b7dec2c96) 6870 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8b) 6839 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba0777deff381bd76ec1ab2dc434860022) 6843 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba443ec8de9a697e190f4b24ab3ab36a9d) 6841 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba522f961eb7a2b35f0ef4b99b4ad3bb0a) 6847 0 R] +/Limits [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ad7d7f22d8741237f41e4b60779cdfa19aef70e46fd3bbc21e3e1f0b6815e750c0) (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba522f961eb7a2b35f0ef4b99b4ad3bb0a)] +>> endobj +11499 0 obj << +/Names [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba6adf97f83acf6453d4a6a4b1070f3754) 6840 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba85a7970b25fcbdfd2f82f78609298e56) 6849 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8baa8534012cb63e62c0b3a2335206117cc) 6848 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bab0d4998a26f5b5742ad38c4af8817e32) 6845 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bab67551dad56fc73fd4a580e810dc5f7f) 6846 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bac18fb72fa24e41efb70cd214f7681dfc) 6850 0 R] +/Limits [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8ba6adf97f83acf6453d4a6a4b1070f3754) (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bac18fb72fa24e41efb70cd214f7681dfc)] +>> endobj +11500 0 obj << +/Names [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bad376a854099d47f8a5279893e854ec27) 6844 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bae28f71975b160263c7e6438b4b4429ef) 6842 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1c) 6851 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca183709ebe3a1d675014d32b94ad7ed94) 6857 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca3f6fb6f058deeea1407bacefec5265a2) 6856 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca4db4563826bad0eb2f60ee6e42d0ea4b) 6853 0 R] +/Limits [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bad376a854099d47f8a5279893e854ec27) (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca4db4563826bad0eb2f60ee6e42d0ea4b)] +>> endobj +11501 0 obj << +/Names [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca6adf97f83acf6453d4a6a4b1070f3754) 6858 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca90589c47f06eb971d548591f23c285af) 6852 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1caa8a06837aec81e16c9a07221848aef6f) 6855 0 R (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1cad85544fce402c7a2a96a48078edaf203) 6854 0 R (namespace_photon) 6021 0 R (namespace_photon_ac2f4b49a218ef814d00e31cd5f32bf4e) 6896 0 R] +/Limits [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_aef14e10728bdf2b99b2a7e6fd4ac4a1ca6adf97f83acf6453d4a6a4b1070f3754) (namespace_photon_ac2f4b49a218ef814d00e31cd5f32bf4e)] +>> endobj +11502 0 obj << +/Names [(namespace_unity_engine) 6897 0 R (namespace_unity_engine_1_1_scene_management) 6899 0 R (optional_gui_8md) 10544 0 R (page.1) 6014 0 R (page.10) 6235 0 R (page.100) 8354 0 R] +/Limits [(namespace_unity_engine) (page.100)] +>> endobj +11503 0 obj << +/Names [(page.101) 8387 0 R (page.102) 8413 0 R (page.103) 8427 0 R (page.104) 8440 0 R (page.105) 8463 0 R (page.106) 8502 0 R] +/Limits [(page.101) (page.106)] +>> endobj +11504 0 obj << +/Names [(page.107) 8565 0 R (page.108) 8619 0 R (page.109) 8671 0 R (page.11) 6271 0 R (page.110) 8732 0 R (page.111) 8784 0 R] +/Limits [(page.107) (page.111)] +>> endobj +11505 0 obj << +/Names [(page.112) 8813 0 R (page.113) 8848 0 R (page.114) 8871 0 R (page.115) 8878 0 R (page.116) 8891 0 R (page.117) 8902 0 R] +/Limits [(page.112) (page.117)] +>> endobj +11506 0 obj << +/Names [(page.118) 8914 0 R (page.119) 8926 0 R (page.12) 6285 0 R (page.120) 8941 0 R (page.121) 8953 0 R (page.122) 8962 0 R] +/Limits [(page.118) (page.122)] +>> endobj +11507 0 obj << +/Names [(page.123) 8967 0 R (page.124) 8984 0 R (page.125) 8995 0 R (page.126) 9008 0 R (page.127) 9021 0 R (page.128) 9030 0 R] +/Limits [(page.123) (page.128)] +>> endobj +11508 0 obj << +/Names [(page.129) 9035 0 R (page.13) 6290 0 R (page.130) 9040 0 R (page.131) 9045 0 R (page.132) 9056 0 R (page.133) 9066 0 R] +/Limits [(page.129) (page.133)] +>> endobj +11509 0 obj << +/Names [(page.134) 9074 0 R (page.135) 9088 0 R (page.136) 9098 0 R (page.137) 9103 0 R (page.138) 9115 0 R (page.139) 9131 0 R] +/Limits [(page.134) (page.139)] +>> endobj +11510 0 obj << +/Names [(page.14) 6295 0 R (page.140) 9144 0 R (page.141) 9158 0 R (page.142) 9210 0 R (page.143) 9253 0 R (page.144) 9274 0 R] +/Limits [(page.14) (page.144)] +>> endobj +11511 0 obj << +/Names [(page.145) 9283 0 R (page.146) 9296 0 R (page.147) 9318 0 R (page.148) 9342 0 R (page.149) 9362 0 R (page.15) 6300 0 R] +/Limits [(page.145) (page.15)] +>> endobj +11512 0 obj << +/Names [(page.150) 9390 0 R (page.151) 9422 0 R (page.152) 9438 0 R (page.153) 9463 0 R (page.154) 9482 0 R (page.155) 9486 0 R] +/Limits [(page.150) (page.155)] +>> endobj +11513 0 obj << +/Names [(page.156) 9507 0 R (page.157) 9524 0 R (page.158) 9564 0 R (page.159) 9597 0 R (page.16) 6313 0 R (page.160) 9618 0 R] +/Limits [(page.156) (page.160)] +>> endobj +11514 0 obj << +/Names [(page.161) 9651 0 R (page.162) 9688 0 R (page.163) 9761 0 R (page.164) 9808 0 R (page.165) 9826 0 R (page.166) 9840 0 R] +/Limits [(page.161) (page.166)] +>> endobj +11515 0 obj << +/Names [(page.167) 9856 0 R (page.168) 9878 0 R (page.169) 9934 0 R (page.17) 6321 0 R (page.170) 9961 0 R (page.171) 9984 0 R] +/Limits [(page.167) (page.171)] +>> endobj +11516 0 obj << +/Names [(page.172) 10010 0 R (page.173) 10035 0 R (page.174) 10054 0 R (page.175) 10078 0 R (page.176) 10096 0 R (page.177) 10118 0 R] +/Limits [(page.172) (page.177)] +>> endobj +11517 0 obj << +/Names [(page.178) 10148 0 R (page.179) 10179 0 R (page.18) 6328 0 R (page.180) 10197 0 R (page.181) 10204 0 R (page.182) 10232 0 R] +/Limits [(page.178) (page.182)] +>> endobj +11518 0 obj << +/Names [(page.183) 10266 0 R (page.184) 10283 0 R (page.185) 10294 0 R (page.186) 10320 0 R (page.187) 10342 0 R (page.188) 10353 0 R] +/Limits [(page.183) (page.188)] +>> endobj +11519 0 obj << +/Names [(page.189) 10387 0 R (page.19) 6375 0 R (page.190) 10431 0 R (page.191) 10455 0 R (page.192) 10479 0 R (page.193) 10500 0 R] +/Limits [(page.189) (page.193)] +>> endobj +11520 0 obj << +/Names [(page.194) 10519 0 R (page.195) 10531 0 R (page.196) 10536 0 R (page.197) 10541 0 R (page.198) 10630 0 R (page.199) 10676 0 R] +/Limits [(page.194) (page.199)] +>> endobj +11521 0 obj << +/Names [(page.2) 6027 0 R (page.20) 6445 0 R (page.200) 10688 0 R (page.201) 10728 0 R (page.202) 10787 0 R (page.203) 10841 0 R] +/Limits [(page.2) (page.203)] +>> endobj +11522 0 obj << +/Names [(page.204) 10846 0 R (page.205) 10894 0 R (page.206) 10935 0 R (page.207) 10952 0 R (page.208) 10977 0 R (page.209) 11019 0 R] +/Limits [(page.204) (page.209)] +>> endobj +11523 0 obj << +/Names [(page.21) 6534 0 R (page.210) 11049 0 R (page.211) 11065 0 R (page.212) 11089 0 R (page.213) 11108 0 R (page.214) 11147 0 R] +/Limits [(page.21) (page.214)] +>> endobj +11524 0 obj << +/Names [(page.215) 11174 0 R (page.216) 11228 0 R (page.217) 11253 0 R (page.22) 6550 0 R (page.23) 6593 0 R (page.24) 6639 0 R] +/Limits [(page.215) (page.24)] +>> endobj +11525 0 obj << +/Names [(page.25) 6671 0 R (page.26) 6691 0 R (page.27) 6706 0 R (page.28) 6719 0 R (page.29) 6735 0 R (page.3) 6039 0 R] +/Limits [(page.25) (page.3)] +>> endobj +11526 0 obj << +/Names [(page.30) 6818 0 R (page.31) 6867 0 R (page.32) 6893 0 R (page.33) 6904 0 R (page.34) 6911 0 R (page.35) 6921 0 R] +/Limits [(page.30) (page.35)] +>> endobj +11527 0 obj << +/Names [(page.36) 6949 0 R (page.37) 6967 0 R (page.38) 6974 0 R (page.39) 6996 0 R (page.4) 6062 0 R (page.40) 7019 0 R] +/Limits [(page.36) (page.40)] +>> endobj +11528 0 obj << +/Names [(page.41) 7038 0 R (page.42) 7061 0 R (page.43) 7081 0 R (page.44) 7120 0 R (page.45) 7171 0 R (page.46) 7195 0 R] +/Limits [(page.41) (page.46)] +>> endobj +11529 0 obj << +/Names [(page.47) 7210 0 R (page.48) 7214 0 R (page.49) 7225 0 R (page.5) 6091 0 R (page.50) 7232 0 R (page.51) 7239 0 R] +/Limits [(page.47) (page.51)] +>> endobj +11530 0 obj << +/Names [(page.52) 7258 0 R (page.53) 7284 0 R (page.54) 7303 0 R (page.55) 7325 0 R (page.56) 7343 0 R (page.57) 7364 0 R] +/Limits [(page.52) (page.57)] +>> endobj +11531 0 obj << +/Names [(page.58) 7387 0 R (page.59) 7404 0 R (page.6) 6121 0 R (page.60) 7432 0 R (page.61) 7462 0 R (page.62) 7480 0 R] +/Limits [(page.58) (page.62)] +>> endobj +11532 0 obj << +/Names [(page.63) 7517 0 R (page.64) 7543 0 R (page.65) 7553 0 R (page.66) 7561 0 R (page.67) 7583 0 R (page.68) 7607 0 R] +/Limits [(page.63) (page.68)] +>> endobj +11533 0 obj << +/Names [(page.69) 7631 0 R (page.7) 6153 0 R (page.70) 7652 0 R (page.71) 7659 0 R (page.72) 7669 0 R (page.73) 7694 0 R] +/Limits [(page.69) (page.73)] +>> endobj +11534 0 obj << +/Names [(page.74) 7715 0 R (page.75) 7742 0 R (page.76) 7760 0 R (page.77) 7768 0 R (page.78) 7825 0 R (page.79) 7875 0 R] +/Limits [(page.74) (page.79)] +>> endobj +11535 0 obj << +/Names [(page.8) 6179 0 R (page.80) 7903 0 R (page.81) 7933 0 R (page.82) 7967 0 R (page.83) 7976 0 R (page.84) 7995 0 R] +/Limits [(page.8) (page.84)] +>> endobj +11536 0 obj << +/Names [(page.85) 8024 0 R (page.86) 8047 0 R (page.87) 8074 0 R (page.88) 8102 0 R (page.89) 8126 0 R (page.9) 6201 0 R] +/Limits [(page.85) (page.9)] +>> endobj +11537 0 obj << +/Names [(page.90) 8140 0 R (page.91) 8158 0 R (page.92) 8194 0 R (page.93) 8246 0 R (page.94) 8291 0 R (page.95) 8315 0 R] +/Limits [(page.90) (page.95)] +>> endobj +11538 0 obj << +/Names [(page.96) 8321 0 R (page.97) 8326 0 R (page.98) 8331 0 R (page.99) 8336 0 R (photon_stats_gui_8md) 10545 0 R (photon_stats_gui_group) 6301 0 R] +/Limits [(page.96) (photon_stats_gui_group)] +>> endobj +11539 0 obj << +/Names [(public_api_8md) 10546 0 R (public_api_group) 6322 0 R (section*.10) 6092 0 R (section*.100) 8443 0 R (section*.101) 8464 0 R (section*.102) 8465 0 R] +/Limits [(public_api_8md) (section*.102)] +>> endobj +11540 0 obj << +/Names [(section*.103) 8466 0 R (section*.104) 8503 0 R (section*.105) 8504 0 R (section*.106) 8672 0 R (section*.107) 8673 0 R (section*.108) 8733 0 R] +/Limits [(section*.103) (section*.108)] +>> endobj +11541 0 obj << +/Names [(section*.109) 9160 0 R (section*.11) 6093 0 R (section*.110) 9161 0 R (section*.111) 9162 0 R (section*.112) 9163 0 R (section*.113) 9164 0 R] +/Limits [(section*.109) (section*.113)] +>> endobj +11542 0 obj << +/Names [(section*.114) 9211 0 R (section*.115) 9254 0 R (section*.116) 9255 0 R (section*.117) 9256 0 R (section*.118) 9319 0 R (section*.119) 9343 0 R] +/Limits [(section*.114) (section*.119)] +>> endobj +11543 0 obj << +/Names [(section*.12) 6094 0 R (section*.120) 9363 0 R (section*.121) 9364 0 R (section*.122) 9391 0 R (section*.123) 9423 0 R (section*.124) 9465 0 R] +/Limits [(section*.12) (section*.124)] +>> endobj +11544 0 obj << +/Names [(section*.125) 9508 0 R (section*.126) 9526 0 R (section*.127) 9565 0 R (section*.128) 9568 0 R (section*.129) 9620 0 R (section*.13) 6095 0 R] +/Limits [(section*.125) (section*.13)] +>> endobj +11545 0 obj << +/Names [(section*.130) 9626 0 R (section*.131) 9628 0 R (section*.132) 9653 0 R (section*.133) 9689 0 R (section*.134) 9691 0 R (section*.135) 9700 0 R] +/Limits [(section*.130) (section*.135)] +>> endobj +11546 0 obj << +/Names [(section*.136) 9763 0 R (section*.137) 9764 0 R (section*.138) 9765 0 R (section*.139) 9879 0 R (section*.14) 6122 0 R (section*.140) 9883 0 R] +/Limits [(section*.136) (section*.140)] +>> endobj +11547 0 obj << +/Names [(section*.141) 9962 0 R (section*.142) 10097 0 R (section*.143) 10098 0 R (section*.144) 10119 0 R (section*.145) 10120 0 R (section*.146) 10121 0 R] +/Limits [(section*.141) (section*.146)] +>> endobj +11548 0 obj << +/Names [(section*.147) 10149 0 R (section*.148) 10150 0 R (section*.149) 10180 0 R (section*.15) 6123 0 R (section*.150) 10233 0 R (section*.151) 10234 0 R] +/Limits [(section*.147) (section*.151)] +>> endobj +11549 0 obj << +/Names [(section*.152) 10235 0 R (section*.153) 10295 0 R (section*.154) 10321 0 R (section*.155) 10354 0 R (section*.156) 10389 0 R (section*.157) 10392 0 R] +/Limits [(section*.152) (section*.157)] +>> endobj +11550 0 obj << +/Names [(section*.158) 10394 0 R (section*.159) 10395 0 R (section*.16) 6124 0 R (section*.160) 10396 0 R (section*.161) 10456 0 R (section*.162) 10459 0 R] +/Limits [(section*.158) (section*.162)] +>> endobj +11551 0 obj << +/Names [(section*.163) 10482 0 R (section*.164) 10483 0 R (section*.165) 10484 0 R (section*.166) 10485 0 R (section*.167) 10501 0 R (section*.168) 10502 0 R] +/Limits [(section*.163) (section*.168)] +>> endobj +11552 0 obj << +/Names [(section*.169) 10503 0 R (section*.17) 6126 0 R (section*.170) 10520 0 R (section*.171) 10521 0 R (section*.172) 10547 0 R (section*.173) 10631 0 R] +/Limits [(section*.169) (section*.173)] +>> endobj +11553 0 obj << +/Names [(section*.174) 10632 0 R (section*.175) 10690 0 R (section*.176) 10691 0 R (section*.177) 10694 0 R (section*.178) 10729 0 R (section*.179) 10730 0 R] +/Limits [(section*.174) (section*.179)] +>> endobj +11554 0 obj << +/Names [(section*.18) 6127 0 R (section*.180) 10731 0 R (section*.181) 10735 0 R (section*.182) 10788 0 R (section*.183) 10895 0 R (section*.184) 10896 0 R] +/Limits [(section*.18) (section*.184)] +>> endobj +11555 0 obj << +/Names [(section*.185) 10897 0 R (section*.186) 10937 0 R (section*.187) 10938 0 R (section*.188) 10953 0 R (section*.189) 10957 0 R (section*.19) 6154 0 R] +/Limits [(section*.185) (section*.19)] +>> endobj +11556 0 obj << +/Names [(section*.190) 10958 0 R (section*.191) 10963 0 R (section*.192) 10979 0 R (section*.193) 10980 0 R (section*.194) 10984 0 R (section*.195) 10985 0 R] +/Limits [(section*.190) (section*.195)] +>> endobj +11557 0 obj << +/Names [(section*.196) 10988 0 R (section*.197) 11021 0 R (section*.198) 11023 0 R (section*.199) 11024 0 R (section*.2) 6016 0 R (section*.20) 6155 0 R] +/Limits [(section*.196) (section*.20)] +>> endobj +11558 0 obj << +/Names [(section*.200) 11051 0 R (section*.201) 11052 0 R (section*.202) 11066 0 R (section*.203) 11069 0 R (section*.204) 11071 0 R (section*.205) 11090 0 R] +/Limits [(section*.200) (section*.205)] +>> endobj +11559 0 obj << +/Names [(section*.206) 11093 0 R (section*.207) 11095 0 R (section*.208) 11097 0 R (section*.209) 11109 0 R (section*.21) 6180 0 R (section*.210) 11111 0 R] +/Limits [(section*.206) (section*.210)] +>> endobj +11560 0 obj << +/Names [(section*.211) 11113 0 R (section*.212) 11115 0 R (section*.213) 11117 0 R (section*.214) 11148 0 R (section*.215) 11150 0 R (section*.216) 11152 0 R] +/Limits [(section*.211) (section*.216)] +>> endobj +11561 0 obj << +/Names [(section*.217) 11153 0 R (section*.218) 11155 0 R (section*.219) 11156 0 R (section*.22) 6181 0 R (section*.220) 11158 0 R (section*.221) 11175 0 R] +/Limits [(section*.217) (section*.221)] +>> endobj +11562 0 obj << +/Names [(section*.222) 11183 0 R (section*.223) 11184 0 R (section*.224) 11186 0 R (section*.225) 11187 0 R (section*.226) 11189 0 R (section*.227) 11229 0 R] +/Limits [(section*.222) (section*.227)] +>> endobj +11563 0 obj << +/Names [(section*.228) 11231 0 R (section*.229) 11232 0 R (section*.23) 6182 0 R (section*.230) 11233 0 R (section*.231) 11237 0 R (section*.232) 11238 0 R] +/Limits [(section*.228) (section*.232)] +>> endobj +11564 0 obj << +/Names [(section*.233) 11258 0 R (section*.234) 11259 0 R (section*.235) 11261 0 R (section*.236) 11262 0 R (section*.24) 6206 0 R (section*.25) 6207 0 R] +/Limits [(section*.233) (section*.25)] +>> endobj +11565 0 obj << +/Names [(section*.26) 6236 0 R (section*.27) 6241 0 R (section*.28) 6242 0 R (section*.29) 6272 0 R (section*.3) 6018 0 R (section*.30) 6273 0 R] +/Limits [(section*.26) (section*.30)] +>> endobj +11566 0 obj << +/Names [(section*.31) 6274 0 R (section*.32) 6275 0 R (section*.33) 6276 0 R (section*.34) 6277 0 R (section*.35) 6302 0 R (section*.36) 6303 0 R] +/Limits [(section*.31) (section*.36)] +>> endobj +11567 0 obj << +/Names [(section*.37) 6304 0 R (section*.38) 6305 0 R (section*.39) 6306 0 R (section*.4) 6019 0 R (section*.40) 6307 0 R (section*.41) 6314 0 R] +/Limits [(section*.37) (section*.41)] +>> endobj +11568 0 obj << +/Names [(section*.42) 6376 0 R (section*.43) 6379 0 R (section*.44) 6459 0 R (section*.45) 6721 0 R (section*.46) 6737 0 R (section*.47) 6739 0 R] +/Limits [(section*.42) (section*.47)] +>> endobj +11569 0 obj << +/Names [(section*.48) 6741 0 R (section*.49) 6742 0 R (section*.5) 6020 0 R (section*.50) 6819 0 R (section*.51) 6821 0 R (section*.52) 6822 0 R] +/Limits [(section*.48) (section*.52)] +>> endobj +11570 0 obj << +/Names [(section*.53) 6894 0 R (section*.54) 6895 0 R (section*.55) 6898 0 R (section*.56) 6905 0 R (section*.57) 6923 0 R (section*.58) 6950 0 R] +/Limits [(section*.53) (section*.58)] +>> endobj +11571 0 obj << +/Names [(section*.59) 6951 0 R (section*.6) 6041 0 R (section*.60) 6998 0 R (section*.61) 6999 0 R (section*.62) 7039 0 R (section*.63) 7062 0 R] +/Limits [(section*.59) (section*.63)] +>> endobj +11572 0 obj << +/Names [(section*.64) 7063 0 R (section*.65) 7121 0 R (section*.66) 7122 0 R (section*.67) 7172 0 R (section*.68) 7259 0 R (section*.69) 7285 0 R] +/Limits [(section*.64) (section*.69)] +>> endobj +11573 0 obj << +/Names [(section*.7) 6042 0 R (section*.70) 7304 0 R (section*.71) 7365 0 R (section*.72) 7366 0 R (section*.73) 7367 0 R (section*.74) 7388 0 R] +/Limits [(section*.7) (section*.74)] +>> endobj +11574 0 obj << +/Names [(section*.75) 7406 0 R (section*.76) 7433 0 R (section*.77) 7481 0 R (section*.78) 7585 0 R (section*.79) 7633 0 R (section*.8) 6063 0 R] +/Limits [(section*.75) (section*.8)] +>> endobj +11575 0 obj << +/Names [(section*.80) 7653 0 R (section*.81) 7671 0 R (section*.82) 7672 0 R (section*.83) 7695 0 R (section*.84) 7698 0 R (section*.85) 7716 0 R] +/Limits [(section*.80) (section*.85)] +>> endobj +11576 0 obj << +/Names [(section*.86) 7744 0 R (section*.87) 7746 0 R (section*.88) 7769 0 R (section*.89) 8048 0 R (section*.9) 6064 0 R (section*.90) 8051 0 R] +/Limits [(section*.86) (section*.90)] +>> endobj +11577 0 obj << +/Names [(section*.91) 8075 0 R (section*.92) 8103 0 R (section*.93) 8141 0 R (section*.94) 8160 0 R (section*.95) 8355 0 R (section*.96) 8388 0 R] +/Limits [(section*.91) (section*.96)] +>> endobj +11578 0 obj << +/Names [(section*.97) 8390 0 R (section*.98) 8441 0 R (section*.99) 8442 0 R (section.2.1) 10 0 R (section.6.1) 42 0 R (section.6.2) 82 0 R] +/Limits [(section*.97) (section.6.2)] +>> endobj +11579 0 obj << +/Names [(section.7.1) 94 0 R (section.7.2) 98 0 R (section.7.3) 102 0 R (section.7.4) 114 0 R (section.7.5) 118 0 R (section.7.6) 138 0 R] +/Limits [(section.7.1) (section.7.6)] +>> endobj +11580 0 obj << +/Names [(section.7.7) 150 0 R (section.7.8) 154 0 R (section.8.1) 162 0 R (section.8.10) 762 0 R (section.8.11) 802 0 R (section.8.12) 822 0 R] +/Limits [(section.7.7) (section.8.12)] +>> endobj +11581 0 obj << +/Names [(section.8.13) 894 0 R (section.8.14) 1022 0 R (section.8.15) 1090 0 R (section.8.16) 1166 0 R (section.8.17) 1202 0 R (section.8.18) 1218 0 R] +/Limits [(section.8.13) (section.8.18)] +>> endobj +11582 0 obj << +/Names [(section.8.19) 1266 0 R (section.8.2) 186 0 R (section.8.20) 1278 0 R (section.8.21) 1294 0 R (section.8.22) 1342 0 R (section.8.23) 1462 0 R] +/Limits [(section.8.19) (section.8.23)] +>> endobj +11583 0 obj << +/Names [(section.8.24) 1470 0 R (section.8.25) 1490 0 R (section.8.26) 1510 0 R (section.8.27) 1598 0 R (section.8.28) 1642 0 R (section.8.29) 1918 0 R] +/Limits [(section.8.24) (section.8.29)] +>> endobj +11584 0 obj << +/Names [(section.8.3) 250 0 R (section.8.30) 1982 0 R (section.8.31) 2026 0 R (section.8.32) 2070 0 R (section.8.33) 2590 0 R (section.8.34) 2638 0 R] +/Limits [(section.8.3) (section.8.34)] +>> endobj +11585 0 obj << +/Names [(section.8.35) 2786 0 R (section.8.36) 2802 0 R (section.8.37) 2818 0 R (section.8.38) 2878 0 R (section.8.39) 2974 0 R (section.8.4) 314 0 R] +/Limits [(section.8.35) (section.8.4)] +>> endobj +11586 0 obj << +/Names [(section.8.40) 3018 0 R (section.8.41) 3038 0 R (section.8.42) 3074 0 R (section.8.43) 3150 0 R (section.8.44) 3178 0 R (section.8.45) 3210 0 R] +/Limits [(section.8.40) (section.8.45)] +>> endobj +11587 0 obj << +/Names [(section.8.46) 3238 0 R (section.8.47) 3270 0 R (section.8.48) 3430 0 R (section.8.49) 3454 0 R (section.8.5) 386 0 R (section.8.50) 3574 0 R] +/Limits [(section.8.46) (section.8.50)] +>> endobj +11588 0 obj << +/Names [(section.8.51) 3582 0 R (section.8.52) 3626 0 R (section.8.53) 3658 0 R (section.8.54) 3758 0 R (section.8.55) 3878 0 R (section.8.56) 3974 0 R] +/Limits [(section.8.51) (section.8.56)] +>> endobj +11589 0 obj << +/Names [(section.8.57) 3994 0 R (section.8.58) 4010 0 R (section.8.59) 4126 0 R (section.8.6) 550 0 R (section.8.60) 4142 0 R (section.8.61) 4162 0 R] +/Limits [(section.8.57) (section.8.61)] +>> endobj +11590 0 obj << +/Names [(section.8.62) 4214 0 R (section.8.63) 4238 0 R (section.8.7) 590 0 R (section.8.8) 638 0 R (section.8.9) 714 0 R (section.9.1) 4286 0 R] +/Limits [(section.8.62) (section.9.1)] +>> endobj +11591 0 obj << +/Names [(section.9.10) 4362 0 R (section.9.11) 4366 0 R (section.9.12) 4406 0 R (section.9.13) 4430 0 R (section.9.14) 4450 0 R (section.9.15) 4470 0 R] +/Limits [(section.9.10) (section.9.15)] +>> endobj +11592 0 obj << +/Names [(section.9.16) 4478 0 R (section.9.17) 4494 0 R (section.9.18) 4506 0 R (section.9.19) 4514 0 R (section.9.2) 4290 0 R (section.9.20) 4518 0 R] +/Limits [(section.9.16) (section.9.20)] +>> endobj +11593 0 obj << +/Names [(section.9.21) 4542 0 R (section.9.22) 4558 0 R (section.9.23) 4562 0 R (section.9.24) 4566 0 R (section.9.25) 4574 0 R (section.9.26) 4582 0 R] +/Limits [(section.9.21) (section.9.26)] +>> endobj +11594 0 obj << +/Names [(section.9.27) 4590 0 R (section.9.28) 4594 0 R (section.9.29) 4598 0 R (section.9.3) 4294 0 R (section.9.30) 4602 0 R (section.9.31) 4606 0 R] +/Limits [(section.9.27) (section.9.31)] +>> endobj +11595 0 obj << +/Names [(section.9.32) 4610 0 R (section.9.33) 4614 0 R (section.9.34) 4618 0 R (section.9.35) 4622 0 R (section.9.36) 4626 0 R (section.9.37) 4630 0 R] +/Limits [(section.9.32) (section.9.37)] +>> endobj +11596 0 obj << +/Names [(section.9.38) 4634 0 R (section.9.39) 4638 0 R (section.9.4) 4298 0 R (section.9.40) 4642 0 R (section.9.41) 4646 0 R (section.9.42) 4650 0 R] +/Limits [(section.9.38) (section.9.42)] +>> endobj +11597 0 obj << +/Names [(section.9.43) 4654 0 R (section.9.44) 4658 0 R (section.9.45) 4662 0 R (section.9.46) 4666 0 R (section.9.47) 4670 0 R (section.9.5) 4302 0 R] +/Limits [(section.9.43) (section.9.5)] +>> endobj +11598 0 obj << +/Names [(section.9.6) 4306 0 R (section.9.7) 4314 0 R (section.9.8) 4342 0 R (section.9.9) 4358 0 R (struct_photon_message_info) 6160 0 R (struct_photon_message_info_a8497209fff12bb41b79d010905e1cb39) 8468 0 R] +/Limits [(section.9.6) (struct_photon_message_info_a8497209fff12bb41b79d010905e1cb39)] +>> endobj +11599 0 obj << +/Names [(struct_photon_message_info_a8a9879f9d95f99f4d066aba32d5853ca) 8469 0 R (struct_photon_message_info_a99d31effc25e87b9fc7129adba5fa188) 8471 0 R (struct_photon_message_info_ac170e8d3714ad1f3f3c848feea660ac5) 8472 0 R (struct_photon_message_info_adf3bb70090d012d863d915f564e7018f) 8470 0 R (subsection.2.1.1) 14 0 R (subsection.2.1.2) 18 0 R] +/Limits [(struct_photon_message_info_a8a9879f9d95f99f4d066aba32d5853ca) (subsection.2.1.2)] +>> endobj +11600 0 obj << +/Names [(subsection.2.1.3) 22 0 R (subsection.6.1.1) 46 0 R (subsection.6.1.2) 50 0 R (subsection.6.1.3) 74 0 R (subsection.6.2.1) 86 0 R (subsection.7.3.1) 106 0 R] +/Limits [(subsection.2.1.3) (subsection.7.3.1)] +>> endobj +11601 0 obj << +/Names [(subsection.7.5.1) 122 0 R (subsection.7.6.1) 142 0 R (subsection.8.1.1) 166 0 R (subsection.8.1.2) 170 0 R (subsection.8.10.1) 766 0 R (subsection.8.10.2) 770 0 R] +/Limits [(subsection.7.5.1) (subsection.8.10.2)] +>> endobj +11602 0 obj << +/Names [(subsection.8.11.1) 806 0 R (subsection.8.12.1) 826 0 R (subsection.8.12.2) 830 0 R (subsection.8.13.1) 898 0 R (subsection.8.13.2) 902 0 R (subsection.8.14.1) 1026 0 R] +/Limits [(subsection.8.11.1) (subsection.8.14.1)] +>> endobj +11603 0 obj << +/Names [(subsection.8.14.2) 1030 0 R (subsection.8.15.1) 1094 0 R (subsection.8.15.2) 1098 0 R (subsection.8.15.3) 1158 0 R (subsection.8.16.1) 1170 0 R (subsection.8.16.2) 1174 0 R] +/Limits [(subsection.8.14.2) (subsection.8.16.2)] +>> endobj +11604 0 obj << +/Names [(subsection.8.16.3) 1182 0 R (subsection.8.17.1) 1206 0 R (subsection.8.17.2) 1210 0 R (subsection.8.18.1) 1222 0 R (subsection.8.18.2) 1226 0 R (subsection.8.19.1) 1270 0 R] +/Limits [(subsection.8.16.3) (subsection.8.19.1)] +>> endobj +11605 0 obj << +/Names [(subsection.8.2.1) 190 0 R (subsection.8.2.2) 194 0 R (subsection.8.2.3) 206 0 R (subsection.8.2.4) 226 0 R (subsection.8.20.1) 1282 0 R (subsection.8.20.2) 1286 0 R] +/Limits [(subsection.8.2.1) (subsection.8.20.2)] +>> endobj +11606 0 obj << +/Names [(subsection.8.21.1) 1298 0 R (subsection.8.21.2) 1302 0 R (subsection.8.22.1) 1346 0 R (subsection.8.22.2) 1350 0 R (subsection.8.23.1) 1466 0 R (subsection.8.24.1) 1474 0 R] +/Limits [(subsection.8.21.1) (subsection.8.24.1)] +>> endobj +11607 0 obj << +/Names [(subsection.8.24.2) 1478 0 R (subsection.8.25.1) 1494 0 R (subsection.8.25.2) 1498 0 R (subsection.8.26.1) 1514 0 R (subsection.8.26.2) 1518 0 R (subsection.8.27.1) 1602 0 R] +/Limits [(subsection.8.24.2) (subsection.8.27.1)] +>> endobj +11608 0 obj << +/Names [(subsection.8.28.1) 1646 0 R (subsection.8.28.2) 1650 0 R (subsection.8.29.1) 1922 0 R (subsection.8.29.2) 1926 0 R (subsection.8.29.3) 1938 0 R (subsection.8.3.1) 254 0 R] +/Limits [(subsection.8.28.1) (subsection.8.3.1)] +>> endobj +11609 0 obj << +/Names [(subsection.8.3.2) 258 0 R (subsection.8.3.3) 270 0 R (subsection.8.3.4) 290 0 R (subsection.8.30.1) 1986 0 R (subsection.8.30.2) 1990 0 R (subsection.8.30.3) 2002 0 R] +/Limits [(subsection.8.3.2) (subsection.8.30.3)] +>> endobj +11610 0 obj << +/Names [(subsection.8.30.4) 2018 0 R (subsection.8.31.1) 2030 0 R (subsection.8.31.2) 2034 0 R (subsection.8.31.3) 2042 0 R (subsection.8.31.4) 2050 0 R (subsection.8.31.5) 2062 0 R] +/Limits [(subsection.8.30.4) (subsection.8.31.5)] +>> endobj +11611 0 obj << +/Names [(subsection.8.32.1) 2074 0 R (subsection.8.32.2) 2078 0 R (subsection.8.32.3) 2334 0 R (subsection.8.32.4) 2406 0 R (subsection.8.33.1) 2594 0 R (subsection.8.33.2) 2606 0 R] +/Limits [(subsection.8.32.1) (subsection.8.33.2)] +>> endobj +11612 0 obj << +/Names [(subsection.8.33.3) 2626 0 R (subsection.8.34.1) 2642 0 R (subsection.8.34.2) 2646 0 R (subsection.8.34.3) 2654 0 R (subsection.8.34.4) 2714 0 R (subsection.8.34.5) 2726 0 R] +/Limits [(subsection.8.33.3) (subsection.8.34.5)] +>> endobj +11613 0 obj << +/Names [(subsection.8.35.1) 2790 0 R (subsection.8.35.2) 2794 0 R (subsection.8.36.1) 2806 0 R (subsection.8.36.2) 2810 0 R (subsection.8.37.1) 2822 0 R (subsection.8.37.2) 2826 0 R] +/Limits [(subsection.8.35.1) (subsection.8.37.2)] +>> endobj +11614 0 obj << +/Names [(subsection.8.37.3) 2846 0 R (subsection.8.38.1) 2882 0 R (subsection.8.38.2) 2886 0 R (subsection.8.38.3) 2894 0 R (subsection.8.38.4) 2958 0 R (subsection.8.39.1) 2978 0 R] +/Limits [(subsection.8.37.3) (subsection.8.39.1)] +>> endobj +11615 0 obj << +/Names [(subsection.8.39.2) 2982 0 R (subsection.8.39.3) 2990 0 R (subsection.8.4.1) 318 0 R (subsection.8.4.2) 322 0 R (subsection.8.4.3) 330 0 R (subsection.8.4.4) 354 0 R] +/Limits [(subsection.8.39.2) (subsection.8.4.4)] +>> endobj +11616 0 obj << +/Names [(subsection.8.4.5) 374 0 R (subsection.8.40.1) 3022 0 R (subsection.8.40.2) 3026 0 R (subsection.8.41.1) 3042 0 R (subsection.8.41.2) 3050 0 R (subsection.8.42.1) 3078 0 R] +/Limits [(subsection.8.4.5) (subsection.8.42.1)] +>> endobj +11617 0 obj << +/Names [(subsection.8.42.2) 3090 0 R (subsection.8.43.1) 3154 0 R (subsection.8.43.2) 3162 0 R (subsection.8.44.1) 3182 0 R (subsection.8.44.2) 3190 0 R (subsection.8.45.1) 3214 0 R] +/Limits [(subsection.8.42.2) (subsection.8.45.1)] +>> endobj +11618 0 obj << +/Names [(subsection.8.45.2) 3222 0 R (subsection.8.46.1) 3242 0 R (subsection.8.46.2) 3250 0 R (subsection.8.47.1) 3274 0 R (subsection.8.47.2) 3278 0 R (subsection.8.47.3) 3342 0 R] +/Limits [(subsection.8.45.2) (subsection.8.47.3)] +>> endobj +11619 0 obj << +/Names [(subsection.8.47.4) 3390 0 R (subsection.8.48.1) 3434 0 R (subsection.8.48.2) 3438 0 R (subsection.8.49.1) 3458 0 R (subsection.8.49.2) 3462 0 R (subsection.8.5.1) 390 0 R] +/Limits [(subsection.8.47.4) (subsection.8.5.1)] +>> endobj +11620 0 obj << +/Names [(subsection.8.5.2) 394 0 R (subsection.8.5.3) 402 0 R (subsection.8.5.4) 482 0 R (subsection.8.5.5) 502 0 R (subsection.8.50.1) 3578 0 R (subsection.8.51.1) 3586 0 R] +/Limits [(subsection.8.5.2) (subsection.8.51.1)] +>> endobj +11621 0 obj << +/Names [(subsection.8.51.2) 3590 0 R (subsection.8.52.1) 3630 0 R (subsection.8.52.2) 3642 0 R (subsection.8.53.1) 3662 0 R (subsection.8.53.2) 3666 0 R (subsection.8.53.3) 3690 0 R] +/Limits [(subsection.8.51.2) (subsection.8.53.3)] +>> endobj +11622 0 obj << +/Names [(subsection.8.54.1) 3762 0 R (subsection.8.54.2) 3766 0 R (subsection.8.54.3) 3786 0 R (subsection.8.54.4) 3814 0 R (subsection.8.55.1) 3882 0 R (subsection.8.55.2) 3886 0 R] +/Limits [(subsection.8.54.1) (subsection.8.55.2)] +>> endobj +11623 0 obj << +/Names [(subsection.8.55.3) 3914 0 R (subsection.8.56.1) 3978 0 R (subsection.8.56.2) 3982 0 R (subsection.8.57.1) 3998 0 R (subsection.8.58.1) 4014 0 R (subsection.8.58.2) 4018 0 R] +/Limits [(subsection.8.55.3) (subsection.8.58.2)] +>> endobj +11624 0 obj << +/Names [(subsection.8.58.3) 4026 0 R (subsection.8.58.4) 4054 0 R (subsection.8.59.1) 4130 0 R (subsection.8.6.1) 554 0 R (subsection.8.6.2) 558 0 R (subsection.8.60.1) 4146 0 R] +/Limits [(subsection.8.58.3) (subsection.8.60.1)] +>> endobj +11625 0 obj << +/Names [(subsection.8.61.1) 4166 0 R (subsection.8.61.2) 4170 0 R (subsection.8.61.3) 4182 0 R (subsection.8.61.4) 4190 0 R (subsection.8.61.5) 4206 0 R (subsection.8.62.1) 4218 0 R] +/Limits [(subsection.8.61.1) (subsection.8.62.1)] +>> endobj +11626 0 obj << +/Names [(subsection.8.62.2) 4226 0 R (subsection.8.63.1) 4242 0 R (subsection.8.63.2) 4246 0 R (subsection.8.63.3) 4254 0 R (subsection.8.63.4) 4262 0 R (subsection.8.7.1) 594 0 R] +/Limits [(subsection.8.62.2) (subsection.8.7.1)] +>> endobj +11627 0 obj << +/Names [(subsection.8.7.2) 598 0 R (subsection.8.8.1) 642 0 R (subsection.8.8.2) 646 0 R (subsection.8.9.1) 718 0 R (subsection.8.9.2) 722 0 R (subsection.8.9.3) 730 0 R] +/Limits [(subsection.8.7.2) (subsection.8.9.3)] +>> endobj +11628 0 obj << +/Names [(subsection.8.9.4) 742 0 R (subsection.8.9.5) 754 0 R (subsection.9.11.1) 4370 0 R (subsection.9.12.1) 4410 0 R (subsection.9.12.2) 4422 0 R (subsection.9.13.1) 4434 0 R] +/Limits [(subsection.8.9.4) (subsection.9.13.1)] +>> endobj +11629 0 obj << +/Names [(subsection.9.13.2) 4438 0 R (subsection.9.14.1) 4454 0 R (subsection.9.15.1) 4474 0 R (subsection.9.16.1) 4482 0 R (subsection.9.17.1) 4498 0 R (subsection.9.18.1) 4510 0 R] +/Limits [(subsection.9.13.2) (subsection.9.18.1)] +>> endobj +11630 0 obj << +/Names [(subsection.9.20.1) 4522 0 R (subsection.9.21.1) 4546 0 R (subsection.9.24.1) 4570 0 R (subsection.9.25.1) 4578 0 R (subsection.9.26.1) 4586 0 R (subsection.9.6.1) 4310 0 R] +/Limits [(subsection.9.20.1) (subsection.9.6.1)] +>> endobj +11631 0 obj << +/Names [(subsection.9.7.1) 4318 0 R (subsection.9.7.2) 4322 0 R (subsection.9.8.1) 4346 0 R (subsubsection.6.1.2.1) 54 0 R (subsubsection.6.1.2.2) 58 0 R (subsubsection.6.1.2.3) 62 0 R] +/Limits [(subsection.9.7.1) (subsubsection.6.1.2.3)] +>> endobj +11632 0 obj << +/Names [(subsubsection.6.1.2.4) 66 0 R (subsubsection.6.1.2.5) 70 0 R (subsubsection.6.1.3.1) 78 0 R (subsubsection.7.3.1.1) 110 0 R (subsubsection.7.5.1.1) 126 0 R (subsubsection.7.5.1.2) 130 0 R] +/Limits [(subsubsection.6.1.2.4) (subsubsection.7.5.1.2)] +>> endobj +11633 0 obj << +/Names [(subsubsection.7.5.1.3) 134 0 R (subsubsection.7.6.1.1) 146 0 R (subsubsection.8.1.2.1) 174 0 R (subsubsection.8.1.2.2) 178 0 R (subsubsection.8.1.2.3) 182 0 R (subsubsection.8.10.2.1) 774 0 R] +/Limits [(subsubsection.7.5.1.3) (subsubsection.8.10.2.1)] +>> endobj +11634 0 obj << +/Names [(subsubsection.8.10.2.2) 778 0 R (subsubsection.8.10.2.3) 782 0 R (subsubsection.8.10.2.4) 786 0 R (subsubsection.8.10.2.5) 790 0 R (subsubsection.8.10.2.6) 794 0 R (subsubsection.8.10.2.7) 798 0 R] +/Limits [(subsubsection.8.10.2.2) (subsubsection.8.10.2.7)] +>> endobj +11635 0 obj << +/Names [(subsubsection.8.11.1.1) 810 0 R (subsubsection.8.11.1.2) 814 0 R (subsubsection.8.11.1.3) 818 0 R (subsubsection.8.12.2.1) 834 0 R (subsubsection.8.12.2.10) 870 0 R (subsubsection.8.12.2.11) 874 0 R] +/Limits [(subsubsection.8.11.1.1) (subsubsection.8.12.2.11)] +>> endobj +11636 0 obj << +/Names [(subsubsection.8.12.2.12) 878 0 R (subsubsection.8.12.2.13) 882 0 R (subsubsection.8.12.2.14) 886 0 R (subsubsection.8.12.2.15) 890 0 R (subsubsection.8.12.2.2) 838 0 R (subsubsection.8.12.2.3) 842 0 R] +/Limits [(subsubsection.8.12.2.12) (subsubsection.8.12.2.3)] +>> endobj +11637 0 obj << +/Names [(subsubsection.8.12.2.4) 846 0 R (subsubsection.8.12.2.5) 850 0 R (subsubsection.8.12.2.6) 854 0 R (subsubsection.8.12.2.7) 858 0 R (subsubsection.8.12.2.8) 862 0 R (subsubsection.8.12.2.9) 866 0 R] +/Limits [(subsubsection.8.12.2.4) (subsubsection.8.12.2.9)] +>> endobj +11638 0 obj << +/Names [(subsubsection.8.13.2.1) 906 0 R (subsubsection.8.13.2.10) 942 0 R (subsubsection.8.13.2.11) 946 0 R (subsubsection.8.13.2.12) 950 0 R (subsubsection.8.13.2.13) 954 0 R (subsubsection.8.13.2.14) 958 0 R] +/Limits [(subsubsection.8.13.2.1) (subsubsection.8.13.2.14)] +>> endobj +11639 0 obj << +/Names [(subsubsection.8.13.2.15) 962 0 R (subsubsection.8.13.2.16) 966 0 R (subsubsection.8.13.2.17) 970 0 R (subsubsection.8.13.2.18) 974 0 R (subsubsection.8.13.2.19) 978 0 R (subsubsection.8.13.2.2) 910 0 R] +/Limits [(subsubsection.8.13.2.15) (subsubsection.8.13.2.2)] +>> endobj +11640 0 obj << +/Names [(subsubsection.8.13.2.20) 982 0 R (subsubsection.8.13.2.21) 986 0 R (subsubsection.8.13.2.22) 990 0 R (subsubsection.8.13.2.23) 994 0 R (subsubsection.8.13.2.24) 998 0 R (subsubsection.8.13.2.25) 1002 0 R] +/Limits [(subsubsection.8.13.2.20) (subsubsection.8.13.2.25)] +>> endobj +11641 0 obj << +/Names [(subsubsection.8.13.2.26) 1006 0 R (subsubsection.8.13.2.27) 1010 0 R (subsubsection.8.13.2.28) 1014 0 R (subsubsection.8.13.2.29) 1018 0 R (subsubsection.8.13.2.3) 914 0 R (subsubsection.8.13.2.4) 918 0 R] +/Limits [(subsubsection.8.13.2.26) (subsubsection.8.13.2.4)] +>> endobj +11642 0 obj << +/Names [(subsubsection.8.13.2.5) 922 0 R (subsubsection.8.13.2.6) 926 0 R (subsubsection.8.13.2.7) 930 0 R (subsubsection.8.13.2.8) 934 0 R (subsubsection.8.13.2.9) 938 0 R (subsubsection.8.14.2.1) 1034 0 R] +/Limits [(subsubsection.8.13.2.5) (subsubsection.8.14.2.1)] +>> endobj +11643 0 obj << +/Names [(subsubsection.8.14.2.10) 1070 0 R (subsubsection.8.14.2.11) 1074 0 R (subsubsection.8.14.2.12) 1078 0 R (subsubsection.8.14.2.13) 1082 0 R (subsubsection.8.14.2.14) 1086 0 R (subsubsection.8.14.2.2) 1038 0 R] +/Limits [(subsubsection.8.14.2.10) (subsubsection.8.14.2.2)] +>> endobj +11644 0 obj << +/Names [(subsubsection.8.14.2.3) 1042 0 R (subsubsection.8.14.2.4) 1046 0 R (subsubsection.8.14.2.5) 1050 0 R (subsubsection.8.14.2.6) 1054 0 R (subsubsection.8.14.2.7) 1058 0 R (subsubsection.8.14.2.8) 1062 0 R] +/Limits [(subsubsection.8.14.2.3) (subsubsection.8.14.2.8)] +>> endobj +11645 0 obj << +/Names [(subsubsection.8.14.2.9) 1066 0 R (subsubsection.8.15.2.1) 1102 0 R (subsubsection.8.15.2.10) 1138 0 R (subsubsection.8.15.2.11) 1142 0 R (subsubsection.8.15.2.12) 1146 0 R (subsubsection.8.15.2.13) 1150 0 R] +/Limits [(subsubsection.8.14.2.9) (subsubsection.8.15.2.13)] +>> endobj +11646 0 obj << +/Names [(subsubsection.8.15.2.14) 1154 0 R (subsubsection.8.15.2.2) 1106 0 R (subsubsection.8.15.2.3) 1110 0 R (subsubsection.8.15.2.4) 1114 0 R (subsubsection.8.15.2.5) 1118 0 R (subsubsection.8.15.2.6) 1122 0 R] +/Limits [(subsubsection.8.15.2.14) (subsubsection.8.15.2.6)] +>> endobj +11647 0 obj << +/Names [(subsubsection.8.15.2.7) 1126 0 R (subsubsection.8.15.2.8) 1130 0 R (subsubsection.8.15.2.9) 1134 0 R (subsubsection.8.15.3.1) 1162 0 R (subsubsection.8.16.2.1) 1178 0 R (subsubsection.8.16.3.1) 1186 0 R] +/Limits [(subsubsection.8.15.2.7) (subsubsection.8.16.3.1)] +>> endobj +11648 0 obj << +/Names [(subsubsection.8.16.3.2) 1190 0 R (subsubsection.8.16.3.3) 1194 0 R (subsubsection.8.16.3.4) 1198 0 R (subsubsection.8.17.2.1) 1214 0 R (subsubsection.8.18.2.1) 1230 0 R (subsubsection.8.18.2.2) 1234 0 R] +/Limits [(subsubsection.8.16.3.2) (subsubsection.8.18.2.2)] +>> endobj +11649 0 obj << +/Names [(subsubsection.8.18.2.3) 1238 0 R (subsubsection.8.18.2.4) 1242 0 R (subsubsection.8.18.2.5) 1246 0 R (subsubsection.8.18.2.6) 1250 0 R (subsubsection.8.18.2.7) 1254 0 R (subsubsection.8.18.2.8) 1258 0 R] +/Limits [(subsubsection.8.18.2.3) (subsubsection.8.18.2.8)] +>> endobj +11650 0 obj << +/Names [(subsubsection.8.18.2.9) 1262 0 R (subsubsection.8.19.1.1) 1274 0 R (subsubsection.8.2.2.1) 198 0 R (subsubsection.8.2.2.2) 202 0 R (subsubsection.8.2.3.1) 210 0 R (subsubsection.8.2.3.2) 214 0 R] +/Limits [(subsubsection.8.18.2.9) (subsubsection.8.2.3.2)] +>> endobj +11651 0 obj << +/Names [(subsubsection.8.2.3.3) 218 0 R (subsubsection.8.2.3.4) 222 0 R (subsubsection.8.2.4.1) 230 0 R (subsubsection.8.2.4.2) 234 0 R (subsubsection.8.2.4.3) 238 0 R (subsubsection.8.2.4.4) 242 0 R] +/Limits [(subsubsection.8.2.3.3) (subsubsection.8.2.4.4)] +>> endobj +11652 0 obj << +/Names [(subsubsection.8.2.4.5) 246 0 R (subsubsection.8.20.2.1) 1290 0 R (subsubsection.8.21.2.1) 1306 0 R (subsubsection.8.21.2.2) 1310 0 R (subsubsection.8.21.2.3) 1314 0 R (subsubsection.8.21.2.4) 1318 0 R] +/Limits [(subsubsection.8.2.4.5) (subsubsection.8.21.2.4)] +>> endobj +11653 0 obj << +/Names [(subsubsection.8.21.2.5) 1322 0 R (subsubsection.8.21.2.6) 1326 0 R (subsubsection.8.21.2.7) 1330 0 R (subsubsection.8.21.2.8) 1334 0 R (subsubsection.8.21.2.9) 1338 0 R (subsubsection.8.22.2.1) 1354 0 R] +/Limits [(subsubsection.8.21.2.5) (subsubsection.8.22.2.1)] +>> endobj +11654 0 obj << +/Names [(subsubsection.8.22.2.10) 1390 0 R (subsubsection.8.22.2.11) 1394 0 R (subsubsection.8.22.2.12) 1398 0 R (subsubsection.8.22.2.13) 1402 0 R (subsubsection.8.22.2.14) 1406 0 R (subsubsection.8.22.2.15) 1410 0 R] +/Limits [(subsubsection.8.22.2.10) (subsubsection.8.22.2.15)] +>> endobj +11655 0 obj << +/Names [(subsubsection.8.22.2.16) 1414 0 R (subsubsection.8.22.2.17) 1418 0 R (subsubsection.8.22.2.18) 1422 0 R (subsubsection.8.22.2.19) 1426 0 R (subsubsection.8.22.2.2) 1358 0 R (subsubsection.8.22.2.20) 1430 0 R] +/Limits [(subsubsection.8.22.2.16) (subsubsection.8.22.2.20)] +>> endobj +11656 0 obj << +/Names [(subsubsection.8.22.2.21) 1434 0 R (subsubsection.8.22.2.22) 1438 0 R (subsubsection.8.22.2.23) 1442 0 R (subsubsection.8.22.2.24) 1446 0 R (subsubsection.8.22.2.25) 1450 0 R (subsubsection.8.22.2.26) 1454 0 R] +/Limits [(subsubsection.8.22.2.21) (subsubsection.8.22.2.26)] +>> endobj +11657 0 obj << +/Names [(subsubsection.8.22.2.27) 1458 0 R (subsubsection.8.22.2.3) 1362 0 R (subsubsection.8.22.2.4) 1366 0 R (subsubsection.8.22.2.5) 1370 0 R (subsubsection.8.22.2.6) 1374 0 R (subsubsection.8.22.2.7) 1378 0 R] +/Limits [(subsubsection.8.22.2.27) (subsubsection.8.22.2.7)] +>> endobj +11658 0 obj << +/Names [(subsubsection.8.22.2.8) 1382 0 R (subsubsection.8.22.2.9) 1386 0 R (subsubsection.8.24.2.1) 1482 0 R (subsubsection.8.24.2.2) 1486 0 R (subsubsection.8.25.2.1) 1502 0 R (subsubsection.8.25.2.2) 1506 0 R] +/Limits [(subsubsection.8.22.2.8) (subsubsection.8.25.2.2)] +>> endobj +11659 0 obj << +/Names [(subsubsection.8.26.2.1) 1522 0 R (subsubsection.8.26.2.10) 1558 0 R (subsubsection.8.26.2.11) 1562 0 R (subsubsection.8.26.2.12) 1566 0 R (subsubsection.8.26.2.13) 1570 0 R (subsubsection.8.26.2.14) 1574 0 R] +/Limits [(subsubsection.8.26.2.1) (subsubsection.8.26.2.14)] +>> endobj +11660 0 obj << +/Names [(subsubsection.8.26.2.15) 1578 0 R (subsubsection.8.26.2.16) 1582 0 R (subsubsection.8.26.2.17) 1586 0 R (subsubsection.8.26.2.18) 1590 0 R (subsubsection.8.26.2.19) 1594 0 R (subsubsection.8.26.2.2) 1526 0 R] +/Limits [(subsubsection.8.26.2.15) (subsubsection.8.26.2.2)] +>> endobj +11661 0 obj << +/Names [(subsubsection.8.26.2.3) 1530 0 R (subsubsection.8.26.2.4) 1534 0 R (subsubsection.8.26.2.5) 1538 0 R (subsubsection.8.26.2.6) 1542 0 R (subsubsection.8.26.2.7) 1546 0 R (subsubsection.8.26.2.8) 1550 0 R] +/Limits [(subsubsection.8.26.2.3) (subsubsection.8.26.2.8)] +>> endobj +11662 0 obj << +/Names [(subsubsection.8.26.2.9) 1554 0 R (subsubsection.8.27.1.1) 1606 0 R (subsubsection.8.27.1.2) 1610 0 R (subsubsection.8.27.1.3) 1614 0 R (subsubsection.8.27.1.4) 1618 0 R (subsubsection.8.27.1.5) 1622 0 R] +/Limits [(subsubsection.8.26.2.9) (subsubsection.8.27.1.5)] +>> endobj +11663 0 obj << +/Names [(subsubsection.8.27.1.6) 1626 0 R (subsubsection.8.27.1.7) 1630 0 R (subsubsection.8.27.1.8) 1634 0 R (subsubsection.8.27.1.9) 1638 0 R (subsubsection.8.28.2.1) 1654 0 R (subsubsection.8.28.2.10) 1690 0 R] +/Limits [(subsubsection.8.27.1.6) (subsubsection.8.28.2.10)] +>> endobj +11664 0 obj << +/Names [(subsubsection.8.28.2.11) 1694 0 R (subsubsection.8.28.2.12) 1698 0 R (subsubsection.8.28.2.13) 1702 0 R (subsubsection.8.28.2.14) 1706 0 R (subsubsection.8.28.2.15) 1710 0 R (subsubsection.8.28.2.16) 1714 0 R] +/Limits [(subsubsection.8.28.2.11) (subsubsection.8.28.2.16)] +>> endobj +11665 0 obj << +/Names [(subsubsection.8.28.2.17) 1718 0 R (subsubsection.8.28.2.18) 1722 0 R (subsubsection.8.28.2.19) 1726 0 R (subsubsection.8.28.2.2) 1658 0 R (subsubsection.8.28.2.20) 1730 0 R (subsubsection.8.28.2.21) 1734 0 R] +/Limits [(subsubsection.8.28.2.17) (subsubsection.8.28.2.21)] +>> endobj +11666 0 obj << +/Names [(subsubsection.8.28.2.22) 1738 0 R (subsubsection.8.28.2.23) 1742 0 R (subsubsection.8.28.2.24) 1746 0 R (subsubsection.8.28.2.25) 1750 0 R (subsubsection.8.28.2.26) 1754 0 R (subsubsection.8.28.2.27) 1758 0 R] +/Limits [(subsubsection.8.28.2.22) (subsubsection.8.28.2.27)] +>> endobj +11667 0 obj << +/Names [(subsubsection.8.28.2.28) 1762 0 R (subsubsection.8.28.2.29) 1766 0 R (subsubsection.8.28.2.3) 1662 0 R (subsubsection.8.28.2.30) 1770 0 R (subsubsection.8.28.2.31) 1774 0 R (subsubsection.8.28.2.32) 1778 0 R] +/Limits [(subsubsection.8.28.2.28) (subsubsection.8.28.2.32)] +>> endobj +11668 0 obj << +/Names [(subsubsection.8.28.2.33) 1782 0 R (subsubsection.8.28.2.34) 1786 0 R (subsubsection.8.28.2.35) 1790 0 R (subsubsection.8.28.2.36) 1794 0 R (subsubsection.8.28.2.37) 1798 0 R (subsubsection.8.28.2.38) 1802 0 R] +/Limits [(subsubsection.8.28.2.33) (subsubsection.8.28.2.38)] +>> endobj +11669 0 obj << +/Names [(subsubsection.8.28.2.39) 1806 0 R (subsubsection.8.28.2.4) 1666 0 R (subsubsection.8.28.2.40) 1810 0 R (subsubsection.8.28.2.41) 1814 0 R (subsubsection.8.28.2.42) 1818 0 R (subsubsection.8.28.2.43) 1822 0 R] +/Limits [(subsubsection.8.28.2.39) (subsubsection.8.28.2.43)] +>> endobj +11670 0 obj << +/Names [(subsubsection.8.28.2.44) 1826 0 R (subsubsection.8.28.2.45) 1830 0 R (subsubsection.8.28.2.46) 1834 0 R (subsubsection.8.28.2.47) 1838 0 R (subsubsection.8.28.2.48) 1842 0 R (subsubsection.8.28.2.49) 1846 0 R] +/Limits [(subsubsection.8.28.2.44) (subsubsection.8.28.2.49)] +>> endobj +11671 0 obj << +/Names [(subsubsection.8.28.2.5) 1670 0 R (subsubsection.8.28.2.50) 1850 0 R (subsubsection.8.28.2.51) 1854 0 R (subsubsection.8.28.2.52) 1858 0 R (subsubsection.8.28.2.53) 1862 0 R (subsubsection.8.28.2.54) 1866 0 R] +/Limits [(subsubsection.8.28.2.5) (subsubsection.8.28.2.54)] +>> endobj +11672 0 obj << +/Names [(subsubsection.8.28.2.55) 1870 0 R (subsubsection.8.28.2.56) 1874 0 R (subsubsection.8.28.2.57) 1878 0 R (subsubsection.8.28.2.58) 1882 0 R (subsubsection.8.28.2.59) 1886 0 R (subsubsection.8.28.2.6) 1674 0 R] +/Limits [(subsubsection.8.28.2.55) (subsubsection.8.28.2.6)] +>> endobj +11673 0 obj << +/Names [(subsubsection.8.28.2.60) 1890 0 R (subsubsection.8.28.2.61) 1894 0 R (subsubsection.8.28.2.62) 1898 0 R (subsubsection.8.28.2.63) 1902 0 R (subsubsection.8.28.2.64) 1906 0 R (subsubsection.8.28.2.65) 1910 0 R] +/Limits [(subsubsection.8.28.2.60) (subsubsection.8.28.2.65)] +>> endobj +11674 0 obj << +/Names [(subsubsection.8.28.2.66) 1914 0 R (subsubsection.8.28.2.7) 1678 0 R (subsubsection.8.28.2.8) 1682 0 R (subsubsection.8.28.2.9) 1686 0 R (subsubsection.8.29.2.1) 1930 0 R (subsubsection.8.29.2.2) 1934 0 R] +/Limits [(subsubsection.8.28.2.66) (subsubsection.8.29.2.2)] +>> endobj +11675 0 obj << +/Names [(subsubsection.8.29.3.1) 1942 0 R (subsubsection.8.29.3.10) 1978 0 R (subsubsection.8.29.3.2) 1946 0 R (subsubsection.8.29.3.3) 1950 0 R (subsubsection.8.29.3.4) 1954 0 R (subsubsection.8.29.3.5) 1958 0 R] +/Limits [(subsubsection.8.29.3.1) (subsubsection.8.29.3.5)] +>> endobj +11676 0 obj << +/Names [(subsubsection.8.29.3.6) 1962 0 R (subsubsection.8.29.3.7) 1966 0 R (subsubsection.8.29.3.8) 1970 0 R (subsubsection.8.29.3.9) 1974 0 R (subsubsection.8.3.2.1) 262 0 R (subsubsection.8.3.2.2) 266 0 R] +/Limits [(subsubsection.8.29.3.6) (subsubsection.8.3.2.2)] +>> endobj +11677 0 obj << +/Names [(subsubsection.8.3.3.1) 274 0 R (subsubsection.8.3.3.2) 278 0 R (subsubsection.8.3.3.3) 282 0 R (subsubsection.8.3.3.4) 286 0 R (subsubsection.8.3.4.1) 294 0 R (subsubsection.8.3.4.2) 298 0 R] +/Limits [(subsubsection.8.3.3.1) (subsubsection.8.3.4.2)] +>> endobj +11678 0 obj << +/Names [(subsubsection.8.3.4.3) 302 0 R (subsubsection.8.3.4.4) 306 0 R (subsubsection.8.3.4.5) 310 0 R (subsubsection.8.30.2.1) 1994 0 R (subsubsection.8.30.2.2) 1998 0 R (subsubsection.8.30.3.1) 2006 0 R] +/Limits [(subsubsection.8.3.4.3) (subsubsection.8.30.3.1)] +>> endobj +11679 0 obj << +/Names [(subsubsection.8.30.3.2) 2010 0 R (subsubsection.8.30.3.3) 2014 0 R (subsubsection.8.30.4.1) 2022 0 R (subsubsection.8.31.2.1) 2038 0 R (subsubsection.8.31.3.1) 2046 0 R (subsubsection.8.31.4.1) 2054 0 R] +/Limits [(subsubsection.8.30.3.2) (subsubsection.8.31.4.1)] +>> endobj +11680 0 obj << +/Names [(subsubsection.8.31.4.2) 2058 0 R (subsubsection.8.31.5.1) 2066 0 R (subsubsection.8.32.2.1) 2082 0 R (subsubsection.8.32.2.10) 2118 0 R (subsubsection.8.32.2.11) 2122 0 R (subsubsection.8.32.2.12) 2126 0 R] +/Limits [(subsubsection.8.31.4.2) (subsubsection.8.32.2.12)] +>> endobj +11681 0 obj << +/Names [(subsubsection.8.32.2.13) 2130 0 R (subsubsection.8.32.2.14) 2134 0 R (subsubsection.8.32.2.15) 2138 0 R (subsubsection.8.32.2.16) 2142 0 R (subsubsection.8.32.2.17) 2146 0 R (subsubsection.8.32.2.18) 2150 0 R] +/Limits [(subsubsection.8.32.2.13) (subsubsection.8.32.2.18)] +>> endobj +11682 0 obj << +/Names [(subsubsection.8.32.2.19) 2154 0 R (subsubsection.8.32.2.2) 2086 0 R (subsubsection.8.32.2.20) 2158 0 R (subsubsection.8.32.2.21) 2162 0 R (subsubsection.8.32.2.22) 2166 0 R (subsubsection.8.32.2.23) 2170 0 R] +/Limits [(subsubsection.8.32.2.19) (subsubsection.8.32.2.23)] +>> endobj +11683 0 obj << +/Names [(subsubsection.8.32.2.24) 2174 0 R (subsubsection.8.32.2.25) 2178 0 R (subsubsection.8.32.2.26) 2182 0 R (subsubsection.8.32.2.27) 2186 0 R (subsubsection.8.32.2.28) 2190 0 R (subsubsection.8.32.2.29) 2194 0 R] +/Limits [(subsubsection.8.32.2.24) (subsubsection.8.32.2.29)] +>> endobj +11684 0 obj << +/Names [(subsubsection.8.32.2.3) 2090 0 R (subsubsection.8.32.2.30) 2198 0 R (subsubsection.8.32.2.31) 2202 0 R (subsubsection.8.32.2.32) 2206 0 R (subsubsection.8.32.2.33) 2210 0 R (subsubsection.8.32.2.34) 2214 0 R] +/Limits [(subsubsection.8.32.2.3) (subsubsection.8.32.2.34)] +>> endobj +11685 0 obj << +/Names [(subsubsection.8.32.2.35) 2218 0 R (subsubsection.8.32.2.36) 2222 0 R (subsubsection.8.32.2.37) 2226 0 R (subsubsection.8.32.2.38) 2230 0 R (subsubsection.8.32.2.39) 2234 0 R (subsubsection.8.32.2.4) 2094 0 R] +/Limits [(subsubsection.8.32.2.35) (subsubsection.8.32.2.4)] +>> endobj +11686 0 obj << +/Names [(subsubsection.8.32.2.40) 2238 0 R (subsubsection.8.32.2.41) 2242 0 R (subsubsection.8.32.2.42) 2246 0 R (subsubsection.8.32.2.43) 2250 0 R (subsubsection.8.32.2.44) 2254 0 R (subsubsection.8.32.2.45) 2258 0 R] +/Limits [(subsubsection.8.32.2.40) (subsubsection.8.32.2.45)] +>> endobj +11687 0 obj << +/Names [(subsubsection.8.32.2.46) 2262 0 R (subsubsection.8.32.2.47) 2266 0 R (subsubsection.8.32.2.48) 2270 0 R (subsubsection.8.32.2.49) 2274 0 R (subsubsection.8.32.2.5) 2098 0 R (subsubsection.8.32.2.50) 2278 0 R] +/Limits [(subsubsection.8.32.2.46) (subsubsection.8.32.2.50)] +>> endobj +11688 0 obj << +/Names [(subsubsection.8.32.2.51) 2282 0 R (subsubsection.8.32.2.52) 2286 0 R (subsubsection.8.32.2.53) 2290 0 R (subsubsection.8.32.2.54) 2294 0 R (subsubsection.8.32.2.55) 2298 0 R (subsubsection.8.32.2.56) 2302 0 R] +/Limits [(subsubsection.8.32.2.51) (subsubsection.8.32.2.56)] +>> endobj +11689 0 obj << +/Names [(subsubsection.8.32.2.57) 2306 0 R (subsubsection.8.32.2.58) 2310 0 R (subsubsection.8.32.2.59) 2314 0 R (subsubsection.8.32.2.6) 2102 0 R (subsubsection.8.32.2.60) 2318 0 R (subsubsection.8.32.2.61) 2322 0 R] +/Limits [(subsubsection.8.32.2.57) (subsubsection.8.32.2.61)] +>> endobj +11690 0 obj << +/Names [(subsubsection.8.32.2.62) 2326 0 R (subsubsection.8.32.2.63) 2330 0 R (subsubsection.8.32.2.7) 2106 0 R (subsubsection.8.32.2.8) 2110 0 R (subsubsection.8.32.2.9) 2114 0 R (subsubsection.8.32.3.1) 2338 0 R] +/Limits [(subsubsection.8.32.2.62) (subsubsection.8.32.3.1)] +>> endobj +11691 0 obj << +/Names [(subsubsection.8.32.3.10) 2374 0 R (subsubsection.8.32.3.11) 2378 0 R (subsubsection.8.32.3.12) 2382 0 R (subsubsection.8.32.3.13) 2386 0 R (subsubsection.8.32.3.14) 2390 0 R (subsubsection.8.32.3.15) 2394 0 R] +/Limits [(subsubsection.8.32.3.10) (subsubsection.8.32.3.15)] +>> endobj +11692 0 obj << +/Names [(subsubsection.8.32.3.16) 2398 0 R (subsubsection.8.32.3.17) 2402 0 R (subsubsection.8.32.3.2) 2342 0 R (subsubsection.8.32.3.3) 2346 0 R (subsubsection.8.32.3.4) 2350 0 R (subsubsection.8.32.3.5) 2354 0 R] +/Limits [(subsubsection.8.32.3.16) (subsubsection.8.32.3.5)] +>> endobj +11693 0 obj << +/Names [(subsubsection.8.32.3.6) 2358 0 R (subsubsection.8.32.3.7) 2362 0 R (subsubsection.8.32.3.8) 2366 0 R (subsubsection.8.32.3.9) 2370 0 R (subsubsection.8.32.4.1) 2410 0 R (subsubsection.8.32.4.10) 2446 0 R] +/Limits [(subsubsection.8.32.3.6) (subsubsection.8.32.4.10)] +>> endobj +11694 0 obj << +/Names [(subsubsection.8.32.4.11) 2450 0 R (subsubsection.8.32.4.12) 2454 0 R (subsubsection.8.32.4.13) 2458 0 R (subsubsection.8.32.4.14) 2462 0 R (subsubsection.8.32.4.15) 2466 0 R (subsubsection.8.32.4.16) 2470 0 R] +/Limits [(subsubsection.8.32.4.11) (subsubsection.8.32.4.16)] +>> endobj +11695 0 obj << +/Names [(subsubsection.8.32.4.17) 2474 0 R (subsubsection.8.32.4.18) 2478 0 R (subsubsection.8.32.4.19) 2482 0 R (subsubsection.8.32.4.2) 2414 0 R (subsubsection.8.32.4.20) 2486 0 R (subsubsection.8.32.4.21) 2490 0 R] +/Limits [(subsubsection.8.32.4.17) (subsubsection.8.32.4.21)] +>> endobj +11696 0 obj << +/Names [(subsubsection.8.32.4.22) 2494 0 R (subsubsection.8.32.4.23) 2498 0 R (subsubsection.8.32.4.24) 2502 0 R (subsubsection.8.32.4.25) 2506 0 R (subsubsection.8.32.4.26) 2510 0 R (subsubsection.8.32.4.27) 2514 0 R] +/Limits [(subsubsection.8.32.4.22) (subsubsection.8.32.4.27)] +>> endobj +11697 0 obj << +/Names [(subsubsection.8.32.4.28) 2518 0 R (subsubsection.8.32.4.29) 2522 0 R (subsubsection.8.32.4.3) 2418 0 R (subsubsection.8.32.4.30) 2526 0 R (subsubsection.8.32.4.31) 2530 0 R (subsubsection.8.32.4.32) 2534 0 R] +/Limits [(subsubsection.8.32.4.28) (subsubsection.8.32.4.32)] +>> endobj +11698 0 obj << +/Names [(subsubsection.8.32.4.33) 2538 0 R (subsubsection.8.32.4.34) 2542 0 R (subsubsection.8.32.4.35) 2546 0 R (subsubsection.8.32.4.36) 2550 0 R (subsubsection.8.32.4.37) 2554 0 R (subsubsection.8.32.4.38) 2558 0 R] +/Limits [(subsubsection.8.32.4.33) (subsubsection.8.32.4.38)] +>> endobj +11699 0 obj << +/Names [(subsubsection.8.32.4.39) 2562 0 R (subsubsection.8.32.4.4) 2422 0 R (subsubsection.8.32.4.40) 2566 0 R (subsubsection.8.32.4.41) 2570 0 R (subsubsection.8.32.4.42) 2574 0 R (subsubsection.8.32.4.43) 2578 0 R] +/Limits [(subsubsection.8.32.4.39) (subsubsection.8.32.4.43)] +>> endobj +11700 0 obj << +/Names [(subsubsection.8.32.4.44) 2582 0 R (subsubsection.8.32.4.45) 2586 0 R (subsubsection.8.32.4.5) 2426 0 R (subsubsection.8.32.4.6) 2430 0 R (subsubsection.8.32.4.7) 2434 0 R (subsubsection.8.32.4.8) 2438 0 R] +/Limits [(subsubsection.8.32.4.44) (subsubsection.8.32.4.8)] +>> endobj +11701 0 obj << +/Names [(subsubsection.8.32.4.9) 2442 0 R (subsubsection.8.33.1.1) 2598 0 R (subsubsection.8.33.1.2) 2602 0 R (subsubsection.8.33.2.1) 2610 0 R (subsubsection.8.33.2.2) 2614 0 R (subsubsection.8.33.2.3) 2618 0 R] +/Limits [(subsubsection.8.32.4.9) (subsubsection.8.33.2.3)] +>> endobj +11702 0 obj << +/Names [(subsubsection.8.33.2.4) 2622 0 R (subsubsection.8.33.3.1) 2630 0 R (subsubsection.8.33.3.2) 2634 0 R (subsubsection.8.34.2.1) 2650 0 R (subsubsection.8.34.3.1) 2658 0 R (subsubsection.8.34.3.10) 2694 0 R] +/Limits [(subsubsection.8.33.2.4) (subsubsection.8.34.3.10)] +>> endobj +11703 0 obj << +/Names [(subsubsection.8.34.3.11) 2698 0 R (subsubsection.8.34.3.12) 2702 0 R (subsubsection.8.34.3.13) 2706 0 R (subsubsection.8.34.3.14) 2710 0 R (subsubsection.8.34.3.2) 2662 0 R (subsubsection.8.34.3.3) 2666 0 R] +/Limits [(subsubsection.8.34.3.11) (subsubsection.8.34.3.3)] +>> endobj +11704 0 obj << +/Names [(subsubsection.8.34.3.4) 2670 0 R (subsubsection.8.34.3.5) 2674 0 R (subsubsection.8.34.3.6) 2678 0 R (subsubsection.8.34.3.7) 2682 0 R (subsubsection.8.34.3.8) 2686 0 R (subsubsection.8.34.3.9) 2690 0 R] +/Limits [(subsubsection.8.34.3.4) (subsubsection.8.34.3.9)] +>> endobj +11705 0 obj << +/Names [(subsubsection.8.34.4.1) 2718 0 R (subsubsection.8.34.4.2) 2722 0 R (subsubsection.8.34.5.1) 2730 0 R (subsubsection.8.34.5.10) 2766 0 R (subsubsection.8.34.5.11) 2770 0 R (subsubsection.8.34.5.12) 2774 0 R] +/Limits [(subsubsection.8.34.4.1) (subsubsection.8.34.5.12)] +>> endobj +11706 0 obj << +/Names [(subsubsection.8.34.5.13) 2778 0 R (subsubsection.8.34.5.14) 2782 0 R (subsubsection.8.34.5.2) 2734 0 R (subsubsection.8.34.5.3) 2738 0 R (subsubsection.8.34.5.4) 2742 0 R (subsubsection.8.34.5.5) 2746 0 R] +/Limits [(subsubsection.8.34.5.13) (subsubsection.8.34.5.5)] +>> endobj +11707 0 obj << +/Names [(subsubsection.8.34.5.6) 2750 0 R (subsubsection.8.34.5.7) 2754 0 R (subsubsection.8.34.5.8) 2758 0 R (subsubsection.8.34.5.9) 2762 0 R (subsubsection.8.35.2.1) 2798 0 R (subsubsection.8.36.2.1) 2814 0 R] +/Limits [(subsubsection.8.34.5.6) (subsubsection.8.36.2.1)] +>> endobj +11708 0 obj << +/Names [(subsubsection.8.37.2.1) 2830 0 R (subsubsection.8.37.2.2) 2834 0 R (subsubsection.8.37.2.3) 2838 0 R (subsubsection.8.37.2.4) 2842 0 R (subsubsection.8.37.3.1) 2850 0 R (subsubsection.8.37.3.2) 2854 0 R] +/Limits [(subsubsection.8.37.2.1) (subsubsection.8.37.3.2)] +>> endobj +11709 0 obj << +/Names [(subsubsection.8.37.3.3) 2858 0 R (subsubsection.8.37.3.4) 2862 0 R (subsubsection.8.37.3.5) 2866 0 R (subsubsection.8.37.3.6) 2870 0 R (subsubsection.8.37.3.7) 2874 0 R (subsubsection.8.38.2.1) 2890 0 R] +/Limits [(subsubsection.8.37.3.3) (subsubsection.8.38.2.1)] +>> endobj +11710 0 obj << +/Names [(subsubsection.8.38.3.1) 2898 0 R (subsubsection.8.38.3.10) 2934 0 R (subsubsection.8.38.3.11) 2938 0 R (subsubsection.8.38.3.12) 2942 0 R (subsubsection.8.38.3.13) 2946 0 R (subsubsection.8.38.3.14) 2950 0 R] +/Limits [(subsubsection.8.38.3.1) (subsubsection.8.38.3.14)] +>> endobj +11711 0 obj << +/Names [(subsubsection.8.38.3.15) 2954 0 R (subsubsection.8.38.3.2) 2902 0 R (subsubsection.8.38.3.3) 2906 0 R (subsubsection.8.38.3.4) 2910 0 R (subsubsection.8.38.3.5) 2914 0 R (subsubsection.8.38.3.6) 2918 0 R] +/Limits [(subsubsection.8.38.3.15) (subsubsection.8.38.3.6)] +>> endobj +11712 0 obj << +/Names [(subsubsection.8.38.3.7) 2922 0 R (subsubsection.8.38.3.8) 2926 0 R (subsubsection.8.38.3.9) 2930 0 R (subsubsection.8.38.4.1) 2962 0 R (subsubsection.8.38.4.2) 2966 0 R (subsubsection.8.38.4.3) 2970 0 R] +/Limits [(subsubsection.8.38.3.7) (subsubsection.8.38.4.3)] +>> endobj +11713 0 obj << +/Names [(subsubsection.8.39.2.1) 2986 0 R (subsubsection.8.39.3.1) 2994 0 R (subsubsection.8.39.3.2) 2998 0 R (subsubsection.8.39.3.3) 3002 0 R (subsubsection.8.39.3.4) 3006 0 R (subsubsection.8.39.3.5) 3010 0 R] +/Limits [(subsubsection.8.39.2.1) (subsubsection.8.39.3.5)] +>> endobj +11714 0 obj << +/Names [(subsubsection.8.39.3.6) 3014 0 R (subsubsection.8.4.2.1) 326 0 R (subsubsection.8.4.3.1) 334 0 R (subsubsection.8.4.3.2) 338 0 R (subsubsection.8.4.3.3) 342 0 R (subsubsection.8.4.3.4) 346 0 R] +/Limits [(subsubsection.8.39.3.6) (subsubsection.8.4.3.4)] +>> endobj +11715 0 obj << +/Names [(subsubsection.8.4.3.5) 350 0 R (subsubsection.8.4.4.1) 358 0 R (subsubsection.8.4.4.2) 362 0 R (subsubsection.8.4.4.3) 366 0 R (subsubsection.8.4.4.4) 370 0 R (subsubsection.8.4.5.1) 378 0 R] +/Limits [(subsubsection.8.4.3.5) (subsubsection.8.4.5.1)] +>> endobj +11716 0 obj << +/Names [(subsubsection.8.4.5.2) 382 0 R (subsubsection.8.40.2.1) 3030 0 R (subsubsection.8.40.2.2) 3034 0 R (subsubsection.8.41.1.1) 3046 0 R (subsubsection.8.41.2.1) 3054 0 R (subsubsection.8.41.2.2) 3058 0 R] +/Limits [(subsubsection.8.4.5.2) (subsubsection.8.41.2.2)] +>> endobj +11717 0 obj << +/Names [(subsubsection.8.41.2.3) 3062 0 R (subsubsection.8.41.2.4) 3066 0 R (subsubsection.8.41.2.5) 3070 0 R (subsubsection.8.42.1.1) 3082 0 R (subsubsection.8.42.1.2) 3086 0 R (subsubsection.8.42.2.1) 3094 0 R] +/Limits [(subsubsection.8.41.2.3) (subsubsection.8.42.2.1)] +>> endobj +11718 0 obj << +/Names [(subsubsection.8.42.2.10) 3130 0 R (subsubsection.8.42.2.11) 3134 0 R (subsubsection.8.42.2.12) 3138 0 R (subsubsection.8.42.2.13) 3142 0 R (subsubsection.8.42.2.14) 3146 0 R (subsubsection.8.42.2.2) 3098 0 R] +/Limits [(subsubsection.8.42.2.10) (subsubsection.8.42.2.2)] +>> endobj +11719 0 obj << +/Names [(subsubsection.8.42.2.3) 3102 0 R (subsubsection.8.42.2.4) 3106 0 R (subsubsection.8.42.2.5) 3110 0 R (subsubsection.8.42.2.6) 3114 0 R (subsubsection.8.42.2.7) 3118 0 R (subsubsection.8.42.2.8) 3122 0 R] +/Limits [(subsubsection.8.42.2.3) (subsubsection.8.42.2.8)] +>> endobj +11720 0 obj << +/Names [(subsubsection.8.42.2.9) 3126 0 R (subsubsection.8.43.1.1) 3158 0 R (subsubsection.8.43.2.1) 3166 0 R (subsubsection.8.43.2.2) 3170 0 R (subsubsection.8.43.2.3) 3174 0 R (subsubsection.8.44.1.1) 3186 0 R] +/Limits [(subsubsection.8.42.2.9) (subsubsection.8.44.1.1)] +>> endobj +11721 0 obj << +/Names [(subsubsection.8.44.2.1) 3194 0 R (subsubsection.8.44.2.2) 3198 0 R (subsubsection.8.44.2.3) 3202 0 R (subsubsection.8.44.2.4) 3206 0 R (subsubsection.8.45.1.1) 3218 0 R (subsubsection.8.45.2.1) 3226 0 R] +/Limits [(subsubsection.8.44.2.1) (subsubsection.8.45.2.1)] +>> endobj +11722 0 obj << +/Names [(subsubsection.8.45.2.2) 3230 0 R (subsubsection.8.45.2.3) 3234 0 R (subsubsection.8.46.1.1) 3246 0 R (subsubsection.8.46.2.1) 3254 0 R (subsubsection.8.46.2.2) 3258 0 R (subsubsection.8.46.2.3) 3262 0 R] +/Limits [(subsubsection.8.45.2.2) (subsubsection.8.46.2.3)] +>> endobj +11723 0 obj << +/Names [(subsubsection.8.46.2.4) 3266 0 R (subsubsection.8.47.2.1) 3282 0 R (subsubsection.8.47.2.10) 3318 0 R (subsubsection.8.47.2.11) 3322 0 R (subsubsection.8.47.2.12) 3326 0 R (subsubsection.8.47.2.13) 3330 0 R] +/Limits [(subsubsection.8.46.2.4) (subsubsection.8.47.2.13)] +>> endobj +11724 0 obj << +/Names [(subsubsection.8.47.2.14) 3334 0 R (subsubsection.8.47.2.15) 3338 0 R (subsubsection.8.47.2.2) 3286 0 R (subsubsection.8.47.2.3) 3290 0 R (subsubsection.8.47.2.4) 3294 0 R (subsubsection.8.47.2.5) 3298 0 R] +/Limits [(subsubsection.8.47.2.14) (subsubsection.8.47.2.5)] +>> endobj +11725 0 obj << +/Names [(subsubsection.8.47.2.6) 3302 0 R (subsubsection.8.47.2.7) 3306 0 R (subsubsection.8.47.2.8) 3310 0 R (subsubsection.8.47.2.9) 3314 0 R (subsubsection.8.47.3.1) 3346 0 R (subsubsection.8.47.3.10) 3382 0 R] +/Limits [(subsubsection.8.47.2.6) (subsubsection.8.47.3.10)] +>> endobj +11726 0 obj << +/Names [(subsubsection.8.47.3.11) 3386 0 R (subsubsection.8.47.3.2) 3350 0 R (subsubsection.8.47.3.3) 3354 0 R (subsubsection.8.47.3.4) 3358 0 R (subsubsection.8.47.3.5) 3362 0 R (subsubsection.8.47.3.6) 3366 0 R] +/Limits [(subsubsection.8.47.3.11) (subsubsection.8.47.3.6)] +>> endobj +11727 0 obj << +/Names [(subsubsection.8.47.3.7) 3370 0 R (subsubsection.8.47.3.8) 3374 0 R (subsubsection.8.47.3.9) 3378 0 R (subsubsection.8.47.4.1) 3394 0 R (subsubsection.8.47.4.2) 3398 0 R (subsubsection.8.47.4.3) 3402 0 R] +/Limits [(subsubsection.8.47.3.7) (subsubsection.8.47.4.3)] +>> endobj +11728 0 obj << +/Names [(subsubsection.8.47.4.4) 3406 0 R (subsubsection.8.47.4.5) 3410 0 R (subsubsection.8.47.4.6) 3414 0 R (subsubsection.8.47.4.7) 3418 0 R (subsubsection.8.47.4.8) 3422 0 R (subsubsection.8.47.4.9) 3426 0 R] +/Limits [(subsubsection.8.47.4.4) (subsubsection.8.47.4.9)] +>> endobj +11729 0 obj << +/Names [(subsubsection.8.48.2.1) 3442 0 R (subsubsection.8.48.2.2) 3446 0 R (subsubsection.8.48.2.3) 3450 0 R (subsubsection.8.49.2.1) 3466 0 R (subsubsection.8.49.2.10) 3502 0 R (subsubsection.8.49.2.11) 3506 0 R] +/Limits [(subsubsection.8.48.2.1) (subsubsection.8.49.2.11)] +>> endobj +11730 0 obj << +/Names [(subsubsection.8.49.2.12) 3510 0 R (subsubsection.8.49.2.13) 3514 0 R (subsubsection.8.49.2.14) 3518 0 R (subsubsection.8.49.2.15) 3522 0 R (subsubsection.8.49.2.16) 3526 0 R (subsubsection.8.49.2.17) 3530 0 R] +/Limits [(subsubsection.8.49.2.12) (subsubsection.8.49.2.17)] +>> endobj +11731 0 obj << +/Names [(subsubsection.8.49.2.18) 3534 0 R (subsubsection.8.49.2.19) 3538 0 R (subsubsection.8.49.2.2) 3470 0 R (subsubsection.8.49.2.20) 3542 0 R (subsubsection.8.49.2.21) 3546 0 R (subsubsection.8.49.2.22) 3550 0 R] +/Limits [(subsubsection.8.49.2.18) (subsubsection.8.49.2.22)] +>> endobj +11732 0 obj << +/Names [(subsubsection.8.49.2.23) 3554 0 R (subsubsection.8.49.2.24) 3558 0 R (subsubsection.8.49.2.25) 3562 0 R (subsubsection.8.49.2.26) 3566 0 R (subsubsection.8.49.2.27) 3570 0 R (subsubsection.8.49.2.3) 3474 0 R] +/Limits [(subsubsection.8.49.2.23) (subsubsection.8.49.2.3)] +>> endobj +11733 0 obj << +/Names [(subsubsection.8.49.2.4) 3478 0 R (subsubsection.8.49.2.5) 3482 0 R (subsubsection.8.49.2.6) 3486 0 R (subsubsection.8.49.2.7) 3490 0 R (subsubsection.8.49.2.8) 3494 0 R (subsubsection.8.49.2.9) 3498 0 R] +/Limits [(subsubsection.8.49.2.4) (subsubsection.8.49.2.9)] +>> endobj +11734 0 obj << +/Names [(subsubsection.8.5.2.1) 398 0 R (subsubsection.8.5.3.1) 406 0 R (subsubsection.8.5.3.10) 442 0 R (subsubsection.8.5.3.11) 446 0 R (subsubsection.8.5.3.12) 450 0 R (subsubsection.8.5.3.13) 454 0 R] +/Limits [(subsubsection.8.5.2.1) (subsubsection.8.5.3.13)] +>> endobj +11735 0 obj << +/Names [(subsubsection.8.5.3.14) 458 0 R (subsubsection.8.5.3.15) 462 0 R (subsubsection.8.5.3.16) 466 0 R (subsubsection.8.5.3.17) 470 0 R (subsubsection.8.5.3.18) 474 0 R (subsubsection.8.5.3.19) 478 0 R] +/Limits [(subsubsection.8.5.3.14) (subsubsection.8.5.3.19)] +>> endobj +11736 0 obj << +/Names [(subsubsection.8.5.3.2) 410 0 R (subsubsection.8.5.3.3) 414 0 R (subsubsection.8.5.3.4) 418 0 R (subsubsection.8.5.3.5) 422 0 R (subsubsection.8.5.3.6) 426 0 R (subsubsection.8.5.3.7) 430 0 R] +/Limits [(subsubsection.8.5.3.2) (subsubsection.8.5.3.7)] +>> endobj +11737 0 obj << +/Names [(subsubsection.8.5.3.8) 434 0 R (subsubsection.8.5.3.9) 438 0 R (subsubsection.8.5.4.1) 486 0 R (subsubsection.8.5.4.2) 490 0 R (subsubsection.8.5.4.3) 494 0 R (subsubsection.8.5.4.4) 498 0 R] +/Limits [(subsubsection.8.5.3.8) (subsubsection.8.5.4.4)] +>> endobj +11738 0 obj << +/Names [(subsubsection.8.5.5.1) 506 0 R (subsubsection.8.5.5.10) 542 0 R (subsubsection.8.5.5.11) 546 0 R (subsubsection.8.5.5.2) 510 0 R (subsubsection.8.5.5.3) 514 0 R (subsubsection.8.5.5.4) 518 0 R] +/Limits [(subsubsection.8.5.5.1) (subsubsection.8.5.5.4)] +>> endobj +11739 0 obj << +/Names [(subsubsection.8.5.5.5) 522 0 R (subsubsection.8.5.5.6) 526 0 R (subsubsection.8.5.5.7) 530 0 R (subsubsection.8.5.5.8) 534 0 R (subsubsection.8.5.5.9) 538 0 R (subsubsection.8.51.2.1) 3594 0 R] +/Limits [(subsubsection.8.5.5.5) (subsubsection.8.51.2.1)] +>> endobj +11740 0 obj << +/Names [(subsubsection.8.51.2.2) 3598 0 R (subsubsection.8.51.2.3) 3602 0 R (subsubsection.8.51.2.4) 3606 0 R (subsubsection.8.51.2.5) 3610 0 R (subsubsection.8.51.2.6) 3614 0 R (subsubsection.8.51.2.7) 3618 0 R] +/Limits [(subsubsection.8.51.2.2) (subsubsection.8.51.2.7)] +>> endobj +11741 0 obj << +/Names [(subsubsection.8.51.2.8) 3622 0 R (subsubsection.8.52.1.1) 3634 0 R (subsubsection.8.52.1.2) 3638 0 R (subsubsection.8.52.2.1) 3646 0 R (subsubsection.8.52.2.2) 3650 0 R (subsubsection.8.52.2.3) 3654 0 R] +/Limits [(subsubsection.8.51.2.8) (subsubsection.8.52.2.3)] +>> endobj +11742 0 obj << +/Names [(subsubsection.8.53.2.1) 3670 0 R (subsubsection.8.53.2.2) 3674 0 R (subsubsection.8.53.2.3) 3678 0 R (subsubsection.8.53.2.4) 3682 0 R (subsubsection.8.53.2.5) 3686 0 R (subsubsection.8.53.3.1) 3694 0 R] +/Limits [(subsubsection.8.53.2.1) (subsubsection.8.53.3.1)] +>> endobj +11743 0 obj << +/Names [(subsubsection.8.53.3.10) 3730 0 R (subsubsection.8.53.3.11) 3734 0 R (subsubsection.8.53.3.12) 3738 0 R (subsubsection.8.53.3.13) 3742 0 R (subsubsection.8.53.3.14) 3746 0 R (subsubsection.8.53.3.15) 3750 0 R] +/Limits [(subsubsection.8.53.3.10) (subsubsection.8.53.3.15)] +>> endobj +11744 0 obj << +/Names [(subsubsection.8.53.3.16) 3754 0 R (subsubsection.8.53.3.2) 3698 0 R (subsubsection.8.53.3.3) 3702 0 R (subsubsection.8.53.3.4) 3706 0 R (subsubsection.8.53.3.5) 3710 0 R (subsubsection.8.53.3.6) 3714 0 R] +/Limits [(subsubsection.8.53.3.16) (subsubsection.8.53.3.6)] +>> endobj +11745 0 obj << +/Names [(subsubsection.8.53.3.7) 3718 0 R (subsubsection.8.53.3.8) 3722 0 R (subsubsection.8.53.3.9) 3726 0 R (subsubsection.8.54.2.1) 3770 0 R (subsubsection.8.54.2.2) 3774 0 R (subsubsection.8.54.2.3) 3778 0 R] +/Limits [(subsubsection.8.53.3.7) (subsubsection.8.54.2.3)] +>> endobj +11746 0 obj << +/Names [(subsubsection.8.54.2.4) 3782 0 R (subsubsection.8.54.3.1) 3790 0 R (subsubsection.8.54.3.2) 3794 0 R (subsubsection.8.54.3.3) 3798 0 R (subsubsection.8.54.3.4) 3802 0 R (subsubsection.8.54.3.5) 3806 0 R] +/Limits [(subsubsection.8.54.2.4) (subsubsection.8.54.3.5)] +>> endobj +11747 0 obj << +/Names [(subsubsection.8.54.3.6) 3810 0 R (subsubsection.8.54.4.1) 3818 0 R (subsubsection.8.54.4.10) 3854 0 R (subsubsection.8.54.4.11) 3858 0 R (subsubsection.8.54.4.12) 3862 0 R (subsubsection.8.54.4.13) 3866 0 R] +/Limits [(subsubsection.8.54.3.6) (subsubsection.8.54.4.13)] +>> endobj +11748 0 obj << +/Names [(subsubsection.8.54.4.14) 3870 0 R (subsubsection.8.54.4.15) 3874 0 R (subsubsection.8.54.4.2) 3822 0 R (subsubsection.8.54.4.3) 3826 0 R (subsubsection.8.54.4.4) 3830 0 R (subsubsection.8.54.4.5) 3834 0 R] +/Limits [(subsubsection.8.54.4.14) (subsubsection.8.54.4.5)] +>> endobj +11749 0 obj << +/Names [(subsubsection.8.54.4.6) 3838 0 R (subsubsection.8.54.4.7) 3842 0 R (subsubsection.8.54.4.8) 3846 0 R (subsubsection.8.54.4.9) 3850 0 R (subsubsection.8.55.2.1) 3890 0 R (subsubsection.8.55.2.2) 3894 0 R] +/Limits [(subsubsection.8.54.4.6) (subsubsection.8.55.2.2)] +>> endobj +11750 0 obj << +/Names [(subsubsection.8.55.2.3) 3898 0 R (subsubsection.8.55.2.4) 3902 0 R (subsubsection.8.55.2.5) 3906 0 R (subsubsection.8.55.2.6) 3910 0 R (subsubsection.8.55.3.1) 3918 0 R (subsubsection.8.55.3.10) 3954 0 R] +/Limits [(subsubsection.8.55.2.3) (subsubsection.8.55.3.10)] +>> endobj +11751 0 obj << +/Names [(subsubsection.8.55.3.11) 3958 0 R (subsubsection.8.55.3.12) 3962 0 R (subsubsection.8.55.3.13) 3966 0 R (subsubsection.8.55.3.14) 3970 0 R (subsubsection.8.55.3.2) 3922 0 R (subsubsection.8.55.3.3) 3926 0 R] +/Limits [(subsubsection.8.55.3.11) (subsubsection.8.55.3.3)] +>> endobj +11752 0 obj << +/Names [(subsubsection.8.55.3.4) 3930 0 R (subsubsection.8.55.3.5) 3934 0 R (subsubsection.8.55.3.6) 3938 0 R (subsubsection.8.55.3.7) 3942 0 R (subsubsection.8.55.3.8) 3946 0 R (subsubsection.8.55.3.9) 3950 0 R] +/Limits [(subsubsection.8.55.3.4) (subsubsection.8.55.3.9)] +>> endobj +11753 0 obj << +/Names [(subsubsection.8.56.2.1) 3986 0 R (subsubsection.8.56.2.2) 3990 0 R (subsubsection.8.57.1.1) 4002 0 R (subsubsection.8.57.1.2) 4006 0 R (subsubsection.8.58.2.1) 4022 0 R (subsubsection.8.58.3.1) 4030 0 R] +/Limits [(subsubsection.8.56.2.1) (subsubsection.8.58.3.1)] +>> endobj +11754 0 obj << +/Names [(subsubsection.8.58.3.2) 4034 0 R (subsubsection.8.58.3.3) 4038 0 R (subsubsection.8.58.3.4) 4042 0 R (subsubsection.8.58.3.5) 4046 0 R (subsubsection.8.58.3.6) 4050 0 R (subsubsection.8.58.4.1) 4058 0 R] +/Limits [(subsubsection.8.58.3.2) (subsubsection.8.58.4.1)] +>> endobj +11755 0 obj << +/Names [(subsubsection.8.58.4.10) 4094 0 R (subsubsection.8.58.4.11) 4098 0 R (subsubsection.8.58.4.12) 4102 0 R (subsubsection.8.58.4.13) 4106 0 R (subsubsection.8.58.4.14) 4110 0 R (subsubsection.8.58.4.15) 4114 0 R] +/Limits [(subsubsection.8.58.4.10) (subsubsection.8.58.4.15)] +>> endobj +11756 0 obj << +/Names [(subsubsection.8.58.4.16) 4118 0 R (subsubsection.8.58.4.17) 4122 0 R (subsubsection.8.58.4.2) 4062 0 R (subsubsection.8.58.4.3) 4066 0 R (subsubsection.8.58.4.4) 4070 0 R (subsubsection.8.58.4.5) 4074 0 R] +/Limits [(subsubsection.8.58.4.16) (subsubsection.8.58.4.5)] +>> endobj +11757 0 obj << +/Names [(subsubsection.8.58.4.6) 4078 0 R (subsubsection.8.58.4.7) 4082 0 R (subsubsection.8.58.4.8) 4086 0 R (subsubsection.8.58.4.9) 4090 0 R (subsubsection.8.59.1.1) 4134 0 R (subsubsection.8.59.1.2) 4138 0 R] +/Limits [(subsubsection.8.58.4.6) (subsubsection.8.59.1.2)] +>> endobj +11758 0 obj << +/Names [(subsubsection.8.6.2.1) 562 0 R (subsubsection.8.6.2.2) 566 0 R (subsubsection.8.6.2.3) 570 0 R (subsubsection.8.6.2.4) 574 0 R (subsubsection.8.6.2.5) 578 0 R (subsubsection.8.6.2.6) 582 0 R] +/Limits [(subsubsection.8.6.2.1) (subsubsection.8.6.2.6)] +>> endobj +11759 0 obj << +/Names [(subsubsection.8.6.2.7) 586 0 R (subsubsection.8.60.1.1) 4150 0 R (subsubsection.8.60.1.2) 4154 0 R (subsubsection.8.60.1.3) 4158 0 R (subsubsection.8.61.2.1) 4174 0 R (subsubsection.8.61.2.2) 4178 0 R] +/Limits [(subsubsection.8.6.2.7) (subsubsection.8.61.2.2)] +>> endobj +11760 0 obj << +/Names [(subsubsection.8.61.3.1) 4186 0 R (subsubsection.8.61.4.1) 4194 0 R (subsubsection.8.61.4.2) 4198 0 R (subsubsection.8.61.4.3) 4202 0 R (subsubsection.8.61.5.1) 4210 0 R (subsubsection.8.62.1.1) 4222 0 R] +/Limits [(subsubsection.8.61.3.1) (subsubsection.8.62.1.1)] +>> endobj +11761 0 obj << +/Names [(subsubsection.8.62.2.1) 4230 0 R (subsubsection.8.62.2.2) 4234 0 R (subsubsection.8.63.2.1) 4250 0 R (subsubsection.8.63.3.1) 4258 0 R (subsubsection.8.63.4.1) 4266 0 R (subsubsection.8.63.4.2) 4270 0 R] +/Limits [(subsubsection.8.62.2.1) (subsubsection.8.63.4.2)] +>> endobj +11762 0 obj << +/Names [(subsubsection.8.63.4.3) 4274 0 R (subsubsection.8.63.4.4) 4278 0 R (subsubsection.8.7.2.1) 602 0 R (subsubsection.8.7.2.2) 606 0 R (subsubsection.8.7.2.3) 610 0 R (subsubsection.8.7.2.4) 614 0 R] +/Limits [(subsubsection.8.63.4.3) (subsubsection.8.7.2.4)] +>> endobj +11763 0 obj << +/Names [(subsubsection.8.7.2.5) 618 0 R (subsubsection.8.7.2.6) 622 0 R (subsubsection.8.7.2.7) 626 0 R (subsubsection.8.7.2.8) 630 0 R (subsubsection.8.7.2.9) 634 0 R (subsubsection.8.8.2.1) 650 0 R] +/Limits [(subsubsection.8.7.2.5) (subsubsection.8.8.2.1)] +>> endobj +11764 0 obj << +/Names [(subsubsection.8.8.2.10) 686 0 R (subsubsection.8.8.2.11) 690 0 R (subsubsection.8.8.2.12) 694 0 R (subsubsection.8.8.2.13) 698 0 R (subsubsection.8.8.2.14) 702 0 R (subsubsection.8.8.2.15) 706 0 R] +/Limits [(subsubsection.8.8.2.10) (subsubsection.8.8.2.15)] +>> endobj +11765 0 obj << +/Names [(subsubsection.8.8.2.16) 710 0 R (subsubsection.8.8.2.2) 654 0 R (subsubsection.8.8.2.3) 658 0 R (subsubsection.8.8.2.4) 662 0 R (subsubsection.8.8.2.5) 666 0 R (subsubsection.8.8.2.6) 670 0 R] +/Limits [(subsubsection.8.8.2.16) (subsubsection.8.8.2.6)] +>> endobj +11766 0 obj << +/Names [(subsubsection.8.8.2.7) 674 0 R (subsubsection.8.8.2.8) 678 0 R (subsubsection.8.8.2.9) 682 0 R (subsubsection.8.9.2.1) 726 0 R (subsubsection.8.9.3.1) 734 0 R (subsubsection.8.9.3.2) 738 0 R] +/Limits [(subsubsection.8.8.2.7) (subsubsection.8.9.3.2)] +>> endobj +11767 0 obj << +/Names [(subsubsection.8.9.4.1) 746 0 R (subsubsection.8.9.4.2) 750 0 R (subsubsection.8.9.5.1) 758 0 R (subsubsection.9.11.1.1) 4374 0 R (subsubsection.9.11.1.2) 4378 0 R (subsubsection.9.11.1.3) 4382 0 R] +/Limits [(subsubsection.8.9.4.1) (subsubsection.9.11.1.3)] +>> endobj +11768 0 obj << +/Names [(subsubsection.9.11.1.4) 4386 0 R (subsubsection.9.11.1.5) 4390 0 R (subsubsection.9.11.1.6) 4394 0 R (subsubsection.9.11.1.7) 4398 0 R (subsubsection.9.11.1.8) 4402 0 R (subsubsection.9.12.1.1) 4414 0 R] +/Limits [(subsubsection.9.11.1.4) (subsubsection.9.12.1.1)] +>> endobj +11769 0 obj << +/Names [(subsubsection.9.12.1.2) 4418 0 R (subsubsection.9.12.2.1) 4426 0 R (subsubsection.9.13.2.1) 4442 0 R (subsubsection.9.13.2.2) 4446 0 R (subsubsection.9.14.1.1) 4458 0 R (subsubsection.9.14.1.2) 4462 0 R] +/Limits [(subsubsection.9.12.1.2) (subsubsection.9.14.1.2)] +>> endobj +11770 0 obj << +/Names [(subsubsection.9.14.1.3) 4466 0 R (subsubsection.9.16.1.1) 4486 0 R (subsubsection.9.16.1.2) 4490 0 R (subsubsection.9.17.1.1) 4502 0 R (subsubsection.9.20.1.1) 4526 0 R (subsubsection.9.20.1.2) 4530 0 R] +/Limits [(subsubsection.9.14.1.3) (subsubsection.9.20.1.2)] +>> endobj +11771 0 obj << +/Names [(subsubsection.9.20.1.3) 4534 0 R (subsubsection.9.20.1.4) 4538 0 R (subsubsection.9.21.1.1) 4550 0 R (subsubsection.9.21.1.2) 4554 0 R (subsubsection.9.7.2.1) 4326 0 R (subsubsection.9.7.2.2) 4330 0 R] +/Limits [(subsubsection.9.20.1.3) (subsubsection.9.7.2.2)] +>> endobj +11772 0 obj << +/Names [(subsubsection.9.7.2.3) 4334 0 R (subsubsection.9.7.2.4) 4338 0 R (subsubsection.9.8.1.1) 4350 0 R (subsubsection.9.8.1.2) 4354 0 R] +/Limits [(subsubsection.9.7.2.3) (subsubsection.9.8.1.2)] +>> endobj +11773 0 obj << +/Kids [11302 0 R 11303 0 R 11304 0 R 11305 0 R 11306 0 R 11307 0 R] +/Limits [(Doc-Start) (_enums_8cs_af823e3be9567fa753720895120c9819ba8bcc25c96aa5a71f7a76309077753e67)] +>> endobj +11774 0 obj << +/Kids [11308 0 R 11309 0 R 11310 0 R 11311 0 R 11312 0 R 11313 0 R] +/Limits [(_enums_8cs_af823e3be9567fa753720895120c9819bac12e01f2a13ff5587e1e9e4aedb8242d) (_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ada5c1bd8d2513ea60a7adcc388b0702dd9)] +>> endobj +11775 0 obj << +/Kids [11314 0 R 11315 0 R 11316 0 R 11317 0 R 11318 0 R 11319 0 R] +/Limits [(_loadbalancing_peer_8cs_ab34738ecd04700648af88bf53d1d74ada7a1920d61156abc05a60135aefe8bc67) (_networking_peer_8cs_a85638c2837a71574f29802d46793c990a183832aa8cc99ec3e781066d643b2d25)] +>> endobj +11776 0 obj << +/Kids [11320 0 R 11321 0 R 11322 0 R 11323 0 R 11324 0 R 11325 0 R] +/Limits [(_networking_peer_8cs_a85638c2837a71574f29802d46793c990a1c7d561350ce0a5a7e51b973a3796315) (_photon_view_8cs_a2188da6000e577148a984d5c78b279d2aa5c1fc068f4516291607c2b43fd4e229)] +>> endobj +11777 0 obj << +/Kids [11326 0 R 11327 0 R 11328 0 R 11329 0 R 11330 0 R 11331 0 R] +/Limits [(_photon_view_8cs_a2188da6000e577148a984d5c78b279d2ab1c94ca2fbc3e78fc30069c8d0f01680) (class_actor_properties_a08edbcddcc29b968467fe728e478eaa4)] +>> endobj +11778 0 obj << +/Kids [11332 0 R 11333 0 R 11334 0 R 11335 0 R 11336 0 R 11337 0 R] +/Limits [(class_actor_properties_a61f77cdeb2dffd485952b106feec37bb) (class_error_code_a8126103517b94ed6ebd0c92c6a832e4a)] +>> endobj +11779 0 obj << +/Kids [11338 0 R 11339 0 R 11340 0 R 11341 0 R 11342 0 R 11343 0 R] +/Limits [(class_error_code_a84290da3689bc3ea86a19c488ede9d6f) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a62b771eb77744555663093db81de52ad)] +>> endobj +11780 0 obj << +/Kids [11344 0 R 11345 0 R 11346 0 R 11347 0 R 11348 0 R 11349 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_authentication_values_a731ad99cd27c9c9943ebae6e7aade2e2) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a66aa30bff5ca81b1a1811d8e36b09546)] +>> endobj +11781 0 obj << +/Kids [11350 0 R 11351 0 R 11352 0 R 11353 0 R 11354 0 R 11355 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_client_a66e028cd73b441bbdd8d37ee0e2b1dee) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_operation_code_af1232f522b282a7a5111802982b9ba42)] +>> endobj +11782 0 obj << +/Kids [11356 0 R 11357 0 R 11358 0 R 11359 0 R 11360 0 R 11361 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_chat_parameter_code) (class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a112f0f8b62f7271dfc9793463f389482)] +>> endobj +11783 0 obj << +/Kids [11362 0 R 11363 0 R 11364 0 R 11365 0 R 11366 0 R 11367 0 R] +/Limits [(class_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_error_code_a2c770f32de9265fe53d881768167d7b4) (class_extensions_ac26ac025c1ad77aebc61385abb9a0aa0)] +>> endobj +11784 0 obj << +/Kids [11368 0 R 11369 0 R 11370 0 R 11371 0 R 11372 0 R 11373 0 R] +/Limits [(class_extensions_ac37ceea048b52ed7df7dc2dc3ea49c04) (class_operation_code_ab70f6436c1fae5974e820c66ab291fd0)] +>> endobj +11785 0 obj << +/Kids [11374 0 R 11375 0 R 11376 0 R 11377 0 R 11378 0 R 11379 0 R] +/Limits [(class_operation_code_ac5d8c14445b243abacb4bdbf357d62ba) (class_parameter_code_a71f83a62a57f9f2191e4bf2d3c6cd5d3)] +>> endobj +11786 0 obj << +/Kids [11380 0 R 11381 0 R 11382 0 R 11383 0 R 11384 0 R 11385 0 R] +/Limits [(class_parameter_code_a7269ad7651361581a36c94f0eea57e6f) (class_parameter_code_af3ad8a7afbfeece08aa218613827fdbd)] +>> endobj +11787 0 obj << +/Kids [11386 0 R 11387 0 R 11388 0 R 11389 0 R 11390 0 R 11391 0 R] +/Limits [(class_parameter_code_af4b80fb4f18f31a9cb58112385d6af8b) (class_photon_animator_view_1_1_synchronized_layer_ad1d491c302d7fbdf8f423c66561602b4)] +>> endobj +11788 0 obj << +/Kids [11392 0 R 11393 0 R 11394 0 R 11395 0 R 11396 0 R 11397 0 R] +/Limits [(class_photon_animator_view_1_1_synchronized_parameter) (class_photon_network_a0b99a01696f62ff29e005e6f939f8dc4)] +>> endobj +11789 0 obj << +/Kids [11398 0 R 11399 0 R 11400 0 R 11401 0 R 11402 0 R 11403 0 R] +/Limits [(class_photon_network_a0fdb79bcce45801ec81fbe56ffb939ec) (class_photon_network_a631231346113712f11319749d6e1a3eb)] +>> endobj +11790 0 obj << +/Kids [11404 0 R 11405 0 R 11406 0 R 11407 0 R 11408 0 R 11409 0 R] +/Limits [(class_photon_network_a65cc14cdfda9c9cb8dad3b3f862097d4) (class_photon_network_a9cc8da229d513fce2fddbc5e2c6eaed2)] +>> endobj +11791 0 obj << +/Kids [11410 0 R 11411 0 R 11412 0 R 11413 0 R 11414 0 R 11415 0 R] +/Limits [(class_photon_network_a9cf8214080471001a1a32e17eff9b402) (class_photon_network_ae6fd306fd4adf0c44d64d9cfadc038aa)] +>> endobj +11792 0 obj << +/Kids [11416 0 R 11417 0 R 11418 0 R 11419 0 R 11420 0 R 11421 0 R] +/Limits [(class_photon_network_ae995c021d1295f00afd9f87cd3bd118c) (class_photon_player_a9cb80ad93a84e86451e6d2becfacef2b)] +>> endobj +11793 0 obj << +/Kids [11422 0 R 11423 0 R 11424 0 R 11425 0 R 11426 0 R 11427 0 R] +/Limits [(class_photon_player_aaea56ca79d674b3e05c79f7b5c28fd7a) (class_photon_stream_a0a74157c27454d59c9ebcd2f12480611)] +>> endobj +11794 0 obj << +/Kids [11428 0 R 11429 0 R 11430 0 R 11431 0 R 11432 0 R 11433 0 R] +/Limits [(class_photon_stream_a0f65bddf114f21922e307a67e9a959a1) (class_photon_transform_view_position_model)] +>> endobj +11795 0 obj << +/Kids [11434 0 R 11435 0 R 11436 0 R 11437 0 R 11438 0 R 11439 0 R] +/Limits [(class_photon_transform_view_position_model_a24067fa6f667e913da06fac06773e483) (class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494a412cb411cecf9196f717d6bc9c272c62)] +>> endobj +11796 0 obj << +/Kids [11440 0 R 11441 0 R 11442 0 R 11443 0 R 11444 0 R 11445 0 R] +/Limits [(class_photon_transform_view_rotation_model_a7cffd3d6b5754aea9940cb3a5c671494ab9f5c797ebbf55adccdd8539a65a0241) (class_photon_view_a84084cfaf09debaf88362629bb772907)] +>> endobj +11797 0 obj << +/Kids [11446 0 R 11447 0 R 11448 0 R 11449 0 R 11450 0 R 11451 0 R] +/Limits [(class_photon_view_a869710e081df022bbb4fa160e7ab9e0a) (class_region_a8ffb04f77e0274519d29b6987c50aea0)] +>> endobj +11798 0 obj << +/Kids [11452 0 R 11453 0 R 11454 0 R 11455 0 R 11456 0 R 11457 0 R] +/Limits [(class_region_ab5ea75ba87f49f1bf46b1a257b6f4d9e) (class_room_info_a870deed85986f1ca62f97ee3f50114ec)] +>> endobj +11799 0 obj << +/Kids [11458 0 R 11459 0 R 11460 0 R 11461 0 R 11462 0 R 11463 0 R] +/Limits [(class_room_info_a928b103a3e88d2c090152440aa6fa874) (class_scene_manager_helper_a177df3595c98493f06aeec0aca449743)] +>> endobj +11800 0 obj << +/Kids [11464 0 R 11465 0 R 11466 0 R 11467 0 R 11468 0 R 11469 0 R] +/Limits [(class_scene_manager_helper_ab6409a5985d706aa80a8c1add2f88cad) (class_typed_lobby_a73ad6b86a44c2b93d32748ea667c5427)] +>> endobj +11801 0 obj << +/Kids [11470 0 R 11471 0 R 11472 0 R 11473 0 R 11474 0 R 11475 0 R] +/Limits [(class_typed_lobby_a7ba53ade2e4b461836a442872bdb5f71) (group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a6bfd906f466d549d660a2e7356ac58dd)] +>> endobj +11802 0 obj << +/Kids [11476 0 R 11477 0 R 11478 0 R 11479 0 R 11480 0 R 11481 0 R] +/Limits [(group__public_api_gga8d4a6786d6193f0e6245c44e4a7bb4a0a7b2f31b90fe1c2cc33a52233c1925df3) (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5a5391f9a882a54c787b206138ed6d28b0)] +>> endobj +11803 0 obj << +/Kids [11482 0 R 11483 0 R 11484 0 R 11485 0 R 11486 0 R 11487 0 R] +/Limits [(group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5abbd47109890259c0127154db1af26c75) (interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a84ca1d0eee402e737803930a6ee6ec73)] +>> endobj +11804 0 obj << +/Kids [11488 0 R 11489 0 R 11490 0 R 11491 0 R 11492 0 R 11493 0 R] +/Limits [(interface_exit_games_1_1_client_1_1_photon_1_1_chat_1_1_i_chat_client_listener_a9e1b1dd69f646b62d2958f9c49db2630) (interface_i_pun_prefab_pool_a7e4be9281d4a5d2474134e54ef766aa0)] +>> endobj +11805 0 obj << +/Kids [11494 0 R 11495 0 R 11496 0 R 11497 0 R 11498 0 R 11499 0 R] +/Limits [(interface_i_pun_prefab_pool_a7faad9f73d3ef1574d3bf512f5d870ea) (namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bac18fb72fa24e41efb70cd214f7681dfc)] +>> endobj +11806 0 obj << +/Kids [11500 0 R 11501 0 R 11502 0 R 11503 0 R 11504 0 R 11505 0 R] +/Limits [(namespace_exit_games_1_1_client_1_1_photon_1_1_chat_ae3a2988c8cb1fea31bb2d9eeafc0ed8bad376a854099d47f8a5279893e854ec27) (page.117)] +>> endobj +11807 0 obj << +/Kids [11506 0 R 11507 0 R 11508 0 R 11509 0 R 11510 0 R 11511 0 R] +/Limits [(page.118) (page.15)] +>> endobj +11808 0 obj << +/Kids [11512 0 R 11513 0 R 11514 0 R 11515 0 R 11516 0 R 11517 0 R] +/Limits [(page.150) (page.182)] +>> endobj +11809 0 obj << +/Kids [11518 0 R 11519 0 R 11520 0 R 11521 0 R 11522 0 R 11523 0 R] +/Limits [(page.183) (page.214)] +>> endobj +11810 0 obj << +/Kids [11524 0 R 11525 0 R 11526 0 R 11527 0 R 11528 0 R 11529 0 R] +/Limits [(page.215) (page.51)] +>> endobj +11811 0 obj << +/Kids [11530 0 R 11531 0 R 11532 0 R 11533 0 R 11534 0 R 11535 0 R] +/Limits [(page.52) (page.84)] +>> endobj +11812 0 obj << +/Kids [11536 0 R 11537 0 R 11538 0 R 11539 0 R 11540 0 R 11541 0 R] +/Limits [(page.85) (section*.113)] +>> endobj +11813 0 obj << +/Kids [11542 0 R 11543 0 R 11544 0 R 11545 0 R 11546 0 R 11547 0 R] +/Limits [(section*.114) (section*.146)] +>> endobj +11814 0 obj << +/Kids [11548 0 R 11549 0 R 11550 0 R 11551 0 R 11552 0 R 11553 0 R] +/Limits [(section*.147) (section*.179)] +>> endobj +11815 0 obj << +/Kids [11554 0 R 11555 0 R 11556 0 R 11557 0 R 11558 0 R 11559 0 R] +/Limits [(section*.18) (section*.210)] +>> endobj +11816 0 obj << +/Kids [11560 0 R 11561 0 R 11562 0 R 11563 0 R 11564 0 R 11565 0 R] +/Limits [(section*.211) (section*.30)] +>> endobj +11817 0 obj << +/Kids [11566 0 R 11567 0 R 11568 0 R 11569 0 R 11570 0 R 11571 0 R] +/Limits [(section*.31) (section*.63)] +>> endobj +11818 0 obj << +/Kids [11572 0 R 11573 0 R 11574 0 R 11575 0 R 11576 0 R 11577 0 R] +/Limits [(section*.64) (section*.96)] +>> endobj +11819 0 obj << +/Kids [11578 0 R 11579 0 R 11580 0 R 11581 0 R 11582 0 R 11583 0 R] +/Limits [(section*.97) (section.8.29)] +>> endobj +11820 0 obj << +/Kids [11584 0 R 11585 0 R 11586 0 R 11587 0 R 11588 0 R 11589 0 R] +/Limits [(section.8.3) (section.8.61)] +>> endobj +11821 0 obj << +/Kids [11590 0 R 11591 0 R 11592 0 R 11593 0 R 11594 0 R 11595 0 R] +/Limits [(section.8.62) (section.9.37)] +>> endobj +11822 0 obj << +/Kids [11596 0 R 11597 0 R 11598 0 R 11599 0 R 11600 0 R 11601 0 R] +/Limits [(section.9.38) (subsection.8.10.2)] +>> endobj +11823 0 obj << +/Kids [11602 0 R 11603 0 R 11604 0 R 11605 0 R 11606 0 R 11607 0 R] +/Limits [(subsection.8.11.1) (subsection.8.27.1)] +>> endobj +11824 0 obj << +/Kids [11608 0 R 11609 0 R 11610 0 R 11611 0 R 11612 0 R 11613 0 R] +/Limits [(subsection.8.28.1) (subsection.8.37.2)] +>> endobj +11825 0 obj << +/Kids [11614 0 R 11615 0 R 11616 0 R 11617 0 R 11618 0 R 11619 0 R] +/Limits [(subsection.8.37.3) (subsection.8.5.1)] +>> endobj +11826 0 obj << +/Kids [11620 0 R 11621 0 R 11622 0 R 11623 0 R 11624 0 R 11625 0 R] +/Limits [(subsection.8.5.2) (subsection.8.62.1)] +>> endobj +11827 0 obj << +/Kids [11626 0 R 11627 0 R 11628 0 R 11629 0 R 11630 0 R 11631 0 R] +/Limits [(subsection.8.62.2) (subsubsection.6.1.2.3)] +>> endobj +11828 0 obj << +/Kids [11632 0 R 11633 0 R 11634 0 R 11635 0 R 11636 0 R 11637 0 R] +/Limits [(subsubsection.6.1.2.4) (subsubsection.8.12.2.9)] +>> endobj +11829 0 obj << +/Kids [11638 0 R 11639 0 R 11640 0 R 11641 0 R 11642 0 R 11643 0 R] +/Limits [(subsubsection.8.13.2.1) (subsubsection.8.14.2.2)] +>> endobj +11830 0 obj << +/Kids [11644 0 R 11645 0 R 11646 0 R 11647 0 R 11648 0 R 11649 0 R] +/Limits [(subsubsection.8.14.2.3) (subsubsection.8.18.2.8)] +>> endobj +11831 0 obj << +/Kids [11650 0 R 11651 0 R 11652 0 R 11653 0 R 11654 0 R 11655 0 R] +/Limits [(subsubsection.8.18.2.9) (subsubsection.8.22.2.20)] +>> endobj +11832 0 obj << +/Kids [11656 0 R 11657 0 R 11658 0 R 11659 0 R 11660 0 R 11661 0 R] +/Limits [(subsubsection.8.22.2.21) (subsubsection.8.26.2.8)] +>> endobj +11833 0 obj << +/Kids [11662 0 R 11663 0 R 11664 0 R 11665 0 R 11666 0 R 11667 0 R] +/Limits [(subsubsection.8.26.2.9) (subsubsection.8.28.2.32)] +>> endobj +11834 0 obj << +/Kids [11668 0 R 11669 0 R 11670 0 R 11671 0 R 11672 0 R 11673 0 R] +/Limits [(subsubsection.8.28.2.33) (subsubsection.8.28.2.65)] +>> endobj +11835 0 obj << +/Kids [11674 0 R 11675 0 R 11676 0 R 11677 0 R 11678 0 R 11679 0 R] +/Limits [(subsubsection.8.28.2.66) (subsubsection.8.31.4.1)] +>> endobj +11836 0 obj << +/Kids [11680 0 R 11681 0 R 11682 0 R 11683 0 R 11684 0 R 11685 0 R] +/Limits [(subsubsection.8.31.4.2) (subsubsection.8.32.2.4)] +>> endobj +11837 0 obj << +/Kids [11686 0 R 11687 0 R 11688 0 R 11689 0 R 11690 0 R 11691 0 R] +/Limits [(subsubsection.8.32.2.40) (subsubsection.8.32.3.15)] +>> endobj +11838 0 obj << +/Kids [11692 0 R 11693 0 R 11694 0 R 11695 0 R 11696 0 R 11697 0 R] +/Limits [(subsubsection.8.32.3.16) (subsubsection.8.32.4.32)] +>> endobj +11839 0 obj << +/Kids [11698 0 R 11699 0 R 11700 0 R 11701 0 R 11702 0 R 11703 0 R] +/Limits [(subsubsection.8.32.4.33) (subsubsection.8.34.3.3)] +>> endobj +11840 0 obj << +/Kids [11704 0 R 11705 0 R 11706 0 R 11707 0 R 11708 0 R 11709 0 R] +/Limits [(subsubsection.8.34.3.4) (subsubsection.8.38.2.1)] +>> endobj +11841 0 obj << +/Kids [11710 0 R 11711 0 R 11712 0 R 11713 0 R 11714 0 R 11715 0 R] +/Limits [(subsubsection.8.38.3.1) (subsubsection.8.4.5.1)] +>> endobj +11842 0 obj << +/Kids [11716 0 R 11717 0 R 11718 0 R 11719 0 R 11720 0 R 11721 0 R] +/Limits [(subsubsection.8.4.5.2) (subsubsection.8.45.2.1)] +>> endobj +11843 0 obj << +/Kids [11722 0 R 11723 0 R 11724 0 R 11725 0 R 11726 0 R 11727 0 R] +/Limits [(subsubsection.8.45.2.2) (subsubsection.8.47.4.3)] +>> endobj +11844 0 obj << +/Kids [11728 0 R 11729 0 R 11730 0 R 11731 0 R 11732 0 R 11733 0 R] +/Limits [(subsubsection.8.47.4.4) (subsubsection.8.49.2.9)] +>> endobj +11845 0 obj << +/Kids [11734 0 R 11735 0 R 11736 0 R 11737 0 R 11738 0 R 11739 0 R] +/Limits [(subsubsection.8.5.2.1) (subsubsection.8.51.2.1)] +>> endobj +11846 0 obj << +/Kids [11740 0 R 11741 0 R 11742 0 R 11743 0 R 11744 0 R 11745 0 R] +/Limits [(subsubsection.8.51.2.2) (subsubsection.8.54.2.3)] +>> endobj +11847 0 obj << +/Kids [11746 0 R 11747 0 R 11748 0 R 11749 0 R 11750 0 R 11751 0 R] +/Limits [(subsubsection.8.54.2.4) (subsubsection.8.55.3.3)] +>> endobj +11848 0 obj << +/Kids [11752 0 R 11753 0 R 11754 0 R 11755 0 R 11756 0 R 11757 0 R] +/Limits [(subsubsection.8.55.3.4) (subsubsection.8.59.1.2)] +>> endobj +11849 0 obj << +/Kids [11758 0 R 11759 0 R 11760 0 R 11761 0 R 11762 0 R 11763 0 R] +/Limits [(subsubsection.8.6.2.1) (subsubsection.8.8.2.1)] +>> endobj +11850 0 obj << +/Kids [11764 0 R 11765 0 R 11766 0 R 11767 0 R 11768 0 R 11769 0 R] +/Limits [(subsubsection.8.8.2.10) (subsubsection.9.14.1.2)] +>> endobj +11851 0 obj << +/Kids [11770 0 R 11771 0 R 11772 0 R] +/Limits [(subsubsection.9.14.1.3) (subsubsection.9.8.1.2)] +>> endobj +11852 0 obj << +/Kids [11773 0 R 11774 0 R 11775 0 R 11776 0 R 11777 0 R 11778 0 R] +/Limits [(Doc-Start) (class_error_code_a8126103517b94ed6ebd0c92c6a832e4a)] +>> endobj +11853 0 obj << +/Kids [11779 0 R 11780 0 R 11781 0 R 11782 0 R 11783 0 R 11784 0 R] +/Limits [(class_error_code_a84290da3689bc3ea86a19c488ede9d6f) (class_operation_code_ab70f6436c1fae5974e820c66ab291fd0)] +>> endobj +11854 0 obj << +/Kids [11785 0 R 11786 0 R 11787 0 R 11788 0 R 11789 0 R 11790 0 R] +/Limits [(class_operation_code_ac5d8c14445b243abacb4bdbf357d62ba) (class_photon_network_a9cc8da229d513fce2fddbc5e2c6eaed2)] +>> endobj +11855 0 obj << +/Kids [11791 0 R 11792 0 R 11793 0 R 11794 0 R 11795 0 R 11796 0 R] +/Limits [(class_photon_network_a9cf8214080471001a1a32e17eff9b402) (class_photon_view_a84084cfaf09debaf88362629bb772907)] +>> endobj +11856 0 obj << +/Kids [11797 0 R 11798 0 R 11799 0 R 11800 0 R 11801 0 R 11802 0 R] +/Limits [(class_photon_view_a869710e081df022bbb4fa160e7ab9e0a) (group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5a5391f9a882a54c787b206138ed6d28b0)] +>> endobj +11857 0 obj << +/Kids [11803 0 R 11804 0 R 11805 0 R 11806 0 R 11807 0 R 11808 0 R] +/Limits [(group__public_api_ggaf0468f6a0c8ab8caec09678e6dc6f3d5abbd47109890259c0127154db1af26c75) (page.182)] +>> endobj +11858 0 obj << +/Kids [11809 0 R 11810 0 R 11811 0 R 11812 0 R 11813 0 R 11814 0 R] +/Limits [(page.183) (section*.179)] +>> endobj +11859 0 obj << +/Kids [11815 0 R 11816 0 R 11817 0 R 11818 0 R 11819 0 R 11820 0 R] +/Limits [(section*.18) (section.8.61)] +>> endobj +11860 0 obj << +/Kids [11821 0 R 11822 0 R 11823 0 R 11824 0 R 11825 0 R 11826 0 R] +/Limits [(section.8.62) (subsection.8.62.1)] +>> endobj +11861 0 obj << +/Kids [11827 0 R 11828 0 R 11829 0 R 11830 0 R 11831 0 R 11832 0 R] +/Limits [(subsection.8.62.2) (subsubsection.8.26.2.8)] +>> endobj +11862 0 obj << +/Kids [11833 0 R 11834 0 R 11835 0 R 11836 0 R 11837 0 R 11838 0 R] +/Limits [(subsubsection.8.26.2.9) (subsubsection.8.32.4.32)] +>> endobj +11863 0 obj << +/Kids [11839 0 R 11840 0 R 11841 0 R 11842 0 R 11843 0 R 11844 0 R] +/Limits [(subsubsection.8.32.4.33) (subsubsection.8.49.2.9)] +>> endobj +11864 0 obj << +/Kids [11845 0 R 11846 0 R 11847 0 R 11848 0 R 11849 0 R 11850 0 R] +/Limits [(subsubsection.8.5.2.1) (subsubsection.9.14.1.2)] +>> endobj +11865 0 obj << +/Kids [11851 0 R] +/Limits [(subsubsection.9.14.1.3) (subsubsection.9.8.1.2)] +>> endobj +11866 0 obj << +/Kids [11852 0 R 11853 0 R 11854 0 R 11855 0 R 11856 0 R 11857 0 R] +/Limits [(Doc-Start) (page.182)] +>> endobj +11867 0 obj << +/Kids [11858 0 R 11859 0 R 11860 0 R 11861 0 R 11862 0 R 11863 0 R] +/Limits [(page.183) (subsubsection.8.49.2.9)] +>> endobj +11868 0 obj << +/Kids [11864 0 R 11865 0 R] +/Limits [(subsubsection.8.5.2.1) (subsubsection.9.8.1.2)] +>> endobj +11869 0 obj << +/Kids [11866 0 R 11867 0 R 11868 0 R] +/Limits [(Doc-Start) (subsubsection.9.8.1.2)] +>> endobj +11870 0 obj << +/Dests 11869 0 R +>> endobj +11871 0 obj << +/Type /Catalog +/Pages 11300 0 R +/Outlines 11301 0 R +/Names 11870 0 R +/PageMode/UseOutlines/PageLabels<>34<>]>> +/OpenAction 4673 0 R +>> endobj +11872 0 obj << +/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.12)/Keywords() +/CreationDate (D:20161215130135+01'00') +/ModDate (D:20161215130135+01'00') +/Trapped /False +/PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.4307 (1.40.12)) +>> endobj +xref +0 11873 +0000000000 65535 f +0000000015 00000 n +0000540019 00000 n +0002038470 00000 n +0000000060 00000 n +0000000147 00000 n +0000544233 00000 n +0002038347 00000 n +0000000192 00000 n +0000000339 00000 n +0000544419 00000 n +0002038251 00000 n +0000000386 00000 n +0000000466 00000 n +0000551356 00000 n +0002038177 00000 n +0000000519 00000 n +0000000703 00000 n +0000571225 00000 n +0002038090 00000 n +0000000756 00000 n +0000000932 00000 n +0000582556 00000 n +0002038016 00000 n +0000000985 00000 n +0000001206 00000 n +0000602580 00000 n +0002037927 00000 n +0000001252 00000 n +0000001408 00000 n +0000605437 00000 n +0002037837 00000 n +0000001454 00000 n +0000001610 00000 n +0000608722 00000 n +0002037747 00000 n +0000001656 00000 n +0000001787 00000 n +0000615956 00000 n +0002037620 00000 n +0000001833 00000 n +0000001976 00000 n +0000616079 00000 n +0002037509 00000 n +0000002024 00000 n +0000002127 00000 n +0000642629 00000 n +0002037435 00000 n +0000002180 00000 n +0000002343 00000 n +0000642690 00000 n +0002037311 00000 n +0000002396 00000 n +0000002612 00000 n +0000642813 00000 n +0002037237 00000 n +0000002670 00000 n +0000002795 00000 n +0000644258 00000 n +0002037150 00000 n +0000002853 00000 n +0000002998 00000 n +0000650001 00000 n +0002037063 00000 n +0000003056 00000 n +0000003196 00000 n +0000650314 00000 n +0002036976 00000 n +0000003254 00000 n +0000003439 00000 n +0000690740 00000 n +0002036902 00000 n +0000003497 00000 n +0000003632 00000 n +0000691241 00000 n +0002036791 00000 n +0000003685 00000 n +0000003858 00000 n +0000691365 00000 n +0002036730 00000 n +0000003916 00000 n +0000004091 00000 n +0000696375 00000 n +0002036619 00000 n +0000004139 00000 n +0000004300 00000 n +0000696499 00000 n +0002036558 00000 n +0000004353 00000 n +0000004516 00000 n +0000699562 00000 n +0002036429 00000 n +0000004562 00000 n +0000004720 00000 n +0000699686 00000 n +0002036355 00000 n +0000004768 00000 n +0000004906 00000 n +0000699873 00000 n +0002036266 00000 n +0000004954 00000 n +0000005128 00000 n +0000700060 00000 n +0002036136 00000 n +0000005177 00000 n +0000005371 00000 n +0000700248 00000 n +0002036032 00000 n +0000005425 00000 n +0000005642 00000 n +0000700373 00000 n +0002035967 00000 n +0000005701 00000 n +0000005817 00000 n +0000716548 00000 n +0002035875 00000 n +0000005866 00000 n +0000006075 00000 n +0000716736 00000 n +0002035744 00000 n +0000006124 00000 n +0000006358 00000 n +0000724475 00000 n +0002035640 00000 n +0000006412 00000 n +0000006629 00000 n +0000724600 00000 n +0002035561 00000 n +0000006688 00000 n +0000006854 00000 n +0000725418 00000 n +0002035468 00000 n +0000006913 00000 n +0000007029 00000 n +0000729877 00000 n +0002035389 00000 n +0000007088 00000 n +0000007279 00000 n +0000730442 00000 n +0002035258 00000 n +0000007328 00000 n +0000007452 00000 n +0000730630 00000 n +0002035154 00000 n +0000007506 00000 n +0000007675 00000 n +0000730755 00000 n +0002035089 00000 n +0000007734 00000 n +0000007850 00000 n +0000730880 00000 n +0002034997 00000 n +0000007899 00000 n +0000008048 00000 n +0000732382 00000 n +0002034919 00000 n +0000008097 00000 n +0000008326 00000 n +0000735538 00000 n +0002034783 00000 n +0000008373 00000 n +0000008512 00000 n +0000735662 00000 n +0002034665 00000 n +0000008561 00000 n +0000008773 00000 n +0000735786 00000 n +0002034586 00000 n +0000008827 00000 n +0000008991 00000 n +0000735848 00000 n +0002034468 00000 n +0000009045 00000 n +0000009237 00000 n +0000735973 00000 n +0002034389 00000 n +0000009296 00000 n +0000009417 00000 n +0000736099 00000 n +0002034296 00000 n +0000009476 00000 n +0000009597 00000 n +0000736223 00000 n +0002034217 00000 n +0000009656 00000 n +0000009757 00000 n +0000743577 00000 n +0002034085 00000 n +0000009806 00000 n +0000010188 00000 n +0000743765 00000 n +0002034006 00000 n +0000010242 00000 n +0000010406 00000 n +0000743827 00000 n +0002033874 00000 n +0000010460 00000 n +0000010723 00000 n +0000743952 00000 n +0002033795 00000 n +0000010782 00000 n +0000010953 00000 n +0000744989 00000 n +0002033716 00000 n +0000011012 00000 n +0000011183 00000 n +0000747824 00000 n +0002033584 00000 n +0000011237 00000 n +0000011449 00000 n +0000747949 00000 n +0002033505 00000 n +0000011508 00000 n +0000011659 00000 n +0000748074 00000 n +0002033412 00000 n +0000011718 00000 n +0000011864 00000 n +0000748199 00000 n +0002033319 00000 n +0000011923 00000 n +0000012069 00000 n +0000748324 00000 n +0002033240 00000 n +0000012128 00000 n +0000012239 00000 n +0000748386 00000 n +0002033122 00000 n +0000012293 00000 n +0000012467 00000 n +0000748511 00000 n +0002033043 00000 n +0000012526 00000 n +0000012682 00000 n +0000748637 00000 n +0002032950 00000 n +0000012741 00000 n +0000012872 00000 n +0000748762 00000 n +0002032857 00000 n +0000012931 00000 n +0000013042 00000 n +0000754809 00000 n +0002032764 00000 n +0000013101 00000 n +0000013197 00000 n +0000754934 00000 n +0002032685 00000 n +0000013256 00000 n +0000013357 00000 n +0000755059 00000 n +0002032553 00000 n +0000013406 00000 n +0000013643 00000 n +0000755246 00000 n +0002032474 00000 n +0000013697 00000 n +0000013861 00000 n +0000758919 00000 n +0002032342 00000 n +0000013915 00000 n +0000014178 00000 n +0000759044 00000 n +0002032263 00000 n +0000014237 00000 n +0000014408 00000 n +0000759169 00000 n +0002032184 00000 n +0000014467 00000 n +0000014638 00000 n +0000759231 00000 n +0002032052 00000 n +0000014692 00000 n +0000014904 00000 n +0000759356 00000 n +0002031973 00000 n +0000014963 00000 n +0000015114 00000 n +0000759481 00000 n +0002031880 00000 n +0000015173 00000 n +0000015319 00000 n +0000759606 00000 n +0002031787 00000 n +0000015378 00000 n +0000015524 00000 n +0000759731 00000 n +0002031708 00000 n +0000015583 00000 n +0000015694 00000 n +0000759792 00000 n +0002031590 00000 n +0000015748 00000 n +0000015922 00000 n +0000764932 00000 n +0002031511 00000 n +0000015981 00000 n +0000016137 00000 n +0000765058 00000 n +0002031418 00000 n +0000016196 00000 n +0000016327 00000 n +0000765183 00000 n +0002031325 00000 n +0000016386 00000 n +0000016497 00000 n +0000765308 00000 n +0002031232 00000 n +0000016556 00000 n +0000016652 00000 n +0000765433 00000 n +0002031153 00000 n +0000016711 00000 n +0000016812 00000 n +0000765558 00000 n +0002031021 00000 n +0000016861 00000 n +0000017198 00000 n +0000771322 00000 n +0002030942 00000 n +0000017252 00000 n +0000017416 00000 n +0000771384 00000 n +0002030810 00000 n +0000017470 00000 n +0000017733 00000 n +0000771509 00000 n +0002030745 00000 n +0000017792 00000 n +0000017918 00000 n +0000771571 00000 n +0002030613 00000 n +0000017972 00000 n +0000018184 00000 n +0000771696 00000 n +0002030534 00000 n +0000018243 00000 n +0000018329 00000 n +0000771821 00000 n +0002030441 00000 n +0000018388 00000 n +0000018474 00000 n +0000771946 00000 n +0002030348 00000 n +0000018533 00000 n +0000018669 00000 n +0000774324 00000 n +0002030255 00000 n +0000018728 00000 n +0000018879 00000 n +0000774449 00000 n +0002030176 00000 n +0000018938 00000 n +0000019089 00000 n +0000774511 00000 n +0002030044 00000 n +0000019143 00000 n +0000019335 00000 n +0000774636 00000 n +0002029965 00000 n +0000019394 00000 n +0000019525 00000 n +0000774761 00000 n +0002029872 00000 n +0000019584 00000 n +0000019695 00000 n +0000774886 00000 n +0002029779 00000 n +0000019754 00000 n +0000019845 00000 n +0000775011 00000 n +0002029700 00000 n +0000019904 00000 n +0000020010 00000 n +0000775073 00000 n +0002029582 00000 n +0000020064 00000 n +0000020238 00000 n +0000775198 00000 n +0002029503 00000 n +0000020297 00000 n +0000020413 00000 n +0000775323 00000 n +0002029424 00000 n +0000020472 00000 n +0000020603 00000 n +0000775444 00000 n +0002029292 00000 n +0000020652 00000 n +0000020984 00000 n +0000795003 00000 n +0002029213 00000 n +0000021038 00000 n +0000021202 00000 n +0000795065 00000 n +0002029081 00000 n +0000021256 00000 n +0000021519 00000 n +0000795190 00000 n +0002029016 00000 n +0000021578 00000 n +0000021699 00000 n +0000795252 00000 n +0002028883 00000 n +0000021753 00000 n +0000021965 00000 n +0000795377 00000 n +0002028804 00000 n +0000022024 00000 n +0000022145 00000 n +0000799763 00000 n +0002028711 00000 n +0000022204 00000 n +0000022355 00000 n +0000799888 00000 n +0002028618 00000 n +0000022414 00000 n +0000022520 00000 n +0000800013 00000 n +0002028525 00000 n +0000022579 00000 n +0000022700 00000 n +0000800137 00000 n +0002028432 00000 n +0000022759 00000 n +0000022965 00000 n +0000800261 00000 n +0002028339 00000 n +0000023024 00000 n +0000023165 00000 n +0000805023 00000 n +0002028246 00000 n +0000023224 00000 n +0000023360 00000 n +0000805148 00000 n +0002028153 00000 n +0000023419 00000 n +0000023550 00000 n +0000805273 00000 n +0002028060 00000 n +0000023609 00000 n +0000023770 00000 n +0000806337 00000 n +0002027967 00000 n +0000023830 00000 n +0000023996 00000 n +0000810443 00000 n +0002027874 00000 n +0000024056 00000 n +0000024167 00000 n +0000810569 00000 n +0002027781 00000 n +0000024227 00000 n +0000024378 00000 n +0000810694 00000 n +0002027688 00000 n +0000024438 00000 n +0000024589 00000 n +0000813499 00000 n +0002027595 00000 n +0000024649 00000 n +0000024775 00000 n +0000813624 00000 n +0002027502 00000 n +0000024835 00000 n +0000024956 00000 n +0000813749 00000 n +0002027409 00000 n +0000025016 00000 n +0000025137 00000 n +0000813874 00000 n +0002027316 00000 n +0000025197 00000 n +0000025338 00000 n +0000813999 00000 n +0002027223 00000 n +0000025398 00000 n +0000025539 00000 n +0000817234 00000 n +0002027144 00000 n +0000025599 00000 n +0000025730 00000 n +0000817296 00000 n +0002027012 00000 n +0000025784 00000 n +0000025976 00000 n +0000817421 00000 n +0002026933 00000 n +0000026035 00000 n +0000026146 00000 n +0000817546 00000 n +0002026840 00000 n +0000026205 00000 n +0000026336 00000 n +0000817671 00000 n +0002026747 00000 n +0000026395 00000 n +0000026541 00000 n +0000817796 00000 n +0002026668 00000 n +0000026600 00000 n +0000026741 00000 n +0000817858 00000 n +0002026549 00000 n +0000026795 00000 n +0000026969 00000 n +0000817983 00000 n +0002026470 00000 n +0000027028 00000 n +0000027124 00000 n +0000818108 00000 n +0002026377 00000 n +0000027183 00000 n +0000027304 00000 n +0000822864 00000 n +0002026284 00000 n +0000027363 00000 n +0000027484 00000 n +0000822989 00000 n +0002026191 00000 n +0000027543 00000 n +0000027649 00000 n +0000823114 00000 n +0002026098 00000 n +0000027708 00000 n +0000027829 00000 n +0000823239 00000 n +0002026005 00000 n +0000027888 00000 n +0000027999 00000 n +0000823365 00000 n +0002025912 00000 n +0000028058 00000 n +0000028214 00000 n +0000823490 00000 n +0002025819 00000 n +0000028273 00000 n +0000028419 00000 n +0000823615 00000 n +0002025726 00000 n +0000028478 00000 n +0000028634 00000 n +0000823740 00000 n +0002025633 00000 n +0000028694 00000 n +0000028795 00000 n +0000823865 00000 n +0002025554 00000 n +0000028855 00000 n +0000028961 00000 n +0000823991 00000 n +0002025422 00000 n +0000029010 00000 n +0000029357 00000 n +0000829228 00000 n +0002025343 00000 n +0000029411 00000 n +0000029575 00000 n +0000829290 00000 n +0002025225 00000 n +0000029629 00000 n +0000029821 00000 n +0000829415 00000 n +0002025146 00000 n +0000029880 00000 n +0000030011 00000 n +0000829540 00000 n +0002025053 00000 n +0000030070 00000 n +0000030196 00000 n +0000829665 00000 n +0002024960 00000 n +0000030255 00000 n +0000030396 00000 n +0000829790 00000 n +0002024867 00000 n +0000030455 00000 n +0000030586 00000 n +0000829915 00000 n +0002024774 00000 n +0000030645 00000 n +0000030761 00000 n +0000830040 00000 n +0002024681 00000 n +0000030820 00000 n +0000030946 00000 n +0000830165 00000 n +0002024602 00000 n +0000031005 00000 n +0000031101 00000 n +0000830290 00000 n +0002024470 00000 n +0000031150 00000 n +0000031517 00000 n +0000830415 00000 n +0002024391 00000 n +0000031571 00000 n +0000031735 00000 n +0000832958 00000 n +0002024273 00000 n +0000031789 00000 n +0000031981 00000 n +0000833083 00000 n +0002024194 00000 n +0000032040 00000 n +0000032161 00000 n +0000833208 00000 n +0002024101 00000 n +0000032220 00000 n +0000032351 00000 n +0000833333 00000 n +0002024008 00000 n +0000032410 00000 n +0000032551 00000 n +0000833458 00000 n +0002023915 00000 n +0000032610 00000 n +0000032716 00000 n +0000833583 00000 n +0002023822 00000 n +0000032775 00000 n +0000032911 00000 n +0000833708 00000 n +0002023729 00000 n +0000032970 00000 n +0000033096 00000 n +0000833833 00000 n +0002023636 00000 n +0000033155 00000 n +0000033271 00000 n +0000833956 00000 n +0002023543 00000 n +0000033330 00000 n +0000033456 00000 n +0000834081 00000 n +0002023464 00000 n +0000033515 00000 n +0000033646 00000 n +0000834206 00000 n +0002023332 00000 n +0000033695 00000 n +0000034062 00000 n +0000840085 00000 n +0002023253 00000 n +0000034116 00000 n +0000034280 00000 n +0000840147 00000 n +0002023134 00000 n +0000034334 00000 n +0000034526 00000 n +0000840272 00000 n +0002023055 00000 n +0000034585 00000 n +0000034691 00000 n +0000840397 00000 n +0002022962 00000 n +0000034750 00000 n +0000034861 00000 n +0000840522 00000 n +0002022869 00000 n +0000034920 00000 n +0000035071 00000 n +0000842048 00000 n +0002022776 00000 n +0000035130 00000 n +0000035236 00000 n +0000842173 00000 n +0002022683 00000 n +0000035295 00000 n +0000035431 00000 n +0000842298 00000 n +0002022590 00000 n +0000035490 00000 n +0000035596 00000 n +0000842423 00000 n +0002022497 00000 n +0000035655 00000 n +0000035766 00000 n +0000842548 00000 n +0002022404 00000 n +0000035825 00000 n +0000035921 00000 n +0000842673 00000 n +0002022311 00000 n +0000035980 00000 n +0000036081 00000 n +0000842798 00000 n +0002022218 00000 n +0000036141 00000 n +0000036247 00000 n +0000842924 00000 n +0002022125 00000 n +0000036307 00000 n +0000036413 00000 n +0000843049 00000 n +0002022032 00000 n +0000036473 00000 n +0000036584 00000 n +0000843174 00000 n +0002021939 00000 n +0000036644 00000 n +0000036775 00000 n +0000843299 00000 n +0002021846 00000 n +0000036835 00000 n +0000036941 00000 n +0000843424 00000 n +0002021753 00000 n +0000037001 00000 n +0000037157 00000 n +0000849373 00000 n +0002021674 00000 n +0000037217 00000 n +0000037323 00000 n +0000849499 00000 n +0002021542 00000 n +0000037372 00000 n +0000037694 00000 n +0000849750 00000 n +0002021463 00000 n +0000037748 00000 n +0000037912 00000 n +0000849812 00000 n +0002021331 00000 n +0000037966 00000 n +0000038229 00000 n +0000849937 00000 n +0002021266 00000 n +0000038288 00000 n +0000038399 00000 n +0000849999 00000 n +0002021134 00000 n +0000038453 00000 n +0000038665 00000 n +0000850124 00000 n +0002021055 00000 n +0000038724 00000 n +0000038915 00000 n +0000850249 00000 n +0002020976 00000 n +0000038974 00000 n +0000039080 00000 n +0000850311 00000 n +0002020844 00000 n +0000039134 00000 n +0000039326 00000 n +0000850436 00000 n +0002020765 00000 n +0000039385 00000 n +0000039526 00000 n +0000854839 00000 n +0002020686 00000 n +0000039585 00000 n +0000039726 00000 n +0000854901 00000 n +0002020568 00000 n +0000039780 00000 n +0000039954 00000 n +0000855026 00000 n +0002020503 00000 n +0000040013 00000 n +0000040169 00000 n +0000855151 00000 n +0002020371 00000 n +0000040219 00000 n +0000040576 00000 n +0000855275 00000 n +0002020292 00000 n +0000040631 00000 n +0000040800 00000 n +0000855337 00000 n +0002020174 00000 n +0000040855 00000 n +0000041052 00000 n +0000855462 00000 n +0002020095 00000 n +0000041112 00000 n +0000041208 00000 n +0000855587 00000 n +0002020002 00000 n +0000041268 00000 n +0000041359 00000 n +0000858246 00000 n +0002019909 00000 n +0000041419 00000 n +0000041540 00000 n +0000858371 00000 n +0002019816 00000 n +0000041600 00000 n +0000041691 00000 n +0000858496 00000 n +0002019723 00000 n +0000041751 00000 n +0000041862 00000 n +0000858621 00000 n +0002019630 00000 n +0000041922 00000 n +0000042028 00000 n +0000858746 00000 n +0002019551 00000 n +0000042088 00000 n +0000042199 00000 n +0000858871 00000 n +0002019419 00000 n +0000042249 00000 n +0000042511 00000 n +0000858996 00000 n +0002019315 00000 n +0000042566 00000 n +0000042763 00000 n +0000859121 00000 n +0002019236 00000 n +0000042823 00000 n +0000042919 00000 n +0000859246 00000 n +0002019143 00000 n +0000042979 00000 n +0000043090 00000 n +0000859371 00000 n +0002019064 00000 n +0000043150 00000 n +0000043261 00000 n +0000859496 00000 n +0002018932 00000 n +0000043311 00000 n +0000043643 00000 n +0000866918 00000 n +0002018853 00000 n +0000043698 00000 n +0000043867 00000 n +0000866980 00000 n +0002018734 00000 n +0000043922 00000 n +0000044119 00000 n +0000867101 00000 n +0002018655 00000 n +0000044179 00000 n +0000044385 00000 n +0000867222 00000 n +0002018562 00000 n +0000044445 00000 n +0000044571 00000 n +0000871953 00000 n +0002018469 00000 n +0000044631 00000 n +0000044787 00000 n +0000872078 00000 n +0002018376 00000 n +0000044847 00000 n +0000044963 00000 n +0000872203 00000 n +0002018283 00000 n +0000045023 00000 n +0000045194 00000 n +0000872327 00000 n +0002018190 00000 n +0000045254 00000 n +0000045425 00000 n +0000872452 00000 n +0002018097 00000 n +0000045485 00000 n +0000045666 00000 n +0000872577 00000 n +0002018004 00000 n +0000045726 00000 n +0000045902 00000 n +0000872701 00000 n +0002017911 00000 n +0000045962 00000 n +0000046103 00000 n +0000872826 00000 n +0002017818 00000 n +0000046164 00000 n +0000046310 00000 n +0000877637 00000 n +0002017725 00000 n +0000046371 00000 n +0000046542 00000 n +0000877762 00000 n +0002017632 00000 n +0000046603 00000 n +0000046694 00000 n +0000877886 00000 n +0002017539 00000 n +0000046755 00000 n +0000047001 00000 n +0000878009 00000 n +0002017446 00000 n +0000047062 00000 n +0000047193 00000 n +0000878134 00000 n +0002017367 00000 n +0000047254 00000 n +0000047390 00000 n +0000878257 00000 n +0002017234 00000 n +0000047440 00000 n +0000047627 00000 n +0000887858 00000 n +0002017155 00000 n +0000047682 00000 n +0000047851 00000 n +0000887920 00000 n +0002017035 00000 n +0000047906 00000 n +0000048103 00000 n +0000888045 00000 n +0002016956 00000 n +0000048163 00000 n +0000048309 00000 n +0000888170 00000 n +0002016863 00000 n +0000048369 00000 n +0000048580 00000 n +0000888295 00000 n +0002016770 00000 n +0000048640 00000 n +0000048846 00000 n +0000888420 00000 n +0002016677 00000 n +0000048906 00000 n +0000049092 00000 n +0000888545 00000 n +0002016584 00000 n +0000049152 00000 n +0000049278 00000 n +0000888670 00000 n +0002016491 00000 n +0000049338 00000 n +0000049494 00000 n +0000888795 00000 n +0002016398 00000 n +0000049554 00000 n +0000049670 00000 n +0000888920 00000 n +0002016305 00000 n +0000049730 00000 n +0000049901 00000 n +0000889044 00000 n +0002016212 00000 n +0000049961 00000 n +0000050117 00000 n +0000889169 00000 n +0002016119 00000 n +0000050178 00000 n +0000050354 00000 n +0000893010 00000 n +0002016026 00000 n +0000050415 00000 n +0000050601 00000 n +0000893135 00000 n +0002015933 00000 n +0000050662 00000 n +0000050878 00000 n +0000893260 00000 n +0002015840 00000 n +0000050939 00000 n +0000051100 00000 n +0000893386 00000 n +0002015747 00000 n +0000051161 00000 n +0000051342 00000 n +0000893511 00000 n +0002015654 00000 n +0000051403 00000 n +0000051549 00000 n +0000893636 00000 n +0002015561 00000 n +0000051610 00000 n +0000051826 00000 n +0000893760 00000 n +0002015468 00000 n +0000051887 00000 n +0000052113 00000 n +0000893885 00000 n +0002015375 00000 n +0000052174 00000 n +0000052400 00000 n +0000894010 00000 n +0002015282 00000 n +0000052461 00000 n +0000052677 00000 n +0000897212 00000 n +0002015189 00000 n +0000052738 00000 n +0000052969 00000 n +0000897337 00000 n +0002015096 00000 n +0000053030 00000 n +0000053176 00000 n +0000897463 00000 n +0002015003 00000 n +0000053237 00000 n +0000053408 00000 n +0000897587 00000 n +0002014910 00000 n +0000053469 00000 n +0000053560 00000 n +0000897712 00000 n +0002014815 00000 n +0000053621 00000 n +0000053868 00000 n +0000897837 00000 n +0002014718 00000 n +0000053930 00000 n +0000054082 00000 n +0000897961 00000 n +0002014620 00000 n +0000054144 00000 n +0000054321 00000 n +0000898087 00000 n +0002014522 00000 n +0000054383 00000 n +0000054515 00000 n +0000898212 00000 n +0002014424 00000 n +0000054577 00000 n +0000054704 00000 n +0000904083 00000 n +0002014341 00000 n +0000054766 00000 n +0000054903 00000 n +0000904209 00000 n +0002014203 00000 n +0000054954 00000 n +0000055142 00000 n +0000904335 00000 n +0002014119 00000 n +0000055198 00000 n +0000055368 00000 n +0000907078 00000 n +0002013993 00000 n +0000055424 00000 n +0000055622 00000 n +0000907204 00000 n +0002013909 00000 n +0000055683 00000 n +0000055800 00000 n +0000907330 00000 n +0002013810 00000 n +0000055861 00000 n +0000055983 00000 n +0000907456 00000 n +0002013711 00000 n +0000056044 00000 n +0000056186 00000 n +0000907582 00000 n +0002013612 00000 n +0000056247 00000 n +0000056409 00000 n +0000907708 00000 n +0002013513 00000 n +0000056470 00000 n +0000056592 00000 n +0000907834 00000 n +0002013414 00000 n +0000056653 00000 n +0000056770 00000 n +0000907960 00000 n +0002013315 00000 n +0000056831 00000 n +0000056978 00000 n +0000908086 00000 n +0002013216 00000 n +0000057039 00000 n +0000057136 00000 n +0000908212 00000 n +0002013117 00000 n +0000057197 00000 n +0000057299 00000 n +0000908338 00000 n +0002013018 00000 n +0000057361 00000 n +0000057493 00000 n +0000914254 00000 n +0002012919 00000 n +0000057555 00000 n +0000057662 00000 n +0000914380 00000 n +0002012820 00000 n +0000057724 00000 n +0000057891 00000 n +0000914506 00000 n +0002012721 00000 n +0000057953 00000 n +0000058085 00000 n +0000914632 00000 n +0002012637 00000 n +0000058147 00000 n +0000058294 00000 n +0000914758 00000 n +0002012498 00000 n +0000058345 00000 n +0000058538 00000 n +0000917475 00000 n +0002012414 00000 n +0000058594 00000 n +0000058764 00000 n +0000917538 00000 n +0002012273 00000 n +0000058820 00000 n +0000059038 00000 n +0000917664 00000 n +0002012189 00000 n +0000059099 00000 n +0000059236 00000 n +0000917790 00000 n +0002012090 00000 n +0000059297 00000 n +0000059434 00000 n +0000917916 00000 n +0002011991 00000 n +0000059495 00000 n +0000059632 00000 n +0000918042 00000 n +0002011892 00000 n +0000059693 00000 n +0000059830 00000 n +0000918168 00000 n +0002011793 00000 n +0000059891 00000 n +0000060008 00000 n +0000918294 00000 n +0002011694 00000 n +0000060069 00000 n +0000060241 00000 n +0000918420 00000 n +0002011595 00000 n +0000060302 00000 n +0000060444 00000 n +0000918546 00000 n +0002011496 00000 n +0000060505 00000 n +0000060702 00000 n +0000918672 00000 n +0002011397 00000 n +0000060763 00000 n +0000060865 00000 n +0000921245 00000 n +0002011298 00000 n +0000060927 00000 n +0000061084 00000 n +0000921371 00000 n +0002011199 00000 n +0000061146 00000 n +0000061343 00000 n +0000921497 00000 n +0002011100 00000 n +0000061405 00000 n +0000061572 00000 n +0000921623 00000 n +0002011001 00000 n +0000061634 00000 n +0000061776 00000 n +0000921749 00000 n +0002010917 00000 n +0000061838 00000 n +0000061980 00000 n +0000924621 00000 n +0002010792 00000 n +0000062036 00000 n +0000062234 00000 n +0000924747 00000 n +0002010723 00000 n +0000062295 00000 n +0000062467 00000 n +0000924873 00000 n +0002010584 00000 n +0000062518 00000 n +0000062711 00000 n +0000925062 00000 n +0002010500 00000 n +0000062767 00000 n +0000062937 00000 n +0000925125 00000 n +0002010360 00000 n +0000062993 00000 n +0000063211 00000 n +0000925251 00000 n +0002010291 00000 n +0000063272 00000 n +0000063389 00000 n +0000925314 00000 n +0002010166 00000 n +0000063445 00000 n +0000063625 00000 n +0000925439 00000 n +0002010082 00000 n +0000063686 00000 n +0000063803 00000 n +0000925565 00000 n +0002009983 00000 n +0000063864 00000 n +0000063981 00000 n +0000925691 00000 n +0002009884 00000 n +0000064042 00000 n +0000064139 00000 n +0000925817 00000 n +0002009800 00000 n +0000064200 00000 n +0000064297 00000 n +0000925943 00000 n +0002009661 00000 n +0000064348 00000 n +0000064591 00000 n +0000931000 00000 n +0002009577 00000 n +0000064647 00000 n +0000064817 00000 n +0000931063 00000 n +0002009452 00000 n +0000064873 00000 n +0000065091 00000 n +0000931189 00000 n +0002009383 00000 n +0000065152 00000 n +0000065274 00000 n +0000931315 00000 n +0002009244 00000 n +0000065325 00000 n +0000065543 00000 n +0000931441 00000 n +0002009160 00000 n +0000065599 00000 n +0000065769 00000 n +0000934222 00000 n +0002009035 00000 n +0000065825 00000 n +0000066023 00000 n +0000934348 00000 n +0002008951 00000 n +0000066084 00000 n +0000066256 00000 n +0000934474 00000 n +0002008852 00000 n +0000066317 00000 n +0000066459 00000 n +0000934600 00000 n +0002008753 00000 n +0000066520 00000 n +0000066627 00000 n +0000934726 00000 n +0002008654 00000 n +0000066688 00000 n +0000066810 00000 n +0000934852 00000 n +0002008555 00000 n +0000066871 00000 n +0000067018 00000 n +0000934979 00000 n +0002008456 00000 n +0000067079 00000 n +0000067206 00000 n +0000935104 00000 n +0002008357 00000 n +0000067267 00000 n +0000067399 00000 n +0000935229 00000 n +0002008258 00000 n +0000067460 00000 n +0000067627 00000 n +0000935355 00000 n +0002008174 00000 n +0000067688 00000 n +0000067800 00000 n +0000935480 00000 n +0002008035 00000 n +0000067851 00000 n +0000068174 00000 n +0000942239 00000 n +0002007925 00000 n +0000068230 00000 n +0000068448 00000 n +0000942365 00000 n +0002007856 00000 n +0000068509 00000 n +0000068606 00000 n +0000942491 00000 n +0002007717 00000 n +0000068657 00000 n +0000068835 00000 n +0000942617 00000 n +0002007633 00000 n +0000068891 00000 n +0000069061 00000 n +0000942680 00000 n +0002007508 00000 n +0000069117 00000 n +0000069386 00000 n +0000942806 00000 n +0002007439 00000 n +0000069447 00000 n +0000069559 00000 n +0000942932 00000 n +0002007300 00000 n +0000069610 00000 n +0000070013 00000 n +0000946326 00000 n +0002007216 00000 n +0000070069 00000 n +0000070239 00000 n +0000946389 00000 n +0002007091 00000 n +0000070295 00000 n +0000070513 00000 n +0000946514 00000 n +0002007007 00000 n +0000070574 00000 n +0000070706 00000 n +0000946639 00000 n +0002006908 00000 n +0000070767 00000 n +0000070929 00000 n +0000946764 00000 n +0002006809 00000 n +0000070990 00000 n +0000071122 00000 n +0000946890 00000 n +0002006710 00000 n +0000071183 00000 n +0000071330 00000 n +0000947015 00000 n +0002006611 00000 n +0000071391 00000 n +0000071533 00000 n +0000947141 00000 n +0002006512 00000 n +0000071594 00000 n +0000071751 00000 n +0000950442 00000 n +0002006413 00000 n +0000071812 00000 n +0000071959 00000 n +0000950568 00000 n +0002006314 00000 n +0000072020 00000 n +0000072157 00000 n +0000950694 00000 n +0002006230 00000 n +0000072218 00000 n +0000072365 00000 n +0000950820 00000 n +0002006091 00000 n +0000072416 00000 n +0000072644 00000 n +0000972702 00000 n +0002006007 00000 n +0000072700 00000 n +0000072870 00000 n +0000972764 00000 n +0002005881 00000 n +0000072926 00000 n +0000073144 00000 n +0000972890 00000 n +0002005797 00000 n +0000073205 00000 n +0000073377 00000 n +0000973016 00000 n +0002005698 00000 n +0000073438 00000 n +0000073610 00000 n +0000973142 00000 n +0002005599 00000 n +0000073671 00000 n +0000073828 00000 n +0000979674 00000 n +0002005500 00000 n +0000073889 00000 n +0000074031 00000 n +0000979800 00000 n +0002005401 00000 n +0000074092 00000 n +0000074309 00000 n +0000979925 00000 n +0002005302 00000 n +0000074370 00000 n +0000074597 00000 n +0000980051 00000 n +0002005203 00000 n +0000074658 00000 n +0000074855 00000 n +0000980176 00000 n +0002005104 00000 n +0000074916 00000 n +0000075118 00000 n +0000987220 00000 n +0002005005 00000 n +0000075179 00000 n +0000075321 00000 n +0000987346 00000 n +0002004906 00000 n +0000075383 00000 n +0000075525 00000 n +0000987471 00000 n +0002004807 00000 n +0000075587 00000 n +0000075724 00000 n +0000987597 00000 n +0002004708 00000 n +0000075786 00000 n +0000075918 00000 n +0000987722 00000 n +0002004609 00000 n +0000075980 00000 n +0000076177 00000 n +0000987848 00000 n +0002004510 00000 n +0000076239 00000 n +0000076431 00000 n +0000994472 00000 n +0002004411 00000 n +0000076493 00000 n +0000076665 00000 n +0000994598 00000 n +0002004312 00000 n +0000076727 00000 n +0000076929 00000 n +0000994724 00000 n +0002004213 00000 n +0000076991 00000 n +0000077248 00000 n +0000994850 00000 n +0002004114 00000 n +0000077310 00000 n +0000077487 00000 n +0000994975 00000 n +0002004015 00000 n +0000077549 00000 n +0000077741 00000 n +0001001609 00000 n +0002003916 00000 n +0000077803 00000 n +0000077995 00000 n +0001001735 00000 n +0002003817 00000 n +0000078057 00000 n +0000078254 00000 n +0001001861 00000 n +0002003718 00000 n +0000078316 00000 n +0000078528 00000 n +0001001987 00000 n +0002003619 00000 n +0000078590 00000 n +0000078827 00000 n +0001008720 00000 n +0002003520 00000 n +0000078889 00000 n +0000079091 00000 n +0001008846 00000 n +0002003421 00000 n +0000079153 00000 n +0000079355 00000 n +0001008972 00000 n +0002003322 00000 n +0000079417 00000 n +0000079594 00000 n +0001009098 00000 n +0002003238 00000 n +0000079656 00000 n +0000079818 00000 n +0001014482 00000 n +0002003099 00000 n +0000079869 00000 n +0000080102 00000 n +0001014608 00000 n +0002003030 00000 n +0000080158 00000 n +0000080328 00000 n +0001014735 00000 n +0002002891 00000 n +0000080379 00000 n +0000080612 00000 n +0001014861 00000 n +0002002807 00000 n +0000080668 00000 n +0000080838 00000 n +0001014924 00000 n +0002002682 00000 n +0000080894 00000 n +0000081112 00000 n +0001015050 00000 n +0002002598 00000 n +0000081173 00000 n +0000081285 00000 n +0001020006 00000 n +0002002514 00000 n +0000081346 00000 n +0000081478 00000 n +0001020132 00000 n +0002002375 00000 n +0000081529 00000 n +0000081772 00000 n +0001020258 00000 n +0002002291 00000 n +0000081828 00000 n +0000081998 00000 n +0001020321 00000 n +0002002166 00000 n +0000082054 00000 n +0000082234 00000 n +0001020447 00000 n +0002002082 00000 n +0000082295 00000 n +0000082427 00000 n +0001020573 00000 n +0002001998 00000 n +0000082488 00000 n +0000082615 00000 n +0001026518 00000 n +0002001859 00000 n +0000082666 00000 n +0000082874 00000 n +0001026643 00000 n +0002001775 00000 n +0000082930 00000 n +0000083100 00000 n +0001028109 00000 n +0002001649 00000 n +0000083156 00000 n +0000083354 00000 n +0001028235 00000 n +0002001565 00000 n +0000083415 00000 n +0000083552 00000 n +0001028361 00000 n +0002001466 00000 n +0000083613 00000 n +0000083770 00000 n +0001028487 00000 n +0002001367 00000 n +0000083831 00000 n +0000083968 00000 n +0001028613 00000 n +0002001268 00000 n +0000084029 00000 n +0000084156 00000 n +0001028739 00000 n +0002001169 00000 n +0000084217 00000 n +0000084419 00000 n +0001028865 00000 n +0002001070 00000 n +0000084480 00000 n +0000084612 00000 n +0001028990 00000 n +0002000971 00000 n +0000084673 00000 n +0000084815 00000 n +0001029116 00000 n +0002000872 00000 n +0000084876 00000 n +0000085018 00000 n +0001029242 00000 n +0002000773 00000 n +0000085079 00000 n +0000085206 00000 n +0001029368 00000 n +0002000674 00000 n +0000085268 00000 n +0000085370 00000 n +0001029494 00000 n +0002000575 00000 n +0000085432 00000 n +0000085554 00000 n +0001029620 00000 n +0002000476 00000 n +0000085616 00000 n +0000085743 00000 n +0001034055 00000 n +0002000377 00000 n +0000085805 00000 n +0000085957 00000 n +0001034181 00000 n +0002000278 00000 n +0000086019 00000 n +0000086126 00000 n +0001034307 00000 n +0002000179 00000 n +0000086188 00000 n +0000086320 00000 n +0001034433 00000 n +0002000080 00000 n +0000086382 00000 n +0000086514 00000 n +0001034558 00000 n +0001999981 00000 n +0000086576 00000 n +0000086728 00000 n +0001034684 00000 n +0001999882 00000 n +0000086790 00000 n +0000086937 00000 n +0001034809 00000 n +0001999798 00000 n +0000086999 00000 n +0000087111 00000 n +0001034935 00000 n +0001999659 00000 n +0000087162 00000 n +0000087515 00000 n +0001037806 00000 n +0001999549 00000 n +0000087571 00000 n +0000087769 00000 n +0001037932 00000 n +0001999465 00000 n +0000087830 00000 n +0000087942 00000 n +0001038058 00000 n +0001999366 00000 n +0000088003 00000 n +0000088145 00000 n +0001038184 00000 n +0001999267 00000 n +0000088206 00000 n +0000088333 00000 n +0001038310 00000 n +0001999168 00000 n +0000088394 00000 n +0000088591 00000 n +0001038436 00000 n +0001999069 00000 n +0000088652 00000 n +0000088859 00000 n +0001038562 00000 n +0001998970 00000 n +0000088920 00000 n +0000089117 00000 n +0001038688 00000 n +0001998871 00000 n +0000089178 00000 n +0000089285 00000 n +0001038814 00000 n +0001998772 00000 n +0000089346 00000 n +0000089453 00000 n +0001038938 00000 n +0001998688 00000 n +0000089514 00000 n +0000089621 00000 n +0001039064 00000 n +0001998549 00000 n +0000089672 00000 n +0000089880 00000 n +0001061305 00000 n +0001998465 00000 n +0000089936 00000 n +0000090106 00000 n +0001061368 00000 n +0001998339 00000 n +0000090162 00000 n +0000090360 00000 n +0001061493 00000 n +0001998255 00000 n +0000090421 00000 n +0000090543 00000 n +0001063501 00000 n +0001998156 00000 n +0000090604 00000 n +0000090716 00000 n +0001063627 00000 n +0001998057 00000 n +0000090777 00000 n +0000090869 00000 n +0001063753 00000 n +0001997958 00000 n +0000090930 00000 n +0000091042 00000 n +0001063879 00000 n +0001997859 00000 n +0000091103 00000 n +0000091245 00000 n +0001064005 00000 n +0001997760 00000 n +0000091306 00000 n +0000091433 00000 n +0001064130 00000 n +0001997661 00000 n +0000091494 00000 n +0000091651 00000 n +0001064254 00000 n +0001997562 00000 n +0000091712 00000 n +0000091874 00000 n +0001064380 00000 n +0001997463 00000 n +0000091935 00000 n +0000092077 00000 n +0001064506 00000 n +0001997364 00000 n +0000092139 00000 n +0000092266 00000 n +0001064632 00000 n +0001997265 00000 n +0000092328 00000 n +0000092435 00000 n +0001064758 00000 n +0001997166 00000 n +0000092497 00000 n +0000092654 00000 n +0001064884 00000 n +0001997067 00000 n +0000092716 00000 n +0000092873 00000 n +0001067217 00000 n +0001996968 00000 n +0000092935 00000 n +0000093112 00000 n +0001067343 00000 n +0001996869 00000 n +0000093174 00000 n +0000093376 00000 n +0001067469 00000 n +0001996770 00000 n +0000093438 00000 n +0000093650 00000 n +0001067595 00000 n +0001996671 00000 n +0000093712 00000 n +0000093914 00000 n +0001067721 00000 n +0001996572 00000 n +0000093976 00000 n +0000094078 00000 n +0001067847 00000 n +0001996473 00000 n +0000094140 00000 n +0000094312 00000 n +0001067973 00000 n +0001996374 00000 n +0000094374 00000 n +0000094526 00000 n +0001068097 00000 n +0001996275 00000 n +0000094588 00000 n +0000094690 00000 n +0001068223 00000 n +0001996176 00000 n +0000094752 00000 n +0000094894 00000 n +0001068349 00000 n +0001996077 00000 n +0000094956 00000 n +0000095108 00000 n +0001068475 00000 n +0001995978 00000 n +0000095170 00000 n +0000095322 00000 n +0001070518 00000 n +0001995879 00000 n +0000095384 00000 n +0000095526 00000 n +0001070644 00000 n +0001995780 00000 n +0000095588 00000 n +0000095750 00000 n +0001070769 00000 n +0001995681 00000 n +0000095812 00000 n +0000095964 00000 n +0001070893 00000 n +0001995582 00000 n +0000096026 00000 n +0000096218 00000 n +0001071019 00000 n +0001995483 00000 n +0000096280 00000 n +0000096507 00000 n +0001071145 00000 n +0001995384 00000 n +0000096569 00000 n +0000096796 00000 n +0001071271 00000 n +0001995285 00000 n +0000096858 00000 n +0000096985 00000 n +0001071396 00000 n +0001995186 00000 n +0000097047 00000 n +0000097169 00000 n +0001071522 00000 n +0001995087 00000 n +0000097231 00000 n +0000097383 00000 n +0001071648 00000 n +0001994988 00000 n +0000097445 00000 n +0000097552 00000 n +0001071774 00000 n +0001994889 00000 n +0000097614 00000 n +0000097716 00000 n +0001071900 00000 n +0001994790 00000 n +0000097778 00000 n +0000097920 00000 n +0001074322 00000 n +0001994691 00000 n +0000097982 00000 n +0000098114 00000 n +0001074448 00000 n +0001994592 00000 n +0000098176 00000 n +0000098298 00000 n +0001074575 00000 n +0001994493 00000 n +0000098360 00000 n +0000098487 00000 n +0001074701 00000 n +0001994394 00000 n +0000098549 00000 n +0000098681 00000 n +0001074827 00000 n +0001994295 00000 n +0000098743 00000 n +0000098870 00000 n +0001074953 00000 n +0001994196 00000 n +0000098932 00000 n +0000099084 00000 n +0001075080 00000 n +0001994097 00000 n +0000099146 00000 n +0000099303 00000 n +0001075206 00000 n +0001993998 00000 n +0000099365 00000 n +0000099522 00000 n +0001075332 00000 n +0001993899 00000 n +0000099584 00000 n +0000099706 00000 n +0001075458 00000 n +0001993800 00000 n +0000099768 00000 n +0000099895 00000 n +0001077960 00000 n +0001993701 00000 n +0000099957 00000 n +0000100119 00000 n +0001078086 00000 n +0001993602 00000 n +0000100181 00000 n +0000100308 00000 n +0001078211 00000 n +0001993503 00000 n +0000100370 00000 n +0000100502 00000 n +0001078337 00000 n +0001993404 00000 n +0000100564 00000 n +0000100681 00000 n +0001078464 00000 n +0001993305 00000 n +0000100743 00000 n +0000100890 00000 n +0001078590 00000 n +0001993206 00000 n +0000100952 00000 n +0000101074 00000 n +0001078716 00000 n +0001993107 00000 n +0000101136 00000 n +0000101268 00000 n +0001078842 00000 n +0001993008 00000 n +0000101330 00000 n +0000101477 00000 n +0001078968 00000 n +0001992909 00000 n +0000101539 00000 n +0000101686 00000 n +0001079094 00000 n +0001992810 00000 n +0000101748 00000 n +0000101860 00000 n +0001079220 00000 n +0001992711 00000 n +0000101922 00000 n +0000102034 00000 n +0001082588 00000 n +0001992612 00000 n +0000102096 00000 n +0000102218 00000 n +0001082713 00000 n +0001992513 00000 n +0000102280 00000 n +0000102392 00000 n +0001082839 00000 n +0001992414 00000 n +0000102454 00000 n +0000102626 00000 n +0001082965 00000 n +0001992315 00000 n +0000102688 00000 n +0000102835 00000 n +0001083091 00000 n +0001992216 00000 n +0000102897 00000 n +0000103014 00000 n +0001083217 00000 n +0001992117 00000 n +0000103076 00000 n +0000103188 00000 n +0001083343 00000 n +0001992018 00000 n +0000103250 00000 n +0000103412 00000 n +0001083469 00000 n +0001991919 00000 n +0000103474 00000 n +0000103636 00000 n +0001083594 00000 n +0001991835 00000 n +0000103698 00000 n +0000103875 00000 n +0001083720 00000 n +0001991696 00000 n +0000103926 00000 n +0000104159 00000 n +0001093289 00000 n +0001991612 00000 n +0000104215 00000 n +0000104385 00000 n +0001093352 00000 n +0001991472 00000 n +0000104441 00000 n +0000104674 00000 n +0001093478 00000 n +0001991388 00000 n +0000104735 00000 n +0000104877 00000 n +0001095640 00000 n +0001991304 00000 n +0000104938 00000 n +0000105090 00000 n +0001095892 00000 n +0001991178 00000 n +0000105146 00000 n +0000105364 00000 n +0001096017 00000 n +0001991094 00000 n +0000105425 00000 n +0000105607 00000 n +0001096143 00000 n +0001990995 00000 n +0000105668 00000 n +0000105890 00000 n +0001096269 00000 n +0001990896 00000 n +0000105951 00000 n +0000106193 00000 n +0001096395 00000 n +0001990797 00000 n +0000106254 00000 n +0000106446 00000 n +0001096521 00000 n +0001990698 00000 n +0000106507 00000 n +0000106719 00000 n +0001101153 00000 n +0001990599 00000 n +0000106780 00000 n +0000106962 00000 n +0001101279 00000 n +0001990500 00000 n +0000107023 00000 n +0000107225 00000 n +0001101405 00000 n +0001990401 00000 n +0000107286 00000 n +0000107468 00000 n +0001101531 00000 n +0001990302 00000 n +0000107529 00000 n +0000107706 00000 n +0001105400 00000 n +0001990218 00000 n +0000107768 00000 n +0000107970 00000 n +0001105526 00000 n +0001990079 00000 n +0000108021 00000 n +0000108274 00000 n +0001105778 00000 n +0001989995 00000 n +0000108330 00000 n +0000108500 00000 n +0001109434 00000 n +0001989855 00000 n +0000108556 00000 n +0000108774 00000 n +0001109560 00000 n +0001989771 00000 n +0000108835 00000 n +0000108937 00000 n +0001109686 00000 n +0001989687 00000 n +0000108998 00000 n +0000109100 00000 n +0001109749 00000 n +0001989547 00000 n +0000109156 00000 n +0000109354 00000 n +0001109875 00000 n +0001989463 00000 n +0000109415 00000 n +0000109527 00000 n +0001110001 00000 n +0001989364 00000 n +0000109588 00000 n +0000109705 00000 n +0001110127 00000 n +0001989280 00000 n +0000109766 00000 n +0000109893 00000 n +0001110189 00000 n +0001989155 00000 n +0000109949 00000 n +0000110129 00000 n +0001110315 00000 n +0001989086 00000 n +0000110190 00000 n +0000110287 00000 n +0001110441 00000 n +0001988947 00000 n +0000110338 00000 n +0000110571 00000 n +0001110692 00000 n +0001988863 00000 n +0000110627 00000 n +0000110797 00000 n +0001117717 00000 n +0001988723 00000 n +0000110853 00000 n +0000111122 00000 n +0001117843 00000 n +0001988654 00000 n +0000111183 00000 n +0000111345 00000 n +0001117906 00000 n +0001988514 00000 n +0000111401 00000 n +0000111619 00000 n +0001118031 00000 n +0001988445 00000 n +0000111680 00000 n +0000111797 00000 n +0001118094 00000 n +0001988305 00000 n +0000111853 00000 n +0000112051 00000 n +0001118220 00000 n +0001988221 00000 n +0000112112 00000 n +0000112239 00000 n +0001118346 00000 n +0001988137 00000 n +0000112300 00000 n +0000112407 00000 n +0001118409 00000 n +0001988012 00000 n +0000112463 00000 n +0000112643 00000 n +0001118535 00000 n +0001987943 00000 n +0000112704 00000 n +0000112826 00000 n +0001118660 00000 n +0001987804 00000 n +0000112877 00000 n +0000113085 00000 n +0001172240 00000 n +0001987720 00000 n +0000113141 00000 n +0000113311 00000 n +0001172303 00000 n +0001987579 00000 n +0000113367 00000 n +0000113585 00000 n +0001172428 00000 n +0001987495 00000 n +0000113646 00000 n +0000113818 00000 n +0001172554 00000 n +0001987396 00000 n +0000113879 00000 n +0000114026 00000 n +0001172679 00000 n +0001987297 00000 n +0000114087 00000 n +0000114299 00000 n +0001172805 00000 n +0001987198 00000 n +0000114360 00000 n +0000114512 00000 n +0001180626 00000 n +0001987099 00000 n +0000114573 00000 n +0000114770 00000 n +0001180752 00000 n +0001987000 00000 n +0000114831 00000 n +0000114983 00000 n +0001187553 00000 n +0001986901 00000 n +0000115044 00000 n +0000115196 00000 n +0001187679 00000 n +0001986802 00000 n +0000115257 00000 n +0000115434 00000 n +0001187805 00000 n +0001986703 00000 n +0000115495 00000 n +0000115622 00000 n +0001191028 00000 n +0001986604 00000 n +0000115684 00000 n +0000115816 00000 n +0001191154 00000 n +0001986505 00000 n +0000115878 00000 n +0000116010 00000 n +0001195679 00000 n +0001986406 00000 n +0000116072 00000 n +0000116189 00000 n +0001195805 00000 n +0001986307 00000 n +0000116251 00000 n +0000116368 00000 n +0001199669 00000 n +0001986208 00000 n +0000116430 00000 n +0000116562 00000 n +0001199795 00000 n +0001986109 00000 n +0000116624 00000 n +0000116806 00000 n +0001203549 00000 n +0001986010 00000 n +0000116868 00000 n +0000117050 00000 n +0001203675 00000 n +0001985911 00000 n +0000117112 00000 n +0000117244 00000 n +0001203802 00000 n +0001985812 00000 n +0000117306 00000 n +0000117453 00000 n +0001203927 00000 n +0001985713 00000 n +0000117515 00000 n +0000117697 00000 n +0001204052 00000 n +0001985614 00000 n +0000117759 00000 n +0000117896 00000 n +0001209372 00000 n +0001985515 00000 n +0000117958 00000 n +0000118180 00000 n +0001209498 00000 n +0001985416 00000 n +0000118242 00000 n +0000118359 00000 n +0001209624 00000 n +0001985317 00000 n +0000118421 00000 n +0000118558 00000 n +0001209750 00000 n +0001985218 00000 n +0000118620 00000 n +0000118792 00000 n +0001213707 00000 n +0001985119 00000 n +0000118854 00000 n +0000118991 00000 n +0001213833 00000 n +0001985020 00000 n +0000119053 00000 n +0000119190 00000 n +0001213959 00000 n +0001984921 00000 n +0000119252 00000 n +0000119444 00000 n +0001219243 00000 n +0001984822 00000 n +0000119506 00000 n +0000119633 00000 n +0001219370 00000 n +0001984723 00000 n +0000119695 00000 n +0000119822 00000 n +0001219496 00000 n +0001984624 00000 n +0000119884 00000 n +0000120046 00000 n +0001223111 00000 n +0001984525 00000 n +0000120108 00000 n +0000120270 00000 n +0001223237 00000 n +0001984426 00000 n +0000120332 00000 n +0000120484 00000 n +0001223364 00000 n +0001984327 00000 n +0000120546 00000 n +0000120698 00000 n +0001227109 00000 n +0001984228 00000 n +0000120760 00000 n +0000120912 00000 n +0001232298 00000 n +0001984129 00000 n +0000120974 00000 n +0000121096 00000 n +0001232424 00000 n +0001984030 00000 n +0000121158 00000 n +0000121280 00000 n +0001232550 00000 n +0001983931 00000 n +0000121342 00000 n +0000121474 00000 n +0001236086 00000 n +0001983832 00000 n +0000121536 00000 n +0000121663 00000 n +0001236213 00000 n +0001983733 00000 n +0000121725 00000 n +0000121852 00000 n +0001236339 00000 n +0001983634 00000 n +0000121914 00000 n +0000122041 00000 n +0001236465 00000 n +0001983535 00000 n +0000122103 00000 n +0000122295 00000 n +0001236591 00000 n +0001983436 00000 n +0000122357 00000 n +0000122564 00000 n +0001242484 00000 n +0001983337 00000 n +0000122626 00000 n +0000122823 00000 n +0001242610 00000 n +0001983238 00000 n +0000122885 00000 n +0000123017 00000 n +0001242736 00000 n +0001983139 00000 n +0000123079 00000 n +0000123206 00000 n +0001242863 00000 n +0001983040 00000 n +0000123268 00000 n +0000123440 00000 n +0001247088 00000 n +0001982941 00000 n +0000123502 00000 n +0000123704 00000 n +0001247214 00000 n +0001982842 00000 n +0000123766 00000 n +0000123898 00000 n +0001247340 00000 n +0001982743 00000 n +0000123960 00000 n +0000124182 00000 n +0001247466 00000 n +0001982644 00000 n +0000124244 00000 n +0000124376 00000 n +0001251260 00000 n +0001982545 00000 n +0000124438 00000 n +0000124570 00000 n +0001251386 00000 n +0001982446 00000 n +0000124632 00000 n +0000124799 00000 n +0001251512 00000 n +0001982347 00000 n +0000124861 00000 n +0000125043 00000 n +0001251638 00000 n +0001982248 00000 n +0000125105 00000 n +0000125257 00000 n +0001255236 00000 n +0001982149 00000 n +0000125319 00000 n +0000125476 00000 n +0001255361 00000 n +0001982050 00000 n +0000125538 00000 n +0000125745 00000 n +0001255486 00000 n +0001981951 00000 n +0000125807 00000 n +0000125984 00000 n +0001259223 00000 n +0001981852 00000 n +0000126046 00000 n +0000126223 00000 n +0001259349 00000 n +0001981753 00000 n +0000126285 00000 n +0000126452 00000 n +0001259475 00000 n +0001981654 00000 n +0000126514 00000 n +0000126681 00000 n +0001259601 00000 n +0001981555 00000 n +0000126743 00000 n +0000126905 00000 n +0001259727 00000 n +0001981456 00000 n +0000126967 00000 n +0000127129 00000 n +0001264382 00000 n +0001981372 00000 n +0000127191 00000 n +0000127303 00000 n +0001264445 00000 n +0001981231 00000 n +0000127359 00000 n +0000127557 00000 n +0001264571 00000 n +0001981147 00000 n +0000127618 00000 n +0000127780 00000 n +0001268234 00000 n +0001981048 00000 n +0000127841 00000 n +0000128023 00000 n +0001268360 00000 n +0001980949 00000 n +0000128084 00000 n +0000128201 00000 n +0001268485 00000 n +0001980850 00000 n +0000128262 00000 n +0000128405 00000 n +0001268611 00000 n +0001980751 00000 n +0000128466 00000 n +0000128613 00000 n +0001268736 00000 n +0001980652 00000 n +0000128674 00000 n +0000128806 00000 n +0001268863 00000 n +0001980553 00000 n +0000128867 00000 n +0000129044 00000 n +0001268989 00000 n +0001980454 00000 n +0000129105 00000 n +0000129342 00000 n +0001269115 00000 n +0001980355 00000 n +0000129403 00000 n +0000129665 00000 n +0001269241 00000 n +0001980256 00000 n +0000129727 00000 n +0000129974 00000 n +0001272981 00000 n +0001980157 00000 n +0000130036 00000 n +0000130173 00000 n +0001273107 00000 n +0001980058 00000 n +0000130235 00000 n +0000130427 00000 n +0001273234 00000 n +0001979959 00000 n +0000130489 00000 n +0000130696 00000 n +0001273361 00000 n +0001979860 00000 n +0000130758 00000 n +0000130940 00000 n +0001273487 00000 n +0001979761 00000 n +0000131002 00000 n +0000131154 00000 n +0001273614 00000 n +0001979662 00000 n +0000131216 00000 n +0000131418 00000 n +0001273741 00000 n +0001979578 00000 n +0000131480 00000 n +0000131612 00000 n +0001278961 00000 n +0001979452 00000 n +0000131668 00000 n +0000131848 00000 n +0001279085 00000 n +0001979368 00000 n +0000131909 00000 n +0000132036 00000 n +0001279210 00000 n +0001979269 00000 n +0000132097 00000 n +0000132294 00000 n +0001279336 00000 n +0001979170 00000 n +0000132355 00000 n +0000132497 00000 n +0001279461 00000 n +0001979071 00000 n +0000132558 00000 n +0000132745 00000 n +0001279588 00000 n +0001978972 00000 n +0000132806 00000 n +0000132928 00000 n +0001279714 00000 n +0001978873 00000 n +0000132989 00000 n +0000133151 00000 n +0001282917 00000 n +0001978774 00000 n +0000133212 00000 n +0000133339 00000 n +0001283043 00000 n +0001978675 00000 n +0000133400 00000 n +0000133552 00000 n +0001283169 00000 n +0001978576 00000 n +0000133613 00000 n +0000133805 00000 n +0001283295 00000 n +0001978477 00000 n +0000133867 00000 n +0000134019 00000 n +0001283421 00000 n +0001978378 00000 n +0000134081 00000 n +0000134268 00000 n +0001283546 00000 n +0001978279 00000 n +0000134330 00000 n +0000134522 00000 n +0001283672 00000 n +0001978180 00000 n +0000134584 00000 n +0000134726 00000 n +0001283799 00000 n +0001978081 00000 n +0000134788 00000 n +0000134945 00000 n +0001283925 00000 n +0001977982 00000 n +0000135007 00000 n +0000135194 00000 n +0001284050 00000 n +0001977883 00000 n +0000135256 00000 n +0000135373 00000 n +0001287067 00000 n +0001977784 00000 n +0000135435 00000 n +0000135587 00000 n +0001287193 00000 n +0001977685 00000 n +0000135649 00000 n +0000135786 00000 n +0001287320 00000 n +0001977586 00000 n +0000135848 00000 n +0000135960 00000 n +0001287446 00000 n +0001977487 00000 n +0000136022 00000 n +0000136159 00000 n +0001287573 00000 n +0001977388 00000 n +0000136221 00000 n +0000136373 00000 n +0001287699 00000 n +0001977289 00000 n +0000136435 00000 n +0000136622 00000 n +0001287824 00000 n +0001977190 00000 n +0000136684 00000 n +0000136881 00000 n +0001292702 00000 n +0001977091 00000 n +0000136943 00000 n +0000137050 00000 n +0001292829 00000 n +0001976992 00000 n +0000137112 00000 n +0000137269 00000 n +0001292956 00000 n +0001976893 00000 n +0000137331 00000 n +0000137473 00000 n +0001293083 00000 n +0001976794 00000 n +0000137535 00000 n +0000137747 00000 n +0001293210 00000 n +0001976695 00000 n +0000137809 00000 n +0000138011 00000 n +0001293336 00000 n +0001976596 00000 n +0000138073 00000 n +0000138210 00000 n +0001293462 00000 n +0001976497 00000 n +0000138272 00000 n +0000138414 00000 n +0001298420 00000 n +0001976398 00000 n +0000138476 00000 n +0000138658 00000 n +0001298546 00000 n +0001976299 00000 n +0000138720 00000 n +0000138832 00000 n +0001298672 00000 n +0001976200 00000 n +0000138894 00000 n +0000139026 00000 n +0001298798 00000 n +0001976101 00000 n +0000139088 00000 n +0000139220 00000 n +0001298924 00000 n +0001976002 00000 n +0000139282 00000 n +0000139414 00000 n +0001299051 00000 n +0001975903 00000 n +0000139476 00000 n +0000139618 00000 n +0001302750 00000 n +0001975804 00000 n +0000139680 00000 n +0000139872 00000 n +0001302877 00000 n +0001975705 00000 n +0000139934 00000 n +0000140036 00000 n +0001303003 00000 n +0001975606 00000 n +0000140098 00000 n +0000140220 00000 n +0001303130 00000 n +0001975507 00000 n +0000140282 00000 n +0000140459 00000 n +0001303257 00000 n +0001975408 00000 n +0000140521 00000 n +0000140633 00000 n +0001303384 00000 n +0001975309 00000 n +0000140695 00000 n +0000140842 00000 n +0001303508 00000 n +0001975210 00000 n +0000140904 00000 n +0000141061 00000 n +0001303635 00000 n +0001975111 00000 n +0000141123 00000 n +0000141225 00000 n +0001307823 00000 n +0001975027 00000 n +0000141287 00000 n +0000141484 00000 n +0001307949 00000 n +0001974888 00000 n +0000141535 00000 n +0000141763 00000 n +0001308326 00000 n +0001974763 00000 n +0000141819 00000 n +0000142037 00000 n +0001308452 00000 n +0001974679 00000 n +0000142098 00000 n +0000142225 00000 n +0001308579 00000 n +0001974595 00000 n +0000142286 00000 n +0000142418 00000 n +0001316455 00000 n +0001974455 00000 n +0000142474 00000 n +0000142672 00000 n +0001316581 00000 n +0001974371 00000 n +0000142733 00000 n +0000142850 00000 n +0001316707 00000 n +0001974272 00000 n +0000142911 00000 n +0000143088 00000 n +0001316833 00000 n +0001974173 00000 n +0000143149 00000 n +0000143331 00000 n +0001316958 00000 n +0001974089 00000 n +0000143392 00000 n +0000143514 00000 n +0001317020 00000 n +0001973964 00000 n +0000143570 00000 n +0000143750 00000 n +0001317146 00000 n +0001973880 00000 n +0000143811 00000 n +0000143938 00000 n +0001317272 00000 n +0001973796 00000 n +0000143999 00000 n +0000144096 00000 n +0001317398 00000 n +0001973657 00000 n +0000144147 00000 n +0000144350 00000 n +0001325341 00000 n +0001973573 00000 n +0000144406 00000 n +0000144576 00000 n +0001325404 00000 n +0001973433 00000 n +0000144632 00000 n +0000144901 00000 n +0001325530 00000 n +0001973364 00000 n +0000144962 00000 n +0000145099 00000 n +0001328743 00000 n +0001973223 00000 n +0000145155 00000 n +0000145373 00000 n +0001328868 00000 n +0001973139 00000 n +0000145434 00000 n +0000145556 00000 n +0001328994 00000 n +0001973040 00000 n +0000145617 00000 n +0000145739 00000 n +0001329120 00000 n +0001972941 00000 n +0000145800 00000 n +0000145907 00000 n +0001329246 00000 n +0001972842 00000 n +0000145968 00000 n +0000146075 00000 n +0001329371 00000 n +0001972743 00000 n +0000146136 00000 n +0000146243 00000 n +0001329496 00000 n +0001972644 00000 n +0000146304 00000 n +0000146401 00000 n +0001329622 00000 n +0001972545 00000 n +0000146462 00000 n +0000146554 00000 n +0001329747 00000 n +0001972446 00000 n +0000146615 00000 n +0000146747 00000 n +0001329873 00000 n +0001972347 00000 n +0000146808 00000 n +0000146920 00000 n +0001329999 00000 n +0001972248 00000 n +0000146982 00000 n +0000147114 00000 n +0001330125 00000 n +0001972149 00000 n +0000147176 00000 n +0000147308 00000 n +0001330251 00000 n +0001972050 00000 n +0000147370 00000 n +0000147547 00000 n +0001334200 00000 n +0001971951 00000 n +0000147609 00000 n +0000147731 00000 n +0001334326 00000 n +0001971867 00000 n +0000147793 00000 n +0000147935 00000 n +0001334389 00000 n +0001971727 00000 n +0000147991 00000 n +0000148189 00000 n +0001334514 00000 n +0001971643 00000 n +0000148250 00000 n +0000148362 00000 n +0001334640 00000 n +0001971559 00000 n +0000148423 00000 n +0000148545 00000 n +0001334703 00000 n +0001971433 00000 n +0000148601 00000 n +0000148781 00000 n +0001334829 00000 n +0001971349 00000 n +0000148842 00000 n +0000148984 00000 n +0001338596 00000 n +0001971250 00000 n +0000149045 00000 n +0000149187 00000 n +0001338722 00000 n +0001971151 00000 n +0000149248 00000 n +0000149405 00000 n +0001338849 00000 n +0001971052 00000 n +0000149466 00000 n +0000149623 00000 n +0001338975 00000 n +0001970953 00000 n +0000149684 00000 n +0000149771 00000 n +0001339099 00000 n +0001970854 00000 n +0000149832 00000 n +0000149959 00000 n +0001339225 00000 n +0001970755 00000 n +0000150020 00000 n +0000150147 00000 n +0001339351 00000 n +0001970656 00000 n +0000150208 00000 n +0000150320 00000 n +0001339477 00000 n +0001970557 00000 n +0000150381 00000 n +0000150528 00000 n +0001339604 00000 n +0001970458 00000 n +0000150590 00000 n +0000150742 00000 n +0001339729 00000 n +0001970359 00000 n +0000150804 00000 n +0000150906 00000 n +0001339855 00000 n +0001970260 00000 n +0000150968 00000 n +0000151090 00000 n +0001339982 00000 n +0001970161 00000 n +0000151152 00000 n +0000151264 00000 n +0001340109 00000 n +0001970077 00000 n +0000151326 00000 n +0000151438 00000 n +0001340233 00000 n +0001969938 00000 n +0000151489 00000 n +0000151737 00000 n +0001346551 00000 n +0001969854 00000 n +0000151793 00000 n +0000151963 00000 n +0001346614 00000 n +0001969729 00000 n +0000152019 00000 n +0000152237 00000 n +0001346740 00000 n +0001969660 00000 n +0000152298 00000 n +0000152480 00000 n +0001346865 00000 n +0001969521 00000 n +0000152531 00000 n +0000152769 00000 n +0001353196 00000 n +0001969437 00000 n +0000152825 00000 n +0000152995 00000 n +0001353259 00000 n +0001969312 00000 n +0000153051 00000 n +0000153269 00000 n +0001353385 00000 n +0001969243 00000 n +0000153330 00000 n +0000153512 00000 n +0001353510 00000 n +0001969104 00000 n +0000153563 00000 n +0000153776 00000 n +0001358504 00000 n +0001969020 00000 n +0000153832 00000 n +0000154002 00000 n +0001358567 00000 n +0001968880 00000 n +0000154058 00000 n +0000154276 00000 n +0001358693 00000 n +0001968796 00000 n +0000154337 00000 n +0000154439 00000 n +0001358819 00000 n +0001968697 00000 n +0000154500 00000 n +0000154602 00000 n +0001358945 00000 n +0001968598 00000 n +0000154663 00000 n +0000154830 00000 n +0001359071 00000 n +0001968514 00000 n +0000154891 00000 n +0000154998 00000 n +0001362982 00000 n +0001968389 00000 n +0000155054 00000 n +0000155252 00000 n +0001363108 00000 n +0001968305 00000 n +0000155313 00000 n +0000155435 00000 n +0001363234 00000 n +0001968206 00000 n +0000155496 00000 n +0000155663 00000 n +0001363360 00000 n +0001968107 00000 n +0000155724 00000 n +0000155836 00000 n +0001363486 00000 n +0001968008 00000 n +0000155897 00000 n +0000156019 00000 n +0001363612 00000 n +0001967909 00000 n +0000156080 00000 n +0000156222 00000 n +0001363738 00000 n +0001967810 00000 n +0000156283 00000 n +0000156430 00000 n +0001363863 00000 n +0001967726 00000 n +0000156491 00000 n +0000156608 00000 n +0001363989 00000 n +0001967587 00000 n +0000156659 00000 n +0000156862 00000 n +0001370667 00000 n +0001967503 00000 n +0000156918 00000 n +0000157088 00000 n +0001370730 00000 n +0001967363 00000 n +0000157144 00000 n +0000157413 00000 n +0001370855 00000 n +0001967294 00000 n +0000157474 00000 n +0000157611 00000 n +0001372235 00000 n +0001967153 00000 n +0000157667 00000 n +0000157885 00000 n +0001372361 00000 n +0001967069 00000 n +0000157946 00000 n +0000158063 00000 n +0001372486 00000 n +0001966970 00000 n +0000158124 00000 n +0000158256 00000 n +0001372611 00000 n +0001966871 00000 n +0000158317 00000 n +0000158434 00000 n +0001372736 00000 n +0001966772 00000 n +0000158495 00000 n +0000158617 00000 n +0001372862 00000 n +0001966673 00000 n +0000158678 00000 n +0000158800 00000 n +0001372988 00000 n +0001966574 00000 n +0000158861 00000 n +0000158983 00000 n +0001373114 00000 n +0001966475 00000 n +0000159044 00000 n +0000159166 00000 n +0001373240 00000 n +0001966376 00000 n +0000159227 00000 n +0000159349 00000 n +0001373366 00000 n +0001966277 00000 n +0000159410 00000 n +0000159532 00000 n +0001373492 00000 n +0001966178 00000 n +0000159594 00000 n +0000159721 00000 n +0001373618 00000 n +0001966079 00000 n +0000159783 00000 n +0000159910 00000 n +0001373744 00000 n +0001965980 00000 n +0000159972 00000 n +0000160099 00000 n +0001379403 00000 n +0001965881 00000 n +0000160161 00000 n +0000160288 00000 n +0001379528 00000 n +0001965782 00000 n +0000160350 00000 n +0000160497 00000 n +0001379654 00000 n +0001965698 00000 n +0000160559 00000 n +0000160676 00000 n +0001379717 00000 n +0001965573 00000 n +0000160732 00000 n +0000160912 00000 n +0001379842 00000 n +0001965489 00000 n +0000160973 00000 n +0000161075 00000 n +0001379967 00000 n +0001965390 00000 n +0000161136 00000 n +0000161258 00000 n +0001380093 00000 n +0001965306 00000 n +0000161319 00000 n +0000161441 00000 n +0001380219 00000 n +0001965167 00000 n +0000161492 00000 n +0000161720 00000 n +0001384165 00000 n +0001965083 00000 n +0000161776 00000 n +0000161946 00000 n +0001384228 00000 n +0001964943 00000 n +0000162002 00000 n +0000162271 00000 n +0001384354 00000 n +0001964874 00000 n +0000162332 00000 n +0000162494 00000 n +0001384417 00000 n +0001964749 00000 n +0000162550 00000 n +0000162768 00000 n +0001384543 00000 n +0001964665 00000 n +0000162829 00000 n +0000162961 00000 n +0001384669 00000 n +0001964566 00000 n +0000163022 00000 n +0000163179 00000 n +0001384795 00000 n +0001964467 00000 n +0000163240 00000 n +0000163372 00000 n +0001384921 00000 n +0001964368 00000 n +0000163433 00000 n +0000163535 00000 n +0001385046 00000 n +0001964269 00000 n +0000163596 00000 n +0000163713 00000 n +0001386046 00000 n +0001964185 00000 n +0000163774 00000 n +0000163896 00000 n +0001392385 00000 n +0001964046 00000 n +0000163947 00000 n +0000164185 00000 n +0001392511 00000 n +0001963962 00000 n +0000164241 00000 n +0000164411 00000 n +0001392573 00000 n +0001963837 00000 n +0000164467 00000 n +0000164685 00000 n +0001392699 00000 n +0001963753 00000 n +0000164746 00000 n +0000164928 00000 n +0001397395 00000 n +0001963669 00000 n +0000164989 00000 n +0000165171 00000 n +0001397521 00000 n +0001963530 00000 n +0000165222 00000 n +0000165535 00000 n +0001397647 00000 n +0001963405 00000 n +0000165591 00000 n +0000165860 00000 n +0001397773 00000 n +0001963336 00000 n +0000165921 00000 n +0000166168 00000 n +0001397836 00000 n +0001963211 00000 n +0000166224 00000 n +0000166442 00000 n +0001397962 00000 n +0001963127 00000 n +0000166503 00000 n +0000166725 00000 n +0001398088 00000 n +0001963028 00000 n +0000166786 00000 n +0000166953 00000 n +0001407553 00000 n +0001962929 00000 n +0000167014 00000 n +0000167196 00000 n +0001407679 00000 n +0001962830 00000 n +0000167257 00000 n +0000167439 00000 n +0001407805 00000 n +0001962746 00000 n +0000167500 00000 n +0000167647 00000 n +0001407931 00000 n +0001962607 00000 n +0000167698 00000 n +0000168001 00000 n +0001409615 00000 n +0001962482 00000 n +0000168057 00000 n +0000168290 00000 n +0001409741 00000 n +0001962398 00000 n +0000168351 00000 n +0000168518 00000 n +0001410117 00000 n +0001962314 00000 n +0000168579 00000 n +0000168746 00000 n +0001410494 00000 n +0001962188 00000 n +0000168802 00000 n +0000169000 00000 n +0001410618 00000 n +0001962104 00000 n +0000169061 00000 n +0000169208 00000 n +0001410743 00000 n +0001962005 00000 n +0000169269 00000 n +0000169511 00000 n +0001410869 00000 n +0001961906 00000 n +0000169572 00000 n +0000169819 00000 n +0001410995 00000 n +0001961807 00000 n +0000169880 00000 n +0000170042 00000 n +0001411121 00000 n +0001961708 00000 n +0000170103 00000 n +0000170260 00000 n +0001411247 00000 n +0001961609 00000 n +0000170321 00000 n +0000170498 00000 n +0001411373 00000 n +0001961510 00000 n +0000170559 00000 n +0000170806 00000 n +0001411499 00000 n +0001961411 00000 n +0000170867 00000 n +0000171114 00000 n +0001411625 00000 n +0001961312 00000 n +0000171175 00000 n +0000171387 00000 n +0001411751 00000 n +0001961213 00000 n +0000171449 00000 n +0000171616 00000 n +0001411877 00000 n +0001961114 00000 n +0000171678 00000 n +0000171865 00000 n +0001417706 00000 n +0001961015 00000 n +0000171927 00000 n +0000172099 00000 n +0001417832 00000 n +0001960916 00000 n +0000172161 00000 n +0000172318 00000 n +0001417958 00000 n +0001960832 00000 n +0000172380 00000 n +0000172607 00000 n +0001418084 00000 n +0001960693 00000 n +0000172658 00000 n +0000172971 00000 n +0001418210 00000 n +0001960568 00000 n +0000173027 00000 n +0000173296 00000 n +0001418335 00000 n +0001960499 00000 n +0000173357 00000 n +0000173604 00000 n +0001418398 00000 n +0001960374 00000 n +0000173660 00000 n +0000173878 00000 n +0001418524 00000 n +0001960290 00000 n +0000173939 00000 n +0000174106 00000 n +0001418650 00000 n +0001960191 00000 n +0000174167 00000 n +0000174299 00000 n +0001418776 00000 n +0001960107 00000 n +0000174360 00000 n +0000174542 00000 n +0001418902 00000 n +0001959968 00000 n +0000174593 00000 n +0000174896 00000 n +0001422320 00000 n +0001959843 00000 n +0000174952 00000 n +0000175185 00000 n +0001422446 00000 n +0001959774 00000 n +0000175246 00000 n +0000175413 00000 n +0001422698 00000 n +0001959649 00000 n +0000175469 00000 n +0000175667 00000 n +0001422824 00000 n +0001959565 00000 n +0000175728 00000 n +0000175905 00000 n +0001422950 00000 n +0001959466 00000 n +0000175966 00000 n +0000176128 00000 n +0001423076 00000 n +0001959367 00000 n +0000176189 00000 n +0000176411 00000 n +0001423202 00000 n +0001959283 00000 n +0000176472 00000 n +0000176639 00000 n +0001423328 00000 n +0001959144 00000 n +0000176690 00000 n +0000176988 00000 n +0001423454 00000 n +0001959019 00000 n +0000177044 00000 n +0000177313 00000 n +0001423580 00000 n +0001958950 00000 n +0000177374 00000 n +0000177606 00000 n +0001423643 00000 n +0001958825 00000 n +0000177662 00000 n +0000177880 00000 n +0001423768 00000 n +0001958741 00000 n +0000177941 00000 n +0000178093 00000 n +0001423893 00000 n +0001958642 00000 n +0000178154 00000 n +0000178271 00000 n +0001424019 00000 n +0001958558 00000 n +0000178332 00000 n +0000178514 00000 n +0001424145 00000 n +0001958419 00000 n +0000178565 00000 n +0000178853 00000 n +0001432209 00000 n +0001958294 00000 n +0000178909 00000 n +0000179142 00000 n +0001432334 00000 n +0001958225 00000 n +0000179203 00000 n +0000179370 00000 n +0001432585 00000 n +0001958100 00000 n +0000179426 00000 n +0000179624 00000 n +0001432711 00000 n +0001958016 00000 n +0000179685 00000 n +0000179862 00000 n +0001432837 00000 n +0001957917 00000 n +0000179923 00000 n +0000180135 00000 n +0001432963 00000 n +0001957818 00000 n +0000180196 00000 n +0000180358 00000 n +0001433089 00000 n +0001957734 00000 n +0000180419 00000 n +0000180586 00000 n +0001433215 00000 n +0001957595 00000 n +0000180637 00000 n +0000180830 00000 n +0001451448 00000 n +0001957511 00000 n +0000180886 00000 n +0000181056 00000 n +0001451511 00000 n +0001957370 00000 n +0000181112 00000 n +0000181330 00000 n +0001451637 00000 n +0001957286 00000 n +0000181391 00000 n +0000181543 00000 n +0001451763 00000 n +0001957187 00000 n +0000181604 00000 n +0000181701 00000 n +0001451889 00000 n +0001957088 00000 n +0000181762 00000 n +0000181854 00000 n +0001452015 00000 n +0001956989 00000 n +0000181915 00000 n +0000182007 00000 n +0001452141 00000 n +0001956890 00000 n +0000182068 00000 n +0000182255 00000 n +0001452266 00000 n +0001956791 00000 n +0000182316 00000 n +0000182533 00000 n +0001452393 00000 n +0001956692 00000 n +0000182594 00000 n +0000182751 00000 n +0001452520 00000 n +0001956593 00000 n +0000182812 00000 n +0000182904 00000 n +0001456661 00000 n +0001956494 00000 n +0000182965 00000 n +0000183057 00000 n +0001456787 00000 n +0001956395 00000 n +0000183119 00000 n +0000183246 00000 n +0001456914 00000 n +0001956296 00000 n +0000183308 00000 n +0000183435 00000 n +0001461213 00000 n +0001956197 00000 n +0000183497 00000 n +0000183644 00000 n +0001461339 00000 n +0001956098 00000 n +0000183706 00000 n +0000183828 00000 n +0001461465 00000 n +0001955999 00000 n +0000183890 00000 n +0000184057 00000 n +0001461592 00000 n +0001955915 00000 n +0000184119 00000 n +0000184286 00000 n +0001461655 00000 n +0001955774 00000 n +0000184342 00000 n +0000184540 00000 n +0001461781 00000 n +0001955690 00000 n +0000184601 00000 n +0000184753 00000 n +0001461907 00000 n +0001955591 00000 n +0000184814 00000 n +0000184916 00000 n +0001462033 00000 n +0001955492 00000 n +0000184977 00000 n +0000185129 00000 n +0001462158 00000 n +0001955393 00000 n +0000185190 00000 n +0000185357 00000 n +0001462283 00000 n +0001955294 00000 n +0000185418 00000 n +0000185625 00000 n +0001462408 00000 n +0001955195 00000 n +0000185686 00000 n +0000185893 00000 n +0001462533 00000 n +0001955096 00000 n +0000185954 00000 n +0000186066 00000 n +0001462659 00000 n +0001954997 00000 n +0000186127 00000 n +0000186289 00000 n +0001467726 00000 n +0001954898 00000 n +0000186350 00000 n +0000186537 00000 n +0001467853 00000 n +0001954799 00000 n +0000186599 00000 n +0000186741 00000 n +0001467978 00000 n +0001954715 00000 n +0000186803 00000 n +0000186960 00000 n +0001468041 00000 n +0001954590 00000 n +0000187016 00000 n +0000187196 00000 n +0001468166 00000 n +0001954506 00000 n +0000187257 00000 n +0000187404 00000 n +0001468291 00000 n +0001954407 00000 n +0000187465 00000 n +0000187627 00000 n +0001468417 00000 n +0001954308 00000 n +0000187688 00000 n +0000187795 00000 n +0001468544 00000 n +0001954209 00000 n +0000187856 00000 n +0000187998 00000 n +0001468669 00000 n +0001954110 00000 n +0000188059 00000 n +0000188191 00000 n +0001468795 00000 n +0001954011 00000 n +0000188252 00000 n +0000188354 00000 n +0001468922 00000 n +0001953912 00000 n +0000188415 00000 n +0000188552 00000 n +0001469048 00000 n +0001953813 00000 n +0000188613 00000 n +0000188720 00000 n +0001469174 00000 n +0001953729 00000 n +0000188781 00000 n +0000188888 00000 n +0001474287 00000 n +0001953590 00000 n +0000188939 00000 n +0000189152 00000 n +0001474413 00000 n +0001953506 00000 n +0000189208 00000 n +0000189378 00000 n +0001474476 00000 n +0001953381 00000 n +0000189434 00000 n +0000189652 00000 n +0001474601 00000 n +0001953297 00000 n +0000189713 00000 n +0000189825 00000 n +0001474726 00000 n +0001953198 00000 n +0000189886 00000 n +0000189983 00000 n +0001474852 00000 n +0001953114 00000 n +0000190044 00000 n +0000190166 00000 n +0001474978 00000 n +0001952975 00000 n +0000190217 00000 n +0000190455 00000 n +0001496075 00000 n +0001952891 00000 n +0000190511 00000 n +0000190681 00000 n +0001496138 00000 n +0001952765 00000 n +0000190737 00000 n +0000190955 00000 n +0001496264 00000 n +0001952681 00000 n +0000191016 00000 n +0000191188 00000 n +0001496389 00000 n +0001952582 00000 n +0000191249 00000 n +0000191421 00000 n +0001496515 00000 n +0001952483 00000 n +0000191482 00000 n +0000191639 00000 n +0001496641 00000 n +0001952384 00000 n +0000191700 00000 n +0000191842 00000 n +0001502735 00000 n +0001952285 00000 n +0000191903 00000 n +0000192120 00000 n +0001502861 00000 n +0001952186 00000 n +0000192181 00000 n +0000192408 00000 n +0001502987 00000 n +0001952087 00000 n +0000192469 00000 n +0000192666 00000 n +0001503113 00000 n +0001951988 00000 n +0000192727 00000 n +0000192929 00000 n +0001503238 00000 n +0001951889 00000 n +0000192990 00000 n +0000193132 00000 n +0001510360 00000 n +0001951790 00000 n +0000193194 00000 n +0000193336 00000 n +0001510487 00000 n +0001951691 00000 n +0000193398 00000 n +0000193535 00000 n +0001510615 00000 n +0001951592 00000 n +0000193597 00000 n +0000193729 00000 n +0001510743 00000 n +0001951493 00000 n +0000193791 00000 n +0000193988 00000 n +0001510870 00000 n +0001951394 00000 n +0000194050 00000 n +0000194242 00000 n +0001517611 00000 n +0001951295 00000 n +0000194304 00000 n +0000194476 00000 n +0001517739 00000 n +0001951196 00000 n +0000194538 00000 n +0000194740 00000 n +0001517867 00000 n +0001951097 00000 n +0000194802 00000 n +0000195059 00000 n +0001517995 00000 n +0001950998 00000 n +0000195121 00000 n +0000195298 00000 n +0001518123 00000 n +0001950899 00000 n +0000195360 00000 n +0000195552 00000 n +0001523769 00000 n +0001950800 00000 n +0000195614 00000 n +0000195806 00000 n +0001523897 00000 n +0001950701 00000 n +0000195868 00000 n +0000196065 00000 n +0001524025 00000 n +0001950602 00000 n +0000196127 00000 n +0000196339 00000 n +0001524153 00000 n +0001950503 00000 n +0000196401 00000 n +0000196638 00000 n +0001531250 00000 n +0001950404 00000 n +0000196700 00000 n +0000196902 00000 n +0001531378 00000 n +0001950305 00000 n +0000196964 00000 n +0000197166 00000 n +0001531506 00000 n +0001950206 00000 n +0000197228 00000 n +0000197405 00000 n +0001531634 00000 n +0001950122 00000 n +0000197467 00000 n +0000197629 00000 n +0001536588 00000 n +0001949983 00000 n +0000197680 00000 n +0000197853 00000 n +0001536652 00000 n +0001949914 00000 n +0000197909 00000 n +0000198079 00000 n +0001536780 00000 n +0001949775 00000 n +0000198130 00000 n +0000198358 00000 n +0001536974 00000 n +0001949691 00000 n +0000198414 00000 n +0000198584 00000 n +0001537037 00000 n +0001949566 00000 n +0000198640 00000 n +0000198838 00000 n +0001537165 00000 n +0001949482 00000 n +0000198899 00000 n +0000199041 00000 n +0001540696 00000 n +0001949383 00000 n +0000199102 00000 n +0000199214 00000 n +0001540824 00000 n +0001949284 00000 n +0000199275 00000 n +0000199387 00000 n +0001540952 00000 n +0001949185 00000 n +0000199448 00000 n +0000199605 00000 n +0001541080 00000 n +0001949086 00000 n +0000199666 00000 n +0000199808 00000 n +0001541209 00000 n +0001948987 00000 n +0000199869 00000 n +0000199991 00000 n +0001541337 00000 n +0001948888 00000 n +0000200052 00000 n +0000200204 00000 n +0001541466 00000 n +0001948804 00000 n +0000200265 00000 n +0000200402 00000 n +0001541594 00000 n +0001948665 00000 n +0000200453 00000 n +0000200626 00000 n +0001547797 00000 n +0001948540 00000 n +0000200682 00000 n +0000200900 00000 n +0001547926 00000 n +0001948456 00000 n +0000200961 00000 n +0000201063 00000 n +0001548055 00000 n +0001948372 00000 n +0000201124 00000 n +0000201241 00000 n +0001548119 00000 n +0001948247 00000 n +0000201297 00000 n +0000201495 00000 n +0001548248 00000 n +0001948163 00000 n +0000201556 00000 n +0000201653 00000 n +0001548377 00000 n +0001948064 00000 n +0000201714 00000 n +0000201846 00000 n +0001548506 00000 n +0001947980 00000 n +0000201907 00000 n +0000202004 00000 n +0001548634 00000 n +0001947841 00000 n +0000202055 00000 n +0000202218 00000 n +0001554643 00000 n +0001947757 00000 n +0000202274 00000 n +0000202444 00000 n +0001554707 00000 n +0001947617 00000 n +0000202500 00000 n +0000202718 00000 n +0001554836 00000 n +0001947533 00000 n +0000202779 00000 n +0000202946 00000 n +0001554965 00000 n +0001947434 00000 n +0000203007 00000 n +0000203179 00000 n +0001559004 00000 n +0001947335 00000 n +0000203240 00000 n +0000203447 00000 n +0001559133 00000 n +0001947236 00000 n +0000203508 00000 n +0000203625 00000 n +0001559262 00000 n +0001947152 00000 n +0000203686 00000 n +0000203823 00000 n +0001559326 00000 n +0001947026 00000 n +0000203879 00000 n +0000204059 00000 n +0001559455 00000 n +0001946942 00000 n +0000204120 00000 n +0000204252 00000 n +0001562358 00000 n +0001946843 00000 n +0000204313 00000 n +0000204445 00000 n +0001562486 00000 n +0001946744 00000 n +0000204506 00000 n +0000204648 00000 n +0001562614 00000 n +0001946645 00000 n +0000204709 00000 n +0000204851 00000 n +0001562743 00000 n +0001946546 00000 n +0000204912 00000 n +0000205019 00000 n +0001562872 00000 n +0001946447 00000 n +0000205080 00000 n +0000205202 00000 n +0001563001 00000 n +0001946348 00000 n +0000205263 00000 n +0000205390 00000 n +0001563130 00000 n +0001946249 00000 n +0000205451 00000 n +0000205578 00000 n +0001563259 00000 n +0001946150 00000 n +0000205639 00000 n +0000205736 00000 n +0001563388 00000 n +0001946051 00000 n +0000205798 00000 n +0000205900 00000 n +0001563514 00000 n +0001945952 00000 n +0000205962 00000 n +0000206064 00000 n +0001563641 00000 n +0001945853 00000 n +0000206126 00000 n +0000206263 00000 n +0001563769 00000 n +0001945754 00000 n +0000206325 00000 n +0000206462 00000 n +0001563898 00000 n +0001945655 00000 n +0000206524 00000 n +0000206721 00000 n +0001564027 00000 n +0001945556 00000 n +0000206783 00000 n +0000206980 00000 n +0001564154 00000 n +0001945472 00000 n +0000207042 00000 n +0000207159 00000 n +0001564280 00000 n +0001945333 00000 n +0000207210 00000 n +0000207393 00000 n +0001575815 00000 n +0001945249 00000 n +0000207449 00000 n +0000207619 00000 n +0001575879 00000 n +0001945109 00000 n +0000207675 00000 n +0000207893 00000 n +0001576008 00000 n +0001945025 00000 n +0000207954 00000 n +0000208061 00000 n +0001576137 00000 n +0001944926 00000 n +0000208122 00000 n +0000208254 00000 n +0001576266 00000 n +0001944827 00000 n +0000208315 00000 n +0000208432 00000 n +0001576395 00000 n +0001944743 00000 n +0000208493 00000 n +0000208630 00000 n +0001578975 00000 n +0001944603 00000 n +0000208686 00000 n +0000208884 00000 n +0001579104 00000 n +0001944519 00000 n +0000208945 00000 n +0000209102 00000 n +0001579233 00000 n +0001944420 00000 n +0000209163 00000 n +0000209330 00000 n +0001579362 00000 n +0001944321 00000 n +0000209391 00000 n +0000209543 00000 n +0001579491 00000 n +0001944222 00000 n +0000209604 00000 n +0000209726 00000 n +0001579620 00000 n +0001944123 00000 n +0000209787 00000 n +0000209909 00000 n +0001579749 00000 n +0001944039 00000 n +0000209970 00000 n +0000210107 00000 n +0001579812 00000 n +0001943913 00000 n +0000210163 00000 n +0000210343 00000 n +0001579941 00000 n +0001943829 00000 n +0000210404 00000 n +0000210561 00000 n +0001580070 00000 n +0001943730 00000 n +0000210622 00000 n +0000210779 00000 n +0001580199 00000 n +0001943631 00000 n +0000210840 00000 n +0000211012 00000 n +0001580328 00000 n +0001943532 00000 n +0000211073 00000 n +0000211245 00000 n +0001580457 00000 n +0001943433 00000 n +0000211306 00000 n +0000211413 00000 n +0001584095 00000 n +0001943334 00000 n +0000211474 00000 n +0000211596 00000 n +0001584225 00000 n +0001943235 00000 n +0000211657 00000 n +0000211784 00000 n +0001584355 00000 n +0001943136 00000 n +0000211845 00000 n +0000211972 00000 n +0001584482 00000 n +0001943037 00000 n +0000212033 00000 n +0000212130 00000 n +0001584610 00000 n +0001942938 00000 n +0000212192 00000 n +0000212294 00000 n +0001584739 00000 n +0001942839 00000 n +0000212356 00000 n +0000212458 00000 n +0001584868 00000 n +0001942740 00000 n +0000212520 00000 n +0000212657 00000 n +0001584997 00000 n +0001942641 00000 n +0000212719 00000 n +0000212856 00000 n +0001585125 00000 n +0001942542 00000 n +0000212918 00000 n +0000213075 00000 n +0001585253 00000 n +0001942458 00000 n +0000213137 00000 n +0000213254 00000 n +0001585381 00000 n +0001942319 00000 n +0000213305 00000 n +0000213503 00000 n +0001592096 00000 n +0001942235 00000 n +0000213559 00000 n +0000213729 00000 n +0001592160 00000 n +0001942095 00000 n +0000213785 00000 n +0000213983 00000 n +0001592289 00000 n +0001942011 00000 n +0000214044 00000 n +0000214221 00000 n +0001594932 00000 n +0001941912 00000 n +0000214282 00000 n +0000214499 00000 n +0001595062 00000 n +0001941813 00000 n +0000214560 00000 n +0000214697 00000 n +0001595191 00000 n +0001941714 00000 n +0000214758 00000 n +0000214885 00000 n +0001595319 00000 n +0001941615 00000 n +0000214946 00000 n +0000215068 00000 n +0001595448 00000 n +0001941531 00000 n +0000215129 00000 n +0000215241 00000 n +0001595512 00000 n +0001941405 00000 n +0000215297 00000 n +0000215477 00000 n +0001595639 00000 n +0001941321 00000 n +0000215538 00000 n +0000215710 00000 n +0001595768 00000 n +0001941222 00000 n +0000215771 00000 n +0000215943 00000 n +0001595896 00000 n +0001941123 00000 n +0000216004 00000 n +0000216181 00000 n +0001596024 00000 n +0001941024 00000 n +0000216242 00000 n +0000216459 00000 n +0001596153 00000 n +0001940925 00000 n +0000216520 00000 n +0000216627 00000 n +0001600082 00000 n +0001940826 00000 n +0000216688 00000 n +0000216795 00000 n +0001600211 00000 n +0001940727 00000 n +0000216856 00000 n +0000216978 00000 n +0001600341 00000 n +0001940628 00000 n +0000217039 00000 n +0000217161 00000 n +0001600469 00000 n +0001940529 00000 n +0000217222 00000 n +0000217349 00000 n +0001600598 00000 n +0001940430 00000 n +0000217411 00000 n +0000217528 00000 n +0001600726 00000 n +0001940331 00000 n +0000217590 00000 n +0000217737 00000 n +0001600855 00000 n +0001940232 00000 n +0000217799 00000 n +0000217946 00000 n +0001600983 00000 n +0001940133 00000 n +0000218008 00000 n +0000218180 00000 n +0001601112 00000 n +0001940049 00000 n +0000218242 00000 n +0000218414 00000 n +0001601240 00000 n +0001939910 00000 n +0000218465 00000 n +0000218808 00000 n +0001601369 00000 n +0001939826 00000 n +0000218864 00000 n +0000219034 00000 n +0001608580 00000 n +0001939701 00000 n +0000219090 00000 n +0000219308 00000 n +0001608709 00000 n +0001939617 00000 n +0000219369 00000 n +0000219491 00000 n +0001608838 00000 n +0001939533 00000 n +0000219552 00000 n +0000219674 00000 n +0001608967 00000 n +0001939394 00000 n +0000219725 00000 n +0000219958 00000 n +0001609096 00000 n +0001939284 00000 n +0000220014 00000 n +0000220194 00000 n +0001609225 00000 n +0001939200 00000 n +0000220255 00000 n +0000220437 00000 n +0001609354 00000 n +0001939116 00000 n +0000220498 00000 n +0000220650 00000 n +0001609482 00000 n +0001938977 00000 n +0000220701 00000 n +0000220914 00000 n +0001615497 00000 n +0001938893 00000 n +0000220970 00000 n +0000221140 00000 n +0001615561 00000 n +0001938753 00000 n +0000221196 00000 n +0000221429 00000 n +0001615690 00000 n +0001938684 00000 n +0000221490 00000 n +0000221632 00000 n +0001616078 00000 n +0001938544 00000 n +0000221688 00000 n +0000221906 00000 n +0001616207 00000 n +0001938460 00000 n +0000221967 00000 n +0000222079 00000 n +0001616336 00000 n +0001938361 00000 n +0000222140 00000 n +0000222257 00000 n +0001616465 00000 n +0001938262 00000 n +0000222318 00000 n +0000222435 00000 n +0001616594 00000 n +0001938163 00000 n +0000222496 00000 n +0000222613 00000 n +0001616723 00000 n +0001938064 00000 n +0000222674 00000 n +0000222841 00000 n +0001616851 00000 n +0001937980 00000 n +0000222902 00000 n +0000223034 00000 n +0001616914 00000 n +0001937854 00000 n +0000223090 00000 n +0000223288 00000 n +0001619919 00000 n +0001937770 00000 n +0000223349 00000 n +0000223451 00000 n +0001620048 00000 n +0001937671 00000 n +0000223512 00000 n +0000223634 00000 n +0001620177 00000 n +0001937572 00000 n +0000223695 00000 n +0000223877 00000 n +0001620306 00000 n +0001937473 00000 n +0000223938 00000 n +0000224085 00000 n +0001620435 00000 n +0001937374 00000 n +0000224146 00000 n +0000224328 00000 n +0001620564 00000 n +0001937275 00000 n +0000224389 00000 n +0000224506 00000 n +0001620693 00000 n +0001937176 00000 n +0000224567 00000 n +0000224689 00000 n +0001620822 00000 n +0001937077 00000 n +0000224750 00000 n +0000224897 00000 n +0001620951 00000 n +0001936978 00000 n +0000224958 00000 n +0000225110 00000 n +0001621080 00000 n +0001936879 00000 n +0000225172 00000 n +0000225294 00000 n +0001621209 00000 n +0001936780 00000 n +0000225356 00000 n +0000225488 00000 n +0001621338 00000 n +0001936681 00000 n +0000225550 00000 n +0000225667 00000 n +0001621466 00000 n +0001936582 00000 n +0000225729 00000 n +0000225886 00000 n +0001621594 00000 n +0001936483 00000 n +0000225948 00000 n +0000226095 00000 n +0001621723 00000 n +0001936384 00000 n +0000226157 00000 n +0000226289 00000 n +0001621852 00000 n +0001936285 00000 n +0000226351 00000 n +0000226483 00000 n +0001621981 00000 n +0001936201 00000 n +0000226545 00000 n +0000226702 00000 n +0001622109 00000 n +0001936062 00000 n +0000226753 00000 n +0000227076 00000 n +0001622238 00000 n +0001935952 00000 n +0000227132 00000 n +0000227330 00000 n +0001622367 00000 n +0001935868 00000 n +0000227391 00000 n +0000227518 00000 n +0001622496 00000 n +0001935784 00000 n +0000227579 00000 n +0000227731 00000 n +0001622624 00000 n +0001935645 00000 n +0000227782 00000 n +0000228125 00000 n +0001627985 00000 n +0001935535 00000 n +0000228181 00000 n +0000228379 00000 n +0001628114 00000 n +0001935451 00000 n +0000228440 00000 n +0000228537 00000 n +0001628243 00000 n +0001935352 00000 n +0000228598 00000 n +0000228750 00000 n +0001628372 00000 n +0001935268 00000 n +0000228811 00000 n +0000228908 00000 n +0001628500 00000 n +0001935129 00000 n +0000228959 00000 n +0000229152 00000 n +0001628824 00000 n +0001935045 00000 n +0000229208 00000 n +0000229378 00000 n +0001631369 00000 n +0001934905 00000 n +0000229434 00000 n +0000229703 00000 n +0001631498 00000 n +0001934821 00000 n +0000229764 00000 n +0000229891 00000 n +0001631627 00000 n +0001934737 00000 n +0000229952 00000 n +0000230079 00000 n +0001631691 00000 n +0001934597 00000 n +0000230135 00000 n +0000230353 00000 n +0001631820 00000 n +0001934528 00000 n +0000230414 00000 n +0000230531 00000 n +0001631884 00000 n +0001934388 00000 n +0000230587 00000 n +0000230785 00000 n +0001632012 00000 n +0001934304 00000 n +0000230846 00000 n +0000230958 00000 n +0001632141 00000 n +0001934205 00000 n +0000231019 00000 n +0000231116 00000 n +0001632270 00000 n +0001934121 00000 n +0000231177 00000 n +0000231274 00000 n +0001632334 00000 n +0001933996 00000 n +0000231330 00000 n +0000231510 00000 n +0001632462 00000 n +0001933927 00000 n +0000231571 00000 n +0000231693 00000 n +0001632589 00000 n +0001933788 00000 n +0000231744 00000 n +0000231957 00000 n +0001632848 00000 n +0001933663 00000 n +0000232013 00000 n +0000232231 00000 n +0001632977 00000 n +0001933594 00000 n +0000232292 00000 n +0000232409 00000 n +0001633041 00000 n +0001933469 00000 n +0000232465 00000 n +0000232663 00000 n +0001633170 00000 n +0001933385 00000 n +0000232724 00000 n +0000232856 00000 n +0001633298 00000 n +0001933301 00000 n +0000232917 00000 n +0000233039 00000 n +0001633424 00000 n +0001933177 00000 n +0000233090 00000 n +0000233303 00000 n +0001637285 00000 n +0001933093 00000 n +0000233359 00000 n +0000233529 00000 n +0001637349 00000 n +0001932953 00000 n +0000233585 00000 n +0000233854 00000 n +0001637478 00000 n +0001932884 00000 n +0000233915 00000 n +0000234062 00000 n +0001637542 00000 n +0001932744 00000 n +0000234118 00000 n +0000234336 00000 n +0001637671 00000 n +0001932675 00000 n +0000234397 00000 n +0000234534 00000 n +0001637735 00000 n +0001932550 00000 n +0000234590 00000 n +0000234770 00000 n +0001637864 00000 n +0001932466 00000 n +0000234831 00000 n +0000234968 00000 n +0001639183 00000 n +0001932367 00000 n +0000235029 00000 n +0000235126 00000 n +0001639312 00000 n +0001932268 00000 n +0000235187 00000 n +0000235314 00000 n +0001639441 00000 n +0001932184 00000 n +0000235375 00000 n +0000235502 00000 n +0001641581 00000 n +0001932058 00000 n +0000235550 00000 n +0000235685 00000 n +0001641709 00000 n +0001931974 00000 n +0000235735 00000 n +0000236221 00000 n +0001641837 00000 n +0001931875 00000 n +0000236271 00000 n +0000236742 00000 n +0001641966 00000 n +0001931776 00000 n +0000236792 00000 n +0000237298 00000 n +0001642095 00000 n +0001931677 00000 n +0000237348 00000 n +0000237869 00000 n +0001642224 00000 n +0001931578 00000 n +0000237919 00000 n +0000238415 00000 n +0001642352 00000 n +0001931438 00000 n +0000238465 00000 n +0000239179 00000 n +0001642481 00000 n +0001931369 00000 n +0000239234 00000 n +0000239399 00000 n +0001642609 00000 n +0001931229 00000 n +0000239449 00000 n +0000240133 00000 n +0001668409 00000 n +0001931145 00000 n +0000240188 00000 n +0000240353 00000 n +0001668473 00000 n +0001931020 00000 n +0000240408 00000 n +0000240626 00000 n +0001668601 00000 n +0001930936 00000 n +0000240686 00000 n +0000240833 00000 n +0001669444 00000 n +0001930837 00000 n +0000240893 00000 n +0000241040 00000 n +0001673512 00000 n +0001930738 00000 n +0000241100 00000 n +0000241247 00000 n +0001673966 00000 n +0001930654 00000 n +0000241307 00000 n +0000241449 00000 n +0001674225 00000 n +0001930514 00000 n +0000241499 00000 n +0000242208 00000 n +0001674418 00000 n +0001930404 00000 n +0000242263 00000 n +0000242433 00000 n +0001674546 00000 n +0001930320 00000 n +0000242493 00000 n +0000242610 00000 n +0001674675 00000 n +0001930236 00000 n +0000242670 00000 n +0000242817 00000 n +0001674804 00000 n +0001930137 00000 n +0000242867 00000 n +0000243576 00000 n +0001682449 00000 n +0001930038 00000 n +0000243627 00000 n +0000244336 00000 n +0001682773 00000 n +0001929898 00000 n +0000244387 00000 n +0000245136 00000 n +0001698989 00000 n +0001929788 00000 n +0000245192 00000 n +0000245415 00000 n +0001699118 00000 n +0001929704 00000 n +0000245476 00000 n +0000245623 00000 n +0001702778 00000 n +0001929605 00000 n +0000245684 00000 n +0000245881 00000 n +0001703360 00000 n +0001929506 00000 n +0000245942 00000 n +0000246079 00000 n +0001704268 00000 n +0001929407 00000 n +0000246140 00000 n +0000246257 00000 n +0001707702 00000 n +0001929308 00000 n +0000246318 00000 n +0000246440 00000 n +0001708025 00000 n +0001929209 00000 n +0000246501 00000 n +0000246653 00000 n +0001708349 00000 n +0001929110 00000 n +0000246714 00000 n +0000246871 00000 n +0001708737 00000 n +0001929026 00000 n +0000246932 00000 n +0000247074 00000 n +0001723460 00000 n +0001928886 00000 n +0000247125 00000 n +0000247859 00000 n +0001723717 00000 n +0001928761 00000 n +0000247915 00000 n +0000248090 00000 n +0001723846 00000 n +0001928677 00000 n +0000248151 00000 n +0000248273 00000 n +0001723975 00000 n +0001928593 00000 n +0000248334 00000 n +0000248486 00000 n +0001724039 00000 n +0001928468 00000 n +0000248542 00000 n +0000248765 00000 n +0001724165 00000 n +0001928399 00000 n +0000248826 00000 n +0000248983 00000 n +0001730781 00000 n +0001928259 00000 n +0000249034 00000 n +0000249763 00000 n +0001734756 00000 n +0001928175 00000 n +0000249819 00000 n +0000249989 00000 n +0001734820 00000 n +0001928050 00000 n +0000250045 00000 n +0000250220 00000 n +0001734948 00000 n +0001927966 00000 n +0000250281 00000 n +0000250403 00000 n +0001735076 00000 n +0001927882 00000 n +0000250464 00000 n +0000250616 00000 n +0001735205 00000 n +0001927742 00000 n +0000250667 00000 n +0000251396 00000 n +0001735399 00000 n +0001927632 00000 n +0000251452 00000 n +0000251627 00000 n +0001735528 00000 n +0001927548 00000 n +0000251688 00000 n +0000251790 00000 n +0001735657 00000 n +0001927449 00000 n +0000251851 00000 n +0000251973 00000 n +0001735786 00000 n +0001927365 00000 n +0000252034 00000 n +0000252186 00000 n +0001735915 00000 n +0001927225 00000 n +0000252237 00000 n +0000253011 00000 n +0001739455 00000 n +0001927156 00000 n +0000253067 00000 n +0000253237 00000 n +0001739583 00000 n +0001927016 00000 n +0000253288 00000 n +0000254017 00000 n +0001739777 00000 n +0001926906 00000 n +0000254073 00000 n +0000254248 00000 n +0001739906 00000 n +0001926822 00000 n +0000254309 00000 n +0000254411 00000 n +0001740035 00000 n +0001926738 00000 n +0000254472 00000 n +0000254594 00000 n +0001740164 00000 n +0001926598 00000 n +0000254645 00000 n +0000255369 00000 n +0001740358 00000 n +0001926488 00000 n +0000255425 00000 n +0000255600 00000 n +0001740486 00000 n +0001926419 00000 n +0000255661 00000 n +0000255783 00000 n +0001740614 00000 n +0001926279 00000 n +0000255834 00000 n +0000256568 00000 n +0001748932 00000 n +0001926210 00000 n +0000256624 00000 n +0000256794 00000 n +0001749061 00000 n +0001926111 00000 n +0000256845 00000 n +0000257594 00000 n +0001749254 00000 n +0001925971 00000 n +0000257645 00000 n +0000258359 00000 n +0001749448 00000 n +0001925861 00000 n +0000258415 00000 n +0000258638 00000 n +0001749575 00000 n +0001925777 00000 n +0000258699 00000 n +0000258876 00000 n +0001749896 00000 n +0001925678 00000 n +0000258937 00000 n +0000259114 00000 n +0001753779 00000 n +0001925579 00000 n +0000259175 00000 n +0000259327 00000 n +0001754101 00000 n +0001925495 00000 n +0000259388 00000 n +0000259560 00000 n +0001754490 00000 n +0001925355 00000 n +0000259611 00000 n +0000260355 00000 n +0001754684 00000 n +0001925245 00000 n +0000260411 00000 n +0000260586 00000 n +0001754813 00000 n +0001925161 00000 n +0000260647 00000 n +0000260749 00000 n +0001754940 00000 n +0001925077 00000 n +0000260810 00000 n +0000260962 00000 n +0001755066 00000 n +0001924978 00000 n +0000261013 00000 n +0000261697 00000 n +0001758268 00000 n +0001924879 00000 n +0000261748 00000 n +0000262452 00000 n +0001758462 00000 n +0001924739 00000 n +0000262503 00000 n +0000263182 00000 n +0001758590 00000 n +0001924670 00000 n +0000263238 00000 n +0000263408 00000 n +0001758719 00000 n +0001924530 00000 n +0000263459 00000 n +0000264208 00000 n +0001758783 00000 n +0001924461 00000 n +0000264264 00000 n +0000264434 00000 n +0001758912 00000 n +0001924321 00000 n +0000264485 00000 n +0000265219 00000 n +0001763565 00000 n +0001924252 00000 n +0000265275 00000 n +0000265445 00000 n +0001763694 00000 n +0001924153 00000 n +0000265496 00000 n +0000266220 00000 n +0001763823 00000 n +0001924054 00000 n +0000266271 00000 n +0000267055 00000 n +0001764016 00000 n +0001923955 00000 n +0000267106 00000 n +0000267905 00000 n +0001764208 00000 n +0001923856 00000 n +0000267956 00000 n +0000268745 00000 n +0001767110 00000 n +0001923757 00000 n +0000268796 00000 n +0000269585 00000 n +0001767304 00000 n +0001923658 00000 n +0000269636 00000 n +0000270500 00000 n +0001767498 00000 n +0001923559 00000 n +0000270551 00000 n +0000271405 00000 n +0001767691 00000 n +0001923460 00000 n +0000271456 00000 n +0000272320 00000 n +0001767885 00000 n +0001923361 00000 n +0000272371 00000 n +0000273225 00000 n +0001771937 00000 n +0001923262 00000 n +0000273276 00000 n +0000274125 00000 n +0001772131 00000 n +0001923163 00000 n +0000274176 00000 n +0000275015 00000 n +0001772325 00000 n +0001923064 00000 n +0000275066 00000 n +0000275619 00000 n +0001772582 00000 n +0001922965 00000 n +0000275670 00000 n +0000276218 00000 n +0001772841 00000 n +0001922866 00000 n +0000276269 00000 n +0000276862 00000 n +0001782017 00000 n +0001922767 00000 n +0000276913 00000 n +0000277476 00000 n +0001782276 00000 n +0001922668 00000 n +0000277527 00000 n +0000278110 00000 n +0001782535 00000 n +0001922569 00000 n +0000278161 00000 n +0000278744 00000 n +0001794795 00000 n +0001922470 00000 n +0000278795 00000 n +0000279333 00000 n +0001795119 00000 n +0001922371 00000 n +0000279384 00000 n +0000279927 00000 n +0001799511 00000 n +0001922272 00000 n +0000279978 00000 n +0000280546 00000 n +0001799769 00000 n +0001922188 00000 n +0000280597 00000 n +0000281190 00000 n +0000281542 00000 n +0000281728 00000 n +0000281242 00000 n +0000281665 00000 n +0001915217 00000 n +0001915575 00000 n +0000282026 00000 n +0000281903 00000 n +0000281802 00000 n +0000283473 00000 n +0000283624 00000 n +0000283775 00000 n +0000283928 00000 n +0000284088 00000 n +0000284248 00000 n +0000284407 00000 n +0000284557 00000 n +0000284708 00000 n +0000284858 00000 n +0000285009 00000 n +0000285162 00000 n +0000285322 00000 n +0000285482 00000 n +0000285647 00000 n +0000285809 00000 n +0000285974 00000 n +0000286139 00000 n +0000286304 00000 n +0000286463 00000 n +0000286628 00000 n +0000286781 00000 n +0000286941 00000 n +0000287092 00000 n +0000287245 00000 n +0000287398 00000 n +0000287551 00000 n +0000287709 00000 n +0000289816 00000 n +0000287934 00000 n +0000283086 00000 n +0000282068 00000 n +0000287871 00000 n +0001914670 00000 n +0001914493 00000 n +0000289967 00000 n +0000290119 00000 n +0000290279 00000 n +0000290444 00000 n +0000290609 00000 n +0000290774 00000 n +0000290927 00000 n +0000291086 00000 n +0000291251 00000 n +0000291403 00000 n +0000291556 00000 n +0000291707 00000 n +0000291860 00000 n +0000292020 00000 n +0000292180 00000 n +0000292344 00000 n +0000292509 00000 n +0000292674 00000 n +0000292827 00000 n +0000292987 00000 n +0000293147 00000 n +0000293312 00000 n +0000293477 00000 n +0000293637 00000 n +0000293801 00000 n +0000293966 00000 n +0000294131 00000 n +0000294296 00000 n +0000294456 00000 n +0000294621 00000 n +0000294786 00000 n +0000294951 00000 n +0000295116 00000 n +0000295281 00000 n +0000295434 00000 n +0000295594 00000 n +0000295754 00000 n +0000295917 00000 n +0000297882 00000 n +0000296080 00000 n +0000289330 00000 n +0000288036 00000 n +0000298042 00000 n +0000298207 00000 n +0000298372 00000 n +0000298536 00000 n +0000298701 00000 n +0000298861 00000 n +0000299026 00000 n +0000299187 00000 n +0000299352 00000 n +0000299516 00000 n +0000299681 00000 n +0000299833 00000 n +0000299992 00000 n +0000300152 00000 n +0000300316 00000 n +0000300476 00000 n +0000300641 00000 n +0000300806 00000 n +0000300967 00000 n +0000301132 00000 n +0000301295 00000 n +0000301455 00000 n +0000301620 00000 n +0000301784 00000 n +0000301948 00000 n +0000302113 00000 n +0000302273 00000 n +0000302438 00000 n +0000302603 00000 n +0000302755 00000 n +0000302915 00000 n +0000303075 00000 n +0000303240 00000 n +0000303399 00000 n +0000303564 00000 n +0000303729 00000 n +0000303894 00000 n +0000304059 00000 n +0000304221 00000 n +0000306230 00000 n +0000304384 00000 n +0000297387 00000 n +0000296168 00000 n +0000306395 00000 n +0000306559 00000 n +0000306724 00000 n +0000306889 00000 n +0000307055 00000 n +0000307220 00000 n +0000307385 00000 n +0000307551 00000 n +0000307717 00000 n +0000307883 00000 n +0000308049 00000 n +0000308215 00000 n +0000308381 00000 n +0000308541 00000 n +0000308706 00000 n +0000308870 00000 n +0000309035 00000 n +0000309199 00000 n +0000309359 00000 n +0000309524 00000 n +0000309686 00000 n +0000309851 00000 n +0000310015 00000 n +0000310180 00000 n +0000310345 00000 n +0000310510 00000 n +0000310675 00000 n +0000310840 00000 n +0000311006 00000 n +0000311172 00000 n +0000311325 00000 n +0000311485 00000 n +0000311645 00000 n +0000311810 00000 n +0000311975 00000 n +0000312138 00000 n +0000312303 00000 n +0000312468 00000 n +0000312631 00000 n +0000314588 00000 n +0000312794 00000 n +0000305735 00000 n +0000304472 00000 n +0000314739 00000 n +0000314898 00000 n +0000315058 00000 n +0000315223 00000 n +0000315388 00000 n +0000315553 00000 n +0000315718 00000 n +0000315879 00000 n +0000316043 00000 n +0000316208 00000 n +0000316373 00000 n +0000316538 00000 n +0000316691 00000 n +0000316851 00000 n +0000317011 00000 n +0000317176 00000 n +0000317341 00000 n +0000317506 00000 n +0000317671 00000 n +0000317836 00000 n +0000317999 00000 n +0000318163 00000 n +0000318328 00000 n +0000318493 00000 n +0000318659 00000 n +0000318825 00000 n +0000318991 00000 n +0000319157 00000 n +0000319322 00000 n +0000319487 00000 n +0000319653 00000 n +0000319806 00000 n +0000319966 00000 n +0000320125 00000 n +0000320290 00000 n +0000320449 00000 n +0000320614 00000 n +0000320779 00000 n +0000320937 00000 n +0000322996 00000 n +0000321100 00000 n +0000314093 00000 n +0000312882 00000 n +0001915701 00000 n +0000323161 00000 n +0000323320 00000 n +0000323485 00000 n +0000323638 00000 n +0000323799 00000 n +0000323960 00000 n +0000324126 00000 n +0000324288 00000 n +0000324454 00000 n +0000324619 00000 n +0000324785 00000 n +0000324951 00000 n +0000325117 00000 n +0000325271 00000 n +0000325432 00000 n +0000325598 00000 n +0000325764 00000 n +0000325930 00000 n +0000326082 00000 n +0000326243 00000 n +0000326402 00000 n +0000326568 00000 n +0000326733 00000 n +0000326899 00000 n +0000327064 00000 n +0000327230 00000 n +0000327395 00000 n +0000327561 00000 n +0000327726 00000 n +0000327892 00000 n +0000328059 00000 n +0000328226 00000 n +0000328392 00000 n +0000328559 00000 n +0000328726 00000 n +0000328892 00000 n +0000329046 00000 n +0000329207 00000 n +0000329366 00000 n +0000331442 00000 n +0000329530 00000 n +0000322501 00000 n +0000321188 00000 n +0000331607 00000 n +0000331773 00000 n +0000331939 00000 n +0000332104 00000 n +0000332270 00000 n +0000332435 00000 n +0000332601 00000 n +0000332767 00000 n +0000332933 00000 n +0000333099 00000 n +0000333266 00000 n +0000333432 00000 n +0000333597 00000 n +0000333764 00000 n +0000333931 00000 n +0000334098 00000 n +0000334264 00000 n +0000334430 00000 n +0000334597 00000 n +0000334764 00000 n +0000334929 00000 n +0000335095 00000 n +0000335262 00000 n +0000335429 00000 n +0000335595 00000 n +0000335762 00000 n +0000335929 00000 n +0000336096 00000 n +0000336250 00000 n +0000336411 00000 n +0000336572 00000 n +0000336738 00000 n +0000336904 00000 n +0000337069 00000 n +0000337235 00000 n +0000337400 00000 n +0000337566 00000 n +0000337732 00000 n +0000337896 00000 n +0000339850 00000 n +0000338060 00000 n +0000330947 00000 n +0000329618 00000 n +0000340016 00000 n +0000340183 00000 n +0000340350 00000 n +0000340516 00000 n +0000340683 00000 n +0000340837 00000 n +0000340998 00000 n +0000341155 00000 n +0000341321 00000 n +0000341486 00000 n +0000341652 00000 n +0000341818 00000 n +0000341984 00000 n +0000342150 00000 n +0000342315 00000 n +0000342481 00000 n +0000342647 00000 n +0000342814 00000 n +0000342979 00000 n +0000343146 00000 n +0000343313 00000 n +0000343480 00000 n +0000343640 00000 n +0000343806 00000 n +0000343960 00000 n +0000344121 00000 n +0000344282 00000 n +0000344448 00000 n +0000344609 00000 n +0000344775 00000 n +0000344941 00000 n +0000345107 00000 n +0000345273 00000 n +0000345427 00000 n +0000345588 00000 n +0000345748 00000 n +0000345914 00000 n +0000346068 00000 n +0000346226 00000 n +0000348299 00000 n +0000346385 00000 n +0000339355 00000 n +0000338148 00000 n +0000348465 00000 n +0000348630 00000 n +0000348796 00000 n +0000348962 00000 n +0000349128 00000 n +0000349294 00000 n +0000349460 00000 n +0000349626 00000 n +0000349792 00000 n +0000349946 00000 n +0000350107 00000 n +0000350272 00000 n +0000350425 00000 n +0000350586 00000 n +0000350746 00000 n +0000350912 00000 n +0000351066 00000 n +0000351227 00000 n +0000351388 00000 n +0000351554 00000 n +0000351720 00000 n +0000351886 00000 n +0000352051 00000 n +0000352217 00000 n +0000352383 00000 n +0000352549 00000 n +0000352715 00000 n +0000352881 00000 n +0000353035 00000 n +0000353196 00000 n +0000353357 00000 n +0000353523 00000 n +0000353689 00000 n +0000353854 00000 n +0000354020 00000 n +0000354186 00000 n +0000354352 00000 n +0000354518 00000 n +0000354682 00000 n +0000356773 00000 n +0000354846 00000 n +0000347804 00000 n +0000346473 00000 n +0000356940 00000 n +0000357106 00000 n +0000357272 00000 n +0000357438 00000 n +0000357605 00000 n +0000357772 00000 n +0000357939 00000 n +0000358104 00000 n +0000358271 00000 n +0000358438 00000 n +0000358605 00000 n +0000358772 00000 n +0000358938 00000 n +0000359104 00000 n +0000359269 00000 n +0000359434 00000 n +0000359601 00000 n +0000359768 00000 n +0000359919 00000 n +0000360080 00000 n +0000360234 00000 n +0000360395 00000 n +0000360555 00000 n +0000360720 00000 n +0000360885 00000 n +0000361039 00000 n +0000361200 00000 n +0000361360 00000 n +0000361526 00000 n +0000361691 00000 n +0000361845 00000 n +0000362006 00000 n +0000362167 00000 n +0000362332 00000 n +0000362498 00000 n +0000362664 00000 n +0000362830 00000 n +0000362995 00000 n +0000363159 00000 n +0000365140 00000 n +0000363323 00000 n +0000356278 00000 n +0000354934 00000 n +0000365306 00000 n +0000365472 00000 n +0000365639 00000 n +0000365804 00000 n +0000365970 00000 n +0000366137 00000 n +0000366304 00000 n +0000366471 00000 n +0000366638 00000 n +0000366805 00000 n +0000366972 00000 n +0000367139 00000 n +0000367293 00000 n +0000367454 00000 n +0000367620 00000 n +0000367786 00000 n +0000367951 00000 n +0000368117 00000 n +0000368281 00000 n +0000368447 00000 n +0000368611 00000 n +0000368777 00000 n +0000368942 00000 n +0000369096 00000 n +0000369256 00000 n +0000369417 00000 n +0000369583 00000 n +0000369749 00000 n +0000369915 00000 n +0000370081 00000 n +0000370247 00000 n +0000370412 00000 n +0000370578 00000 n +0000370743 00000 n +0000370909 00000 n +0000371075 00000 n +0000371242 00000 n +0000371409 00000 n +0000371574 00000 n +0000373499 00000 n +0000371739 00000 n +0000364645 00000 n +0000363411 00000 n +0001915827 00000 n +0000373666 00000 n +0000373833 00000 n +0000374000 00000 n +0000374165 00000 n +0000374332 00000 n +0000374499 00000 n +0000374666 00000 n +0000374833 00000 n +0000375000 00000 n +0000375166 00000 n +0000375333 00000 n +0000375500 00000 n +0000375666 00000 n +0000375833 00000 n +0000375999 00000 n +0000376166 00000 n +0000376333 00000 n +0000376500 00000 n +0000376665 00000 n +0000376832 00000 n +0000376999 00000 n +0000377166 00000 n +0000377331 00000 n +0000377498 00000 n +0000377664 00000 n +0000377830 00000 n +0000377997 00000 n +0000378164 00000 n +0000378331 00000 n +0000378497 00000 n +0000378664 00000 n +0000378831 00000 n +0000378996 00000 n +0000379163 00000 n +0000379330 00000 n +0000379496 00000 n +0000379663 00000 n +0000379830 00000 n +0000379994 00000 n +0000382054 00000 n +0000380159 00000 n +0000373004 00000 n +0000371827 00000 n +0000382221 00000 n +0000382388 00000 n +0000382555 00000 n +0000382722 00000 n +0000382889 00000 n +0000383056 00000 n +0000383223 00000 n +0000383385 00000 n +0000383552 00000 n +0000383718 00000 n +0000383885 00000 n +0000384052 00000 n +0000384206 00000 n +0000384367 00000 n +0000384528 00000 n +0000384694 00000 n +0000384860 00000 n +0000385021 00000 n +0000385184 00000 n +0000385350 00000 n +0000385516 00000 n +0000385682 00000 n +0000385848 00000 n +0000386014 00000 n +0000386180 00000 n +0000386346 00000 n +0000386512 00000 n +0000386678 00000 n +0000386831 00000 n +0000386992 00000 n +0000387153 00000 n +0000387319 00000 n +0000387485 00000 n +0000387645 00000 n +0000387811 00000 n +0000387976 00000 n +0000388142 00000 n +0000388303 00000 n +0000388467 00000 n +0000390489 00000 n +0000388619 00000 n +0000381559 00000 n +0000380247 00000 n +0000390650 00000 n +0000390811 00000 n +0000390977 00000 n +0000391138 00000 n +0000391304 00000 n +0000391465 00000 n +0000391630 00000 n +0000391791 00000 n +0000391952 00000 n +0000392117 00000 n +0000392271 00000 n +0000392432 00000 n +0000392593 00000 n +0000392759 00000 n +0000392924 00000 n +0000393089 00000 n +0000393254 00000 n +0000393419 00000 n +0000393583 00000 n +0000393749 00000 n +0000393915 00000 n +0000394081 00000 n +0000394247 00000 n +0000394414 00000 n +0000394579 00000 n +0000394745 00000 n +0000394912 00000 n +0000395078 00000 n +0000395245 00000 n +0000395412 00000 n +0000395578 00000 n +0000395745 00000 n +0000395912 00000 n +0000396079 00000 n +0000396246 00000 n +0000396413 00000 n +0000396580 00000 n +0000396747 00000 n +0000396912 00000 n +0000398870 00000 n +0000397077 00000 n +0000389994 00000 n +0000388707 00000 n +0000399036 00000 n +0000399201 00000 n +0000399368 00000 n +0000399534 00000 n +0000399701 00000 n +0000399868 00000 n +0000400035 00000 n +0000400198 00000 n +0000400365 00000 n +0000400531 00000 n +0000400698 00000 n +0000400865 00000 n +0000401032 00000 n +0000401199 00000 n +0000401364 00000 n +0000401531 00000 n +0000401698 00000 n +0000401865 00000 n +0000402031 00000 n +0000402198 00000 n +0000402363 00000 n +0000402530 00000 n +0000402696 00000 n +0000402863 00000 n +0000403030 00000 n +0000403197 00000 n +0000403364 00000 n +0000403531 00000 n +0000403698 00000 n +0000403864 00000 n +0000404031 00000 n +0000404198 00000 n +0000404365 00000 n +0000404531 00000 n +0000404698 00000 n +0000404864 00000 n +0000405025 00000 n +0000405190 00000 n +0000405353 00000 n +0000407400 00000 n +0000405517 00000 n +0000398375 00000 n +0000397165 00000 n +0000407566 00000 n +0000407732 00000 n +0000407898 00000 n +0000408062 00000 n +0000408228 00000 n +0000408394 00000 n +0000408561 00000 n +0000408724 00000 n +0000408891 00000 n +0000409057 00000 n +0000409224 00000 n +0000409391 00000 n +0000409557 00000 n +0000409724 00000 n +0000409885 00000 n +0000410051 00000 n +0000410217 00000 n +0000410383 00000 n +0000410546 00000 n +0000410712 00000 n +0000410876 00000 n +0000411042 00000 n +0000411207 00000 n +0000411373 00000 n +0000411540 00000 n +0000411707 00000 n +0000411874 00000 n +0000412041 00000 n +0000412208 00000 n +0000412374 00000 n +0000412541 00000 n +0000412708 00000 n +0000412875 00000 n +0000413041 00000 n +0000413208 00000 n +0000413375 00000 n +0000413542 00000 n +0000413709 00000 n +0000413873 00000 n +0000415952 00000 n +0000414037 00000 n +0000406905 00000 n +0000405605 00000 n +0000416119 00000 n +0000416286 00000 n +0000416453 00000 n +0000416619 00000 n +0000416784 00000 n +0000416951 00000 n +0000417118 00000 n +0000417285 00000 n +0000417452 00000 n +0000417619 00000 n +0000417784 00000 n +0000417951 00000 n +0000418118 00000 n +0000418285 00000 n +0000418451 00000 n +0000418618 00000 n +0000418785 00000 n +0000418952 00000 n +0000419119 00000 n +0000419286 00000 n +0000419439 00000 n +0000419600 00000 n +0000419766 00000 n +0000419932 00000 n +0000420092 00000 n +0000420258 00000 n +0000420423 00000 n +0000420589 00000 n +0000420755 00000 n +0000420916 00000 n +0000421082 00000 n +0000421247 00000 n +0000421400 00000 n +0000421561 00000 n +0000421722 00000 n +0000421887 00000 n +0000422048 00000 n +0000422214 00000 n +0000422377 00000 n +0000424270 00000 n +0000422540 00000 n +0000415457 00000 n +0000414125 00000 n +0001915953 00000 n +0000424435 00000 n +0000424599 00000 n +0000424764 00000 n +0000424929 00000 n +0000425095 00000 n +0000425260 00000 n +0000425426 00000 n +0000425588 00000 n +0000425755 00000 n +0000425922 00000 n +0000426089 00000 n +0000426250 00000 n +0000426416 00000 n +0000426582 00000 n +0000426743 00000 n +0000426907 00000 n +0000427073 00000 n +0000427239 00000 n +0000427405 00000 n +0000427571 00000 n +0000427734 00000 n +0000427900 00000 n +0000428065 00000 n +0000428231 00000 n +0000428398 00000 n +0000428565 00000 n +0000428732 00000 n +0000428899 00000 n +0000429066 00000 n +0000429219 00000 n +0000429380 00000 n +0000429541 00000 n +0000429707 00000 n +0000429861 00000 n +0000430022 00000 n +0000430182 00000 n +0000430348 00000 n +0000430502 00000 n +0000430660 00000 n +0000432563 00000 n +0000430819 00000 n +0000423775 00000 n +0000422628 00000 n +0000432729 00000 n +0000432895 00000 n +0000433061 00000 n +0000433227 00000 n +0000433388 00000 n +0000433554 00000 n +0000433720 00000 n +0000433882 00000 n +0000434048 00000 n +0000434214 00000 n +0000434380 00000 n +0000434546 00000 n +0000434700 00000 n +0000434861 00000 n +0000435021 00000 n +0000435187 00000 n +0000435348 00000 n +0000435514 00000 n +0000435680 00000 n +0000435846 00000 n +0000436012 00000 n +0000436178 00000 n +0000436343 00000 n +0000436509 00000 n +0000436675 00000 n +0000436841 00000 n +0000437008 00000 n +0000437175 00000 n +0000437342 00000 n +0000437508 00000 n +0000437675 00000 n +0000437841 00000 n +0000438002 00000 n +0000438167 00000 n +0000438333 00000 n +0000438498 00000 n +0000438651 00000 n +0000438812 00000 n +0000438971 00000 n +0000441059 00000 n +0000439135 00000 n +0000432068 00000 n +0000430907 00000 n +0000441220 00000 n +0000441386 00000 n +0000441551 00000 n +0000441717 00000 n +0000441883 00000 n +0000442049 00000 n +0000442215 00000 n +0000442365 00000 n +0000442526 00000 n +0000442686 00000 n +0000442852 00000 n +0000443018 00000 n +0000443172 00000 n +0000443333 00000 n +0000443498 00000 n +0000443659 00000 n +0000443825 00000 n +0000443991 00000 n +0000444155 00000 n +0000444321 00000 n +0000444485 00000 n +0000444639 00000 n +0000444799 00000 n +0000444964 00000 n +0000445130 00000 n +0000445291 00000 n +0000445457 00000 n +0000445623 00000 n +0000445789 00000 n +0000445954 00000 n +0000446120 00000 n +0000446286 00000 n +0000446452 00000 n +0000446618 00000 n +0000446784 00000 n +0000446951 00000 n +0000447118 00000 n +0000447285 00000 n +0000447449 00000 n +0000449396 00000 n +0000447614 00000 n +0000440564 00000 n +0000439223 00000 n +0000449550 00000 n +0000449711 00000 n +0000449877 00000 n +0000450038 00000 n +0000450204 00000 n +0000450370 00000 n +0000450536 00000 n +0000450686 00000 n +0000450847 00000 n +0000451013 00000 n +0000451174 00000 n +0000451340 00000 n +0000451505 00000 n +0000451671 00000 n +0000451836 00000 n +0000451990 00000 n +0000452151 00000 n +0000452317 00000 n +0000452478 00000 n +0000452644 00000 n +0000452810 00000 n +0000452976 00000 n +0000453129 00000 n +0000453290 00000 n +0000453456 00000 n +0000453617 00000 n +0000453783 00000 n +0000453948 00000 n +0000454114 00000 n +0000454279 00000 n +0000454433 00000 n +0000454594 00000 n +0000454755 00000 n +0000454920 00000 n +0000455085 00000 n +0000455251 00000 n +0000455417 00000 n +0000455583 00000 n +0000455746 00000 n +0000457763 00000 n +0000455910 00000 n +0000448901 00000 n +0000447702 00000 n +0000457929 00000 n +0000458095 00000 n +0000458262 00000 n +0000458428 00000 n +0000458595 00000 n +0000458762 00000 n +0000458929 00000 n +0000459096 00000 n +0000459257 00000 n +0000459422 00000 n +0000459588 00000 n +0000459754 00000 n +0000459919 00000 n +0000460085 00000 n +0000460250 00000 n +0000460416 00000 n +0000460582 00000 n +0000460748 00000 n +0000460913 00000 n +0000461080 00000 n +0000461239 00000 n +0000461405 00000 n +0000461570 00000 n +0000461736 00000 n +0000461902 00000 n +0000462068 00000 n +0000462234 00000 n +0000462400 00000 n +0000462566 00000 n +0000462731 00000 n +0000462884 00000 n +0000463045 00000 n +0000463206 00000 n +0000463372 00000 n +0000463537 00000 n +0000463703 00000 n +0000463857 00000 n +0000464018 00000 n +0000464177 00000 n +0000466251 00000 n +0000464341 00000 n +0000457268 00000 n +0000455998 00000 n +0000466417 00000 n +0000466583 00000 n +0000466749 00000 n +0000466914 00000 n +0000467080 00000 n +0000467246 00000 n +0000467412 00000 n +0000467578 00000 n +0000467745 00000 n +0000467912 00000 n +0000468078 00000 n +0000468245 00000 n +0000468412 00000 n +0000468579 00000 n +0000468745 00000 n +0000468909 00000 n +0000469076 00000 n +0000469243 00000 n +0000469408 00000 n +0000469575 00000 n +0000469742 00000 n +0000469908 00000 n +0000470073 00000 n +0000470238 00000 n +0000470405 00000 n +0000470572 00000 n +0000470726 00000 n +0000470886 00000 n +0000471040 00000 n +0000471201 00000 n +0000471362 00000 n +0000471528 00000 n +0000471694 00000 n +0000471860 00000 n +0000472026 00000 n +0000472191 00000 n +0000472357 00000 n +0000472523 00000 n +0000472687 00000 n +0000474587 00000 n +0000472839 00000 n +0000465756 00000 n +0000464429 00000 n +0001916079 00000 n +0000474748 00000 n +0000474914 00000 n +0000475080 00000 n +0000475241 00000 n +0000475406 00000 n +0000475571 00000 n +0000475737 00000 n +0000475887 00000 n +0000476048 00000 n +0000476208 00000 n +0000476374 00000 n +0000476540 00000 n +0000476705 00000 n +0000476871 00000 n +0000477036 00000 n +0000477197 00000 n +0000477363 00000 n +0000477529 00000 n +0000477695 00000 n +0000477861 00000 n +0000478027 00000 n +0000478193 00000 n +0000478359 00000 n +0000478525 00000 n +0000478690 00000 n +0000478857 00000 n +0000479024 00000 n +0000479190 00000 n +0000479357 00000 n +0000479524 00000 n +0000479691 00000 n +0000479857 00000 n +0000480011 00000 n +0000480172 00000 n +0000480333 00000 n +0000480497 00000 n +0000480663 00000 n +0000480828 00000 n +0000480992 00000 n +0000482916 00000 n +0000481151 00000 n +0000474092 00000 n +0000472927 00000 n +0000483082 00000 n +0000483247 00000 n +0000483413 00000 n +0000483579 00000 n +0000483745 00000 n +0000483911 00000 n +0000484072 00000 n +0000484238 00000 n +0000484404 00000 n +0000484570 00000 n +0000484736 00000 n +0000484902 00000 n +0000485068 00000 n +0000485234 00000 n +0000485400 00000 n +0000485566 00000 n +0000485733 00000 n +0000485900 00000 n +0000486065 00000 n +0000486232 00000 n +0000486397 00000 n +0000486563 00000 n +0000486717 00000 n +0000486878 00000 n +0000487038 00000 n +0000487203 00000 n +0000487369 00000 n +0000487534 00000 n +0000487700 00000 n +0000487866 00000 n +0000488032 00000 n +0000488193 00000 n +0000488359 00000 n +0000488525 00000 n +0000488691 00000 n +0000488856 00000 n +0000489022 00000 n +0000489188 00000 n +0000489352 00000 n +0000491390 00000 n +0000489516 00000 n +0000482421 00000 n +0000481239 00000 n +0000491556 00000 n +0000491723 00000 n +0000491890 00000 n +0000492057 00000 n +0000492224 00000 n +0000492391 00000 n +0000492545 00000 n +0000492706 00000 n +0000492867 00000 n +0000493033 00000 n +0000493199 00000 n +0000493352 00000 n +0000493512 00000 n +0000493678 00000 n +0000493843 00000 n +0000493996 00000 n +0000494157 00000 n +0000494318 00000 n +0000494482 00000 n +0000494643 00000 n +0000494807 00000 n +0000494973 00000 n +0000495138 00000 n +0000495304 00000 n +0000495470 00000 n +0000495636 00000 n +0000495797 00000 n +0000495962 00000 n +0000496128 00000 n +0000496293 00000 n +0000496459 00000 n +0000496625 00000 n +0000496791 00000 n +0000496956 00000 n +0000497122 00000 n +0000497288 00000 n +0000497455 00000 n +0000497621 00000 n +0000497785 00000 n +0000499746 00000 n +0000497950 00000 n +0000490895 00000 n +0000489604 00000 n +0000499913 00000 n +0000500080 00000 n +0000500247 00000 n +0000500413 00000 n +0000500567 00000 n +0000500728 00000 n +0000500894 00000 n +0000501060 00000 n +0000501214 00000 n +0000501374 00000 n +0000501540 00000 n +0000501706 00000 n +0000501871 00000 n +0000502023 00000 n +0000502184 00000 n +0000502345 00000 n +0000502511 00000 n +0000502677 00000 n +0000502838 00000 n +0000503004 00000 n +0000503163 00000 n +0000503329 00000 n +0000503494 00000 n +0000503660 00000 n +0000503820 00000 n +0000503986 00000 n +0000504140 00000 n +0000504301 00000 n +0000504467 00000 n +0000504628 00000 n +0000504794 00000 n +0000504960 00000 n +0000505114 00000 n +0000505275 00000 n +0000505436 00000 n +0000505601 00000 n +0000505762 00000 n +0000505927 00000 n +0000506085 00000 n +0000508234 00000 n +0000506249 00000 n +0000499251 00000 n +0000498038 00000 n +0000508400 00000 n +0000508564 00000 n +0000508730 00000 n +0000508876 00000 n +0000509029 00000 n +0000509182 00000 n +0000509335 00000 n +0000509488 00000 n +0000509639 00000 n +0000509945 00000 n +0000510104 00000 n +0000510410 00000 n +0000510569 00000 n +0000510729 00000 n +0000510894 00000 n +0000511058 00000 n +0000511222 00000 n +0000511387 00000 n +0000511693 00000 n +0000511853 00000 n +0000512017 00000 n +0000512182 00000 n +0000512488 00000 n +0000512796 00000 n +0000513103 00000 n +0000513264 00000 n +0000513430 00000 n +0000513596 00000 n +0000513762 00000 n +0000513928 00000 n +0000514094 00000 n +0000514260 00000 n +0000514424 00000 n +0000516441 00000 n +0000514588 00000 n +0000507739 00000 n +0000506337 00000 n +0001914167 00000 n +0001914019 00000 n +0000509792 00000 n +0000510257 00000 n +0000511540 00000 n +0000512335 00000 n +0000512642 00000 n +0000512950 00000 n +0000516748 00000 n +0000516909 00000 n +0000517075 00000 n +0000517241 00000 n +0000517402 00000 n +0000517568 00000 n +0000517875 00000 n +0000518036 00000 n +0000518197 00000 n +0000518362 00000 n +0000518528 00000 n +0000518835 00000 n +0000518996 00000 n +0000519162 00000 n +0000519328 00000 n +0000519494 00000 n +0000519802 00000 n +0000519962 00000 n +0000520268 00000 n +0000520429 00000 n +0000520594 00000 n +0000520760 00000 n +0000521067 00000 n +0000521228 00000 n +0000521394 00000 n +0000521702 00000 n +0000521863 00000 n +0000522170 00000 n +0000522477 00000 n +0000522638 00000 n +0000522804 00000 n +0000522970 00000 n +0000523134 00000 n +0000525192 00000 n +0000523298 00000 n +0000515919 00000 n +0000514704 00000 n +0000516594 00000 n +0000517721 00000 n +0000518681 00000 n +0000519648 00000 n +0000520115 00000 n +0000520914 00000 n +0000521548 00000 n +0000522017 00000 n +0000522324 00000 n +0001916205 00000 n +0000525499 00000 n +0000525660 00000 n +0000525826 00000 n +0000525992 00000 n +0000526299 00000 n +0000526607 00000 n +0000526915 00000 n +0000527076 00000 n +0000527382 00000 n +0000527543 00000 n +0000527850 00000 n +0000528011 00000 n +0000528319 00000 n +0000528627 00000 n +0000528935 00000 n +0000529243 00000 n +0000529550 00000 n +0000529858 00000 n +0000530166 00000 n +0000530473 00000 n +0000530780 00000 n +0000531088 00000 n +0000531396 00000 n +0000531703 00000 n +0000532008 00000 n +0000533363 00000 n +0000532310 00000 n +0000524643 00000 n +0000523414 00000 n +0000525345 00000 n +0000526145 00000 n +0000526453 00000 n +0000526761 00000 n +0000527228 00000 n +0000527696 00000 n +0000528165 00000 n +0000528473 00000 n +0000528781 00000 n +0000529089 00000 n +0000529396 00000 n +0000529704 00000 n +0000530012 00000 n +0000530320 00000 n +0000530627 00000 n +0000530934 00000 n +0000531242 00000 n +0000531549 00000 n +0000531857 00000 n +0000532159 00000 n +0000533670 00000 n +0000533977 00000 n +0000534285 00000 n +0000534592 00000 n +0000534899 00000 n +0000535207 00000 n +0000535514 00000 n +0000533102 00000 n +0000532426 00000 n +0000533516 00000 n +0000533823 00000 n +0000534131 00000 n +0000534439 00000 n +0000534746 00000 n +0000535053 00000 n +0000535361 00000 n +0000535826 00000 n +0000535703 00000 n +0000535602 00000 n +0000537975 00000 n +0000538149 00000 n +0000538309 00000 n +0000538467 00000 n +0000538627 00000 n +0000538790 00000 n +0000538949 00000 n +0000539122 00000 n +0000539280 00000 n +0000539440 00000 n +0000539591 00000 n +0000539809 00000 n +0000540393 00000 n +0000537732 00000 n +0000535868 00000 n +0000539956 00000 n +0000540079 00000 n +0000540142 00000 n +0001914315 00000 n +0000540204 00000 n +0000540267 00000 n +0000540330 00000 n +0000730379 00000 n +0001118598 00000 n +0000544293 00000 n +0000541038 00000 n +0000540852 00000 n +0000540509 00000 n +0000540975 00000 n +0000542934 00000 n +0000543094 00000 n +0000543254 00000 n +0000543447 00000 n +0000543607 00000 n +0000543798 00000 n +0000543993 00000 n +0000548451 00000 n +0000544605 00000 n +0000542736 00000 n +0000541112 00000 n +0000544170 00000 n +0000544355 00000 n +0000544480 00000 n +0000544543 00000 n +0001916331 00000 n +0000548611 00000 n +0000548807 00000 n +0000549039 00000 n +0000549197 00000 n +0000549357 00000 n +0000549517 00000 n +0000549681 00000 n +0000549841 00000 n +0000550233 00000 n +0000550428 00000 n +0000550626 00000 n +0000550785 00000 n +0000550948 00000 n +0000554711 00000 n +0000554871 00000 n +0000551417 00000 n +0000548181 00000 n +0000544721 00000 n +0000551105 00000 n +0000551168 00000 n +0000551231 00000 n +0000551293 00000 n +0000550037 00000 n +0001209561 00000 n +0001279273 00000 n +0001214022 00000 n +0001628436 00000 n +0000555031 00000 n +0000555195 00000 n +0000555354 00000 n +0000555517 00000 n +0000555715 00000 n +0000555869 00000 n +0000556027 00000 n +0000556176 00000 n +0000556326 00000 n +0000556516 00000 n +0000556708 00000 n +0000556866 00000 n +0000557027 00000 n +0000557255 00000 n +0000557415 00000 n +0000557609 00000 n +0000561482 00000 n +0000558107 00000 n +0000554414 00000 n +0000551561 00000 n +0000557794 00000 n +0000557857 00000 n +0000557920 00000 n +0000557982 00000 n +0000558044 00000 n +0001564217 00000 n +0001548570 00000 n +0001674482 00000 n +0001585317 00000 n +0001800176 00000 n +0001631948 00000 n +0001554900 00000 n +0000561634 00000 n +0000561825 00000 n +0000562018 00000 n +0000562247 00000 n +0000562421 00000 n +0000562587 00000 n +0000562748 00000 n +0000563142 00000 n +0000563302 00000 n +0000563498 00000 n +0000563657 00000 n +0000563815 00000 n +0000563974 00000 n +0000564133 00000 n +0000567810 00000 n +0000564668 00000 n +0000561203 00000 n +0000558223 00000 n +0000564290 00000 n +0000564353 00000 n +0000564416 00000 n +0000564479 00000 n +0000562946 00000 n +0000564542 00000 n +0000564605 00000 n +0001800142 00000 n +0001474915 00000 n +0001433152 00000 n +0001209813 00000 n +0000567970 00000 n +0000568130 00000 n +0000568359 00000 n +0000568521 00000 n +0000568689 00000 n +0000568885 00000 n +0000569082 00000 n +0000569279 00000 n +0000569442 00000 n +0000569600 00000 n +0000569756 00000 n +0000569914 00000 n +0000570075 00000 n +0000570423 00000 n +0000570584 00000 n +0000570814 00000 n +0000574618 00000 n +0000574788 00000 n +0000571286 00000 n +0000567513 00000 n +0000564812 00000 n +0000570972 00000 n +0000571035 00000 n +0000571098 00000 n +0000571161 00000 n +0000570250 00000 n +0000676366 00000 n +0001363926 00000 n +0001110378 00000 n +0001380030 00000 n +0001372424 00000 n +0001531698 00000 n +0001020069 00000 n +0000690800 00000 n +0000574944 00000 n +0000575113 00000 n +0000575274 00000 n +0000575472 00000 n +0000575632 00000 n +0000575792 00000 n +0000575951 00000 n +0000580213 00000 n +0000580373 00000 n +0000580533 00000 n +0000576548 00000 n +0000574402 00000 n +0000571430 00000 n +0000576108 00000 n +0000576171 00000 n +0000576234 00000 n +0000576297 00000 n +0000576360 00000 n +0000576422 00000 n +0000576485 00000 n +0001236149 00000 n +0000580693 00000 n +0000580853 00000 n +0000581012 00000 n +0000581172 00000 n +0000581332 00000 n +0000581527 00000 n +0000581724 00000 n +0000581921 00000 n +0000582082 00000 n +0000586501 00000 n +0000586731 00000 n +0000582742 00000 n +0000579970 00000 n +0000576664 00000 n +0000582243 00000 n +0000582306 00000 n +0000582369 00000 n +0000582430 00000 n +0000582493 00000 n +0000582616 00000 n +0000582679 00000 n +0001916457 00000 n +0001172491 00000 n +0000586928 00000 n +0000587086 00000 n +0000587248 00000 n +0000587641 00000 n +0000587966 00000 n +0000588130 00000 n +0000588294 00000 n +0000588490 00000 n +0000588688 00000 n +0000589082 00000 n +0000589279 00000 n +0000589477 00000 n +0000589675 00000 n +0000589873 00000 n +0000590069 00000 n +0000590267 00000 n +0000590660 00000 n +0000590854 00000 n +0000591050 00000 n +0000591248 00000 n +0000595283 00000 n +0000595444 00000 n +0000591664 00000 n +0000586132 00000 n +0000582858 00000 n +0000591412 00000 n +0000591475 00000 n +0000587446 00000 n +0000587804 00000 n +0000588886 00000 n +0000590464 00000 n +0000591538 00000 n +0000591601 00000 n +0000690989 00000 n +0001298483 00000 n +0001317335 00000 n +0001298735 00000 n +0001298609 00000 n +0001293399 00000 n +0001303571 00000 n +0001287509 00000 n +0001195616 00000 n +0001247403 00000 n +0001452456 00000 n +0001302813 00000 n +0001293272 00000 n +0000595605 00000 n +0000595768 00000 n +0000595929 00000 n +0000596090 00000 n +0000596249 00000 n +0000596408 00000 n +0000596568 00000 n +0000596726 00000 n +0000596886 00000 n +0000599837 00000 n +0000599997 00000 n +0000600158 00000 n +0000597490 00000 n +0000595049 00000 n +0000591808 00000 n +0000597049 00000 n +0000597112 00000 n +0000597175 00000 n +0000597238 00000 n +0000597301 00000 n +0000597364 00000 n +0000597427 00000 n +0000600316 00000 n +0000600475 00000 n +0000600633 00000 n +0000600831 00000 n +0000601092 00000 n +0000599639 00000 n +0000597620 00000 n +0000601029 00000 n +0001227171 00000 n +0000602703 00000 n +0000602394 00000 n +0000601208 00000 n +0000602517 00000 n +0000602641 00000 n +0000603326 00000 n +0000603140 00000 n +0000602791 00000 n +0000603263 00000 n +0000605208 00000 n +0000605938 00000 n +0000605064 00000 n +0000603400 00000 n +0000605374 00000 n +0000605498 00000 n +0000605560 00000 n +0000605623 00000 n +0000605686 00000 n +0000605749 00000 n +0000605812 00000 n +0000605875 00000 n +0001916583 00000 n +0001353448 00000 n +0000606992 00000 n +0000606743 00000 n +0000606026 00000 n +0000606866 00000 n +0000606929 00000 n +0000608002 00000 n +0000608327 00000 n +0000608500 00000 n +0000608845 00000 n +0000607831 00000 n +0000607094 00000 n +0000608659 00000 n +0000608783 00000 n +0000608166 00000 n +0000616017 00000 n +0000609498 00000 n +0000609312 00000 n +0000608961 00000 n +0000609435 00000 n +0000611594 00000 n +0000611764 00000 n +0000611932 00000 n +0000612106 00000 n +0000612276 00000 n +0000612439 00000 n +0000612668 00000 n +0000612829 00000 n +0000612992 00000 n +0000613156 00000 n +0000613319 00000 n +0000613480 00000 n +0000613632 00000 n +0000613947 00000 n +0000614106 00000 n +0000614301 00000 n +0000614529 00000 n +0000614758 00000 n +0000615213 00000 n +0000615440 00000 n +0000615665 00000 n +0000619714 00000 n +0000619942 00000 n +0000620171 00000 n +0000620400 00000 n +0000620629 00000 n +0000620858 00000 n +0000621316 00000 n +0000621544 00000 n +0000621773 00000 n +0000622002 00000 n +0000622461 00000 n +0000622690 00000 n +0000622920 00000 n +0000623149 00000 n +0000623379 00000 n +0000623608 00000 n +0000624065 00000 n +0000624293 00000 n +0000624750 00000 n +0000624978 00000 n +0000625436 00000 n +0000625666 00000 n +0000616265 00000 n +0000611252 00000 n +0000609572 00000 n +0000615893 00000 n +0000616139 00000 n +0001915394 00000 n +0000613791 00000 n +0000616202 00000 n +0000614987 00000 n +0001009161 00000 n +0000950757 00000 n +0000650251 00000 n +0000663899 00000 n +0000663962 00000 n +0000664025 00000 n +0000664088 00000 n +0000664151 00000 n +0000664214 00000 n +0000626123 00000 n +0000626283 00000 n +0000626479 00000 n +0000626709 00000 n +0000626939 00000 n +0000627169 00000 n +0000627363 00000 n +0000627592 00000 n +0000627822 00000 n +0000628052 00000 n +0000628282 00000 n +0000628511 00000 n +0000628741 00000 n +0000628971 00000 n +0000629166 00000 n +0000629394 00000 n +0000629623 00000 n +0000629852 00000 n +0000630081 00000 n +0000630309 00000 n +0000630538 00000 n +0000630767 00000 n +0000630995 00000 n +0000631224 00000 n +0000631454 00000 n +0000631683 00000 n +0000631913 00000 n +0000632142 00000 n +0000632372 00000 n +0000632831 00000 n +0000633060 00000 n +0000633288 00000 n +0000633517 00000 n +0000633976 00000 n +0000634206 00000 n +0000634435 00000 n +0000634631 00000 n +0000634860 00000 n +0000635319 00000 n +0000635776 00000 n +0000636004 00000 n +0000636233 00000 n +0000636463 00000 n +0000636693 00000 n +0000637151 00000 n +0000637380 00000 n +0000637839 00000 n +0000638297 00000 n +0000638527 00000 n +0000638722 00000 n +0000638883 00000 n +0000639051 00000 n +0000639493 00000 n +0000618787 00000 n +0000616396 00000 n +0000639367 00000 n +0000621088 00000 n +0000622232 00000 n +0000623838 00000 n +0000624521 00000 n +0000625207 00000 n +0000625896 00000 n +0000632602 00000 n +0000633747 00000 n +0000635090 00000 n +0000635549 00000 n +0000636923 00000 n +0000637610 00000 n +0000638069 00000 n +0000639430 00000 n +0000639209 00000 n +0000664276 00000 n +0000664339 00000 n +0000664402 00000 n +0000664465 00000 n +0000675925 00000 n +0000675988 00000 n +0000676051 00000 n +0000676114 00000 n +0000676177 00000 n +0000676240 00000 n +0000676303 00000 n +0000683514 00000 n +0000683577 00000 n +0000683640 00000 n +0000683703 00000 n +0000683766 00000 n +0000683829 00000 n +0000683892 00000 n +0000690491 00000 n +0000690554 00000 n +0000690616 00000 n +0000649938 00000 n +0000650062 00000 n +0000650125 00000 n +0000650188 00000 n +0000690679 00000 n +0000690863 00000 n +0000690926 00000 n +0000691052 00000 n +0000691115 00000 n +0000691178 00000 n +0000642750 00000 n +0000642874 00000 n +0000642937 00000 n +0000643000 00000 n +0000643062 00000 n +0000643125 00000 n +0000643188 00000 n +0000643251 00000 n +0000643314 00000 n +0000643377 00000 n +0000643440 00000 n +0000643503 00000 n +0000643566 00000 n +0000643629 00000 n +0000643692 00000 n +0000643755 00000 n +0000643818 00000 n +0000643881 00000 n +0000643943 00000 n +0000644006 00000 n +0000644069 00000 n +0000644132 00000 n +0000644195 00000 n +0000649183 00000 n +0000649246 00000 n +0000649309 00000 n +0000649372 00000 n +0000649435 00000 n +0000649498 00000 n +0000649561 00000 n +0000649623 00000 n +0000649686 00000 n +0000649749 00000 n +0000649812 00000 n +0000649875 00000 n +0000691302 00000 n +0000642246 00000 n +0000642406 00000 n +0000647575 00000 n +0000644319 00000 n +0000642093 00000 n +0000639638 00000 n +0000642566 00000 n +0001914851 00000 n +0001916709 00000 n +0000647769 00000 n +0000647928 00000 n +0000648088 00000 n +0000648247 00000 n +0000648567 00000 n +0000648961 00000 n +0000654414 00000 n +0000654643 00000 n +0000654872 00000 n +0000655332 00000 n +0000650375 00000 n +0000647359 00000 n +0000644464 00000 n +0000649120 00000 n +0000648407 00000 n +0000648764 00000 n +0000655562 00000 n +0000655791 00000 n +0000656021 00000 n +0000656251 00000 n +0000656480 00000 n +0000656940 00000 n +0000657170 00000 n +0000657400 00000 n +0000657719 00000 n +0000657916 00000 n +0000658145 00000 n +0000658464 00000 n +0000658693 00000 n +0000658851 00000 n +0000659048 00000 n +0000659278 00000 n +0000659438 00000 n +0000659667 00000 n +0000659865 00000 n +0000660095 00000 n +0000660325 00000 n +0000660555 00000 n +0000660753 00000 n +0000661213 00000 n +0000661443 00000 n +0000661673 00000 n +0000661903 00000 n +0000662101 00000 n +0000662299 00000 n +0000662529 00000 n +0000662688 00000 n +0000662918 00000 n +0000663378 00000 n +0000663608 00000 n +0000668949 00000 n +0000669109 00000 n +0000669337 00000 n +0000664528 00000 n +0000653883 00000 n +0000650534 00000 n +0000663836 00000 n +0000655102 00000 n +0000656710 00000 n +0000657559 00000 n +0000658305 00000 n +0000660983 00000 n +0000663148 00000 n +0000878196 00000 n +0001268297 00000 n +0001800108 00000 n +0001187742 00000 n +0001223174 00000 n +0000669497 00000 n +0000669891 00000 n +0000670089 00000 n +0000670247 00000 n +0000670477 00000 n +0000670672 00000 n +0000671066 00000 n +0000671259 00000 n +0000671447 00000 n +0000671677 00000 n +0000671839 00000 n +0000672027 00000 n +0000672189 00000 n +0000672509 00000 n +0000672669 00000 n +0000672867 00000 n +0000673097 00000 n +0000673416 00000 n +0000673612 00000 n +0000673810 00000 n +0000674270 00000 n +0000674500 00000 n +0000674661 00000 n +0000674821 00000 n +0000674982 00000 n +0000675180 00000 n +0000675378 00000 n +0000675539 00000 n +0000675700 00000 n +0000680206 00000 n +0000680404 00000 n +0000676428 00000 n +0000668481 00000 n +0000664688 00000 n +0000675862 00000 n +0000669693 00000 n +0000670868 00000 n +0000672349 00000 n +0000673256 00000 n +0000674040 00000 n +0001287383 00000 n +0001580005 00000 n +0001563705 00000 n +0001303066 00000 n +0001302940 00000 n +0000680574 00000 n +0000680734 00000 n +0000680893 00000 n +0000681123 00000 n +0000681309 00000 n +0000681496 00000 n +0000681659 00000 n +0000681856 00000 n +0000682019 00000 n +0000682182 00000 n +0000682379 00000 n +0000682576 00000 n +0000682806 00000 n +0000683035 00000 n +0000683265 00000 n +0000687531 00000 n +0000687690 00000 n +0000687856 00000 n +0000683955 00000 n +0000679918 00000 n +0000676574 00000 n +0000683451 00000 n +0001330188 00000 n +0001283987 00000 n +0000688022 00000 n +0000688394 00000 n +0000688554 00000 n +0000688715 00000 n +0000688876 00000 n +0000689037 00000 n +0000689200 00000 n +0000689363 00000 n +0000689561 00000 n +0000689880 00000 n +0000690040 00000 n +0000690235 00000 n +0000693058 00000 n +0000693218 00000 n +0000691426 00000 n +0000687243 00000 n +0000684100 00000 n +0000690428 00000 n +0000688208 00000 n +0001915032 00000 n +0000689722 00000 n +0001633361 00000 n +0000700684 00000 n +0001292765 00000 n +0000693378 00000 n +0000693541 00000 n +0000693745 00000 n +0000693950 00000 n +0000694158 00000 n +0000694426 00000 n +0000692860 00000 n +0000691586 00000 n +0000694363 00000 n +0001916835 00000 n +0001101342 00000 n +0001392636 00000 n +0001346677 00000 n +0001353322 00000 n +0000695589 00000 n +0000695764 00000 n +0000695924 00000 n +0000696090 00000 n +0000696560 00000 n +0000695418 00000 n +0000694557 00000 n +0000696249 00000 n +0000696312 00000 n +0000696436 00000 n +0001105463 00000 n +0000697523 00000 n +0000697698 00000 n +0000697883 00000 n +0000698069 00000 n +0000698272 00000 n +0000698491 00000 n +0000698743 00000 n +0000698995 00000 n +0000699247 00000 n +0000700745 00000 n +0000697307 00000 n +0000696677 00000 n +0000699499 00000 n +0000699623 00000 n +0000699747 00000 n +0000699810 00000 n +0000699934 00000 n +0000699997 00000 n +0000700122 00000 n +0000700185 00000 n +0000700310 00000 n +0000700435 00000 n +0000700497 00000 n +0000700560 00000 n +0000700622 00000 n +0000935417 00000 n +0000703523 00000 n +0000703718 00000 n +0000703934 00000 n +0000704120 00000 n +0000704328 00000 n +0000704514 00000 n +0000704709 00000 n +0000704916 00000 n +0000705121 00000 n +0000705306 00000 n +0000705501 00000 n +0000705712 00000 n +0000705898 00000 n +0000706092 00000 n +0000706306 00000 n +0000706490 00000 n +0000706682 00000 n +0000706897 00000 n +0000707083 00000 n +0000707276 00000 n +0000707480 00000 n +0000707666 00000 n +0000707861 00000 n +0000708068 00000 n +0000708279 00000 n +0000708485 00000 n +0000708689 00000 n +0000708872 00000 n +0000709094 00000 n +0000709289 00000 n +0000709494 00000 n +0000709703 00000 n +0000709932 00000 n +0000710193 00000 n +0000710455 00000 n +0000710978 00000 n +0000711240 00000 n +0000711501 00000 n +0000711763 00000 n +0000712286 00000 n +0000712547 00000 n +0000712808 00000 n +0000713070 00000 n +0000713593 00000 n +0000713821 00000 n +0000714081 00000 n +0000714343 00000 n +0000714865 00000 n +0000715126 00000 n +0000715387 00000 n +0000715649 00000 n +0000716171 00000 n +0000716329 00000 n +0000719854 00000 n +0000720083 00000 n +0000720344 00000 n +0000720606 00000 n +0000720867 00000 n +0000721390 00000 n +0000721651 00000 n +0000721913 00000 n +0000722175 00000 n +0000722436 00000 n +0000722697 00000 n +0000722959 00000 n +0000723221 00000 n +0000716924 00000 n +0000702866 00000 n +0000700862 00000 n +0000716485 00000 n +0000716610 00000 n +0000716673 00000 n +0000716798 00000 n +0000716861 00000 n +0000710717 00000 n +0000712025 00000 n +0000713332 00000 n +0000714605 00000 n +0000715911 00000 n +0000736285 00000 n +0000765495 00000 n +0000775381 00000 n +0000823927 00000 n +0000830227 00000 n +0000834143 00000 n +0000849435 00000 n +0000855088 00000 n +0000859433 00000 n +0000942869 00000 n +0001034872 00000 n +0000724537 00000 n +0000724662 00000 n +0000724725 00000 n +0000724788 00000 n +0000724851 00000 n +0000724914 00000 n +0000724977 00000 n +0000725040 00000 n +0000725103 00000 n +0000725166 00000 n +0000725229 00000 n +0000725292 00000 n +0000729814 00000 n +0000729939 00000 n +0000730002 00000 n +0000730065 00000 n +0000730128 00000 n +0000730191 00000 n +0000730253 00000 n +0000730316 00000 n +0000723482 00000 n +0000723668 00000 n +0000723854 00000 n +0000724040 00000 n +0000724226 00000 n +0000725855 00000 n +0000719548 00000 n +0000717069 00000 n +0000724412 00000 n +0000721129 00000 n +0000725355 00000 n +0000725480 00000 n +0000725542 00000 n +0000725605 00000 n +0000725668 00000 n +0000725731 00000 n +0000725793 00000 n +0000729436 00000 n +0000729499 00000 n +0000729562 00000 n +0000729625 00000 n +0000729688 00000 n +0000729751 00000 n +0000728060 00000 n +0000728246 00000 n +0000728429 00000 n +0000728645 00000 n +0000728820 00000 n +0000728994 00000 n +0000729188 00000 n +0000731917 00000 n +0000731067 00000 n +0000727862 00000 n +0000726015 00000 n +0000729373 00000 n +0000730504 00000 n +0000730567 00000 n +0000730692 00000 n +0000730817 00000 n +0000730942 00000 n +0000731005 00000 n +0000732118 00000 n +0000732507 00000 n +0000731764 00000 n +0000731199 00000 n +0000732319 00000 n +0000732444 00000 n +0001916961 00000 n +0001601176 00000 n +0000733158 00000 n +0000732972 00000 n +0000732624 00000 n +0000733095 00000 n +0000734487 00000 n +0000734687 00000 n +0000734886 00000 n +0000735086 00000 n +0000735282 00000 n +0000739049 00000 n +0000736347 00000 n +0000734307 00000 n +0000733232 00000 n +0000735475 00000 n +0000735600 00000 n +0000735723 00000 n +0000735910 00000 n +0000736035 00000 n +0000736160 00000 n +0001600662 00000 n +0000739234 00000 n +0000739484 00000 n +0000739734 00000 n +0000739985 00000 n +0000740235 00000 n +0000740486 00000 n +0000740736 00000 n +0000740964 00000 n +0000741215 00000 n +0000741466 00000 n +0000741717 00000 n +0000741967 00000 n +0000742153 00000 n +0000742403 00000 n +0000742587 00000 n +0000742771 00000 n +0000742957 00000 n +0000743142 00000 n +0000744076 00000 n +0000738734 00000 n +0000736450 00000 n +0000743514 00000 n +0000743639 00000 n +0000743702 00000 n +0000743329 00000 n +0000743889 00000 n +0000744014 00000 n +0000748011 00000 n +0000748136 00000 n +0000747886 00000 n +0000748261 00000 n +0000748699 00000 n +0000748448 00000 n +0000748573 00000 n +0000748824 00000 n +0000754871 00000 n +0000745051 00000 n +0000744803 00000 n +0000744235 00000 n +0000744926 00000 n +0000747390 00000 n +0000747576 00000 n +0000751476 00000 n +0000748886 00000 n +0000747237 00000 n +0000745168 00000 n +0000747761 00000 n +0000751662 00000 n +0000751821 00000 n +0000752025 00000 n +0000752228 00000 n +0000752432 00000 n +0000752636 00000 n +0000752841 00000 n +0000753044 00000 n +0000753244 00000 n +0000753449 00000 n +0000753654 00000 n +0000753859 00000 n +0000754063 00000 n +0000754223 00000 n +0000754428 00000 n +0000754587 00000 n +0000757847 00000 n +0000758006 00000 n +0000755308 00000 n +0000751188 00000 n +0000749060 00000 n +0000754746 00000 n +0000754996 00000 n +0000755121 00000 n +0000755183 00000 n +0001917087 00000 n +0000758981 00000 n +0000759106 00000 n +0000759418 00000 n +0000759543 00000 n +0000759293 00000 n +0000759668 00000 n +0001699376 00000 n +0000765120 00000 n +0000764869 00000 n +0000764994 00000 n +0000765245 00000 n +0000765370 00000 n +0000758165 00000 n +0000758324 00000 n +0000758696 00000 n +0000759853 00000 n +0000757658 00000 n +0000755439 00000 n +0000758856 00000 n +0000758511 00000 n +0000762210 00000 n +0000762369 00000 n +0000762529 00000 n +0000762715 00000 n +0000762910 00000 n +0000763117 00000 n +0000763358 00000 n +0000763599 00000 n +0000763841 00000 n +0000764083 00000 n +0000764324 00000 n +0000764566 00000 n +0000767951 00000 n +0000768192 00000 n +0000765683 00000 n +0000761967 00000 n +0000760027 00000 n +0000764806 00000 n +0000765620 00000 n +0000771446 00000 n +0000813561 00000 n +0000771633 00000 n +0000771758 00000 n +0000774386 00000 n +0000771883 00000 n +0000772008 00000 n +0000768434 00000 n +0000768675 00000 n +0000768917 00000 n +0000769159 00000 n +0000769401 00000 n +0000769587 00000 n +0000769782 00000 n +0000769989 00000 n +0000770173 00000 n +0000770652 00000 n +0000770893 00000 n +0000772070 00000 n +0000767690 00000 n +0000765814 00000 n +0000771133 00000 n +0000771196 00000 n +0000771259 00000 n +0000770413 00000 n +0000774823 00000 n +0000774948 00000 n +0000774698 00000 n +0000774573 00000 n +0000775135 00000 n +0000775260 00000 n +0000817733 00000 n +0000817608 00000 n +0000773885 00000 n +0000774069 00000 n +0000777922 00000 n +0000778163 00000 n +0000778402 00000 n +0000775505 00000 n +0000773732 00000 n +0000772244 00000 n +0000774261 00000 n +0000778623 00000 n +0000778864 00000 n +0000779080 00000 n +0000779264 00000 n +0000779457 00000 n +0000779698 00000 n +0000779939 00000 n +0000780179 00000 n +0000780419 00000 n +0000780660 00000 n +0000780901 00000 n +0000781142 00000 n +0000781383 00000 n +0000781624 00000 n +0000781865 00000 n +0000782106 00000 n +0000782346 00000 n +0000782541 00000 n +0000782782 00000 n +0000782977 00000 n +0000783217 00000 n +0000783458 00000 n +0000783666 00000 n +0000783907 00000 n +0000784115 00000 n +0000784356 00000 n +0000784596 00000 n +0000784803 00000 n +0000785044 00000 n +0000785249 00000 n +0000785488 00000 n +0000785690 00000 n +0000789227 00000 n +0000789467 00000 n +0000789708 00000 n +0000786118 00000 n +0000777472 00000 n +0000775635 00000 n +0000785929 00000 n +0000785992 00000 n +0000786055 00000 n +0000799700 00000 n +0000795127 00000 n +0000799825 00000 n +0000810380 00000 n +0000799950 00000 n +0000810755 00000 n +0000813686 00000 n +0000817171 00000 n +0000800198 00000 n +0000805210 00000 n +0000805335 00000 n +0000810505 00000 n +0000810631 00000 n +0000795314 00000 n +0000804960 00000 n +0000800075 00000 n +0000813811 00000 n +0000813936 00000 n +0000805085 00000 n +0000817483 00000 n +0000817358 00000 n +0000789946 00000 n +0000790174 00000 n +0000790414 00000 n +0000790621 00000 n +0000790849 00000 n +0000791090 00000 n +0000791331 00000 n +0000791571 00000 n +0000791812 00000 n +0000791998 00000 n +0000792184 00000 n +0000792400 00000 n +0000792640 00000 n +0000792881 00000 n +0000793120 00000 n +0000793306 00000 n +0000793500 00000 n +0000793722 00000 n +0000793908 00000 n +0000794103 00000 n +0000794309 00000 n +0000794503 00000 n +0000794685 00000 n +0000798125 00000 n +0000795439 00000 n +0000788858 00000 n +0000786249 00000 n +0000794877 00000 n +0000794940 00000 n +0001917213 00000 n +0000823552 00000 n +0000823427 00000 n +0000823051 00000 n +0000823677 00000 n +0000823301 00000 n +0000822926 00000 n +0000818045 00000 n +0000817920 00000 n +0000818170 00000 n +0000823802 00000 n +0000823176 00000 n +0000798310 00000 n +0000798494 00000 n +0000798680 00000 n +0000798866 00000 n +0000799061 00000 n +0000799247 00000 n +0000799442 00000 n +0000800323 00000 n +0000797918 00000 n +0000795613 00000 n +0000799637 00000 n +0000802842 00000 n +0000803036 00000 n +0000803220 00000 n +0000803401 00000 n +0000803592 00000 n +0000803777 00000 n +0000803961 00000 n +0000804146 00000 n +0000804331 00000 n +0000804526 00000 n +0000804711 00000 n +0000805397 00000 n +0000802608 00000 n +0000800469 00000 n +0000804897 00000 n +0000806399 00000 n +0000806151 00000 n +0000805529 00000 n +0000806274 00000 n +0000808791 00000 n +0000809003 00000 n +0000809249 00000 n +0000809461 00000 n +0000809673 00000 n +0000809919 00000 n +0000810105 00000 n +0000810817 00000 n +0000808593 00000 n +0000806516 00000 n +0000810317 00000 n +0000855649 00000 n +0000813046 00000 n +0000813241 00000 n +0000814061 00000 n +0000812893 00000 n +0000810949 00000 n +0000813436 00000 n +0000816482 00000 n +0000816738 00000 n +0000816924 00000 n +0000818232 00000 n +0000816320 00000 n +0000814221 00000 n +0000817108 00000 n +0001917339 00000 n +0000950631 00000 n +0000820251 00000 n +0000820506 00000 n +0000820712 00000 n +0000820898 00000 n +0000821093 00000 n +0000821338 00000 n +0000821583 00000 n +0000821828 00000 n +0000822073 00000 n +0000822316 00000 n +0000822559 00000 n +0000825790 00000 n +0000825976 00000 n +0000824116 00000 n +0000820017 00000 n +0000818392 00000 n +0000822801 00000 n +0000824053 00000 n +0000946451 00000 n +0000829352 00000 n +0000830102 00000 n +0000829602 00000 n +0000829477 00000 n +0000829727 00000 n +0000829852 00000 n +0000829977 00000 n +0000826171 00000 n +0000826356 00000 n +0000826550 00000 n +0000826799 00000 n +0000827048 00000 n +0000827296 00000 n +0000827545 00000 n +0000827792 00000 n +0000828041 00000 n +0000828290 00000 n +0000828539 00000 n +0000828788 00000 n +0000828972 00000 n +0000830477 00000 n +0000825520 00000 n +0000824232 00000 n +0000829165 00000 n +0000830352 00000 n +0000833145 00000 n +0000833770 00000 n +0000833893 00000 n +0000833395 00000 n +0000833645 00000 n +0000833270 00000 n +0000834018 00000 n +0000833020 00000 n +0000833520 00000 n +0000832022 00000 n +0000832208 00000 n +0000832401 00000 n +0000832649 00000 n +0000836166 00000 n +0000834331 00000 n +0000831851 00000 n +0000830594 00000 n +0000832895 00000 n +0000834268 00000 n +0000840334 00000 n +0000840209 00000 n +0000836414 00000 n +0000836663 00000 n +0000836911 00000 n +0000837160 00000 n +0000837408 00000 n +0000837657 00000 n +0000837905 00000 n +0000838154 00000 n +0000838403 00000 n +0000838652 00000 n +0000838901 00000 n +0000839150 00000 n +0000839398 00000 n +0000839647 00000 n +0000839831 00000 n +0000840646 00000 n +0000835887 00000 n +0000834448 00000 n +0000840022 00000 n +0000840459 00000 n +0000840584 00000 n +0000842360 00000 n +0000842235 00000 n +0000842986 00000 n +0000842860 00000 n +0000843486 00000 n +0000842485 00000 n +0000842610 00000 n +0000842735 00000 n +0000843361 00000 n +0000843236 00000 n +0000843111 00000 n +0000842110 00000 n +0000843548 00000 n +0000841862 00000 n +0000840763 00000 n +0000841985 00000 n +0000845747 00000 n +0000845933 00000 n +0000846128 00000 n +0000846335 00000 n +0000846573 00000 n +0000846812 00000 n +0000847050 00000 n +0000847266 00000 n +0000847505 00000 n +0000847691 00000 n +0000847930 00000 n +0000848115 00000 n +0000848353 00000 n +0000848538 00000 n +0000848724 00000 n +0000848919 00000 n +0000849126 00000 n +0000850560 00000 n +0000845459 00000 n +0000843650 00000 n +0000849310 00000 n +0000849561 00000 n +0000849624 00000 n +0000849687 00000 n +0000849874 00000 n +0000850061 00000 n +0000850186 00000 n +0000850373 00000 n +0000850498 00000 n +0001917465 00000 n +0000854963 00000 n +0000852683 00000 n +0000852869 00000 n +0000853055 00000 n +0000853301 00000 n +0000853547 00000 n +0000853792 00000 n +0000854038 00000 n +0000854284 00000 n +0000854530 00000 n +0000855711 00000 n +0000852467 00000 n +0000850734 00000 n +0000854776 00000 n +0000855212 00000 n +0000855399 00000 n +0000855524 00000 n +0000858433 00000 n +0000858558 00000 n +0000858308 00000 n +0000858683 00000 n +0000857172 00000 n +0000857382 00000 n +0000857592 00000 n +0000857798 00000 n +0000858000 00000 n +0000862253 00000 n +0000859558 00000 n +0000856992 00000 n +0000855842 00000 n +0000858183 00000 n +0000858808 00000 n +0000858933 00000 n +0000859058 00000 n +0000859183 00000 n +0000859308 00000 n +0000862492 00000 n +0000862732 00000 n +0000862971 00000 n +0000863211 00000 n +0000863450 00000 n +0000863636 00000 n +0000863875 00000 n +0000864115 00000 n +0000864354 00000 n +0000864594 00000 n +0000864833 00000 n +0000865073 00000 n +0000865312 00000 n +0000865551 00000 n +0000865737 00000 n +0000865977 00000 n +0000866163 00000 n +0000866403 00000 n +0000866607 00000 n +0000867346 00000 n +0000861938 00000 n +0000859675 00000 n +0000866792 00000 n +0000866855 00000 n +0000867042 00000 n +0000867159 00000 n +0000867284 00000 n +0000877699 00000 n +0000877823 00000 n +0000872514 00000 n +0000872264 00000 n +0000872389 00000 n +0000872140 00000 n +0000872015 00000 n +0000877946 00000 n +0000878071 00000 n +0000872888 00000 n +0000872762 00000 n +0000872638 00000 n +0000869848 00000 n +0000870034 00000 n +0000870220 00000 n +0000870406 00000 n +0000870592 00000 n +0000870967 00000 n +0000871152 00000 n +0000871338 00000 n +0000871523 00000 n +0000871706 00000 n +0000872951 00000 n +0000869614 00000 n +0000867463 00000 n +0000871890 00000 n +0000870781 00000 n +0000875356 00000 n +0000875514 00000 n +0000875673 00000 n +0000875867 00000 n +0000876061 00000 n +0000876255 00000 n +0000876449 00000 n +0000876643 00000 n +0000876836 00000 n +0000876996 00000 n +0000877190 00000 n +0000877383 00000 n +0000881330 00000 n +0000878382 00000 n +0000875113 00000 n +0000873095 00000 n +0000877574 00000 n +0000878319 00000 n +0000897524 00000 n +0000897649 00000 n +0000893322 00000 n +0000893197 00000 n +0000889106 00000 n +0000889231 00000 n +0000888857 00000 n +0000888732 00000 n +0000888482 00000 n +0000881524 00000 n +0000881718 00000 n +0000881912 00000 n +0000882106 00000 n +0000882300 00000 n +0000882494 00000 n +0000882654 00000 n +0000882847 00000 n +0000883007 00000 n +0000883201 00000 n +0000883395 00000 n +0000883589 00000 n +0000883783 00000 n +0000883977 00000 n +0000884171 00000 n +0000884365 00000 n +0000884559 00000 n +0000884753 00000 n +0000884947 00000 n +0000885141 00000 n +0000885335 00000 n +0000887478 00000 n +0000887636 00000 n +0000885589 00000 n +0000880997 00000 n +0000878499 00000 n +0000885526 00000 n +0001917591 00000 n +0000887982 00000 n +0000898024 00000 n +0000898274 00000 n +0000897399 00000 n +0000888607 00000 n +0000897274 00000 n +0000893448 00000 n +0000888232 00000 n +0000888107 00000 n +0000897900 00000 n +0000897774 00000 n +0000893947 00000 n +0000893822 00000 n +0000894072 00000 n +0000893698 00000 n +0000893573 00000 n +0000888981 00000 n +0000888357 00000 n +0000898150 00000 n +0000893072 00000 n +0000891616 00000 n +0000889293 00000 n +0000887325 00000 n +0000885720 00000 n +0000887795 00000 n +0000891776 00000 n +0000891935 00000 n +0000892093 00000 n +0000892253 00000 n +0000892628 00000 n +0000892787 00000 n +0000894134 00000 n +0000891409 00000 n +0000889395 00000 n +0000892947 00000 n +0000892442 00000 n +0000896673 00000 n +0000896832 00000 n +0000896990 00000 n +0000898336 00000 n +0000896511 00000 n +0000894278 00000 n +0000897149 00000 n +0000900674 00000 n +0000900833 00000 n +0000901027 00000 n +0000901221 00000 n +0000901415 00000 n +0000901608 00000 n +0000901802 00000 n +0000901996 00000 n +0000902189 00000 n +0000902382 00000 n +0000902575 00000 n +0000902769 00000 n +0000902963 00000 n +0000903156 00000 n +0000903349 00000 n +0000903508 00000 n +0000903701 00000 n +0000903861 00000 n +0000904398 00000 n +0000900377 00000 n +0000898466 00000 n +0000904020 00000 n +0000904146 00000 n +0000904272 00000 n +0000907771 00000 n +0000907897 00000 n +0000914443 00000 n +0000908401 00000 n +0000907141 00000 n +0000908275 00000 n +0000907393 00000 n +0000908023 00000 n +0000908149 00000 n +0000914317 00000 n +0000914569 00000 n +0000907645 00000 n +0000907519 00000 n +0000907267 00000 n +0000906338 00000 n +0000906498 00000 n +0000906657 00000 n +0000906817 00000 n +0000908463 00000 n +0000906167 00000 n +0000904529 00000 n +0000907015 00000 n +0001071711 00000 n +0000910810 00000 n +0000911004 00000 n +0000911164 00000 n +0000911357 00000 n +0000911518 00000 n +0000911712 00000 n +0000911905 00000 n +0000912099 00000 n +0000912292 00000 n +0000912486 00000 n +0000912680 00000 n +0000912871 00000 n +0000913065 00000 n +0000913259 00000 n +0000913452 00000 n +0000913646 00000 n +0000913840 00000 n +0000914000 00000 n +0000917156 00000 n +0000914883 00000 n +0000910513 00000 n +0000908579 00000 n +0000914191 00000 n +0000914695 00000 n +0000914820 00000 n +0001917717 00000 n +0000918231 00000 n +0000918483 00000 n +0000918357 00000 n +0000917601 00000 n +0000917727 00000 n +0000917853 00000 n +0000917979 00000 n +0000918609 00000 n +0000921182 00000 n +0000921560 00000 n +0000921686 00000 n +0000921434 00000 n +0000921308 00000 n +0000918105 00000 n +0000918735 00000 n +0000917012 00000 n +0000915000 00000 n +0000917349 00000 n +0000917412 00000 n +0000924684 00000 n +0000920959 00000 n +0000921812 00000 n +0000920815 00000 n +0000918895 00000 n +0000921119 00000 n +0000923584 00000 n +0000923778 00000 n +0000923973 00000 n +0000924168 00000 n +0000924363 00000 n +0000928382 00000 n +0000926006 00000 n +0000923404 00000 n +0000921958 00000 n +0000924558 00000 n +0000924810 00000 n +0000924936 00000 n +0000924999 00000 n +0000925188 00000 n +0000925376 00000 n +0000925502 00000 n +0000925628 00000 n +0000925754 00000 n +0000925880 00000 n +0000928588 00000 n +0000928748 00000 n +0000928949 00000 n +0000929150 00000 n +0000929350 00000 n +0000929551 00000 n +0000929752 00000 n +0000929953 00000 n +0000930112 00000 n +0000930313 00000 n +0000930514 00000 n +0000930715 00000 n +0000931504 00000 n +0000928130 00000 n +0000926151 00000 n +0000930874 00000 n +0000930937 00000 n +0000931126 00000 n +0000931252 00000 n +0000931378 00000 n +0000934915 00000 n +0000934663 00000 n +0000934537 00000 n +0000935041 00000 n +0000935292 00000 n +0000935166 00000 n +0000934285 00000 n +0000934789 00000 n +0000934411 00000 n +0000933353 00000 n +0000933550 00000 n +0000933708 00000 n +0000933942 00000 n +0000935606 00000 n +0000933182 00000 n +0000931650 00000 n +0000934159 00000 n +0000935543 00000 n +0001074890 00000 n +0000942302 00000 n +0000938120 00000 n +0000938279 00000 n +0000938472 00000 n +0000938632 00000 n +0000938865 00000 n +0000939060 00000 n +0000939267 00000 n +0000939523 00000 n +0000939778 00000 n +0000940034 00000 n +0000940208 00000 n +0000940464 00000 n +0000940691 00000 n +0000940898 00000 n +0000941154 00000 n +0000941410 00000 n +0000941666 00000 n +0000941922 00000 n +0000945484 00000 n +0000945679 00000 n +0000943058 00000 n +0000937823 00000 n +0000935708 00000 n +0000942176 00000 n +0000942428 00000 n +0000942554 00000 n +0000942743 00000 n +0000942995 00000 n +0001917843 00000 n +0000946827 00000 n +0000946701 00000 n +0000946577 00000 n +0000946953 00000 n +0000947078 00000 n +0000950505 00000 n +0000950379 00000 n +0000945886 00000 n +0000946092 00000 n +0000947204 00000 n +0000945313 00000 n +0000943204 00000 n +0000946263 00000 n +0000949941 00000 n +0000950115 00000 n +0000954102 00000 n +0000954305 00000 n +0000950946 00000 n +0000949788 00000 n +0000947336 00000 n +0000950316 00000 n +0000950883 00000 n +0000972953 00000 n +0000954710 00000 n +0000954913 00000 n +0000955115 00000 n +0000955277 00000 n +0000955480 00000 n +0000955711 00000 n +0000955871 00000 n +0000956073 00000 n +0000956303 00000 n +0000956463 00000 n +0000956666 00000 n +0000956869 00000 n +0000957072 00000 n +0000957275 00000 n +0000957477 00000 n +0000957680 00000 n +0000957876 00000 n +0000958036 00000 n +0000958441 00000 n +0000958643 00000 n +0000958839 00000 n +0000959242 00000 n +0000959445 00000 n +0000959605 00000 n +0000959808 00000 n +0000959978 00000 n +0000960176 00000 n +0000960379 00000 n +0000960577 00000 n +0000960779 00000 n +0000960982 00000 n +0000961145 00000 n +0000961307 00000 n +0000961510 00000 n +0000961672 00000 n +0000961835 00000 n +0000962037 00000 n +0000962197 00000 n +0000962400 00000 n +0000962794 00000 n +0000962997 00000 n +0000963198 00000 n +0000963390 00000 n +0000963764 00000 n +0000963967 00000 n +0000964170 00000 n +0000964366 00000 n +0000964568 00000 n +0000967909 00000 n +0000968112 00000 n +0000968315 00000 n +0000964832 00000 n +0000953472 00000 n +0000951078 00000 n +0000964769 00000 n +0000954508 00000 n +0000958239 00000 n +0000959040 00000 n +0000962597 00000 n +0000963578 00000 n +0000987157 00000 n +0000972827 00000 n +0000987534 00000 n +0000987785 00000 n +0000994535 00000 n +0000994913 00000 n +0000979611 00000 n +0000987283 00000 n +0001008783 00000 n +0000987409 00000 n +0000980113 00000 n +0000979988 00000 n +0000973079 00000 n +0000994787 00000 n +0001001672 00000 n +0001001798 00000 n +0001008657 00000 n +0001001547 00000 n +0000994661 00000 n +0001001924 00000 n +0001008909 00000 n +0000979737 00000 n +0000979862 00000 n +0000968476 00000 n +0000968678 00000 n +0000968876 00000 n +0000969045 00000 n +0000969448 00000 n +0000969618 00000 n +0000970011 00000 n +0000970209 00000 n +0000970412 00000 n +0000970619 00000 n +0000970821 00000 n +0000971223 00000 n +0000971425 00000 n +0000971627 00000 n +0000971828 00000 n +0000972031 00000 n +0000972238 00000 n +0000976194 00000 n +0000973205 00000 n +0000967558 00000 n +0000964963 00000 n +0000972639 00000 n +0000969247 00000 n +0000969816 00000 n +0000971023 00000 n +0000972440 00000 n +0001009035 00000 n +0000994409 00000 n +0000987660 00000 n +0001496201 00000 n +0001496327 00000 n +0000976402 00000 n +0000976605 00000 n +0000976803 00000 n +0000977005 00000 n +0000977212 00000 n +0000977415 00000 n +0000977618 00000 n +0000977805 00000 n +0000978013 00000 n +0000978219 00000 n +0000978379 00000 n +0000978781 00000 n +0000978984 00000 n +0000979192 00000 n +0000979349 00000 n +0000980239 00000 n +0000975906 00000 n +0000973365 00000 n +0000979548 00000 n +0000978582 00000 n +0001496452 00000 n +0001496578 00000 n +0001502672 00000 n +0001502798 00000 n +0001502924 00000 n +0000982869 00000 n +0000983077 00000 n +0000983481 00000 n +0000983679 00000 n +0000983882 00000 n +0000984085 00000 n +0000984288 00000 n +0000984496 00000 n +0000984690 00000 n +0000984888 00000 n +0000985081 00000 n +0000985269 00000 n +0000985477 00000 n +0000985674 00000 n +0000985871 00000 n +0000986079 00000 n +0000986280 00000 n +0000986482 00000 n +0000986690 00000 n +0000986886 00000 n +0000987911 00000 n +0000982545 00000 n +0000980413 00000 n +0000987094 00000 n +0000983280 00000 n +0001917969 00000 n +0001503050 00000 n +0001503176 00000 n +0001510296 00000 n +0001510424 00000 n +0001510551 00000 n +0001510679 00000 n +0000990471 00000 n +0000990679 00000 n +0000990840 00000 n +0000990999 00000 n +0000991160 00000 n +0000991321 00000 n +0000991484 00000 n +0000991643 00000 n +0000991851 00000 n +0000992082 00000 n +0000992241 00000 n +0000992437 00000 n +0000992597 00000 n +0000992805 00000 n +0000992991 00000 n +0000993179 00000 n +0000993387 00000 n +0000993583 00000 n +0000993751 00000 n +0000993959 00000 n +0000994188 00000 n +0000995944 00000 n +0000995038 00000 n +0000990147 00000 n +0000988056 00000 n +0000994346 00000 n +0001510807 00000 n +0001510934 00000 n +0001517675 00000 n +0001517803 00000 n +0001517931 00000 n +0000996205 00000 n +0000995800 00000 n +0000995198 00000 n +0000996142 00000 n +0000998782 00000 n +0000998942 00000 n +0000999150 00000 n +0000999309 00000 n +0000999468 00000 n +0000999676 00000 n +0000999839 00000 n +0001000027 00000 n +0001000235 00000 n +0001000396 00000 n +0001000603 00000 n +0001000765 00000 n +0001000961 00000 n +0001001162 00000 n +0001001323 00000 n +0001002050 00000 n +0000998512 00000 n +0000996307 00000 n +0001001484 00000 n +0001518059 00000 n +0001523705 00000 n +0001523833 00000 n +0001523961 00000 n +0001004771 00000 n +0001004933 00000 n +0001005141 00000 n +0001005301 00000 n +0001005462 00000 n +0001005657 00000 n +0001005816 00000 n +0001006024 00000 n +0001006221 00000 n +0001006419 00000 n +0001006577 00000 n +0001006785 00000 n +0001006983 00000 n +0001007180 00000 n +0001007387 00000 n +0001007547 00000 n +0001007711 00000 n +0001007877 00000 n +0001008043 00000 n +0001008228 00000 n +0001008388 00000 n +0001009223 00000 n +0001004447 00000 n +0001002196 00000 n +0001008594 00000 n +0001524089 00000 n +0001531186 00000 n +0001531314 00000 n +0001531442 00000 n +0001531570 00000 n +0001011782 00000 n +0001011952 00000 n +0001012126 00000 n +0001012297 00000 n +0001012468 00000 n +0001012664 00000 n +0001012827 00000 n +0001012997 00000 n +0001013318 00000 n +0001013523 00000 n +0001013682 00000 n +0001013887 00000 n +0001014046 00000 n +0001014215 00000 n +0001015113 00000 n +0001011512 00000 n +0001009397 00000 n +0001014419 00000 n +0001014545 00000 n +0001013158 00000 n +0001014671 00000 n +0001014798 00000 n +0001014987 00000 n +0001083657 00000 n +0001340171 00000 n +0001346803 00000 n +0001392322 00000 n +0001019943 00000 n +0001017677 00000 n +0001017836 00000 n +0001018009 00000 n +0001018167 00000 n +0001018327 00000 n +0001018536 00000 n +0001018696 00000 n +0001018857 00000 n +0001019066 00000 n +0001019227 00000 n +0001019388 00000 n +0001019548 00000 n +0001019707 00000 n +0001020699 00000 n +0001017425 00000 n +0001015273 00000 n +0001019880 00000 n +0001020195 00000 n +0001020384 00000 n +0001020510 00000 n +0001020636 00000 n +0001918095 00000 n +0001022699 00000 n +0001022897 00000 n +0001023095 00000 n +0001023293 00000 n +0001023491 00000 n +0001023689 00000 n +0001023887 00000 n +0001024084 00000 n +0001024282 00000 n +0001024480 00000 n +0001024678 00000 n +0001024875 00000 n +0001025073 00000 n +0001025270 00000 n +0001025466 00000 n +0001025664 00000 n +0001025862 00000 n +0001026060 00000 n +0001026258 00000 n +0001026706 00000 n +0001022393 00000 n +0001020845 00000 n +0001026455 00000 n +0001026581 00000 n +0001028676 00000 n +0001029305 00000 n +0001028298 00000 n +0001028172 00000 n +0001029557 00000 n +0001034244 00000 n +0001028550 00000 n +0001029431 00000 n +0001029683 00000 n +0001034118 00000 n +0001034370 00000 n +0001034621 00000 n +0001029053 00000 n +0001028424 00000 n +0001028802 00000 n +0001028928 00000 n +0001029179 00000 n +0001034746 00000 n +0001034495 00000 n +0001029745 00000 n +0001027923 00000 n +0001026823 00000 n +0001028046 00000 n +0001031615 00000 n +0001031859 00000 n +0001032103 00000 n +0001032347 00000 n +0001032591 00000 n +0001032835 00000 n +0001033078 00000 n +0001033262 00000 n +0001033506 00000 n +0001033750 00000 n +0001035061 00000 n +0001031390 00000 n +0001029847 00000 n +0001033992 00000 n +0001034998 00000 n +0001037995 00000 n +0001038751 00000 n +0001038121 00000 n +0001038499 00000 n +0001038373 00000 n +0001038247 00000 n +0001038625 00000 n +0001037869 00000 n +0001038876 00000 n +0001036968 00000 n +0001037152 00000 n +0001037349 00000 n +0001037547 00000 n +0001039189 00000 n +0001036797 00000 n +0001035178 00000 n +0001037743 00000 n +0001039001 00000 n +0001039127 00000 n +0001082776 00000 n +0001068160 00000 n +0001078023 00000 n +0001041749 00000 n +0001041946 00000 n +0001042144 00000 n +0001042342 00000 n +0001042540 00000 n +0001042738 00000 n +0001042936 00000 n +0001043133 00000 n +0001043331 00000 n +0001043529 00000 n +0001043726 00000 n +0001043924 00000 n +0001044082 00000 n +0001044241 00000 n +0001044439 00000 n +0001044636 00000 n +0001044834 00000 n +0001045032 00000 n +0001045230 00000 n +0001045428 00000 n +0001045626 00000 n +0001045824 00000 n +0001046021 00000 n +0001046219 00000 n +0001046417 00000 n +0001049437 00000 n +0001049634 00000 n +0001046676 00000 n +0001041389 00000 n +0001039306 00000 n +0001046613 00000 n +0001068538 00000 n +0001071837 00000 n +0001071963 00000 n +0001064821 00000 n +0001070706 00000 n +0001063690 00000 n +0001075395 00000 n +0001071208 00000 n +0001075016 00000 n +0001083154 00000 n +0001063816 00000 n +0001078527 00000 n +0001075143 00000 n +0001071333 00000 n +0001082651 00000 n +0001063942 00000 n +0001064317 00000 n +0001064067 00000 n +0001064193 00000 n +0001079283 00000 n +0001064443 00000 n +0001061430 00000 n +0001061556 00000 n +0001049832 00000 n +0001050030 00000 n +0001050227 00000 n +0001050425 00000 n +0001050623 00000 n +0001050954 00000 n +0001051152 00000 n +0001051349 00000 n +0001051546 00000 n +0001051744 00000 n +0001051942 00000 n +0001052140 00000 n +0001052338 00000 n +0001052536 00000 n +0001052734 00000 n +0001052926 00000 n +0001053124 00000 n +0001053322 00000 n +0001053520 00000 n +0001053718 00000 n +0001053878 00000 n +0001054076 00000 n +0001054273 00000 n +0001057213 00000 n +0001057411 00000 n +0001054532 00000 n +0001049068 00000 n +0001046779 00000 n +0001054469 00000 n +0001050789 00000 n +0001918221 00000 n +0001075521 00000 n +0001067784 00000 n +0001068036 00000 n +0001067658 00000 n +0001071459 00000 n +0001078653 00000 n +0001082902 00000 n +0001078905 00000 n +0001064569 00000 n +0001064947 00000 n +0001071585 00000 n +0001079157 00000 n +0001078779 00000 n +0001063564 00000 n +0001067532 00000 n +0001067406 00000 n +0001074385 00000 n +0001067280 00000 n +0001070830 00000 n +0001070956 00000 n +0001057609 00000 n +0001057806 00000 n +0001058004 00000 n +0001058200 00000 n +0001058398 00000 n +0001058596 00000 n +0001058794 00000 n +0001058952 00000 n +0001059111 00000 n +0001059309 00000 n +0001059469 00000 n +0001059667 00000 n +0001059864 00000 n +0001060062 00000 n +0001060258 00000 n +0001060456 00000 n +0001060654 00000 n +0001060851 00000 n +0001061045 00000 n +0001061618 00000 n +0001056889 00000 n +0001054663 00000 n +0001061242 00000 n +0001071082 00000 n +0001074511 00000 n +0001074764 00000 n +0001074638 00000 n +0001079031 00000 n +0001083028 00000 n +0001083280 00000 n +0001083406 00000 n +0001083532 00000 n +0001064695 00000 n +0001078274 00000 n +0001075269 00000 n +0001078149 00000 n +0001078400 00000 n +0001070581 00000 n +0001067910 00000 n +0001068412 00000 n +0001068286 00000 n +0001063119 00000 n +0001063278 00000 n +0001065009 00000 n +0001062966 00000 n +0001061749 00000 n +0001063438 00000 n +0001066836 00000 n +0001066994 00000 n +0001068600 00000 n +0001066683 00000 n +0001065111 00000 n +0001067154 00000 n +0001070262 00000 n +0001072025 00000 n +0001070118 00000 n +0001068702 00000 n +0001070455 00000 n +0001074060 00000 n +0001075583 00000 n +0001073916 00000 n +0001072127 00000 n +0001074259 00000 n +0001077569 00000 n +0001079345 00000 n +0001077416 00000 n +0001075685 00000 n +0001077897 00000 n +0001077734 00000 n +0001918347 00000 n +0001081323 00000 n +0001081482 00000 n +0001081642 00000 n +0001081801 00000 n +0001081970 00000 n +0001082140 00000 n +0001082330 00000 n +0001086364 00000 n +0001086568 00000 n +0001086804 00000 n +0001087041 00000 n +0001087277 00000 n +0001083846 00000 n +0001081125 00000 n +0001079475 00000 n +0001082525 00000 n +0001083783 00000 n +0001622045 00000 n +0001622560 00000 n +0001087513 00000 n +0001087717 00000 n +0001087954 00000 n +0001088190 00000 n +0001088662 00000 n +0001088865 00000 n +0001089068 00000 n +0001089272 00000 n +0001089465 00000 n +0001089669 00000 n +0001089866 00000 n +0001090070 00000 n +0001090273 00000 n +0001090477 00000 n +0001090680 00000 n +0001090884 00000 n +0001091088 00000 n +0001091292 00000 n +0001091496 00000 n +0001091700 00000 n +0001091903 00000 n +0001092107 00000 n +0001092270 00000 n +0001092440 00000 n +0001092761 00000 n +0001092931 00000 n +0001093854 00000 n +0001085932 00000 n +0001083962 00000 n +0001093100 00000 n +0001093163 00000 n +0001088427 00000 n +0001093226 00000 n +0001092601 00000 n +0001093415 00000 n +0001093541 00000 n +0001093604 00000 n +0001093667 00000 n +0001093730 00000 n +0001093792 00000 n +0001095703 00000 n +0001095766 00000 n +0001095829 00000 n +0001095954 00000 n +0001096080 00000 n +0001096206 00000 n +0001101090 00000 n +0001101216 00000 n +0001096332 00000 n +0001096458 00000 n +0001101468 00000 n +0001105337 00000 n +0001096584 00000 n +0001095454 00000 n +0001094014 00000 n +0001095577 00000 n +0001099087 00000 n +0001099280 00000 n +0001099477 00000 n +0001099796 00000 n +0001099957 00000 n +0001100153 00000 n +0001100349 00000 n +0001100510 00000 n +0001100671 00000 n +0001100834 00000 n +0001101594 00000 n +0001098853 00000 n +0001096731 00000 n +0001101027 00000 n +0001099638 00000 n +0001103705 00000 n +0001103865 00000 n +0001104074 00000 n +0001104283 00000 n +0001104491 00000 n +0001104700 00000 n +0001104909 00000 n +0001105117 00000 n +0001105840 00000 n +0001103498 00000 n +0001101754 00000 n +0001105274 00000 n +0001105589 00000 n +0001105652 00000 n +0001105715 00000 n +0001109623 00000 n +0001109497 00000 n +0001110064 00000 n +0001109938 00000 n +0001109812 00000 n +0001110252 00000 n +0001107504 00000 n +0001107707 00000 n +0001107868 00000 n +0001108072 00000 n +0001108233 00000 n +0001108435 00000 n +0001108598 00000 n +0001108802 00000 n +0001108963 00000 n +0001109167 00000 n +0001110755 00000 n +0001107279 00000 n +0001105986 00000 n +0001109371 00000 n +0001110504 00000 n +0001110566 00000 n +0001110629 00000 n +0001918473 00000 n +0001117780 00000 n +0001118472 00000 n +0001117968 00000 n +0001118283 00000 n +0001118157 00000 n +0001113117 00000 n +0001113281 00000 n +0001113479 00000 n +0001113677 00000 n +0001113873 00000 n +0001114069 00000 n +0001114229 00000 n +0001114427 00000 n +0001114625 00000 n +0001114784 00000 n +0001114981 00000 n +0001115179 00000 n +0001115377 00000 n +0001115575 00000 n +0001115735 00000 n +0001115932 00000 n +0001116120 00000 n +0001116318 00000 n +0001116478 00000 n +0001116676 00000 n +0001116864 00000 n +0001117062 00000 n +0001117260 00000 n +0001117458 00000 n +0001122050 00000 n +0001122248 00000 n +0001118847 00000 n +0001112766 00000 n +0001110871 00000 n +0001117654 00000 n +0001118722 00000 n +0001118785 00000 n +0001203738 00000 n +0001259538 00000 n +0001187616 00000 n +0001287130 00000 n +0001180689 00000 n +0001242673 00000 n +0001242799 00000 n +0001180563 00000 n +0001187490 00000 n +0001668537 00000 n +0001236654 00000 n +0001247025 00000 n +0001236402 00000 n +0001236528 00000 n +0001122446 00000 n +0001122644 00000 n +0001122841 00000 n +0001123038 00000 n +0001123236 00000 n +0001123398 00000 n +0001123559 00000 n +0001123756 00000 n +0001123917 00000 n +0001124077 00000 n +0001124274 00000 n +0001124503 00000 n +0001124701 00000 n +0001124929 00000 n +0001125127 00000 n +0001125288 00000 n +0001125449 00000 n +0001125647 00000 n +0001125809 00000 n +0001125969 00000 n +0001126167 00000 n +0001126365 00000 n +0001126558 00000 n +0001126756 00000 n +0001126949 00000 n +0001127149 00000 n +0001127310 00000 n +0001127508 00000 n +0001127706 00000 n +0001127904 00000 n +0001128065 00000 n +0001128263 00000 n +0001128461 00000 n +0001128620 00000 n +0001128817 00000 n +0001128976 00000 n +0001129174 00000 n +0001129367 00000 n +0001129565 00000 n +0001129761 00000 n +0001129929 00000 n +0001130086 00000 n +0001133382 00000 n +0001130345 00000 n +0001121519 00000 n +0001118993 00000 n +0001130282 00000 n +0001209687 00000 n +0001203612 00000 n +0001203989 00000 n +0001190965 00000 n +0001191091 00000 n +0001232361 00000 n +0001219433 00000 n +0001223048 00000 n +0001223300 00000 n +0001227046 00000 n +0001707961 00000 n +0001247151 00000 n +0001219306 00000 n +0001232487 00000 n +0001232613 00000 n +0001255299 00000 n +0001247277 00000 n +0001242547 00000 n +0001536716 00000 n +0001133580 00000 n +0001133778 00000 n +0001133976 00000 n +0001134172 00000 n +0001134370 00000 n +0001134568 00000 n +0001134762 00000 n +0001134960 00000 n +0001135158 00000 n +0001135320 00000 n +0001135518 00000 n +0001135680 00000 n +0001135878 00000 n +0001136039 00000 n +0001136200 00000 n +0001136361 00000 n +0001136559 00000 n +0001136755 00000 n +0001136916 00000 n +0001137114 00000 n +0001137311 00000 n +0001137508 00000 n +0001137670 00000 n +0001137868 00000 n +0001138029 00000 n +0001138226 00000 n +0001138385 00000 n +0001138582 00000 n +0001138779 00000 n +0001142111 00000 n +0001142309 00000 n +0001139038 00000 n +0001132977 00000 n +0001130476 00000 n +0001138975 00000 n +0001172365 00000 n +0001259664 00000 n +0001213770 00000 n +0001213896 00000 n +0001209435 00000 n +0001203865 00000 n +0001251449 00000 n +0001172742 00000 n +0001255173 00000 n +0001195742 00000 n +0001199732 00000 n +0001203486 00000 n +0001199606 00000 n +0001251197 00000 n +0001251323 00000 n +0001172617 00000 n +0001209309 00000 n +0001255424 00000 n +0001142507 00000 n +0001142705 00000 n +0001142903 00000 n +0001143101 00000 n +0001143299 00000 n +0001143497 00000 n +0001143657 00000 n +0001143855 00000 n +0001144052 00000 n +0001144202 00000 n +0001144367 00000 n +0001144565 00000 n +0001144730 00000 n +0001144895 00000 n +0001145092 00000 n +0001145287 00000 n +0001145484 00000 n +0001145713 00000 n +0001145910 00000 n +0001146069 00000 n +0001146267 00000 n +0001146428 00000 n +0001146626 00000 n +0001146787 00000 n +0001146985 00000 n +0001147183 00000 n +0001147381 00000 n +0001147576 00000 n +0001151233 00000 n +0001151431 00000 n +0001147959 00000 n +0001141706 00000 n +0001139155 00000 n +0001147772 00000 n +0001147835 00000 n +0001147898 00000 n +0001259160 00000 n +0001259286 00000 n +0001259412 00000 n +0001251575 00000 n +0001236276 00000 n +0001264319 00000 n +0001273677 00000 n +0001268422 00000 n +0001609418 00000 n +0001268799 00000 n +0001264634 00000 n +0001269178 00000 n +0001269052 00000 n +0001268926 00000 n +0001273550 00000 n +0001273424 00000 n +0001269304 00000 n +0001273044 00000 n +0001151628 00000 n +0001151826 00000 n +0001152024 00000 n +0001152222 00000 n +0001152420 00000 n +0001152618 00000 n +0001152816 00000 n +0001153014 00000 n +0001153212 00000 n +0001153372 00000 n +0001153570 00000 n +0001153730 00000 n +0001153926 00000 n +0001154114 00000 n +0001154312 00000 n +0001154508 00000 n +0001154706 00000 n +0001154903 00000 n +0001155100 00000 n +0001155271 00000 n +0001155468 00000 n +0001155622 00000 n +0001155820 00000 n +0001155983 00000 n +0001156181 00000 n +0001156344 00000 n +0001156507 00000 n +0001156705 00000 n +0001156902 00000 n +0001157065 00000 n +0001157263 00000 n +0001157426 00000 n +0001157624 00000 n +0001157783 00000 n +0001161478 00000 n +0001161675 00000 n +0001161846 00000 n +0001158105 00000 n +0001150774 00000 n +0001148104 00000 n +0001157979 00000 n +0001158042 00000 n +0001273170 00000 n +0001273297 00000 n +0001268548 00000 n +0001264508 00000 n +0001268673 00000 n +0001303320 00000 n +0001279524 00000 n +0001279777 00000 n +0001279651 00000 n +0001670154 00000 n +0001282980 00000 n +0001283106 00000 n +0001724102 00000 n +0001303193 00000 n +0001279024 00000 n +0001292892 00000 n +0001162044 00000 n +0001162242 00000 n +0001162569 00000 n +0001162766 00000 n +0001162964 00000 n +0001163162 00000 n +0001163360 00000 n +0001163521 00000 n +0001163719 00000 n +0001163883 00000 n +0001164080 00000 n +0001164246 00000 n +0001164443 00000 n +0001164641 00000 n +0001164802 00000 n +0001165000 00000 n +0001165198 00000 n +0001165362 00000 n +0001165560 00000 n +0001165758 00000 n +0001165955 00000 n +0001166152 00000 n +0001166311 00000 n +0001166509 00000 n +0001166707 00000 n +0001166905 00000 n +0001167103 00000 n +0001167301 00000 n +0001167498 00000 n +0001170308 00000 n +0001170506 00000 n +0001167757 00000 n +0001161046 00000 n +0001158264 00000 n +0001167694 00000 n +0001162406 00000 n +0001918599 00000 n +0001287003 00000 n +0001298860 00000 n +0001279399 00000 n +0001279146 00000 n +0001283862 00000 n +0001632525 00000 n +0001287887 00000 n +0001287636 00000 n +0001307759 00000 n +0001303445 00000 n +0001287256 00000 n +0001287762 00000 n +0001283483 00000 n +0001283358 00000 n +0001283231 00000 n +0001170703 00000 n +0001170900 00000 n +0001171098 00000 n +0001171296 00000 n +0001171493 00000 n +0001171691 00000 n +0001171855 00000 n +0001172016 00000 n +0001172868 00000 n +0001170083 00000 n +0001167902 00000 n +0001172177 00000 n +0001283609 00000 n +0001293146 00000 n +0001299114 00000 n +0001283735 00000 n +0001298356 00000 n +0001293019 00000 n +0001298987 00000 n +0001175660 00000 n +0001175822 00000 n +0001175981 00000 n +0001176178 00000 n +0001176336 00000 n +0001176496 00000 n +0001176868 00000 n +0001177028 00000 n +0001177257 00000 n +0001177487 00000 n +0001177717 00000 n +0001177946 00000 n +0001178175 00000 n +0001178355 00000 n +0001178515 00000 n +0001178674 00000 n +0001178832 00000 n +0001179017 00000 n +0001179176 00000 n +0001179406 00000 n +0001179635 00000 n +0001179865 00000 n +0001180093 00000 n +0001180321 00000 n +0001180815 00000 n +0001175300 00000 n +0001173014 00000 n +0001180500 00000 n +0001176683 00000 n +0001184094 00000 n +0001184254 00000 n +0001184413 00000 n +0001184573 00000 n +0001184733 00000 n +0001184893 00000 n +0001185053 00000 n +0001185250 00000 n +0001185410 00000 n +0001185569 00000 n +0001185754 00000 n +0001185914 00000 n +0001186143 00000 n +0001186371 00000 n +0001186601 00000 n +0001186829 00000 n +0001187057 00000 n +0001187235 00000 n +0001187867 00000 n +0001183797 00000 n +0001180989 00000 n +0001187427 00000 n +0001190544 00000 n +0001190740 00000 n +0001194004 00000 n +0001191217 00000 n +0001190391 00000 n +0001188041 00000 n +0001190902 00000 n +0001194200 00000 n +0001194359 00000 n +0001194521 00000 n +0001194682 00000 n +0001194843 00000 n +0001194997 00000 n +0001195194 00000 n +0001195392 00000 n +0001198078 00000 n +0001195868 00000 n +0001193788 00000 n +0001191363 00000 n +0001195553 00000 n +0001198274 00000 n +0001198472 00000 n +0001198633 00000 n +0001198831 00000 n +0001198992 00000 n +0001199189 00000 n +0001199385 00000 n +0001199858 00000 n +0001197871 00000 n +0001196014 00000 n +0001199543 00000 n +0001918725 00000 n +0001202672 00000 n +0001202869 00000 n +0001203067 00000 n +0001203227 00000 n +0001207081 00000 n +0001207279 00000 n +0001207476 00000 n +0001204115 00000 n +0001202501 00000 n +0001199989 00000 n +0001203423 00000 n +0001207645 00000 n +0001207805 00000 n +0001208199 00000 n +0001208397 00000 n +0001208556 00000 n +0001208714 00000 n +0001208902 00000 n +0001209089 00000 n +0001209875 00000 n +0001206838 00000 n +0001204289 00000 n +0001209246 00000 n +0001208003 00000 n +0001564091 00000 n +0001563452 00000 n +0001212297 00000 n +0001212457 00000 n +0001212617 00000 n +0001212777 00000 n +0001212972 00000 n +0001213132 00000 n +0001213291 00000 n +0001213485 00000 n +0001214084 00000 n +0001212090 00000 n +0001210049 00000 n +0001213644 00000 n +0001468228 00000 n +0001217402 00000 n +0001217600 00000 n +0001217760 00000 n +0001218207 00000 n +0001218405 00000 n +0001218603 00000 n +0001219020 00000 n +0001219559 00000 n +0001217186 00000 n +0001214230 00000 n +0001219180 00000 n +0001217985 00000 n +0001218813 00000 n +0001222666 00000 n +0001222825 00000 n +0001226665 00000 n +0001223427 00000 n +0001222513 00000 n +0001219733 00000 n +0001222985 00000 n +0001226825 00000 n +0001227233 00000 n +0001226512 00000 n +0001223601 00000 n +0001226983 00000 n +0001918851 00000 n +0001229795 00000 n +0001230025 00000 n +0001230255 00000 n +0001230485 00000 n +0001230678 00000 n +0001230837 00000 n +0001231067 00000 n +0001231297 00000 n +0001231526 00000 n +0001231719 00000 n +0001231878 00000 n +0001232037 00000 n +0001232676 00000 n +0001229552 00000 n +0001227407 00000 n +0001232235 00000 n +0001584419 00000 n +0001235071 00000 n +0001235232 00000 n +0001235430 00000 n +0001235628 00000 n +0001235825 00000 n +0001240388 00000 n +0001236716 00000 n +0001234891 00000 n +0001232822 00000 n +0001236023 00000 n +0001240586 00000 n +0001240782 00000 n +0001240942 00000 n +0001241139 00000 n +0001241335 00000 n +0001241497 00000 n +0001241658 00000 n +0001241826 00000 n +0001242218 00000 n +0001242926 00000 n +0001240154 00000 n +0001236890 00000 n +0001242421 00000 n +0001242023 00000 n +0001642288 00000 n +0001338912 00000 n +0001537228 00000 n +0001246178 00000 n +0001246376 00000 n +0001246571 00000 n +0001246768 00000 n +0001250331 00000 n +0001247529 00000 n +0001246007 00000 n +0001243100 00000 n +0001246962 00000 n +0001595255 00000 n +0001250493 00000 n +0001250652 00000 n +0001250813 00000 n +0001250974 00000 n +0001251701 00000 n +0001250151 00000 n +0001247703 00000 n +0001251134 00000 n +0001254912 00000 n +0001255548 00000 n +0001254768 00000 n +0001251875 00000 n +0001255110 00000 n +0001918977 00000 n +0001256484 00000 n +0001256298 00000 n +0001255722 00000 n +0001256421 00000 n +0001258900 00000 n +0001259790 00000 n +0001258756 00000 n +0001256615 00000 n +0001259097 00000 n +0001262986 00000 n +0001263146 00000 n +0001263306 00000 n +0001263534 00000 n +0001263699 00000 n +0001263863 00000 n +0001264027 00000 n +0001264697 00000 n +0001262788 00000 n +0001259964 00000 n +0001264256 00000 n +0001267147 00000 n +0001267298 00000 n +0001267496 00000 n +0001267692 00000 n +0001267852 00000 n +0001268012 00000 n +0001269367 00000 n +0001266958 00000 n +0001264871 00000 n +0001268171 00000 n +0001272239 00000 n +0001272436 00000 n +0001272597 00000 n +0001272758 00000 n +0001273804 00000 n +0001272068 00000 n +0001269526 00000 n +0001272918 00000 n +0001276862 00000 n +0001277023 00000 n +0001277177 00000 n +0001277340 00000 n +0001277569 00000 n +0001277798 00000 n +0001278189 00000 n +0001278386 00000 n +0001278540 00000 n +0001278738 00000 n +0001279839 00000 n +0001276628 00000 n +0001273948 00000 n +0001278898 00000 n +0001277995 00000 n +0001919103 00000 n +0001282144 00000 n +0001282303 00000 n +0001282499 00000 n +0001282658 00000 n +0001284113 00000 n +0001281973 00000 n +0001279983 00000 n +0001282854 00000 n +0001286737 00000 n +0001287949 00000 n +0001286593 00000 n +0001284257 00000 n +0001286940 00000 n +0001290958 00000 n +0001291154 00000 n +0001291324 00000 n +0001291519 00000 n +0001291722 00000 n +0001291919 00000 n +0001292117 00000 n +0001292443 00000 n +0001293525 00000 n +0001290742 00000 n +0001288079 00000 n +0001292639 00000 n +0001292281 00000 n +0001296197 00000 n +0001296394 00000 n +0001296591 00000 n +0001296787 00000 n +0001296950 00000 n +0001297147 00000 n +0001297339 00000 n +0001297535 00000 n +0001297732 00000 n +0001297928 00000 n +0001298097 00000 n +0001299177 00000 n +0001295963 00000 n +0001293669 00000 n +0001298293 00000 n +0001338785 00000 n +0001334577 00000 n +0001339792 00000 n +0001301660 00000 n +0001301824 00000 n +0001302021 00000 n +0001302179 00000 n +0001302375 00000 n +0001302533 00000 n +0001303698 00000 n +0001301471 00000 n +0001299321 00000 n +0001302687 00000 n +0001305768 00000 n +0001305970 00000 n +0001306124 00000 n +0001306326 00000 n +0001306529 00000 n +0001306731 00000 n +0001306932 00000 n +0001307135 00000 n +0001307290 00000 n +0001307493 00000 n +0001308642 00000 n +0001305543 00000 n +0001303814 00000 n +0001307696 00000 n +0001307886 00000 n +0001308012 00000 n +0001308075 00000 n +0001308138 00000 n +0001308201 00000 n +0001308264 00000 n +0001308389 00000 n +0001308515 00000 n +0001919229 00000 n +0001541530 00000 n +0001316896 00000 n +0001316518 00000 n +0001316644 00000 n +0001316770 00000 n +0001317083 00000 n +0001317209 00000 n +0001311081 00000 n +0001311277 00000 n +0001311474 00000 n +0001311670 00000 n +0001311832 00000 n +0001312027 00000 n +0001312190 00000 n +0001312387 00000 n +0001312584 00000 n +0001312777 00000 n +0001312968 00000 n +0001313130 00000 n +0001313327 00000 n +0001313489 00000 n +0001313686 00000 n +0001313848 00000 n +0001314045 00000 n +0001314208 00000 n +0001314370 00000 n +0001314567 00000 n +0001314763 00000 n +0001314925 00000 n +0001315122 00000 n +0001315319 00000 n +0001315482 00000 n +0001315679 00000 n +0001315874 00000 n +0001316036 00000 n +0001316231 00000 n +0001320067 00000 n +0001320230 00000 n +0001320427 00000 n +0001317524 00000 n +0001310685 00000 n +0001308816 00000 n +0001316392 00000 n +0001317461 00000 n +0001325467 00000 n +0001339288 00000 n +0001339666 00000 n +0001329057 00000 n +0001329684 00000 n +0001329559 00000 n +0001329810 00000 n +0001329936 00000 n +0001330062 00000 n +0001328805 00000 n +0001328931 00000 n +0001329183 00000 n +0001329309 00000 n +0001334138 00000 n +0001334263 00000 n +0001320624 00000 n +0001320821 00000 n +0001321018 00000 n +0001321214 00000 n +0001321410 00000 n +0001321607 00000 n +0001321803 00000 n +0001322000 00000 n +0001322197 00000 n +0001322389 00000 n +0001322586 00000 n +0001322783 00000 n +0001322975 00000 n +0001323172 00000 n +0001323369 00000 n +0001323566 00000 n +0001323762 00000 n +0001323954 00000 n +0001324151 00000 n +0001324343 00000 n +0001324540 00000 n +0001324731 00000 n +0001324927 00000 n +0001325593 00000 n +0001319698 00000 n +0001317683 00000 n +0001325089 00000 n +0001325152 00000 n +0001325215 00000 n +0001325278 00000 n +0001329433 00000 n +0001334451 00000 n +0001339918 00000 n +0001339414 00000 n +0001339038 00000 n +0001338659 00000 n +0001334766 00000 n +0001340045 00000 n +0001339540 00000 n +0001339162 00000 n +0001338532 00000 n +0001328202 00000 n +0001328364 00000 n +0001328517 00000 n +0001330314 00000 n +0001328040 00000 n +0001325753 00000 n +0001328680 00000 n +0001333233 00000 n +0001333393 00000 n +0001333553 00000 n +0001333750 00000 n +0001333913 00000 n +0001334892 00000 n +0001333053 00000 n +0001330460 00000 n +0001334075 00000 n +0001336895 00000 n +0001337092 00000 n +0001337287 00000 n +0001337485 00000 n +0001337682 00000 n +0001337878 00000 n +0001338076 00000 n +0001343156 00000 n +0001343327 00000 n +0001340295 00000 n +0001336688 00000 n +0001335051 00000 n +0001338469 00000 n +0001338273 00000 n +0001343500 00000 n +0001343670 00000 n +0001343878 00000 n +0001344041 00000 n +0001344211 00000 n +0001344531 00000 n +0001344702 00000 n +0001344876 00000 n +0001345195 00000 n +0001345356 00000 n +0001345552 00000 n +0001345748 00000 n +0001345909 00000 n +0001346070 00000 n +0001346233 00000 n +0001349810 00000 n +0001349981 00000 n +0001346927 00000 n +0001342850 00000 n +0001340439 00000 n +0001346425 00000 n +0001346488 00000 n +0001344371 00000 n +0001345037 00000 n +0001919355 00000 n +0001350151 00000 n +0001350321 00000 n +0001350526 00000 n +0001350689 00000 n +0001350859 00000 n +0001351179 00000 n +0001351350 00000 n +0001351521 00000 n +0001351840 00000 n +0001352001 00000 n +0001352197 00000 n +0001352393 00000 n +0001352554 00000 n +0001352715 00000 n +0001352878 00000 n +0001355600 00000 n +0001353572 00000 n +0001349504 00000 n +0001347087 00000 n +0001353070 00000 n +0001353133 00000 n +0001351019 00000 n +0001351682 00000 n +0001355759 00000 n +0001355959 00000 n +0001356159 00000 n +0001356359 00000 n +0001356559 00000 n +0001356759 00000 n +0001356958 00000 n +0001357158 00000 n +0001357358 00000 n +0001357558 00000 n +0001357758 00000 n +0001357958 00000 n +0001358156 00000 n +0001359134 00000 n +0001355339 00000 n +0001353732 00000 n +0001358315 00000 n +0001358378 00000 n +0001358441 00000 n +0001358630 00000 n +0001358756 00000 n +0001358882 00000 n +0001359008 00000 n +0001363549 00000 n +0001363297 00000 n +0001363171 00000 n +0001363675 00000 n +0001363045 00000 n +0001363423 00000 n +0001363800 00000 n +0001360960 00000 n +0001361159 00000 n +0001361387 00000 n +0001361546 00000 n +0001361742 00000 n +0001361939 00000 n +0001362136 00000 n +0001362332 00000 n +0001362529 00000 n +0001362724 00000 n +0001366324 00000 n +0001364115 00000 n +0001360735 00000 n +0001359266 00000 n +0001362919 00000 n +0001364052 00000 n +0001370793 00000 n +0001379466 00000 n +0001372298 00000 n +0001372549 00000 n +0001379591 00000 n +0001372674 00000 n +0001366520 00000 n +0001366717 00000 n +0001366914 00000 n +0001367111 00000 n +0001367308 00000 n +0001367505 00000 n +0001367666 00000 n +0001367862 00000 n +0001368059 00000 n +0001368256 00000 n +0001368452 00000 n +0001368649 00000 n +0001368846 00000 n +0001369075 00000 n +0001369235 00000 n +0001369395 00000 n +0001369558 00000 n +0001369755 00000 n +0001369952 00000 n +0001370149 00000 n +0001370346 00000 n +0001370917 00000 n +0001365991 00000 n +0001364232 00000 n +0001370541 00000 n +0001370604 00000 n +0001372799 00000 n +0001372925 00000 n +0001373051 00000 n +0001373177 00000 n +0001373303 00000 n +0001373429 00000 n +0001373555 00000 n +0001373681 00000 n +0001373807 00000 n +0001379904 00000 n +0001379780 00000 n +0001373869 00000 n +0001372049 00000 n +0001371063 00000 n +0001372172 00000 n +0001376102 00000 n +0001376270 00000 n +0001376468 00000 n +0001376671 00000 n +0001376872 00000 n +0001377074 00000 n +0001377243 00000 n +0001377446 00000 n +0001377615 00000 n +0001377817 00000 n +0001378013 00000 n +0001378216 00000 n +0001378419 00000 n +0001378613 00000 n +0001378815 00000 n +0001378977 00000 n +0001379179 00000 n +0001382441 00000 n +0001382609 00000 n +0001382807 00000 n +0001383010 00000 n +0001380345 00000 n +0001375814 00000 n +0001373986 00000 n +0001379340 00000 n +0001380156 00000 n +0001380282 00000 n +0001919481 00000 n +0001385109 00000 n +0001384480 00000 n +0001384291 00000 n +0001384858 00000 n +0001384983 00000 n +0001384606 00000 n +0001384732 00000 n +0001383211 00000 n +0001383380 00000 n +0001383541 00000 n +0001383736 00000 n +0001383905 00000 n +0001385171 00000 n +0001382225 00000 n +0001380491 00000 n +0001384102 00000 n +0001386109 00000 n +0001385860 00000 n +0001385303 00000 n +0001385983 00000 n +0001389168 00000 n +0001389330 00000 n +0001389500 00000 n +0001389670 00000 n +0001389875 00000 n +0001390080 00000 n +0001390243 00000 n +0001390413 00000 n +0001390734 00000 n +0001390905 00000 n +0001391222 00000 n +0001391383 00000 n +0001391578 00000 n +0001391774 00000 n +0001391935 00000 n +0001392096 00000 n +0001395229 00000 n +0001392762 00000 n +0001388871 00000 n +0001386226 00000 n +0001392259 00000 n +0001392448 00000 n +0001390574 00000 n +0001391065 00000 n +0001397332 00000 n +0001395423 00000 n +0001395644 00000 n +0001395830 00000 n +0001396051 00000 n +0001396272 00000 n +0001396494 00000 n +0001396714 00000 n +0001396936 00000 n +0001397099 00000 n +0001398212 00000 n +0001395004 00000 n +0001392922 00000 n +0001397269 00000 n +0001397458 00000 n +0001397584 00000 n +0001397710 00000 n +0001397899 00000 n +0001398025 00000 n +0001398150 00000 n +0001407868 00000 n +0001407616 00000 n +0001407742 00000 n +0001400775 00000 n +0001400995 00000 n +0001401247 00000 n +0001401500 00000 n +0001401753 00000 n +0001402257 00000 n +0001402509 00000 n +0001402728 00000 n +0001402980 00000 n +0001403232 00000 n +0001403734 00000 n +0001403985 00000 n +0001404205 00000 n +0001404425 00000 n +0001404645 00000 n +0001404863 00000 n +0001405082 00000 n +0001405302 00000 n +0001405522 00000 n +0001405741 00000 n +0001405961 00000 n +0001406180 00000 n +0001406399 00000 n +0001406619 00000 n +0001406837 00000 n +0001407055 00000 n +0001407272 00000 n +0001408119 00000 n +0001400379 00000 n +0001398372 00000 n +0001407490 00000 n +0001407993 00000 n +0001402005 00000 n +0001403484 00000 n +0001408056 00000 n +0001410055 00000 n +0001410180 00000 n +0001410242 00000 n +0001410305 00000 n +0001410368 00000 n +0001410431 00000 n +0001409678 00000 n +0001409804 00000 n +0001409867 00000 n +0001409930 00000 n +0001409993 00000 n +0001411940 00000 n +0001417769 00000 n +0001417895 00000 n +0001411688 00000 n +0001411562 00000 n +0001411184 00000 n +0001411310 00000 n +0001411436 00000 n +0001411814 00000 n +0001410932 00000 n +0001411058 00000 n +0001410680 00000 n +0001410806 00000 n +0001410556 00000 n +0001412002 00000 n +0001409429 00000 n +0001408279 00000 n +0001409552 00000 n +0001919607 00000 n +0001413914 00000 n +0001414135 00000 n +0001414321 00000 n +0001414543 00000 n +0001414765 00000 n +0001414987 00000 n +0001415150 00000 n +0001415319 00000 n +0001415539 00000 n +0001415792 00000 n +0001416045 00000 n +0001416550 00000 n +0001416770 00000 n +0001416988 00000 n +0001417207 00000 n +0001417425 00000 n +0001419090 00000 n +0001413626 00000 n +0001412119 00000 n +0001417643 00000 n +0001418021 00000 n +0001418147 00000 n +0001418272 00000 n +0001418461 00000 n +0001418587 00000 n +0001418713 00000 n +0001418839 00000 n +0001418965 00000 n +0001416298 00000 n +0001419027 00000 n +0001422383 00000 n +0001422509 00000 n +0001422572 00000 n +0001422635 00000 n +0001423139 00000 n +0001422887 00000 n +0001423013 00000 n +0001422761 00000 n +0001420875 00000 n +0001421091 00000 n +0001421272 00000 n +0001421490 00000 n +0001421707 00000 n +0001421926 00000 n +0001422088 00000 n +0001426411 00000 n +0001426625 00000 n +0001426874 00000 n +0001427123 00000 n +0001424208 00000 n +0001420677 00000 n +0001419250 00000 n +0001422257 00000 n +0001423265 00000 n +0001423391 00000 n +0001423517 00000 n +0001423706 00000 n +0001423830 00000 n +0001423956 00000 n +0001424082 00000 n +0001427621 00000 n +0001427838 00000 n +0001428054 00000 n +0001428271 00000 n +0001428488 00000 n +0001428705 00000 n +0001428880 00000 n +0001429075 00000 n +0001429236 00000 n +0001429555 00000 n +0001429750 00000 n +0001429913 00000 n +0001430074 00000 n +0001430269 00000 n +0001430430 00000 n +0001430625 00000 n +0001430788 00000 n +0001430981 00000 n +0001431142 00000 n +0001431310 00000 n +0001431501 00000 n +0001431660 00000 n +0001431827 00000 n +0001436365 00000 n +0001436759 00000 n +0001436954 00000 n +0001433341 00000 n +0001426015 00000 n +0001424355 00000 n +0001432020 00000 n +0001432083 00000 n +0001427372 00000 n +0001432146 00000 n +0001432271 00000 n +0001432397 00000 n +0001432460 00000 n +0001432522 00000 n +0001432648 00000 n +0001432774 00000 n +0001432900 00000 n +0001433026 00000 n +0001433278 00000 n +0001429397 00000 n +0001452329 00000 n +0001461402 00000 n +0001461528 00000 n +0001452078 00000 n +0001461149 00000 n +0001451574 00000 n +0001452204 00000 n +0001437149 00000 n +0001437344 00000 n +0001437540 00000 n +0001437735 00000 n +0001437897 00000 n +0001438092 00000 n +0001438255 00000 n +0001438448 00000 n +0001438609 00000 n +0001438804 00000 n +0001438964 00000 n +0001439158 00000 n +0001439319 00000 n +0001439514 00000 n +0001439709 00000 n +0001439903 00000 n +0001440097 00000 n +0001440292 00000 n +0001440487 00000 n +0001440680 00000 n +0001440875 00000 n +0001441067 00000 n +0001441260 00000 n +0001441486 00000 n +0001441679 00000 n +0001441874 00000 n +0001442101 00000 n +0001442294 00000 n +0001442489 00000 n +0001442716 00000 n +0001442877 00000 n +0001443071 00000 n +0001443265 00000 n +0001443456 00000 n +0001443651 00000 n +0001443846 00000 n +0001444041 00000 n +0001444238 00000 n +0001444433 00000 n +0001444594 00000 n +0001444789 00000 n +0001444949 00000 n +0001445110 00000 n +0001445304 00000 n +0001445464 00000 n +0001448697 00000 n +0001448892 00000 n +0001449086 00000 n +0001449281 00000 n +0001445909 00000 n +0001435789 00000 n +0001433501 00000 n +0001445657 00000 n +0001436563 00000 n +0001445720 00000 n +0001445783 00000 n +0001445846 00000 n +0001456724 00000 n +0001456598 00000 n +0001456850 00000 n +0001461276 00000 n +0001451826 00000 n +0001451952 00000 n +0001451700 00000 n +0001469111 00000 n +0001462470 00000 n +0001461844 00000 n +0001462722 00000 n +0001467789 00000 n +0001754037 00000 n +0001467915 00000 n +0001749832 00000 n +0001462346 00000 n +0001753586 00000 n +0001749512 00000 n +0001462220 00000 n +0001749768 00000 n +0001753715 00000 n +0001462596 00000 n +0001753843 00000 n +0001462096 00000 n +0001461970 00000 n +0001461718 00000 n +0001468985 00000 n +0001468606 00000 n +0001468732 00000 n +0001468858 00000 n +0001449442 00000 n +0001449836 00000 n +0001450033 00000 n +0001450230 00000 n +0001450390 00000 n +0001450708 00000 n +0001450868 00000 n +0001451071 00000 n +0001451231 00000 n +0001452583 00000 n +0001448427 00000 n +0001446068 00000 n +0001451385 00000 n +0001449640 00000 n +0001450550 00000 n +0001468480 00000 n +0001468104 00000 n +0001468354 00000 n +0001455109 00000 n +0001455270 00000 n +0001455429 00000 n +0001455586 00000 n +0001455747 00000 n +0001455906 00000 n +0001456061 00000 n +0001456222 00000 n +0001456380 00000 n +0001456977 00000 n +0001454893 00000 n +0001452757 00000 n +0001456535 00000 n +0001919733 00000 n +0001459567 00000 n +0001459728 00000 n +0001459887 00000 n +0001460048 00000 n +0001460209 00000 n +0001460370 00000 n +0001460530 00000 n +0001460725 00000 n +0001460885 00000 n +0001462785 00000 n +0001459351 00000 n +0001457137 00000 n +0001461086 00000 n +0001465412 00000 n +0001465610 00000 n +0001465771 00000 n +0001465932 00000 n +0001466095 00000 n +0001466256 00000 n +0001466417 00000 n +0001466578 00000 n +0001466773 00000 n +0001466934 00000 n +0001467338 00000 n +0001467497 00000 n +0001469300 00000 n +0001465160 00000 n +0001462930 00000 n +0001467663 00000 n +0001467137 00000 n +0001469237 00000 n +0001471508 00000 n +0001471707 00000 n +0001471906 00000 n +0001472106 00000 n +0001472266 00000 n +0001472441 00000 n +0001472610 00000 n +0001472818 00000 n +0001473026 00000 n +0001473441 00000 n +0001473649 00000 n +0001473856 00000 n +0001474018 00000 n +0001478281 00000 n +0001478512 00000 n +0001478672 00000 n +0001475104 00000 n +0001471247 00000 n +0001469444 00000 n +0001474224 00000 n +0001474350 00000 n +0001474539 00000 n +0001474663 00000 n +0001474789 00000 n +0001475041 00000 n +0001473234 00000 n +0001478880 00000 n +0001479109 00000 n +0001479268 00000 n +0001479475 00000 n +0001479683 00000 n +0001479891 00000 n +0001480099 00000 n +0001480307 00000 n +0001480515 00000 n +0001480710 00000 n +0001480869 00000 n +0001481283 00000 n +0001481491 00000 n +0001481651 00000 n +0001481859 00000 n +0001482055 00000 n +0001482468 00000 n +0001482675 00000 n +0001482845 00000 n +0001483043 00000 n +0001483251 00000 n +0001483449 00000 n +0001483657 00000 n +0001483865 00000 n +0001484028 00000 n +0001484190 00000 n +0001484396 00000 n +0001484559 00000 n +0001484722 00000 n +0001484930 00000 n +0001485090 00000 n +0001485298 00000 n +0001485691 00000 n +0001485898 00000 n +0001486106 00000 n +0001486299 00000 n +0001486673 00000 n +0001486880 00000 n +0001487088 00000 n +0001487285 00000 n +0001487493 00000 n +0001487700 00000 n +0001487906 00000 n +0001488114 00000 n +0001488272 00000 n +0001488477 00000 n +0001488736 00000 n +0001477669 00000 n +0001475264 00000 n +0001488673 00000 n +0001481076 00000 n +0001482262 00000 n +0001485495 00000 n +0001486487 00000 n +0001491601 00000 n +0001491770 00000 n +0001492106 00000 n +0001492280 00000 n +0001492673 00000 n +0001492871 00000 n +0001493079 00000 n +0001493280 00000 n +0001493487 00000 n +0001493899 00000 n +0001494107 00000 n +0001494315 00000 n +0001494521 00000 n +0001494729 00000 n +0001494930 00000 n +0001495343 00000 n +0001495544 00000 n +0001495752 00000 n +0001499655 00000 n +0001496703 00000 n +0001491268 00000 n +0001488867 00000 n +0001495949 00000 n +0001496012 00000 n +0001491939 00000 n +0001492478 00000 n +0001493694 00000 n +0001495138 00000 n +0001499861 00000 n +0001500062 00000 n +0001500270 00000 n +0001500478 00000 n +0001500665 00000 n +0001500865 00000 n +0001501066 00000 n +0001501225 00000 n +0001501636 00000 n +0001501843 00000 n +0001502044 00000 n +0001502203 00000 n +0001502409 00000 n +0001506008 00000 n +0001503300 00000 n +0001499385 00000 n +0001496877 00000 n +0001502609 00000 n +0001501433 00000 n +0001919859 00000 n +0001506423 00000 n +0001506621 00000 n +0001506829 00000 n +0001507037 00000 n +0001507245 00000 n +0001507445 00000 n +0001507639 00000 n +0001507836 00000 n +0001508029 00000 n +0001508217 00000 n +0001508418 00000 n +0001508616 00000 n +0001508814 00000 n +0001509015 00000 n +0001509223 00000 n +0001509432 00000 n +0001509633 00000 n +0001509829 00000 n +0001510031 00000 n +0001513686 00000 n +0001510997 00000 n +0001505674 00000 n +0001503474 00000 n +0001510231 00000 n +0001506216 00000 n +0001513848 00000 n +0001514007 00000 n +0001514168 00000 n +0001514330 00000 n +0001514494 00000 n +0001514655 00000 n +0001514857 00000 n +0001515089 00000 n +0001515249 00000 n +0001515447 00000 n +0001515607 00000 n +0001515809 00000 n +0001515996 00000 n +0001516185 00000 n +0001516387 00000 n +0001516585 00000 n +0001516753 00000 n +0001516955 00000 n +0001517187 00000 n +0001517348 00000 n +0001518187 00000 n +0001513338 00000 n +0001511157 00000 n +0001517546 00000 n +0001520943 00000 n +0001521104 00000 n +0001521306 00000 n +0001521467 00000 n +0001521628 00000 n +0001521829 00000 n +0001521993 00000 n +0001522182 00000 n +0001522384 00000 n +0001522548 00000 n +0001522749 00000 n +0001522912 00000 n +0001523109 00000 n +0001523316 00000 n +0001523478 00000 n +0001524217 00000 n +0001520655 00000 n +0001518362 00000 n +0001523640 00000 n +0001527127 00000 n +0001527290 00000 n +0001527492 00000 n +0001527653 00000 n +0001527811 00000 n +0001528008 00000 n +0001528169 00000 n +0001528371 00000 n +0001528570 00000 n +0001528768 00000 n +0001528928 00000 n +0001529130 00000 n +0001529329 00000 n +0001529527 00000 n +0001529729 00000 n +0001529890 00000 n +0001530222 00000 n +0001530389 00000 n +0001530761 00000 n +0001530921 00000 n +0001531761 00000 n +0001526769 00000 n +0001524364 00000 n +0001531121 00000 n +0001530057 00000 n +0001530576 00000 n +0001534155 00000 n +0001534354 00000 n +0001534556 00000 n +0001534760 00000 n +0001534964 00000 n +0001535164 00000 n +0001535367 00000 n +0001535571 00000 n +0001535775 00000 n +0001535979 00000 n +0001536149 00000 n +0001536353 00000 n +0001537292 00000 n +0001533897 00000 n +0001531936 00000 n +0001536523 00000 n +0001536844 00000 n +0001536909 00000 n +0001537101 00000 n +0001703295 00000 n +0001541016 00000 n +0001541401 00000 n +0001708672 00000 n +0001541144 00000 n +0001541272 00000 n +0001540887 00000 n +0001540760 00000 n +0001539308 00000 n +0001539498 00000 n +0001539687 00000 n +0001539878 00000 n +0001540064 00000 n +0001540253 00000 n +0001540442 00000 n +0001541853 00000 n +0001539099 00000 n +0001537438 00000 n +0001540631 00000 n +0001541658 00000 n +0001541723 00000 n +0001541788 00000 n +0001919990 00000 n +0001547990 00000 n +0001547861 00000 n +0001548183 00000 n +0001548312 00000 n +0001548441 00000 n +0001544645 00000 n +0001544802 00000 n +0001544962 00000 n +0001545151 00000 n +0001545345 00000 n +0001545537 00000 n +0001545726 00000 n +0001545915 00000 n +0001546103 00000 n +0001546258 00000 n +0001546447 00000 n +0001546601 00000 n +0001546790 00000 n +0001546979 00000 n +0001547168 00000 n +0001547357 00000 n +0001547546 00000 n +0001548828 00000 n +0001544336 00000 n +0001541998 00000 n +0001547732 00000 n +0001548698 00000 n +0001548763 00000 n +0001558939 00000 n +0001554771 00000 n +0001559068 00000 n +0001559197 00000 n +0001563194 00000 n +0001562678 00000 n +0001562807 00000 n +0001563833 00000 n +0001559390 00000 n +0001562936 00000 n +0001551830 00000 n +0001552019 00000 n +0001552208 00000 n +0001552369 00000 n +0001552556 00000 n +0001552744 00000 n +0001552933 00000 n +0001553122 00000 n +0001553311 00000 n +0001553499 00000 n +0001553688 00000 n +0001553877 00000 n +0001554035 00000 n +0001554189 00000 n +0001554353 00000 n +0001555029 00000 n +0001551541 00000 n +0001549003 00000 n +0001554513 00000 n +0001554578 00000 n +0001563576 00000 n +0001562422 00000 n +0001563323 00000 n +0001563962 00000 n +0001559519 00000 n +0001563065 00000 n +0001562549 00000 n +0001557896 00000 n +0001558057 00000 n +0001558255 00000 n +0001558409 00000 n +0001558564 00000 n +0001558719 00000 n +0001559583 00000 n +0001557697 00000 n +0001555176 00000 n +0001558874 00000 n +0001561806 00000 n +0001561967 00000 n +0001562128 00000 n +0001564343 00000 n +0001561637 00000 n +0001559758 00000 n +0001562293 00000 n +0001566714 00000 n +0001566869 00000 n +0001567061 00000 n +0001567221 00000 n +0001567415 00000 n +0001567608 00000 n +0001567802 00000 n +0001567996 00000 n +0001568189 00000 n +0001568382 00000 n +0001568576 00000 n +0001568769 00000 n +0001568965 00000 n +0001569159 00000 n +0001569353 00000 n +0001569545 00000 n +0001569738 00000 n +0001569927 00000 n +0001570087 00000 n +0001570281 00000 n +0001570475 00000 n +0001570669 00000 n +0001570863 00000 n +0001573531 00000 n +0001571314 00000 n +0001566345 00000 n +0001564460 00000 n +0001571055 00000 n +0001571120 00000 n +0001571184 00000 n +0001571249 00000 n +0001575943 00000 n +0001576072 00000 n +0001576201 00000 n +0001576330 00000 n +0001579297 00000 n +0001579168 00000 n +0001579555 00000 n +0001579684 00000 n +0001579039 00000 n +0001579426 00000 n +0001585061 00000 n +0001579876 00000 n +0001584803 00000 n +0001580134 00000 n +0001584159 00000 n +0001580392 00000 n +0001573724 00000 n +0001573917 00000 n +0001574111 00000 n +0001574305 00000 n +0001574499 00000 n +0001574692 00000 n +0001574886 00000 n +0001575080 00000 n +0001575273 00000 n +0001575432 00000 n +0001575592 00000 n +0001576459 00000 n +0001573272 00000 n +0001571446 00000 n +0001575750 00000 n +0001920123 00000 n +0001584029 00000 n +0001584545 00000 n +0001584932 00000 n +0001580263 00000 n +0001584289 00000 n +0001584674 00000 n +0001585188 00000 n +0001578376 00000 n +0001578564 00000 n +0001578723 00000 n +0001582626 00000 n +0001582786 00000 n +0001580521 00000 n +0001578207 00000 n +0001576606 00000 n +0001578910 00000 n +0001582941 00000 n +0001583101 00000 n +0001583256 00000 n +0001583416 00000 n +0001583571 00000 n +0001583768 00000 n +0001587893 00000 n +0001585510 00000 n +0001582407 00000 n +0001580638 00000 n +0001583964 00000 n +0001585445 00000 n +0001595126 00000 n +0001588090 00000 n +0001588283 00000 n +0001588480 00000 n +0001588676 00000 n +0001588872 00000 n +0001589064 00000 n +0001589261 00000 n +0001589458 00000 n +0001589654 00000 n +0001589851 00000 n +0001590047 00000 n +0001590244 00000 n +0001590441 00000 n +0001590636 00000 n +0001590828 00000 n +0001591024 00000 n +0001591221 00000 n +0001591418 00000 n +0001591615 00000 n +0001591812 00000 n +0001592418 00000 n +0001587544 00000 n +0001585642 00000 n +0001591966 00000 n +0001592031 00000 n +0001592224 00000 n +0001592353 00000 n +0001594996 00000 n +0001595383 00000 n +0001600146 00000 n +0001596088 00000 n +0001595575 00000 n +0001600919 00000 n +0001600275 00000 n +0001596217 00000 n +0001600404 00000 n +0001595702 00000 n +0001595832 00000 n +0001595959 00000 n +0001600533 00000 n +0001601046 00000 n +0001600790 00000 n +0001596282 00000 n +0001594740 00000 n +0001592550 00000 n +0001594867 00000 n +0001598587 00000 n +0001598748 00000 n +0001598944 00000 n +0001599143 00000 n +0001599345 00000 n +0001599581 00000 n +0001599817 00000 n +0001601433 00000 n +0001598378 00000 n +0001596399 00000 n +0001600017 00000 n +0001601304 00000 n +0001608644 00000 n +0001608773 00000 n +0001603550 00000 n +0001603755 00000 n +0001603960 00000 n +0001604158 00000 n +0001604358 00000 n +0001604590 00000 n +0001604823 00000 n +0001605056 00000 n +0001605521 00000 n +0001605753 00000 n +0001605952 00000 n +0001606151 00000 n +0001606351 00000 n +0001606540 00000 n +0001606740 00000 n +0001606939 00000 n +0001607139 00000 n +0001607339 00000 n +0001607539 00000 n +0001607738 00000 n +0001607934 00000 n +0001608131 00000 n +0001608317 00000 n +0001612039 00000 n +0001612226 00000 n +0001612425 00000 n +0001612613 00000 n +0001609804 00000 n +0001603171 00000 n +0001601550 00000 n +0001608515 00000 n +0001608902 00000 n +0001609031 00000 n +0001609160 00000 n +0001609289 00000 n +0001609546 00000 n +0001605289 00000 n +0001609611 00000 n +0001609675 00000 n +0001609739 00000 n +0001920256 00000 n +0001615625 00000 n +0001615754 00000 n +0001615819 00000 n +0001615884 00000 n +0001615948 00000 n +0001616013 00000 n +0001616658 00000 n +0001616400 00000 n +0001616529 00000 n +0001616787 00000 n +0001616271 00000 n +0001616142 00000 n +0001619854 00000 n +0001621787 00000 n +0001619983 00000 n +0001620499 00000 n +0001620886 00000 n +0001612813 00000 n +0001613013 00000 n +0001613213 00000 n +0001613413 00000 n +0001613613 00000 n +0001613812 00000 n +0001614008 00000 n +0001614207 00000 n +0001614437 00000 n +0001614635 00000 n +0001614835 00000 n +0001615034 00000 n +0001615234 00000 n +0001616977 00000 n +0001611730 00000 n +0001609979 00000 n +0001615432 00000 n +0001669379 00000 n +0001620241 00000 n +0001621015 00000 n +0001621529 00000 n +0001621658 00000 n +0001621916 00000 n +0001620628 00000 n +0001620370 00000 n +0001621144 00000 n +0001620757 00000 n +0001621402 00000 n +0001621273 00000 n +0001620112 00000 n +0001618699 00000 n +0001618903 00000 n +0001619131 00000 n +0001619358 00000 n +0001619560 00000 n +0001624598 00000 n +0001624802 00000 n +0001622753 00000 n +0001618510 00000 n +0001617153 00000 n +0001619789 00000 n +0001622173 00000 n +0001622302 00000 n +0001622431 00000 n +0001622688 00000 n +0001628307 00000 n +0001625034 00000 n +0001625266 00000 n +0001625433 00000 n +0001625628 00000 n +0001625823 00000 n +0001626025 00000 n +0001626220 00000 n +0001626416 00000 n +0001626616 00000 n +0001626811 00000 n +0001626973 00000 n +0001627169 00000 n +0001627331 00000 n +0001627526 00000 n +0001627723 00000 n +0001628888 00000 n +0001624289 00000 n +0001622870 00000 n +0001627920 00000 n +0001628049 00000 n +0001628178 00000 n +0001628564 00000 n +0001628629 00000 n +0001628694 00000 n +0001628759 00000 n +0001631433 00000 n +0001631562 00000 n +0001707637 00000 n +0001631755 00000 n +0001632076 00000 n +0001632205 00000 n +0001632398 00000 n +0001630540 00000 n +0001630702 00000 n +0001630902 00000 n +0001631103 00000 n +0001633487 00000 n +0001630361 00000 n +0001629020 00000 n +0001631304 00000 n +0001632653 00000 n +0001632718 00000 n +0001632783 00000 n +0001632912 00000 n +0001633105 00000 n +0001633234 00000 n +0001635325 00000 n +0001635524 00000 n +0001635724 00000 n +0001635924 00000 n +0001636124 00000 n +0001636324 00000 n +0001636525 00000 n +0001636724 00000 n +0001636891 00000 n +0001637992 00000 n +0001635096 00000 n +0001633619 00000 n +0001637090 00000 n +0001637155 00000 n +0001637220 00000 n +0001637413 00000 n +0001637606 00000 n +0001637799 00000 n +0001637928 00000 n +0001639376 00000 n +0001639247 00000 n +0001639505 00000 n +0001638991 00000 n +0001638153 00000 n +0001639118 00000 n +0001920389 00000 n +0001640177 00000 n +0001639985 00000 n +0001639636 00000 n +0001640112 00000 n +0001641356 00000 n +0001642672 00000 n +0001641207 00000 n +0001640252 00000 n +0001641516 00000 n +0001641645 00000 n +0001641772 00000 n +0001641901 00000 n +0001642030 00000 n +0001642159 00000 n +0001642416 00000 n +0001642545 00000 n +0001646117 00000 n +0001646293 00000 n +0001646490 00000 n +0001646719 00000 n +0001646949 00000 n +0001647409 00000 n +0001647640 00000 n +0001647867 00000 n +0001648097 00000 n +0001648327 00000 n +0001648558 00000 n +0001648787 00000 n +0001649016 00000 n +0001649246 00000 n +0001649707 00000 n +0001649936 00000 n +0001650166 00000 n +0001650396 00000 n +0001650856 00000 n +0001651086 00000 n +0001651317 00000 n +0001651547 00000 n +0001651778 00000 n +0001652008 00000 n +0001652469 00000 n +0001652700 00000 n +0001653161 00000 n +0001653391 00000 n +0001653852 00000 n +0001654083 00000 n +0001654543 00000 n +0001654704 00000 n +0001654900 00000 n +0001655130 00000 n +0001655360 00000 n +0001655590 00000 n +0001655785 00000 n +0001656015 00000 n +0001656246 00000 n +0001656477 00000 n +0001656708 00000 n +0001656938 00000 n +0001657169 00000 n +0001657400 00000 n +0001657588 00000 n +0001657809 00000 n +0001658031 00000 n +0001658253 00000 n +0001658475 00000 n +0001658696 00000 n +0001658918 00000 n +0001659140 00000 n +0001659362 00000 n +0001659582 00000 n +0001659803 00000 n +0001660024 00000 n +0001660234 00000 n +0001660421 00000 n +0001660642 00000 n +0001660864 00000 n +0001661086 00000 n +0001661527 00000 n +0001661748 00000 n +0001661970 00000 n +0001662192 00000 n +0001662634 00000 n +0001662855 00000 n +0001663077 00000 n +0001663233 00000 n +0001663422 00000 n +0001663642 00000 n +0001663863 00000 n +0001664084 00000 n +0001664523 00000 n +0001666951 00000 n +0001667147 00000 n +0001667336 00000 n +0001667558 00000 n +0001664937 00000 n +0001645138 00000 n +0001642818 00000 n +0001664742 00000 n +0001664807 00000 n +0001664872 00000 n +0001647179 00000 n +0001649477 00000 n +0001650627 00000 n +0001652239 00000 n +0001652931 00000 n +0001653622 00000 n +0001654314 00000 n +0001661307 00000 n +0001662413 00000 n +0001664305 00000 n +0001668665 00000 n +0001668730 00000 n +0001668795 00000 n +0001668860 00000 n +0001668925 00000 n +0001668989 00000 n +0001669054 00000 n +0001669119 00000 n +0001669184 00000 n +0001669249 00000 n +0001669314 00000 n +0001669508 00000 n +0001669572 00000 n +0001669637 00000 n +0001669702 00000 n +0001669766 00000 n +0001669831 00000 n +0001669896 00000 n +0001669961 00000 n +0001670026 00000 n +0001670090 00000 n +0001673576 00000 n +0001673641 00000 n +0001673706 00000 n +0001673771 00000 n +0001673836 00000 n +0001667780 00000 n +0001667988 00000 n +0001668187 00000 n +0001672369 00000 n +0001670217 00000 n +0001666742 00000 n +0001665097 00000 n +0001668344 00000 n +0001673901 00000 n +0001674030 00000 n +0001674095 00000 n +0001672566 00000 n +0001672727 00000 n +0001672899 00000 n +0001673093 00000 n +0001673287 00000 n +0001674997 00000 n +0001672170 00000 n +0001670378 00000 n +0001673447 00000 n +0001674160 00000 n +0001674289 00000 n +0001674354 00000 n +0001674610 00000 n +0001674739 00000 n +0001674868 00000 n +0001674933 00000 n +0001677491 00000 n +0001677695 00000 n +0001677880 00000 n +0001678100 00000 n +0001678350 00000 n +0001678855 00000 n +0001679108 00000 n +0001679613 00000 n +0001679774 00000 n +0001679935 00000 n +0001680094 00000 n +0001680252 00000 n +0001680419 00000 n +0001680587 00000 n +0001680747 00000 n +0001680908 00000 n +0001681068 00000 n +0001681232 00000 n +0001681396 00000 n +0001681559 00000 n +0001681729 00000 n +0001681891 00000 n +0001682055 00000 n +0001682225 00000 n +0001686215 00000 n +0001686416 00000 n +0001686651 00000 n +0001686885 00000 n +0001687120 00000 n +0001682902 00000 n +0001677092 00000 n +0001675158 00000 n +0001682384 00000 n +0001682513 00000 n +0001682578 00000 n +0001682643 00000 n +0001678603 00000 n +0001679361 00000 n +0001682708 00000 n +0001682837 00000 n +0001920522 00000 n +0001687354 00000 n +0001687556 00000 n +0001687791 00000 n +0001688026 00000 n +0001688260 00000 n +0001688460 00000 n +0001688694 00000 n +0001688927 00000 n +0001689161 00000 n +0001689363 00000 n +0001689597 00000 n +0001689832 00000 n +0001690067 00000 n +0001690536 00000 n +0001690770 00000 n +0001691005 00000 n +0001691474 00000 n +0001691709 00000 n +0001691942 00000 n +0001692177 00000 n +0001692412 00000 n +0001692647 00000 n +0001692849 00000 n +0001693084 00000 n +0001693318 00000 n +0001693787 00000 n +0001694022 00000 n +0001694224 00000 n +0001694458 00000 n +0001694693 00000 n +0001694927 00000 n +0001695087 00000 n +0001695288 00000 n +0001695523 00000 n +0001695758 00000 n +0001696226 00000 n +0001696428 00000 n +0001696661 00000 n +0001696896 00000 n +0001697365 00000 n +0001697600 00000 n +0001697834 00000 n +0001698069 00000 n +0001698538 00000 n +0001698699 00000 n +0001702222 00000 n +0001702383 00000 n +0001699439 00000 n +0001685516 00000 n +0001683048 00000 n +0001698859 00000 n +0001698924 00000 n +0001690302 00000 n +0001691240 00000 n +0001693553 00000 n +0001695992 00000 n +0001697131 00000 n +0001698304 00000 n +0001699053 00000 n +0001699182 00000 n +0001699247 00000 n +0001699312 00000 n +0001704203 00000 n +0001704332 00000 n +0001707443 00000 n +0001707508 00000 n +0001707572 00000 n +0001708089 00000 n +0001708154 00000 n +0001708219 00000 n +0001708801 00000 n +0001708866 00000 n +0001708930 00000 n +0001703424 00000 n +0001703489 00000 n +0001703554 00000 n +0001703619 00000 n +0001703684 00000 n +0001703749 00000 n +0001703814 00000 n +0001703879 00000 n +0001703944 00000 n +0001704009 00000 n +0001704073 00000 n +0001704138 00000 n +0001708284 00000 n +0001708413 00000 n +0001708477 00000 n +0001708542 00000 n +0001708607 00000 n +0001707766 00000 n +0001707831 00000 n +0001707896 00000 n +0001702842 00000 n +0001702907 00000 n +0001702971 00000 n +0001703036 00000 n +0001703101 00000 n +0001703165 00000 n +0001703230 00000 n +0001702542 00000 n +0001704396 00000 n +0001702053 00000 n +0001699600 00000 n +0001702713 00000 n +0001707218 00000 n +0001709058 00000 n +0001707069 00000 n +0001704514 00000 n +0001707378 00000 n +0001708994 00000 n +0001711946 00000 n +0001712107 00000 n +0001712272 00000 n +0001712471 00000 n +0001712670 00000 n +0001712865 00000 n +0001713095 00000 n +0001713326 00000 n +0001713557 00000 n +0001713788 00000 n +0001714017 00000 n +0001714247 00000 n +0001714477 00000 n +0001714707 00000 n +0001714937 00000 n +0001715168 00000 n +0001715398 00000 n +0001715629 00000 n +0001715859 00000 n +0001716090 00000 n +0001716551 00000 n +0001716781 00000 n +0001717010 00000 n +0001717240 00000 n +0001717701 00000 n +0001717932 00000 n +0001718162 00000 n +0001718359 00000 n +0001718589 00000 n +0001719050 00000 n +0001719511 00000 n +0001719742 00000 n +0001719972 00000 n +0001720203 00000 n +0001720434 00000 n +0001720895 00000 n +0001721123 00000 n +0001721582 00000 n +0001722041 00000 n +0001722271 00000 n +0001722470 00000 n +0001722701 00000 n +0001722933 00000 n +0001724228 00000 n +0001711297 00000 n +0001709190 00000 n +0001723395 00000 n +0001723524 00000 n +0001723588 00000 n +0001723653 00000 n +0001716321 00000 n +0001717471 00000 n +0001718820 00000 n +0001719281 00000 n +0001720665 00000 n +0001721352 00000 n +0001721813 00000 n +0001723164 00000 n +0001723781 00000 n +0001723910 00000 n +0001730522 00000 n +0001730586 00000 n +0001730651 00000 n +0001726985 00000 n +0001727144 00000 n +0001727305 00000 n +0001727476 00000 n +0001727646 00000 n +0001727817 00000 n +0001727992 00000 n +0001728167 00000 n +0001728338 00000 n +0001728499 00000 n +0001728663 00000 n +0001728892 00000 n +0001729053 00000 n +0001729213 00000 n +0001729373 00000 n +0001729574 00000 n +0001729776 00000 n +0001729947 00000 n +0001730113 00000 n +0001730271 00000 n +0001732784 00000 n +0001730975 00000 n +0001726646 00000 n +0001724374 00000 n +0001730457 00000 n +0001730716 00000 n +0001730845 00000 n +0001730910 00000 n +0001732982 00000 n +0001733180 00000 n +0001733375 00000 n +0001733535 00000 n +0001733733 00000 n +0001733931 00000 n +0001734128 00000 n +0001734292 00000 n +0001734467 00000 n +0001737653 00000 n +0001736044 00000 n +0001732545 00000 n +0001731136 00000 n +0001734626 00000 n +0001734691 00000 n +0001734884 00000 n +0001735011 00000 n +0001735140 00000 n +0001735269 00000 n +0001735334 00000 n +0001735463 00000 n +0001735592 00000 n +0001735721 00000 n +0001735850 00000 n +0001735979 00000 n +0001920655 00000 n +0001737817 00000 n +0001737982 00000 n +0001738147 00000 n +0001738345 00000 n +0001738543 00000 n +0001738707 00000 n +0001738903 00000 n +0001739066 00000 n +0001739231 00000 n +0001740743 00000 n +0001737414 00000 n +0001736190 00000 n +0001739390 00000 n +0001739519 00000 n +0001739647 00000 n +0001739712 00000 n +0001739841 00000 n +0001739970 00000 n +0001740099 00000 n +0001740228 00000 n +0001740293 00000 n +0001740422 00000 n +0001740549 00000 n +0001740678 00000 n +0001743030 00000 n +0001743194 00000 n +0001743364 00000 n +0001743534 00000 n +0001743732 00000 n +0001743936 00000 n +0001744140 00000 n +0001744301 00000 n +0001744495 00000 n +0001744722 00000 n +0001744950 00000 n +0001745177 00000 n +0001745405 00000 n +0001745599 00000 n +0001745826 00000 n +0001746054 00000 n +0001746282 00000 n +0001746507 00000 n +0001746730 00000 n +0001746924 00000 n +0001747151 00000 n +0001747605 00000 n +0001747833 00000 n +0001748026 00000 n +0001748252 00000 n +0001748479 00000 n +0001748706 00000 n +0001750024 00000 n +0001742611 00000 n +0001740889 00000 n +0001748867 00000 n +0001748996 00000 n +0001749125 00000 n +0001749190 00000 n +0001749318 00000 n +0001749383 00000 n +0001747378 00000 n +0001749638 00000 n +0001749703 00000 n +0001749960 00000 n +0001754165 00000 n +0001754230 00000 n +0001754295 00000 n +0001754360 00000 n +0001753458 00000 n +0001753523 00000 n +0001753650 00000 n +0001753907 00000 n +0001753972 00000 n +0001752094 00000 n +0001752254 00000 n +0001752449 00000 n +0001752652 00000 n +0001752819 00000 n +0001752989 00000 n +0001753191 00000 n +0001756948 00000 n +0001755129 00000 n +0001751885 00000 n +0001750185 00000 n +0001753393 00000 n +0001754425 00000 n +0001754554 00000 n +0001754619 00000 n +0001754748 00000 n +0001754877 00000 n +0001755002 00000 n +0001757101 00000 n +0001757419 00000 n +0001757579 00000 n +0001757746 00000 n +0001757906 00000 n +0001761149 00000 n +0001758976 00000 n +0001756739 00000 n +0001755290 00000 n +0001758073 00000 n +0001758138 00000 n +0001757261 00000 n +0001758203 00000 n +0001758332 00000 n +0001758397 00000 n +0001758525 00000 n +0001758654 00000 n +0001758847 00000 n +0001761305 00000 n +0001761471 00000 n +0001761670 00000 n +0001761841 00000 n +0001762012 00000 n +0001762210 00000 n +0001762403 00000 n +0001762578 00000 n +0001762750 00000 n +0001762925 00000 n +0001763096 00000 n +0001763265 00000 n +0001764401 00000 n +0001760880 00000 n +0001759122 00000 n +0001763435 00000 n +0001763500 00000 n +0001763629 00000 n +0001763758 00000 n +0001763887 00000 n +0001763952 00000 n +0001764080 00000 n +0001764144 00000 n +0001764272 00000 n +0001764337 00000 n +0001765954 00000 n +0001766126 00000 n +0001766298 00000 n +0001766486 00000 n +0001766671 00000 n +0001766860 00000 n +0001768077 00000 n +0001765755 00000 n +0001764547 00000 n +0001767045 00000 n +0001767174 00000 n +0001767239 00000 n +0001767368 00000 n +0001767433 00000 n +0001767562 00000 n +0001767626 00000 n +0001767755 00000 n +0001767820 00000 n +0001767948 00000 n +0001768013 00000 n +0001920788 00000 n +0001769531 00000 n +0001769717 00000 n +0001769900 00000 n +0001770109 00000 n +0001770296 00000 n +0001770492 00000 n +0001770700 00000 n +0001770895 00000 n +0001771101 00000 n +0001771287 00000 n +0001771483 00000 n +0001771678 00000 n +0001774963 00000 n +0001775193 00000 n +0001775455 00000 n +0001775979 00000 n +0001776504 00000 n +0001776767 00000 n +0001777029 00000 n +0001777553 00000 n +0001778078 00000 n +0001778341 00000 n +0001778603 00000 n +0001779128 00000 n +0001772970 00000 n +0001769272 00000 n +0001768223 00000 n +0001771872 00000 n +0001772001 00000 n +0001772066 00000 n +0001772195 00000 n +0001772260 00000 n +0001772389 00000 n +0001772453 00000 n +0001772517 00000 n +0001772646 00000 n +0001772711 00000 n +0001772776 00000 n +0001772905 00000 n +0001779653 00000 n +0001779863 00000 n +0001780050 00000 n +0001780245 00000 n +0001780440 00000 n +0001780655 00000 n +0001780842 00000 n +0001781037 00000 n +0001781233 00000 n +0001781447 00000 n +0001781631 00000 n +0001784939 00000 n +0001782664 00000 n +0001774534 00000 n +0001773116 00000 n +0001781822 00000 n +0001781887 00000 n +0001775717 00000 n +0001776242 00000 n +0001777291 00000 n +0001777816 00000 n +0001778866 00000 n +0001779391 00000 n +0001781952 00000 n +0001782081 00000 n +0001782146 00000 n +0001782211 00000 n +0001782340 00000 n +0001782405 00000 n +0001782470 00000 n +0001782599 00000 n +0001785135 00000 n +0001785340 00000 n +0001785527 00000 n +0001785723 00000 n +0001785931 00000 n +0001786149 00000 n +0001786335 00000 n +0001786546 00000 n +0001786752 00000 n +0001786958 00000 n +0001787143 00000 n +0001787339 00000 n +0001787568 00000 n +0001787830 00000 n +0001788355 00000 n +0001788618 00000 n +0001788881 00000 n +0001789143 00000 n +0001789668 00000 n +0001789930 00000 n +0001790091 00000 n +0001790251 00000 n +0001790447 00000 n +0001790677 00000 n +0001790939 00000 n +0001791463 00000 n +0001791725 00000 n +0001792250 00000 n +0001792512 00000 n +0001793036 00000 n +0001793298 00000 n +0001793820 00000 n +0001794080 00000 n +0001797363 00000 n +0001797625 00000 n +0001795313 00000 n +0001784390 00000 n +0001782810 00000 n +0001794600 00000 n +0001794665 00000 n +0001794730 00000 n +0001794859 00000 n +0001794924 00000 n +0001794989 00000 n +0001788093 00000 n +0001789406 00000 n +0001795054 00000 n +0001795183 00000 n +0001795248 00000 n +0001791202 00000 n +0001791988 00000 n +0001792775 00000 n +0001793560 00000 n +0001794341 00000 n +0001798149 00000 n +0001798362 00000 n +0001798558 00000 n +0001798781 00000 n +0001798977 00000 n +0001799185 00000 n +0001799962 00000 n +0001796593 00000 n +0001795459 00000 n +0001799381 00000 n +0001796842 00000 n +0001797103 00000 n +0001797887 00000 n +0001799446 00000 n +0001799575 00000 n +0001799639 00000 n +0001799704 00000 n +0001799833 00000 n +0001799897 00000 n +0001913496 00000 n +0001800210 00000 n +0001800687 00000 n +0001801160 00000 n +0001801638 00000 n +0001802105 00000 n +0001802208 00000 n +0001802810 00000 n +0001803380 00000 n +0001803857 00000 n +0001804761 00000 n +0001812024 00000 n +0001812276 00000 n +0001819624 00000 n +0001819875 00000 n +0001837106 00000 n +0001837651 00000 n +0001850173 00000 n +0001850620 00000 n +0001864884 00000 n +0001865399 00000 n +0001876844 00000 n +0001877184 00000 n +0001888016 00000 n +0001888363 00000 n +0001900706 00000 n +0001901353 00000 n +0001912966 00000 n +0001920911 00000 n +0001921039 00000 n +0001921167 00000 n +0001921295 00000 n +0001921423 00000 n +0001921551 00000 n +0001921680 00000 n +0001921814 00000 n +0001921949 00000 n +0001922033 00000 n +0001922110 00000 n +0002038543 00000 n +0002038719 00000 n +0002038985 00000 n +0002039247 00000 n +0002039891 00000 n +0002040601 00000 n +0002041345 00000 n +0002042056 00000 n +0002042800 00000 n +0002043303 00000 n +0002043837 00000 n +0002044652 00000 n +0002045401 00000 n +0002046216 00000 n +0002047031 00000 n +0002047879 00000 n +0002048693 00000 n +0002049508 00000 n +0002050207 00000 n +0002050962 00000 n +0002051390 00000 n +0002051885 00000 n +0002052225 00000 n +0002052653 00000 n +0002053253 00000 n +0002054010 00000 n +0002054668 00000 n +0002055321 00000 n +0002055574 00000 n +0002055758 00000 n +0002056054 00000 n +0002056615 00000 n +0002057225 00000 n +0002057826 00000 n +0002058280 00000 n +0002058802 00000 n +0002059324 00000 n +0002059846 00000 n +0002060368 00000 n +0002060822 00000 n +0002061344 00000 n +0002061964 00000 n +0002062942 00000 n +0002063834 00000 n +0002064740 00000 n +0002065646 00000 n +0002066476 00000 n +0002067374 00000 n +0002068272 00000 n +0002069170 00000 n +0002070068 00000 n +0002070966 00000 n +0002071828 00000 n +0002072744 00000 n +0002073706 00000 n +0002074600 00000 n +0002075562 00000 n +0002076436 00000 n +0002077318 00000 n +0002078188 00000 n +0002079062 00000 n +0002079952 00000 n +0002080842 00000 n +0002081696 00000 n +0002082434 00000 n +0002082956 00000 n +0002083478 00000 n +0002083971 00000 n +0002084473 00000 n +0002085051 00000 n +0002085538 00000 n +0002086092 00000 n +0002086646 00000 n +0002087200 00000 n +0002087686 00000 n +0002088240 00000 n +0002088794 00000 n +0002089348 00000 n +0002089902 00000 n +0002090456 00000 n +0002091010 00000 n +0002091564 00000 n +0002092118 00000 n +0002092672 00000 n +0002093226 00000 n +0002093775 00000 n +0002094409 00000 n +0002095043 00000 n +0002095677 00000 n +0002096311 00000 n +0002096951 00000 n +0002097623 00000 n +0002098291 00000 n +0002099025 00000 n +0002099668 00000 n +0002100310 00000 n +0002100796 00000 n +0002101350 00000 n +0002101904 00000 n +0002102458 00000 n +0002103012 00000 n +0002103566 00000 n +0002104120 00000 n +0002104674 00000 n +0002105228 00000 n +0002105782 00000 n +0002106336 00000 n +0002106890 00000 n +0002107444 00000 n +0002107998 00000 n +0002108552 00000 n +0002109106 00000 n +0002109660 00000 n +0002110214 00000 n +0002110768 00000 n +0002111322 00000 n +0002111876 00000 n +0002112402 00000 n +0002112938 00000 n +0002113484 00000 n +0002114030 00000 n +0002114576 00000 n +0002115122 00000 n +0002115622 00000 n +0002116150 00000 n +0002116720 00000 n +0002117244 00000 n +0002117790 00000 n +0002118336 00000 n +0002118826 00000 n +0002119420 00000 n +0002120009 00000 n +0002120683 00000 n +0002121545 00000 n +0002122374 00000 n +0002123203 00000 n +0002124032 00000 n +0002124740 00000 n +0002125468 00000 n +0002126259 00000 n +0002127036 00000 n +0002127696 00000 n +0002128226 00000 n +0002128756 00000 n +0002129286 00000 n +0002129816 00000 n +0002130346 00000 n +0002130818 00000 n +0002131323 00000 n +0002131923 00000 n +0002132409 00000 n +0002132858 00000 n +0002133336 00000 n +0002133814 00000 n +0002134235 00000 n +0002134755 00000 n +0002135274 00000 n +0002135793 00000 n +0002136313 00000 n +0002136815 00000 n +0002137358 00000 n +0002137902 00000 n +0002138436 00000 n +0002138979 00000 n +0002139547 00000 n +0002140115 00000 n +0002140815 00000 n +0002141482 00000 n +0002141990 00000 n +0002142511 00000 n +0002143122 00000 n +0002143599 00000 n +0002143875 00000 n +0002144343 00000 n +0002145085 00000 n +0002145895 00000 n +0002146705 00000 n +0002147515 00000 n +0002148325 00000 n +0002149135 00000 n +0002149945 00000 n +0002150755 00000 n +0002151565 00000 n +0002152375 00000 n +0002153185 00000 n +0002153995 00000 n +0002154765 00000 n +0002155609 00000 n +0002156203 00000 n +0002156797 00000 n +0002157391 00000 n +0002157985 00000 n +0002158518 00000 n +0002158987 00000 n +0002159775 00000 n +0002160674 00000 n +0002161740 00000 n +0002162773 00000 n +0002163839 00000 n +0002164872 00000 n +0002165700 00000 n +0002165955 00000 n +0002166141 00000 n +0002166326 00000 n +0002166512 00000 n +0002166697 00000 n +0002166883 00000 n +0002167068 00000 n +0002167254 00000 n +0002167438 00000 n +0002167622 00000 n +0002167808 00000 n +0002167993 00000 n +0002168179 00000 n +0002168364 00000 n +0002168556 00000 n +0002168746 00000 n +0002168938 00000 n +0002169128 00000 n +0002169320 00000 n +0002169505 00000 n +0002169697 00000 n +0002169886 00000 n +0002170071 00000 n +0002170247 00000 n +0002170425 00000 n +0002170602 00000 n +0002170780 00000 n +0002170957 00000 n +0002171135 00000 n +0002171312 00000 n +0002171490 00000 n +0002171667 00000 n +0002171845 00000 n +0002172021 00000 n +0002172197 00000 n +0002172375 00000 n +0002172597 00000 n +0002172823 00000 n +0002173041 00000 n +0002173258 00000 n +0002173476 00000 n +0002173692 00000 n +0002173908 00000 n +0002174126 00000 n +0002174343 00000 n +0002174566 00000 n +0002174788 00000 n +0002175012 00000 n +0002175234 00000 n +0002175458 00000 n +0002175680 00000 n +0002175904 00000 n +0002176125 00000 n +0002176346 00000 n +0002176570 00000 n +0002176788 00000 n +0002177012 00000 n +0002177234 00000 n +0002177458 00000 n +0002177680 00000 n +0002177904 00000 n +0002178126 00000 n +0002178345 00000 n +0002178554 00000 n +0002178764 00000 n +0002178973 00000 n +0002179183 00000 n +0002179392 00000 n +0002179602 00000 n +0002179811 00000 n +0002180021 00000 n +0002180229 00000 n +0002180437 00000 n +0002180647 00000 n +0002180856 00000 n +0002181066 00000 n +0002181270 00000 n +0002181472 00000 n +0002181680 00000 n +0002181897 00000 n +0002182113 00000 n +0002182331 00000 n +0002182546 00000 n +0002182761 00000 n +0002182979 00000 n +0002183195 00000 n +0002183413 00000 n +0002183629 00000 n +0002183839 00000 n +0002184057 00000 n +0002184274 00000 n +0002184492 00000 n +0002184709 00000 n +0002184927 00000 n +0002185144 00000 n +0002185360 00000 n +0002185683 00000 n +0002186149 00000 n +0002186388 00000 n +0002186635 00000 n +0002186888 00000 n +0002187146 00000 n +0002187404 00000 n +0002187653 00000 n +0002187911 00000 n +0002188169 00000 n +0002188424 00000 n +0002188675 00000 n +0002188933 00000 n +0002189191 00000 n +0002189449 00000 n +0002189707 00000 n +0002189965 00000 n +0002190214 00000 n +0002190469 00000 n +0002190727 00000 n +0002190985 00000 n +0002191240 00000 n +0002191489 00000 n +0002191747 00000 n +0002192005 00000 n +0002192263 00000 n +0002192517 00000 n +0002192775 00000 n +0002193030 00000 n +0002193274 00000 n +0002193527 00000 n +0002193785 00000 n +0002194041 00000 n +0002194305 00000 n +0002194586 00000 n +0002194872 00000 n +0002195164 00000 n +0002195459 00000 n +0002195756 00000 n +0002196048 00000 n +0002196346 00000 n +0002196644 00000 n +0002196945 00000 n +0002197246 00000 n +0002197539 00000 n +0002197843 00000 n +0002198141 00000 n +0002198444 00000 n +0002198744 00000 n +0002199042 00000 n +0002199340 00000 n +0002199638 00000 n +0002199927 00000 n +0002200211 00000 n +0002200506 00000 n +0002200804 00000 n +0002201110 00000 n +0002201415 00000 n +0002201721 00000 n +0002202021 00000 n +0002202319 00000 n +0002202623 00000 n +0002202927 00000 n +0002203225 00000 n +0002203523 00000 n +0002203823 00000 n +0002204129 00000 n +0002204434 00000 n +0002204740 00000 n +0002205045 00000 n +0002205351 00000 n +0002205656 00000 n +0002205962 00000 n +0002206266 00000 n +0002206570 00000 n +0002206876 00000 n +0002207176 00000 n +0002207475 00000 n +0002207768 00000 n +0002208052 00000 n +0002208343 00000 n +0002208641 00000 n +0002208943 00000 n +0002209249 00000 n +0002209554 00000 n +0002209860 00000 n +0002210164 00000 n +0002210468 00000 n +0002210774 00000 n +0002211079 00000 n +0002211385 00000 n +0002211690 00000 n +0002211991 00000 n +0002212297 00000 n +0002212598 00000 n +0002212898 00000 n +0002213204 00000 n +0002213509 00000 n +0002213815 00000 n +0002214120 00000 n +0002214426 00000 n +0002214731 00000 n +0002215032 00000 n +0002215330 00000 n +0002215630 00000 n +0002215933 00000 n +0002216231 00000 n +0002216533 00000 n +0002216834 00000 n +0002217132 00000 n +0002217430 00000 n +0002217728 00000 n +0002218032 00000 n +0002218332 00000 n +0002218630 00000 n +0002218928 00000 n +0002219215 00000 n +0002219499 00000 n +0002219794 00000 n +0002220092 00000 n +0002220396 00000 n +0002220694 00000 n +0002220992 00000 n +0002221290 00000 n +0002221588 00000 n +0002221891 00000 n +0002222192 00000 n +0002222492 00000 n +0002222792 00000 n +0002223090 00000 n +0002223388 00000 n +0002223689 00000 n +0002223995 00000 n +0002224300 00000 n +0002224604 00000 n +0002224902 00000 n +0002225191 00000 n +0002225483 00000 n +0002225767 00000 n +0002226051 00000 n +0002226337 00000 n +0002226624 00000 n +0002226922 00000 n +0002227220 00000 n +0002227518 00000 n +0002227824 00000 n +0002228124 00000 n +0002228422 00000 n +0002228720 00000 n +0002229023 00000 n +0002229324 00000 n +0002229622 00000 n +0002229922 00000 n +0002230225 00000 n +0002230523 00000 n +0002230821 00000 n +0002231119 00000 n +0002231425 00000 n +0002231726 00000 n +0002232024 00000 n +0002232308 00000 n +0002232603 00000 n +0002232901 00000 n +0002233199 00000 n +0002233488 00000 n +0002233772 00000 n +0002234064 00000 n +0002234350 00000 n +0002234634 00000 n +0002234925 00000 n +0002235223 00000 n +0002235521 00000 n +0002235819 00000 n +0002236114 00000 n +0002236338 00000 n +0002236533 00000 n +0002236809 00000 n +0002237095 00000 n +0002237374 00000 n +0002237622 00000 n +0002237837 00000 n +0002238103 00000 n +0002238416 00000 n +0002238727 00000 n +0002239003 00000 n +0002239258 00000 n +0002239471 00000 n +0002239688 00000 n +0002239905 00000 n +0002240151 00000 n +0002240367 00000 n +0002240584 00000 n +0002240801 00000 n +0002241018 00000 n +0002241234 00000 n +0002241449 00000 n +0002241653 00000 n +0002241947 00000 n +0002242216 00000 n +0002242422 00000 n +0002242626 00000 n +0002242844 00000 n +0002243064 00000 n +0002243310 00000 n +0002243591 00000 n +0002243898 00000 n +0002244180 00000 n +0002244468 00000 n +0002244703 00000 n +0002244827 00000 n +0002244952 00000 n +0002245077 00000 n +0002245201 00000 n +0002245324 00000 n +0002245452 00000 n +0002245585 00000 n +0002245718 00000 n +0002245850 00000 n +0002245982 00000 n +0002246113 00000 n +0002246244 00000 n +0002246376 00000 n +0002246508 00000 n +0002246641 00000 n +0002246779 00000 n +0002246922 00000 n +0002247065 00000 n +0002247207 00000 n +0002247349 00000 n +0002247496 00000 n +0002247648 00000 n +0002247801 00000 n +0002247954 00000 n +0002248108 00000 n +0002248262 00000 n +0002248416 00000 n +0002248571 00000 n +0002248725 00000 n +0002248878 00000 n +0002249033 00000 n +0002249188 00000 n +0002249342 00000 n +0002249495 00000 n +0002249647 00000 n +0002249799 00000 n +0002249952 00000 n +0002250105 00000 n +0002250257 00000 n +0002250410 00000 n +0002250563 00000 n +0002250716 00000 n +0002250867 00000 n +0002251020 00000 n +0002251142 00000 n +0002251310 00000 n +0002251523 00000 n +0002251740 00000 n +0002251954 00000 n +0002252200 00000 n +0002252403 00000 n +0002252532 00000 n +0002252664 00000 n +0002252802 00000 n +0002252950 00000 n +0002253104 00000 n +0002253258 00000 n +0002253410 00000 n +0002253512 00000 n +0002253638 00000 n +0002253777 00000 n +0002253888 00000 n +0002253997 00000 n +0002254039 00000 n +0002254217 00000 n +trailer +<< /Size 11873 +/Root 11871 0 R +/Info 11872 0 R +/ID [<2A52977FBF8AB2019F911A01EEB46FF1> <2A52977FBF8AB2019F911A01EEB46FF1>] >> +startxref +2254494 +%%EOF diff --git a/Assets/Photon Unity Networking/PhotonNetwork-Documentation.pdf.meta b/Assets/Photon Unity Networking/PhotonNetwork-Documentation.pdf.meta new file mode 100644 index 0000000..187227e --- /dev/null +++ b/Assets/Photon Unity Networking/PhotonNetwork-Documentation.pdf.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f226ce9e7a33bc24c95f34dd9f583516 +labels: +- ExitGames +- PUN +- Photon +- Networking diff --git a/Assets/Photon Unity Networking/Plugins.meta b/Assets/Photon Unity Networking/Plugins.meta new file mode 100644 index 0000000..ec01c05 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0baa8eef365225546b4264b9bcb62d73 +folderAsset: yes +timeCreated: 1488120601 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork.meta new file mode 100644 index 0000000..21d121e --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 03e928b2d0804e841a27349ba627b615 +folderAsset: yes +timeCreated: 1488120601 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/CustomTypes.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/CustomTypes.cs new file mode 100644 index 0000000..22250aa --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/CustomTypes.cs @@ -0,0 +1,177 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2011 Exit Games GmbH +// +// +// +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +#pragma warning disable 1587 +/// \file +/// Sets up support for Unity-specific types. Can be a blueprint how to register your own Custom Types for sending. +#pragma warning restore 1587 + + +using ExitGames.Client.Photon; +using UnityEngine; + + +/// +/// Internally used class, containing de/serialization methods for various Unity-specific classes. +/// Adding those to the Photon serialization protocol allows you to send them in events, etc. +/// +internal static class CustomTypes +{ + /// Register + internal static void Register() + { + PhotonPeer.RegisterType(typeof(Vector2), (byte)'W', SerializeVector2, DeserializeVector2); + PhotonPeer.RegisterType(typeof(Vector3), (byte)'V', SerializeVector3, DeserializeVector3); + PhotonPeer.RegisterType(typeof(Quaternion), (byte)'Q', SerializeQuaternion, DeserializeQuaternion); + PhotonPeer.RegisterType(typeof(PhotonPlayer), (byte)'P', SerializePhotonPlayer, DeserializePhotonPlayer); + } + + + #region Custom De/Serializer Methods + + + public static readonly byte[] memVector3 = new byte[3 * 4]; + private static short SerializeVector3(StreamBuffer outStream, object customobject) + { + Vector3 vo = (Vector3)customobject; + + int index = 0; + lock (memVector3) + { + byte[] bytes = memVector3; + Protocol.Serialize(vo.x, bytes, ref index); + Protocol.Serialize(vo.y, bytes, ref index); + Protocol.Serialize(vo.z, bytes, ref index); + outStream.Write(bytes, 0, 3 * 4); + } + + return 3 * 4; + } + + private static object DeserializeVector3(StreamBuffer inStream, short length) + { + Vector3 vo = new Vector3(); + lock (memVector3) + { + inStream.Read(memVector3, 0, 3 * 4); + int index = 0; + Protocol.Deserialize(out vo.x, memVector3, ref index); + Protocol.Deserialize(out vo.y, memVector3, ref index); + Protocol.Deserialize(out vo.z, memVector3, ref index); + } + + return vo; + } + + + public static readonly byte[] memVector2 = new byte[2 * 4]; + private static short SerializeVector2(StreamBuffer outStream, object customobject) + { + Vector2 vo = (Vector2)customobject; + lock (memVector2) + { + byte[] bytes = memVector2; + int index = 0; + Protocol.Serialize(vo.x, bytes, ref index); + Protocol.Serialize(vo.y, bytes, ref index); + outStream.Write(bytes, 0, 2 * 4); + } + + return 2 * 4; + } + + private static object DeserializeVector2(StreamBuffer inStream, short length) + { + Vector2 vo = new Vector2(); + lock (memVector2) + { + inStream.Read(memVector2, 0, 2 * 4); + int index = 0; + Protocol.Deserialize(out vo.x, memVector2, ref index); + Protocol.Deserialize(out vo.y, memVector2, ref index); + } + + return vo; + } + + + public static readonly byte[] memQuarternion = new byte[4 * 4]; + private static short SerializeQuaternion(StreamBuffer outStream, object customobject) + { + Quaternion o = (Quaternion)customobject; + + lock (memQuarternion) + { + byte[] bytes = memQuarternion; + int index = 0; + Protocol.Serialize(o.w, bytes, ref index); + Protocol.Serialize(o.x, bytes, ref index); + Protocol.Serialize(o.y, bytes, ref index); + Protocol.Serialize(o.z, bytes, ref index); + outStream.Write(bytes, 0, 4 * 4); + } + + return 4 * 4; + } + + private static object DeserializeQuaternion(StreamBuffer inStream, short length) + { + Quaternion o = new Quaternion(); + + lock (memQuarternion) + { + inStream.Read(memQuarternion, 0, 4 * 4); + int index = 0; + Protocol.Deserialize(out o.w, memQuarternion, ref index); + Protocol.Deserialize(out o.x, memQuarternion, ref index); + Protocol.Deserialize(out o.y, memQuarternion, ref index); + Protocol.Deserialize(out o.z, memQuarternion, ref index); + } + + return o; + } + + public static readonly byte[] memPlayer = new byte[4]; + private static short SerializePhotonPlayer(StreamBuffer outStream, object customobject) + { + int ID = ((PhotonPlayer)customobject).ID; + + lock (memPlayer) + { + byte[] bytes = memPlayer; + int off = 0; + Protocol.Serialize(ID, bytes, ref off); + outStream.Write(bytes, 0, 4); + return 4; + } + } + + private static object DeserializePhotonPlayer(StreamBuffer inStream, short length) + { + int ID; + lock (memPlayer) + { + inStream.Read(memPlayer, 0, length); + int off = 0; + Protocol.Deserialize(out ID, memPlayer, ref off); + } + + if (PhotonNetwork.networkingPeer.mActors.ContainsKey(ID)) + { + return PhotonNetwork.networkingPeer.mActors[ID]; + } + else + { + return null; + } + } + + #endregion +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/CustomTypes.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/CustomTypes.cs.meta new file mode 100644 index 0000000..82e3a5c --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/CustomTypes.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ab517bd36a2b2504b83979fcad45d4a2 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Enums.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Enums.cs new file mode 100644 index 0000000..da63e7f --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Enums.cs @@ -0,0 +1,561 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2011 Exit Games GmbH +// +// +// +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +#pragma warning disable 1587 +/// \file +/// Wraps up several of the commonly used enumerations. +#pragma warning restore 1587 + + +using System; +using ExitGames.Client.Photon; + + +/// +/// This enum defines the set of MonoMessages Photon Unity Networking is using as callbacks. Implemented by PunBehaviour. +/// +/// +/// Much like "Update()" in Unity, PUN will call methods in specific situations. +/// Often, these methods are triggered when network operations complete (example: when joining a room). +/// +/// All those methods are defined and described in this enum and implemented by PunBehaviour +/// (which makes it easy to implement them as override). +/// +/// Each entry is the name of such a method and the description tells you when it gets used by PUN. +/// +/// Make sure to read the remarks per entry as some methods have optional parameters. +/// +/// \ingroup publicApi +public enum PhotonNetworkingMessage +{ + /// + /// Called when the initial connection got established but before you can use the server. OnJoinedLobby() or OnConnectedToMaster() are called when PUN is ready. + /// + /// + /// This callback is only useful to detect if the server can be reached at all (technically). + /// Most often, it's enough to implement OnFailedToConnectToPhoton() and OnDisconnectedFromPhoton(). + /// + /// OnJoinedLobby() or OnConnectedToMaster() are called when PUN is ready. + /// + /// When this is called, the low level connection is established and PUN will send your AppId, the user, etc in the background. + /// This is not called for transitions from the masterserver to game servers. + /// + /// Example: void OnConnectedToPhoton() { ... } + /// + OnConnectedToPhoton, + + /// + /// Called when the local user/client left a room. + /// + /// + /// When leaving a room, PUN brings you back to the Master Server. + /// Before you can use lobbies and join or create rooms, OnJoinedLobby() or OnConnectedToMaster() will get called again. + /// + /// Example: void OnLeftRoom() { ... } + /// + OnLeftRoom, + + /// + /// Called after switching to a new MasterClient when the current one leaves. + /// + /// + /// This is not called when this client enters a room. + /// The former MasterClient is still in the player list when this method get called. + /// + /// Example: void OnMasterClientSwitched(PhotonPlayer newMasterClient) { ... } + /// + OnMasterClientSwitched, + + /// + /// Called when a CreateRoom() call failed. Optional parameters provide ErrorCode and message. + /// + /// + /// Most likely because the room name is already in use (some other client was faster than you). + /// PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational. + /// + /// Example: void OnPhotonCreateRoomFailed() { ... } + /// + /// Example: void OnPhotonCreateRoomFailed(object[] codeAndMsg) { // codeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg. } + /// + OnPhotonCreateRoomFailed, + + /// + /// Called when a JoinRoom() call failed. Optional parameters provide ErrorCode and message. + /// + /// + /// Most likely error is that the room does not exist or the room is full (some other client was faster than you). + /// PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational. + /// + /// Example: void OnPhotonJoinRoomFailed() { ... } + /// + /// Example: void OnPhotonJoinRoomFailed(object[] codeAndMsg) { // codeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg. } + /// + OnPhotonJoinRoomFailed, + + /// + /// Called when this client created a room and entered it. OnJoinedRoom() will be called as well. + /// + /// + /// This callback is only called on the client which created a room (see PhotonNetwork.CreateRoom). + /// + /// As any client might close (or drop connection) anytime, there is a chance that the + /// creator of a room does not execute OnCreatedRoom. + /// + /// If you need specific room properties or a "start signal", it is safer to implement + /// OnMasterClientSwitched() and to make the new MasterClient check the room's state. + /// + /// Example: void OnCreatedRoom() { ... } + /// + OnCreatedRoom, + + /// + /// Called on entering a lobby on the Master Server. The actual room-list updates will call OnReceivedRoomListUpdate(). + /// + /// + /// Note: When PhotonNetwork.autoJoinLobby is false, OnConnectedToMaster() will be called and the room list won't become available. + /// + /// While in the lobby, the roomlist is automatically updated in fixed intervals (which you can't modify). + /// The room list gets available when OnReceivedRoomListUpdate() gets called after OnJoinedLobby(). + /// + /// Example: void OnJoinedLobby() { ... } + /// + OnJoinedLobby, + + /// + /// Called after leaving a lobby. + /// + /// + /// When you leave a lobby, [CreateRoom](@ref PhotonNetwork.CreateRoom) and [JoinRandomRoom](@ref PhotonNetwork.JoinRandomRoom) + /// automatically refer to the default lobby. + /// + /// Example: void OnLeftLobby() { ... } + /// + OnLeftLobby, + + /// + /// Called after disconnecting from the Photon server. + /// + /// + /// In some cases, other callbacks are called before OnDisconnectedFromPhoton is called. + /// Examples: OnConnectionFail() and OnFailedToConnectToPhoton(). + /// + /// Example: void OnDisconnectedFromPhoton() { ... } + /// + OnDisconnectedFromPhoton, + + /// + /// Called when something causes the connection to fail (after it was established), followed by a call to OnDisconnectedFromPhoton(). + /// + /// + /// If the server could not be reached in the first place, OnFailedToConnectToPhoton is called instead. + /// The reason for the error is provided as StatusCode. + /// + /// Example: void OnConnectionFail(DisconnectCause cause) { ... } + /// + OnConnectionFail, + + /// + /// Called if a connect call to the Photon server failed before the connection was established, followed by a call to OnDisconnectedFromPhoton(). + /// + /// + /// OnConnectionFail only gets called when a connection to a Photon server was established in the first place. + /// + /// Example: void OnFailedToConnectToPhoton(DisconnectCause cause) { ... } + /// + OnFailedToConnectToPhoton, + + /// + /// Called for any update of the room-listing while in a lobby (PhotonNetwork.insideLobby) on the Master Server. + /// + /// + /// PUN provides the list of rooms by PhotonNetwork.GetRoomList().
+ /// Each item is a RoomInfo which might include custom properties (provided you defined those as lobby-listed when creating a room). + /// + /// Not all types of lobbies provide a listing of rooms to the client. Some are silent and specialized for server-side matchmaking. + /// + /// Example: void OnReceivedRoomListUpdate() { ... } + ///
+ OnReceivedRoomListUpdate, + + /// + /// Called when entering a room (by creating or joining it). Called on all clients (including the Master Client). + /// + /// + /// This method is commonly used to instantiate player characters. + /// If a match has to be started "actively", you can instead call an [PunRPC](@ref PhotonView.RPC) triggered by a user's button-press or a timer. + /// + /// When this is called, you can usually already access the existing players in the room via PhotonNetwork.playerList. + /// Also, all custom properties should be already available as Room.customProperties. Check Room.playerCount to find out if + /// enough players are in the room to start playing. + /// + /// Example: void OnJoinedRoom() { ... } + /// + OnJoinedRoom, + + /// + /// Called when a remote player entered the room. This PhotonPlayer is already added to the playerlist at this time. + /// + /// + /// If your game starts with a certain number of players, this callback can be useful to check the + /// Room.playerCount and find out if you can start. + /// + /// Example: void OnPhotonPlayerConnected(PhotonPlayer newPlayer) { ... } + /// + OnPhotonPlayerConnected, + + /// + /// Called when a remote player left the room. This PhotonPlayer is already removed from the playerlist at this time. + /// + /// + /// When your client calls PhotonNetwork.leaveRoom, PUN will call this method on the remaining clients. + /// When a remote client drops connection or gets closed, this callback gets executed. after a timeout + /// of several seconds. + /// + /// Example: void OnPhotonPlayerDisconnected(PhotonPlayer otherPlayer) { ... } + /// + OnPhotonPlayerDisconnected, + + /// + /// Called after a JoinRandom() call failed. Optional parameters provide ErrorCode and message. + /// + /// + /// Most likely all rooms are full or no rooms are available. + /// When using multiple lobbies (via JoinLobby or TypedLobby), another lobby might have more/fitting rooms. + /// PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational. + /// + /// Example: void OnPhotonRandomJoinFailed() { ... } + /// + /// Example: void OnPhotonRandomJoinFailed(object[] codeAndMsg) { // codeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg. } + /// + OnPhotonRandomJoinFailed, + + /// + /// Called after the connection to the master is established and authenticated but only when PhotonNetwork.autoJoinLobby is false. + /// + /// + /// If you set PhotonNetwork.autoJoinLobby to true, OnJoinedLobby() will be called instead of this. + /// + /// You can join rooms and create them even without being in a lobby. The default lobby is used in that case. + /// The list of available rooms won't become available unless you join a lobby via PhotonNetwork.joinLobby. + /// + /// Example: void OnConnectedToMaster() { ... } + /// + OnConnectedToMaster, + + /// + /// Implement to customize the data a PhotonView regularly synchronizes. Called every 'network-update' when observed by PhotonView. + /// + /// + /// This method will be called in scripts that are assigned as Observed component of a PhotonView. + /// PhotonNetwork.sendRateOnSerialize affects how often this method is called. + /// PhotonNetwork.sendRate affects how often packages are sent by this client. + /// + /// Implementing this method, you can customize which data a PhotonView regularly synchronizes. + /// Your code defines what is being sent (content) and how your data is used by receiving clients. + /// + /// Unlike other callbacks, OnPhotonSerializeView only gets called when it is assigned + /// to a PhotonView as PhotonView.observed script. + /// + /// To make use of this method, the PhotonStream is essential. It will be in "writing" mode" on the + /// client that controls a PhotonView (PhotonStream.isWriting == true) and in "reading mode" on the + /// remote clients that just receive that the controlling client sends. + /// + /// If you skip writing any value into the stream, PUN will skip the update. Used carefully, this can + /// conserve bandwidth and messages (which have a limit per room/second). + /// + /// Note that OnPhotonSerializeView is not called on remote clients when the sender does not send + /// any update. This can't be used as "x-times per second Update()". + /// + /// Example: void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { ... } + /// + OnPhotonSerializeView, + + /// + /// Called on all scripts on a GameObject (and children) that have been Instantiated using PhotonNetwork.Instantiate. + /// + /// + /// PhotonMessageInfo parameter provides info about who created the object and when (based off PhotonNetworking.time). + /// + /// Example: void OnPhotonInstantiate(PhotonMessageInfo info) { ... } + /// + OnPhotonInstantiate, + + /// + /// Because the concurrent user limit was (temporarily) reached, this client is rejected by the server and disconnecting. + /// + /// + /// When this happens, the user might try again later. You can't create or join rooms in OnPhotonMaxCcuReached(), cause the client will be disconnecting. + /// You can raise the CCU limits with a new license (when you host yourself) or extended subscription (when using the Photon Cloud). + /// The Photon Cloud will mail you when the CCU limit was reached. This is also visible in the Dashboard (webpage). + /// + /// Example: void OnPhotonMaxCccuReached() { ... } + /// + OnPhotonMaxCccuReached, + + /// + /// Called when a room's custom properties changed. The propertiesThatChanged contains all that was set via Room.SetCustomProperties. + /// + /// + /// Since v1.25 this method has one parameter: Hashtable propertiesThatChanged. + /// Changing properties must be done by Room.SetCustomProperties, which causes this callback locally, too. + /// + /// Example: void OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged) { ... } + /// + OnPhotonCustomRoomPropertiesChanged, + + /// + /// Called when custom player-properties are changed. Player and the changed properties are passed as object[]. + /// + /// + /// Since v1.25 this method has one parameter: object[] playerAndUpdatedProps, which contains two entries.
+ /// [0] is the affected PhotonPlayer.
+ /// [1] is the Hashtable of properties that changed.
+ /// + /// We are using a object[] due to limitations of Unity's GameObject.SendMessage (which has only one optional parameter). + /// + /// Changing properties must be done by PhotonPlayer.SetCustomProperties, which causes this callback locally, too. + /// + /// Example:
+    /// void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps) {
+    ///     PhotonPlayer player = playerAndUpdatedProps[0] as PhotonPlayer;
+    ///     Hashtable props = playerAndUpdatedProps[1] as Hashtable;
+    ///     //...
+    /// }
+ ///
+ OnPhotonPlayerPropertiesChanged, + + /// + /// Called when the server sent the response to a FindFriends request and updated PhotonNetwork.Friends. + /// + /// + /// The friends list is available as PhotonNetwork.Friends, listing name, online state and + /// the room a user is in (if any). + /// + /// Example: void OnUpdatedFriendList() { ... } + /// + OnUpdatedFriendList, + + /// + /// Called when the custom authentication failed. Followed by disconnect! + /// + /// + /// Custom Authentication can fail due to user-input, bad tokens/secrets. + /// If authentication is successful, this method is not called. Implement OnJoinedLobby() or OnConnectedToMaster() (as usual). + /// + /// During development of a game, it might also fail due to wrong configuration on the server side. + /// In those cases, logging the debugMessage is very important. + /// + /// Unless you setup a custom authentication service for your app (in the [Dashboard](https://www.photonengine.com/dashboard)), + /// this won't be called! + /// + /// Example: void OnCustomAuthenticationFailed(string debugMessage) { ... } + /// + OnCustomAuthenticationFailed, + + /// + /// Called when your Custom Authentication service responds with additional data. + /// + /// + /// Custom Authentication services can include some custom data in their response. + /// When present, that data is made available in this callback as Dictionary. + /// While the keys of your data have to be strings, the values can be either string or a number (in Json). + /// You need to make extra sure, that the value type is the one you expect. Numbers become (currently) int64. + /// + /// Example: void OnCustomAuthenticationResponse(Dictionary<string, object> data) { ... } + /// + /// + OnCustomAuthenticationResponse, + + /// + /// Called by PUN when the response to a WebRPC is available. See PhotonNetwork.WebRPC. + /// + /// + /// Important: The response.ReturnCode is 0 if Photon was able to reach your web-service. + /// The content of the response is what your web-service sent. You can create a WebResponse instance from it. + /// Example: WebRpcResponse webResponse = new WebRpcResponse(operationResponse); + /// + /// Please note: Class OperationResponse is in a namespace which needs to be "used": + /// using ExitGames.Client.Photon; // includes OperationResponse (and other classes) + /// + /// The OperationResponse.ReturnCode by Photon is: + /// 0 for "OK" + /// -3 for "Web-Service not configured" (see Dashboard / WebHooks) + /// -5 for "Web-Service does now have RPC path/name" (at least for Azure) + /// + /// Example: void OnWebRpcResponse(OperationResponse response) { ... } + /// + OnWebRpcResponse, + + /// + /// Called when another player requests ownership of a PhotonView from you (the current owner). + /// + /// + /// The parameter viewAndPlayer contains: + /// + /// PhotonView view = viewAndPlayer[0] as PhotonView; + /// + /// PhotonPlayer requestingPlayer = viewAndPlayer[1] as PhotonPlayer; + /// + /// void OnOwnershipRequest(object[] viewAndPlayer) {} // + OnOwnershipRequest, + + /// + /// Called when the Master Server sent an update for the Lobby Statistics, updating PhotonNetwork.LobbyStatistics. + /// + /// + /// This callback has two preconditions: + /// EnableLobbyStatistics must be set to true, before this client connects. + /// And the client has to be connected to the Master Server, which is providing the info about lobbies. + /// + OnLobbyStatisticsUpdate, +} + + +/// Used to define the level of logging output created by the PUN classes. Either log errors, info (some more) or full. +/// \ingroup publicApi +public enum PhotonLogLevel +{ + /// Show only errors. Minimal output. Note: Some might be "runtime errors" which you have to expect. + ErrorsOnly, + /// Logs some of the workflow, calls and results. + Informational, + /// Every available log call gets into the console/log. Only use for debugging. + Full +} + + +/// Enum of "target" options for RPCs. These define which remote clients get your RPC call. +/// \ingroup publicApi +public enum PhotonTargets +{ + /// Sends the RPC to everyone else and executes it immediately on this client. Player who join later will not execute this RPC. + All, + /// Sends the RPC to everyone else. This client does not execute the RPC. Player who join later will not execute this RPC. + Others, + /// Sends the RPC to MasterClient only. Careful: The MasterClient might disconnect before it executes the RPC and that might cause dropped RPCs. + MasterClient, + /// Sends the RPC to everyone else and executes it immediately on this client. New players get the RPC when they join as it's buffered (until this client leaves). + AllBuffered, + /// Sends the RPC to everyone. This client does not execute the RPC. New players get the RPC when they join as it's buffered (until this client leaves). + OthersBuffered, + /// Sends the RPC to everyone (including this client) through the server. + /// + /// This client executes the RPC like any other when it received it from the server. + /// Benefit: The server's order of sending the RPCs is the same on all clients. + /// + AllViaServer, + /// Sends the RPC to everyone (including this client) through the server and buffers it for players joining later. + /// + /// This client executes the RPC like any other when it received it from the server. + /// Benefit: The server's order of sending the RPCs is the same on all clients. + /// + AllBufferedViaServer +} + + +///
Currently available Photon Cloud regions as enum. +/// +/// This is used in PhotonNetwork.ConnectToRegion. +/// +public enum CloudRegionCode +{ + /// European servers in Amsterdam. + eu = 0, + /// US servers (East Coast). + us = 1, + /// Asian servers in Singapore. + asia = 2, + /// Japanese servers in Tokyo. + jp = 3, + /// Australian servers in Melbourne. + au = 5, + ///USA West, San José, usw + usw = 6, + ///South America , Sao Paulo, sa + sa = 7, + ///Canada East, Montreal, cae + cae = 8, + ///South Korea, Seoul, kr + kr = 9, + ///India, Chennai, in + @in = 10, + + /// No region selected. + none = 4 +}; + + +/// +/// Available regions as enum of flags. To be used as "enabled" flags for Best Region pinging. +/// +/// Note that these enum values skip CloudRegionCode.none and their values are in strict order (power of 2). +[Flags] +public enum CloudRegionFlag +{ + eu = 1 << 0, + us = 1 << 1, + asia = 1 << 2, + jp = 1 << 3, + au = 1 << 4, + usw = 1 << 5, + sa = 1 << 6, + cae = 1 << 7, + kr = 1 << 8, + @in = 1 << 9, +}; + + +/// +/// High level connection state of the client. Better use the more detailed . +/// +public enum ConnectionState +{ + Disconnected, + Connecting, + Connected, + Disconnecting, + InitializingApplication +} + + +/// +/// Defines how the communication gets encrypted. +/// +public enum EncryptionMode +{ + /// + /// This is the default encryption mode: Messages get encrypted only on demand (when you send operations with the "encrypt" parameter set to true). + /// + PayloadEncryption, + /// + /// With this encryption mode for UDP, the connection gets setup and all further datagrams get encrypted almost entirely. On-demand message encryption (like in PayloadEncryption) is skipped. + /// + /// + /// This mode requires AuthOnce or AuthOnceWss as AuthMode! + /// + DatagramEncryption = 10, +} + + +public static class EncryptionDataParameters +{ + /// + /// Key for encryption mode + /// + public const byte Mode = 0; + /// + /// Key for first secret + /// + public const byte Secret1 = 1; + /// + /// Key for second secret + /// + public const byte Secret2 = 2; +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Enums.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Enums.cs.meta new file mode 100644 index 0000000..d612c91 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Enums.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b7962bbdaba2a4940b1341d755abd40d +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Extensions.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Extensions.cs new file mode 100644 index 0000000..ed02398 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Extensions.cs @@ -0,0 +1,246 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2011 Exit Games GmbH +// +// +// Provides some helpful methods and extensions for Hashtables, etc. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; +using Hashtable = ExitGames.Client.Photon.Hashtable; +using SupportClassPun = ExitGames.Client.Photon.SupportClass; + + +/// +/// This static class defines some useful extension methods for several existing classes (e.g. Vector3, float and others). +/// +public static class Extensions +{ + + public static Dictionary ParametersOfMethods = new Dictionary(); + public static ParameterInfo[] GetCachedParemeters(this MethodInfo mo) + { + ParameterInfo[] result; + bool cached= ParametersOfMethods.TryGetValue(mo, out result); + + if (!cached) + { + result = mo.GetParameters(); + ParametersOfMethods[mo] = result; + } + + return result; + } + + public static PhotonView[] GetPhotonViewsInChildren(this UnityEngine.GameObject go) + { + return go.GetComponentsInChildren(true) as PhotonView[]; + } + + public static PhotonView GetPhotonView(this UnityEngine.GameObject go) + { + return go.GetComponent() as PhotonView; + } + + /// compares the squared magnitude of target - second to given float value + public static bool AlmostEquals(this Vector3 target, Vector3 second, float sqrMagnitudePrecision) + { + return (target - second).sqrMagnitude < sqrMagnitudePrecision; // TODO: inline vector methods to optimize? + } + + /// compares the squared magnitude of target - second to given float value + public static bool AlmostEquals(this Vector2 target, Vector2 second, float sqrMagnitudePrecision) + { + return (target - second).sqrMagnitude < sqrMagnitudePrecision; // TODO: inline vector methods to optimize? + } + + /// compares the angle between target and second to given float value + public static bool AlmostEquals(this Quaternion target, Quaternion second, float maxAngle) + { + return Quaternion.Angle(target, second) < maxAngle; + } + + /// compares two floats and returns true of their difference is less than floatDiff + public static bool AlmostEquals(this float target, float second, float floatDiff) + { + return Mathf.Abs(target - second) < floatDiff; + } + + /// + /// Merges all keys from addHash into the target. Adds new keys and updates the values of existing keys in target. + /// + /// The IDictionary to update. + /// The IDictionary containing data to merge into target. + public static void Merge(this IDictionary target, IDictionary addHash) + { + if (addHash == null || target.Equals(addHash)) + { + return; + } + + foreach (object key in addHash.Keys) + { + target[key] = addHash[key]; + } + } + + /// + /// Merges keys of type string to target Hashtable. + /// + /// + /// Does not remove keys from target (so non-string keys CAN be in target if they were before). + /// + /// The target IDicitionary passed in plus all string-typed keys from the addHash. + /// A IDictionary that should be merged partly into target to update it. + public static void MergeStringKeys(this IDictionary target, IDictionary addHash) + { + if (addHash == null || target.Equals(addHash)) + { + return; + } + + foreach (object key in addHash.Keys) + { + // only merge keys of type string + if (key is string) + { + target[key] = addHash[key]; + } + } + } + + /// Helper method for debugging of IDictionary content, inlcuding type-information. Using this is not performant. + /// Should only be used for debugging as necessary. + /// Some Dictionary or Hashtable. + /// String of the content of the IDictionary. + public static string ToStringFull(this IDictionary origin) + { + return SupportClassPun.DictionaryToString(origin, false); + } + + + /// Helper method for debugging of object[] content. Using this is not performant. + /// Should only be used for debugging as necessary. + /// Any object[]. + /// A comma-separated string containing each value's ToString(). + public static string ToStringFull(this object[] data) + { + if (data == null) return "null"; + + string[] sb = new string[data.Length]; + for (int i = 0; i < data.Length; i++) + { + object o = data[i]; + sb[i] = (o != null) ? o.ToString() : "null"; + } + + return string.Join(", ", sb); + } + + + /// + /// This method copies all string-typed keys of the original into a new Hashtable. + /// + /// + /// Does not recurse (!) into hashes that might be values in the root-hash. + /// This does not modify the original. + /// + /// The original IDictonary to get string-typed keys from. + /// New Hashtable containing only string-typed keys of the original. + public static Hashtable StripToStringKeys(this IDictionary original) + { + Hashtable target = new Hashtable(); + if (original != null) + { + foreach (object key in original.Keys) + { + if (key is string) + { + target[key] = original[key]; + } + } + } + + return target; + } + + /// + /// This removes all key-value pairs that have a null-reference as value. + /// Photon properties are removed by setting their value to null. + /// Changes the original passed IDictionary! + /// + /// The IDictionary to strip of keys with null-values. + public static void StripKeysWithNullValues(this IDictionary original) + { + object[] keys = new object[original.Count]; + //original.Keys.CopyTo(keys, 0); // todo: figure out which platform didn't support this + int i = 0; + foreach (object k in original.Keys) + { + keys[i++] = k; + } + + for (int index = 0; index < keys.Length; index++) + { + var key = keys[index]; + if (original[key] == null) + { + original.Remove(key); + } + } + } + + /// + /// Checks if a particular integer value is in an int-array. + /// + /// This might be useful to look up if a particular actorNumber is in the list of players of a room. + /// The array of ints to check. + /// The number to lookup in target. + /// True if nr was found in target. + public static bool Contains(this int[] target, int nr) + { + if (target == null) + { + return false; + } + + for (int index = 0; index < target.Length; index++) + { + if (target[index] == nr) + { + return true; + } + } + + return false; + } +} + + +/// Small number of extension methods that make it easier for PUN to work cross-Unity-versions. +public static class GameObjectExtensions +{ + /// Unity-version-independent replacement for active GO property. + /// Unity 3.5: active. Any newer Unity: activeInHierarchy. + public static bool GetActive(this GameObject target) + { + #if UNITY_3_5 + return target.active; + #else + return target.activeInHierarchy; + #endif + } + + #if UNITY_3_5 + /// Unity-version-independent setter for active and SetActive(). + public static void SetActive(this GameObject target, bool value) + { + target.active = value; + } + #endif +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Extensions.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Extensions.cs.meta new file mode 100644 index 0000000..2025f00 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Extensions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3c0464991e33a70498abdd85c150cc59 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/FriendInfo.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/FriendInfo.cs new file mode 100644 index 0000000..f40a34f --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/FriendInfo.cs @@ -0,0 +1,26 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2013 Exit Games GmbH +// +// +// Collection of values related to a user / friend. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + + +/// +/// Used to store info about a friend's online state and in which room he/she is. +/// +public class FriendInfo +{ + public string Name { get; internal protected set; } + public bool IsOnline { get; internal protected set; } + public string Room { get; internal protected set; } + public bool IsInRoom { get { return IsOnline && !string.IsNullOrEmpty(this.Room); } } + + public override string ToString() + { + return string.Format("{0}\t is: {1}", this.Name, (!this.IsOnline) ? "offline" : this.IsInRoom ? "playing" : "on master"); + } +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/FriendInfo.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/FriendInfo.cs.meta new file mode 100644 index 0000000..b810efc --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/FriendInfo.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 94ba1138c322ea04c8c37cfbcf87f468 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/GizmoType.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/GizmoType.cs new file mode 100644 index 0000000..930edfc --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/GizmoType.cs @@ -0,0 +1,36 @@ +using UnityEngine; + +namespace ExitGames.Client.GUI +{ + public enum GizmoType + { + WireSphere, + Sphere, + WireCube, + Cube, + } + + public class GizmoTypeDrawer + { + public static void Draw( Vector3 center, GizmoType type, Color color, float size ) + { + Gizmos.color = color; + + switch( type ) + { + case GizmoType.Cube: + Gizmos.DrawCube( center, Vector3.one * size ); + break; + case GizmoType.Sphere: + Gizmos.DrawSphere( center, size * 0.5f ); + break; + case GizmoType.WireCube: + Gizmos.DrawWireCube( center, Vector3.one * size ); + break; + case GizmoType.WireSphere: + Gizmos.DrawWireSphere( center, size * 0.5f ); + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/GizmoType.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/GizmoType.cs.meta new file mode 100644 index 0000000..a96a3c7 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/GizmoType.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a744e8c91e32ce742b8f79e048a8714a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/LoadbalancingPeer.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/LoadbalancingPeer.cs new file mode 100644 index 0000000..3ad25a7 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/LoadbalancingPeer.cs @@ -0,0 +1,1792 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2016 Exit Games GmbH +// +// +// Provides operations to use the LoadBalancing and Cloud photon servers. +// No logic is implemented here. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +using System; +using System.Collections; +using System.Collections.Generic; +using ExitGames.Client.Photon; + +#if UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_5 || UNITY_5_0 || UNITY_5_1 || UNITY_6 + using UnityEngine; + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClassPun = ExitGames.Client.Photon.SupportClass; +#endif + + + + + /// + /// Internally used by PUN. + /// A LoadbalancingPeer provides the operations and enum definitions needed to use the loadbalancing server application which is also used in Photon Cloud. + /// + /// + /// The LoadBalancingPeer does not keep a state, instead this is done by a LoadBalancingClient. + /// + internal class LoadBalancingPeer : PhotonPeer + { + + internal bool IsProtocolSecure + { + get { return this.UsedProtocol == ConnectionProtocol.WebSocketSecure; } + } + + private readonly Dictionary opParameters = new Dictionary(); // used in OpRaiseEvent() (avoids lots of new Dictionary() calls) + + /// + /// Creates a Peer with selected connection protocol. + /// + /// Each connection protocol has it's own default networking ports for Photon. + /// The preferred option is UDP. + public LoadBalancingPeer(ConnectionProtocol protocolType) : base(protocolType) + { + // this does not require a Listener, so: + // make sure to set this.Listener before using a peer! + } + + /// + /// Creates a Peer with default connection protocol (UDP). + /// + public LoadBalancingPeer(IPhotonPeerListener listener, ConnectionProtocol protocolType) : base(listener, protocolType) + { + } + + public virtual bool OpGetRegions(string appId) + { + Dictionary parameters = new Dictionary(); + parameters[(byte)ParameterCode.ApplicationId] = appId; + + return this.OpCustom(OperationCode.GetRegions, parameters, true, 0, true); + } + + /// + /// Joins the lobby on the Master Server, where you get a list of RoomInfos of currently open rooms. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// The lobby join to. + /// If the operation could be sent (has to be connected). + public virtual bool OpJoinLobby(TypedLobby lobby = null) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinLobby()"); + } + + Dictionary parameters = null; + if (lobby != null && !lobby.IsDefault) + { + parameters = new Dictionary(); + parameters[(byte)ParameterCode.LobbyName] = lobby.Name; + parameters[(byte)ParameterCode.LobbyType] = (byte)lobby.Type; + } + + return this.OpCustom(OperationCode.JoinLobby, parameters, true); + } + + + /// + /// Leaves the lobby on the Master Server. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// If the operation could be sent (requires connection). + public virtual bool OpLeaveLobby() + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpLeaveLobby()"); + } + + return this.OpCustom(OperationCode.LeaveLobby, null, true); + } + + + private void RoomOptionsToOpParameters(Dictionary op, RoomOptions roomOptions) + { + if (roomOptions == null) + { + roomOptions = new RoomOptions(); + } + + Hashtable gameProperties = new Hashtable(); + gameProperties[GamePropertyKey.IsOpen] = roomOptions.IsOpen; + gameProperties[GamePropertyKey.IsVisible] = roomOptions.IsVisible; + gameProperties[GamePropertyKey.PropsListedInLobby] = (roomOptions.CustomRoomPropertiesForLobby == null) ? new string[0] : roomOptions.CustomRoomPropertiesForLobby; + gameProperties.MergeStringKeys(roomOptions.CustomRoomProperties); + if (roomOptions.MaxPlayers > 0) + { + gameProperties[GamePropertyKey.MaxPlayers] = roomOptions.MaxPlayers; + } + + op[ParameterCode.GameProperties] = gameProperties; + + op[ParameterCode.CleanupCacheOnLeave] = roomOptions.CleanupCacheOnLeave; // this is actually setting the room's config + if (roomOptions.CleanupCacheOnLeave) + { + gameProperties[GamePropertyKey.CleanupCacheOnLeave] = true; // this is only informational for the clients which join + } + + if (roomOptions.PlayerTtl > 0 || roomOptions.PlayerTtl == -1) + { + op[ParameterCode.CheckUserOnJoin] = true; // this affects rejoining a room. requires a userId to be used. added in v1.67 + op[ParameterCode.PlayerTTL] = roomOptions.PlayerTtl; // TURNBASED + } + + if (roomOptions.EmptyRoomTtl > 0) + { + op[ParameterCode.EmptyRoomTTL] = roomOptions.EmptyRoomTtl; //TURNBASED + } + + if (roomOptions.SuppressRoomEvents) + { + op[ParameterCode.SuppressRoomEvents] = true; + } + if (roomOptions.Plugins != null) + { + op[ParameterCode.Plugins] = roomOptions.Plugins; + } + if (roomOptions.PublishUserId) + { + op[ParameterCode.PublishUserId] = true; + } + } + + /// + /// Creates a room (on either Master or Game Server). + /// The OperationResponse depends on the server the peer is connected to: + /// Master will return a Game Server to connect to. + /// Game Server will return the joined Room's data. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// + /// If the room is already existing, the OperationResponse will have a returnCode of ErrorCode.GameAlreadyExists. + /// + public virtual bool OpCreateRoom(EnterRoomParams opParams) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpCreateRoom()"); + } + + Dictionary op = new Dictionary(); + + if (!string.IsNullOrEmpty(opParams.RoomName)) + { + op[ParameterCode.RoomName] = opParams.RoomName; + } + if (opParams.Lobby != null && !string.IsNullOrEmpty(opParams.Lobby.Name)) + { + op[ParameterCode.LobbyName] = opParams.Lobby.Name; + op[ParameterCode.LobbyType] = (byte)opParams.Lobby.Type; + } + + if (opParams.ExpectedUsers != null && opParams.ExpectedUsers.Length > 0) + { + op[ParameterCode.Add] = opParams.ExpectedUsers; + } + if (opParams.OnGameServer) + { + if (opParams.PlayerProperties != null && opParams.PlayerProperties.Count > 0) + { + op[ParameterCode.PlayerProperties] = opParams.PlayerProperties; + op[ParameterCode.Broadcast] = true; // TODO: check if this also makes sense when creating a room?! // broadcast actor properties + } + + this.RoomOptionsToOpParameters(op, opParams.RoomOptions); + } + + //UnityEngine.Debug.Log("CreateRoom: " + SupportClassPun.DictionaryToString(op)); + return this.OpCustom(OperationCode.CreateGame, op, true); + } + + /// + /// Joins a room by name or creates new room if room with given name not exists. + /// The OperationResponse depends on the server the peer is connected to: + /// Master will return a Game Server to connect to. + /// Game Server will return the joined Room's data. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// + /// If the room is not existing (anymore), the OperationResponse will have a returnCode of ErrorCode.GameDoesNotExist. + /// Other possible ErrorCodes are: GameClosed, GameFull. + /// + /// If the operation could be sent (requires connection). + public virtual bool OpJoinRoom(EnterRoomParams opParams) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinRoom()"); + } + Dictionary op = new Dictionary(); + + if (!string.IsNullOrEmpty(opParams.RoomName)) + { + op[ParameterCode.RoomName] = opParams.RoomName; + } + + if (opParams.CreateIfNotExists) + { + op[ParameterCode.JoinMode] = (byte)JoinMode.CreateIfNotExists; + if (opParams.Lobby != null) + { + op[ParameterCode.LobbyName] = opParams.Lobby.Name; + op[ParameterCode.LobbyType] = (byte)opParams.Lobby.Type; + } + } + + if (opParams.RejoinOnly) + { + op[ParameterCode.JoinMode] = (byte)JoinMode.RejoinOnly; // changed from JoinMode.JoinOrRejoin + } + + if (opParams.ExpectedUsers != null && opParams.ExpectedUsers.Length > 0) + { + op[ParameterCode.Add] = opParams.ExpectedUsers; + } + + if (opParams.OnGameServer) + { + if (opParams.PlayerProperties != null && opParams.PlayerProperties.Count > 0) + { + op[ParameterCode.PlayerProperties] = opParams.PlayerProperties; + op[ParameterCode.Broadcast] = true; // broadcast actor properties + } + + if (opParams.CreateIfNotExists) + { + this.RoomOptionsToOpParameters(op, opParams.RoomOptions); + } + } + + // UnityEngine.Debug.Log("JoinRoom: " + SupportClassPun.DictionaryToString(op)); + return this.OpCustom(OperationCode.JoinGame, op, true); + } + + + /// + /// Operation to join a random, available room. Overloads take additional player properties. + /// This is an async request which triggers a OnOperationResponse() call. + /// If all rooms are closed or full, the OperationResponse will have a returnCode of ErrorCode.NoRandomMatchFound. + /// If successful, the OperationResponse contains a gameserver address and the name of some room. + /// + /// If the operation could be sent currently (requires connection). + public virtual bool OpJoinRandomRoom(OpJoinRandomRoomParams opJoinRandomRoomParams) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinRandomRoom()"); + } + + Hashtable expectedRoomProperties = new Hashtable(); + expectedRoomProperties.MergeStringKeys(opJoinRandomRoomParams.ExpectedCustomRoomProperties); + if (opJoinRandomRoomParams.ExpectedMaxPlayers > 0) + { + expectedRoomProperties[GamePropertyKey.MaxPlayers] = opJoinRandomRoomParams.ExpectedMaxPlayers; + } + + Dictionary opParameters = new Dictionary(); + if (expectedRoomProperties.Count > 0) + { + opParameters[ParameterCode.GameProperties] = expectedRoomProperties; + } + + if (opJoinRandomRoomParams.MatchingType != MatchmakingMode.FillRoom) + { + opParameters[ParameterCode.MatchMakingType] = (byte)opJoinRandomRoomParams.MatchingType; + } + + if (opJoinRandomRoomParams.TypedLobby != null && !string.IsNullOrEmpty(opJoinRandomRoomParams.TypedLobby.Name)) + { + opParameters[ParameterCode.LobbyName] = opJoinRandomRoomParams.TypedLobby.Name; + opParameters[ParameterCode.LobbyType] = (byte)opJoinRandomRoomParams.TypedLobby.Type; + } + + if (!string.IsNullOrEmpty(opJoinRandomRoomParams.SqlLobbyFilter)) + { + opParameters[ParameterCode.Data] = opJoinRandomRoomParams.SqlLobbyFilter; + } + + if (opJoinRandomRoomParams.ExpectedUsers != null && opJoinRandomRoomParams.ExpectedUsers.Length > 0) + { + opParameters[ParameterCode.Add] = opJoinRandomRoomParams.ExpectedUsers; + } + + // UnityEngine.Debug.LogWarning("OpJoinRandom: " + opParameters.ToStringFull()); + return this.OpCustom(OperationCode.JoinRandomGame, opParameters, true); + } + + + /// + /// Leaves a room with option to come back later or "for good". + /// + /// Async games can be re-joined (loaded) later on. Set to false, if you want to abandon a game entirely. + /// If the opteration can be send currently. + public virtual bool OpLeaveRoom(bool becomeInactive) + { + Dictionary opParameters = new Dictionary(); + if (becomeInactive) + { + opParameters[ParameterCode.IsInactive] = becomeInactive; + } + return this.OpCustom(OperationCode.Leave, opParameters, true); + } + + /// + /// Request the rooms and online status for a list of friends (each client must set a unique username via OpAuthenticate). + /// + /// + /// Used on Master Server to find the rooms played by a selected list of users. + /// Users identify themselves by using OpAuthenticate with a unique username. + /// The list of usernames must be fetched from some other source (not provided by Photon). + /// + /// The server response includes 2 arrays of info (each index matching a friend from the request): + /// ParameterCode.FindFriendsResponseOnlineList = bool[] of online states + /// ParameterCode.FindFriendsResponseRoomIdList = string[] of room names (empty string if not in a room) + /// + /// Array of friend's names (make sure they are unique). + /// If the operation could be sent (requires connection). + public virtual bool OpFindFriends(string[] friendsToFind) + { + Dictionary opParameters = new Dictionary(); + if (friendsToFind != null && friendsToFind.Length > 0) + { + opParameters[ParameterCode.FindFriendsRequestList] = friendsToFind; + } + + return this.OpCustom(OperationCode.FindFriends, opParameters, true); + } + + public bool OpSetCustomPropertiesOfActor(int actorNr, Hashtable actorProperties) + { + return this.OpSetPropertiesOfActor(actorNr, actorProperties.StripToStringKeys(), null); + } + + /// + /// Sets properties of a player / actor. + /// Internally this uses OpSetProperties, which can be used to either set room or player properties. + /// + /// The payer ID (a.k.a. actorNumber) of the player to attach these properties to. + /// The properties to add or update. + /// If set, these must be in the current properties-set (on the server) to set actorProperties: CAS. + /// Set to true, to forward the set properties to a WebHook, defined for this app (in Dashboard). + /// If the operation could be sent (requires connection). + protected internal bool OpSetPropertiesOfActor(int actorNr, Hashtable actorProperties, Hashtable expectedProperties = null, bool webForward = false) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpSetPropertiesOfActor()"); + } + + if (actorNr <= 0 || actorProperties == null) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpSetPropertiesOfActor not sent. ActorNr must be > 0 and actorProperties != null."); + } + return false; + } + + Dictionary opParameters = new Dictionary(); + opParameters.Add(ParameterCode.Properties, actorProperties); + opParameters.Add(ParameterCode.ActorNr, actorNr); + opParameters.Add(ParameterCode.Broadcast, true); + if (expectedProperties != null && expectedProperties.Count != 0) + { + opParameters.Add(ParameterCode.ExpectedValues, expectedProperties); + } + + if (webForward) + { + opParameters[ParameterCode.EventForward] = true; + } + + return this.OpCustom((byte)OperationCode.SetProperties, opParameters, true, 0, false); + } + + + protected void OpSetPropertyOfRoom(byte propCode, object value) + { + Hashtable properties = new Hashtable(); + properties[propCode] = value; + this.OpSetPropertiesOfRoom(properties, expectedProperties: null, webForward: false); + } + + public bool OpSetCustomPropertiesOfRoom(Hashtable gameProperties, bool broadcast, byte channelId) + { + return this.OpSetPropertiesOfRoom(gameProperties.StripToStringKeys(), expectedProperties: null, webForward: false); + } + + /// + /// Sets properties of a room. + /// Internally this uses OpSetProperties, which can be used to either set room or player properties. + /// + /// The properties to add or update. + /// The properties expected when update occurs. (CAS : "Check And Swap") + /// "WebFlag" to indicate if request should be forwarded as "PathProperties" webhook or not. + /// If the operation could be sent (has to be connected). + protected internal bool OpSetPropertiesOfRoom(Hashtable gameProperties, Hashtable expectedProperties = null, bool webForward = false) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpSetPropertiesOfRoom()"); + } + + Dictionary opParameters = new Dictionary(); + opParameters.Add(ParameterCode.Properties, gameProperties); + opParameters.Add(ParameterCode.Broadcast, true); + if (expectedProperties != null && expectedProperties.Count != 0) + { + opParameters.Add(ParameterCode.ExpectedValues, expectedProperties); + } + + if (webForward) + { + opParameters[ParameterCode.EventForward] = true; + } + + return this.OpCustom((byte)OperationCode.SetProperties, opParameters, true, 0, false); + } + + /// + /// Sends this app's appId and appVersion to identify this application server side. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// + /// This operation makes use of encryption, if that is established before. + /// See: EstablishEncryption(). Check encryption with IsEncryptionAvailable. + /// This operation is allowed only once per connection (multiple calls will have ErrorCode != Ok). + /// + /// Your application's name or ID to authenticate. This is assigned by Photon Cloud (webpage). + /// The client's version (clients with differing client appVersions are separated and players don't meet). + /// Contains all values relevant for authentication. Even without account system (external Custom Auth), the clients are allowed to identify themselves. + /// Optional region code, if the client should connect to a specific Photon Cloud Region. + /// Set to true on Master Server to receive "Lobby Statistics" events. + /// If the operation could be sent (has to be connected). + public virtual bool OpAuthenticate(string appId, string appVersion, AuthenticationValues authValues, string regionCode, bool getLobbyStatistics) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpAuthenticate()"); + } + + Dictionary opParameters = new Dictionary(); + if (getLobbyStatistics) + { + // must be sent in operation, even if a Token is available + opParameters[ParameterCode.LobbyStats] = true; + } + + // shortcut, if we have a Token + if (authValues != null && authValues.Token != null) + { + opParameters[ParameterCode.Secret] = authValues.Token; + return this.OpCustom(OperationCode.Authenticate, opParameters, true, (byte)0, false); // we don't have to encrypt, when we have a token (which is encrypted) + } + + + // without a token, we send a complete op auth + + opParameters[ParameterCode.AppVersion] = appVersion; + opParameters[ParameterCode.ApplicationId] = appId; + + if (!string.IsNullOrEmpty(regionCode)) + { + opParameters[ParameterCode.Region] = regionCode; + } + + if (authValues != null) + { + + if (!string.IsNullOrEmpty(authValues.UserId)) + { + opParameters[ParameterCode.UserId] = authValues.UserId; + } + + if (authValues.AuthType != CustomAuthenticationType.None) + { + if (!this.IsProtocolSecure && !this.IsEncryptionAvailable) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "OpAuthenticate() failed. When you want Custom Authentication encryption is mandatory."); + return false; + } + + opParameters[ParameterCode.ClientAuthenticationType] = (byte) authValues.AuthType; + if (!string.IsNullOrEmpty(authValues.Token)) + { + opParameters[ParameterCode.Secret] = authValues.Token; + } + else + { + if (!string.IsNullOrEmpty(authValues.AuthGetParameters)) + { + opParameters[ParameterCode.ClientAuthenticationParams] = authValues.AuthGetParameters; + } + if (authValues.AuthPostData != null) + { + opParameters[ParameterCode.ClientAuthenticationData] = authValues.AuthPostData; + } + } + } + } + + bool sent = this.OpCustom(OperationCode.Authenticate, opParameters, true, (byte) 0, this.IsEncryptionAvailable); + if (!sent) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Error calling OpAuthenticate! Did not work. Check log output, AuthValues and if you're connected."); + } + return sent; + } + + + /// + /// Sends this app's appId and appVersion to identify this application server side. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// + /// This operation makes use of encryption, if that is established before. + /// See: EstablishEncryption(). Check encryption with IsEncryptionAvailable. + /// This operation is allowed only once per connection (multiple calls will have ErrorCode != Ok). + /// + /// Your application's name or ID to authenticate. This is assigned by Photon Cloud (webpage). + /// The client's version (clients with differing client appVersions are separated and players don't meet). + /// Optional authentication values. The client can set no values or a UserId or some parameters for Custom Authentication by a server. + /// Optional region code, if the client should connect to a specific Photon Cloud Region. + /// + /// + /// If the operation could be sent (has to be connected). + public virtual bool OpAuthenticateOnce(string appId, string appVersion, AuthenticationValues authValues, string regionCode, EncryptionMode encryptionMode, ConnectionProtocol expectedProtocol) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpAuthenticate()"); + } + + + var opParameters = new Dictionary(); + + // shortcut, if we have a Token + if (authValues != null && authValues.Token != null) + { + opParameters[ParameterCode.Secret] = authValues.Token; + return this.OpCustom(OperationCode.AuthenticateOnce, opParameters, true, (byte)0, false); // we don't have to encrypt, when we have a token (which is encrypted) + } + + if (encryptionMode == EncryptionMode.DatagramEncryption && expectedProtocol != ConnectionProtocol.Udp) + { + Debug.LogWarning("Expected protocol set to UDP, due to encryption mode DatagramEncryption. Changing protocol in PhotonServerSettings from: " + PhotonNetwork.PhotonServerSettings.Protocol); + PhotonNetwork.PhotonServerSettings.Protocol = ConnectionProtocol.Udp; + expectedProtocol = ConnectionProtocol.Udp; + } + + opParameters[ParameterCode.ExpectedProtocol] = (byte)expectedProtocol; + opParameters[ParameterCode.EncryptionMode] = (byte)encryptionMode; + + opParameters[ParameterCode.AppVersion] = appVersion; + opParameters[ParameterCode.ApplicationId] = appId; + + if (!string.IsNullOrEmpty(regionCode)) + { + opParameters[ParameterCode.Region] = regionCode; + } + + if (authValues != null) + { + if (!string.IsNullOrEmpty(authValues.UserId)) + { + opParameters[ParameterCode.UserId] = authValues.UserId; + } + + if (authValues.AuthType != CustomAuthenticationType.None) + { + opParameters[ParameterCode.ClientAuthenticationType] = (byte)authValues.AuthType; + if (!string.IsNullOrEmpty(authValues.Token)) + { + opParameters[ParameterCode.Secret] = authValues.Token; + } + else + { + if (!string.IsNullOrEmpty(authValues.AuthGetParameters)) + { + opParameters[ParameterCode.ClientAuthenticationParams] = authValues.AuthGetParameters; + } + if (authValues.AuthPostData != null) + { + opParameters[ParameterCode.ClientAuthenticationData] = authValues.AuthPostData; + } + } + } + } + + return this.OpCustom(OperationCode.AuthenticateOnce, opParameters, true, (byte)0, this.IsEncryptionAvailable); + } + + /// + /// Operation to handle this client's interest groups (for events in room). + /// + /// + /// Note the difference between passing null and byte[0]: + /// null won't add/remove any groups. + /// byte[0] will add/remove all (existing) groups. + /// First, removing groups is executed. This way, you could leave all groups and join only the ones provided. + /// + /// Changes become active not immediately but when the server executes this operation (approximately RTT/2). + /// + /// Groups to remove from interest. Null will not remove any. A byte[0] will remove all. + /// Groups to add to interest. Null will not add any. A byte[0] will add all current. + /// + public virtual bool OpChangeGroups(byte[] groupsToRemove, byte[] groupsToAdd) + { + if (this.DebugOut >= DebugLevel.ALL) + { + this.Listener.DebugReturn(DebugLevel.ALL, "OpChangeGroups()"); + } + + Dictionary opParameters = new Dictionary(); + if (groupsToRemove != null) + { + opParameters[(byte)ParameterCode.Remove] = groupsToRemove; + } + if (groupsToAdd != null) + { + opParameters[(byte)ParameterCode.Add] = groupsToAdd; + } + + return this.OpCustom((byte)OperationCode.ChangeGroups, opParameters, true, 0); + } + + + /// + /// Send an event with custom code/type and any content to the other players in the same room. + /// + /// This override explicitly uses another parameter order to not mix it up with the implementation for Hashtable only. + /// Identifies this type of event (and the content). Your game's event codes can start with 0. + /// Any serializable datatype (including Hashtable like the other OpRaiseEvent overloads). + /// If this event has to arrive reliably (potentially repeated if it's lost). + /// Contains (slightly) less often used options. If you pass null, the default options will be used. + /// If operation could be enqueued for sending. Sent when calling: Service or SendOutgoingCommands. + public virtual bool OpRaiseEvent(byte eventCode, object customEventContent, bool sendReliable, RaiseEventOptions raiseEventOptions) + { + opParameters.Clear(); // re-used private variable to avoid many new Dictionary() calls (garbage collection) + opParameters[(byte)ParameterCode.Code] = (byte)eventCode; + if (customEventContent != null) + { + opParameters[(byte) ParameterCode.Data] = customEventContent; + } + + if (raiseEventOptions == null) + { + raiseEventOptions = RaiseEventOptions.Default; + } + else + { + if (raiseEventOptions.CachingOption != EventCaching.DoNotCache) + { + opParameters[(byte) ParameterCode.Cache] = (byte) raiseEventOptions.CachingOption; + } + if (raiseEventOptions.Receivers != ReceiverGroup.Others) + { + opParameters[(byte) ParameterCode.ReceiverGroup] = (byte) raiseEventOptions.Receivers; + } + if (raiseEventOptions.InterestGroup != 0) + { + opParameters[(byte) ParameterCode.Group] = (byte) raiseEventOptions.InterestGroup; + } + if (raiseEventOptions.TargetActors != null) + { + opParameters[(byte) ParameterCode.ActorList] = raiseEventOptions.TargetActors; + } + if (raiseEventOptions.ForwardToWebhook) + { + opParameters[(byte) ParameterCode.EventForward] = true; //TURNBASED + } + } + + return this.OpCustom((byte) OperationCode.RaiseEvent, opParameters, sendReliable, raiseEventOptions.SequenceChannel, raiseEventOptions.Encrypt); + } + + + /// + /// Internally used operation to set some "per server" settings. This is for the Master Server. + /// + /// Set to true, to get Lobby Statistics (lists of existing lobbies). + /// False if the operation could not be sent. + public virtual bool OpSettings(bool receiveLobbyStats) + { + if (this.DebugOut >= DebugLevel.ALL) + { + this.Listener.DebugReturn(DebugLevel.ALL, "OpSettings()"); + } + + // re-used private variable to avoid many new Dictionary() calls (garbage collection) + opParameters.Clear(); + + // implementation for Master Server: + if (receiveLobbyStats) + { + opParameters[(byte)0] = receiveLobbyStats; + } + + if (this.opParameters.Count == 0) + { + // no need to send op in case we set the default values + return true; + } + return this.OpCustom((byte)OperationCode.ServerSettings, opParameters, true); + } + } + + internal class OpJoinRandomRoomParams + { + public Hashtable ExpectedCustomRoomProperties; + public byte ExpectedMaxPlayers; + public MatchmakingMode MatchingType; + public TypedLobby TypedLobby; + public string SqlLobbyFilter; + public string[] ExpectedUsers; + } + + internal class EnterRoomParams + { + public string RoomName; + public RoomOptions RoomOptions; + public TypedLobby Lobby; + public Hashtable PlayerProperties; + public bool OnGameServer = true; // defaults to true! better send more parameter than too few (GS needs all) + public bool CreateIfNotExists; + public bool RejoinOnly; + public string[] ExpectedUsers; + } + + + /// + /// ErrorCode defines the default codes associated with Photon client/server communication. + /// + public class ErrorCode + { + /// (0) is always "OK", anything else an error or specific situation. + public const int Ok = 0; + + // server - Photon low(er) level: <= 0 + + /// + /// (-3) Operation can't be executed yet (e.g. OpJoin can't be called before being authenticated, RaiseEvent cant be used before getting into a room). + /// + /// + /// Before you call any operations on the Cloud servers, the automated client workflow must complete its authorization. + /// In PUN, wait until State is: JoinedLobby (with AutoJoinLobby = true) or ConnectedToMaster (AutoJoinLobby = false) + /// + public const int OperationNotAllowedInCurrentState = -3; + + /// (-2) The operation you called is not implemented on the server (application) you connect to. Make sure you run the fitting applications. + [Obsolete("Use InvalidOperation.")] + public const int InvalidOperationCode = -2; + + /// (-2) The operation you called could not be executed on the server. + /// + /// Make sure you are connected to the server you expect. + /// + /// This code is used in several cases: + /// The arguments/parameters of the operation might be out of range, missing entirely or conflicting. + /// The operation you called is not implemented on the server (application). Server-side plugins affect the available operations. + /// + public const int InvalidOperation = -2; + + /// (-1) Something went wrong in the server. Try to reproduce and contact Exit Games. + public const int InternalServerError = -1; + + // server - PhotonNetwork: 0x7FFF and down + // logic-level error codes start with short.max + + /// (32767) Authentication failed. Possible cause: AppId is unknown to Photon (in cloud service). + public const int InvalidAuthentication = 0x7FFF; + + /// (32766) GameId (name) already in use (can't create another). Change name. + public const int GameIdAlreadyExists = 0x7FFF - 1; + + /// (32765) Game is full. This rarely happens when some player joined the room before your join completed. + public const int GameFull = 0x7FFF - 2; + + /// (32764) Game is closed and can't be joined. Join another game. + public const int GameClosed = 0x7FFF - 3; + + [Obsolete("No longer used, cause random matchmaking is no longer a process.")] + public const int AlreadyMatched = 0x7FFF - 4; + + /// (32762) Not in use currently. + public const int ServerFull = 0x7FFF - 5; + + /// (32761) Not in use currently. + public const int UserBlocked = 0x7FFF - 6; + + /// (32760) Random matchmaking only succeeds if a room exists thats neither closed nor full. Repeat in a few seconds or create a new room. + public const int NoRandomMatchFound = 0x7FFF - 7; + + /// (32758) Join can fail if the room (name) is not existing (anymore). This can happen when players leave while you join. + public const int GameDoesNotExist = 0x7FFF - 9; + + /// (32757) Authorization on the Photon Cloud failed becaus the concurrent users (CCU) limit of the app's subscription is reached. + /// + /// Unless you have a plan with "CCU Burst", clients might fail the authentication step during connect. + /// Affected client are unable to call operations. Please note that players who end a game and return + /// to the master server will disconnect and re-connect, which means that they just played and are rejected + /// in the next minute / re-connect. + /// This is a temporary measure. Once the CCU is below the limit, players will be able to connect an play again. + /// + /// OpAuthorize is part of connection workflow but only on the Photon Cloud, this error can happen. + /// Self-hosted Photon servers with a CCU limited license won't let a client connect at all. + /// + public const int MaxCcuReached = 0x7FFF - 10; + + /// (32756) Authorization on the Photon Cloud failed because the app's subscription does not allow to use a particular region's server. + /// + /// Some subscription plans for the Photon Cloud are region-bound. Servers of other regions can't be used then. + /// Check your master server address and compare it with your Photon Cloud Dashboard's info. + /// https://cloud.photonengine.com/dashboard + /// + /// OpAuthorize is part of connection workflow but only on the Photon Cloud, this error can happen. + /// Self-hosted Photon servers with a CCU limited license won't let a client connect at all. + /// + public const int InvalidRegion = 0x7FFF - 11; + + /// + /// (32755) Custom Authentication of the user failed due to setup reasons (see Cloud Dashboard) or the provided user data (like username or token). Check error message for details. + /// + public const int CustomAuthenticationFailed = 0x7FFF - 12; + + /// (32753) The Authentication ticket expired. Usually, this is refreshed behind the scenes. Connect (and authorize) again. + public const int AuthenticationTicketExpired = 0x7FF1; + + /// + /// (32752) A server-side plugin (or webhook) failed to execute and reported an error. Check the OperationResponse.DebugMessage. + /// + public const int PluginReportedError = 0x7FFF - 15; + + /// + /// (32751) CreateRoom/JoinRoom/Join operation fails if expected plugin does not correspond to loaded one. + /// + public const int PluginMismatch = 0x7FFF - 16; + + /// + /// (32750) for join requests. Indicates the current peer already called join and is joined to the room. + /// + public const int JoinFailedPeerAlreadyJoined = 32750; // 0x7FFF - 17, + + /// + /// (32749) for join requests. Indicates the list of InactiveActors already contains an actor with the requested ActorNr or UserId. + /// + public const int JoinFailedFoundInactiveJoiner = 32749; // 0x7FFF - 18, + + /// + /// (32748) for join requests. Indicates the list of Actors (active and inactive) did not contain an actor with the requested ActorNr or UserId. + /// + public const int JoinFailedWithRejoinerNotFound = 32748; // 0x7FFF - 19, + + /// + /// (32747) for join requests. Note: for future use - Indicates the requested UserId was found in the ExcludedList. + /// + public const int JoinFailedFoundExcludedUserId = 32747; // 0x7FFF - 20, + + /// + /// (32746) for join requests. Indicates the list of ActiveActors already contains an actor with the requested ActorNr or UserId. + /// + public const int JoinFailedFoundActiveJoiner = 32746; // 0x7FFF - 21, + + /// + /// (32745) for SetProerties and Raisevent (if flag HttpForward is true) requests. Indicates the maximum allowd http requests per minute was reached. + /// + public const int HttpLimitReached = 32745; // 0x7FFF - 22, + + /// + /// (32744) for WebRpc requests. Indicates the the call to the external service failed. + /// + public const int ExternalHttpCallFailed = 32744; // 0x7FFF - 23, + + /// + /// (32742) Server error during matchmaking with slot reservation. E.g. the reserved slots can not exceed MaxPlayers. + /// + public const int SlotError = 32742; // 0x7FFF - 25, + + /// + /// (32741) Server will react with this error if invalid encryption parameters provided by token + /// + public const int InvalidEncryptionParameters = 32741; // 0x7FFF - 24, + +} + + + /// + /// Class for constants. These (byte) values define "well known" properties for an Actor / Player. + /// Pun uses these constants internally. + /// + /// + /// "Custom properties" have to use a string-type as key. They can be assigned at will. + /// + public class ActorProperties + { + /// (255) Name of a player/actor. + public const byte PlayerName = 255; // was: 1 + + /// (254) Tells you if the player is currently in this game (getting events live). + /// A server-set value for async games, where players can leave the game and return later. + public const byte IsInactive = 254; + + /// (253) UserId of the player. Sent when room gets created with RoomOptions.PublishUserId = true. + public const byte UserId = 253; + } + + + /// + /// Class for constants. These (byte) values are for "well known" room/game properties used in Photon Loadbalancing. + /// Pun uses these constants internally. + /// + /// + /// "Custom properties" have to use a string-type as key. They can be assigned at will. + /// + public class GamePropertyKey + { + /// (255) Max number of players that "fit" into this room. 0 is for "unlimited". + public const byte MaxPlayers = 255; + + /// (254) Makes this room listed or not in the lobby on master. + public const byte IsVisible = 254; + + /// (253) Allows more players to join a room (or not). + public const byte IsOpen = 253; + + /// (252) Current count of players in the room. Used only in the lobby on master. + public const byte PlayerCount = 252; + + /// (251) True if the room is to be removed from room listing (used in update to room list in lobby on master) + public const byte Removed = 251; + + /// (250) A list of the room properties to pass to the RoomInfo list in a lobby. This is used in CreateRoom, which defines this list once per room. + public const byte PropsListedInLobby = 250; + + /// (249) Equivalent of Operation Join parameter CleanupCacheOnLeave. + public const byte CleanupCacheOnLeave = 249; + + /// (248) Code for MasterClientId, which is synced by server. When sent as op-parameter this is (byte)203. As room property this is (byte)248. + /// Tightly related to ParameterCode.MasterClientId. + public const byte MasterClientId = (byte)248; + + /// (247) Code for ExpectedUsers in a room. Matchmaking keeps a slot open for the players with these userIDs. + public const byte ExpectedUsers = (byte)247; + } + + + /// + /// Class for constants. These values are for events defined by Photon Loadbalancing. + /// Pun uses these constants internally. + /// + /// They start at 255 and go DOWN. Your own in-game events can start at 0. + public class EventCode + { + /// (230) Initial list of RoomInfos (in lobby on Master) + public const byte GameList = 230; + + /// (229) Update of RoomInfos to be merged into "initial" list (in lobby on Master) + public const byte GameListUpdate = 229; + + /// (228) Currently not used. State of queueing in case of server-full + public const byte QueueState = 228; + + /// (227) Currently not used. Event for matchmaking + public const byte Match = 227; + + /// (226) Event with stats about this application (players, rooms, etc) + public const byte AppStats = 226; + + /// (224) This event provides a list of lobbies with their player and game counts. + public const byte LobbyStats = 224; + + /// (210) Internally used in case of hosting by Azure + [Obsolete("TCP routing was removed after becoming obsolete.")] + public const byte AzureNodeInfo = 210; + + /// (255) Event Join: someone joined the game. The new actorNumber is provided as well as the properties of that actor (if set in OpJoin). + public const byte Join = (byte)255; + + /// (254) Event Leave: The player who left the game can be identified by the actorNumber. + public const byte Leave = (byte)254; + + /// (253) When you call OpSetProperties with the broadcast option "on", this event is fired. It contains the properties being set. + public const byte PropertiesChanged = (byte)253; + + /// (253) When you call OpSetProperties with the broadcast option "on", this event is fired. It contains the properties being set. + [Obsolete("Use PropertiesChanged now.")] + public const byte SetProperties = (byte)253; + + /// (252) When player left game unexpected and the room has a playerTtl > 0, this event is fired to let everyone know about the timeout. + /// Obsolete. Replaced by Leave. public const byte Disconnect = LiteEventCode.Disconnect; + + /// (251) Sent by Photon Cloud when a plugin-call or webhook-call failed. Usually, the execution on the server continues, despite the issue. Contains: ParameterCode.Info. + /// + public const byte ErrorInfo = 251; + + /// (250) Sent by Photon whent he event cache slice was changed. Done by OpRaiseEvent. + public const byte CacheSliceChanged = 250; + + /// (223) Sent by Photon to update a token before it times out. + public const byte AuthEvent = 223; + } + + + /// + /// Class for constants. Codes for parameters of Operations and Events. + /// Pun uses these constants internally. + /// + public class ParameterCode + { + /// (237) A bool parameter for creating games. If set to true, no room events are sent to the clients on join and leave. Default: false (and not sent). + public const byte SuppressRoomEvents = 237; + + /// (236) Time To Live (TTL) for a room when the last player leaves. Keeps room in memory for case a player re-joins soon. In milliseconds. + public const byte EmptyRoomTTL = 236; + + /// (235) Time To Live (TTL) for an 'actor' in a room. If a client disconnects, this actor is inactive first and removed after this timeout. In milliseconds. + public const byte PlayerTTL = 235; + + /// (234) Optional parameter of OpRaiseEvent and OpSetCustomProperties to forward the event/operation to a web-service. + public const byte EventForward = 234; + + /// (233) Optional parameter of OpLeave in async games. If false, the player does abandons the game (forever). By default players become inactive and can re-join. + [Obsolete("Use: IsInactive")] + public const byte IsComingBack = (byte)233; + + /// (233) Used in EvLeave to describe if a user is inactive (and might come back) or not. In rooms with PlayerTTL, becoming inactive is the default case. + public const byte IsInactive = (byte)233; + + /// (232) Used when creating rooms to define if any userid can join the room only once. + public const byte CheckUserOnJoin = (byte)232; + + /// (231) Code for "Check And Swap" (CAS) when changing properties. + public const byte ExpectedValues = (byte)231; + + /// (230) Address of a (game) server to use. + public const byte Address = 230; + + /// (229) Count of players in this application in a rooms (used in stats event) + public const byte PeerCount = 229; + + /// (228) Count of games in this application (used in stats event) + public const byte GameCount = 228; + + /// (227) Count of players on the master server (in this app, looking for rooms) + public const byte MasterPeerCount = 227; + + /// (225) User's ID + public const byte UserId = 225; + + /// (224) Your application's ID: a name on your own Photon or a GUID on the Photon Cloud + public const byte ApplicationId = 224; + + /// (223) Not used currently (as "Position"). If you get queued before connect, this is your position + public const byte Position = 223; + + /// (223) Modifies the matchmaking algorithm used for OpJoinRandom. Allowed parameter values are defined in enum MatchmakingMode. + public const byte MatchMakingType = 223; + + /// (222) List of RoomInfos about open / listed rooms + public const byte GameList = 222; + + /// (221) Internally used to establish encryption + public const byte Secret = 221; + + /// (220) Version of your application + public const byte AppVersion = 220; + + /// (210) Internally used in case of hosting by Azure + [Obsolete("TCP routing was removed after becoming obsolete.")] + public const byte AzureNodeInfo = 210; // only used within events, so use: EventCode.AzureNodeInfo + + /// (209) Internally used in case of hosting by Azure + [Obsolete("TCP routing was removed after becoming obsolete.")] + public const byte AzureLocalNodeId = 209; + + /// (208) Internally used in case of hosting by Azure + [Obsolete("TCP routing was removed after becoming obsolete.")] + public const byte AzureMasterNodeId = 208; + + /// (255) Code for the gameId/roomName (a unique name per room). Used in OpJoin and similar. + public const byte RoomName = (byte)255; + + /// (250) Code for broadcast parameter of OpSetProperties method. + public const byte Broadcast = (byte)250; + + /// (252) Code for list of players in a room. Currently not used. + public const byte ActorList = (byte)252; + + /// (254) Code of the Actor of an operation. Used for property get and set. + public const byte ActorNr = (byte)254; + + /// (249) Code for property set (Hashtable). + public const byte PlayerProperties = (byte)249; + + /// (245) Code of data/custom content of an event. Used in OpRaiseEvent. + public const byte CustomEventContent = (byte)245; + + /// (245) Code of data of an event. Used in OpRaiseEvent. + public const byte Data = (byte)245; + + /// (244) Code used when sending some code-related parameter, like OpRaiseEvent's event-code. + /// This is not the same as the Operation's code, which is no longer sent as part of the parameter Dictionary in Photon 3. + public const byte Code = (byte)244; + + /// (248) Code for property set (Hashtable). + public const byte GameProperties = (byte)248; + + /// + /// (251) Code for property-set (Hashtable). This key is used when sending only one set of properties. + /// If either ActorProperties or GameProperties are used (or both), check those keys. + /// + public const byte Properties = (byte)251; + + /// (253) Code of the target Actor of an operation. Used for property set. Is 0 for game + public const byte TargetActorNr = (byte)253; + + /// (246) Code to select the receivers of events (used in Lite, Operation RaiseEvent). + public const byte ReceiverGroup = (byte)246; + + /// (247) Code for caching events while raising them. + public const byte Cache = (byte)247; + + /// (241) Bool parameter of CreateRoom Operation. If true, server cleans up roomcache of leaving players (their cached events get removed). + public const byte CleanupCacheOnLeave = (byte)241; + + /// (240) Code for "group" operation-parameter (as used in Op RaiseEvent). + public const byte Group = 240; + + /// (239) The "Remove" operation-parameter can be used to remove something from a list. E.g. remove groups from player's interest groups. + public const byte Remove = 239; + + /// (239) Used in Op Join to define if UserIds of the players are broadcast in the room. Useful for FindFriends and reserving slots for expected users. + public const byte PublishUserId = 239; + + /// (238) The "Add" operation-parameter can be used to add something to some list or set. E.g. add groups to player's interest groups. + public const byte Add = 238; + + /// (218) Content for EventCode.ErrorInfo and internal debug operations. + public const byte Info = 218; + + /// (217) This key's (byte) value defines the target custom authentication type/service the client connects with. Used in OpAuthenticate + public const byte ClientAuthenticationType = 217; + + /// (216) This key's (string) value provides parameters sent to the custom authentication type/service the client connects with. Used in OpAuthenticate + public const byte ClientAuthenticationParams = 216; + + /// (215) Makes the server create a room if it doesn't exist. OpJoin uses this to always enter a room, unless it exists and is full/closed. + // public const byte CreateIfNotExists = 215; + + /// (215) The JoinMode enum defines which variant of joining a room will be executed: Join only if available, create if not exists or re-join. + /// Replaces CreateIfNotExists which was only a bool-value. + public const byte JoinMode = 215; + + /// (214) This key's (string or byte[]) value provides parameters sent to the custom authentication service setup in Photon Dashboard. Used in OpAuthenticate + public const byte ClientAuthenticationData = 214; + + /// (203) Code for MasterClientId, which is synced by server. When sent as op-parameter this is code 203. + /// Tightly related to GamePropertyKey.MasterClientId. + public const byte MasterClientId = (byte)203; + + /// (1) Used in Op FindFriends request. Value must be string[] of friends to look up. + public const byte FindFriendsRequestList = (byte)1; + + /// (1) Used in Op FindFriends response. Contains bool[] list of online states (false if not online). + public const byte FindFriendsResponseOnlineList = (byte)1; + + /// (2) Used in Op FindFriends response. Contains string[] of room names ("" where not known or no room joined). + public const byte FindFriendsResponseRoomIdList = (byte)2; + + /// (213) Used in matchmaking-related methods and when creating a room to name a lobby (to join or to attach a room to). + public const byte LobbyName = (byte)213; + + /// (212) Used in matchmaking-related methods and when creating a room to define the type of a lobby. Combined with the lobby name this identifies the lobby. + public const byte LobbyType = (byte)212; + + /// (211) This (optional) parameter can be sent in Op Authenticate to turn on Lobby Stats (info about lobby names and their user- and game-counts). See: PhotonNetwork.Lobbies + public const byte LobbyStats = (byte)211; + + /// (210) Used for region values in OpAuth and OpGetRegions. + public const byte Region = (byte)210; + + /// (209) Path of the WebRPC that got called. Also known as "WebRpc Name". Type: string. + public const byte UriPath = 209; + + /// (208) Parameters for a WebRPC as: Dictionary<string, object>. This will get serialized to JSon. + public const byte WebRpcParameters = 208; + + /// (207) ReturnCode for the WebRPC, as sent by the web service (not by Photon, which uses ErrorCode). Type: byte. + public const byte WebRpcReturnCode = 207; + + /// (206) Message returned by WebRPC server. Analog to Photon's debug message. Type: string. + public const byte WebRpcReturnMessage = 206; + + /// (205) Used to define a "slice" for cached events. Slices can easily be removed from cache. Type: int. + public const byte CacheSliceIndex = 205; + + /// (204) Informs the server of the expected plugin setup. + /// + /// The operation will fail in case of a plugin mismatch returning error code PluginMismatch 32751(0x7FFF - 16). + /// Setting string[]{} means the client expects no plugin to be setup. + /// Note: for backwards compatibility null omits any check. + /// + public const byte Plugins = 204; + + /// (202) Used by the server in Operation Responses, when it sends the nickname of the client (the user's nickname). + public const byte NickName = 202; + + /// (201) Informs user about name of plugin load to game + public const byte PluginName = 201; + + /// (200) Informs user about version of plugin load to game + public const byte PluginVersion = 200; + + /// (195) Protocol which will be used by client to connect master/game servers. Used for nameserver. + public const byte ExpectedProtocol = 195; + + /// (194) Set of custom parameters which are sent in auth request. + public const byte CustomInitData = 194; + + /// (193) How are we going to encrypt data. + public const byte EncryptionMode = 193; + + /// (192) Parameter of Authentication, which contains encryption keys (depends on AuthMode and EncryptionMode). + public const byte EncryptionData = 192; + } + + + /// + /// Class for constants. Contains operation codes. + /// Pun uses these constants internally. + /// + public class OperationCode + { + [Obsolete("Exchanging encrpytion keys is done internally in the lib now. Don't expect this operation-result.")] + public const byte ExchangeKeysForEncryption = 250; + + /// (255) Code for OpJoin, to get into a room. + public const byte Join = 255; + + /// (231) Authenticates this peer and connects to a virtual application + public const byte AuthenticateOnce = 231; + + /// (230) Authenticates this peer and connects to a virtual application + public const byte Authenticate = 230; + + /// (229) Joins lobby (on master) + public const byte JoinLobby = 229; + + /// (228) Leaves lobby (on master) + public const byte LeaveLobby = 228; + + /// (227) Creates a game (or fails if name exists) + public const byte CreateGame = 227; + + /// (226) Join game (by name) + public const byte JoinGame = 226; + + /// (225) Joins random game (on master) + public const byte JoinRandomGame = 225; + + // public const byte CancelJoinRandom = 224; // obsolete, cause JoinRandom no longer is a "process". now provides result immediately + + /// (254) Code for OpLeave, to get out of a room. + public const byte Leave = (byte)254; + + /// (253) Raise event (in a room, for other actors/players) + public const byte RaiseEvent = (byte)253; + + /// (252) Set Properties (of room or actor/player) + public const byte SetProperties = (byte)252; + + /// (251) Get Properties + public const byte GetProperties = (byte)251; + + /// (248) Operation code to change interest groups in Rooms (Lite application and extending ones). + public const byte ChangeGroups = (byte)248; + + /// (222) Request the rooms and online status for a list of friends (by name, which should be unique). + public const byte FindFriends = 222; + + /// (221) Request statistics about a specific list of lobbies (their user and game count). + public const byte GetLobbyStats = 221; + + /// (220) Get list of regional servers from a NameServer. + public const byte GetRegions = 220; + + /// (219) WebRpc Operation. + public const byte WebRpc = 219; + + /// (218) Operation to set some server settings. Used with different parameters on various servers. + public const byte ServerSettings = 218; + } + + /// Defines possible values for OpJoinRoom and OpJoinOrCreate. It tells the server if the room can be only be joined normally, created implicitly or found on a web-service for Turnbased games. + /// These values are not directly used by a game but implicitly set. + public enum JoinMode : byte + { + /// Regular join. The room must exist. + Default = 0, + + /// Join or create the room if it's not existing. Used for OpJoinOrCreate for example. + CreateIfNotExists = 1, + + /// The room might be out of memory and should be loaded (if possible) from a Turnbased web-service. + JoinOrRejoin = 2, + + /// Only re-join will be allowed. If the user is not yet in the room, this will fail. + RejoinOnly = 3, + } + + /// + /// Options for matchmaking rules for OpJoinRandom. + /// + public enum MatchmakingMode : byte + { + /// Fills up rooms (oldest first) to get players together as fast as possible. Default. + /// Makes most sense with MaxPlayers > 0 and games that can only start with more players. + FillRoom = 0, + + /// Distributes players across available rooms sequentially but takes filter into account. Without filter, rooms get players evenly distributed. + SerialMatching = 1, + + /// Joins a (fully) random room. Expected properties must match but aside from this, any available room might be selected. + RandomMatching = 2 + } + + + /// + /// Lite - OpRaiseEvent lets you chose which actors in the room should receive events. + /// By default, events are sent to "Others" but you can overrule this. + /// + public enum ReceiverGroup : byte + { + /// Default value (not sent). Anyone else gets my event. + Others = 0, + + /// Everyone in the current room (including this peer) will get this event. + All = 1, + + /// The server sends this event only to the actor with the lowest actorNumber. + /// The "master client" does not have special rights but is the one who is in this room the longest time. + MasterClient = 2, + } + + /// + /// Lite - OpRaiseEvent allows you to cache events and automatically send them to joining players in a room. + /// Events are cached per event code and player: Event 100 (example!) can be stored once per player. + /// Cached events can be modified, replaced and removed. + /// + /// + /// Caching works only combination with ReceiverGroup options Others and All. + /// + public enum EventCaching : byte + { + /// Default value (not sent). + DoNotCache = 0, + + /// Will merge this event's keys with those already cached. + [Obsolete] + MergeCache = 1, + + /// Replaces the event cache for this eventCode with this event's content. + [Obsolete] + ReplaceCache = 2, + + /// Removes this event (by eventCode) from the cache. + [Obsolete] + RemoveCache = 3, + + /// Adds an event to the room's cache + AddToRoomCache = 4, + + /// Adds this event to the cache for actor 0 (becoming a "globally owned" event in the cache). + AddToRoomCacheGlobal = 5, + + /// Remove fitting event from the room's cache. + RemoveFromRoomCache = 6, + + /// Removes events of players who already left the room (cleaning up). + RemoveFromRoomCacheForActorsLeft = 7, + + /// Increase the index of the sliced cache. + SliceIncreaseIndex = 10, + + /// Set the index of the sliced cache. You must set RaiseEventOptions.CacheSliceIndex for this. + SliceSetIndex = 11, + + /// Purge cache slice with index. Exactly one slice is removed from cache. You must set RaiseEventOptions.CacheSliceIndex for this. + SlicePurgeIndex = 12, + + /// Purge cache slices with specified index and anything lower than that. You must set RaiseEventOptions.CacheSliceIndex for this. + SlicePurgeUpToIndex = 13, + } + + /// + /// Flags for "types of properties", being used as filter in OpGetProperties. + /// + [Flags] + public enum PropertyTypeFlag : byte + { + /// (0x00) Flag type for no property type. + None = 0x00, + + /// (0x01) Flag type for game-attached properties. + Game = 0x01, + + /// (0x02) Flag type for actor related propeties. + Actor = 0x02, + + /// (0x01) Flag type for game AND actor properties. Equal to 'Game' + GameAndActor = Game | Actor + } + + + /// Wraps up common room properties needed when you create rooms. Read the individual entries for more details. + /// This directly maps to the fields in the Room class. + public class RoomOptions + { + /// Defines if this room is listed in the lobby. If not, it also is not joined randomly. + /// + /// A room that is not visible will be excluded from the room lists that are sent to the clients in lobbies. + /// An invisible room can be joined by name but is excluded from random matchmaking. + /// + /// Use this to "hide" a room and simulate "private rooms". Players can exchange a roomname and create it + /// invisble to avoid anyone else joining it. + /// + public bool IsVisible { get { return this.isVisibleField; } set { this.isVisibleField = value; } } + private bool isVisibleField = true; + + /// Defines if this room can be joined at all. + /// + /// If a room is closed, no player can join this. As example this makes sense when 3 of 4 possible players + /// start their gameplay early and don't want anyone to join during the game. + /// The room can still be listed in the lobby (set IsVisible to control lobby-visibility). + /// + public bool IsOpen { get { return this.isOpenField; } set { this.isOpenField = value; } } + private bool isOpenField = true; + + /// Max number of players that can be in the room at any time. 0 means "no limit". + public byte MaxPlayers; + + + /// Time To Live (TTL) for an 'actor' in a room. If a client disconnects, this actor is inactive first and removed after this timeout. In milliseconds. + public int PlayerTtl; + + + /// Time To Live (TTL) for a room when the last player leaves. Keeps room in memory for case a player re-joins soon. In milliseconds. + public int EmptyRoomTtl; + + ///// Activates UserId checks on joining - allowing a users to be only once in the room. + ///// + ///// Turnbased rooms should be created with this check turned on! They should also use custom authentication. + ///// Disabled by default for backwards-compatibility. + ///// + //public bool CheckUserOnJoin { get { return this.checkUserOnJoinField; } set { this.checkUserOnJoinField = value; } } + //private bool checkUserOnJoinField = false; + + /// Removes a user's events and properties from the room when a user leaves. + /// + /// This makes sense when in rooms where players can't place items in the room and just vanish entirely. + /// When you disable this, the event history can become too long to load if the room stays in use indefinitely. + /// Default: true. Cleans up the cache and props of leaving users. + /// + public bool CleanupCacheOnLeave { get { return this.cleanupCacheOnLeaveField; } set { this.cleanupCacheOnLeaveField = value; } } + private bool cleanupCacheOnLeaveField = PhotonNetwork.autoCleanUpPlayerObjects; + + /// The room's custom properties to set. Use string keys! + /// + /// Custom room properties are any key-values you need to define the game's setup. + /// The shorter your keys are, the better. + /// Example: Map, Mode (could be "m" when used with "Map"), TileSet (could be "t"). + /// + public Hashtable CustomRoomProperties; + + /// Defines the custom room properties that get listed in the lobby. + /// + /// Name the custom room properties that should be available to clients that are in a lobby. + /// Use with care. Unless a custom property is essential for matchmaking or user info, it should + /// not be sent to the lobby, which causes traffic and delays for clients in the lobby. + /// + /// Default: No custom properties are sent to the lobby. + /// + public string[] CustomRoomPropertiesForLobby = new string[0]; + + /// Informs the server of the expected plugin setup. + /// + /// The operation will fail in case of a plugin missmatch returning error code PluginMismatch 32757(0x7FFF - 10). + /// Setting string[]{} means the client expects no plugin to be setup. + /// Note: for backwards compatibility null omits any check. + /// + public string[] Plugins; + + /// + /// Tells the server to skip room events for joining and leaving players. + /// + /// + /// Using this makes the client unaware of the other players in a room. + /// That can save some traffic if you have some server logic that updates players + /// but it can also limit the client's usability. + /// + /// PUN will break if you use this, so it's not settable. + /// + public bool SuppressRoomEvents { get { return this.suppressRoomEventsField; } /*set { this.suppressRoomEventsField = value; }*/ } + private bool suppressRoomEventsField = false; + + /// + /// Defines if the UserIds of players get "published" in the room. Useful for FindFriends, if players want to play another game together. + /// + /// + /// When you set this to true, Photon will publish the UserIds of the players in that room. + /// In that case, you can use PhotonPlayer.UserId, to access any player's userID. + /// This is useful for FindFriends and to set "expected users" to reserve slots in a room (see PhotonNetwork.JoinRoom e.g.). + /// + public bool PublishUserId { get { return this.publishUserIdField; } set { this.publishUserIdField = value; } } + private bool publishUserIdField = false; + + + #region Obsoleted Naming + + [Obsolete("Use property with uppercase naming instead.")] + public bool isVisible { get { return this.isVisibleField; } set { this.isVisibleField = value; } } + [Obsolete("Use property with uppercase naming instead.")] + public bool isOpen { get { return this.isOpenField; } set { this.isOpenField = value; } } + [Obsolete("Use property with uppercase naming instead.")] + public byte maxPlayers { get { return this.MaxPlayers; } set { this.MaxPlayers = value; } } + [Obsolete("Use property with uppercase naming instead.")] + public bool cleanupCacheOnLeave { get { return this.cleanupCacheOnLeaveField; } set { this.cleanupCacheOnLeaveField = value; } } + [Obsolete("Use property with uppercase naming instead.")] + public Hashtable customRoomProperties { get { return this.CustomRoomProperties; } set { this.CustomRoomProperties = value; } } + [Obsolete("Use property with uppercase naming instead.")] + public string[] customRoomPropertiesForLobby { get { return this.CustomRoomPropertiesForLobby; } set { this.CustomRoomPropertiesForLobby = value; } } + [Obsolete("Use property with uppercase naming instead.")] + public string[] plugins { get { return this.Plugins; } set { this.Plugins = value; } } + [Obsolete("Use property with uppercase naming instead.")] + public bool suppressRoomEvents { get { return this.suppressRoomEventsField; } } + [Obsolete("Use property with uppercase naming instead.")] + public bool publishUserId { get { return this.publishUserIdField; } set { this.publishUserIdField = value; } } + + #endregion +} + + +/// Aggregates several less-often used options for operation RaiseEvent. See field descriptions for usage details. +public class RaiseEventOptions + { + /// Default options: CachingOption: DoNotCache, InterestGroup: 0, targetActors: null, receivers: Others, sequenceChannel: 0. + public readonly static RaiseEventOptions Default = new RaiseEventOptions(); + + /// Defines if the server should simply send the event, put it in the cache or remove events that are like this one. + /// + /// When using option: SliceSetIndex, SlicePurgeIndex or SlicePurgeUpToIndex, set a CacheSliceIndex. All other options except SequenceChannel get ignored. + /// + public EventCaching CachingOption; + + /// The number of the Interest Group to send this to. 0 goes to all users but to get 1 and up, clients must subscribe to the group first. + public byte InterestGroup; + + /// A list of PhotonPlayer.IDs to send this event to. You can implement events that just go to specific users this way. + public int[] TargetActors; + + /// Sends the event to All, MasterClient or Others (default). Be careful with MasterClient, as the client might disconnect before it got the event and it gets lost. + public ReceiverGroup Receivers; + + /// Events are ordered per "channel". If you have events that are independent of others, they can go into another sequence or channel. + public byte SequenceChannel; + + /// Events can be forwarded to Webhooks, which can evaluate and use the events to follow the game's state. + public bool ForwardToWebhook; + + ///// Used along with CachingOption SliceSetIndex, SlicePurgeIndex or SlicePurgeUpToIndex if you want to set or purge a specific cache-slice. + //public int CacheSliceIndex; + + public bool Encrypt; + } + + /// + /// Options of lobby types available. Lobby types might be implemented in certain Photon versions and won't be available on older servers. + /// + public enum LobbyType :byte + { + /// This lobby is used unless another is defined by game or JoinRandom. Room-lists will be sent and JoinRandomRoom can filter by matching properties. + Default = 0, + /// This lobby type lists rooms like Default but JoinRandom has a parameter for SQL-like "where" clauses for filtering. This allows bigger, less, or and and combinations. + SqlLobby = 2, + /// This lobby does not send lists of games. It is only used for OpJoinRandomRoom. It keeps rooms available for a while when there are only inactive users left. + AsyncRandomLobby = 3 + } + + /// Refers to a specific lobby (and type) on the server. + /// + /// The name and type are the unique identifier for a lobby.
+ /// Join a lobby via PhotonNetwork.JoinLobby(TypedLobby lobby).
+ /// The current lobby is stored in PhotonNetwork.lobby. + ///
+ public class TypedLobby + { + /// Name of the lobby this game gets added to. Default: null, attached to default lobby. Lobbies are unique per lobbyName plus lobbyType, so the same name can be used when several types are existing. + public string Name; + /// Type of the (named)lobby this game gets added to + public LobbyType Type; + + public static readonly TypedLobby Default = new TypedLobby(); + public bool IsDefault { get { return this.Type == LobbyType.Default && string.IsNullOrEmpty(this.Name); } } + + public TypedLobby() + { + this.Name = string.Empty; + this.Type = LobbyType.Default; + } + + public TypedLobby(string name, LobbyType type) + { + this.Name = name; + this.Type = type; + } + + public override string ToString() + { + return String.Format((string) "lobby '{0}'[{1}]", (object) this.Name, (object) this.Type); + } + } + + public class TypedLobbyInfo : TypedLobby + { + public int PlayerCount; + public int RoomCount; + + public override string ToString() + { + return string.Format("TypedLobbyInfo '{0}'[{1}] rooms: {2} players: {3}", this.Name, this.Type, this.RoomCount, this.PlayerCount); + } + } + + + /// + /// Options for authentication modes. From "classic" auth on each server to AuthOnce (on NameServer). + /// + public enum AuthModeOption { Auth, AuthOnce, AuthOnceWss } + + + /// + /// Options for optional "Custom Authentication" services used with Photon. Used by OpAuthenticate after connecting to Photon. + /// + public enum CustomAuthenticationType : byte + { + /// Use a custom authentification service. Currently the only implemented option. + Custom = 0, + + /// Authenticates users by their Steam Account. Set auth values accordingly! + Steam = 1, + + /// Authenticates users by their Facebook Account. Set auth values accordingly! + Facebook = 2, + + /// Authenticates users by their Oculus Account and token. + Oculus = 3, + + /// Authenticates users by their PSN Account and token. + PlayStation = 4, + + /// Authenticates users by their Xbox Account and XSTS token. + Xbox = 5, + + /// Disables custom authentification. Same as not providing any AuthenticationValues for connect (more precisely for: OpAuthenticate). + None = byte.MaxValue + } + + + /// + /// Container for user authentication in Photon. Set AuthValues before you connect - all else is handled. + /// + /// + /// On Photon, user authentication is optional but can be useful in many cases. + /// If you want to FindFriends, a unique ID per user is very practical. + /// + /// There are basically three options for user authentification: None at all, the client sets some UserId + /// or you can use some account web-service to authenticate a user (and set the UserId server-side). + /// + /// Custom Authentication lets you verify end-users by some kind of login or token. It sends those + /// values to Photon which will verify them before granting access or disconnecting the client. + /// + /// The AuthValues are sent in OpAuthenticate when you connect, so they must be set before you connect. + /// Should you not set any AuthValues, PUN will create them and set the playerName as userId in them. + /// If the AuthValues.userId is null or empty when it's sent to the server, then the Photon Server assigns a userId! + /// + /// The Photon Cloud Dashboard will let you enable this feature and set important server values for it. + /// https://www.photonengine.com/dashboard + /// + public class AuthenticationValues + { + /// See AuthType. + private CustomAuthenticationType authType = CustomAuthenticationType.None; + + /// The type of custom authentication provider that should be used. Currently only "Custom" or "None" (turns this off). + public CustomAuthenticationType AuthType + { + get { return authType; } + set { authType = value; } + } + + /// This string must contain any (http get) parameters expected by the used authentication service. By default, username and token. + /// Standard http get parameters are used here and passed on to the service that's defined in the server (Photon Cloud Dashboard). + public string AuthGetParameters { get; set; } + + /// Data to be passed-on to the auth service via POST. Default: null (not sent). Either string or byte[] (see setters). + public object AuthPostData { get; private set; } + + /// After initial authentication, Photon provides a token for this client / user, which is subsequently used as (cached) validation. + public string Token { get; set; } + + /// The UserId should be a unique identifier per user. This is for finding friends, etc.. + /// See remarks of AuthValues for info about how this is set and used. + public string UserId { get; set; } + + + /// Creates empty auth values without any info. + public AuthenticationValues() + { + } + + /// Creates minimal info about the user. If this is authenticated or not, depends on the set AuthType. + /// Some UserId to set in Photon. + public AuthenticationValues(string userId) + { + this.UserId = userId; + } + + /// Sets the data to be passed-on to the auth service via POST. + /// String data to be used in the body of the POST request. Null or empty string will set AuthPostData to null. + public virtual void SetAuthPostData(string stringData) + { + this.AuthPostData = (string.IsNullOrEmpty(stringData)) ? null : stringData; + } + + /// Sets the data to be passed-on to the auth service via POST. + /// Binary token / auth-data to pass on. + public virtual void SetAuthPostData(byte[] byteData) + { + this.AuthPostData = byteData; + } + + /// Adds a key-value pair to the get-parameters used for Custom Auth. + /// This method does uri-encoding for you. + /// Key for the value to set. + /// Some value relevant for Custom Authentication. + public virtual void AddAuthParameter(string key, string value) + { + string ampersand = string.IsNullOrEmpty(this.AuthGetParameters) ? "" : "&"; + this.AuthGetParameters = string.Format("{0}{1}{2}={3}", this.AuthGetParameters, ampersand, System.Uri.EscapeDataString(key), System.Uri.EscapeDataString(value)); + } + + public override string ToString() + { + return string.Format("AuthenticationValues UserId: {0}, GetParameters: {1} Token available: {2}", this.UserId, this.AuthGetParameters, this.Token != null); + } + } diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/LoadbalancingPeer.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/LoadbalancingPeer.cs.meta new file mode 100644 index 0000000..989f399 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/LoadbalancingPeer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 35c989013c977244186e524a4c90dcee +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/NetworkingPeer.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/NetworkingPeer.cs new file mode 100644 index 0000000..655e0e3 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/NetworkingPeer.cs @@ -0,0 +1,4438 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Photon Unity Networking (PUN) +// +// -------------------------------------------------------------------------------------------------------------------- + +using ExitGames.Client.Photon; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; +using Hashtable = ExitGames.Client.Photon.Hashtable; +using SupportClassPun = ExitGames.Client.Photon.SupportClass; + + + +#region Enums + +/// +/// Detailed connection / networking peer state. +/// PUN implements a loadbalancing and authentication workflow "behind the scenes", so +/// some states will automatically advance to some follow up state. Those states are +/// commented with "(will-change)". +/// +/// \ingroup publicApi +public enum ClientState +{ + /// Not running. Only set before initialization and first use. + Uninitialized, + + /// Created and available to connect. + PeerCreated, + + /// Not used at the moment. + Queued, + + /// The application is authenticated. PUN usually joins the lobby now. + /// (will-change) Unless AutoJoinLobby is false. + Authenticated, + + /// Client is in the lobby of the Master Server and gets room listings. + /// Use Join, Create or JoinRandom to get into a room to play. + JoinedLobby, + + /// Disconnecting. + /// (will-change) + DisconnectingFromMasterserver, + + /// Connecting to game server (to join/create a room and play). + /// (will-change) + ConnectingToGameserver, + + /// Similar to Connected state but on game server. Still in process to join/create room. + /// (will-change) + ConnectedToGameserver, + + /// In process to join/create room (on game server). + /// (will-change) + Joining, + + /// Final state of a room join/create sequence. This client can now exchange events / call RPCs with other clients. + Joined, + + /// Leaving a room. + /// (will-change) + Leaving, + + /// Workflow is leaving the game server and will re-connect to the master server. + /// (will-change) + DisconnectingFromGameserver, + + /// Workflow is connected to master server and will establish encryption and authenticate your app. + /// (will-change) + ConnectingToMasterserver, + + /// Same Queued but coming from game server. + /// (will-change) + QueuedComingFromGameserver, + + /// PUN is disconnecting. This leads to Disconnected. + /// (will-change) + Disconnecting, + + /// No connection is setup, ready to connect. Similar to PeerCreated. + Disconnected, + + /// Final state for connecting to master without joining the lobby (AutoJoinLobby is false). + ConnectedToMaster, + + /// Client connects to the NameServer. This process includes low level connecting and setting up encryption. When done, state becomes ConnectedToNameServer. + ConnectingToNameServer, + + /// Client is connected to the NameServer and established enctryption already. You should call OpGetRegions or ConnectToRegionMaster. + ConnectedToNameServer, + + /// When disconnecting from a Photon NameServer. + /// (will-change) + DisconnectingFromNameServer, + + /// When connecting to a Photon Server, this state is intermediate before you can call any operations. + /// (will-change) + Authenticating +} + + + /// + /// Internal state, how this peer gets into a particular room (joining it or creating it). + /// + internal enum JoinType + { + /// This client creates a room, gets into it (no need to join) and can set room properties. + CreateRoom, + /// The room existed already and we join into it (not setting room properties). + JoinRoom, + /// Done on Master Server and (if successful) followed by a Join on Game Server. + JoinRandomRoom, + /// Client is either joining or creating a room. On Master- and Game-Server. + JoinOrCreateRoom + } + + +/// +/// Summarizes the cause for a disconnect. Used in: OnConnectionFail and OnFailedToConnectToPhoton. +/// +/// Extracted from the status codes from ExitGames.Client.Photon.StatusCode. +/// +/// \ingroup publicApi +public enum DisconnectCause +{ + /// Server actively disconnected this client. + /// Possible cause: The server's user limit was hit and client was forced to disconnect (on connect). + DisconnectByServerUserLimit = StatusCode.DisconnectByServerUserLimit, + + /// Connection could not be established. + /// Possible cause: Local server not running. + ExceptionOnConnect = StatusCode.ExceptionOnConnect, + + /// Timeout disconnect by server (which decided an ACK was missing for too long). + DisconnectByServerTimeout = StatusCode.DisconnectByServer, + + /// Server actively disconnected this client. + /// Possible cause: Server's send buffer full (too much data for client). + DisconnectByServerLogic = StatusCode.DisconnectByServerLogic, + + /// Some exception caused the connection to close. + Exception = StatusCode.Exception, + + /// (32767) The Photon Cloud rejected the sent AppId. Check your Dashboard and make sure the AppId you use is complete and correct. + InvalidAuthentication = ErrorCode.InvalidAuthentication, + + /// (32757) Authorization on the Photon Cloud failed because the concurrent users (CCU) limit of the app's subscription is reached. + MaxCcuReached = ErrorCode.MaxCcuReached, + + /// (32756) Authorization on the Photon Cloud failed because the app's subscription does not allow to use a particular region's server. + InvalidRegion = ErrorCode.InvalidRegion, + + /// The security settings for client or server don't allow a connection (see remarks). + /// + /// A common cause for this is that browser clients read a "crossdomain" file from the server. + /// If that file is unavailable or not configured to let the client connect, this exception is thrown. + /// Photon usually provides this crossdomain file for Unity. + /// If it fails, read: + /// http://doc.exitgames.com/photon-server/PolicyApp + /// + SecurityExceptionOnConnect = StatusCode.SecurityExceptionOnConnect, + + /// Timeout disconnect by client (which decided an ACK was missing for too long). + DisconnectByClientTimeout = StatusCode.TimeoutDisconnect, + + /// Exception in the receive-loop. + /// Possible cause: Socket failure. + InternalReceiveException = StatusCode.ExceptionOnReceive, + + /// (32753) The Authentication ticket expired. Handle this by connecting again (which includes an authenticate to get a fresh ticket). + AuthenticationTicketExpired = 32753, +} + +/// Available server (types) for internally used field: server. +/// Photon uses 3 different roles of servers: Name Server, Master Server and Game Server. +public enum ServerConnection +{ + /// This server is where matchmaking gets done and where clients can get lists of rooms in lobbies. + MasterServer, + /// This server handles a number of rooms to execute and relay the messages between players (in a room). + GameServer, + /// This server is used initially to get the address (IP) of a Master Server for a specific region. Not used for Photon OnPremise (self hosted). + NameServer +} + +#endregion + +/// +/// Implements Photon LoadBalancing used in PUN. +/// This class is used internally by PhotonNetwork and not intended as public API. +/// +internal class NetworkingPeer : LoadBalancingPeer, IPhotonPeerListener +{ + /// Combination of GameVersion+"_"+PunVersion. Separates players per app by version. + protected internal string AppVersion + { + get { return string.Format("{0}_{1}", PhotonNetwork.gameVersion, PhotonNetwork.versionPUN); } + } + + /// Contains the AppId for the Photon Cloud (ignored by Photon Servers). + protected internal string AppId; + + /// + /// A user's authentication values used during connect for Custom Authentication with Photon (and a custom service/community). + /// Set these before calling Connect if you want custom authentication. + /// + public AuthenticationValues AuthValues { get; set; } + + /// Internally used cache for the server's token. Identifies a user/session and can be used to rejoin. + private string tokenCache; + + + /// Enables the new Authentication workflow + public AuthModeOption AuthMode = AuthModeOption.Auth; + + /// Defines how the communication gets encrypted. + public EncryptionMode EncryptionMode = EncryptionMode.PayloadEncryption; + + + ///Simplifies getting the token for connect/init requests, if this feature is enabled. + private string TokenForInit + { + get + { + if (this.AuthMode == AuthModeOption.Auth) + { + return null; + } + return (this.AuthValues != null) ? this.AuthValues.Token : null; + } + } + + /// True if this client uses a NameServer to get the Master Server address. + public bool IsUsingNameServer { get; protected internal set; } + + /// Name Server Host Name for Photon Cloud. Without port and without any prefix. + public const string NameServerHost = "ns.exitgames.com"; + + /// Name Server for HTTP connections to the Photon Cloud. Includes prefix and port. + public const string NameServerHttp = "http://ns.exitgamescloud.com:80/photon/n"; + + /// Name Server port per protocol (the UDP port is different than TCP, etc). + private static readonly Dictionary ProtocolToNameServerPort = new Dictionary() { { ConnectionProtocol.Udp, 5058 }, { ConnectionProtocol.Tcp, 4533 }, { ConnectionProtocol.WebSocket, 9093 }, { ConnectionProtocol.WebSocketSecure, 19093 } }; //, { ConnectionProtocol.RHttp, 6063 } }; + + /// Name Server Address for Photon Cloud (based on current protocol). You can use the default values and usually won't have to set this value. + public string NameServerAddress { get { return this.GetNameServerAddress(); } } + + /// Your Master Server address. In PhotonCloud, call ConnectToRegionMaster() to find your Master Server. + /// + /// In the Photon Cloud, explicit definition of a Master Server Address is not best practice. + /// The Photon Cloud has a "Name Server" which redirects clients to a specific Master Server (per Region and AppId). + /// + public string MasterServerAddress { get; protected internal set; } + + /// The game server's address for a particular room. In use temporarily, as assigned by master. + public string GameServerAddress { get; protected internal set; } + + /// The server this client is currently connected or connecting to. + /// + /// Each server (NameServer, MasterServer, GameServer) allow some operations and reject others. + /// + protected internal ServerConnection Server { get; private set; } + + public ClientState State { get; internal set; } + + public bool IsInitialConnect = false; + + + public bool insideLobby = false; + public TypedLobby lobby { get; set; } + + + private bool requestLobbyStatistics + { + get { return PhotonNetwork.EnableLobbyStatistics && this.Server == ServerConnection.MasterServer; } + } + + protected internal List LobbyStatistics = new List(); + + + public Dictionary mGameList = new Dictionary(); + public RoomInfo[] mGameListCopy = new RoomInfo[0]; + + private string playername = ""; + + public string PlayerName + { + get + { + return this.playername; + } + + set + { + if (string.IsNullOrEmpty(value) || value.Equals(this.playername)) + { + return; + } + + if (this.LocalPlayer != null) + { + this.LocalPlayer.NickName = value; + } + + this.playername = value; + if (this.CurrentRoom != null) + { + // Only when in a room + this.SendPlayerName(); + } + } + } + + // "public" access to the current game - is null unless a room is joined on a gameserver + // isLocalClientInside becomes true when op join result is positive on GameServer + private bool mPlayernameHasToBeUpdated; + + + public Room CurrentRoom + { + get + { + if (this.currentRoom != null && this.currentRoom.IsLocalClientInside) + { + return this.currentRoom; + } + + return null; + } + + private set { this.currentRoom = value; } + } + + private Room currentRoom; + + public PhotonPlayer LocalPlayer { get; internal set; } + + /// Stat value: Count of players on Master (looking for rooms) + public int PlayersOnMasterCount { get; internal set; } + + /// Stat value: Count of Players in rooms + public int PlayersInRoomsCount { get; internal set; } + + /// Stat value: Count of Rooms + public int RoomsCount { get; internal set; } + + + private JoinType lastJoinType; + + protected internal EnterRoomParams enterRoomParamsCache; + + + /// Internally used to trigger OpAuthenticate when encryption was established after a connect. + private bool didAuthenticate; + + + + /// Contains the list of names of friends to look up their state on the server. + private string[] friendListRequested; + + /// + /// Age of friend list info (in milliseconds). It's 0 until a friend list is fetched. + /// + protected internal int FriendListAge { get { return (this.isFetchingFriendList || this.friendListTimestamp == 0) ? 0 : Environment.TickCount - this.friendListTimestamp; } } + + private int friendListTimestamp; + + /// Internal flag to know if the client currently fetches a friend list. + private bool isFetchingFriendList; + + /// Internally used to check if a "Secret" is available to use. Sent by Photon Cloud servers, it simplifies authentication when switching servers. + public bool IsAuthorizeSecretAvailable + { + get + { + return this.AuthValues != null && !String.IsNullOrEmpty(this.AuthValues.Token); + } + } + + /// A list of region names for the Photon Cloud. Set by the result of OpGetRegions(). + /// Put a "case OperationCode.GetRegions:" into your OnOperationResponse method to notice when the result is available. + public List AvailableRegions { get; protected internal set; } + + /// The cloud region this client connects to. Set by ConnectToRegionMaster(). + public CloudRegionCode CloudRegion { get; protected internal set; } + + + + public Dictionary mActors = new Dictionary(); + + public PhotonPlayer[] mOtherPlayerListCopy = new PhotonPlayer[0]; + public PhotonPlayer[] mPlayerListCopy = new PhotonPlayer[0]; + + + public int mMasterClientId + { + get + { + if (PhotonNetwork.offlineMode) return this.LocalPlayer.ID; + return (this.CurrentRoom == null) ? 0 : this.CurrentRoom.MasterClientId; + } + private set + { + if (this.CurrentRoom != null) + { + this.CurrentRoom.MasterClientId = value; + } + } + } + + public bool hasSwitchedMC = false; + + private HashSet allowedReceivingGroups = new HashSet(); + + private HashSet blockSendingGroups = new HashSet(); + + protected internal Dictionary photonViewList = new Dictionary(); //TODO: make private again + + private readonly PhotonStream readStream = new PhotonStream(false, null); // only used in OnSerializeRead() + private readonly PhotonStream pStream = new PhotonStream(true, null); // only used in OnSerializeWrite() + private readonly Dictionary dataPerGroupReliable = new Dictionary(); // only used in RunViewUpdate() + private readonly Dictionary dataPerGroupUnreliable = new Dictionary(); // only used in RunViewUpdate() + + protected internal short currentLevelPrefix = 0; + + /// Internally used to flag if the message queue was disabled by a "scene sync" situation (to re-enable it). + protected internal bool loadingLevelAndPausedNetwork = false; + + /// For automatic scene syncing, the loaded scene is put into a room property. This is the name of said prop. + protected internal const string CurrentSceneProperty = "curScn"; + + public static bool UsePrefabCache = true; + + internal IPunPrefabPool ObjectPool; + + public static Dictionary PrefabCache = new Dictionary(); + + private Dictionary> monoRPCMethodsCache = new Dictionary>(); + + private readonly Dictionary rpcShortcuts; // lookup "table" for the index (shortcut) of an RPC name + + /// Caches PhotonNetworkingMessage.OnPhotonInstantiate.ToString(), because DoInstantiate calls it often (and ToString() on the enum is astonishingly expensive). + private static readonly string OnPhotonInstantiateString = PhotonNetworkingMessage.OnPhotonInstantiate.ToString(); + + + // TODO: CAS must be implemented for OfflineMode + + public NetworkingPeer(string playername, ConnectionProtocol connectionProtocol) : base(connectionProtocol) + { + this.Listener = this; + this.LimitOfUnreliableCommands = 40; + + this.lobby = TypedLobby.Default; + this.PlayerName = playername; + this.LocalPlayer = new PhotonPlayer(true, -1, this.playername); + this.AddNewPlayer(this.LocalPlayer.ID, this.LocalPlayer); + + // RPC shortcut lookup creation (from list of RPCs, which is updated by Editor scripts) + rpcShortcuts = new Dictionary(PhotonNetwork.PhotonServerSettings.RpcList.Count); + for (int index = 0; index < PhotonNetwork.PhotonServerSettings.RpcList.Count; index++) + { + var name = PhotonNetwork.PhotonServerSettings.RpcList[index]; + rpcShortcuts[name] = index; + } + + this.State = ClientState.PeerCreated; + } + + /// + /// Gets the NameServer Address (with prefix and port), based on the set protocol (this.UsedProtocol). + /// + /// NameServer Address (with prefix and port). + private string GetNameServerAddress() + { + #if RHTTP + if (currentProtocol == ConnectionProtocol.RHttp) + { + return NameServerHttp; + } + #endif + + ConnectionProtocol currentProtocol = this.TransportProtocol; + int protocolPort = 0; + ProtocolToNameServerPort.TryGetValue(currentProtocol, out protocolPort); + + string protocolPrefix = string.Empty; + if (currentProtocol == ConnectionProtocol.WebSocket) + { + protocolPrefix = "ws://"; + } + else if (currentProtocol == ConnectionProtocol.WebSocketSecure) + { + protocolPrefix = "wss://"; + } + + string result = string.Format("{0}{1}:{2}", protocolPrefix, NameServerHost, protocolPort); + //Debug.Log("NameServer: " + result); + return result; + } + +#region Operations and Connection Methods + + + public override bool Connect(string serverAddress, string applicationName) + { + Debug.LogError("Avoid using this directly. Thanks."); + return false; + } + + /// Can be used to reconnect to the master server after a disconnect. + /// Common use case: Press the Lock Button on a iOS device and you get disconnected immediately. + public bool ReconnectToMaster() + { + if (this.AuthValues == null) + { + Debug.LogWarning("ReconnectToMaster() with AuthValues == null is not correct!"); + this.AuthValues = new AuthenticationValues(); + } + this.AuthValues.Token = this.tokenCache; + + return this.Connect(this.MasterServerAddress, ServerConnection.MasterServer); + } + + /// + /// Can be used to return to a room quickly, by directly reconnecting to a game server to rejoin a room. + /// + /// False, if the conditions are not met. Then, this client does not attempt the ReconnectAndRejoin. + public bool ReconnectAndRejoin() + { + if (this.AuthValues == null) + { + Debug.LogWarning("ReconnectAndRejoin() with AuthValues == null is not correct!"); + this.AuthValues = new AuthenticationValues(); + } + this.AuthValues.Token = this.tokenCache; + + if (!string.IsNullOrEmpty(this.GameServerAddress) && this.enterRoomParamsCache != null) + { + this.lastJoinType = JoinType.JoinRoom; + this.enterRoomParamsCache.RejoinOnly = true; + return this.Connect(this.GameServerAddress, ServerConnection.GameServer); + } + + return false; + } + + + public bool Connect(string serverAddress, ServerConnection type) + { + if (PhotonHandler.AppQuits) + { + Debug.LogWarning("Ignoring Connect() because app gets closed. If this is an error, check PhotonHandler.AppQuits."); + return false; + } + + if (this.State == ClientState.Disconnecting) + { + Debug.LogError("Connect() failed. Can't connect while disconnecting (still). Current state: " + PhotonNetwork.connectionStateDetailed); + return false; + } + + this.SetupProtocol(type); + + // connect might fail, if the DNS name can't be resolved or if no network connection is available + bool connecting = base.Connect(serverAddress, "", this.TokenForInit); + + if (connecting) + { + switch (type) + { + case ServerConnection.NameServer: + State = ClientState.ConnectingToNameServer; + break; + case ServerConnection.MasterServer: + State = ClientState.ConnectingToMasterserver; + break; + case ServerConnection.GameServer: + State = ClientState.ConnectingToGameserver; + break; + } + } + + return connecting; + } + + + /// + /// Connects to the NameServer for Photon Cloud, where a region and server list can be obtained. + /// + /// + /// If the workflow was started or failed right away. + public bool ConnectToNameServer() + { + if (PhotonHandler.AppQuits) + { + Debug.LogWarning("Ignoring Connect() because app gets closed. If this is an error, check PhotonHandler.AppQuits."); + return false; + } + + this.IsUsingNameServer = true; + this.CloudRegion = CloudRegionCode.none; + + if (this.State == ClientState.ConnectedToNameServer) + { + return true; + } + + this.SetupProtocol(ServerConnection.NameServer); + if (!base.Connect(this.NameServerAddress, "ns", this.TokenForInit)) + { + return false; + } + + this.State = ClientState.ConnectingToNameServer; + return true; + } + + /// + /// Connects you to a specific region's Master Server, using the Name Server to find the IP. + /// + /// If the operation could be sent. If false, no operation was sent. + public bool ConnectToRegionMaster(CloudRegionCode region) + { + if (PhotonHandler.AppQuits) + { + Debug.LogWarning("Ignoring Connect() because app gets closed. If this is an error, check PhotonHandler.AppQuits."); + return false; + } + + IsUsingNameServer = true; + this.CloudRegion = region; + + if (this.State == ClientState.ConnectedToNameServer) + { + return this.CallAuthenticate(); + } + + this.SetupProtocol(ServerConnection.NameServer); + if (!base.Connect(this.NameServerAddress, "ns", this.TokenForInit)) + { + return false; + } + + this.State = ClientState.ConnectingToNameServer; + return true; + } + + protected internal void SetupProtocol(ServerConnection serverType) + { + ConnectionProtocol protocolOverride = this.TransportProtocol; + + if (this.AuthMode == AuthModeOption.AuthOnceWss) + { + if (serverType != ServerConnection.NameServer) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.ErrorsOnly) + { + Debug.LogWarning("Using PhotonServerSettings.Protocol when leaving the NameServer (AuthMode is AuthOnceWss): " + PhotonNetwork.PhotonServerSettings.Protocol); + } + protocolOverride = PhotonNetwork.PhotonServerSettings.Protocol; + } + else + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.ErrorsOnly) + { + Debug.LogWarning("Using WebSocket to connect NameServer (AuthMode is AuthOnceWss)."); + } + protocolOverride = ConnectionProtocol.WebSocketSecure; + } + } + + // to support WebGL export in Unity, we find and assign the SocketWebTcp class (if it's in the project). + // alternatively class SocketWebTcp might be in the Photon3Unity3D.dll + Type socketTcp = Type.GetType("ExitGames.Client.Photon.SocketWebTcp, Assembly-CSharp", false); + if (socketTcp == null) + { + socketTcp = Type.GetType("ExitGames.Client.Photon.SocketWebTcp, Assembly-CSharp-firstpass", false); + } + if (socketTcp != null) + { + this.SocketImplementationConfig[ConnectionProtocol.WebSocket] = socketTcp; + this.SocketImplementationConfig[ConnectionProtocol.WebSocketSecure] = socketTcp; + } + + + #if UNITY_WEBGL + if (this.TransportProtocol != ConnectionProtocol.WebSocket && this.TransportProtocol != ConnectionProtocol.WebSocketSecure) + { + Debug.Log("WebGL only supports WebSocket protocol. Overriding PhotonServerSettings."); + protocolOverride = ConnectionProtocol.WebSocketSecure; + } + PhotonHandler.PingImplementation = typeof(PingHttp); + #endif + + + #if !UNITY_EDITOR && (UNITY_WINRT) + // this automatically uses a separate assembly-file with Win8-style Socket usage (not possible in Editor) + Debug.LogWarning("Using PingWindowsStore"); + PhotonHandler.PingImplementation = typeof(PingWindowsStore); // but for ping, we have to set the implementation explicitly to Win 8 Store/Phone + #endif + + + #pragma warning disable 0162 // the library variant defines if we should use PUN's SocketUdp variant (at all) + if (PhotonPeer.NoSocket) + { + if (this.TransportProtocol != ConnectionProtocol.Udp) + { + Debug.Log("This Photon3Unity3d.dll only allows UDP. TransportProtocol was: " + this.TransportProtocol + ". SocketImplementation: " + this.SocketImplementation); + } + protocolOverride = ConnectionProtocol.Udp; + + #if !UNITY_EDITOR && (UNITY_PS3 || UNITY_ANDROID) + this.SocketImplementationConfig[ConnectionProtocol.Udp] = typeof(SocketUdpNativeDynamic); + PhotonHandler.PingImplementation = typeof(PingNativeDynamic); + #elif !UNITY_EDITOR && UNITY_IPHONE + this.SocketImplementationConfig[ConnectionProtocol.Udp] = typeof(SocketUdpNativeStatic); + PhotonHandler.PingImplementation = typeof(PingNativeStatic); + #elif !UNITY_EDITOR && UNITY_WINRT + // this automatically uses a separate assembly-file with Win8-style Socket usage (not possible in Editor) + #else + this.SocketImplementationConfig[ConnectionProtocol.Udp] = typeof(SocketUdp); + PhotonHandler.PingImplementation = typeof(PingMonoEditor); + #endif + + if (this.SocketImplementationConfig[ConnectionProtocol.Udp] == null) + { + Debug.Log("No socket implementation set for 'NoSocket' assembly. Please check your settings."); + } + } + #pragma warning restore 0162 + + if (PhotonHandler.PingImplementation == null) + { + PhotonHandler.PingImplementation = typeof(PingMono); + } + + + if (this.TransportProtocol == protocolOverride) + { + return; + } + + + if (PhotonNetwork.logLevel >= PhotonLogLevel.ErrorsOnly) + { + Debug.LogWarning("Protocol switch from: " + this.TransportProtocol + " to: " + protocolOverride + "."); + } + + this.TransportProtocol = protocolOverride; + } + + /// + /// Complete disconnect from photon (and the open master OR game server) + /// + public override void Disconnect() + { + if (this.PeerState == PeerStateValue.Disconnected) + { + if (!PhotonHandler.AppQuits) + { + Debug.LogWarning(string.Format("Can't execute Disconnect() while not connected. Nothing changed. State: {0}", this.State)); + } + return; + } + + this.State = ClientState.Disconnecting; + base.Disconnect(); + + //this.LeftRoomCleanup(); + //this.LeftLobbyCleanup(); + } + + private bool CallAuthenticate() + { + // once encryption is availble, the client should send one (secure) authenticate. it includes the AppId (which identifies your app on the Photon Cloud) + AuthenticationValues auth = this.AuthValues ?? new AuthenticationValues() { UserId = this.PlayerName }; + if (this.AuthMode == AuthModeOption.Auth) + { + return this.OpAuthenticate(this.AppId, this.AppVersion, auth, this.CloudRegion.ToString(), this.requestLobbyStatistics); + } + else + { + return this.OpAuthenticateOnce(this.AppId, this.AppVersion, auth, this.CloudRegion.ToString(), this.EncryptionMode, PhotonNetwork.PhotonServerSettings.Protocol); + } + } + + + + /// + /// Internally used only. Triggers OnStateChange with "Disconnect" in next dispatch which is the signal to re-connect (if at all). + /// + private void DisconnectToReconnect() + { + switch (this.Server) + { + case ServerConnection.NameServer: + this.State = ClientState.DisconnectingFromNameServer; + base.Disconnect(); + break; + case ServerConnection.MasterServer: + this.State = ClientState.DisconnectingFromMasterserver; + base.Disconnect(); + //LeftLobbyCleanup(); + break; + case ServerConnection.GameServer: + this.State = ClientState.DisconnectingFromGameserver; + base.Disconnect(); + //this.LeftRoomCleanup(); + break; + } + } + + /// + /// While on the NameServer, this gets you the list of regional servers (short names and their IPs to ping them). + /// + /// If the operation could be sent. If false, no operation was sent (e.g. while not connected to the NameServer). + public bool GetRegions() + { + if (this.Server != ServerConnection.NameServer) + { + return false; + } + + bool sent = this.OpGetRegions(this.AppId); + if (sent) + { + this.AvailableRegions = null; + } + + return sent; + } + + /// + /// Request the rooms and online status for a list of friends. All client must set a unique username via PlayerName property. The result is available in this.Friends. + /// + /// + /// Used on Master Server to find the rooms played by a selected list of users. + /// The result will be mapped to LoadBalancingClient.Friends when available. + /// The list is initialized by OpFindFriends on first use (before that, it is null). + /// + /// Users identify themselves by setting a PlayerName in the LoadBalancingClient instance. + /// This in turn will send the name in OpAuthenticate after each connect (to master and game servers). + /// Note: Changing a player's name doesn't make sense when using a friend list. + /// + /// The list of usernames must be fetched from some other source (not provided by Photon). + /// + /// + /// Internal: + /// The server response includes 2 arrays of info (each index matching a friend from the request): + /// ParameterCode.FindFriendsResponseOnlineList = bool[] of online states + /// ParameterCode.FindFriendsResponseRoomIdList = string[] of room names (empty string if not in a room) + /// + /// Array of friend's names (make sure they are unique). + /// If the operation could be sent (requires connection, only one request is allowed at any time). Always false in offline mode. + public override bool OpFindFriends(string[] friendsToFind) + { + if (this.isFetchingFriendList) + { + return false; // fetching friends currently, so don't do it again (avoid changing the list while fetching friends) + } + + this.friendListRequested = friendsToFind; + this.isFetchingFriendList = true; + + return base.OpFindFriends(friendsToFind); + } + + /// NetworkingPeer.OpCreateGame + public bool OpCreateGame(EnterRoomParams enterRoomParams) + { + bool onGameServer = this.Server == ServerConnection.GameServer; + enterRoomParams.OnGameServer = onGameServer; + enterRoomParams.PlayerProperties = GetLocalActorProperties(); + if (!onGameServer) + { + enterRoomParamsCache = enterRoomParams; + } + + this.lastJoinType = JoinType.CreateRoom; + return base.OpCreateRoom(enterRoomParams); + } + + /// NetworkingPeer.OpJoinRoom + public override bool OpJoinRoom(EnterRoomParams opParams) + { + bool onGameServer = this.Server == ServerConnection.GameServer; + opParams.OnGameServer = onGameServer; + if (!onGameServer) + { + this.enterRoomParamsCache = opParams; + } + + this.lastJoinType = (opParams.CreateIfNotExists) ? JoinType.JoinOrCreateRoom : JoinType.JoinRoom; + return base.OpJoinRoom(opParams); + } + + /// NetworkingPeer.OpJoinRandomRoom + /// this override just makes sure we have a mRoomToGetInto, even if it's blank (the properties provided in this method are filters. they are not set when we join the game) + public override bool OpJoinRandomRoom(OpJoinRandomRoomParams opJoinRandomRoomParams) + { + enterRoomParamsCache = new EnterRoomParams(); // this is used when the client arrives on the GS and joins the room + enterRoomParamsCache.Lobby = opJoinRandomRoomParams.TypedLobby; + this.enterRoomParamsCache.ExpectedUsers = opJoinRandomRoomParams.ExpectedUsers; + + this.lastJoinType = JoinType.JoinRandomRoom; + return base.OpJoinRandomRoom(opJoinRandomRoomParams); + } + + /// + /// Operation Leave will exit any current room. + /// + /// + /// This also happens when you disconnect from the server. + /// Disconnect might be a step less if you don't want to create a new room on the same server. + /// + /// + public virtual bool OpLeave() + { + if (this.State != ClientState.Joined) + { + Debug.LogWarning("Not sending leave operation. State is not 'Joined': " + this.State); + return false; + } + + return this.OpCustom((byte)OperationCode.Leave, null, true, 0); + } + + public override bool OpRaiseEvent(byte eventCode, object customEventContent, bool sendReliable, RaiseEventOptions raiseEventOptions) + { + if (PhotonNetwork.offlineMode) + { + return false; + } + + return base.OpRaiseEvent(eventCode, customEventContent, sendReliable, raiseEventOptions); + } + + #endregion + + #region Helpers + + private void ReadoutProperties(Hashtable gameProperties, Hashtable pActorProperties, int targetActorNr) + { + // Debug.LogWarning("ReadoutProperties gameProperties: " + gameProperties.ToStringFull() + " pActorProperties: " + pActorProperties.ToStringFull() + " targetActorNr: " + targetActorNr); + + // read per-player properties (or those of one target player) and cache those locally + if (pActorProperties != null && pActorProperties.Count > 0) + { + if (targetActorNr > 0) + { + // we have a single entry in the pActorProperties with one + // user's name + // targets MUST exist before you set properties + PhotonPlayer target = this.GetPlayerWithId(targetActorNr); + if (target != null) + { + Hashtable props = this.ReadoutPropertiesForActorNr(pActorProperties, targetActorNr); + target.InternalCacheProperties(props); + SendMonoMessage(PhotonNetworkingMessage.OnPhotonPlayerPropertiesChanged, target, props); + } + } + else + { + // in this case, we've got a key-value pair per actor (each + // value is a hashtable with the actor's properties then) + int actorNr; + Hashtable props; + string newName; + PhotonPlayer target; + + foreach (object key in pActorProperties.Keys) + { + actorNr = (int)key; + props = (Hashtable)pActorProperties[key]; + newName = (string)props[ActorProperties.PlayerName]; + + target = this.GetPlayerWithId(actorNr); + if (target == null) + { + target = new PhotonPlayer(false, actorNr, newName); + this.AddNewPlayer(actorNr, target); + } + + target.InternalCacheProperties(props); + SendMonoMessage(PhotonNetworkingMessage.OnPhotonPlayerPropertiesChanged, target, props); + } + } + } + + // read game properties and cache them locally + if (this.CurrentRoom != null && gameProperties != null) + { + this.CurrentRoom.InternalCacheProperties(gameProperties); + SendMonoMessage(PhotonNetworkingMessage.OnPhotonCustomRoomPropertiesChanged, gameProperties); + if (PhotonNetwork.automaticallySyncScene) + { + this.LoadLevelIfSynced(); // will load new scene if sceneName was changed + } + } + } + + private Hashtable ReadoutPropertiesForActorNr(Hashtable actorProperties, int actorNr) + { + if (actorProperties.ContainsKey(actorNr)) + { + return (Hashtable)actorProperties[actorNr]; + } + + return actorProperties; + } + + public void ChangeLocalID(int newID) + { + if (this.LocalPlayer == null) + { + Debug.LogWarning( + string.Format( + "LocalPlayer is null or not in mActors! LocalPlayer: {0} mActors==null: {1} newID: {2}", + this.LocalPlayer, + this.mActors == null, + newID)); + } + + if (this.mActors.ContainsKey(this.LocalPlayer.ID)) + { + this.mActors.Remove(this.LocalPlayer.ID); + } + + this.LocalPlayer.InternalChangeLocalID(newID); + this.mActors[this.LocalPlayer.ID] = this.LocalPlayer; + this.RebuildPlayerListCopies(); + } + + /// + /// Called at disconnect/leavelobby etc. This CAN also be called when we are not in a lobby (e.g. disconnect from room) + /// + /// Calls callback method OnLeftLobby if this client was in a lobby initially. Clears the lobby's game lists. + private void LeftLobbyCleanup() + { + this.mGameList = new Dictionary(); + this.mGameListCopy = new RoomInfo[0]; + + if (this.insideLobby) + { + this.insideLobby = false; + SendMonoMessage(PhotonNetworkingMessage.OnLeftLobby); + } + } + + /// + /// Called when "this client" left a room to clean up. + /// + private void LeftRoomCleanup() + { + bool wasInRoom = this.CurrentRoom != null; + // when leaving a room, we clean up depending on that room's settings. + bool autoCleanupSettingOfRoom = (this.CurrentRoom != null) ? this.CurrentRoom.AutoCleanUp : PhotonNetwork.autoCleanUpPlayerObjects; + + this.hasSwitchedMC = false; + this.CurrentRoom = null; + this.mActors = new Dictionary(); + this.mPlayerListCopy = new PhotonPlayer[0]; + this.mOtherPlayerListCopy = new PhotonPlayer[0]; + this.allowedReceivingGroups = new HashSet(); + this.blockSendingGroups = new HashSet(); + this.mGameList = new Dictionary(); + this.mGameListCopy = new RoomInfo[0]; + this.isFetchingFriendList = false; + + this.ChangeLocalID(-1); + + // Cleanup all network objects (all spawned PhotonViews, local and remote) + if (autoCleanupSettingOfRoom) + { + this.LocalCleanupAnythingInstantiated(true); + PhotonNetwork.manuallyAllocatedViewIds = new List(); // filled and easier to replace completely + } + + if (wasInRoom) + { + SendMonoMessage(PhotonNetworkingMessage.OnLeftRoom); + } + } + + /// + /// Cleans up anything that was instantiated in-game (not loaded with the scene). + /// + protected internal void LocalCleanupAnythingInstantiated(bool destroyInstantiatedGameObjects) + { + if (this.tempInstantiationData.Count > 0) + { + Debug.LogWarning("It seems some instantiation is not completed, as instantiation data is used. You should make sure instantiations are paused when calling this method. Cleaning now, despite this."); + } + + // Destroy GO's (if we should) + if (destroyInstantiatedGameObjects) + { + // Fill list with Instantiated objects + HashSet instantiatedGos = new HashSet(); + foreach (PhotonView view in this.photonViewList.Values) + { + if (view.isRuntimeInstantiated) + { + instantiatedGos.Add(view.gameObject); // HashSet keeps each object only once + } + } + + foreach (GameObject go in instantiatedGos) + { + this.RemoveInstantiatedGO(go, true); + } + } + + // photonViewList is cleared of anything instantiated (so scene items are left inside) + // any other lists can be + this.tempInstantiationData.Clear(); // should be empty but to be safe we clear (no new list needed) + PhotonNetwork.lastUsedViewSubId = 0; + PhotonNetwork.lastUsedViewSubIdStatic = 0; + } + + + private void GameEnteredOnGameServer(OperationResponse operationResponse) + { + if (operationResponse.ReturnCode != 0) + { + switch (operationResponse.OperationCode) + { + case OperationCode.CreateGame: + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + Debug.Log("Create failed on GameServer. Changing back to MasterServer. Msg: " + operationResponse.DebugMessage); + } + SendMonoMessage(PhotonNetworkingMessage.OnPhotonCreateRoomFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); + break; + case OperationCode.JoinGame: + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + Debug.Log("Join failed on GameServer. Changing back to MasterServer. Msg: " + operationResponse.DebugMessage); + if (operationResponse.ReturnCode == ErrorCode.GameDoesNotExist) + { + Debug.Log("Most likely the game became empty during the switch to GameServer."); + } + } + SendMonoMessage(PhotonNetworkingMessage.OnPhotonJoinRoomFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); + break; + case OperationCode.JoinRandomGame: + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + Debug.Log("Join failed on GameServer. Changing back to MasterServer. Msg: " + operationResponse.DebugMessage); + if (operationResponse.ReturnCode == ErrorCode.GameDoesNotExist) + { + Debug.Log("Most likely the game became empty during the switch to GameServer."); + } + } + SendMonoMessage(PhotonNetworkingMessage.OnPhotonRandomJoinFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); + break; + } + + this.DisconnectToReconnect(); + return; + } + + Room current = new Room(this.enterRoomParamsCache.RoomName, null); + current.IsLocalClientInside = true; + this.CurrentRoom = current; + + this.State = ClientState.Joined; + + if (operationResponse.Parameters.ContainsKey(ParameterCode.ActorList)) + { + int[] actorsInRoom = (int[])operationResponse.Parameters[ParameterCode.ActorList]; + this.UpdatedActorList(actorsInRoom); + } + + // the local player's actor-properties are not returned in join-result. add this player to the list + int localActorNr = (int)operationResponse[ParameterCode.ActorNr]; + this.ChangeLocalID(localActorNr); + + + Hashtable actorProperties = (Hashtable)operationResponse[ParameterCode.PlayerProperties]; + Hashtable gameProperties = (Hashtable)operationResponse[ParameterCode.GameProperties]; + this.ReadoutProperties(gameProperties, actorProperties, 0); + + if (!this.CurrentRoom.serverSideMasterClient) this.CheckMasterClient(-1); + + if (this.mPlayernameHasToBeUpdated) + { + this.SendPlayerName(); + } + + switch (operationResponse.OperationCode) + { + case OperationCode.CreateGame: + SendMonoMessage(PhotonNetworkingMessage.OnCreatedRoom); + break; + case OperationCode.JoinGame: + case OperationCode.JoinRandomGame: + // the mono message for this is sent at another place + break; + } + } + + private void AddNewPlayer(int ID, PhotonPlayer player) + { + if (!this.mActors.ContainsKey(ID)) + { + this.mActors[ID] = player; + RebuildPlayerListCopies(); + } + else + { + Debug.LogError("Adding player twice: " + ID); + } + } + + void RemovePlayer(int ID, PhotonPlayer player) + { + this.mActors.Remove(ID); + if (!player.IsLocal) + { + RebuildPlayerListCopies(); + } + } + + void RebuildPlayerListCopies() + { + this.mPlayerListCopy = new PhotonPlayer[this.mActors.Count]; + this.mActors.Values.CopyTo(this.mPlayerListCopy, 0); + + List otherP = new List(); + for (int i = 0; i < this.mPlayerListCopy.Length; i++) + { + PhotonPlayer player = this.mPlayerListCopy[i]; + if (!player.IsLocal) + { + otherP.Add(player); + } + } + + this.mOtherPlayerListCopy = otherP.ToArray(); + } + + /// + /// Resets the PhotonView "lastOnSerializeDataSent" so that "OnReliable" synched PhotonViews send a complete state to new clients (if the state doesnt change, no messages would be send otherwise!). + /// Note that due to this reset, ALL other players will receive the full OnSerialize. + /// + private void ResetPhotonViewsOnSerialize() + { + foreach (PhotonView photonView in this.photonViewList.Values) + { + photonView.lastOnSerializeDataSent = null; + } + } + + /// + /// Called when the event Leave (of some other player) arrived. + /// Cleans game objects, views locally. The master will also clean the + /// + /// ID of player who left. + private void HandleEventLeave(int actorID, EventData evLeave) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + Debug.Log("HandleEventLeave for player ID: " + actorID + " evLeave: " + evLeave.ToStringFull()); + + + // actorNr is fetched out of event + PhotonPlayer player = this.GetPlayerWithId(actorID); + if (player == null) + { + Debug.LogError(String.Format("Received event Leave for unknown player ID: {0}", actorID)); + return; + } + + bool _isAlreadyInactive = player.IsInactive; + + if (evLeave.Parameters.ContainsKey(ParameterCode.IsInactive)) + { + // player becomes inactive (but might return / is not gone for good) + player.IsInactive = (bool)evLeave.Parameters[ParameterCode.IsInactive]; + if (player.IsInactive && _isAlreadyInactive) + { + Debug.LogWarning("HandleEventLeave for player ID: " + actorID + " isInactive: " + player.IsInactive + ". Stopping handling if inactive."); + return; + } + } + + // having a new master before calling destroy for the leaving player is important! + // so we elect a new masterclient and ignore the leaving player (who is still in playerlists). + // note: there is/was a server-side-error which sent 0 as new master instead of skipping the key/value. below is a check for 0 due to that + if (evLeave.Parameters.ContainsKey(ParameterCode.MasterClientId)) + { + int newMaster = (int) evLeave[ParameterCode.MasterClientId]; + if (newMaster != 0) + { + this.mMasterClientId = (int)evLeave[ParameterCode.MasterClientId]; + this.UpdateMasterClient(); + } + } + else if (!this.CurrentRoom.serverSideMasterClient) + { + this.CheckMasterClient(actorID); + } + + + // we let the player up if inactive but if we were already inactive, then we have to actually remove the player properly. + if (player.IsInactive && !_isAlreadyInactive) + { + return; + } + + // destroy objects & buffered messages + if (this.CurrentRoom != null && this.CurrentRoom.AutoCleanUp) + { + this.DestroyPlayerObjects(actorID, true); + } + + RemovePlayer(actorID, player); + + // finally, send notification (the playerList and masterclient are now updated) + SendMonoMessage(PhotonNetworkingMessage.OnPhotonPlayerDisconnected, player); + } + + /// Picks the new master client from player list, if the current Master is leaving (leavingPlayerId) or if no master was assigned so far. + /// + /// The ignored player is the one who's leaving and should not become master (again). Pass -1 to select any player from the list. + /// + private void CheckMasterClient(int leavingPlayerId) + { + bool currentMasterIsLeaving = this.mMasterClientId == leavingPlayerId; + bool someoneIsLeaving = leavingPlayerId > 0; + + // return early if SOME player (leavingId > 0) is leaving AND it's NOT the current master + if (someoneIsLeaving && !currentMasterIsLeaving) + { + return; + } + + // picking the player with lowest ID (longest in game). + int lowestActorNumber; + if (this.mActors.Count <= 1) + { + lowestActorNumber = this.LocalPlayer.ID; + } + else + { + // keys in mActors are their actorNumbers + lowestActorNumber = Int32.MaxValue; + foreach (int key in this.mActors.Keys) + { + if (key < lowestActorNumber && key != leavingPlayerId) + { + lowestActorNumber = key; + } + } + } + this.mMasterClientId = lowestActorNumber; + + // callback ONLY when the current master left + if (someoneIsLeaving) + { + SendMonoMessage(PhotonNetworkingMessage.OnMasterClientSwitched, this.GetPlayerWithId(lowestActorNumber)); + } + } + + /// Call when the server provides a MasterClientId (due to joining or the current MC leaving, etc). + internal protected void UpdateMasterClient() + { + SendMonoMessage(PhotonNetworkingMessage.OnMasterClientSwitched, PhotonNetwork.masterClient); + } + + private static int ReturnLowestPlayerId(PhotonPlayer[] players, int playerIdToIgnore) + { + if (players == null || players.Length == 0) + { + return -1; + } + + int lowestActorNumber = Int32.MaxValue; + for (int i = 0; i < players.Length; i++) + { + PhotonPlayer photonPlayer = players[i]; + if (photonPlayer.ID == playerIdToIgnore) + { + continue; + } + + if (photonPlayer.ID < lowestActorNumber) + { + lowestActorNumber = photonPlayer.ID; + } + } + + return lowestActorNumber; + } + + /// Fake-sets a new Master Client for this room via RaiseEvent. + /// Does not affect RaiseEvent with target MasterClient but RPC(). + internal protected bool SetMasterClient(int playerId, bool sync) + { + bool masterReplaced = this.mMasterClientId != playerId; + if (!masterReplaced || !this.mActors.ContainsKey(playerId)) + { + return false; + } + + if (sync) + { + bool sent = this.OpRaiseEvent(PunEvent.AssignMaster, new Hashtable() { { (byte)1, playerId } }, true, null); + if (!sent) + { + return false; + } + } + + this.hasSwitchedMC = true; + this.CurrentRoom.MasterClientId = playerId; + SendMonoMessage(PhotonNetworkingMessage.OnMasterClientSwitched, this.GetPlayerWithId(playerId)); // we only callback when an actual change is done + return true; + } + + /// Uses a well-known property to set someone new as Master Client in room (requires "Server Side Master Client" feature). + public bool SetMasterClient(int nextMasterId) + { + Hashtable newProps = new Hashtable() { { GamePropertyKey.MasterClientId, nextMasterId } }; + Hashtable prevProps = new Hashtable() { { GamePropertyKey.MasterClientId, this.mMasterClientId } }; + return this.OpSetPropertiesOfRoom(newProps, expectedProperties: prevProps, webForward: false); + } + + protected internal PhotonPlayer GetPlayerWithId(int number) + { + if (this.mActors == null) return null; + + PhotonPlayer player = null; + this.mActors.TryGetValue(number, out player); + return player; + } + + private void SendPlayerName() + { + if (this.State == ClientState.Joining) + { + // this means, the join on the gameServer is sent (with an outdated name). send the new when in game + this.mPlayernameHasToBeUpdated = true; + return; + } + + if (this.LocalPlayer != null) + { + this.LocalPlayer.NickName = this.PlayerName; + Hashtable properties = new Hashtable(); + properties[ActorProperties.PlayerName] = this.PlayerName; + if (this.LocalPlayer.ID > 0) + { + this.OpSetPropertiesOfActor(this.LocalPlayer.ID, properties, null); + this.mPlayernameHasToBeUpdated = false; + } + } + } + + private Hashtable GetLocalActorProperties() + { + if (PhotonNetwork.player != null) + { + return PhotonNetwork.player.AllProperties; + } + + Hashtable actorProperties = new Hashtable(); + actorProperties[ActorProperties.PlayerName] = this.PlayerName; + return actorProperties; + } + + #endregion + + #region Implementation of IPhotonPeerListener + + public void DebugReturn(DebugLevel level, string message) + { + if (level == DebugLevel.ERROR) + { + Debug.LogError(message); + } + else if (level == DebugLevel.WARNING) + { + Debug.LogWarning(message); + } + else if (level == DebugLevel.INFO && PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + Debug.Log(message); + } + else if (level == DebugLevel.ALL && PhotonNetwork.logLevel == PhotonLogLevel.Full) + { + Debug.Log(message); + } + } + + public void OnOperationResponse(OperationResponse operationResponse) + { + if (PhotonNetwork.networkingPeer.State == ClientState.Disconnecting) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + Debug.Log("OperationResponse ignored while disconnecting. Code: " + operationResponse.OperationCode); + } + return; + } + + // extra logging for error debugging (helping developers with a bit of automated analysis) + if (operationResponse.ReturnCode == 0) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + Debug.Log(operationResponse.ToString()); + } + else + { + if (operationResponse.ReturnCode == ErrorCode.OperationNotAllowedInCurrentState) + { + Debug.LogError("Operation " + operationResponse.OperationCode + " could not be executed (yet). Wait for state JoinedLobby or ConnectedToMaster and their callbacks before calling operations. WebRPCs need a server-side configuration. Enum OperationCode helps identify the operation."); + } + else if (operationResponse.ReturnCode == ErrorCode.PluginReportedError) + { + Debug.LogError("Operation " + operationResponse.OperationCode + " failed in a server-side plugin. Check the configuration in the Dashboard. Message from server-plugin: " + operationResponse.DebugMessage); + } + else if (operationResponse.ReturnCode == ErrorCode.NoRandomMatchFound) + { + Debug.LogWarning("Operation failed: " + operationResponse.ToStringFull()); + } + else + { + Debug.LogError("Operation failed: " + operationResponse.ToStringFull() + " Server: " + this.Server); + } + } + + // use the "secret" or "token" whenever we get it. doesn't really matter if it's in AuthResponse. + if (operationResponse.Parameters.ContainsKey(ParameterCode.Secret)) + { + if (this.AuthValues == null) + { + this.AuthValues = new AuthenticationValues(); + // this.DebugReturn(DebugLevel.ERROR, "Server returned secret. Created AuthValues."); + } + + this.AuthValues.Token = operationResponse[ParameterCode.Secret] as string; + this.tokenCache = this.AuthValues.Token; + } + + switch (operationResponse.OperationCode) + { + case OperationCode.Authenticate: + case OperationCode.AuthenticateOnce: + { + // ClientState oldState = this.State; + + if (operationResponse.ReturnCode != 0) + { + if (operationResponse.ReturnCode == ErrorCode.InvalidOperation) + { + Debug.LogError(string.Format("If you host Photon yourself, make sure to start the 'Instance LoadBalancing' "+ this.ServerAddress)); + } + else if (operationResponse.ReturnCode == ErrorCode.InvalidAuthentication) + { + Debug.LogError(string.Format("The appId this client sent is unknown on the server (Cloud). Check settings. If using the Cloud, check account.")); + SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, DisconnectCause.InvalidAuthentication); + } + else if (operationResponse.ReturnCode == ErrorCode.CustomAuthenticationFailed) + { + Debug.LogError(string.Format("Custom Authentication failed (either due to user-input or configuration or AuthParameter string format). Calling: OnCustomAuthenticationFailed()")); + SendMonoMessage(PhotonNetworkingMessage.OnCustomAuthenticationFailed, operationResponse.DebugMessage); + } + else + { + Debug.LogError(string.Format("Authentication failed: '{0}' Code: {1}", operationResponse.DebugMessage, operationResponse.ReturnCode)); + } + + this.State = ClientState.Disconnecting; + this.Disconnect(); + + if (operationResponse.ReturnCode == ErrorCode.MaxCcuReached) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + Debug.LogWarning(string.Format("Currently, the limit of users is reached for this title. Try again later. Disconnecting")); + SendMonoMessage(PhotonNetworkingMessage.OnPhotonMaxCccuReached); + SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, DisconnectCause.MaxCcuReached); + } + else if (operationResponse.ReturnCode == ErrorCode.InvalidRegion) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + Debug.LogError(string.Format("The used master server address is not available with the subscription currently used. Got to Photon Cloud Dashboard or change URL. Disconnecting.")); + SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, DisconnectCause.InvalidRegion); + } + else if (operationResponse.ReturnCode == ErrorCode.AuthenticationTicketExpired) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + Debug.LogError(string.Format("The authentication ticket expired. You need to connect (and authenticate) again. Disconnecting.")); + SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, DisconnectCause.AuthenticationTicketExpired); + } + break; + } + else + { + // successful connect/auth. depending on the used server, do next steps: + + if (this.Server == ServerConnection.NameServer || this.Server == ServerConnection.MasterServer) + { + if (operationResponse.Parameters.ContainsKey(ParameterCode.UserId)) + { + string incomingId = (string)operationResponse.Parameters[ParameterCode.UserId]; + if (!string.IsNullOrEmpty(incomingId)) + { + if (this.AuthValues == null) + { + this.AuthValues = new AuthenticationValues(); + } + this.AuthValues.UserId = incomingId; + PhotonNetwork.player.UserId = incomingId; + + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + this.DebugReturn(DebugLevel.INFO, string.Format("Received your UserID from server. Updating local value to: {0}", incomingId)); + } + } + } + if (operationResponse.Parameters.ContainsKey(ParameterCode.NickName)) + { + this.playername = (string)operationResponse.Parameters[ParameterCode.NickName]; + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + this.DebugReturn(DebugLevel.INFO, string.Format("Received your NickName from server. Updating local value to: {0}", this.playername)); + } + } + + if (operationResponse.Parameters.ContainsKey(ParameterCode.EncryptionData)) + { + this.SetupEncryption((Dictionary)operationResponse.Parameters[ParameterCode.EncryptionData]); + } + } + + if (this.Server == ServerConnection.NameServer) + { + // on the NameServer, authenticate returns the MasterServer address for a region and we hop off to there + this.MasterServerAddress = operationResponse[ParameterCode.Address] as string; + this.DisconnectToReconnect(); + } + else if (this.Server == ServerConnection.MasterServer) + { + if (this.AuthMode != AuthModeOption.Auth) + { + this.OpSettings(this.requestLobbyStatistics); + } + if (PhotonNetwork.autoJoinLobby) + { + this.State = ClientState.Authenticated; + this.OpJoinLobby(this.lobby); + } + else + { + this.State = ClientState.ConnectedToMaster; + SendMonoMessage(PhotonNetworkingMessage.OnConnectedToMaster); + } + } + else if (this.Server == ServerConnection.GameServer) + { + this.State = ClientState.Joining; + this.enterRoomParamsCache.PlayerProperties = GetLocalActorProperties(); + this.enterRoomParamsCache.OnGameServer = true; + + if (this.lastJoinType == JoinType.JoinRoom || this.lastJoinType == JoinType.JoinRandomRoom || this.lastJoinType == JoinType.JoinOrCreateRoom) + { + // if we just "join" the game, do so. if we wanted to "create the room on demand", we have to send this to the game server as well. + this.OpJoinRoom(this.enterRoomParamsCache); + } + else if (this.lastJoinType == JoinType.CreateRoom) + { + this.OpCreateGame(this.enterRoomParamsCache); + } + } + + if (operationResponse.Parameters.ContainsKey(ParameterCode.Data)) + { + // optionally, OpAuth may return some data for the client to use. if it's available, call OnCustomAuthenticationResponse + Dictionary data = (Dictionary)operationResponse.Parameters[ParameterCode.Data]; + if (data != null) + { + SendMonoMessage(PhotonNetworkingMessage.OnCustomAuthenticationResponse, data); + } + } + } + break; + } + + case OperationCode.GetRegions: + // Debug.Log("GetRegions returned: " + operationResponse.ToStringFull()); + + if (operationResponse.ReturnCode == ErrorCode.InvalidAuthentication) + { + Debug.LogError(string.Format("The appId this client sent is unknown on the server (Cloud). Check settings. If using the Cloud, check account.")); + SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, DisconnectCause.InvalidAuthentication); + + this.State = ClientState.Disconnecting; + this.Disconnect(); + break; + } + if (operationResponse.ReturnCode != ErrorCode.Ok) + { + Debug.LogError("GetRegions failed. Can't provide regions list. Error: " + operationResponse.ReturnCode + ": " + operationResponse.DebugMessage); + break; + } + + string[] regions = operationResponse[ParameterCode.Region] as string[]; + string[] servers = operationResponse[ParameterCode.Address] as string[]; + if (regions == null || servers == null || regions.Length != servers.Length) + { + Debug.LogError("The region arrays from Name Server are not ok. Must be non-null and same length. " + (regions ==null)+ " " + (servers==null) + "\n"+operationResponse.ToStringFull()); + break; + } + + this.AvailableRegions = new List(regions.Length); + for (int i = 0; i < regions.Length; i++) + { + string regionCodeString = regions[i]; + if (string.IsNullOrEmpty(regionCodeString)) + { + continue; + } + regionCodeString = regionCodeString.ToLower(); + CloudRegionCode code = Region.Parse(regionCodeString); + + // check if enabled (or ignored by PhotonServerSettings.EnabledRegions) + bool enabledRegion = true; + if (PhotonNetwork.PhotonServerSettings.HostType == ServerSettings.HostingOption.BestRegion && PhotonNetwork.PhotonServerSettings.EnabledRegions != 0) + { + CloudRegionFlag flag = Region.ParseFlag(regionCodeString); + enabledRegion = ((PhotonNetwork.PhotonServerSettings.EnabledRegions & flag) != 0); + if (!enabledRegion && PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + Debug.Log("Skipping region because it's not in PhotonServerSettings.EnabledRegions: " + code); + } + } + if (enabledRegion) this.AvailableRegions.Add(new Region() { Code = code, HostAndPort = servers[i] }); + } + + // PUN assumes you fetch the name-server's list of regions to ping them + if (PhotonNetwork.PhotonServerSettings.HostType == ServerSettings.HostingOption.BestRegion) + { + PhotonHandler.PingAvailableRegionsAndConnectToBest(); + } + break; + + case OperationCode.CreateGame: + { + if (this.Server == ServerConnection.GameServer) + { + this.GameEnteredOnGameServer(operationResponse); + } + else + { + if (operationResponse.ReturnCode != 0) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + Debug.LogWarning(string.Format("CreateRoom failed, client stays on masterserver: {0}.", operationResponse.ToStringFull())); + + this.State = (this.insideLobby) ? ClientState.JoinedLobby : ClientState.ConnectedToMaster; + SendMonoMessage(PhotonNetworkingMessage.OnPhotonCreateRoomFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); + break; + } + + string gameID = (string) operationResponse[ParameterCode.RoomName]; + if (!string.IsNullOrEmpty(gameID)) + { + // is only sent by the server's response, if it has not been + // sent with the client's request before! + this.enterRoomParamsCache.RoomName = gameID; + } + + this.GameServerAddress = (string)operationResponse[ParameterCode.Address]; + this.DisconnectToReconnect(); + } + + break; + } + + case OperationCode.JoinGame: + { + if (this.Server != ServerConnection.GameServer) + { + if (operationResponse.ReturnCode != 0) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + Debug.Log(string.Format("JoinRoom failed (room maybe closed by now). Client stays on masterserver: {0}. State: {1}", operationResponse.ToStringFull(), this.State)); + + SendMonoMessage(PhotonNetworkingMessage.OnPhotonJoinRoomFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); + break; + } + + this.GameServerAddress = (string)operationResponse[ParameterCode.Address]; + this.DisconnectToReconnect(); + } + else + { + this.GameEnteredOnGameServer(operationResponse); + } + + break; + } + + case OperationCode.JoinRandomGame: + { + // happens only on master. on gameserver, this is a regular join (we don't need to find a random game again) + // the operation OpJoinRandom either fails (with returncode 8) or returns game-to-join information + if (operationResponse.ReturnCode != 0) + { + if (operationResponse.ReturnCode == ErrorCode.NoRandomMatchFound) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) + Debug.Log("JoinRandom failed: No open game. Calling: OnPhotonRandomJoinFailed() and staying on master server."); + } + else if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + Debug.LogWarning(string.Format("JoinRandom failed: {0}.", operationResponse.ToStringFull())); + } + + SendMonoMessage(PhotonNetworkingMessage.OnPhotonRandomJoinFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); + break; + } + + string roomName = (string)operationResponse[ParameterCode.RoomName]; + this.enterRoomParamsCache.RoomName = roomName; + this.GameServerAddress = (string)operationResponse[ParameterCode.Address]; + this.DisconnectToReconnect(); + break; + } + + case OperationCode.JoinLobby: + this.State = ClientState.JoinedLobby; + this.insideLobby = true; + SendMonoMessage(PhotonNetworkingMessage.OnJoinedLobby); + + // this.mListener.joinLobbyReturn(); + break; + case OperationCode.LeaveLobby: + this.State = ClientState.Authenticated; + this.LeftLobbyCleanup(); // will set insideLobby = false + break; + + case OperationCode.Leave: + this.DisconnectToReconnect(); + break; + + case OperationCode.SetProperties: + // this.mListener.setPropertiesReturn(returnCode, debugMsg); + break; + + case OperationCode.GetProperties: + { + Hashtable actorProperties = (Hashtable)operationResponse[ParameterCode.PlayerProperties]; + Hashtable gameProperties = (Hashtable)operationResponse[ParameterCode.GameProperties]; + this.ReadoutProperties(gameProperties, actorProperties, 0); + + // RemoveByteTypedPropertyKeys(actorProperties, false); + // RemoveByteTypedPropertyKeys(gameProperties, false); + // this.mListener.getPropertiesReturn(gameProperties, actorProperties, returnCode, debugMsg); + break; + } + + case OperationCode.RaiseEvent: + // this usually doesn't give us a result. only if the caching is affected the server will send one. + break; + + case OperationCode.FindFriends: + bool[] onlineList = operationResponse[ParameterCode.FindFriendsResponseOnlineList] as bool[]; + string[] roomList = operationResponse[ParameterCode.FindFriendsResponseRoomIdList] as string[]; + + if (onlineList != null && roomList != null && this.friendListRequested != null && onlineList.Length == this.friendListRequested.Length) + { + List friendList = new List(this.friendListRequested.Length); + for (int index = 0; index < this.friendListRequested.Length; index++) + { + FriendInfo friend = new FriendInfo(); + friend.Name = this.friendListRequested[index]; + friend.Room = roomList[index]; + friend.IsOnline = onlineList[index]; + friendList.Insert(index, friend); + } + PhotonNetwork.Friends = friendList; + } + else + { + // any of the lists is null and shouldn't. print a error + Debug.LogError("FindFriends failed to apply the result, as a required value wasn't provided or the friend list length differed from result."); + } + + this.friendListRequested = null; + this.isFetchingFriendList = false; + this.friendListTimestamp = Environment.TickCount; + if (this.friendListTimestamp == 0) + { + this.friendListTimestamp = 1; // makes sure the timestamp is not accidentally 0 + } + + SendMonoMessage(PhotonNetworkingMessage.OnUpdatedFriendList); + break; + + case OperationCode.WebRpc: + SendMonoMessage(PhotonNetworkingMessage.OnWebRpcResponse, operationResponse); + break; + + default: + Debug.LogWarning(string.Format("OperationResponse unhandled: {0}", operationResponse.ToString())); + break; + } + + //this.externalListener.OnOperationResponse(operationResponse); + } + + public void OnStatusChanged(StatusCode statusCode) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + Debug.Log(string.Format("OnStatusChanged: {0} current State: {1}", statusCode.ToString(), this.State)); + + switch (statusCode) + { + case StatusCode.Connect: + if (this.State == ClientState.ConnectingToNameServer) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) + Debug.Log("Connected to NameServer."); + + this.Server = ServerConnection.NameServer; + if (this.AuthValues != null) + { + this.AuthValues.Token = null; // when connecting to NameServer, invalidate any auth values + } + } + + if (this.State == ClientState.ConnectingToGameserver) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) + Debug.Log("Connected to gameserver."); + + this.Server = ServerConnection.GameServer; + this.State = ClientState.ConnectedToGameserver; + } + + if (this.State == ClientState.ConnectingToMasterserver) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) + Debug.Log("Connected to masterserver."); + + this.Server = ServerConnection.MasterServer; + this.State = ClientState.Authenticating; // photon v4 always requires OpAuthenticate. even self-hosted Photon Server + + if (this.IsInitialConnect) + { + this.IsInitialConnect = false; // after handling potential initial-connect issues with special messages, we are now sure we can reach a server + SendMonoMessage(PhotonNetworkingMessage.OnConnectedToPhoton); + } + } + + + if (this.TransportProtocol != ConnectionProtocol.WebSocketSecure) + { + if (this.Server == ServerConnection.NameServer || this.AuthMode == AuthModeOption.Auth) + { + this.EstablishEncryption(); + } + } + else + { + if (DebugOut == DebugLevel.INFO) + { + Debug.Log("Skipping EstablishEncryption. Protocol is secure."); + } + + goto case StatusCode.EncryptionEstablished; + } + break; + + case StatusCode.EncryptionEstablished: + // on nameserver, the "process" is stopped here, so the developer/game can either get regions or authenticate with a specific region + if (this.Server == ServerConnection.NameServer) + { + this.State = ClientState.ConnectedToNameServer; + + if (!this.didAuthenticate && this.CloudRegion == CloudRegionCode.none) + { + // this client is not setup to connect to a default region. find out which regions there are! + this.OpGetRegions(this.AppId); + } + } + + if (this.Server != ServerConnection.NameServer && (this.AuthMode == AuthModeOption.AuthOnce || this.AuthMode == AuthModeOption.AuthOnceWss)) + { + // AuthMode "Once" means we only authenticate on the NameServer + break; + } + + + // we might need to authenticate automatically now, so the client can do anything at all + if (!this.didAuthenticate && (!this.IsUsingNameServer || this.CloudRegion != CloudRegionCode.none)) + { + this.didAuthenticate = this.CallAuthenticate(); + + if (this.didAuthenticate) + { + this.State = ClientState.Authenticating; + } + } + break; + + case StatusCode.EncryptionFailedToEstablish: + Debug.LogError("Encryption wasn't established: " + statusCode + ". Going to authenticate anyways."); + AuthenticationValues authV = this.AuthValues ?? new AuthenticationValues() { UserId = this.PlayerName }; + this.OpAuthenticate(this.AppId, this.AppVersion, authV, this.CloudRegion.ToString(), this.requestLobbyStatistics); // TODO: check if there are alternatives + break; + + case StatusCode.Disconnect: + this.didAuthenticate = false; + this.isFetchingFriendList = false; + if (this.Server == ServerConnection.GameServer) this.LeftRoomCleanup(); + if (this.Server == ServerConnection.MasterServer) this.LeftLobbyCleanup(); + + if (this.State == ClientState.DisconnectingFromMasterserver) + { + if (this.Connect(this.GameServerAddress, ServerConnection.GameServer)) + { + this.State = ClientState.ConnectingToGameserver; + } + } + else if (this.State == ClientState.DisconnectingFromGameserver || this.State == ClientState.DisconnectingFromNameServer) + { + this.SetupProtocol(ServerConnection.MasterServer); + if (this.Connect(this.MasterServerAddress, ServerConnection.MasterServer)) + { + this.State = ClientState.ConnectingToMasterserver; + } + } + else + { + if (this.AuthValues != null) + { + this.AuthValues.Token = null; // invalidate any custom auth secrets + } + + this.State = ClientState.PeerCreated; // if we set another state here, we could keep clients from connecting in OnDisconnectedFromPhoton right here. + SendMonoMessage(PhotonNetworkingMessage.OnDisconnectedFromPhoton); + } + break; + + case StatusCode.SecurityExceptionOnConnect: + case StatusCode.ExceptionOnConnect: + this.State = ClientState.PeerCreated; + if (this.AuthValues != null) + { + this.AuthValues.Token = null; // invalidate any custom auth secrets + } + + DisconnectCause cause = (DisconnectCause)statusCode; + SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, cause); + break; + + case StatusCode.Exception: + if (this.IsInitialConnect) + { + Debug.LogError("Exception while connecting to: " + this.ServerAddress + ". Check if the server is available."); + if (this.ServerAddress == null || this.ServerAddress.StartsWith("127.0.0.1")) + { + Debug.LogWarning("The server address is 127.0.0.1 (localhost): Make sure the server is running on this machine. Android and iOS emulators have their own localhost."); + if (this.ServerAddress == this.GameServerAddress) + { + Debug.LogWarning("This might be a misconfiguration in the game server config. You need to edit it to a (public) address."); + } + } + + this.State = ClientState.PeerCreated; + cause = (DisconnectCause)statusCode; + SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, cause); + } + else + { + this.State = ClientState.PeerCreated; + + cause = (DisconnectCause)statusCode; + SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, cause); + } + + this.Disconnect(); + break; + + case StatusCode.TimeoutDisconnect: + if (this.IsInitialConnect) + { + Debug.LogWarning(statusCode + " while connecting to: " + this.ServerAddress + ". Check if the server is available."); + + cause = (DisconnectCause)statusCode; + SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, cause); + } + else + { + cause = (DisconnectCause)statusCode; + SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, cause); + } + if (this.AuthValues != null) + { + this.AuthValues.Token = null; // invalidate any custom auth secrets + } + + /* JF: we need this when reconnecting and joining. + if (this.ServerAddress.Equals(this.GameServerAddress)) + { + this.GameServerAddress = null; + } + if (this.ServerAddress.Equals(this.MasterServerAddress)) + { + this.ServerAddress = null; + } + */ + + this.Disconnect(); + break; + + case StatusCode.ExceptionOnReceive: + case StatusCode.DisconnectByServer: + case StatusCode.DisconnectByServerLogic: + case StatusCode.DisconnectByServerUserLimit: + if (this.IsInitialConnect) + { + Debug.LogWarning(statusCode + " while connecting to: " + this.ServerAddress + ". Check if the server is available."); + + cause = (DisconnectCause)statusCode; + SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, cause); + } + else + { + cause = (DisconnectCause)statusCode; + SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, cause); + } + if (this.AuthValues != null) + { + this.AuthValues.Token = null; // invalidate any custom auth secrets + } + + this.Disconnect(); + break; + + case StatusCode.SendError: + // this.mListener.clientErrorReturn(statusCode); + break; + + case StatusCode.QueueOutgoingReliableWarning: + case StatusCode.QueueOutgoingUnreliableWarning: + case StatusCode.QueueOutgoingAcksWarning: + case StatusCode.QueueSentWarning: + // this.mListener.warningReturn(statusCode); + break; + + case StatusCode.QueueIncomingReliableWarning: + case StatusCode.QueueIncomingUnreliableWarning: + Debug.Log(statusCode + ". This client buffers many incoming messages. This is OK temporarily. With lots of these warnings, check if you send too much or execute messages too slow. " + (PhotonNetwork.isMessageQueueRunning? "":"Your isMessageQueueRunning is false. This can cause the issue temporarily.") ); + break; + + // // TCP "routing" is an option of Photon that's not currently needed (or supported) by PUN + //case StatusCode.TcpRouterResponseOk: + // break; + //case StatusCode.TcpRouterResponseEndpointUnknown: + //case StatusCode.TcpRouterResponseNodeIdUnknown: + //case StatusCode.TcpRouterResponseNodeNotReady: + + // this.DebugReturn(DebugLevel.ERROR, "Unexpected router response: " + statusCode); + // break; + + default: + + // this.mListener.serverErrorReturn(statusCode.value()); + Debug.LogError("Received unknown status code: " + statusCode); + break; + } + + //this.externalListener.OnStatusChanged(statusCode); + } + + + public void OnEvent(EventData photonEvent) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + Debug.Log(string.Format("OnEvent: {0}", photonEvent.ToString())); + + int actorNr = -1; + PhotonPlayer originatingPlayer = null; + + if (photonEvent.Parameters.ContainsKey(ParameterCode.ActorNr)) + { + actorNr = (int)photonEvent[ParameterCode.ActorNr]; + originatingPlayer = this.GetPlayerWithId(actorNr); + + //else + //{ + // // the actor sending this event is not in actorlist. this is usually no problem + // if (photonEvent.Code != (byte)LiteOpCode.Join) + // { + // Debug.LogWarning("Received event, but we do not have this actor: " + actorNr); + // } + //} + } + + switch (photonEvent.Code) + { + case PunEvent.OwnershipRequest: + { + int[] requestValues = (int[]) photonEvent.Parameters[ParameterCode.CustomEventContent]; + int requestedViewId = requestValues[0]; + int currentOwner = requestValues[1]; + + + PhotonView requestedView = PhotonView.Find(requestedViewId); + if (requestedView == null) + { + Debug.LogWarning("Can't find PhotonView of incoming OwnershipRequest. ViewId not found: " + requestedViewId); + break; + } + + if (PhotonNetwork.logLevel == PhotonLogLevel.Informational) + Debug.Log("Ev OwnershipRequest " + requestedView.ownershipTransfer + ". ActorNr: " + actorNr + " takes from: " + currentOwner + ". Current owner: " + requestedView.ownerId + " isOwnerActive: " + requestedView.isOwnerActive + ". MasterClient: " + this.mMasterClientId + ". This client's player: " + PhotonNetwork.player.ToStringFull()); + + switch (requestedView.ownershipTransfer) + { + case OwnershipOption.Fixed: + Debug.LogWarning("Ownership mode == fixed. Ignoring request."); + break; + case OwnershipOption.Takeover: + if (currentOwner == requestedView.ownerId || (currentOwner == 0 && requestedView.ownerId == this.mMasterClientId)) + { + // a takeover is successful automatically, if taken from current owner + requestedView.OwnerShipWasTransfered = true; + requestedView.ownerId = actorNr; + if (PhotonNetwork.logLevel == PhotonLogLevel.Informational) + { + Debug.LogWarning(requestedView + " ownership transfered to: "+ actorNr); + } + } + break; + case OwnershipOption.Request: + if (currentOwner == PhotonNetwork.player.ID || PhotonNetwork.player.IsMasterClient) + { + if ((requestedView.ownerId == PhotonNetwork.player.ID) || (PhotonNetwork.player.IsMasterClient && !requestedView.isOwnerActive)) + { + SendMonoMessage(PhotonNetworkingMessage.OnOwnershipRequest, new object[] {requestedView, originatingPlayer}); + } + } + break; + default: + break; + } + } + break; + + case PunEvent.OwnershipTransfer: + { + int[] transferViewToUserID = (int[]) photonEvent.Parameters[ParameterCode.CustomEventContent]; + Debug.Log("Ev OwnershipTransfer. ViewID " + transferViewToUserID[0] + " to: " + transferViewToUserID[1] + " Time: " + Environment.TickCount%1000); + + int requestedViewId = transferViewToUserID[0]; + int newOwnerId = transferViewToUserID[1]; + + PhotonView pv = PhotonView.Find(requestedViewId); + if (pv != null) + { + pv.OwnerShipWasTransfered = true; + pv.ownerId = newOwnerId; + + } + + break; + } + case EventCode.GameList: + { + this.mGameList = new Dictionary(); + Hashtable games = (Hashtable)photonEvent[ParameterCode.GameList]; + foreach (var gameKey in games.Keys) + { + string gameName = (string)gameKey; + this.mGameList[gameName] = new RoomInfo(gameName, (Hashtable)games[gameKey]); + } + mGameListCopy = new RoomInfo[mGameList.Count]; + mGameList.Values.CopyTo(mGameListCopy, 0); + SendMonoMessage(PhotonNetworkingMessage.OnReceivedRoomListUpdate); + break; + } + + case EventCode.GameListUpdate: + { + Hashtable games = (Hashtable)photonEvent[ParameterCode.GameList]; + foreach (var roomKey in games.Keys) + { + string gameName = (string)roomKey; + RoomInfo game = new RoomInfo(gameName, (Hashtable)games[roomKey]); + if (game.removedFromList) + { + this.mGameList.Remove(gameName); + } + else + { + this.mGameList[gameName] = game; + } + } + this.mGameListCopy = new RoomInfo[this.mGameList.Count]; + this.mGameList.Values.CopyTo(this.mGameListCopy, 0); + SendMonoMessage(PhotonNetworkingMessage.OnReceivedRoomListUpdate); + break; + } + + case EventCode.QueueState: + // not used anymore + break; + + case EventCode.AppStats: + // Debug.LogInfo("Received stats!"); + this.PlayersInRoomsCount = (int)photonEvent[ParameterCode.PeerCount]; + this.PlayersOnMasterCount = (int)photonEvent[ParameterCode.MasterPeerCount]; + this.RoomsCount = (int)photonEvent[ParameterCode.GameCount]; + break; + + case EventCode.Join: + // actorNr is fetched out of event above + Hashtable actorProperties = (Hashtable)photonEvent[ParameterCode.PlayerProperties]; + if (originatingPlayer == null) + { + bool isLocal = this.LocalPlayer.ID == actorNr; + this.AddNewPlayer(actorNr, new PhotonPlayer(isLocal, actorNr, actorProperties)); + this.ResetPhotonViewsOnSerialize(); // This sets the correct OnSerializeState for Reliable OnSerialize + } + else + { + originatingPlayer.InternalCacheProperties(actorProperties); + originatingPlayer.IsInactive = false; + } + + if (actorNr == this.LocalPlayer.ID) + { + // in this player's 'own' join event, we get a complete list of players in the room, so check if we know all players + int[] actorsInRoom = (int[])photonEvent[ParameterCode.ActorList]; + this.UpdatedActorList(actorsInRoom); + + // joinWithCreateOnDemand can turn an OpJoin into creating the room. Then actorNumber is 1 and callback: OnCreatedRoom() + if (this.lastJoinType == JoinType.JoinOrCreateRoom && this.LocalPlayer.ID == 1) + { + SendMonoMessage(PhotonNetworkingMessage.OnCreatedRoom); + } + SendMonoMessage(PhotonNetworkingMessage.OnJoinedRoom); //Always send OnJoinedRoom + + } + else + { + SendMonoMessage(PhotonNetworkingMessage.OnPhotonPlayerConnected, this.mActors[actorNr]); + } + break; + + case EventCode.Leave: + this.HandleEventLeave(actorNr, photonEvent); + break; + + case EventCode.PropertiesChanged: + int targetActorNr = (int)photonEvent[ParameterCode.TargetActorNr]; + Hashtable gameProperties = null; + Hashtable actorProps = null; + if (targetActorNr == 0) + { + gameProperties = (Hashtable)photonEvent[ParameterCode.Properties]; + } + else + { + actorProps = (Hashtable)photonEvent[ParameterCode.Properties]; + } + + this.ReadoutProperties(gameProperties, actorProps, targetActorNr); + break; + + case PunEvent.RPC: + //ts: each event now contains a single RPC. execute this + // Debug.Log("Ev RPC from: " + originatingPlayer); + this.ExecuteRpc(photonEvent[ParameterCode.Data] as Hashtable, originatingPlayer); + break; + + case PunEvent.SendSerialize: + case PunEvent.SendSerializeReliable: + Hashtable serializeData = (Hashtable)photonEvent[ParameterCode.Data]; + //Debug.Log(serializeData.ToStringFull()); + + int remoteUpdateServerTimestamp = (int)serializeData[(byte)0]; + short remoteLevelPrefix = -1; + byte initialDataIndex = 10; + int headerLength = 1; + if (serializeData.ContainsKey((byte)1)) + { + remoteLevelPrefix = (short)serializeData[(byte)1]; + headerLength = 2; + } + + for (byte s = initialDataIndex; s - initialDataIndex < serializeData.Count - headerLength; s++) + { + this.OnSerializeRead(serializeData[s] as object[], originatingPlayer, remoteUpdateServerTimestamp, remoteLevelPrefix); + } + break; + + case PunEvent.Instantiation: + this.DoInstantiate((Hashtable)photonEvent[ParameterCode.Data], originatingPlayer, null); + break; + + case PunEvent.CloseConnection: + // MasterClient "requests" a disconnection from us + if (originatingPlayer == null || !originatingPlayer.IsMasterClient) + { + Debug.LogError("Error: Someone else(" + originatingPlayer + ") then the masterserver requests a disconnect!"); + } + else + { + PhotonNetwork.LeaveRoom(); + } + + break; + + case PunEvent.DestroyPlayer: + Hashtable evData = (Hashtable)photonEvent[ParameterCode.Data]; + int targetPlayerId = (int)evData[(byte)0]; + if (targetPlayerId >= 0) + { + this.DestroyPlayerObjects(targetPlayerId, true); + } + else + { + if (this.DebugOut >= DebugLevel.INFO) Debug.Log("Ev DestroyAll! By PlayerId: " + actorNr); + this.DestroyAll(true); + } + break; + + case PunEvent.Destroy: + evData = (Hashtable)photonEvent[ParameterCode.Data]; + int instantiationId = (int)evData[(byte)0]; + // Debug.Log("Ev Destroy for viewId: " + instantiationId + " sent by owner: " + (instantiationId / PhotonNetwork.MAX_VIEW_IDS == actorNr) + " this client is owner: " + (instantiationId / PhotonNetwork.MAX_VIEW_IDS == this.LocalPlayer.ID)); + + + PhotonView pvToDestroy = null; + if (this.photonViewList.TryGetValue(instantiationId, out pvToDestroy)) + { + this.RemoveInstantiatedGO(pvToDestroy.gameObject, true); + } + else + { + if (this.DebugOut >= DebugLevel.ERROR) Debug.LogError("Ev Destroy Failed. Could not find PhotonView with instantiationId " + instantiationId + ". Sent by actorNr: " + actorNr); + } + + break; + + case PunEvent.AssignMaster: + evData = (Hashtable)photonEvent[ParameterCode.Data]; + int newMaster = (int)evData[(byte)1]; + this.SetMasterClient(newMaster, false); + break; + + case EventCode.LobbyStats: + //Debug.Log("LobbyStats EV: " + photonEvent.ToStringFull()); + + string[] names = photonEvent[ParameterCode.LobbyName] as string[]; + byte[] types = photonEvent[ParameterCode.LobbyType] as byte[]; + int[] peers = photonEvent[ParameterCode.PeerCount] as int[]; + int[] rooms = photonEvent[ParameterCode.GameCount] as int[]; + + this.LobbyStatistics.Clear(); + for (int i = 0; i < names.Length; i++) + { + TypedLobbyInfo info = new TypedLobbyInfo(); + info.Name = names[i]; + info.Type = (LobbyType)types[i]; + info.PlayerCount = peers[i]; + info.RoomCount = rooms[i]; + + this.LobbyStatistics.Add(info); + } + + SendMonoMessage(PhotonNetworkingMessage.OnLobbyStatisticsUpdate); + break; + + case EventCode.ErrorInfo: + if (PhotonNetwork.OnEventCall != null) + { + object content = photonEvent[ParameterCode.Data]; + PhotonNetwork.OnEventCall(photonEvent.Code, content, actorNr); + } + else + { + Debug.LogWarning("Warning: Unhandled Event ErrorInfo (251). Set PhotonNetwork.OnEventCall to the method PUN should call for this event."); + } + break; + + case EventCode.AuthEvent: + if (this.AuthValues == null) + { + this.AuthValues = new AuthenticationValues(); + } + + this.AuthValues.Token = photonEvent[ParameterCode.Secret] as string; + this.tokenCache = this.AuthValues.Token; + break; + + default: + if (photonEvent.Code < 200) + { + if (PhotonNetwork.OnEventCall != null) + { + object content = photonEvent[ParameterCode.Data]; + PhotonNetwork.OnEventCall(photonEvent.Code, content, actorNr); + } + else + { + Debug.LogWarning("Warning: Unhandled event " + photonEvent + ". Set PhotonNetwork.OnEventCall."); + } + } + break; + } + + //this.externalListener.OnEvent(photonEvent); + } + + public void OnMessage(object messages) + { + // not used here + } + + #endregion + + + private void SetupEncryption(Dictionary encryptionData) + { + // this should not be called when authentication is done per server. this mode does not support the required "key-exchange via token" + if (this.AuthMode == AuthModeOption.Auth) + { + if (DebugOut == DebugLevel.ERROR) + { + UnityEngine.Debug.LogWarning("SetupEncryption() called but ignored. Not XB1 compiled. EncryptionData: " + encryptionData.ToStringFull()); + return; + } + } + + + // for AuthOnce and AuthOnceWss, we can keep the same secret across machines (for the session, basically) + if (DebugOut == DebugLevel.INFO) + { + UnityEngine.Debug.Log("SetupEncryption() got called. "+encryptionData.ToStringFull()); + } + + var mode = (EncryptionMode)(byte)encryptionData[EncryptionDataParameters.Mode]; + switch (mode) + { + case EncryptionMode.PayloadEncryption: + byte[] secret = (byte[])encryptionData[EncryptionDataParameters.Secret1]; + this.InitPayloadEncryption(secret); + break; + case EncryptionMode.DatagramEncryption: + { + byte[] secret1 = (byte[])encryptionData[EncryptionDataParameters.Secret1]; + byte[] secret2 = (byte[])encryptionData[EncryptionDataParameters.Secret2]; + this.InitDatagramEncryption(secret1, secret2); + } + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + + protected internal void UpdatedActorList(int[] actorsInRoom) + { + for (int i = 0; i < actorsInRoom.Length; i++) + { + int actorNrToCheck = actorsInRoom[i]; + if (this.LocalPlayer.ID != actorNrToCheck && !this.mActors.ContainsKey(actorNrToCheck)) + { + this.AddNewPlayer(actorNrToCheck, new PhotonPlayer(false, actorNrToCheck, string.Empty)); + } + } + } + + private void SendVacantViewIds() + { + Debug.Log("SendVacantViewIds()"); + List vacantViews = new List(); + foreach (PhotonView view in this.photonViewList.Values) + { + if (!view.isOwnerActive) + { + vacantViews.Add(view.viewID); + } + } + + Debug.Log("Sending vacant view IDs. Length: " + vacantViews.Count); + //this.OpRaiseEvent(PunEvent.VacantViewIds, true, vacantViews.ToArray()); + this.OpRaiseEvent(PunEvent.VacantViewIds, vacantViews.ToArray(), true, null); + } + + public static void SendMonoMessage(PhotonNetworkingMessage methodString, params object[] parameters) + { + HashSet objectsToCall; + if (PhotonNetwork.SendMonoMessageTargets != null) + { + objectsToCall = PhotonNetwork.SendMonoMessageTargets; + } + else + { + objectsToCall = PhotonNetwork.FindGameObjectsWithComponent(PhotonNetwork.SendMonoMessageTargetType); + } + + string methodName = methodString.ToString(); + object callParameter = (parameters != null && parameters.Length == 1) ? parameters[0] : parameters; + foreach (GameObject gameObject in objectsToCall) + { + if (gameObject!=null) + { + gameObject.SendMessage(methodName, callParameter, SendMessageOptions.DontRequireReceiver); + } + } + } + + // PHOTONVIEW/RPC related + + /// + /// Executes a received RPC event + /// + protected internal void ExecuteRpc(Hashtable rpcData, PhotonPlayer sender) + { + if (rpcData == null || !rpcData.ContainsKey((byte)0)) + { + Debug.LogError("Malformed RPC; this should never occur. Content: " + SupportClassPun.DictionaryToString(rpcData)); + return; + } + + // ts: updated with "flat" event data + int netViewID = (int)rpcData[(byte)0]; // LIMITS PHOTONVIEWS&PLAYERS + int otherSidePrefix = 0; // by default, the prefix is 0 (and this is not being sent) + if (rpcData.ContainsKey((byte)1)) + { + otherSidePrefix = (short)rpcData[(byte)1]; + } + + + string inMethodName; + if (rpcData.ContainsKey((byte)5)) + { + int rpcIndex = (byte)rpcData[(byte)5]; // LIMITS RPC COUNT + if (rpcIndex > PhotonNetwork.PhotonServerSettings.RpcList.Count - 1) + { + Debug.LogError("Could not find RPC with index: " + rpcIndex + ". Going to ignore! Check PhotonServerSettings.RpcList"); + return; + } + else + { + inMethodName = PhotonNetwork.PhotonServerSettings.RpcList[rpcIndex]; + } + } + else + { + inMethodName = (string)rpcData[(byte)3]; + } + + object[] inMethodParameters = null; + if (rpcData.ContainsKey((byte)4)) + { + inMethodParameters = (object[])rpcData[(byte)4]; + } + + if (inMethodParameters == null) + { + inMethodParameters = new object[0]; + } + + PhotonView photonNetview = this.GetPhotonView(netViewID); + if (photonNetview == null) + { + int viewOwnerId = netViewID/PhotonNetwork.MAX_VIEW_IDS; + bool owningPv = (viewOwnerId == this.LocalPlayer.ID); + bool ownerSent = (viewOwnerId == sender.ID); + + if (owningPv) + { + Debug.LogWarning("Received RPC \"" + inMethodName + "\" for viewID " + netViewID + " but this PhotonView does not exist! View was/is ours." + (ownerSent ? " Owner called." : " Remote called.") + " By: " + sender.ID); + } + else + { + Debug.LogWarning("Received RPC \"" + inMethodName + "\" for viewID " + netViewID + " but this PhotonView does not exist! Was remote PV." + (ownerSent ? " Owner called." : " Remote called.") + " By: " + sender.ID + " Maybe GO was destroyed but RPC not cleaned up."); + } + return; + } + + if (photonNetview.prefix != otherSidePrefix) + { + Debug.LogError("Received RPC \"" + inMethodName + "\" on viewID " + netViewID + " with a prefix of " + otherSidePrefix + ", our prefix is " + photonNetview.prefix + ". The RPC has been ignored."); + return; + } + + // Get method name + if (string.IsNullOrEmpty(inMethodName)) + { + Debug.LogError("Malformed RPC; this should never occur. Content: " + SupportClassPun.DictionaryToString(rpcData)); + return; + } + + if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) + Debug.Log("Received RPC: " + inMethodName); + + + // SetReceiving filtering + if (photonNetview.group != 0 && !allowedReceivingGroups.Contains(photonNetview.group)) + { + return; // Ignore group + } + + Type[] argTypes = new Type[0]; + if (inMethodParameters.Length > 0) + { + argTypes = new Type[inMethodParameters.Length]; + int i = 0; + for (int index = 0; index < inMethodParameters.Length; index++) + { + object objX = inMethodParameters[index]; + if (objX == null) + { + argTypes[i] = null; + } + else + { + argTypes[i] = objX.GetType(); + } + + i++; + } + } + + int receivers = 0; + int foundMethods = 0; + if (!PhotonNetwork.UseRpcMonoBehaviourCache || photonNetview.RpcMonoBehaviours == null || photonNetview.RpcMonoBehaviours.Length == 0) + { + photonNetview.RefreshRpcMonoBehaviourCache(); + } + + for (int componentsIndex = 0; componentsIndex < photonNetview.RpcMonoBehaviours.Length; componentsIndex++) + { + MonoBehaviour monob = photonNetview.RpcMonoBehaviours[componentsIndex]; + if (monob == null) + { + Debug.LogError("ERROR You have missing MonoBehaviours on your gameobjects!"); + continue; + } + + Type type = monob.GetType(); + + // Get [PunRPC] methods from cache + List cachedRPCMethods = null; + bool methodsOfTypeInCache = this.monoRPCMethodsCache.TryGetValue(type, out cachedRPCMethods); + + if (!methodsOfTypeInCache) + { + List entries = SupportClassPun.GetMethods(type, typeof(PunRPC)); + + this.monoRPCMethodsCache[type] = entries; + cachedRPCMethods = entries; + } + + if (cachedRPCMethods == null) + { + continue; + } + + // Check cache for valid methodname+arguments + for (int index = 0; index < cachedRPCMethods.Count; index++) + { + MethodInfo mInfo = cachedRPCMethods[index]; + if (mInfo.Name.Equals(inMethodName)) + { + foundMethods++; + ParameterInfo[] pArray = mInfo.GetCachedParemeters(); + + if (pArray.Length == argTypes.Length) + { + // Normal, PhotonNetworkMessage left out + if (this.CheckTypeMatch(pArray, argTypes)) + { + receivers++; + object result = mInfo.Invoke((object)monob, inMethodParameters); + if (PhotonNetwork.StartRpcsAsCoroutine && mInfo.ReturnType == typeof(IEnumerator)) + { + monob.StartCoroutine((IEnumerator)result); + } + } + } + else if ((pArray.Length - 1) == argTypes.Length) + { + // Check for PhotonNetworkMessage being the last + if (this.CheckTypeMatch(pArray, argTypes)) + { + if (pArray[pArray.Length - 1].ParameterType == typeof(PhotonMessageInfo)) + { + receivers++; + + int sendTime = (int)rpcData[(byte)2]; + object[] deParamsWithInfo = new object[inMethodParameters.Length + 1]; + inMethodParameters.CopyTo(deParamsWithInfo, 0); + deParamsWithInfo[deParamsWithInfo.Length - 1] = new PhotonMessageInfo(sender, sendTime, photonNetview); + + object result = mInfo.Invoke((object)monob, deParamsWithInfo); + if (PhotonNetwork.StartRpcsAsCoroutine && mInfo.ReturnType == typeof(IEnumerator)) + { + monob.StartCoroutine((IEnumerator)result); + } + } + } + } + else if (pArray.Length == 1 && pArray[0].ParameterType.IsArray) + { + receivers++; + object result = mInfo.Invoke((object)monob, new object[] { inMethodParameters }); + if (PhotonNetwork.StartRpcsAsCoroutine && mInfo.ReturnType == typeof(IEnumerator)) + { + monob.StartCoroutine((IEnumerator)result); + } + } + } + } + } + + // Error handling + if (receivers != 1) + { + string argsString = string.Empty; + for (int index = 0; index < argTypes.Length; index++) + { + Type ty = argTypes[index]; + if (argsString != string.Empty) + { + argsString += ", "; + } + + if (ty == null) + { + argsString += "null"; + } + else + { + argsString += ty.Name; + } + } + + if (receivers == 0) + { + if (foundMethods == 0) + { + Debug.LogError("PhotonView with ID " + netViewID + " has no method \"" + inMethodName + "\" marked with the [PunRPC](C#) or @PunRPC(JS) property! Args: " + argsString); + } + else + { + Debug.LogError("PhotonView with ID " + netViewID + " has no method \"" + inMethodName + "\" that takes " + argTypes.Length + " argument(s): " + argsString); + } + } + else + { + Debug.LogError("PhotonView with ID " + netViewID + " has " + receivers + " methods \"" + inMethodName + "\" that takes " + argTypes.Length + " argument(s): " + argsString + ". Should be just one?"); + } + } + } + + /// + /// Check if all types match with parameters. We can have more paramters then types (allow last RPC type to be different). + /// + /// + /// + /// If the types-array has matching parameters (of method) in the parameters array (which may be longer). + private bool CheckTypeMatch(ParameterInfo[] methodParameters, Type[] callParameterTypes) + { + if (methodParameters.Length < callParameterTypes.Length) + { + return false; + } + + for (int index = 0; index < callParameterTypes.Length; index++) + { + #if NETFX_CORE + TypeInfo methodParamTI = methodParameters[index].ParameterType.GetTypeInfo(); + TypeInfo callParamTI = callParameterTypes[index].GetTypeInfo(); + + if (callParameterTypes[index] != null && !methodParamTI.IsAssignableFrom(callParamTI) && !(callParamTI.IsEnum && System.Enum.GetUnderlyingType(methodParamTI.AsType()).GetTypeInfo().IsAssignableFrom(callParamTI))) + { + return false; + } + #else + Type type = methodParameters[index].ParameterType; + if (callParameterTypes[index] != null && !type.IsAssignableFrom(callParameterTypes[index]) && !(type.IsEnum && System.Enum.GetUnderlyingType(type).IsAssignableFrom(callParameterTypes[index]))) + { + return false; + } + #endif + } + + return true; + } + + internal Hashtable SendInstantiate(string prefabName, Vector3 position, Quaternion rotation, int group, int[] viewIDs, object[] data, bool isGlobalObject) + { + // first viewID is now also the gameobject's instantiateId + int instantiateId = viewIDs[0]; // LIMITS PHOTONVIEWS&PLAYERS + + //TODO: reduce hashtable key usage by using a parameter array for the various values + Hashtable instantiateEvent = new Hashtable(); // This players info is sent via ActorID + instantiateEvent[(byte)0] = prefabName; + + if (position != Vector3.zero) + { + instantiateEvent[(byte)1] = position; + } + + if (rotation != Quaternion.identity) + { + instantiateEvent[(byte)2] = rotation; + } + + if (group != 0) + { + instantiateEvent[(byte)3] = group; + } + + // send the list of viewIDs only if there are more than one. else the instantiateId is the viewID + if (viewIDs.Length > 1) + { + instantiateEvent[(byte)4] = viewIDs; // LIMITS PHOTONVIEWS&PLAYERS + } + + if (data != null) + { + instantiateEvent[(byte)5] = data; + } + + if (this.currentLevelPrefix > 0) + { + instantiateEvent[(byte)8] = this.currentLevelPrefix; // photonview's / object's level prefix + } + + instantiateEvent[(byte)6] = PhotonNetwork.ServerTimestamp; + instantiateEvent[(byte)7] = instantiateId; + + + RaiseEventOptions options = new RaiseEventOptions(); + options.CachingOption = (isGlobalObject) ? EventCaching.AddToRoomCacheGlobal : EventCaching.AddToRoomCache; + + this.OpRaiseEvent(PunEvent.Instantiation, instantiateEvent, true, options); + return instantiateEvent; + } + + internal GameObject DoInstantiate(Hashtable evData, PhotonPlayer photonPlayer, GameObject resourceGameObject) + { + // some values always present: + string prefabName = (string)evData[(byte)0]; + int serverTime = (int)evData[(byte)6]; + int instantiationId = (int)evData[(byte)7]; + + Vector3 position; + if (evData.ContainsKey((byte)1)) + { + position = (Vector3)evData[(byte)1]; + } + else + { + position = Vector3.zero; + } + + Quaternion rotation = Quaternion.identity; + if (evData.ContainsKey((byte)2)) + { + rotation = (Quaternion)evData[(byte)2]; + } + + int group = 0; + if (evData.ContainsKey((byte)3)) + { + group = (int)evData[(byte)3]; + } + + short objLevelPrefix = 0; + if (evData.ContainsKey((byte)8)) + { + objLevelPrefix = (short)evData[(byte)8]; + } + + int[] viewsIDs; + if (evData.ContainsKey((byte)4)) + { + viewsIDs = (int[])evData[(byte)4]; + } + else + { + viewsIDs = new int[1] { instantiationId }; + } + + object[] incomingInstantiationData; + if (evData.ContainsKey((byte)5)) + { + incomingInstantiationData = (object[])evData[(byte)5]; + } + else + { + incomingInstantiationData = null; + } + + // SetReceiving filtering + if (group != 0 && !this.allowedReceivingGroups.Contains(group)) + { + return null; // Ignore group + } + + if (ObjectPool != null) + { + GameObject go = ObjectPool.Instantiate(prefabName, position, rotation); + + PhotonView[] photonViews = go.GetPhotonViewsInChildren(); + if (photonViews.Length != viewsIDs.Length) + { + throw new Exception("Error in Instantiation! The resource's PhotonView count is not the same as in incoming data."); + } + for (int i = 0; i < photonViews.Length; i++) + { + photonViews[i].didAwake = false; + photonViews[i].viewID = 0; + + photonViews[i].prefix = objLevelPrefix; + photonViews[i].instantiationId = instantiationId; + photonViews[i].isRuntimeInstantiated = true; + photonViews[i].instantiationDataField = incomingInstantiationData; + + photonViews[i].didAwake = true; + photonViews[i].viewID = viewsIDs[i]; // with didAwake true and viewID == 0, this will also register the view + } + + // Send OnPhotonInstantiate callback to newly created GO. + // GO will be enabled when instantiated from Prefab and it does not matter if the script is enabled or disabled. + go.SendMessage(OnPhotonInstantiateString, new PhotonMessageInfo(photonPlayer, serverTime, null), SendMessageOptions.DontRequireReceiver); + return go; + } + else + { + // load prefab, if it wasn't loaded before (calling methods might do this) + if (resourceGameObject == null) + { + if (!NetworkingPeer.UsePrefabCache || !NetworkingPeer.PrefabCache.TryGetValue(prefabName, out resourceGameObject)) + { + resourceGameObject = (GameObject)Resources.Load(prefabName, typeof (GameObject)); + if (NetworkingPeer.UsePrefabCache) + { + NetworkingPeer.PrefabCache.Add(prefabName, resourceGameObject); + } + } + + if (resourceGameObject == null) + { + Debug.LogError("PhotonNetwork error: Could not Instantiate the prefab [" + prefabName + "]. Please verify you have this gameobject in a Resources folder."); + return null; + } + } + + // now modify the loaded "blueprint" object before it becomes a part of the scene (by instantiating it) + PhotonView[] resourcePVs = resourceGameObject.GetPhotonViewsInChildren(); + if (resourcePVs.Length != viewsIDs.Length) + { + throw new Exception("Error in Instantiation! The resource's PhotonView count is not the same as in incoming data."); + } + + for (int i = 0; i < viewsIDs.Length; i++) + { + // NOTE instantiating the loaded resource will keep the viewID but would not copy instantiation data, so it's set below + // so we only set the viewID and instantiationId now. the instantiationData can be fetched + resourcePVs[i].viewID = viewsIDs[i]; + resourcePVs[i].prefix = objLevelPrefix; + resourcePVs[i].instantiationId = instantiationId; + resourcePVs[i].isRuntimeInstantiated = true; + } + + this.StoreInstantiationData(instantiationId, incomingInstantiationData); + + // load the resource and set it's values before instantiating it: + GameObject go = (GameObject)GameObject.Instantiate(resourceGameObject, position, rotation); + + for (int i = 0; i < viewsIDs.Length; i++) + { + // NOTE instantiating the loaded resource will keep the viewID but would not copy instantiation data, so it's set below + // so we only set the viewID and instantiationId now. the instantiationData can be fetched + resourcePVs[i].viewID = 0; + resourcePVs[i].prefix = -1; + resourcePVs[i].prefixBackup = -1; + resourcePVs[i].instantiationId = -1; + resourcePVs[i].isRuntimeInstantiated = false; + } + + this.RemoveInstantiationData(instantiationId); + + // Send OnPhotonInstantiate callback to newly created GO. + // GO will be enabled when instantiated from Prefab and it does not matter if the script is enabled or disabled. + go.SendMessage(OnPhotonInstantiateString, new PhotonMessageInfo(photonPlayer, serverTime, null), SendMessageOptions.DontRequireReceiver); + return go; + } + } + + private Dictionary tempInstantiationData = new Dictionary(); + + private void StoreInstantiationData(int instantiationId, object[] instantiationData) + { + // Debug.Log("StoreInstantiationData() instantiationId: " + instantiationId + " tempInstantiationData.Count: " + tempInstantiationData.Count); + tempInstantiationData[instantiationId] = instantiationData; + } + + public object[] FetchInstantiationData(int instantiationId) + { + object[] data = null; + if (instantiationId == 0) + { + return null; + } + + tempInstantiationData.TryGetValue(instantiationId, out data); + // Debug.Log("FetchInstantiationData() instantiationId: " + instantiationId + " tempInstantiationData.Count: " + tempInstantiationData.Count); + return data; + } + + private void RemoveInstantiationData(int instantiationId) + { + tempInstantiationData.Remove(instantiationId); + } + + + /// + /// Destroys all Instantiates and RPCs locally and (if not localOnly) sends EvDestroy(player) and clears related events in the server buffer. + /// + public void DestroyPlayerObjects(int playerId, bool localOnly) + { + if (playerId <= 0) + { + Debug.LogError("Failed to Destroy objects of playerId: " + playerId); + return; + } + + if (!localOnly) + { + // clean server's Instantiate and RPC buffers + this.OpRemoveFromServerInstantiationsOfPlayer(playerId); + this.OpCleanRpcBuffer(playerId); + + // send Destroy(player) to anyone else + this.SendDestroyOfPlayer(playerId); + } + + // locally cleaning up that player's objects + HashSet playersGameObjects = new HashSet(); + foreach (PhotonView view in this.photonViewList.Values) + { + if (view!=null && view.CreatorActorNr == playerId) + { + playersGameObjects.Add(view.gameObject); + } + } + + // any non-local work is already done, so with the list of that player's objects, we can clean up (locally only) + foreach (GameObject gameObject in playersGameObjects) + { + this.RemoveInstantiatedGO(gameObject, true); + } + + // with ownership transfer, some objects might lose their owner. + // in that case, the creator becomes the owner again. every client can apply this. done below. + foreach (PhotonView view in this.photonViewList.Values) + { + if (view.ownerId == playerId) + { + view.ownerId = view.CreatorActorNr; + //Debug.Log("Creator is: " + view.ownerId); + } + } + } + + public void DestroyAll(bool localOnly) + { + if (!localOnly) + { + this.OpRemoveCompleteCache(); + this.SendDestroyOfAll(); + } + + this.LocalCleanupAnythingInstantiated(true); + } + + /// Removes GameObject and the PhotonViews on it from local lists and optionally updates remotes. GameObject gets destroyed at end. + /// + /// This method might fail and quit early due to several tests. + /// + /// GameObject to cleanup. + /// For localOnly, tests of control are skipped and the server is not updated. + protected internal void RemoveInstantiatedGO(GameObject go, bool localOnly) + { + if (go == null) + { + Debug.LogError("Failed to 'network-remove' GameObject because it's null."); + return; + } + + // Don't remove the GO if it doesn't have any PhotonView + PhotonView[] views = go.GetComponentsInChildren(true); + if (views == null || views.Length <= 0) + { + Debug.LogError("Failed to 'network-remove' GameObject because has no PhotonView components: " + go); + return; + } + + PhotonView viewZero = views[0]; + int creatorId = viewZero.CreatorActorNr; // creatorId of obj is needed to delete EvInstantiate (only if it's from that user) + int instantiationId = viewZero.instantiationId; // actual, live InstantiationIds start with 1 and go up + + // Don't remove GOs that are owned by others (unless this is the master and the remote player left) + if (!localOnly) + { + if (!viewZero.isMine) + { + Debug.LogError("Failed to 'network-remove' GameObject. Client is neither owner nor masterClient taking over for owner who left: " + viewZero); + return; + } + + // Don't remove the Instantiation from the server, if it doesn't have a proper ID + if (instantiationId < 1) + { + Debug.LogError("Failed to 'network-remove' GameObject because it is missing a valid InstantiationId on view: " + viewZero + ". Not Destroying GameObject or PhotonViews!"); + return; + } + } + + + // cleanup instantiation (event and local list) + if (!localOnly) + { + this.ServerCleanInstantiateAndDestroy(instantiationId, creatorId, viewZero.isRuntimeInstantiated); // server cleaning + } + + + // cleanup PhotonViews and their RPCs events (if not localOnly) + for (int j = views.Length - 1; j >= 0; j--) + { + PhotonView view = views[j]; + if (view == null) + { + continue; + } + + // we only destroy/clean PhotonViews that were created by PhotonNetwork.Instantiate (and those have an instantiationId!) + if (view.instantiationId >= 1) + { + this.LocalCleanPhotonView(view); + } + if (!localOnly) + { + this.OpCleanRpcBuffer(view); + } + } + + if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) + { + Debug.Log("Network destroy Instantiated GO: " + go.name); + } + + + if (this.ObjectPool != null) + { + PhotonView[] photonViews = go.GetPhotonViewsInChildren(); + for (int i = 0; i < photonViews.Length; i++) + { + photonViews[i].viewID = 0; // marks the PV as not being in use currently. + } + this.ObjectPool.Destroy(go); + } + else + { + GameObject.Destroy(go); + } + } + + /// + /// Removes an instantiation event from the server's cache. Needs id and actorNr of player who instantiated. + /// + private void ServerCleanInstantiateAndDestroy(int instantiateId, int creatorId, bool isRuntimeInstantiated) + { + Hashtable removeFilter = new Hashtable(); + removeFilter[(byte)7] = instantiateId; + + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache, TargetActors = new int[] { creatorId } }; + this.OpRaiseEvent(PunEvent.Instantiation, removeFilter, true, options); + //this.OpRaiseEvent(PunEvent.Instantiation, removeFilter, true, 0, new int[] { actorNr }, EventCaching.RemoveFromRoomCache); + + Hashtable evData = new Hashtable(); + evData[(byte)0] = instantiateId; + options = null; + if (!isRuntimeInstantiated) + { + // if the view got loaded with the scene, the EvDestroy must be cached (there is no Instantiate-msg which we can remove) + // reason: joining players will load the obj and have to destroy it (too) + options = new RaiseEventOptions(); + options.CachingOption = EventCaching.AddToRoomCacheGlobal; + Debug.Log("Destroying GO as global. ID: " + instantiateId); + } + this.OpRaiseEvent(PunEvent.Destroy, evData, true, options); + } + + private void SendDestroyOfPlayer(int actorNr) + { + Hashtable evData = new Hashtable(); + evData[(byte)0] = actorNr; + + this.OpRaiseEvent(PunEvent.DestroyPlayer, evData, true, null); + //this.OpRaiseEvent(PunEvent.DestroyPlayer, evData, true, 0, EventCaching.DoNotCache, ReceiverGroup.Others); + } + + private void SendDestroyOfAll() + { + Hashtable evData = new Hashtable(); + evData[(byte)0] = -1; + + + this.OpRaiseEvent(PunEvent.DestroyPlayer, evData, true, null); + //this.OpRaiseEvent(PunEvent.DestroyPlayer, evData, true, 0, EventCaching.DoNotCache, ReceiverGroup.Others); + } + + private void OpRemoveFromServerInstantiationsOfPlayer(int actorNr) + { + // removes all "Instantiation" events of player actorNr. this is not an event for anyone else + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache, TargetActors = new int[] { actorNr } }; + this.OpRaiseEvent(PunEvent.Instantiation, null, true, options); + //this.OpRaiseEvent(PunEvent.Instantiation, null, true, 0, new int[] { actorNr }, EventCaching.RemoveFromRoomCache); + } + + internal protected void RequestOwnership(int viewID, int fromOwner) + { + Debug.Log("RequestOwnership(): " + viewID + " from: " + fromOwner + " Time: " + Environment.TickCount % 1000); + //PhotonNetwork.networkingPeer.OpRaiseEvent(PunEvent.OwnershipRequest, true, new int[] { viewID, fromOwner }, 0, EventCaching.DoNotCache, null, ReceiverGroup.All, 0); + this.OpRaiseEvent(PunEvent.OwnershipRequest, new int[] {viewID, fromOwner}, true, new RaiseEventOptions() { Receivers = ReceiverGroup.All }); // All sends to all via server (including self) + } + + internal protected void TransferOwnership(int viewID, int playerID) + { + Debug.Log("TransferOwnership() view " + viewID + " to: " + playerID + " Time: " + Environment.TickCount % 1000); + //PhotonNetwork.networkingPeer.OpRaiseEvent(PunEvent.OwnershipTransfer, true, new int[] {viewID, playerID}, 0, EventCaching.DoNotCache, null, ReceiverGroup.All, 0); + this.OpRaiseEvent(PunEvent.OwnershipTransfer, new int[] { viewID, playerID }, true, new RaiseEventOptions() { Receivers = ReceiverGroup.All }); // All sends to all via server (including self) + } + + public bool LocalCleanPhotonView(PhotonView view) + { + view.removedFromLocalViewList = true; + return this.photonViewList.Remove(view.viewID); + } + + public PhotonView GetPhotonView(int viewID) + { + PhotonView result = null; + this.photonViewList.TryGetValue(viewID, out result); + + if (result == null) + { + PhotonView[] views = GameObject.FindObjectsOfType(typeof(PhotonView)) as PhotonView[]; + + for (int i = 0; i < views.Length; i++) + { + PhotonView view = views[i]; + if (view.viewID == viewID) + { + if (view.didAwake) + { + Debug.LogWarning("Had to lookup view that wasn't in photonViewList: " + view); + } + return view; + } + } + } + + return result; + } + + public void RegisterPhotonView(PhotonView netView) + { + if (!Application.isPlaying) + { + this.photonViewList = new Dictionary(); + return; + } + + if (netView.viewID == 0) + { + // don't register views with ID 0 (not initialized). they register when a ID is assigned later on + Debug.Log("PhotonView register is ignored, because viewID is 0. No id assigned yet to: " + netView); + return; + } + + PhotonView listedView = null; + bool isViewListed = this.photonViewList.TryGetValue(netView.viewID, out listedView); + if (isViewListed) + { + // if some other view is in the list already, we got a problem. it might be undestructible. print out error + if (netView != listedView) + { + Debug.LogError(string.Format("PhotonView ID duplicate found: {0}. New: {1} old: {2}. Maybe one wasn't destroyed on scene load?! Check for 'DontDestroyOnLoad'. Destroying old entry, adding new.", netView.viewID, netView, listedView)); + } + else + { + return; + } + + this.RemoveInstantiatedGO(listedView.gameObject, true); + } + + // Debug.Log("adding view to known list: " + netView); + this.photonViewList.Add(netView.viewID, netView); + //Debug.LogError("view being added. " + netView); // Exit Games internal log + + if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) + { + Debug.Log("Registered PhotonView: " + netView.viewID); + } + } + + ///// + ///// Will remove the view from list of views (by its ID). + ///// + //public void RemovePhotonView(PhotonView netView) + //{ + // if (!Application.isPlaying) + // { + // this.photonViewList = new Dictionary(); + // return; + // } + + // //PhotonView removedView = null; + // //this.photonViewList.TryGetValue(netView.viewID, out removedView); + // //if (removedView != netView) + // //{ + // // Debug.LogError("Detected two differing PhotonViews with same viewID: " + netView.viewID); + // //} + + // this.photonViewList.Remove(netView.viewID); + + // //if (this.DebugOut >= DebugLevel.ALL) + // //{ + // // this.DebugReturn(DebugLevel.ALL, "Removed PhotonView: " + netView.viewID); + // //} + //} + + /// + /// Removes the RPCs of someone else (to be used as master). + /// This won't clean any local caches. It just tells the server to forget a player's RPCs and instantiates. + /// + /// + public void OpCleanRpcBuffer(int actorNumber) + { + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache, TargetActors = new int[] { actorNumber } }; + this.OpRaiseEvent(PunEvent.RPC, null, true, options); + //this.OpRaiseEvent(PunEvent.RPC, null, true, 0, new int[] { actorNumber }, EventCaching.RemoveFromRoomCache); + } + + /// + /// Instead removing RPCs or Instantiates, this removed everything cached by the actor. + /// + /// + public void OpRemoveCompleteCacheOfPlayer(int actorNumber) + { + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache, TargetActors = new int[] { actorNumber } }; + this.OpRaiseEvent(0, null, true, options); + //this.OpRaiseEvent(0, null, true, 0, new int[] { actorNumber }, EventCaching.RemoveFromRoomCache); + } + + + public void OpRemoveCompleteCache() + { + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache, Receivers = ReceiverGroup.MasterClient }; + this.OpRaiseEvent(0, null, true, options); + //this.OpRaiseEvent(0, null, true, 0, EventCaching.RemoveFromRoomCache, ReceiverGroup.MasterClient); // TODO: check who gets this event? + } + + /// This clears the cache of any player/actor who's no longer in the room (making it a simple clean-up option for a new master) + private void RemoveCacheOfLeftPlayers() + { + Dictionary opParameters = new Dictionary(); + opParameters[ParameterCode.Code] = (byte)0; // any event + opParameters[ParameterCode.Cache] = (byte)EventCaching.RemoveFromRoomCacheForActorsLeft; // option to clear the room cache of all events of players who left + + this.OpCustom((byte)OperationCode.RaiseEvent, opParameters, true, 0); + } + + // Remove RPCs of view (if they are local player's RPCs) + public void CleanRpcBufferIfMine(PhotonView view) + { + if (view.ownerId != this.LocalPlayer.ID && !LocalPlayer.IsMasterClient) + { + Debug.LogError("Cannot remove cached RPCs on a PhotonView thats not ours! " + view.owner + " scene: " + view.isSceneView); + return; + } + + this.OpCleanRpcBuffer(view); + } + + /// Cleans server RPCs for PhotonView (without any further checks). + public void OpCleanRpcBuffer(PhotonView view) + { + Hashtable rpcFilterByViewId = new Hashtable(); + rpcFilterByViewId[(byte)0] = view.viewID; + + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache }; + this.OpRaiseEvent(PunEvent.RPC, rpcFilterByViewId, true, options); + //this.OpRaiseEvent(PunEvent.RPC, rpcFilterByViewId, true, 0, EventCaching.RemoveFromRoomCache, ReceiverGroup.Others); + } + + public void RemoveRPCsInGroup(int group) + { + foreach (PhotonView view in this.photonViewList.Values) + { + if (view.group == group) + { + this.CleanRpcBufferIfMine(view); + } + } + } + + public void SetLevelPrefix(short prefix) + { + this.currentLevelPrefix = prefix; + // TODO: should we really change the prefix for existing PVs?! better keep it! + //foreach (PhotonView view in this.photonViewList.Values) + //{ + // view.prefix = prefix; + //} + } + + + /// RPC Hashtable Structure + /// (byte)0 -> (int) ViewId (combined from actorNr and actor-unique-id) + /// (byte)1 -> (short) prefix (level) + /// (byte)2 -> (int) server timestamp + /// (byte)3 -> (string) methodname + /// (byte)4 -> (object[]) parameters + /// (byte)5 -> (byte) method shortcut (alternative to name) + /// + /// This is sent as event (code: 200) which will contain a sender (origin of this RPC). + + internal void RPC(PhotonView view, string methodName, PhotonTargets target, PhotonPlayer player, bool encrypt, params object[] parameters) + { + if (this.blockSendingGroups.Contains(view.group)) + { + return; // Block sending on this group + } + + if (view.viewID < 1) + { + Debug.LogError("Illegal view ID:" + view.viewID + " method: " + methodName + " GO:" + view.gameObject.name); + } + + if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) + { + Debug.Log("Sending RPC \"" + methodName + "\" to target: " + target + " or player:" + player + "."); + } + + + //ts: changed RPCs to a one-level hashtable as described in internal.txt + Hashtable rpcEvent = new Hashtable(); + rpcEvent[(byte)0] = (int)view.viewID; // LIMITS NETWORKVIEWS&PLAYERS + if (view.prefix > 0) + { + rpcEvent[(byte)1] = (short)view.prefix; + } + rpcEvent[(byte)2] = PhotonNetwork.ServerTimestamp; + + + // send name or shortcut (if available) + int shortcut = 0; + if (rpcShortcuts.TryGetValue(methodName, out shortcut)) + { + rpcEvent[(byte)5] = (byte)shortcut; // LIMITS RPC COUNT + } + else + { + rpcEvent[(byte)3] = methodName; + } + + if (parameters != null && parameters.Length > 0) + { + rpcEvent[(byte)4] = (object[])parameters; + } + + + // if sent to target player, this overrides the target + if (player != null) + { + if (this.LocalPlayer.ID == player.ID) + { + this.ExecuteRpc(rpcEvent, player); + } + else + { + RaiseEventOptions options = new RaiseEventOptions() { TargetActors = new int[] { player.ID }, Encrypt = encrypt }; + this.OpRaiseEvent(PunEvent.RPC, rpcEvent, true, options); + } + + return; + } + + // send to a specific set of players + if (target == PhotonTargets.All) + { + RaiseEventOptions options = new RaiseEventOptions() { InterestGroup = (byte)view.group, Encrypt = encrypt }; + this.OpRaiseEvent(PunEvent.RPC, rpcEvent, true, options); + + // Execute local + this.ExecuteRpc(rpcEvent, this.LocalPlayer); + } + else if (target == PhotonTargets.Others) + { + RaiseEventOptions options = new RaiseEventOptions() { InterestGroup = (byte)view.group, Encrypt = encrypt }; + this.OpRaiseEvent(PunEvent.RPC, rpcEvent, true, options); + } + else if (target == PhotonTargets.AllBuffered) + { + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.AddToRoomCache, Encrypt = encrypt }; + this.OpRaiseEvent(PunEvent.RPC, rpcEvent, true, options); + + // Execute local + this.ExecuteRpc(rpcEvent, this.LocalPlayer); + } + else if (target == PhotonTargets.OthersBuffered) + { + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.AddToRoomCache, Encrypt = encrypt }; + this.OpRaiseEvent(PunEvent.RPC, rpcEvent, true, options); + } + else if (target == PhotonTargets.MasterClient) + { + if (this.mMasterClientId == this.LocalPlayer.ID) + { + this.ExecuteRpc(rpcEvent, this.LocalPlayer); + } + else + { + RaiseEventOptions options = new RaiseEventOptions() { Receivers = ReceiverGroup.MasterClient, Encrypt = encrypt }; + this.OpRaiseEvent(PunEvent.RPC, rpcEvent, true, options); + } + } + else if (target == PhotonTargets.AllViaServer) + { + RaiseEventOptions options = new RaiseEventOptions() { InterestGroup = (byte)view.group, Receivers = ReceiverGroup.All, Encrypt = encrypt }; + this.OpRaiseEvent(PunEvent.RPC, rpcEvent, true, options); + if (PhotonNetwork.offlineMode) + { + this.ExecuteRpc(rpcEvent, this.LocalPlayer); + } + } + else if (target == PhotonTargets.AllBufferedViaServer) + { + RaiseEventOptions options = new RaiseEventOptions() { InterestGroup = (byte)view.group, Receivers = ReceiverGroup.All, CachingOption = EventCaching.AddToRoomCache, Encrypt = encrypt }; + this.OpRaiseEvent(PunEvent.RPC, rpcEvent, true, options); + if (PhotonNetwork.offlineMode) + { + this.ExecuteRpc(rpcEvent, this.LocalPlayer); + } + } + else + { + Debug.LogError("Unsupported target enum: " + target); + } + } + + // SetReceiving + public void SetReceivingEnabled(int group, bool enabled) + { + if (group <= 0) + { + Debug.LogError("Error: PhotonNetwork.SetReceivingEnabled was called with an illegal group number: " + group + ". The group number should be at least 1."); + return; + } + + if (enabled) + { + if (!this.allowedReceivingGroups.Contains(group)) + { + this.allowedReceivingGroups.Add(group); + byte[] groups = new byte[1] { (byte)group }; + this.OpChangeGroups(null, groups); + } + } + else + { + if (this.allowedReceivingGroups.Contains(group)) + { + this.allowedReceivingGroups.Remove(group); + byte[] groups = new byte[1] { (byte)group }; + this.OpChangeGroups(groups, null); + } + } + } + + + public void SetReceivingEnabled(int[] enableGroups, int[] disableGroups) + { + List enableList = new List(); + List disableList = new List(); + + if (enableGroups != null) + { + for (int index = 0; index < enableGroups.Length; index++) + { + int i = enableGroups[index]; + if (i <= 0) + { + Debug.LogError("Error: PhotonNetwork.SetReceivingEnabled was called with an illegal group number: " + i + ". The group number should be at least 1."); + continue; + } + if (!this.allowedReceivingGroups.Contains(i)) + { + this.allowedReceivingGroups.Add(i); + enableList.Add((byte)i); + } + } + } + if (disableGroups != null) + { + for (int index = 0; index < disableGroups.Length; index++) + { + int i = disableGroups[index]; + if (i <= 0) + { + Debug.LogError("Error: PhotonNetwork.SetReceivingEnabled was called with an illegal group number: " + i + ". The group number should be at least 1."); + continue; + } + if (enableList.Contains((byte)i)) + { + Debug.LogError("Error: PhotonNetwork.SetReceivingEnabled disableGroups contains a group that is also in the enableGroups: " + i + "."); + continue; + } + if (this.allowedReceivingGroups.Contains(i)) + { + this.allowedReceivingGroups.Remove(i); + disableList.Add((byte)i); + } + } + } + + this.OpChangeGroups(disableList.Count > 0 ? disableList.ToArray() : null, enableList.Count > 0 ? enableList.ToArray() : null); //Passing a 0 sized array != passing null + } + + // SetSending + public void SetSendingEnabled(int group, bool enabled) + { + if (!enabled) + { + this.blockSendingGroups.Add(group); // can be added to HashSet no matter if already in it + } + else + { + this.blockSendingGroups.Remove(group); + } + } + + + public void SetSendingEnabled(int[] enableGroups, int[] disableGroups) + { + if(enableGroups!=null){ + foreach(int i in enableGroups){ + if(this.blockSendingGroups.Contains(i)) + this.blockSendingGroups.Remove(i); + } + } + if(disableGroups!=null){ + foreach(int i in disableGroups){ + if(!this.blockSendingGroups.Contains(i)) + this.blockSendingGroups.Add(i); + } + } + } + + + public void NewSceneLoaded() + { + if (this.loadingLevelAndPausedNetwork) + { + this.loadingLevelAndPausedNetwork = false; + PhotonNetwork.isMessageQueueRunning = true; + } + // Debug.Log("OnLevelWasLoaded photonViewList.Count: " + photonViewList.Count); // Exit Games internal log + + List removeKeys = new List(); + foreach (KeyValuePair kvp in this.photonViewList) + { + PhotonView view = kvp.Value; + if (view == null) + { + removeKeys.Add(kvp.Key); + } + } + + for (int index = 0; index < removeKeys.Count; index++) + { + int key = removeKeys[index]; + this.photonViewList.Remove(key); + } + + if (removeKeys.Count > 0) + { + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + Debug.Log("New level loaded. Removed " + removeKeys.Count + " scene view IDs from last level."); + } + } + + /// + /// Defines how many OnPhotonSerialize()-calls might get summarized in one message. + /// + /// + /// A low number increases overhead, a high number might mean fragmentation. + /// + public static int ObjectsInOneUpdate = 10; + + // this is called by Update() and in Unity that means it's single threaded. + public void RunViewUpdate() + { + if (!PhotonNetwork.connected || PhotonNetwork.offlineMode || this.mActors == null) + { + return; + } + + // no need to send OnSerialize messages while being alone (these are not buffered anyway) + if (this.mActors.Count <= 1) + { + #if !PHOTON_DEVELOP + return; + #endif + } + + + /* Format of the data hashtable: + * Hasthable dataPergroup* + * [(byte)0] = PhotonNetwork.ServerTimestamp; + * [(byte)1] = currentLevelPrefix; OPTIONAL! + * + * [(byte)10] = data 1 + * [(byte)11] = data 2 ... + * + * We only combine updates for XY objects into one RaiseEvent to avoid fragmentation + */ + + int countOfUpdatesToSend = 0; + + + // we got updates to send. every group is send it's own message and unreliable and reliable are split as well + RaiseEventOptions options = new RaiseEventOptions(); + #if PHOTON_DEVELOP + options.Receivers = ReceiverGroup.All; + #endif + + + foreach (PhotonView view in this.photonViewList.Values) + { + // a client only sends updates for active, synchronized PhotonViews that are under it's control (isMine) + if (view.synchronization == ViewSynchronization.Off || view.isMine == false || view.gameObject.activeInHierarchy == false) + { + continue; + } + + if (this.blockSendingGroups.Contains(view.group)) + { + continue; // Block sending on this group + } + + + // call the PhotonView's serialize method(s) + object[] evData = this.OnSerializeWrite(view); + if (evData == null) + { + continue; + } + + if (view.synchronization == ViewSynchronization.ReliableDeltaCompressed || view.mixedModeIsReliable) + { + Hashtable groupHashtable = null; + bool found = this.dataPerGroupReliable.TryGetValue(view.group, out groupHashtable); + if (!found) + { + groupHashtable = new Hashtable(NetworkingPeer.ObjectsInOneUpdate); + this.dataPerGroupReliable[view.group] = groupHashtable; + } + + groupHashtable.Add((byte)(groupHashtable.Count+10), evData); + countOfUpdatesToSend++; + + // if any group has XY elements, we should send it right away (to avoid bigger messages which need fragmentation and reliable transfer). + if (groupHashtable.Count >= NetworkingPeer.ObjectsInOneUpdate) + { + countOfUpdatesToSend -= groupHashtable.Count; + + options.InterestGroup = (byte)view.group; + groupHashtable[(byte)0] = PhotonNetwork.ServerTimestamp; + if (this.currentLevelPrefix >= 0) + { + groupHashtable[(byte)1] = this.currentLevelPrefix; + } + + this.OpRaiseEvent(PunEvent.SendSerializeReliable, groupHashtable, true, options); + //Debug.Log("SendSerializeReliable (10) " + PhotonNetwork.networkingPeer.ByteCountLastOperation); + groupHashtable.Clear(); + } + } + else + { + Hashtable groupHashtable = null; + bool found = this.dataPerGroupUnreliable.TryGetValue(view.group, out groupHashtable); + if (!found) + { + groupHashtable = new Hashtable(NetworkingPeer.ObjectsInOneUpdate); + this.dataPerGroupUnreliable[view.group] = groupHashtable; + } + + groupHashtable.Add((byte)(groupHashtable.Count+10), evData); + countOfUpdatesToSend++; + + // if any group has XY elements, we should send it right away (to avoid bigger messages which need fragmentation and reliable transfer). + if (groupHashtable.Count >= NetworkingPeer.ObjectsInOneUpdate) + { + countOfUpdatesToSend -= groupHashtable.Count; + + options.InterestGroup = (byte)view.group; + groupHashtable[(byte)0] = PhotonNetwork.ServerTimestamp; + if (this.currentLevelPrefix >= 0) + { + groupHashtable[(byte)1] = this.currentLevelPrefix; + } + + this.OpRaiseEvent(PunEvent.SendSerialize, groupHashtable, false, options); + groupHashtable.Clear(); + //Debug.Log("SendSerializeUnreliable (10) " + PhotonNetwork.networkingPeer.ByteCountLastOperation); + } + } + } // all views serialized + + + // if we didn't produce anything to send, don't do it + if (countOfUpdatesToSend == 0) + { + return; + } + + + foreach (int groupId in this.dataPerGroupReliable.Keys) + { + options.InterestGroup = (byte)groupId; + Hashtable groupHashtable = this.dataPerGroupReliable[groupId]; + if (groupHashtable.Count == 0) + { + continue; + } + + groupHashtable[(byte)0] = PhotonNetwork.ServerTimestamp; + if (this.currentLevelPrefix >= 0) + { + groupHashtable[(byte)1] = this.currentLevelPrefix; + } + + this.OpRaiseEvent(PunEvent.SendSerializeReliable, groupHashtable, true, options); + groupHashtable.Clear(); + } + foreach (int groupId in this.dataPerGroupUnreliable.Keys) + { + options.InterestGroup = (byte)groupId; + Hashtable groupHashtable = this.dataPerGroupUnreliable[groupId]; + if (groupHashtable.Count == 0) + { + continue; + } + + groupHashtable[(byte)0] = PhotonNetwork.ServerTimestamp; + if (this.currentLevelPrefix >= 0) + { + groupHashtable[(byte)1] = this.currentLevelPrefix; + } + + this.OpRaiseEvent(PunEvent.SendSerialize, groupHashtable, false, options); + groupHashtable.Clear(); + } + } + + + // calls OnPhotonSerializeView (through ExecuteOnSerialize) + // the content created here is consumed by receivers in: ReadOnSerialize + private object[] OnSerializeWrite(PhotonView view) + { + if (view.synchronization == ViewSynchronization.Off) + { + return null; + } + + + // each view creates a list of values that should be sent + PhotonMessageInfo info = new PhotonMessageInfo(this.LocalPlayer, PhotonNetwork.ServerTimestamp, view); + this.pStream.ResetWriteStream(); + this.pStream.SendNext((int)view.viewID); + this.pStream.SendNext(false); + this.pStream.SendNext(null); + view.SerializeView(this.pStream, info); + + + // check if there are actual values to be sent (after the "header" of viewId, (bool)compressed and (int[])nullValues) + if (this.pStream.Count <= SyncFirstValue) + { + return null; + } + if (view.synchronization == ViewSynchronization.Unreliable) + { + return this.pStream.ToArray(); + } + + + // ViewSynchronization: Off, Unreliable, UnreliableOnChange, ReliableDeltaCompressed + + + object[] currentValues = this.pStream.ToArray(); + if (view.synchronization == ViewSynchronization.UnreliableOnChange) + { + if (AlmostEquals(currentValues, view.lastOnSerializeDataSent)) + { + if (view.mixedModeIsReliable) + { + return null; + } + + view.mixedModeIsReliable = true; + view.lastOnSerializeDataSent = currentValues; + } + else + { + view.mixedModeIsReliable = false; + view.lastOnSerializeDataSent = currentValues; + } + + return currentValues; + } + + if (view.synchronization == ViewSynchronization.ReliableDeltaCompressed) + { + // compress content of data set (by comparing to view.lastOnSerializeDataSent) + // the "original" dataArray is NOT modified by DeltaCompressionWrite + object[] dataToSend = this.DeltaCompressionWrite(view.lastOnSerializeDataSent, currentValues); + + // cache the values that were written this time (not the compressed values) + view.lastOnSerializeDataSent = currentValues; + + return dataToSend; + } + + return null; + } + + /// + /// Reads updates created by OnSerializeWrite + /// + private void OnSerializeRead(object[] data, PhotonPlayer sender, int networkTime, short correctPrefix) + { + // read view ID from key (byte)0: a int-array (PUN 1.17++) + int viewID = (int)data[SyncViewId]; + + + // debug: + //LogObjectArray(data); + + PhotonView view = this.GetPhotonView(viewID); + if (view == null) + { + Debug.LogWarning("Received OnSerialization for view ID " + viewID + ". We have no such PhotonView! Ignored this if you're leaving a room. State: " + this.State); + return; + } + + if (view.prefix > 0 && correctPrefix != view.prefix) + { + Debug.LogError("Received OnSerialization for view ID " + viewID + " with prefix " + correctPrefix + ". Our prefix is " + view.prefix); + return; + } + + // SetReceiving filtering + if (view.group != 0 && !this.allowedReceivingGroups.Contains(view.group)) + { + return; // Ignore group + } + + + + + if (view.synchronization == ViewSynchronization.ReliableDeltaCompressed) + { + object[] uncompressed = this.DeltaCompressionRead(view.lastOnSerializeDataReceived, data); + //LogObjectArray(uncompressed,"uncompressed "); + if (uncompressed == null) + { + // Skip this packet as we haven't got received complete-copy of this view yet. + if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + Debug.Log("Skipping packet for " + view.name + " [" + view.viewID + "] as we haven't received a full packet for delta compression yet. This is OK if it happens for the first few frames after joining a game."); + } + return; + } + + // store last received values (uncompressed) for delta-compression usage + view.lastOnSerializeDataReceived = uncompressed; + data = uncompressed; + } + + // This is when joining late to assign ownership to the sender + // this has nothing to do with reading the actual synchronization update. + // We don't do anything is OwnerShip Was Touched, which means we got the infos already. We only possibly act if ownership was never transfered. + // We do override OwnerShipWasTransfered if owner is the masterClient. + if (sender.ID != view.ownerId && (!view.OwnerShipWasTransfered || view.ownerId == 0) && view.currentMasterID == -1 ) + { + // obviously the owner changed and we didn't yet notice. + //Debug.Log("Adjusting owner to sender of updates. From: " + view.ownerId + " to: " + sender.ID); + view.ownerId = sender.ID; + } + + this.readStream.SetReadStream(data, 3); + PhotonMessageInfo info = new PhotonMessageInfo(sender, networkTime, view); + + view.DeserializeView(this.readStream, info); + } + + + // compresses currentContent by using NULL as value if currentContent equals previousContent + // skips initial indexes, as defined by SyncFirstValue + // to conserve memory, the previousContent is re-used as buffer for the result! duplicate the values before using this, if needed + // returns null, if nothing must be sent (current content might be null, which also returns null) + // SyncFirstValue should be the index of the first actual data-value (3 in PUN's case, as 0=viewId, 1=(bool)compressed, 2=(int[])values that are now null) + public const int SyncViewId = 0; + public const int SyncCompressed = 1; + public const int SyncNullValues = 2; + public const int SyncFirstValue = 3; + + private object[] DeltaCompressionWrite(object[] previousContent, object[] currentContent) + { + if (currentContent == null || previousContent == null || previousContent.Length != currentContent.Length) + { + return currentContent; // the current data needs to be sent (which might be null) + } + + if (currentContent.Length <= SyncFirstValue) + { + return null; // this send doesn't contain values (except the "headers"), so it's not being sent + } + + + object[] compressedContent = previousContent; // the previous content is no longer needed, once we compared the values! + compressedContent[SyncCompressed] = false; + int compressedValues = 0; + + Queue valuesThatAreChangedToNull = null; + for (int index = SyncFirstValue; index < currentContent.Length; index++) + { + object newObj = currentContent[index]; + object oldObj = previousContent[index]; + if (this.AlmostEquals(newObj, oldObj)) + { + // compress (by using null, instead of value, which is same as before) + compressedValues++; + compressedContent[index] = null; + } + else + { + compressedContent[index] = newObj; + + // value changed, we don't replace it with null + // new value is null (like a compressed value): we have to mark it so it STAYS null instead of being replaced with previous value + if (newObj == null) + { + if (valuesThatAreChangedToNull == null) + { + valuesThatAreChangedToNull = new Queue(currentContent.Length); + } + valuesThatAreChangedToNull.Enqueue(index); + } + } + } + + // Only send the list of compressed fields if we actually compressed 1 or more fields. + if (compressedValues > 0) + { + if (compressedValues == currentContent.Length - SyncFirstValue) + { + // all values are compressed to null, we have nothing to send + return null; + } + + compressedContent[SyncCompressed] = true; + if (valuesThatAreChangedToNull != null) + { + compressedContent[SyncNullValues] = valuesThatAreChangedToNull.ToArray(); // data that is actually null (not just cause we didn't want to send it) + } + } + + compressedContent[SyncViewId] = currentContent[SyncViewId]; + return compressedContent; // some data was compressed but we need to send something + } + + private object[] DeltaCompressionRead(object[] lastOnSerializeDataReceived, object[] incomingData) + { + if ((bool)incomingData[SyncCompressed] == false) + { + // index 1 marks "compressed" as being true. + return incomingData; + } + + // Compression was applied (as data[1] == true) + // we need a previous "full" list of values to restore values that are null in this msg. else, ignore this + if (lastOnSerializeDataReceived == null) + { + return null; + } + + + int[] indexesThatAreChangedToNull = incomingData[(byte)2] as int[]; + for (int index = SyncFirstValue; index < incomingData.Length; index++) + { + if (indexesThatAreChangedToNull != null && indexesThatAreChangedToNull.Contains(index)) + { + continue; // if a value was set to null in this update, we don't need to fetch it from an earlier update + } + if (incomingData[index] == null) + { + // we replace null values in this received msg unless a index is in the "changed to null" list + object lastValue = lastOnSerializeDataReceived[index]; + incomingData[index] = lastValue; + } + } + + return incomingData; + } + + + // startIndex should be the index of the first actual data-value (3 in PUN's case, as 0=viewId, 1=(bool)compressed, 2=(int[])values that are now null) + // returns the incomingData with modified content. any object being null (means: value unchanged) gets replaced with a previously sent value. incomingData is being modified + + + private bool AlmostEquals(object[] lastData, object[] currentContent) + { + if (lastData == null && currentContent == null) + { + return true; + } + + if (lastData == null || currentContent == null || (lastData.Length != currentContent.Length)) + { + return false; + } + + for (int index = 0; index < currentContent.Length; index++) + { + object newObj = currentContent[index]; + object oldObj = lastData[index]; + if (!this.AlmostEquals(newObj, oldObj)) + { + return false; + } + } + + return true; + } + + /// + /// Returns true if both objects are almost identical. + /// Used to check whether two objects are similar enough to skip an update. + /// + bool AlmostEquals(object one, object two) + { + if (one == null || two == null) + { + return one == null && two == null; + } + + if (!one.Equals(two)) + { + // if A is not B, lets check if A is almost B + if (one is Vector3) + { + Vector3 a = (Vector3)one; + Vector3 b = (Vector3)two; + if (a.AlmostEquals(b, PhotonNetwork.precisionForVectorSynchronization)) + { + return true; + } + } + else if (one is Vector2) + { + Vector2 a = (Vector2)one; + Vector2 b = (Vector2)two; + if (a.AlmostEquals(b, PhotonNetwork.precisionForVectorSynchronization)) + { + return true; + } + } + else if (one is Quaternion) + { + Quaternion a = (Quaternion)one; + Quaternion b = (Quaternion)two; + if (a.AlmostEquals(b, PhotonNetwork.precisionForQuaternionSynchronization)) + { + return true; + } + } + else if (one is float) + { + float a = (float)one; + float b = (float)two; + if (a.AlmostEquals(b, PhotonNetwork.precisionForFloatSynchronization)) + { + return true; + } + } + + // one does not equal two + return false; + } + + return true; + } + + internal protected static bool GetMethod(MonoBehaviour monob, string methodType, out MethodInfo mi) + { + mi = null; + + if (monob == null || string.IsNullOrEmpty(methodType)) + { + return false; + } + + List methods = SupportClassPun.GetMethods(monob.GetType(), null); + for (int index = 0; index < methods.Count; index++) + { + MethodInfo methodInfo = methods[index]; + if (methodInfo.Name.Equals(methodType)) + { + mi = methodInfo; + return true; + } + } + + return false; + } + + /// Internally used to detect the current scene and load it if PhotonNetwork.automaticallySyncScene is enabled. + internal protected void LoadLevelIfSynced() + { + if (!PhotonNetwork.automaticallySyncScene || PhotonNetwork.isMasterClient || PhotonNetwork.room == null) + { + return; + } + + // check if "current level" is set in props + if (!PhotonNetwork.room.CustomProperties.ContainsKey(NetworkingPeer.CurrentSceneProperty)) + { + return; + } + + // if loaded level is not the one defined my master in props, load that level + object sceneId = PhotonNetwork.room.CustomProperties[NetworkingPeer.CurrentSceneProperty]; + if (sceneId is int) + { + if (SceneManagerHelper.ActiveSceneBuildIndex != (int)sceneId) + PhotonNetwork.LoadLevel((int)sceneId); + } + else if (sceneId is string) + { + if (SceneManagerHelper.ActiveSceneName != (string)sceneId) + PhotonNetwork.LoadLevel((string)sceneId); + } + } + + protected internal void SetLevelInPropsIfSynced(object levelId) + { + if (!PhotonNetwork.automaticallySyncScene || !PhotonNetwork.isMasterClient || PhotonNetwork.room == null) + { + return; + } + if (levelId == null) + { + Debug.LogError("Parameter levelId can't be null!"); + return; + } + + // check if "current level" is already set in props + if (PhotonNetwork.room.CustomProperties.ContainsKey(NetworkingPeer.CurrentSceneProperty)) + { + object levelIdInProps = PhotonNetwork.room.CustomProperties[NetworkingPeer.CurrentSceneProperty]; + if (levelIdInProps is int && SceneManagerHelper.ActiveSceneBuildIndex == (int)levelIdInProps) + { + return; + } + if (levelIdInProps is string && SceneManagerHelper.ActiveSceneName != null && SceneManagerHelper.ActiveSceneName.Equals((string)levelIdInProps)) + { + return; + } + } + + // current level is not yet in props, so this client has to set it + Hashtable setScene = new Hashtable(); + if (levelId is int) setScene[NetworkingPeer.CurrentSceneProperty] = (int)levelId; + else if (levelId is string) setScene[NetworkingPeer.CurrentSceneProperty] = (string)levelId; + else Debug.LogError("Parameter levelId must be int or string!"); + + PhotonNetwork.room.SetCustomProperties(setScene); + this.SendOutgoingCommands(); // send immediately! because: in most cases the client will begin to load and not send for a while + } + + public void SetApp(string appId, string gameVersion) + { + this.AppId = appId.Trim(); + + if (!string.IsNullOrEmpty(gameVersion)) + { + PhotonNetwork.gameVersion = gameVersion.Trim(); + } + } + + + public bool WebRpc(string uriPath, object parameters) + { + Dictionary opParameters = new Dictionary(); + opParameters.Add(ParameterCode.UriPath, uriPath); + opParameters.Add(ParameterCode.WebRpcParameters, parameters); + + return this.OpCustom(OperationCode.WebRpc, opParameters, true); + + } +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/NetworkingPeer.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/NetworkingPeer.cs.meta new file mode 100644 index 0000000..266e935 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/NetworkingPeer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6389c32085f1ef04f88e046b96ab6fc6 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonClasses.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonClasses.cs new file mode 100644 index 0000000..f20d7d6 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonClasses.cs @@ -0,0 +1,1482 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2011 Exit Games GmbH +// +// +// +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +#pragma warning disable 1587 +/// \file +/// Wraps up smaller classes that don't need their own file. +/// +/// +/// \defgroup publicApi Public API +/// \brief Groups the most important classes that you need to understand early on. +/// +/// \defgroup optionalGui Optional Gui Elements +/// \brief Useful GUI elements for PUN. +#pragma warning restore 1587 + +#if UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 +#define UNITY_MIN_5_3 +#endif + +using System; +using System.Collections.Generic; +using ExitGames.Client.Photon; +using UnityEngine; + +using Hashtable = ExitGames.Client.Photon.Hashtable; +using SupportClassPun = ExitGames.Client.Photon.SupportClass; + + +/// Defines the OnPhotonSerializeView method to make it easy to implement correctly for observable scripts. +/// \ingroup publicApi +public interface IPunObservable +{ + /// + /// Called by PUN several times per second, so that your script can write and read synchronization data for the PhotonView. + /// + /// + /// This method will be called in scripts that are assigned as Observed component of a PhotonView.
+ /// PhotonNetwork.sendRateOnSerialize affects how often this method is called.
+ /// PhotonNetwork.sendRate affects how often packages are sent by this client.
+ /// + /// Implementing this method, you can customize which data a PhotonView regularly synchronizes. + /// Your code defines what is being sent (content) and how your data is used by receiving clients. + /// + /// Unlike other callbacks, OnPhotonSerializeView only gets called when it is assigned + /// to a PhotonView as PhotonView.observed script. + /// + /// To make use of this method, the PhotonStream is essential. It will be in "writing" mode" on the + /// client that controls a PhotonView (PhotonStream.isWriting == true) and in "reading mode" on the + /// remote clients that just receive that the controlling client sends. + /// + /// If you skip writing any value into the stream, PUN will skip the update. Used carefully, this can + /// conserve bandwidth and messages (which have a limit per room/second). + /// + /// Note that OnPhotonSerializeView is not called on remote clients when the sender does not send + /// any update. This can't be used as "x-times per second Update()". + ///
+ /// \ingroup publicApi + void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info); +} + +/// +/// This interface is used as definition of all callback methods of PUN, except OnPhotonSerializeView. Preferably, implement them individually. +/// +/// +/// This interface is available for completeness, more than for actually implementing it in a game. +/// You can implement each method individually in any MonoMehaviour, without implementing IPunCallbacks. +/// +/// PUN calls all callbacks by name. Don't use implement callbacks with fully qualified name. +/// Example: IPunCallbacks.OnConnectedToPhoton won't get called by Unity's SendMessage(). +/// +/// PUN will call these methods on any script that implements them, analog to Unity's events and callbacks. +/// The situation that triggers the call is described per method. +/// +/// OnPhotonSerializeView is NOT called like these callbacks! It's usage frequency is much higher and it is implemented in: IPunObservable. +/// +/// \ingroup publicApi +public interface IPunCallbacks +{ + /// + /// Called when the initial connection got established but before you can use the server. OnJoinedLobby() or OnConnectedToMaster() are called when PUN is ready. + /// + /// + /// This callback is only useful to detect if the server can be reached at all (technically). + /// Most often, it's enough to implement OnFailedToConnectToPhoton() and OnDisconnectedFromPhoton(). + /// + /// OnJoinedLobby() or OnConnectedToMaster() are called when PUN is ready. + /// + /// When this is called, the low level connection is established and PUN will send your AppId, the user, etc in the background. + /// This is not called for transitions from the masterserver to game servers. + /// + void OnConnectedToPhoton(); + + /// + /// Called when the local user/client left a room. + /// + /// + /// When leaving a room, PUN brings you back to the Master Server. + /// Before you can use lobbies and join or create rooms, OnJoinedLobby() or OnConnectedToMaster() will get called again. + /// + void OnLeftRoom(); + + /// + /// Called after switching to a new MasterClient when the current one leaves. + /// + /// + /// This is not called when this client enters a room. + /// The former MasterClient is still in the player list when this method get called. + /// + void OnMasterClientSwitched(PhotonPlayer newMasterClient); + + /// + /// Called when a CreateRoom() call failed. The parameter provides ErrorCode and message (as array). + /// + /// + /// Most likely because the room name is already in use (some other client was faster than you). + /// PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational. + /// + /// codeAndMsg[0] is short ErrorCode and codeAndMsg[1] is a string debug msg. + void OnPhotonCreateRoomFailed(object[] codeAndMsg); + + /// + /// Called when a JoinRoom() call failed. The parameter provides ErrorCode and message (as array). + /// + /// + /// Most likely error is that the room does not exist or the room is full (some other client was faster than you). + /// PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational. + /// + /// codeAndMsg[0] is short ErrorCode and codeAndMsg[1] is string debug msg. + void OnPhotonJoinRoomFailed(object[] codeAndMsg); + + /// + /// Called when this client created a room and entered it. OnJoinedRoom() will be called as well. + /// + /// + /// This callback is only called on the client which created a room (see PhotonNetwork.CreateRoom). + /// + /// As any client might close (or drop connection) anytime, there is a chance that the + /// creator of a room does not execute OnCreatedRoom. + /// + /// If you need specific room properties or a "start signal", it is safer to implement + /// OnMasterClientSwitched() and to make the new MasterClient check the room's state. + /// + void OnCreatedRoom(); + + /// + /// Called on entering a lobby on the Master Server. The actual room-list updates will call OnReceivedRoomListUpdate(). + /// + /// + /// Note: When PhotonNetwork.autoJoinLobby is false, OnConnectedToMaster() will be called and the room list won't become available. + /// + /// While in the lobby, the roomlist is automatically updated in fixed intervals (which you can't modify). + /// The room list gets available when OnReceivedRoomListUpdate() gets called after OnJoinedLobby(). + /// + void OnJoinedLobby(); + + /// + /// Called after leaving a lobby. + /// + /// + /// When you leave a lobby, [CreateRoom](@ref PhotonNetwork.CreateRoom) and [JoinRandomRoom](@ref PhotonNetwork.JoinRandomRoom) + /// automatically refer to the default lobby. + /// + void OnLeftLobby(); + + /// + /// Called if a connect call to the Photon server failed before the connection was established, followed by a call to OnDisconnectedFromPhoton(). + /// + /// + /// This is called when no connection could be established at all. + /// It differs from OnConnectionFail, which is called when an existing connection fails. + /// + void OnFailedToConnectToPhoton(DisconnectCause cause); + + /// + /// Called when something causes the connection to fail (after it was established), followed by a call to OnDisconnectedFromPhoton(). + /// + /// + /// If the server could not be reached in the first place, OnFailedToConnectToPhoton is called instead. + /// The reason for the error is provided as DisconnectCause. + /// + void OnConnectionFail(DisconnectCause cause); + + /// + /// Called after disconnecting from the Photon server. + /// + /// + /// In some cases, other callbacks are called before OnDisconnectedFromPhoton is called. + /// Examples: OnConnectionFail() and OnFailedToConnectToPhoton(). + /// + void OnDisconnectedFromPhoton(); + + /// + /// Called on all scripts on a GameObject (and children) that have been Instantiated using PhotonNetwork.Instantiate. + /// + /// + /// PhotonMessageInfo parameter provides info about who created the object and when (based off PhotonNetworking.time). + /// + void OnPhotonInstantiate(PhotonMessageInfo info); + + /// + /// Called for any update of the room-listing while in a lobby (PhotonNetwork.insideLobby) on the Master Server. + /// + /// + /// PUN provides the list of rooms by PhotonNetwork.GetRoomList().
+ /// Each item is a RoomInfo which might include custom properties (provided you defined those as lobby-listed when creating a room). + /// + /// Not all types of lobbies provide a listing of rooms to the client. Some are silent and specialized for server-side matchmaking. + ///
+ void OnReceivedRoomListUpdate(); + + /// + /// Called when entering a room (by creating or joining it). Called on all clients (including the Master Client). + /// + /// + /// This method is commonly used to instantiate player characters. + /// If a match has to be started "actively", you can call an [PunRPC](@ref PhotonView.RPC) triggered by a user's button-press or a timer. + /// + /// When this is called, you can usually already access the existing players in the room via PhotonNetwork.playerList. + /// Also, all custom properties should be already available as Room.customProperties. Check Room.playerCount to find out if + /// enough players are in the room to start playing. + /// + void OnJoinedRoom(); + + /// + /// Called when a remote player entered the room. This PhotonPlayer is already added to the playerlist at this time. + /// + /// + /// If your game starts with a certain number of players, this callback can be useful to check the + /// Room.playerCount and find out if you can start. + /// + void OnPhotonPlayerConnected(PhotonPlayer newPlayer); + + /// + /// Called when a remote player left the room. This PhotonPlayer is already removed from the playerlist at this time. + /// + /// + /// When your client calls PhotonNetwork.leaveRoom, PUN will call this method on the remaining clients. + /// When a remote client drops connection or gets closed, this callback gets executed. after a timeout + /// of several seconds. + /// + void OnPhotonPlayerDisconnected(PhotonPlayer otherPlayer); + + /// + /// Called when a JoinRandom() call failed. The parameter provides ErrorCode and message. + /// + /// + /// Most likely all rooms are full or no rooms are available.
+ /// When using multiple lobbies (via JoinLobby or TypedLobby), another lobby might have more/fitting rooms.
+ /// PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational. + ///
+ /// codeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg. + void OnPhotonRandomJoinFailed(object[] codeAndMsg); + + /// + /// Called after the connection to the master is established and authenticated but only when PhotonNetwork.autoJoinLobby is false. + /// + /// + /// If you set PhotonNetwork.autoJoinLobby to true, OnJoinedLobby() will be called instead of this. + /// + /// You can join rooms and create them even without being in a lobby. The default lobby is used in that case. + /// The list of available rooms won't become available unless you join a lobby via PhotonNetwork.joinLobby. + /// + void OnConnectedToMaster(); + + /// + /// Because the concurrent user limit was (temporarily) reached, this client is rejected by the server and disconnecting. + /// + /// + /// When this happens, the user might try again later. You can't create or join rooms in OnPhotonMaxCcuReached(), cause the client will be disconnecting. + /// You can raise the CCU limits with a new license (when you host yourself) or extended subscription (when using the Photon Cloud). + /// The Photon Cloud will mail you when the CCU limit was reached. This is also visible in the Dashboard (webpage). + /// + void OnPhotonMaxCccuReached(); + + /// + /// Called when a room's custom properties changed. The propertiesThatChanged contains all that was set via Room.SetCustomProperties. + /// + /// + /// Since v1.25 this method has one parameter: Hashtable propertiesThatChanged.
+ /// Changing properties must be done by Room.SetCustomProperties, which causes this callback locally, too. + ///
+ /// + void OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged); + + /// + /// Called when custom player-properties are changed. Player and the changed properties are passed as object[]. + /// + /// + /// Since v1.25 this method has one parameter: object[] playerAndUpdatedProps, which contains two entries.
+ /// [0] is the affected PhotonPlayer.
+ /// [1] is the Hashtable of properties that changed.
+ /// + /// We are using a object[] due to limitations of Unity's GameObject.SendMessage (which has only one optional parameter). + /// + /// Changing properties must be done by PhotonPlayer.SetCustomProperties, which causes this callback locally, too. + /// + /// Example:
+    /// void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps) {
+    ///     PhotonPlayer player = playerAndUpdatedProps[0] as PhotonPlayer;
+    ///     Hashtable props = playerAndUpdatedProps[1] as Hashtable;
+    ///     //...
+    /// }
+ ///
+ /// Contains PhotonPlayer and the properties that changed See remarks. + void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps); + + /// + /// Called when the server sent the response to a FindFriends request and updated PhotonNetwork.Friends. + /// + /// + /// The friends list is available as PhotonNetwork.Friends, listing name, online state and + /// the room a user is in (if any). + /// + void OnUpdatedFriendList(); + + /// + /// Called when the custom authentication failed. Followed by disconnect! + /// + /// + /// Custom Authentication can fail due to user-input, bad tokens/secrets. + /// If authentication is successful, this method is not called. Implement OnJoinedLobby() or OnConnectedToMaster() (as usual). + /// + /// During development of a game, it might also fail due to wrong configuration on the server side. + /// In those cases, logging the debugMessage is very important. + /// + /// Unless you setup a custom authentication service for your app (in the [Dashboard](https://www.photonengine.com/dashboard)), + /// this won't be called! + /// + /// Contains a debug message why authentication failed. This has to be fixed during development time. + void OnCustomAuthenticationFailed(string debugMessage); + + /// + /// Called when your Custom Authentication service responds with additional data. + /// + /// + /// Custom Authentication services can include some custom data in their response. + /// When present, that data is made available in this callback as Dictionary. + /// While the keys of your data have to be strings, the values can be either string or a number (in Json). + /// You need to make extra sure, that the value type is the one you expect. Numbers become (currently) int64. + /// + /// Example: void OnCustomAuthenticationResponse(Dictionary<string, object> data) { ... } + /// + /// + void OnCustomAuthenticationResponse(Dictionary data); + + /// + /// Called by PUN when the response to a WebRPC is available. See PhotonNetwork.WebRPC. + /// + /// + /// Important: The response.ReturnCode is 0 if Photon was able to reach your web-service.
+ /// The content of the response is what your web-service sent. You can create a WebRpcResponse from it.
+ /// Example: WebRpcResponse webResponse = new WebRpcResponse(operationResponse);
+ /// + /// Please note: Class OperationResponse is in a namespace which needs to be "used":
+ /// using ExitGames.Client.Photon; // includes OperationResponse (and other classes) + /// + /// The OperationResponse.ReturnCode by Photon is:
+    ///  0 for "OK"
+    /// -3 for "Web-Service not configured" (see Dashboard / WebHooks)
+    /// -5 for "Web-Service does now have RPC path/name" (at least for Azure)
+ ///
+ void OnWebRpcResponse(OperationResponse response); + + /// + /// Called when another player requests ownership of a PhotonView from you (the current owner). + /// + /// + /// The parameter viewAndPlayer contains: + /// + /// PhotonView view = viewAndPlayer[0] as PhotonView; + /// + /// PhotonPlayer requestingPlayer = viewAndPlayer[1] as PhotonPlayer; + /// + /// The PhotonView is viewAndPlayer[0] and the requesting player is viewAndPlayer[1]. + void OnOwnershipRequest(object[] viewAndPlayer); + + /// + /// Called when the Master Server sent an update for the Lobby Statistics, updating PhotonNetwork.LobbyStatistics. + /// + /// + /// This callback has two preconditions: + /// EnableLobbyStatistics must be set to true, before this client connects. + /// And the client has to be connected to the Master Server, which is providing the info about lobbies. + /// + void OnLobbyStatisticsUpdate(); +} + +/// +/// Defines all the methods that a Object Pool must implement, so that PUN can use it. +/// +/// +/// To use a Object Pool for instantiation, you can set PhotonNetwork.ObjectPool. +/// That is used for all objects, as long as ObjectPool is not null. +/// The pool has to return a valid non-null GameObject when PUN calls Instantiate. +/// Also, the position and rotation must be applied. +/// +/// Please note that pooled GameObjects don't get the usual Awake and Start calls. +/// OnEnable will be called (by your pool) but the networking values are not updated yet +/// when that happens. OnEnable will have outdated values for PhotonView (isMine, etc.). +/// You might have to adjust scripts. +/// +/// PUN will call OnPhotonInstantiate (see IPunCallbacks). This should be used to +/// setup the re-used object with regards to networking values / ownership. +/// +public interface IPunPrefabPool +{ + /// + /// This is called when PUN wants to create a new instance of an entity prefab. Must return valid GameObject with PhotonView. + /// + /// The id of this prefab. + /// The position we want the instance instantiated at. + /// The rotation we want the instance to take. + /// The newly instantiated object, or null if a prefab with was not found. + GameObject Instantiate(string prefabId, Vector3 position, Quaternion rotation); + + /// + /// This is called when PUN wants to destroy the instance of an entity prefab. + /// + /// + /// A pool needs some way to find out which type of GameObject got returned via Destroy(). + /// It could be a tag or name or anything similar. + /// + /// The instance to destroy. + void Destroy(GameObject gameObject); +} + + +namespace Photon +{ + using Hashtable = ExitGames.Client.Photon.Hashtable; + + /// + /// This class adds the property photonView, while logging a warning when your game still uses the networkView. + /// + public class MonoBehaviour : UnityEngine.MonoBehaviour + { + /// Cache field for the PhotonView on this GameObject. + private PhotonView pvCache = null; + + /// A cached reference to a PhotonView on this GameObject. + /// + /// If you intend to work with a PhotonView in a script, it's usually easier to write this.photonView. + /// + /// If you intend to remove the PhotonView component from the GameObject but keep this Photon.MonoBehaviour, + /// avoid this reference or modify this code to use PhotonView.Get(obj) instead. + /// + public PhotonView photonView + { + get + { + if (pvCache == null) + { + pvCache = PhotonView.Get(this); + } + return pvCache; + } + } + + #if !UNITY_MIN_5_3 + /// + /// This property is only here to notify developers when they use the outdated value. + /// + /// + /// If Unity 5.x logs a compiler warning "Use the new keyword if hiding was intended" or + /// "The new keyword is not required", you may suffer from an Editor issue. + /// Try to modify networkView with a if-def condition: + /// + /// #if UNITY_EDITOR + /// new + /// #endif + /// public PhotonView networkView + /// + [Obsolete("Use a photonView")] + public new PhotonView networkView + { + get + { + Debug.LogWarning("Why are you still using networkView? should be PhotonView?"); + return PhotonView.Get(this); + } + } + #endif + } + + + /// + /// This class provides a .photonView and all callbacks/events that PUN can call. Override the events/methods you want to use. + /// + /// + /// By extending this class, you can implement individual methods as override. + /// + /// Visual Studio and MonoDevelop should provide the list of methods when you begin typing "override". + /// Your implementation does not have to call "base.method()". + /// + /// This class implements IPunCallbacks, which is used as definition of all PUN callbacks. + /// Don't implement IPunCallbacks in your classes. Instead, implent PunBehaviour or individual methods. + /// + /// \ingroup publicApi + // the documentation for the interface methods becomes inherited when Doxygen builds it. + public class PunBehaviour : Photon.MonoBehaviour, IPunCallbacks + { + /// + /// Called when the initial connection got established but before you can use the server. OnJoinedLobby() or OnConnectedToMaster() are called when PUN is ready. + /// + /// + /// This callback is only useful to detect if the server can be reached at all (technically). + /// Most often, it's enough to implement OnFailedToConnectToPhoton() and OnDisconnectedFromPhoton(). + /// + /// OnJoinedLobby() or OnConnectedToMaster() are called when PUN is ready. + /// + /// When this is called, the low level connection is established and PUN will send your AppId, the user, etc in the background. + /// This is not called for transitions from the masterserver to game servers. + /// + public virtual void OnConnectedToPhoton() + { + } + + /// + /// Called when the local user/client left a room. + /// + /// + /// When leaving a room, PUN brings you back to the Master Server. + /// Before you can use lobbies and join or create rooms, OnJoinedLobby() or OnConnectedToMaster() will get called again. + /// + public virtual void OnLeftRoom() + { + } + + /// + /// Called after switching to a new MasterClient when the current one leaves. + /// + /// + /// This is not called when this client enters a room. + /// The former MasterClient is still in the player list when this method get called. + /// + public virtual void OnMasterClientSwitched(PhotonPlayer newMasterClient) + { + } + + /// + /// Called when a CreateRoom() call failed. The parameter provides ErrorCode and message (as array). + /// + /// + /// Most likely because the room name is already in use (some other client was faster than you). + /// PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational. + /// + /// codeAndMsg[0] is a short ErrorCode and codeAndMsg[1] is a string debug msg. + public virtual void OnPhotonCreateRoomFailed(object[] codeAndMsg) + { + } + + /// + /// Called when a JoinRoom() call failed. The parameter provides ErrorCode and message (as array). + /// + /// + /// Most likely error is that the room does not exist or the room is full (some other client was faster than you). + /// PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational. + /// + /// codeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg. + public virtual void OnPhotonJoinRoomFailed(object[] codeAndMsg) + { + } + + /// + /// Called when this client created a room and entered it. OnJoinedRoom() will be called as well. + /// + /// + /// This callback is only called on the client which created a room (see PhotonNetwork.CreateRoom). + /// + /// As any client might close (or drop connection) anytime, there is a chance that the + /// creator of a room does not execute OnCreatedRoom. + /// + /// If you need specific room properties or a "start signal", it is safer to implement + /// OnMasterClientSwitched() and to make the new MasterClient check the room's state. + /// + public virtual void OnCreatedRoom() + { + } + + /// + /// Called on entering a lobby on the Master Server. The actual room-list updates will call OnReceivedRoomListUpdate(). + /// + /// + /// Note: When PhotonNetwork.autoJoinLobby is false, OnConnectedToMaster() will be called and the room list won't become available. + /// + /// While in the lobby, the roomlist is automatically updated in fixed intervals (which you can't modify). + /// The room list gets available when OnReceivedRoomListUpdate() gets called after OnJoinedLobby(). + /// + public virtual void OnJoinedLobby() + { + } + + /// + /// Called after leaving a lobby. + /// + /// + /// When you leave a lobby, [CreateRoom](@ref PhotonNetwork.CreateRoom) and [JoinRandomRoom](@ref PhotonNetwork.JoinRandomRoom) + /// automatically refer to the default lobby. + /// + public virtual void OnLeftLobby() + { + } + + /// + /// Called if a connect call to the Photon server failed before the connection was established, followed by a call to OnDisconnectedFromPhoton(). + /// + /// + /// This is called when no connection could be established at all. + /// It differs from OnConnectionFail, which is called when an existing connection fails. + /// + public virtual void OnFailedToConnectToPhoton(DisconnectCause cause) + { + } + + /// + /// Called after disconnecting from the Photon server. + /// + /// + /// In some cases, other callbacks are called before OnDisconnectedFromPhoton is called. + /// Examples: OnConnectionFail() and OnFailedToConnectToPhoton(). + /// + public virtual void OnDisconnectedFromPhoton() + { + } + + /// + /// Called when something causes the connection to fail (after it was established), followed by a call to OnDisconnectedFromPhoton(). + /// + /// + /// If the server could not be reached in the first place, OnFailedToConnectToPhoton is called instead. + /// The reason for the error is provided as DisconnectCause. + /// + public virtual void OnConnectionFail(DisconnectCause cause) + { + } + + /// + /// Called on all scripts on a GameObject (and children) that have been Instantiated using PhotonNetwork.Instantiate. + /// + /// + /// PhotonMessageInfo parameter provides info about who created the object and when (based off PhotonNetworking.time). + /// + public virtual void OnPhotonInstantiate(PhotonMessageInfo info) + { + } + + /// + /// Called for any update of the room-listing while in a lobby (PhotonNetwork.insideLobby) on the Master Server. + /// + /// + /// PUN provides the list of rooms by PhotonNetwork.GetRoomList().
+ /// Each item is a RoomInfo which might include custom properties (provided you defined those as lobby-listed when creating a room). + /// + /// Not all types of lobbies provide a listing of rooms to the client. Some are silent and specialized for server-side matchmaking. + ///
+ public virtual void OnReceivedRoomListUpdate() + { + } + + /// + /// Called when entering a room (by creating or joining it). Called on all clients (including the Master Client). + /// + /// + /// This method is commonly used to instantiate player characters. + /// If a match has to be started "actively", you can call an [PunRPC](@ref PhotonView.RPC) triggered by a user's button-press or a timer. + /// + /// When this is called, you can usually already access the existing players in the room via PhotonNetwork.playerList. + /// Also, all custom properties should be already available as Room.customProperties. Check Room.playerCount to find out if + /// enough players are in the room to start playing. + /// + public virtual void OnJoinedRoom() + { + } + + /// + /// Called when a remote player entered the room. This PhotonPlayer is already added to the playerlist at this time. + /// + /// + /// If your game starts with a certain number of players, this callback can be useful to check the + /// Room.playerCount and find out if you can start. + /// + public virtual void OnPhotonPlayerConnected(PhotonPlayer newPlayer) + { + } + + /// + /// Called when a remote player left the room. This PhotonPlayer is already removed from the playerlist at this time. + /// + /// + /// When your client calls PhotonNetwork.leaveRoom, PUN will call this method on the remaining clients. + /// When a remote client drops connection or gets closed, this callback gets executed. after a timeout + /// of several seconds. + /// + public virtual void OnPhotonPlayerDisconnected(PhotonPlayer otherPlayer) + { + } + + /// + /// Called when a JoinRandom() call failed. The parameter provides ErrorCode and message. + /// + /// + /// Most likely all rooms are full or no rooms are available.
+ /// When using multiple lobbies (via JoinLobby or TypedLobby), another lobby might have more/fitting rooms.
+ /// PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational. + ///
+ /// codeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg. + public virtual void OnPhotonRandomJoinFailed(object[] codeAndMsg) + { + } + + /// + /// Called after the connection to the master is established and authenticated but only when PhotonNetwork.autoJoinLobby is false. + /// + /// + /// If you set PhotonNetwork.autoJoinLobby to true, OnJoinedLobby() will be called instead of this. + /// + /// You can join rooms and create them even without being in a lobby. The default lobby is used in that case. + /// The list of available rooms won't become available unless you join a lobby via PhotonNetwork.joinLobby. + /// + public virtual void OnConnectedToMaster() + { + } + + /// + /// Because the concurrent user limit was (temporarily) reached, this client is rejected by the server and disconnecting. + /// + /// + /// When this happens, the user might try again later. You can't create or join rooms in OnPhotonMaxCcuReached(), cause the client will be disconnecting. + /// You can raise the CCU limits with a new license (when you host yourself) or extended subscription (when using the Photon Cloud). + /// The Photon Cloud will mail you when the CCU limit was reached. This is also visible in the Dashboard (webpage). + /// + public virtual void OnPhotonMaxCccuReached() + { + } + + /// + /// Called when a room's custom properties changed. The propertiesThatChanged contains all that was set via Room.SetCustomProperties. + /// + /// + /// Since v1.25 this method has one parameter: Hashtable propertiesThatChanged.
+ /// Changing properties must be done by Room.SetCustomProperties, which causes this callback locally, too. + ///
+ /// + public virtual void OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged) + { + } + + /// + /// Called when custom player-properties are changed. Player and the changed properties are passed as object[]. + /// + /// + /// Since v1.25 this method has one parameter: object[] playerAndUpdatedProps, which contains two entries.
+ /// [0] is the affected PhotonPlayer.
+ /// [1] is the Hashtable of properties that changed.
+ /// + /// We are using a object[] due to limitations of Unity's GameObject.SendMessage (which has only one optional parameter). + /// + /// Changing properties must be done by PhotonPlayer.SetCustomProperties, which causes this callback locally, too. + /// + /// Example:
+        /// void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps) {
+        ///     PhotonPlayer player = playerAndUpdatedProps[0] as PhotonPlayer;
+        ///     Hashtable props = playerAndUpdatedProps[1] as Hashtable;
+        ///     //...
+        /// }
+ ///
+ /// Contains PhotonPlayer and the properties that changed See remarks. + public virtual void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps) + { + } + + /// + /// Called when the server sent the response to a FindFriends request and updated PhotonNetwork.Friends. + /// + /// + /// The friends list is available as PhotonNetwork.Friends, listing name, online state and + /// the room a user is in (if any). + /// + public virtual void OnUpdatedFriendList() + { + } + + /// + /// Called when the custom authentication failed. Followed by disconnect! + /// + /// + /// Custom Authentication can fail due to user-input, bad tokens/secrets. + /// If authentication is successful, this method is not called. Implement OnJoinedLobby() or OnConnectedToMaster() (as usual). + /// + /// During development of a game, it might also fail due to wrong configuration on the server side. + /// In those cases, logging the debugMessage is very important. + /// + /// Unless you setup a custom authentication service for your app (in the [Dashboard](https://www.photonengine.com/dashboard)), + /// this won't be called! + /// + /// Contains a debug message why authentication failed. This has to be fixed during development time. + public virtual void OnCustomAuthenticationFailed(string debugMessage) + { + } + + /// + /// Called when your Custom Authentication service responds with additional data. + /// + /// + /// Custom Authentication services can include some custom data in their response. + /// When present, that data is made available in this callback as Dictionary. + /// While the keys of your data have to be strings, the values can be either string or a number (in Json). + /// You need to make extra sure, that the value type is the one you expect. Numbers become (currently) int64. + /// + /// Example: void OnCustomAuthenticationResponse(Dictionary<string, object> data) { ... } + /// + /// + public virtual void OnCustomAuthenticationResponse(Dictionary data) + { + } + + /// + /// Called by PUN when the response to a WebRPC is available. See PhotonNetwork.WebRPC. + /// + /// + /// Important: The response.ReturnCode is 0 if Photon was able to reach your web-service. + /// The content of the response is what your web-service sent. You can create a WebResponse instance from it. + /// Example: WebRpcResponse webResponse = new WebRpcResponse(operationResponse); + /// + /// Please note: Class OperationResponse is in a namespace which needs to be "used": + /// using ExitGames.Client.Photon; // includes OperationResponse (and other classes) + /// + /// The OperationResponse.ReturnCode by Photon is:
+        ///  0 for "OK"
+        /// -3 for "Web-Service not configured" (see Dashboard / WebHooks)
+        /// -5 for "Web-Service does now have RPC path/name" (at least for Azure)
+ ///
+ public virtual void OnWebRpcResponse(OperationResponse response) + { + } + + /// + /// Called when another player requests ownership of a PhotonView from you (the current owner). + /// + /// + /// The parameter viewAndPlayer contains: + /// + /// PhotonView view = viewAndPlayer[0] as PhotonView; + /// + /// PhotonPlayer requestingPlayer = viewAndPlayer[1] as PhotonPlayer; + /// + /// The PhotonView is viewAndPlayer[0] and the requesting player is viewAndPlayer[1]. + public virtual void OnOwnershipRequest(object[] viewAndPlayer) + { + } + + /// + /// Called when the Master Server sent an update for the Lobby Statistics, updating PhotonNetwork.LobbyStatistics. + /// + /// + /// This callback has two preconditions: + /// EnableLobbyStatistics must be set to true, before this client connects. + /// And the client has to be connected to the Master Server, which is providing the info about lobbies. + /// + public virtual void OnLobbyStatisticsUpdate() + { + } + } +} + + +/// +/// Container class for info about a particular message, RPC or update. +/// +/// \ingroup publicApi +public struct PhotonMessageInfo +{ + private readonly int timeInt; + public readonly PhotonPlayer sender; + public readonly PhotonView photonView; + + public PhotonMessageInfo(PhotonPlayer player, int timestamp, PhotonView view) + { + this.sender = player; + this.timeInt = timestamp; + this.photonView = view; + } + + public double timestamp + { + get + { + uint u = (uint)this.timeInt; + double t = u; + return t / 1000; + } + } + + public override string ToString() + { + return string.Format("[PhotonMessageInfo: Sender='{1}' Senttime={0}]", this.timestamp, this.sender); + } +} + + + +/// Defines Photon event-codes as used by PUN. +internal class PunEvent +{ + public const byte RPC = 200; + public const byte SendSerialize = 201; + public const byte Instantiation = 202; + public const byte CloseConnection = 203; + public const byte Destroy = 204; + public const byte RemoveCachedRPCs = 205; + public const byte SendSerializeReliable = 206; // TS: added this but it's not really needed anymore + public const byte DestroyPlayer = 207; // TS: added to make others remove all GOs of a player + public const byte AssignMaster = 208; // TS: added to assign someone master client (overriding the current) + public const byte OwnershipRequest = 209; + public const byte OwnershipTransfer = 210; + public const byte VacantViewIds = 211; +} + +/// +/// This container is used in OnPhotonSerializeView() to either provide incoming data of a PhotonView or for you to provide it. +/// +/// +/// The isWriting property will be true if this client is the "owner" of the PhotonView (and thus the GameObject). +/// Add data to the stream and it's sent via the server to the other players in a room. +/// On the receiving side, isWriting is false and the data should be read. +/// +/// Send as few data as possible to keep connection quality up. An empty PhotonStream will not be sent. +/// +/// Use either Serialize() for reading and writing or SendNext() and ReceiveNext(). The latter two are just explicit read and +/// write methods but do about the same work as Serialize(). It's a matter of preference which methods you use. +/// +/// +/// \ingroup publicApi +public class PhotonStream +{ + bool write = false; + private Queue writeData; + private object[] readData; + internal byte currentItem = 0; //Used to track the next item to receive. + + /// + /// Creates a stream and initializes it. Used by PUN internally. + /// + public PhotonStream(bool write, object[] incomingData) + { + this.write = write; + if (incomingData == null) + { + this.writeData = new Queue(10); + } + else + { + this.readData = incomingData; + } + } + + public void SetReadStream(object[] incomingData, byte pos = 0) + { + this.readData = incomingData; + this.currentItem = pos; + this.write = false; + } + + internal void ResetWriteStream() + { + writeData.Clear(); + } + + /// If true, this client should add data to the stream to send it. + public bool isWriting + { + get { return this.write; } + } + + /// If true, this client should read data send by another client. + public bool isReading + { + get { return !this.write; } + } + + /// Count of items in the stream. + public int Count + { + get + { + return (this.isWriting) ? this.writeData.Count : this.readData.Length; + } + } + + /// Read next piece of data from the stream when isReading is true. + public object ReceiveNext() + { + if (this.write) + { + Debug.LogError("Error: you cannot read this stream that you are writing!"); + return null; + } + + object obj = this.readData[this.currentItem]; + this.currentItem++; + return obj; + } + + /// Read next piece of data from the stream without advancing the "current" item. + public object PeekNext() + { + if (this.write) + { + Debug.LogError("Error: you cannot read this stream that you are writing!"); + return null; + } + + object obj = this.readData[this.currentItem]; + //this.currentItem++; + return obj; + } + + /// Add another piece of data to send it when isWriting is true. + public void SendNext(object obj) + { + if (!this.write) + { + Debug.LogError("Error: you cannot write/send to this stream that you are reading!"); + return; + } + + this.writeData.Enqueue(obj); + } + + /// Turns the stream into a new object[]. + public object[] ToArray() + { + return this.isWriting ? this.writeData.ToArray() : this.readData; + } + + /// + /// Will read or write the value, depending on the stream's isWriting value. + /// + public void Serialize(ref bool myBool) + { + if (this.write) + { + this.writeData.Enqueue(myBool); + } + else + { + if (this.readData.Length > currentItem) + { + myBool = (bool)this.readData[currentItem]; + this.currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's isWriting value. + /// + public void Serialize(ref int myInt) + { + if (write) + { + this.writeData.Enqueue(myInt); + } + else + { + if (this.readData.Length > currentItem) + { + myInt = (int)this.readData[currentItem]; + currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's isWriting value. + /// + public void Serialize(ref string value) + { + if (write) + { + this.writeData.Enqueue(value); + } + else + { + if (this.readData.Length > currentItem) + { + value = (string)this.readData[currentItem]; + currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's isWriting value. + /// + public void Serialize(ref char value) + { + if (write) + { + this.writeData.Enqueue(value); + } + else + { + if (this.readData.Length > currentItem) + { + value = (char)this.readData[currentItem]; + currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's isWriting value. + /// + public void Serialize(ref short value) + { + if (write) + { + this.writeData.Enqueue(value); + } + else + { + if (this.readData.Length > currentItem) + { + value = (short)this.readData[currentItem]; + currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's isWriting value. + /// + public void Serialize(ref float obj) + { + if (write) + { + this.writeData.Enqueue(obj); + } + else + { + if (this.readData.Length > currentItem) + { + obj = (float)this.readData[currentItem]; + currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's isWriting value. + /// + public void Serialize(ref PhotonPlayer obj) + { + if (write) + { + this.writeData.Enqueue(obj); + } + else + { + if (this.readData.Length > currentItem) + { + obj = (PhotonPlayer)this.readData[currentItem]; + currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's isWriting value. + /// + public void Serialize(ref Vector3 obj) + { + if (write) + { + this.writeData.Enqueue(obj); + } + else + { + if (this.readData.Length > currentItem) + { + obj = (Vector3)this.readData[currentItem]; + currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's isWriting value. + /// + public void Serialize(ref Vector2 obj) + { + if (write) + { + this.writeData.Enqueue(obj); + } + else + { + if (this.readData.Length > currentItem) + { + obj = (Vector2)this.readData[currentItem]; + currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's isWriting value. + /// + public void Serialize(ref Quaternion obj) + { + if (write) + { + this.writeData.Enqueue(obj); + } + else + { + if (this.readData.Length > currentItem) + { + obj = (Quaternion)this.readData[currentItem]; + currentItem++; + } + } + } +} + + +#if UNITY_5_0 || !UNITY_5 +/// Empty implementation of the upcoming HelpURL of Unity 5.1. This one is only for compatibility of attributes. +/// http://feedback.unity3d.com/suggestions/override-component-documentation-slash-help-link +public class HelpURL : Attribute +{ + public HelpURL(string url) + { + } +} +#endif + + +#if !UNITY_MIN_5_3 +// in Unity 5.3 and up, we have to use a SceneManager. This section re-implements it for older Unity versions + +#if UNITY_EDITOR +namespace UnityEditor.SceneManagement +{ + /// Minimal implementation of the EditorSceneManager for older Unity, up to v5.2. + public class EditorSceneManager + { + public static int loadedSceneCount + { + get { return string.IsNullOrEmpty(UnityEditor.EditorApplication.currentScene) ? -1 : 1; } + } + + public static void OpenScene(string name) + { + UnityEditor.EditorApplication.OpenScene(name); + } + + public static void SaveOpenScenes() + { + UnityEditor.EditorApplication.SaveScene(); + } + + public static void SaveCurrentModifiedScenesIfUserWantsTo() + { + UnityEditor.EditorApplication.SaveCurrentSceneIfUserWantsTo(); + } + } +} +#endif + +namespace UnityEngine.SceneManagement +{ + /// Minimal implementation of the SceneManager for older Unity, up to v5.2. + public class SceneManager + { + public static void LoadScene(string name) + { + Application.LoadLevel(name); + } + + public static void LoadScene(int buildIndex) + { + Application.LoadLevel(buildIndex); + } + } +} + +#endif + + +public class SceneManagerHelper +{ + public static string ActiveSceneName + { + get + { + #if UNITY_MIN_5_3 + UnityEngine.SceneManagement.Scene s = UnityEngine.SceneManagement.SceneManager.GetActiveScene(); + return s.name; + #else + return Application.loadedLevelName; + #endif + } + } + + public static int ActiveSceneBuildIndex + { + get + { + #if UNITY_MIN_5_3 + return UnityEngine.SceneManagement.SceneManager.GetActiveScene().buildIndex; + #else + return Application.loadedLevel; + #endif + } + } + + +#if UNITY_EDITOR + public static string EditorActiveSceneName + { + get + { + #if UNITY_MIN_5_3 + return UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene().name; + #else + return System.IO.Path.GetFileNameWithoutExtension(UnityEditor.EditorApplication.currentScene); + #endif + } + } +#endif +} + + +/// Reads an operation response of a WebRpc and provides convenient access to most common values. +/// +/// See method PhotonNetwork.WebRpc.
+/// Create a WebRpcResponse to access common result values.
+/// The operationResponse.OperationCode should be: OperationCode.WebRpc.
+///
+public class WebRpcResponse +{ + /// Name of the WebRpc that was called. + public string Name { get; private set; } + /// ReturnCode of the WebService that answered the WebRpc. + /// + /// 0 is commonly used to signal success.
+ /// -1 tells you: Got no ReturnCode from WebRpc service.
+ /// Other ReturnCodes are defined by the individual WebRpc and service. + ///
+ public int ReturnCode { get; private set; } + /// Might be empty or null. + public string DebugMessage { get; private set; } + /// Other key/values returned by the webservice that answered the WebRpc. + public Dictionary Parameters { get; private set; } + + /// An OperationResponse for a WebRpc is needed to read it's values. + public WebRpcResponse(OperationResponse response) + { + object value; + response.Parameters.TryGetValue(ParameterCode.UriPath, out value); + this.Name = value as string; + + response.Parameters.TryGetValue(ParameterCode.WebRpcReturnCode, out value); + this.ReturnCode = (value != null) ? (byte)value : -1; + + response.Parameters.TryGetValue(ParameterCode.WebRpcParameters, out value); + this.Parameters = value as Dictionary; + + response.Parameters.TryGetValue(ParameterCode.WebRpcReturnMessage, out value); + this.DebugMessage = value as string; + } + + /// Turns the response into an easier to read string. + /// String resembling the result. + public string ToStringFull() + { + return string.Format("{0}={2}: {1} \"{3}\"", Name, SupportClassPun.DictionaryToString(Parameters), ReturnCode, DebugMessage); + } +} + +/** +public class PBitStream +{ + List streamBytes; + private int currentByte; + private int totalBits = 0; + + public int ByteCount + { + get { return BytesForBits(this.totalBits); } + } + + public int BitCount + { + get { return this.totalBits; } + private set { this.totalBits = value; } + } + + public PBitStream() + { + this.streamBytes = new List(1); + } + + public PBitStream(int bitCount) + { + this.streamBytes = new List(BytesForBits(bitCount)); + } + + public PBitStream(IEnumerable bytes, int bitCount) + { + this.streamBytes = new List(bytes); + this.BitCount = bitCount; + } + + public static int BytesForBits(int bitCount) + { + if (bitCount <= 0) + { + return 0; + } + + return ((bitCount - 1) / 8) + 1; + } + + public void Add(bool val) + { + int bytePos = this.totalBits / 8; + if (bytePos > this.streamBytes.Count-1 || this.totalBits == 0) + { + this.streamBytes.Add(0); + } + + if (val) + { + int currentByteBit = 7 - (this.totalBits % 8); + this.streamBytes[bytePos] |= (byte)(1 << currentByteBit); + } + + this.totalBits++; + } + + public byte[] ToBytes() + { + return this.streamBytes.ToArray(); + } + + public int Position { get; set; } + + public bool GetNext() + { + if (this.Position > this.totalBits) + { + throw new Exception("End of PBitStream reached. Can't read more."); + } + + return Get(this.Position++); + } + + public bool Get(int bitIndex) + { + int byteIndex = bitIndex / 8; + int bitInByIndex = 7 - (bitIndex % 8); + return ((this.streamBytes[byteIndex] & (byte)(1 << bitInByIndex)) > 0); + } + + public void Set(int bitIndex, bool value) + { + int byteIndex = bitIndex / 8; + int bitInByIndex = 7 - (bitIndex % 8); + this.streamBytes[byteIndex] |= (byte)(1 << bitInByIndex); + } +} +**/ diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonClasses.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonClasses.cs.meta new file mode 100644 index 0000000..94dc773 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonClasses.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f40f16a0227e5c14293e269c875c0f9b +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonHandler.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonHandler.cs new file mode 100644 index 0000000..9093edd --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonHandler.cs @@ -0,0 +1,334 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Photon Unity Networking +// +// -------------------------------------------------------------------------------------------------------------------- + +#if UNITY_5 && (!UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3) || UNITY_6 +#define UNITY_MIN_5_4 +#endif + +using System; +using System.Collections; +using System.Diagnostics; +using ExitGames.Client.Photon; +using UnityEngine; +using Debug = UnityEngine.Debug; +using Hashtable = ExitGames.Client.Photon.Hashtable; +using SupportClassPun = ExitGames.Client.Photon.SupportClass; + +#if UNITY_5_5_OR_NEWER +using UnityEngine.Profiling; +#endif + +/// +/// Internal Monobehaviour that allows Photon to run an Update loop. +/// +internal class PhotonHandler : MonoBehaviour +{ + public static PhotonHandler SP; + + public int updateInterval; // time [ms] between consecutive SendOutgoingCommands calls + + public int updateIntervalOnSerialize; // time [ms] between consecutive RunViewUpdate calls (sending syncs, etc) + + private int nextSendTickCount = 0; + + private int nextSendTickCountOnSerialize = 0; + + private static bool sendThreadShouldRun; + + private static Stopwatch timerToStopConnectionInBackground; + + protected internal static bool AppQuits; + + protected internal static Type PingImplementation = null; + + protected void Awake() + { + if (SP != null && SP != this && SP.gameObject != null) + { + GameObject.DestroyImmediate(SP.gameObject); + } + + SP = this; + DontDestroyOnLoad(this.gameObject); + + this.updateInterval = 1000 / PhotonNetwork.sendRate; + this.updateIntervalOnSerialize = 1000 / PhotonNetwork.sendRateOnSerialize; + + PhotonHandler.StartFallbackSendAckThread(); + } + + + #if UNITY_MIN_5_4 + + protected void Start() + { + UnityEngine.SceneManagement.SceneManager.sceneLoaded += (scene, loadingMode) => + { + PhotonNetwork.networkingPeer.NewSceneLoaded(); + PhotonNetwork.networkingPeer.SetLevelInPropsIfSynced(SceneManagerHelper.ActiveSceneName); + }; + } + + #else + + /// Called by Unity after a new level was loaded. + protected void OnLevelWasLoaded(int level) + { + PhotonNetwork.networkingPeer.NewSceneLoaded(); + PhotonNetwork.networkingPeer.SetLevelInPropsIfSynced(SceneManagerHelper.ActiveSceneName); + } + + #endif + + + /// Called by Unity when the application is closed. Disconnects. + protected void OnApplicationQuit() + { + PhotonHandler.AppQuits = true; + PhotonHandler.StopFallbackSendAckThread(); + PhotonNetwork.Disconnect(); + } + + /// + /// Called by Unity when the application gets paused (e.g. on Android when in background). + /// + /// + /// Sets a disconnect timer when PhotonNetwork.BackgroundTimeout > 0.1f. See PhotonNetwork.BackgroundTimeout. + /// + /// Some versions of Unity will give false values for pause on Android (and possibly on other platforms). + /// + /// If the app pauses. + protected void OnApplicationPause(bool pause) + { + if (PhotonNetwork.BackgroundTimeout > 0.1f) + { + if (timerToStopConnectionInBackground == null) + { + timerToStopConnectionInBackground = new Stopwatch(); + } + timerToStopConnectionInBackground.Reset(); + + if (pause) + { + timerToStopConnectionInBackground.Start(); + } + else + { + timerToStopConnectionInBackground.Stop(); + } + } + } + + /// Called by Unity when the play mode ends. Used to cleanup. + protected void OnDestroy() + { + //Debug.Log("OnDestroy on PhotonHandler."); + PhotonHandler.StopFallbackSendAckThread(); + //PhotonNetwork.Disconnect(); + } + + protected void Update() + { + if (PhotonNetwork.networkingPeer == null) + { + Debug.LogError("NetworkPeer broke!"); + return; + } + + if (PhotonNetwork.connectionStateDetailed == ClientState.PeerCreated || PhotonNetwork.connectionStateDetailed == ClientState.Disconnected || PhotonNetwork.offlineMode) + { + return; + } + + // the messageQueue might be paused. in that case a thread will send acknowledgements only. nothing else to do here. + if (!PhotonNetwork.isMessageQueueRunning) + { + return; + } + + bool doDispatch = true; + while (PhotonNetwork.isMessageQueueRunning && doDispatch) + { + // DispatchIncomingCommands() returns true of it found any command to dispatch (event, result or state change) + Profiler.BeginSample("DispatchIncomingCommands"); + doDispatch = PhotonNetwork.networkingPeer.DispatchIncomingCommands(); + Profiler.EndSample(); + } + + int currentMsSinceStart = (int)(Time.realtimeSinceStartup * 1000); // avoiding Environment.TickCount, which could be negative on long-running platforms + if (PhotonNetwork.isMessageQueueRunning && currentMsSinceStart > this.nextSendTickCountOnSerialize) + { + PhotonNetwork.networkingPeer.RunViewUpdate(); + this.nextSendTickCountOnSerialize = currentMsSinceStart + this.updateIntervalOnSerialize; + this.nextSendTickCount = 0; // immediately send when synchronization code was running + } + + currentMsSinceStart = (int)(Time.realtimeSinceStartup * 1000); + if (currentMsSinceStart > this.nextSendTickCount) + { + bool doSend = true; + while (PhotonNetwork.isMessageQueueRunning && doSend) + { + // Send all outgoing commands + Profiler.BeginSample("SendOutgoingCommands"); + doSend = PhotonNetwork.networkingPeer.SendOutgoingCommands(); + Profiler.EndSample(); + } + + this.nextSendTickCount = currentMsSinceStart + this.updateInterval; + } + } + + protected void OnJoinedRoom() + { + PhotonNetwork.networkingPeer.LoadLevelIfSynced(); + } + + protected void OnCreatedRoom() + { + PhotonNetwork.networkingPeer.SetLevelInPropsIfSynced(SceneManagerHelper.ActiveSceneName); + } + + public static void StartFallbackSendAckThread() + { + #if !UNITY_WEBGL + if (sendThreadShouldRun) + { + return; + } + + sendThreadShouldRun = true; + SupportClassPun.CallInBackground(FallbackSendAckThread); // thread will call this every 100ms until method returns false + #endif + } + + public static void StopFallbackSendAckThread() + { + #if !UNITY_WEBGL + sendThreadShouldRun = false; + #endif + } + + /// A thread which runs independent from the Update() calls. Keeps connections online while loading or in background. See PhotonNetwork.BackgroundTimeout. + public static bool FallbackSendAckThread() + { + if (sendThreadShouldRun && PhotonNetwork.networkingPeer != null) + { + // check if the client should disconnect after some seconds in background + if (timerToStopConnectionInBackground != null && PhotonNetwork.BackgroundTimeout > 0.1f) + { + if (timerToStopConnectionInBackground.ElapsedMilliseconds > PhotonNetwork.BackgroundTimeout * 1000) + { + if (PhotonNetwork.connected) + { + PhotonNetwork.Disconnect(); + } + timerToStopConnectionInBackground.Stop(); + timerToStopConnectionInBackground.Reset(); + return sendThreadShouldRun; + } + } + + if (PhotonNetwork.networkingPeer.ConnectionTime - PhotonNetwork.networkingPeer.LastSendOutgoingTime > 200) + { + PhotonNetwork.networkingPeer.SendAcksOnly(); + } + } + + return sendThreadShouldRun; + } + + + #region Photon Cloud Ping Evaluation + + + private const string PlayerPrefsKey = "PUNCloudBestRegion"; + + internal static CloudRegionCode BestRegionCodeCurrently = CloudRegionCode.none; // default to none + internal static CloudRegionCode BestRegionCodeInPreferences + { + get + { + string prefsRegionCode = PlayerPrefs.GetString(PlayerPrefsKey, ""); + if (!string.IsNullOrEmpty(prefsRegionCode)) + { + CloudRegionCode loadedRegion = Region.Parse(prefsRegionCode); + return loadedRegion; + } + + return CloudRegionCode.none; + } + set + { + if (value == CloudRegionCode.none) + { + PlayerPrefs.DeleteKey(PlayerPrefsKey); + } + else + { + PlayerPrefs.SetString(PlayerPrefsKey, value.ToString()); + } + } + } + + + internal protected static void PingAvailableRegionsAndConnectToBest() + { + SP.StartCoroutine(SP.PingAvailableRegionsCoroutine(true)); + } + + + internal IEnumerator PingAvailableRegionsCoroutine(bool connectToBest) + { + BestRegionCodeCurrently = CloudRegionCode.none; + while (PhotonNetwork.networkingPeer.AvailableRegions == null) + { + if (PhotonNetwork.connectionStateDetailed != ClientState.ConnectingToNameServer && PhotonNetwork.connectionStateDetailed != ClientState.ConnectedToNameServer) + { + Debug.LogError("Call ConnectToNameServer to ping available regions."); + yield break; // break if we don't connect to the nameserver at all + } + + Debug.Log("Waiting for AvailableRegions. State: " + PhotonNetwork.connectionStateDetailed + " Server: " + PhotonNetwork.Server + " PhotonNetwork.networkingPeer.AvailableRegions " + (PhotonNetwork.networkingPeer.AvailableRegions != null)); + yield return new WaitForSeconds(0.25f); // wait until pinging finished (offline mode won't ping) + } + + if (PhotonNetwork.networkingPeer.AvailableRegions == null || PhotonNetwork.networkingPeer.AvailableRegions.Count == 0) + { + Debug.LogError("No regions available. Are you sure your appid is valid and setup?"); + yield break; // break if we don't get regions at all + } + + PhotonPingManager pingManager = new PhotonPingManager(); + foreach (Region region in PhotonNetwork.networkingPeer.AvailableRegions) + { + SP.StartCoroutine(pingManager.PingSocket(region)); + } + + while (!pingManager.Done) + { + yield return new WaitForSeconds(0.1f); // wait until pinging finished (offline mode won't ping) + } + + + Region best = pingManager.BestRegion; + PhotonHandler.BestRegionCodeCurrently = best.Code; + PhotonHandler.BestRegionCodeInPreferences = best.Code; + + Debug.Log("Found best region: " + best.Code + " ping: " + best.Ping + ". Calling ConnectToRegionMaster() is: " + connectToBest); + + + if (connectToBest) + { + PhotonNetwork.networkingPeer.ConnectToRegionMaster(best.Code); + } + } + + + + #endregion + +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonHandler.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonHandler.cs.meta new file mode 100644 index 0000000..97b4d82 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonHandler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 177bddf229f8d8445a70c0652f03b7df +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonLagSimulationGui.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonLagSimulationGui.cs new file mode 100644 index 0000000..9f54972 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonLagSimulationGui.cs @@ -0,0 +1,97 @@ +#pragma warning disable 1587 +/// \file +/// Part of the [Optional GUI](@ref optionalGui). +#pragma warning restore 1587 + + +using ExitGames.Client.Photon; +using UnityEngine; + + +/// +/// This MonoBehaviour is a basic GUI for the Photon client's network-simulation feature. +/// It can modify lag (fixed delay), jitter (random lag) and packet loss. +/// +/// \ingroup optionalGui +public class PhotonLagSimulationGui : MonoBehaviour +{ + /// Positioning rect for window. + public Rect WindowRect = new Rect(0, 100, 120, 100); + + /// Unity GUI Window ID (must be unique or will cause issues). + public int WindowId = 101; + + /// Shows or hides GUI (does not affect settings). + public bool Visible = true; + + /// The peer currently in use (to set the network simulation). + public PhotonPeer Peer { get; set; } + + public void Start() + { + this.Peer = PhotonNetwork.networkingPeer; + } + + public void OnGUI() + { + if (!this.Visible) + { + return; + } + + if (this.Peer == null) + { + this.WindowRect = GUILayout.Window(this.WindowId, this.WindowRect, this.NetSimHasNoPeerWindow, "Netw. Sim."); + } + else + { + this.WindowRect = GUILayout.Window(this.WindowId, this.WindowRect, this.NetSimWindow, "Netw. Sim."); + } + } + + private void NetSimHasNoPeerWindow(int windowId) + { + GUILayout.Label("No peer to communicate with. "); + } + + private void NetSimWindow(int windowId) + { + GUILayout.Label(string.Format("Rtt:{0,4} +/-{1,3}", this.Peer.RoundTripTime, this.Peer.RoundTripTimeVariance)); + + bool simEnabled = this.Peer.IsSimulationEnabled; + bool newSimEnabled = GUILayout.Toggle(simEnabled, "Simulate"); + if (newSimEnabled != simEnabled) + { + this.Peer.IsSimulationEnabled = newSimEnabled; + } + + float inOutLag = this.Peer.NetworkSimulationSettings.IncomingLag; + GUILayout.Label("Lag " + inOutLag); + inOutLag = GUILayout.HorizontalSlider(inOutLag, 0, 500); + + this.Peer.NetworkSimulationSettings.IncomingLag = (int)inOutLag; + this.Peer.NetworkSimulationSettings.OutgoingLag = (int)inOutLag; + + float inOutJitter = this.Peer.NetworkSimulationSettings.IncomingJitter; + GUILayout.Label("Jit " + inOutJitter); + inOutJitter = GUILayout.HorizontalSlider(inOutJitter, 0, 100); + + this.Peer.NetworkSimulationSettings.IncomingJitter = (int)inOutJitter; + this.Peer.NetworkSimulationSettings.OutgoingJitter = (int)inOutJitter; + + float loss = this.Peer.NetworkSimulationSettings.IncomingLossPercentage; + GUILayout.Label("Loss " + loss); + loss = GUILayout.HorizontalSlider(loss, 0, 10); + + this.Peer.NetworkSimulationSettings.IncomingLossPercentage = (int)loss; + this.Peer.NetworkSimulationSettings.OutgoingLossPercentage = (int)loss; + + // if anything was clicked, the height of this window is likely changed. reduce it to be layouted again next frame + if (GUI.changed) + { + this.WindowRect.height = 100; + } + + GUI.DragWindow(); + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonLagSimulationGui.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonLagSimulationGui.cs.meta new file mode 100644 index 0000000..5a7173b --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonLagSimulationGui.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5867a53c8db0e6745818285bb6b6e1b9 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonNetwork.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonNetwork.cs new file mode 100644 index 0000000..3a47de4 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonNetwork.cs @@ -0,0 +1,3220 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Photon Unity Networking +// +// -------------------------------------------------------------------------------------------------------------------- + + +using System.Diagnostics; +using UnityEngine; +using System; +using System.Collections.Generic; +using ExitGames.Client.Photon; +using UnityEngine.SceneManagement; +using Debug = UnityEngine.Debug; +using Hashtable = ExitGames.Client.Photon.Hashtable; + +#if UNITY_EDITOR +using UnityEditor; +using System.IO; +#endif + + +/// +/// The main class to use the PhotonNetwork plugin. +/// This class is static. +/// +/// \ingroup publicApi +public static class PhotonNetwork +{ + /// Version number of PUN. Also used in GameVersion to separate client version from each other. + public const string versionPUN = "1.80"; + + /// Version string for your this build. Can be used to separate incompatible clients. Sent during connect. + /// This is only sent when you connect so that is also the place you set it usually (e.g. in ConnectUsingSettings). + public static string gameVersion { get; set; } + + /// + /// This Monobehaviour allows Photon to run an Update loop. + /// + internal static readonly PhotonHandler photonMono; + + /// + /// Photon peer class that implements LoadBalancing in PUN. + /// Primary use is internal (by PUN itself). + /// + internal static NetworkingPeer networkingPeer; + + /// + /// The maximum number of assigned PhotonViews per player (or scene). See the [General Documentation](@ref general) topic "Limitations" on how to raise this limitation. + /// + public static readonly int MAX_VIEW_IDS = 1000; // VIEW & PLAYER LIMIT CAN BE EASILY CHANGED, SEE DOCS + + + /// Name of the PhotonServerSettings file (used to load and by PhotonEditor to save new files). + internal const string serverSettingsAssetFile = "PhotonServerSettings"; + + /// Path to the PhotonServerSettings file (used by PhotonEditor). + internal const string serverSettingsAssetPath = "Assets/Photon Unity Networking/Resources/" + PhotonNetwork.serverSettingsAssetFile + ".asset"; + + + /// Serialized server settings, written by the Setup Wizard for use in ConnectUsingSettings. + public static ServerSettings PhotonServerSettings = (ServerSettings)Resources.Load(PhotonNetwork.serverSettingsAssetFile, typeof(ServerSettings)); + + /// Currently used server address (no matter if master or game server). + public static string ServerAddress { get { return (networkingPeer != null) ? networkingPeer.ServerAddress : ""; } } + + /// + /// False until you connected to Photon initially. True in offline mode, while connected to any server and even while switching servers. + /// + public static bool connected + { + get + { + if (offlineMode) + { + return true; + } + + if (networkingPeer == null) + { + return false; + } + + return !networkingPeer.IsInitialConnect && networkingPeer.State != ClientState.PeerCreated && networkingPeer.State != ClientState.Disconnected && networkingPeer.State != ClientState.Disconnecting && networkingPeer.State != ClientState.ConnectingToNameServer; + } + } + + /// + /// True when you called ConnectUsingSettings (or similar) until the low level connection to Photon gets established. + /// + public static bool connecting + { + get { return networkingPeer.IsInitialConnect && !offlineMode; } + } + + /// + /// A refined version of connected which is true only if your connection to the server is ready to accept operations like join, leave, etc. + /// + public static bool connectedAndReady + { + get + { + // connected property will check offlineMode and networkingPeer being null + if (!connected) + { + return false; + } + + if (offlineMode) + { + return true; + } + + switch (connectionStateDetailed) + { + case ClientState.PeerCreated: + case ClientState.Disconnected: + case ClientState.Disconnecting: + case ClientState.Authenticating: + case ClientState.ConnectingToGameserver: + case ClientState.ConnectingToMasterserver: + case ClientState.ConnectingToNameServer: + case ClientState.Joining: + return false; // we are not ready to execute any operations + } + + return true; + } + } + + /// + /// Simplified connection state + /// + public static ConnectionState connectionState + { + get + { + if (offlineMode) + { + return ConnectionState.Connected; + } + + if (networkingPeer == null) + { + return ConnectionState.Disconnected; + } + + switch (networkingPeer.PeerState) + { + case PeerStateValue.Disconnected: + return ConnectionState.Disconnected; + case PeerStateValue.Connecting: + return ConnectionState.Connecting; + case PeerStateValue.Connected: + return ConnectionState.Connected; + case PeerStateValue.Disconnecting: + return ConnectionState.Disconnecting; + case PeerStateValue.InitializingApplication: + return ConnectionState.InitializingApplication; + } + + return ConnectionState.Disconnected; + } + } + + /// + /// Detailed connection state (ignorant of PUN, so it can be "disconnected" while switching servers). + /// + /// + /// In OfflineMode, this is ClientState.Joined (after create/join) or it is ConnectedToMaster in all other cases. + /// + public static ClientState connectionStateDetailed + { + get + { + if (offlineMode) + { + return (offlineModeRoom != null) ? ClientState.Joined : ClientState.ConnectedToMaster; + } + + if (networkingPeer == null) + { + return ClientState.Disconnected; + } + + return networkingPeer.State; + } + } + + /// The server (type) this client is currently connected or connecting to. + /// Photon uses 3 different roles of servers: Name Server, Master Server and Game Server. + public static ServerConnection Server { get { return (PhotonNetwork.networkingPeer != null) ? PhotonNetwork.networkingPeer.Server : ServerConnection.NameServer; } } + + /// + /// A user's authentication values used during connect. + /// + /// + /// Set these before calling Connect if you want custom authentication. + /// These values set the userId, if and how that userId gets verified (server-side), etc.. + /// + /// If authentication fails for any values, PUN will call your implementation of OnCustomAuthenticationFailed(string debugMsg). + /// See: PhotonNetworkingMessage.OnCustomAuthenticationFailed + /// + public static AuthenticationValues AuthValues + { + get { return (networkingPeer != null) ? networkingPeer.AuthValues : null; } + set { if (networkingPeer != null) networkingPeer.AuthValues = value; } + } + + /// + /// Get the room we're currently in. Null if we aren't in any room. + /// + public static Room room + { + get + { + if (isOfflineMode) + { + return offlineModeRoom; + } + + return networkingPeer.CurrentRoom; + } + } + + /// If true, Instantiate methods will check if you are in a room and fail if you are not. + /// + /// Instantiating anything outside of a specific room is very likely to break things. + /// Turn this off only if you know what you do. + public static bool InstantiateInRoomOnly = true; + + /// + /// Network log level. Controls how verbose PUN is. + /// + public static PhotonLogLevel logLevel = PhotonLogLevel.ErrorsOnly; + + /// + /// The local PhotonPlayer. Always available and represents this player. + /// CustomProperties can be set before entering a room and will be synced as well. + /// + public static PhotonPlayer player + { + get + { + if (networkingPeer == null) + { + return null; // Surpress ExitApplication errors + } + + return networkingPeer.LocalPlayer; + } + } + + /// + /// The Master Client of the current room or null (outside of rooms). + /// + /// + /// Can be used as "authoritative" client/player to make descisions, run AI or other. + /// + /// If the current Master Client leaves the room (leave/disconnect), the server will quickly assign someone else. + /// If the current Master Client times out (closed app, lost connection, etc), messages sent to this client are + /// effectively lost for the others! A timeout can take 10 seconds in which no Master Client is active. + /// + /// Implement the method IPunCallbacks.OnMasterClientSwitched to be called when the Master Client switched. + /// + /// Use PhotonNetwork.SetMasterClient, to switch manually to some other player / client. + /// + /// With offlineMode == true, this always returns the PhotonNetwork.player. + /// + public static PhotonPlayer masterClient + { + get + { + if (offlineMode) + { + return PhotonNetwork.player; + } + + if (networkingPeer == null) + { + return null; + } + + return networkingPeer.GetPlayerWithId(networkingPeer.mMasterClientId); + } + } + + /// + /// Set to synchronize the player's nickname with everyone in the room(s) you enter. This sets PhotonNetwork.player.NickName. + /// + /// + /// The playerName is just a nickname and does not have to be unique or backed up with some account.
+ /// Set the value any time (e.g. before you connect) and it will be available to everyone you play with.
+ /// Access the names of players by: PhotonPlayer.NickName.
+ /// PhotonNetwork.otherPlayers is a list of other players - each contains the playerName the remote player set. + ///
+ public static string playerName + { + get + { + return networkingPeer.PlayerName; + } + + set + { + networkingPeer.PlayerName = value; + } + } + + /// The list of players in the current room, including the local player. + /// + /// This list is only valid, while the client is in a room. + /// It automatically gets updated when someone joins or leaves. + /// + /// This can be used to list all players in a room. + /// Each player's PhotonPlayer.customProperties are accessible (set and synchronized via + /// PhotonPlayer.SetCustomProperties). + /// + /// You can use a PhotonPlayer.TagObject to store an arbitrary object for reference. + /// That is not synchronized via the network. + /// + public static PhotonPlayer[] playerList + { + get + { + if (networkingPeer == null) + return new PhotonPlayer[0]; + + return networkingPeer.mPlayerListCopy; + } + } + + /// The list of players in the current room, excluding the local player. + /// + /// This list is only valid, while the client is in a room. + /// It automatically gets updated when someone joins or leaves. + /// + /// This can be used to list all other players in a room. + /// Each player's PhotonPlayer.customProperties are accessible (set and synchronized via + /// PhotonPlayer.SetCustomProperties). + /// + /// You can use a PhotonPlayer.TagObject to store an arbitrary object for reference. + /// That is not synchronized via the network. + /// + public static PhotonPlayer[] otherPlayers + { + get + { + if (networkingPeer == null) + return new PhotonPlayer[0]; + + return networkingPeer.mOtherPlayerListCopy; + } + } + + /// + /// Read-only list of friends, their online status and the room they are in. Null until initialized by a FindFriends call. + /// + /// + /// Do not modify this list! + /// It is internally handled by FindFriends and only available to read the values. + /// The value of FriendListAge tells you how old the data is in milliseconds. + /// + /// Don't get this list more often than useful (> 10 seconds). In best case, keep the list you fetch really short. + /// You could (e.g.) get the full list only once, then request a few updates only for friends who are online. + /// After a while (e.g. 1 minute), you can get the full list again (to update online states). + /// + public static List Friends { get; internal set; } + + /// + /// Age of friend list info (in milliseconds). It's 0 until a friend list is fetched. + /// + public static int FriendsListAge + { + get { return (networkingPeer != null) ? networkingPeer.FriendListAge : 0; } + } + + /// + /// The minimum difference that a Vector2 or Vector3(e.g. a transforms rotation) needs to change before we send it via a PhotonView's OnSerialize/ObservingComponent. + /// + /// + /// Note that this is the sqrMagnitude. E.g. to send only after a 0.01 change on the Y-axix, we use 0.01f*0.01f=0.0001f. As a remedy against float inaccuracy we use 0.000099f instead of 0.0001f. + /// + public static float precisionForVectorSynchronization = 0.000099f; + + /// + /// The minimum angle that a rotation needs to change before we send it via a PhotonView's OnSerialize/ObservingComponent. + /// + public static float precisionForQuaternionSynchronization = 1.0f; + + /// + /// The minimum difference between floats before we send it via a PhotonView's OnSerialize/ObservingComponent. + /// + public static float precisionForFloatSynchronization = 0.01f; + + /// + /// While enabled, the MonoBehaviours on which we call RPCs are cached, avoiding costly GetComponents() calls. + /// + /// + /// RPCs are called on the MonoBehaviours of a target PhotonView. Those have to be found via GetComponents. + /// + /// When set this to true, the list of MonoBehaviours gets cached in each PhotonView. + /// You can use photonView.RefreshRpcMonoBehaviourCache() to manually refresh a PhotonView's + /// list of MonoBehaviours on demand (when a new MonoBehaviour gets added to a networked GameObject, e.g.). + /// + public static bool UseRpcMonoBehaviourCache; + + /// + /// While enabled (true), Instantiate uses PhotonNetwork.PrefabCache to keep game objects in memory (improving instantiation of the same prefab). + /// + /// + /// Setting UsePrefabCache to false during runtime will not clear PrefabCache but will ignore it right away. + /// You could clean and modify the cache yourself. Read its comments. + /// + public static bool UsePrefabCache = true; + + /// + /// An Object Pool can be used to keep and reuse instantiated object instances. It replaced Unity's default Instantiate and Destroy methods. + /// + /// + /// To use a GameObject pool, implement IPunPrefabPool and assign it here. + /// Prefabs are identified by name. + /// + public static IPunPrefabPool PrefabPool { get { return networkingPeer.ObjectPool; } set { networkingPeer.ObjectPool = value; }} + + /// + /// Keeps references to GameObjects for frequent instantiation (out of memory instead of loading the Resources). + /// + /// + /// You should be able to modify the cache anytime you like, except while Instantiate is used. Best do it only in the main-Thread. + /// + public static Dictionary PrefabCache = new Dictionary(); + + /// + /// If not null, this is the (exclusive) list of GameObjects that get called by PUN SendMonoMessage(). + /// + /// + /// For all callbacks defined in PhotonNetworkingMessage, PUN will use SendMonoMessage and + /// call FindObjectsOfType() to find all scripts and GameObjects that might want a callback by PUN. + /// + /// PUN callbacks are not very frequent (in-game, property updates are most frequent) but + /// FindObjectsOfType is time consuming and with a large number of GameObjects, performance might + /// suffer. + /// + /// Optionally, SendMonoMessageTargets can be used to supply a list of target GameObjects. This + /// skips the FindObjectsOfType() but any GameObject that needs callbacks will have to Add itself + /// to this list. + /// + /// If null, the default behaviour is to do a SendMessage on each GameObject with a MonoBehaviour. + /// + public static HashSet SendMonoMessageTargets; + + + /// + /// Defines which classes can contain PUN Callback implementations. + /// + /// + /// This provides the option to optimize your runtime for speed.
+ /// The more specific this Type is, the fewer classes will be checked with reflection for callback methods. + ///
+ public static Type SendMonoMessageTargetType = typeof(MonoBehaviour); + + /// + /// Can be used to skip starting RPCs as Coroutine, which can be a performance issue. + /// + public static bool StartRpcsAsCoroutine = true; + + /// + /// Offline mode can be set to re-use your multiplayer code in singleplayer game modes. + /// When this is on PhotonNetwork will not create any connections and there is near to + /// no overhead. Mostly usefull for reusing RPC's and PhotonNetwork.Instantiate + /// + public static bool offlineMode + { + get + { + return isOfflineMode; + } + + set + { + if (value == isOfflineMode) + { + return; + } + + if (value && connected) + { + Debug.LogError("Can't start OFFLINE mode while connected!"); + return; + } + + if (networkingPeer.PeerState != PeerStateValue.Disconnected) + { + networkingPeer.Disconnect(); // Cleanup (also calls OnLeftRoom to reset stuff) + } + isOfflineMode = value; + if (isOfflineMode) + { + networkingPeer.ChangeLocalID(-1); + NetworkingPeer.SendMonoMessage(PhotonNetworkingMessage.OnConnectedToMaster); + } + else + { + offlineModeRoom = null; + networkingPeer.ChangeLocalID(-1); + } + } + } + + private static bool isOfflineMode = false; + private static Room offlineModeRoom = null; + + + /// Only used in Unity Networking. In PUN, set the number of players in PhotonNetwork.CreateRoom. + [Obsolete("Used for compatibility with Unity networking only.")] + public static int maxConnections; + + /// Defines if all clients in a room should load the same level as the Master Client (if that used PhotonNetwork.LoadLevel). + /// + /// To synchronize the loaded level, the Master Client should use PhotonNetwork.LoadLevel. + /// All clients will load the new scene when they get the update or when they join. + /// + /// Internally, a Custom Room Property is set for the loaded scene. When a client reads that + /// and is not in the same scene yet, it will immediately pause the Message Queue + /// (PhotonNetwork.isMessageQueueRunning = false) and load. When the scene finished loading, + /// PUN will automatically re-enable the Message Queue. + /// + public static bool automaticallySyncScene + { + get + { + return _mAutomaticallySyncScene; + } + set + { + _mAutomaticallySyncScene = value; + if (_mAutomaticallySyncScene && room != null) + { + networkingPeer.LoadLevelIfSynced(); + } + } + } + + private static bool _mAutomaticallySyncScene = false; + + /// + /// This setting defines per room, if network-instantiated GameObjects (with PhotonView) get cleaned up when the creator of it leaves. + /// + /// + /// This setting is done per room. It can't be changed in the room and it will override the settings of individual clients. + /// + /// If room.AutoCleanUp is enabled in a room, the PUN clients will destroy a player's GameObjects on leave. + /// This includes GameObjects manually instantiated (via RPCs, e.g.). + /// When enabled, the server will clean RPCs, instantiated GameObjects and PhotonViews of the leaving player, too. and + /// Players who join after someone left, won't get the events of that player anymore. + /// + /// Under the hood, this setting is stored as a Custom Room Property. + /// Enabled by default. + /// + public static bool autoCleanUpPlayerObjects + { + get + { + return m_autoCleanUpPlayerObjects; + } + set + { + if (room != null) + Debug.LogError("Setting autoCleanUpPlayerObjects while in a room is not supported."); + else m_autoCleanUpPlayerObjects = value; + } + } + + private static bool m_autoCleanUpPlayerObjects = true; + + /// + /// Set in PhotonServerSettings asset. Defines if the PhotonNetwork should join the "lobby" when connected to the Master server. + /// + /// + /// If this is false, OnConnectedToMaster() will be called when connection to the Master is available. + /// OnJoinedLobby() will NOT be called if this is false. + /// + /// Enabled by default. + /// + /// The room listing will not become available. + /// Rooms can be created and joined (randomly) without joining the lobby (and getting sent the room list). + /// + public static bool autoJoinLobby + { + get + { + return PhotonNetwork.PhotonServerSettings.JoinLobby; + } + set + { + PhotonNetwork.PhotonServerSettings.JoinLobby = value; + } + } + + + /// + /// Set in PhotonServerSettings asset. Enable to get a list of active lobbies from the Master Server. + /// + /// + /// Lobby Statistics can be useful if a game uses multiple lobbies and you want + /// to show activity of each to players. + /// + /// This value is stored in PhotonServerSettings. + /// + /// PhotonNetwork.LobbyStatistics is updated when you connect to the Master Server. + /// There is also a callback PunBehaviour. + /// + public static bool EnableLobbyStatistics + { + get + { + return PhotonNetwork.PhotonServerSettings.EnableLobbyStatistics; + } + set + { + PhotonNetwork.PhotonServerSettings.EnableLobbyStatistics = value; + } + } + + /// + /// If turned on, the Master Server will provide information about active lobbies for this application. + /// + /// + /// Lobby Statistics can be useful if a game uses multiple lobbies and you want + /// to show activity of each to players. Per lobby, you get: name, type, room- and player-count. + /// + /// PhotonNetwork.LobbyStatistics is updated when you connect to the Master Server. + /// There is also a callback PunBehaviour.OnLobbyStatisticsUpdate, which you should implement + /// to update your UI (e.g.). + /// + /// Lobby Statistics are not turned on by default. + /// Enable them in the PhotonServerSettings file of the project. + /// + public static List LobbyStatistics + { + get { return PhotonNetwork.networkingPeer.LobbyStatistics; } + // only available to reset the state conveniently. done by state updates of PUN + private set { PhotonNetwork.networkingPeer.LobbyStatistics = value; } + } + + + /// True while this client is in a lobby. + /// + /// Implement IPunCallbacks.OnReceivedRoomListUpdate() for a notification when the list of rooms + /// becomes available or updated. + /// + /// You are automatically leaving any lobby when you join a room! + /// Lobbies only exist on the Master Server (whereas rooms are handled by Game Servers). + /// + public static bool insideLobby + { + get + { + return networkingPeer.insideLobby; + } + } + + /// + /// The lobby that will be used when PUN joins a lobby or creates a game. + /// + /// + /// The default lobby uses an empty string as name. + /// PUN will enter a lobby on the Master Server if autoJoinLobby is set to true. + /// So when you connect or leave a room, PUN automatically gets you into a lobby again. + /// + /// Check PhotonNetwork.insideLobby if the client is in a lobby. + /// (@ref masterServerAndLobby) + /// + public static TypedLobby lobby + { + get { return networkingPeer.lobby; } + set { networkingPeer.lobby = value; } + } + + /// + /// Defines how many times per second PhotonNetwork should send a package. If you change + /// this, do not forget to also change 'sendRateOnSerialize'. + /// + /// + /// Less packages are less overhead but more delay. + /// Setting the sendRate to 50 will create up to 50 packages per second (which is a lot!). + /// Keep your target platform in mind: mobile networks are slower and less reliable. + /// + public static int sendRate + { + get + { + return 1000 / sendInterval; + } + + set + { + sendInterval = 1000 / value; + if (photonMono != null) + { + photonMono.updateInterval = sendInterval; + } + + if (value < sendRateOnSerialize) + { + // sendRateOnSerialize needs to be <= sendRate + sendRateOnSerialize = value; + } + } + } + + /// + /// Defines how many times per second OnPhotonSerialize should be called on PhotonViews. + /// + /// + /// Choose this value in relation to PhotonNetwork.sendRate. OnPhotonSerialize will create updates and messages to be sent.
+ /// A lower rate takes up less performance but will cause more lag. + ///
+ public static int sendRateOnSerialize + { + get + { + return 1000 / sendIntervalOnSerialize; + } + + set + { + if (value > sendRate) + { + Debug.LogError("Error: Can not set the OnSerialize rate higher than the overall SendRate."); + value = sendRate; + } + + sendIntervalOnSerialize = 1000 / value; + if (photonMono != null) + { + photonMono.updateIntervalOnSerialize = sendIntervalOnSerialize; + } + } + } + + private static int sendInterval = 50; // in miliseconds. + + private static int sendIntervalOnSerialize = 100; // in miliseconds. I.e. 100 = 100ms which makes 10 times/second + + /// + /// Can be used to pause dispatching of incoming evtents (RPCs, Instantiates and anything else incoming). + /// + /// + /// While IsMessageQueueRunning == false, the OnPhotonSerializeView calls are not done and nothing is sent by + /// a client. Also, incoming messages will be queued until you re-activate the message queue. + /// + /// This can be useful if you first want to load a level, then go on receiving data of PhotonViews and RPCs. + /// The client will go on receiving and sending acknowledgements for incoming packages and your RPCs/Events. + /// This adds "lag" and can cause issues when the pause is longer, as all incoming messages are just queued. + /// + public static bool isMessageQueueRunning + { + get + { + return m_isMessageQueueRunning; + } + + set + { + if (value) PhotonHandler.StartFallbackSendAckThread(); + networkingPeer.IsSendingOnlyAcks = !value; + m_isMessageQueueRunning = value; + } + } + + /// Backup for property isMessageQueueRunning. + private static bool m_isMessageQueueRunning = true; + + /// + /// Used once per dispatch to limit unreliable commands per channel (so after a pause, many channels can still cause a lot of unreliable commands) + /// + public static int unreliableCommandsLimit + { + get + { + return networkingPeer.LimitOfUnreliableCommands; + } + + set + { + networkingPeer.LimitOfUnreliableCommands = value; + } + } + + /// + /// Photon network time, synched with the server. + /// + /// + /// v1.55
+ /// This time value depends on the server's Environment.TickCount. It is different per server + /// but inside a Room, all clients should have the same value (Rooms are on one server only).
+ /// This is not a DateTime!
+ /// + /// Use this value with care:
+ /// It can start with any positive value.
+ /// It will "wrap around" from 4294967.295 to 0! + ///
+ public static double time + { + get + { + uint u = (uint)ServerTimestamp; + double t = u; + return t / 1000; + } + } + + /// + /// The current server's millisecond timestamp. + /// + /// + /// This can be useful to sync actions and events on all clients in one room. + /// The timestamp is based on the server's Environment.TickCount. + /// + /// It will overflow from a positive to a negative value every so often, so + /// be careful to use only time-differences to check the time delta when things + /// happen. + /// + /// This is the basis for PhotonNetwork.time. + /// + public static int ServerTimestamp + { + get + { + if (offlineMode) + { + if (UsePreciseTimer && startupStopwatch != null && startupStopwatch.IsRunning) + { + return (int)startupStopwatch.ElapsedMilliseconds; + } + return Environment.TickCount; + } + + return networkingPeer.ServerTimeInMilliSeconds; + } + } + + /// If true, PUN will use a Stopwatch to measure time since start/connect. This is more precise than the Environment.TickCount used by default. + private static bool UsePreciseTimer = false; + static Stopwatch startupStopwatch; + + /// + /// Defines how many seconds PUN keeps the connection, after Unity's OnApplicationPause(true) call. Default: 60 seconds. + /// + /// + /// It's best practice to disconnect inactive apps/connections after a while but to also allow users to take calls, etc.. + /// We think a reasonable backgroung timeout is 60 seconds. + /// + /// To handle the timeout, implement: OnDisconnectedFromPhoton(), as usual. + /// Your application will "notice" the background disconnect when it becomes active again (running the Update() loop). + /// + /// If you need to separate this case from others, you need to track if the app was in the background + /// (there is no special callback by PUN). + /// + /// A value below 0.1 seconds will disable this timeout (careful: connections can be kept indefinitely). + /// + /// + /// Info: + /// PUN is running a "fallback thread" to send ACKs to the server, even when Unity is not calling Update() regularly. + /// This helps keeping the connection while loading scenes and assets and when the app is in the background. + /// + /// Note: + /// Some platforms (e.g. iOS) don't allow to keep a connection while the app is in background. + /// In those cases, this value does not change anything, the app immediately loses connection in background. + /// + /// Unity's OnApplicationPause() callback is broken in some exports (Android) of some Unity versions. + /// Make sure OnApplicationPause() gets the callbacks you'd expect on the platform you target! + /// Check PhotonHandler.OnApplicationPause(bool pause), to see the implementation. + /// + public static float BackgroundTimeout = 60.0f; + + /// + /// Are we the master client? + /// + public static bool isMasterClient + { + get + { + if (offlineMode) + { + return true; + } + else + { + return networkingPeer.mMasterClientId == player.ID; + } + } + } + + /// Is true while being in a room (connectionStateDetailed == ClientState.Joined). + /// + /// Many actions can only be executed in a room, like Instantiate or Leave, etc. + /// You can join a room in offline mode, too. + /// + public static bool inRoom + { + get + { + // in offline mode, you can be in a room too and connectionStateDetailed then returns Joined like on online mode! + return connectionStateDetailed == ClientState.Joined; + } + } + + /// + /// True if we are in a room (client) and NOT the room's masterclient + /// + public static bool isNonMasterClientInRoom + { + get + { + return !isMasterClient && room != null; + } + } + + /// + /// The count of players currently looking for a room (available on MasterServer in 5sec intervals). + /// + public static int countOfPlayersOnMaster + { + get + { + return networkingPeer.PlayersOnMasterCount; + } + } + + /// + /// Count of users currently playing your app in some room (sent every 5sec by Master Server). Use playerList.Count to get the count of players in the room you're in! + /// + public static int countOfPlayersInRooms + { + get + { + return networkingPeer.PlayersInRoomsCount; + } + } + + /// + /// The count of players currently using this application (available on MasterServer in 5sec intervals). + /// + public static int countOfPlayers + { + get + { + return networkingPeer.PlayersInRoomsCount + networkingPeer.PlayersOnMasterCount; + } + } + + /// + /// The count of rooms currently in use (available on MasterServer in 5sec intervals). + /// + /// + /// While inside the lobby you can also check the count of listed rooms as: PhotonNetwork.GetRoomList().Length. + /// Since PUN v1.25 this is only based on the statistic event Photon sends (counting all rooms). + /// + public static int countOfRooms + { + get + { + return networkingPeer.RoomsCount; + } + } + + /// + /// Enables or disables the collection of statistics about this client's traffic. + /// + /// + /// If you encounter issues with clients, the traffic stats are a good starting point to find solutions. + /// Only with enabled stats, you can use GetVitalStats + /// + public static bool NetworkStatisticsEnabled + { + get + { + return networkingPeer.TrafficStatsEnabled; + } + + set + { + networkingPeer.TrafficStatsEnabled = value; + } + } + + /// + /// Count of commands that got repeated (due to local repeat-timing before an ACK was received). + /// + /// + /// If this value increases a lot, there is a good chance that a timeout disconnect will happen due to bad conditions. + /// + public static int ResentReliableCommands + { + get { return networkingPeer.ResentReliableCommands; } + } + + /// Crc checks can be useful to detect and avoid issues with broken datagrams. Can be enabled while not connected. + public static bool CrcCheckEnabled + { + get { return networkingPeer.CrcEnabled; } + set + { + if (!connected && !connecting) + { + networkingPeer.CrcEnabled = value; + } + else + { + Debug.Log("Can't change CrcCheckEnabled while being connected. CrcCheckEnabled stays " + networkingPeer.CrcEnabled); + } + } + } + + /// If CrcCheckEnabled, this counts the incoming packages that don't have a valid CRC checksum and got rejected. + public static int PacketLossByCrcCheck + { + get { return networkingPeer.PacketLossByCrc; } + } + + /// Defines the number of times a reliable message can be resent before not getting an ACK for it will trigger a disconnect. Default: 5. + /// Less resends mean quicker disconnects, while more can lead to much more lag without helping. Min: 3. Max: 10. + public static int MaxResendsBeforeDisconnect + { + get { return networkingPeer.SentCountAllowance; } + set + { + if (value < 3) value = 3; + if (value > 10) value = 10; + networkingPeer.SentCountAllowance = value; + } + } + + /// In case of network loss, reliable messages can be repeated quickly up to 3 times. + /// + /// When reliable messages get lost more than once, subsequent repeats are delayed a bit + /// to allow the network to recover.
+ /// With this option, the repeats 2 and 3 can be sped up. This can help avoid timeouts but + /// also it increases the speed in which gaps are closed.
+ /// When you set this, increase PhotonNetwork.MaxResendsBeforeDisconnect to 6 or 7. + ///
+ public static int QuickResends + { + get { return networkingPeer.QuickResendAttempts; } + set + { + if (value < 0) value = 0; + if (value > 3) value = 3; + networkingPeer.QuickResendAttempts = (byte)value; + } + } + + /// + /// Defines the delegate usable in OnEventCall. + /// + /// Any eventCode < 200 will be forwarded to your delegate(s). + /// The code assigend to the incoming event. + /// The content the sender put into the event. + /// The ID of the player who sent the event. It might be 0, if the "room" sent the event. + public delegate void EventCallback(byte eventCode, object content, int senderId); + + /// Register your RaiseEvent handling methods here by using "+=". + /// Any eventCode < 200 will be forwarded to your delegate(s). + /// + public static EventCallback OnEventCall; + + + internal static int lastUsedViewSubId = 0; // each player only needs to remember it's own (!) last used subId to speed up assignment + internal static int lastUsedViewSubIdStatic = 0; // per room, the master is able to instantiate GOs. the subId for this must be unique too + internal static List manuallyAllocatedViewIds = new List(); + + /// + /// Static constructor used for basic setup. + /// + static PhotonNetwork() + { + #if UNITY_EDITOR + if (PhotonServerSettings == null) + { + // create PhotonServerSettings + CreateSettings(); + } + + if (!EditorApplication.isPlaying && !EditorApplication.isPlayingOrWillChangePlaymode) + { + //Debug.Log(string.Format("PhotonNetwork.ctor() Not playing {0} {1}", UnityEditor.EditorApplication.isPlaying, UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode)); + return; + } + + // This can happen when you recompile a script IN play made + // This helps to surpress some errors, but will not fix breaking + PhotonHandler[] photonHandlers = GameObject.FindObjectsOfType(typeof(PhotonHandler)) as PhotonHandler[]; + if (photonHandlers != null && photonHandlers.Length > 0) + { + Debug.LogWarning("Unity recompiled. Connection gets closed and replaced. You can connect as 'new' client."); + foreach (PhotonHandler photonHandler in photonHandlers) + { + //Debug.Log("Handler: " + photonHandler + " photonHandler.gameObject: " + photonHandler.gameObject); + photonHandler.gameObject.hideFlags = 0; + GameObject.DestroyImmediate(photonHandler.gameObject); + Component.DestroyImmediate(photonHandler); + } + } + #endif + + if (PhotonServerSettings != null) + { + Application.runInBackground = PhotonServerSettings.RunInBackground; + } + + // Set up a MonoBehaviour to run Photon, and hide it + GameObject photonGO = new GameObject(); + photonMono = (PhotonHandler)photonGO.AddComponent(); + photonGO.name = "PhotonMono"; + photonGO.hideFlags = HideFlags.HideInHierarchy; + + + // Set up the NetworkingPeer and use protocol of PhotonServerSettings + ConnectionProtocol protocol = PhotonNetwork.PhotonServerSettings.Protocol; + networkingPeer = new NetworkingPeer(string.Empty, protocol); + networkingPeer.QuickResendAttempts = 2; + networkingPeer.SentCountAllowance = 7; + + + #if UNITY_XBOXONE + Debug.Log("UNITY_XBOXONE is defined: Using AuthMode 'AuthOnceWss' and EncryptionMode 'DatagramEncryption'."); + if (!PhotonPeer.NativeDatagramEncrypt) + { + Debug.LogError("XB1 builds need a Photon3Unity3d.dll which uses the native PhotonEncryptorPlugin. This dll does not!"); + } + + networkingPeer.AuthMode = AuthModeOption.AuthOnceWss; + networkingPeer.EncryptionMode = EncryptionMode.DatagramEncryption; + #endif + + if (UsePreciseTimer) + { + Debug.Log("Using Stopwatch as precision timer for PUN."); + startupStopwatch = new Stopwatch(); + startupStopwatch.Start(); + networkingPeer.LocalMsTimestampDelegate = () => (int)startupStopwatch.ElapsedMilliseconds; + } + + // Local player + CustomTypes.Register(); + } + + /// + /// While offline, the network protocol can be switched (which affects the ports you can use to connect). + /// + /// + /// When you switch the protocol, make sure to also switch the port for the master server. Default ports are: + /// TCP: 4530 + /// UDP: 5055 + /// + /// This could look like this:
+ /// Connect(serverAddress, , appID, gameVersion) + /// + /// Or when you use ConnectUsingSettings(), the PORT in the settings can be switched like so:
+ /// PhotonNetwork.PhotonServerSettings.ServerPort = 4530; + /// + /// The current protocol can be read this way:
+ /// PhotonNetwork.networkingPeer.UsedProtocol + /// + /// This does not work with the native socket plugin of PUN+ on mobile! + ///
+ /// Network protocol to use as low level connection. UDP is default. TCP is not available on all platforms (see remarks). + public static void SwitchToProtocol(ConnectionProtocol cp) + { + // Debug.Log("SwitchToProtocol: " + cp + " PhotonNetwork.connected: " + PhotonNetwork.connected); + networkingPeer.TransportProtocol = cp; + } + + + /// Connect to Photon as configured in the editor (saved in PhotonServerSettings file). + /// + /// This method will disable offlineMode (which won't destroy any instantiated GOs) and it + /// will set isMessageQueueRunning to true. + /// + /// Your server configuration is created by the PUN Wizard and contains the AppId and + /// region for Photon Cloud games and the server address if you host Photon yourself. + /// These settings usually don't change often. + /// + /// To ignore the config file and connect anywhere call: PhotonNetwork.ConnectToMaster. + /// + /// To connect to the Photon Cloud, a valid AppId must be in the settings file (shown in the Photon Cloud Dashboard). + /// https://www.photonengine.com/dashboard + /// + /// Connecting to the Photon Cloud might fail due to: + /// - Invalid AppId (calls: OnFailedToConnectToPhoton(). check exact AppId value) + /// - Network issues (calls: OnFailedToConnectToPhoton()) + /// - Invalid region (calls: OnConnectionFail() with DisconnectCause.InvalidRegion) + /// - Subscription CCU limit reached (calls: OnConnectionFail() with DisconnectCause.MaxCcuReached. also calls: OnPhotonMaxCccuReached()) + /// + /// More about the connection limitations: + /// http://doc.exitgames.com/en/pun + /// + /// This client's version number. Users are separated from each other by gameversion (which allows you to make breaking changes). + public static bool ConnectUsingSettings(string gameVersion) + { + if (networkingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("ConnectUsingSettings() failed. Can only connect while in state 'Disconnected'. Current state: " + networkingPeer.PeerState); + return false; + } + if (PhotonServerSettings == null) + { + Debug.LogError("Can't connect: Loading settings failed. ServerSettings asset must be in any 'Resources' folder as: " + serverSettingsAssetFile); + return false; + } + if (PhotonServerSettings.HostType == ServerSettings.HostingOption.NotSet) + { + Debug.LogError("You did not select a Hosting Type in your PhotonServerSettings. Please set it up or don't use ConnectUsingSettings()."); + return false; + } + + PhotonNetwork.logLevel = PhotonServerSettings.PunLogging; + PhotonNetwork.networkingPeer.DebugOut = PhotonServerSettings.NetworkLogging; + + SwitchToProtocol(PhotonServerSettings.Protocol); + networkingPeer.SetApp(PhotonServerSettings.AppID, gameVersion); + + if (PhotonServerSettings.HostType == ServerSettings.HostingOption.OfflineMode) + { + offlineMode = true; + return true; + } + + if (offlineMode) + { + // someone can set offlineMode in code and then call ConnectUsingSettings() with non-offline settings. Warning for that case: + Debug.LogWarning("ConnectUsingSettings() disabled the offline mode. No longer offline."); + } + + offlineMode = false; // Cleanup offline mode + isMessageQueueRunning = true; + networkingPeer.IsInitialConnect = true; + + if (PhotonServerSettings.HostType == ServerSettings.HostingOption.SelfHosted) + { + networkingPeer.IsUsingNameServer = false; + networkingPeer.MasterServerAddress = (PhotonServerSettings.ServerPort == 0) ? PhotonServerSettings.ServerAddress : PhotonServerSettings.ServerAddress + ":" + PhotonServerSettings.ServerPort; + + return networkingPeer.Connect(networkingPeer.MasterServerAddress, ServerConnection.MasterServer); + } + + if (PhotonServerSettings.HostType == ServerSettings.HostingOption.BestRegion) + { + return ConnectToBestCloudServer(gameVersion); + } + + return networkingPeer.ConnectToRegionMaster(PhotonServerSettings.PreferredRegion); + } + + /// Connect to a Photon Master Server by address, port, appID and game(client) version. + /// + /// To connect to the Photon Cloud, a valid AppId must be in the settings file (shown in the Photon Cloud Dashboard). + /// https://www.photonengine.com/dashboard + /// + /// Connecting to the Photon Cloud might fail due to: + /// - Invalid AppId (calls: OnFailedToConnectToPhoton(). check exact AppId value) + /// - Network issues (calls: OnFailedToConnectToPhoton()) + /// - Invalid region (calls: OnConnectionFail() with DisconnectCause.InvalidRegion) + /// - Subscription CCU limit reached (calls: OnConnectionFail() with DisconnectCause.MaxCcuReached. also calls: OnPhotonMaxCccuReached()) + /// + /// More about the connection limitations: + /// http://doc.exitgames.com/en/pun + /// + /// The server's address (either your own or Photon Cloud address). + /// The server's port to connect to. + /// Your application ID (Photon Cloud provides you with a GUID for your game). + /// This client's version number. Users are separated by gameversion (which allows you to make breaking changes). + public static bool ConnectToMaster(string masterServerAddress, int port, string appID, string gameVersion) + { + if (networkingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("ConnectToMaster() failed. Can only connect while in state 'Disconnected'. Current state: " + networkingPeer.PeerState); + return false; + } + + if (offlineMode) + { + offlineMode = false; // Cleanup offline mode + Debug.LogWarning("ConnectToMaster() disabled the offline mode. No longer offline."); + } + + if (!isMessageQueueRunning) + { + isMessageQueueRunning = true; + Debug.LogWarning("ConnectToMaster() enabled isMessageQueueRunning. Needs to be able to dispatch incoming messages."); + } + + networkingPeer.SetApp(appID, gameVersion); + networkingPeer.IsUsingNameServer = false; + networkingPeer.IsInitialConnect = true; + networkingPeer.MasterServerAddress = (port == 0) ? masterServerAddress : masterServerAddress + ":" + port; + + return networkingPeer.Connect(networkingPeer.MasterServerAddress, ServerConnection.MasterServer); + } + + /// Can be used to reconnect to the master server after a disconnect. + /// + /// After losing connection, you can use this to connect a client to the region Master Server again. + /// Cache the room name you're in and use ReJoin(roomname) to return to a game. + /// Common use case: Press the Lock Button on a iOS device and you get disconnected immediately. + /// + public static bool Reconnect() + { + if (string.IsNullOrEmpty(networkingPeer.MasterServerAddress)) + { + Debug.LogWarning("Reconnect() failed. It seems the client wasn't connected before?! Current state: " + networkingPeer.PeerState); + return false; + } + + if (networkingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("Reconnect() failed. Can only connect while in state 'Disconnected'. Current state: " + networkingPeer.PeerState); + return false; + } + + if (offlineMode) + { + offlineMode = false; // Cleanup offline mode + Debug.LogWarning("Reconnect() disabled the offline mode. No longer offline."); + } + + if (!isMessageQueueRunning) + { + isMessageQueueRunning = true; + Debug.LogWarning("Reconnect() enabled isMessageQueueRunning. Needs to be able to dispatch incoming messages."); + } + + networkingPeer.IsUsingNameServer = false; + networkingPeer.IsInitialConnect = false; + return networkingPeer.ReconnectToMaster(); + } + + + /// When the client lost connection during gameplay, this method attempts to reconnect and rejoin the room. + /// + /// This method re-connects directly to the game server which was hosting the room PUN was in before. + /// If the room was shut down in the meantime, PUN will call OnPhotonJoinRoomFailed and return this client to the Master Server. + /// + /// Check the return value, if this client will attempt a reconnect and rejoin (if the conditions are met). + /// If ReconnectAndRejoin returns false, you can still attempt a Reconnect and ReJoin. + /// + /// Similar to PhotonNetwork.ReJoin, this requires you to use unique IDs per player (the UserID). + /// + /// False, if there is no known room or game server to return to. Then, this client does not attempt the ReconnectAndRejoin. + public static bool ReconnectAndRejoin() + { + if (networkingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("ReconnectAndRejoin() failed. Can only connect while in state 'Disconnected'. Current state: " + networkingPeer.PeerState); + return false; + } + if (offlineMode) + { + offlineMode = false; // Cleanup offline mode + Debug.LogWarning("ReconnectAndRejoin() disabled the offline mode. No longer offline."); + } + + if (string.IsNullOrEmpty(networkingPeer.GameServerAddress)) + { + Debug.LogWarning("ReconnectAndRejoin() failed. It seems the client wasn't connected to a game server before (no address)."); + return false; + } + if (networkingPeer.enterRoomParamsCache == null) + { + Debug.LogWarning("ReconnectAndRejoin() failed. It seems the client doesn't have any previous room to re-join."); + return false; + } + + if (!isMessageQueueRunning) + { + isMessageQueueRunning = true; + Debug.LogWarning("ReconnectAndRejoin() enabled isMessageQueueRunning. Needs to be able to dispatch incoming messages."); + } + + networkingPeer.IsUsingNameServer = false; + networkingPeer.IsInitialConnect = false; + return networkingPeer.ReconnectAndRejoin(); + } + + + /// + /// Connect to the Photon Cloud region with the lowest ping (on platforms that support Unity's Ping). + /// + /// + /// Will save the result of pinging all cloud servers in PlayerPrefs. Calling this the first time can take +-2 seconds. + /// The ping result can be overridden via PhotonNetwork.OverrideBestCloudServer(..) + /// This call can take up to 2 seconds if it is the first time you are using this, all cloud servers will be pinged to check for the best region. + /// + /// The PUN Setup Wizard stores your appID in a settings file and applies a server address/port. + /// To connect to the Photon Cloud, a valid AppId must be in the settings file (shown in the Photon Cloud Dashboard). + /// https://www.photonengine.com/dashboard + /// + /// Connecting to the Photon Cloud might fail due to: + /// - Invalid AppId (calls: OnFailedToConnectToPhoton(). check exact AppId value) + /// - Network issues (calls: OnFailedToConnectToPhoton()) + /// - Invalid region (calls: OnConnectionFail() with DisconnectCause.InvalidRegion) + /// - Subscription CCU limit reached (calls: OnConnectionFail() with DisconnectCause.MaxCcuReached. also calls: OnPhotonMaxCccuReached()) + /// + /// More about the connection limitations: + /// http://doc.exitgames.com/en/pun + /// + /// This client's version number. Users are separated from each other by gameversion (which allows you to make breaking changes). + /// If this client is going to connect to cloud server based on ping. Even if true, this does not guarantee a connection but the attempt is being made. + public static bool ConnectToBestCloudServer(string gameVersion) + { + if (networkingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("ConnectToBestCloudServer() failed. Can only connect while in state 'Disconnected'. Current state: " + networkingPeer.PeerState); + return false; + } + + if (PhotonServerSettings == null) + { + Debug.LogError("Can't connect: Loading settings failed. ServerSettings asset must be in any 'Resources' folder as: " + PhotonNetwork.serverSettingsAssetFile); + return false; + } + + if (PhotonServerSettings.HostType == ServerSettings.HostingOption.OfflineMode) + { + return PhotonNetwork.ConnectUsingSettings(gameVersion); + } + + networkingPeer.IsInitialConnect = true; + networkingPeer.SetApp(PhotonServerSettings.AppID, gameVersion); + + CloudRegionCode bestFromPrefs = PhotonHandler.BestRegionCodeInPreferences; + if (bestFromPrefs != CloudRegionCode.none) + { + Debug.Log("Best region found in PlayerPrefs. Connecting to: " + bestFromPrefs); + return networkingPeer.ConnectToRegionMaster(bestFromPrefs); + } + + bool couldConnect = PhotonNetwork.networkingPeer.ConnectToNameServer(); + return couldConnect; + } + + + /// + /// Connects to the Photon Cloud region of choice. + /// + public static bool ConnectToRegion(CloudRegionCode region, string gameVersion) + { + if (networkingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("ConnectToRegion() failed. Can only connect while in state 'Disconnected'. Current state: " + networkingPeer.PeerState); + return false; + } + + if (PhotonServerSettings == null) + { + Debug.LogError("Can't connect: ServerSettings asset must be in any 'Resources' folder as: " + PhotonNetwork.serverSettingsAssetFile); + return false; + } + + if (PhotonServerSettings.HostType == ServerSettings.HostingOption.OfflineMode) + { + return PhotonNetwork.ConnectUsingSettings(gameVersion); + } + + networkingPeer.IsInitialConnect = true; + networkingPeer.SetApp(PhotonServerSettings.AppID, gameVersion); + + if (region != CloudRegionCode.none) + { + Debug.Log("ConnectToRegion: " + region); + return networkingPeer.ConnectToRegionMaster(region); + } + + return false; + } + + /// Overwrites the region that is used for ConnectToBestCloudServer(string gameVersion). + /// + /// This will overwrite the result of pinging all cloud servers.
+ /// Use this to allow your users to save a manually selected region in the player preferences.
+ /// Note: You can also use PhotonNetwork.ConnectToRegion to (temporarily) connect to a specific region. + ///
+ public static void OverrideBestCloudServer(CloudRegionCode region) + { + PhotonHandler.BestRegionCodeInPreferences = region; + } + + /// Pings all cloud servers again to find the one with best ping (currently). + public static void RefreshCloudServerRating() + { + throw new NotImplementedException("not available at the moment"); + } + + + /// + /// Resets the traffic stats and re-enables them. + /// + public static void NetworkStatisticsReset() + { + networkingPeer.TrafficStatsReset(); + } + + + /// + /// Only available when NetworkStatisticsEnabled was used to gather some stats. + /// + /// A string with vital networking statistics. + public static string NetworkStatisticsToString() + { + if (networkingPeer == null || offlineMode) + { + return "Offline or in OfflineMode. No VitalStats available."; + } + + return networkingPeer.VitalStatsToString(false); + } + + /// + /// Used for compatibility with Unity networking only. Encryption is automatically initialized while connecting. + /// + [Obsolete("Used for compatibility with Unity networking only. Encryption is automatically initialized while connecting.")] + public static void InitializeSecurity() + { + return; + } + + /// + /// Helper function which is called inside this class to erify if certain functions can be used (e.g. RPC when not connected) + /// + /// + private static bool VerifyCanUseNetwork() + { + if (connected) + { + return true; + } + + Debug.LogError("Cannot send messages when not connected. Either connect to Photon OR use offline mode!"); + return false; + } + + /// + /// Makes this client disconnect from the photon server, a process that leaves any room and calls OnDisconnectedFromPhoton on completion. + /// + /// + /// When you disconnect, the client will send a "disconnecting" message to the server. This speeds up leave/disconnect + /// messages for players in the same room as you (otherwise the server would timeout this client's connection). + /// When used in offlineMode, the state-change and event-call OnDisconnectedFromPhoton are immediate. + /// Offline mode is set to false as well. + /// Once disconnected, the client can connect again. Use ConnectUsingSettings. + /// + public static void Disconnect() + { + if (offlineMode) + { + offlineMode = false; + offlineModeRoom = null; + networkingPeer.State = ClientState.Disconnecting; + networkingPeer.OnStatusChanged(StatusCode.Disconnect); + return; + } + + if (networkingPeer == null) + { + return; // Surpress error when quitting playmode in the editor + } + + networkingPeer.Disconnect(); + } + + /// + /// Requests the rooms and online status for a list of friends and saves the result in PhotonNetwork.Friends. + /// + /// + /// Works only on Master Server to find the rooms played by a selected list of users. + /// + /// The result will be stored in PhotonNetwork.Friends when available. + /// That list is initialized on first use of OpFindFriends (before that, it is null). + /// To refresh the list, call FindFriends again (in 5 seconds or 10 or 20). + /// + /// Users identify themselves by setting a unique userId in the PhotonNetwork.AuthValues. + /// See remarks of AuthenticationValues for info about how this is set and used. + /// + /// The list of friends must be fetched from some other source (not provided by Photon). + /// + /// + /// Internal: + /// The server response includes 2 arrays of info (each index matching a friend from the request): + /// ParameterCode.FindFriendsResponseOnlineList = bool[] of online states + /// ParameterCode.FindFriendsResponseRoomIdList = string[] of room names (empty string if not in a room) + /// + /// Array of friend (make sure to use unique playerName or AuthValues). + /// If the operation could be sent (requires connection, only one request is allowed at any time). Always false in offline mode. + public static bool FindFriends(string[] friendsToFind) + { + if (networkingPeer == null || isOfflineMode) + { + return false; + } + + return networkingPeer.OpFindFriends(friendsToFind); + } + + + /// + /// Creates a room with given name but fails if this room(name) is existing already. Creates random name for roomName null. + /// + /// + /// If you don't want to create a unique room-name, pass null or "" as name and the server will assign a roomName (a GUID as string). + /// + /// The created room is automatically placed in the currently used lobby (if any) or the default-lobby if you didn't explicitly join one. + /// + /// Call this only on the master server. + /// Internally, the master will respond with a server-address (and roomName, if needed). Both are used internally + /// to switch to the assigned game server and roomName. + /// + /// PhotonNetwork.autoCleanUpPlayerObjects will become this room's AutoCleanUp property and that's used by all clients that join this room. + /// + /// Unique name of the room to create. + /// If the operation got queued and will be sent. + public static bool CreateRoom(string roomName) + { + return CreateRoom(roomName, null, null, null); + } + + /// + /// Creates a room but fails if this room is existing already. Can only be called on Master Server. + /// + /// + /// When successful, this calls the callbacks OnCreatedRoom and OnJoinedRoom (the latter, cause you join as first player). + /// If the room can't be created (because it exists already), OnPhotonCreateRoomFailed gets called. + /// + /// If you don't want to create a unique room-name, pass null or "" as name and the server will assign a roomName (a GUID as string). + /// + /// Rooms can be created in any number of lobbies. Those don't have to exist before you create a room in them (they get + /// auto-created on demand). Lobbies can be useful to split room lists on the server-side already. That can help keep the room + /// lists short and manageable. + /// If you set a typedLobby parameter, the room will be created in that lobby (no matter if you are active in any). + /// If you don't set a typedLobby, the room is automatically placed in the currently active lobby (if any) or the + /// default-lobby. + /// + /// Call this only on the master server. + /// Internally, the master will respond with a server-address (and roomName, if needed). Both are used internally + /// to switch to the assigned game server and roomName. + /// + /// PhotonNetwork.autoCleanUpPlayerObjects will become this room's autoCleanUp property and that's used by all clients that join this room. + /// + /// Unique name of the room to create. Pass null or "" to make the server generate a name. + /// Common options for the room like MaxPlayers, initial custom room properties and similar. See RoomOptions type.. + /// If null, the room is automatically created in the currently used lobby (which is "default" when you didn't join one explicitly). + /// If the operation got queued and will be sent. + public static bool CreateRoom(string roomName, RoomOptions roomOptions, TypedLobby typedLobby) + { + return CreateRoom(roomName, roomOptions, typedLobby, null); + } + + /// + /// Creates a room but fails if this room is existing already. Can only be called on Master Server. + /// + /// + /// When successful, this calls the callbacks OnCreatedRoom and OnJoinedRoom (the latter, cause you join as first player). + /// If the room can't be created (because it exists already), OnPhotonCreateRoomFailed gets called. + /// + /// If you don't want to create a unique room-name, pass null or "" as name and the server will assign a roomName (a GUID as string). + /// + /// Rooms can be created in any number of lobbies. Those don't have to exist before you create a room in them (they get + /// auto-created on demand). Lobbies can be useful to split room lists on the server-side already. That can help keep the room + /// lists short and manageable. + /// If you set a typedLobby parameter, the room will be created in that lobby (no matter if you are active in any). + /// If you don't set a typedLobby, the room is automatically placed in the currently active lobby (if any) or the + /// default-lobby. + /// + /// Call this only on the master server. + /// Internally, the master will respond with a server-address (and roomName, if needed). Both are used internally + /// to switch to the assigned game server and roomName. + /// + /// PhotonNetwork.autoCleanUpPlayerObjects will become this room's autoCleanUp property and that's used by all clients that join this room. + /// + /// You can define an array of expectedUsers, to block player slots in the room for these users. + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// + /// Unique name of the room to create. Pass null or "" to make the server generate a name. + /// Common options for the room like MaxPlayers, initial custom room properties and similar. See RoomOptions type.. + /// If null, the room is automatically created in the currently used lobby (which is "default" when you didn't join one explicitly). + /// Optional list of users (by UserId) who are expected to join this game and who you want to block a slot for. + /// If the operation got queued and will be sent. + public static bool CreateRoom(string roomName, RoomOptions roomOptions, TypedLobby typedLobby, string[] expectedUsers) + { + if (offlineMode) + { + if (offlineModeRoom != null) + { + Debug.LogError("CreateRoom failed. In offline mode you still have to leave a room to enter another."); + return false; + } + EnterOfflineRoom(roomName, roomOptions, true); + return true; + } + if (networkingPeer.Server != ServerConnection.MasterServer || !connectedAndReady) + { + Debug.LogError("CreateRoom failed. Client is not on Master Server or not yet ready to call operations. Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + + typedLobby = typedLobby ?? ((networkingPeer.insideLobby) ? networkingPeer.lobby : null); // use given lobby, or active lobby (if any active) or none + + EnterRoomParams opParams = new EnterRoomParams(); + opParams.RoomName = roomName; + opParams.RoomOptions = roomOptions; + opParams.Lobby = typedLobby; + opParams.ExpectedUsers = expectedUsers; + + return networkingPeer.OpCreateGame(opParams); + } + + + /// Join room by roomname and on success calls OnJoinedRoom(). This is not affected by lobbies. + /// + /// On success, the method OnJoinedRoom() is called on any script. You can implement it to react to joining a room. + /// + /// JoinRoom fails if the room is either full or no longer available (it might become empty while you attempt to join). + /// Implement OnPhotonJoinRoomFailed() to get a callback in error case. + /// + /// To join a room from the lobby's listing, use RoomInfo.Name as roomName here. + /// Despite using multiple lobbies, a roomName is always "global" for your application and so you don't + /// have to specify which lobby it's in. The Master Server will find the room. + /// In the Photon Cloud, an application is defined by AppId, Game- and PUN-version. + /// + /// + /// + /// Unique name of the room to join. + /// If the operation got queued and will be sent. + public static bool JoinRoom(string roomName) + { + return JoinRoom(roomName, null); + } + + /// Join room by roomname and on success calls OnJoinedRoom(). This is not affected by lobbies. + /// + /// On success, the method OnJoinedRoom() is called on any script. You can implement it to react to joining a room. + /// + /// JoinRoom fails if the room is either full or no longer available (it might become empty while you attempt to join). + /// Implement OnPhotonJoinRoomFailed() to get a callback in error case. + /// + /// To join a room from the lobby's listing, use RoomInfo.Name as roomName here. + /// Despite using multiple lobbies, a roomName is always "global" for your application and so you don't + /// have to specify which lobby it's in. The Master Server will find the room. + /// In the Photon Cloud, an application is defined by AppId, Game- and PUN-version. + /// + /// You can define an array of expectedUsers, to block player slots in the room for these users. + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// + /// + /// + /// Unique name of the room to join. + /// Optional list of users (by UserId) who are expected to join this game and who you want to block a slot for. + /// If the operation got queued and will be sent. + public static bool JoinRoom(string roomName, string[] expectedUsers) + { + if (offlineMode) + { + if (offlineModeRoom != null) + { + Debug.LogError("JoinRoom failed. In offline mode you still have to leave a room to enter another."); + return false; + } + EnterOfflineRoom(roomName, null, true); + return true; + } + if (networkingPeer.Server != ServerConnection.MasterServer || !connectedAndReady) + { + Debug.LogError("JoinRoom failed. Client is not on Master Server or not yet ready to call operations. Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + if (string.IsNullOrEmpty(roomName)) + { + Debug.LogError("JoinRoom failed. A roomname is required. If you don't know one, how will you join?"); + return false; + } + + + EnterRoomParams opParams = new EnterRoomParams(); + opParams.RoomName = roomName; + opParams.ExpectedUsers = expectedUsers; + + return networkingPeer.OpJoinRoom(opParams); + } + + + /// Lets you either join a named room or create it on the fly - you don't have to know if someone created the room already. + /// + /// This makes it easier for groups of players to get into the same room. Once the group + /// exchanged a roomName, any player can call JoinOrCreateRoom and it doesn't matter who + /// actually joins or creates the room. + /// + /// The parameters roomOptions and typedLobby are only used when the room actually gets created by this client. + /// You know if this client created a room, if you get a callback OnCreatedRoom (before OnJoinedRoom gets called as well). + /// + /// Name of the room to join. Must be non null. + /// Options for the room, in case it does not exist yet. Else these values are ignored. + /// Lobby you want a new room to be listed in. Ignored if the room was existing and got joined. + /// If the operation got queued and will be sent. + public static bool JoinOrCreateRoom(string roomName, RoomOptions roomOptions, TypedLobby typedLobby) + { + return JoinOrCreateRoom(roomName, roomOptions, typedLobby, null); + } + + /// Lets you either join a named room or create it on the fly - you don't have to know if someone created the room already. + /// + /// This makes it easier for groups of players to get into the same room. Once the group + /// exchanged a roomName, any player can call JoinOrCreateRoom and it doesn't matter who + /// actually joins or creates the room. + /// + /// The parameters roomOptions and typedLobby are only used when the room actually gets created by this client. + /// You know if this client created a room, if you get a callback OnCreatedRoom (before OnJoinedRoom gets called as well). + /// + /// You can define an array of expectedUsers, to block player slots in the room for these users. + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// + /// Name of the room to join. Must be non null. + /// Options for the room, in case it does not exist yet. Else these values are ignored. + /// Lobby you want a new room to be listed in. Ignored if the room was existing and got joined. + /// Optional list of users (by UserId) who are expected to join this game and who you want to block a slot for. + /// If the operation got queued and will be sent. + public static bool JoinOrCreateRoom(string roomName, RoomOptions roomOptions, TypedLobby typedLobby, string[] expectedUsers) + { + if (offlineMode) + { + if (offlineModeRoom != null) + { + Debug.LogError("JoinOrCreateRoom failed. In offline mode you still have to leave a room to enter another."); + return false; + } + EnterOfflineRoom(roomName, roomOptions, true); // in offline mode, JoinOrCreateRoom assumes you create the room + return true; + } + if (networkingPeer.Server != ServerConnection.MasterServer || !connectedAndReady) + { + Debug.LogError("JoinOrCreateRoom failed. Client is not on Master Server or not yet ready to call operations. Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + if (string.IsNullOrEmpty(roomName)) + { + Debug.LogError("JoinOrCreateRoom failed. A roomname is required. If you don't know one, how will you join?"); + return false; + } + + typedLobby = typedLobby ?? ((networkingPeer.insideLobby) ? networkingPeer.lobby : null); // use given lobby, or active lobby (if any active) or none + + EnterRoomParams opParams = new EnterRoomParams(); + opParams.RoomName = roomName; + opParams.RoomOptions = roomOptions; + opParams.Lobby = typedLobby; + opParams.CreateIfNotExists = true; + opParams.PlayerProperties = player.CustomProperties; + opParams.ExpectedUsers = expectedUsers; + + return networkingPeer.OpJoinRoom(opParams); + } + + /// + /// Joins any available room of the currently used lobby and fails if none is available. + /// + /// + /// Rooms can be created in arbitrary lobbies which get created on demand. + /// You can join rooms from any lobby without actually joining the lobby. + /// Use the JoinRandomRoom overload with TypedLobby parameter. + /// + /// This method will only match rooms attached to one lobby! If you use many lobbies, you + /// might have to repeat JoinRandomRoom, to find some fitting room. + /// This method looks up a room in the currently active lobby or (if no lobby is joined) + /// in the default lobby. + /// + /// If this fails, you can still create a room (and make this available for the next who uses JoinRandomRoom). + /// Alternatively, try again in a moment. + /// + public static bool JoinRandomRoom() + { + return JoinRandomRoom(null, 0, MatchmakingMode.FillRoom, null, null); + } + + /// + /// Attempts to join an open room with fitting, custom properties but fails if none is currently available. + /// + /// + /// Rooms can be created in arbitrary lobbies which get created on demand. + /// You can join rooms from any lobby without actually joining the lobby. + /// Use the JoinRandomRoom overload with TypedLobby parameter. + /// + /// This method will only match rooms attached to one lobby! If you use many lobbies, you + /// might have to repeat JoinRandomRoom, to find some fitting room. + /// This method looks up a room in the currently active lobby or (if no lobby is joined) + /// in the default lobby. + /// + /// If this fails, you can still create a room (and make this available for the next who uses JoinRandomRoom). + /// Alternatively, try again in a moment. + /// + /// Filters for rooms that match these custom properties (string keys and values). To ignore, pass null. + /// Filters for a particular maxplayer setting. Use 0 to accept any maxPlayer value. + /// If the operation got queued and will be sent. + public static bool JoinRandomRoom(Hashtable expectedCustomRoomProperties, byte expectedMaxPlayers) + { + return JoinRandomRoom(expectedCustomRoomProperties, expectedMaxPlayers, MatchmakingMode.FillRoom, null, null); + } + + /// + /// Attempts to join an open room with fitting, custom properties but fails if none is currently available. + /// + /// + /// Rooms can be created in arbitrary lobbies which get created on demand. + /// You can join rooms from any lobby without actually joining the lobby with this overload. + /// + /// This method will only match rooms attached to one lobby! If you use many lobbies, you + /// might have to repeat JoinRandomRoom, to find some fitting room. + /// This method looks up a room in the specified lobby or the currently active lobby (if none specified) + /// or in the default lobby (if none active). + /// + /// If this fails, you can still create a room (and make this available for the next who uses JoinRandomRoom). + /// Alternatively, try again in a moment. + /// + /// In offlineMode, a room will be created but no properties will be set and all parameters of this + /// JoinRandomRoom call are ignored. The event/callback OnJoinedRoom gets called (see enum PhotonNetworkingMessage). + /// + /// You can define an array of expectedUsers, to block player slots in the room for these users. + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// + /// Filters for rooms that match these custom properties (string keys and values). To ignore, pass null. + /// Filters for a particular maxplayer setting. Use 0 to accept any maxPlayer value. + /// Selects one of the available matchmaking algorithms. See MatchmakingMode enum for options. + /// The lobby in which you want to lookup a room. Pass null, to use the default lobby. This does not join that lobby and neither sets the lobby property. + /// A filter-string for SQL-typed lobbies. + /// Optional list of users (by UserId) who are expected to join this game and who you want to block a slot for. + /// If the operation got queued and will be sent. + public static bool JoinRandomRoom(Hashtable expectedCustomRoomProperties, byte expectedMaxPlayers, MatchmakingMode matchingType, TypedLobby typedLobby, string sqlLobbyFilter, string[] expectedUsers = null) + { + if (offlineMode) + { + if (offlineModeRoom != null) + { + Debug.LogError("JoinRandomRoom failed. In offline mode you still have to leave a room to enter another."); + return false; + } + EnterOfflineRoom("offline room", null, true); + return true; + } + if (networkingPeer.Server != ServerConnection.MasterServer || !connectedAndReady) + { + Debug.LogError("JoinRandomRoom failed. Client is not on Master Server or not yet ready to call operations. Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + + typedLobby = typedLobby ?? ((networkingPeer.insideLobby) ? networkingPeer.lobby : null); // use given lobby, or active lobby (if any active) or none + + OpJoinRandomRoomParams opParams = new OpJoinRandomRoomParams(); + opParams.ExpectedCustomRoomProperties = expectedCustomRoomProperties; + opParams.ExpectedMaxPlayers = expectedMaxPlayers; + opParams.MatchingType = matchingType; + opParams.TypedLobby = typedLobby; + opParams.SqlLobbyFilter = sqlLobbyFilter; + opParams.ExpectedUsers = expectedUsers; + + return networkingPeer.OpJoinRandomRoom(opParams); + } + + + /// Can be used to return to a room after a disconnect and reconnect. + /// + /// After losing connection, you might be able to return to a room and continue playing, + /// if the client is reconnecting fast enough. Use Reconnect() and this method. + /// Cache the room name you're in and use ReJoin(roomname) to return to a game. + /// + /// Note: To be able to ReJoin any room, you need to use UserIDs! + /// You also need to set RoomOptions.PlayerTtl. + /// + /// Important: Instantiate() and use of RPCs is not yet supported. + /// The ownership rules of PhotonViews prevent a seamless return to a game. + /// Use Custom Properties and RaiseEvent with event caching instead. + /// + /// Common use case: Press the Lock Button on a iOS device and you get disconnected immediately. + /// + public static bool ReJoinRoom(string roomName) + { + if (offlineMode) + { + Debug.LogError("ReJoinRoom failed due to offline mode."); + return false; + } + if (networkingPeer.Server != ServerConnection.MasterServer || !connectedAndReady) + { + Debug.LogError("ReJoinRoom failed. Client is not on Master Server or not yet ready to call operations. Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + if (string.IsNullOrEmpty(roomName)) + { + Debug.LogError("ReJoinRoom failed. A roomname is required. If you don't know one, how will you join?"); + return false; + } + + EnterRoomParams opParams = new EnterRoomParams(); + opParams.RoomName = roomName; + opParams.RejoinOnly = true; + opParams.PlayerProperties = player.CustomProperties; + + return networkingPeer.OpJoinRoom(opParams); + } + + + /// + /// Internally used helper-method to setup an offline room, the numbers for actor and master-client and to do the callbacks. + /// + private static void EnterOfflineRoom(string roomName, RoomOptions roomOptions, bool createdRoom) + { + offlineModeRoom = new Room(roomName, roomOptions); + networkingPeer.ChangeLocalID(1); + offlineModeRoom.MasterClientId = 1; + + if (createdRoom) + { + NetworkingPeer.SendMonoMessage(PhotonNetworkingMessage.OnCreatedRoom); + } + NetworkingPeer.SendMonoMessage(PhotonNetworkingMessage.OnJoinedRoom); + } + + /// On MasterServer this joins the default lobby which list rooms currently in use. + /// + /// The room list is sent and refreshed by the server. You can access this cached list by + /// PhotonNetwork.GetRoomList(). + /// + /// Per room you should check if it's full or not before joining. Photon also lists rooms that are + /// full, unless you close and hide them (room.open = false and room.visible = false). + /// + /// In best case, you make your clients join random games, as described here: + /// http://doc.exitgames.com/en/realtime/current/reference/matchmaking-and-lobby + /// + /// + /// You can show your current players and room count without joining a lobby (but you must + /// be on the master server). Use: countOfPlayers, countOfPlayersOnMaster, countOfPlayersInRooms and + /// countOfRooms. + /// + /// You can use more than one lobby to keep the room lists shorter. See JoinLobby(TypedLobby lobby). + /// When creating new rooms, they will be "attached" to the currently used lobby or the default lobby. + /// + /// You can use JoinRandomRoom without being in a lobby! + /// Set autoJoinLobby = false before you connect, to not join a lobby. In that case, the + /// connect-workflow will call OnConnectedToMaster (if you implement it) when it's done. + /// + public static bool JoinLobby() + { + return JoinLobby(null); + } + + /// On a Master Server you can join a lobby to get lists of available rooms. + /// + /// The room list is sent and refreshed by the server. You can access this cached list by + /// PhotonNetwork.GetRoomList(). + /// + /// Any client can "make up" any lobby on the fly. Splitting rooms into multiple lobbies will + /// keep each list shorter. However, having too many lists might ruin the matchmaking experience. + /// + /// In best case, you create a limited number of lobbies. For example, create a lobby per + /// game-mode: "koth" for king of the hill and "ffa" for free for all, etc. + /// + /// There is no listing of lobbies at the moment. + /// + /// Sql-typed lobbies offer a different filtering model for random matchmaking. This might be more + /// suited for skillbased-games. However, you will also need to follow the conventions for naming + /// filterable properties in sql-lobbies! Both is explained in the matchmaking doc linked below. + /// + /// In best case, you make your clients join random games, as described here: + /// http://confluence.exitgames.com/display/PTN/Op+JoinRandomGame + /// + /// + /// Per room you should check if it's full or not before joining. Photon does list rooms that are + /// full, unless you close and hide them (room.open = false and room.visible = false). + /// + /// You can show your games current players and room count without joining a lobby (but you must + /// be on the master server). Use: countOfPlayers, countOfPlayersOnMaster, countOfPlayersInRooms and + /// countOfRooms. + /// + /// When creating new rooms, they will be "attached" to the currently used lobby or the default lobby. + /// + /// You can use JoinRandomRoom without being in a lobby! + /// Set autoJoinLobby = false before you connect, to not join a lobby. In that case, the + /// connect-workflow will call OnConnectedToMaster (if you implement it) when it's done. + /// + /// A typed lobby to join (must have name and type). + public static bool JoinLobby(TypedLobby typedLobby) + { + if (PhotonNetwork.connected && PhotonNetwork.Server == ServerConnection.MasterServer) + { + if (typedLobby == null) + { + typedLobby = TypedLobby.Default; + } + + bool sending = networkingPeer.OpJoinLobby(typedLobby); + if (sending) + { + networkingPeer.lobby = typedLobby; + + } + return sending; + } + + return false; + } + + /// Leave a lobby to stop getting updates about available rooms. + /// + /// This does not reset PhotonNetwork.lobby! This allows you to join this particular lobby later + /// easily. + /// + /// The values countOfPlayers, countOfPlayersOnMaster, countOfPlayersInRooms and countOfRooms + /// are received even without being in a lobby. + /// + /// You can use JoinRandomRoom without being in a lobby. + /// Use autoJoinLobby to not join a lobby when you connect. + /// + public static bool LeaveLobby() + { + if (PhotonNetwork.connected && PhotonNetwork.Server == ServerConnection.MasterServer) + { + return networkingPeer.OpLeaveLobby(); + } + + return false; + } + + /// Leave the current room and return to the Master Server where you can join or create rooms (see remarks). + /// + /// This will clean up all (network) GameObjects with a PhotonView, unless you changed autoCleanUp to false. + /// Returns to the Master Server. + /// + /// In OfflineMode, the local "fake" room gets cleaned up and OnLeftRoom gets called immediately. + /// + public static bool LeaveRoom() + { + if (offlineMode) + { + offlineModeRoom = null; + NetworkingPeer.SendMonoMessage(PhotonNetworkingMessage.OnLeftRoom); + } + else + { + if (room == null) + { + Debug.LogWarning("PhotonNetwork.room is null. You don't have to call LeaveRoom() when you're not in one. State: " + PhotonNetwork.connectionStateDetailed); + } + return networkingPeer.OpLeave(); + } + + return true; + } + + /// + /// Gets currently known rooms as RoomInfo array. This is available and updated while in a lobby (check insideLobby). + /// + /// + /// This list is a cached copy of the internal rooms list so it can be accessed each frame if needed. + /// Per RoomInfo you can check if the room is full by comparing playerCount and MaxPlayers before you allow a join. + /// + /// The name of a room must be used to join it (via JoinRoom). + /// + /// Closed rooms are also listed by lobbies but they can't be joined. While in a room, any player can set + /// Room.visible and Room.open to hide rooms from matchmaking and close them. + /// + /// RoomInfo[] of current rooms in lobby. + public static RoomInfo[] GetRoomList() + { + if (offlineMode || networkingPeer == null) + { + return new RoomInfo[0]; + } + + return networkingPeer.mGameListCopy; + } + + /// + /// Sets this (local) player's properties and synchronizes them to the other players (don't modify them directly). + /// + /// + /// While in a room, your properties are synced with the other players. + /// CreateRoom, JoinRoom and JoinRandomRoom will all apply your player's custom properties when you enter the room. + /// The whole Hashtable will get sent. Minimize the traffic by setting only updated key/values. + /// + /// If the Hashtable is null, the custom properties will be cleared. + /// Custom properties are never cleared automatically, so they carry over to the next room, if you don't change them. + /// + /// Don't set properties by modifying PhotonNetwork.player.customProperties! + /// + /// Only string-typed keys will be used from this hashtable. If null, custom properties are all deleted. + public static void SetPlayerCustomProperties(Hashtable customProperties) + { + if (customProperties == null) + { + customProperties = new Hashtable(); + foreach (object k in player.CustomProperties.Keys) + { + customProperties[(string)k] = null; + } + } + + if (room != null && room.IsLocalClientInside) + { + player.SetCustomProperties(customProperties); + } + else + { + player.InternalCacheProperties(customProperties); + } + } + + /// + /// Locally removes Custom Properties of "this" player. Important: This does not synchronize the change! Useful when you switch rooms. + /// + /// + /// Use this method with care. It can create inconsistencies of state between players! + /// This only changes the player.customProperties locally. This can be useful to clear your + /// Custom Properties between games (let's say they store which turn you made, kills, etc). + /// + /// SetPlayerCustomProperties() syncs and can be used to set values to null while in a room. + /// That can be considered "removed" while in a room. + /// + /// If customPropertiesToDelete is null or has 0 entries, all Custom Properties are deleted (replaced with a new Hashtable). + /// If you specify keys to remove, those will be removed from the Hashtable but other keys are unaffected. + /// + /// List of Custom Property keys to remove. See remarks. + public static void RemovePlayerCustomProperties(string[] customPropertiesToDelete) + { + if (customPropertiesToDelete == null || customPropertiesToDelete.Length == 0 || player.CustomProperties == null) + { + player.CustomProperties = new Hashtable(); + return; + } + + // if a specific list of props should be deleted, we do that here + for (int i = 0; i < customPropertiesToDelete.Length; i++) + { + string key = customPropertiesToDelete[i]; + if (player.CustomProperties.ContainsKey(key)) + { + player.CustomProperties.Remove(key); + } + } + } + + /// + /// Sends fully customizable events in a room. Events consist of at least an EventCode (0..199) and can have content. + /// + /// + /// To receive the events someone sends, register your handling method in PhotonNetwork.OnEventCall. + /// + /// Example: + /// private void OnEventHandler(byte eventCode, object content, int senderId) + /// { Debug.Log("OnEventHandler"); } + /// + /// PhotonNetwork.OnEventCall += this.OnEventHandler; + /// + /// With the senderId, you can look up the PhotonPlayer who sent the event. + /// It is best practice to assign a eventCode for each different type of content and action. You have to cast the content. + /// + /// The eventContent is optional. To be able to send something, it must be a "serializable type", something that + /// the client can turn into a byte[] basically. Most basic types and arrays of them are supported, including + /// Unity's Vector2, Vector3, Quaternion. Transforms or classes some project defines are NOT supported! + /// You can make your own class a "serializable type" by following the example in CustomTypes.cs. + /// + /// + /// The RaiseEventOptions have some (less intuitive) combination rules: + /// If you set targetActors (an array of PhotonPlayer.ID values), the receivers parameter gets ignored. + /// When using event caching, the targetActors, receivers and interestGroup can't be used. Buffered events go to all. + /// When using cachingOption removeFromRoomCache, the eventCode and content are actually not sent but used as filter. + /// + /// A byte identifying the type of event. You might want to use a code per action or to signal which content can be expected. Allowed: 0..199. + /// Some serializable object like string, byte, integer, float (etc) and arrays of those. Hashtables with byte keys are good to send variable content. + /// Makes sure this event reaches all players. It gets acknowledged, which requires bandwidth and it can't be skipped (might add lag in case of loss). + /// Allows more complex usage of events. If null, RaiseEventOptions.Default will be used (which is fine). + /// False if event could not be sent + public static bool RaiseEvent(byte eventCode, object eventContent, bool sendReliable, RaiseEventOptions options) + { + if (!inRoom || eventCode >= 200) + { + Debug.LogWarning("RaiseEvent() failed. Your event is not being sent! Check if your are in a Room and the eventCode must be less than 200 (0..199)."); + return false; + } + + return networkingPeer.OpRaiseEvent(eventCode, eventContent, sendReliable, options); + } + + /// + /// Allocates a viewID that's valid for the current/local player. + /// + /// A viewID that can be used for a new PhotonView. + public static int AllocateViewID() + { + int manualId = AllocateViewID(player.ID); + manuallyAllocatedViewIds.Add(manualId); + return manualId; + } + + + /// + /// Enables the Master Client to allocate a viewID that is valid for scene objects. + /// + /// A viewID that can be used for a new PhotonView or -1 in case of an error. + public static int AllocateSceneViewID() + { + if (!PhotonNetwork.isMasterClient) + { + Debug.LogError("Only the Master Client can AllocateSceneViewID(). Check PhotonNetwork.isMasterClient!"); + return -1; + } + + int manualId = AllocateViewID(0); + manuallyAllocatedViewIds.Add(manualId); + return manualId; + } + + // use 0 for scene-targetPhotonView-ids + // returns viewID (combined owner and sub id) + private static int AllocateViewID(int ownerId) + { + if (ownerId == 0) + { + // we look up a fresh subId for the owner "room" (mind the "sub" in subId) + int newSubId = lastUsedViewSubIdStatic; + int newViewId; + int ownerIdOffset = ownerId * MAX_VIEW_IDS; + for (int i = 1; i < MAX_VIEW_IDS; i++) + { + newSubId = (newSubId + 1) % MAX_VIEW_IDS; + if (newSubId == 0) + { + continue; // avoid using subID 0 + } + + newViewId = newSubId + ownerIdOffset; + if (!networkingPeer.photonViewList.ContainsKey(newViewId)) + { + lastUsedViewSubIdStatic = newSubId; + return newViewId; + } + } + + // this is the error case: we didn't find any (!) free subId for this user + throw new Exception(string.Format("AllocateViewID() failed. Room (user {0}) is out of 'scene' viewIDs. It seems all available are in use.", ownerId)); + } + else + { + // we look up a fresh SUBid for the owner + int newSubId = lastUsedViewSubId; + int newViewId; + int ownerIdOffset = ownerId * MAX_VIEW_IDS; + for (int i = 1; i < MAX_VIEW_IDS; i++) + { + newSubId = (newSubId + 1) % MAX_VIEW_IDS; + if (newSubId == 0) + { + continue; // avoid using subID 0 + } + + newViewId = newSubId + ownerIdOffset; + if (!networkingPeer.photonViewList.ContainsKey(newViewId) && !manuallyAllocatedViewIds.Contains(newViewId)) + { + lastUsedViewSubId = newSubId; + return newViewId; + } + } + + throw new Exception(string.Format("AllocateViewID() failed. User {0} is out of subIds, as all viewIDs are used.", ownerId)); + } + } + + private static int[] AllocateSceneViewIDs(int countOfNewViews) + { + int[] viewIDs = new int[countOfNewViews]; + for (int view = 0; view < countOfNewViews; view++) + { + viewIDs[view] = AllocateViewID(0); + } + + return viewIDs; + } + + /// + /// Unregister a viewID (of manually instantiated and destroyed networked objects). + /// + /// A viewID manually allocated by this player. + public static void UnAllocateViewID(int viewID) + { + manuallyAllocatedViewIds.Remove(viewID); + + if (networkingPeer.photonViewList.ContainsKey(viewID)) + { + Debug.LogWarning(string.Format("UnAllocateViewID() should be called after the PhotonView was destroyed (GameObject.Destroy()). ViewID: {0} still found in: {1}", viewID, networkingPeer.photonViewList[viewID])); + } + } + + /// + /// Instantiate a prefab over the network. This prefab needs to be located in the root of a "Resources" folder. + /// + /// + /// Instead of using prefabs in the Resources folder, you can manually Instantiate and assign PhotonViews. See doc. + /// + /// Name of the prefab to instantiate. + /// Position Vector3 to apply on instantiation. + /// Rotation Quaternion to apply on instantiation. + /// The group for this PhotonView. + /// The new instance of a GameObject with initialized PhotonView. + public static GameObject Instantiate(string prefabName, Vector3 position, Quaternion rotation, int group) + { + return Instantiate(prefabName, position, rotation, group, null); + } + + /// + /// Instantiate a prefab over the network. This prefab needs to be located in the root of a "Resources" folder. + /// + /// Instead of using prefabs in the Resources folder, you can manually Instantiate and assign PhotonViews. See doc. + /// Name of the prefab to instantiate. + /// Position Vector3 to apply on instantiation. + /// Rotation Quaternion to apply on instantiation. + /// The group for this PhotonView. + /// Optional instantiation data. This will be saved to it's PhotonView.instantiationData. + /// The new instance of a GameObject with initialized PhotonView. + public static GameObject Instantiate(string prefabName, Vector3 position, Quaternion rotation, int group, object[] data) + { + if (!connected || (InstantiateInRoomOnly && !inRoom)) + { + Debug.LogError("Failed to Instantiate prefab: " + prefabName + ". Client should be in a room. Current connectionStateDetailed: " + PhotonNetwork.connectionStateDetailed); + return null; + } + + GameObject prefabGo; + if (!UsePrefabCache || !PrefabCache.TryGetValue(prefabName, out prefabGo)) + { + prefabGo = (GameObject)Resources.Load(prefabName, typeof(GameObject)); + if (UsePrefabCache) + { + PrefabCache.Add(prefabName, prefabGo); + } + } + + if (prefabGo == null) + { + Debug.LogError("Failed to Instantiate prefab: " + prefabName + ". Verify the Prefab is in a Resources folder (and not in a subfolder)"); + return null; + } + + // a scene object instantiated with network visibility has to contain a PhotonView + if (prefabGo.GetComponent() == null) + { + Debug.LogError("Failed to Instantiate prefab:" + prefabName + ". Prefab must have a PhotonView component."); + return null; + } + + Component[] views = (Component[])prefabGo.GetPhotonViewsInChildren(); + int[] viewIDs = new int[views.Length]; + for (int i = 0; i < viewIDs.Length; i++) + { + //Debug.Log("Instantiate prefabName: " + prefabName + " player.ID: " + player.ID); + viewIDs[i] = AllocateViewID(player.ID); + } + + // Send to others, create info + Hashtable instantiateEvent = networkingPeer.SendInstantiate(prefabName, position, rotation, group, viewIDs, data, false); + + // Instantiate the GO locally (but the same way as if it was done via event). This will also cache the instantiationId + return networkingPeer.DoInstantiate(instantiateEvent, networkingPeer.LocalPlayer, prefabGo); + } + + + /// + /// Instantiate a scene-owned prefab over the network. The PhotonViews will be controllable by the MasterClient. This prefab needs to be located in the root of a "Resources" folder. + /// + /// + /// Only the master client can Instantiate scene objects. + /// Instead of using prefabs in the Resources folder, you can manually Instantiate and assign PhotonViews. See doc. + /// + /// Name of the prefab to instantiate. + /// Position Vector3 to apply on instantiation. + /// Rotation Quaternion to apply on instantiation. + /// The group for this PhotonView. + /// Optional instantiation data. This will be saved to it's PhotonView.instantiationData. + /// The new instance of a GameObject with initialized PhotonView. + public static GameObject InstantiateSceneObject(string prefabName, Vector3 position, Quaternion rotation, int group, object[] data) + { + if (!connected || (InstantiateInRoomOnly && !inRoom)) + { + Debug.LogError("Failed to InstantiateSceneObject prefab: " + prefabName + ". Client should be in a room. Current connectionStateDetailed: " + PhotonNetwork.connectionStateDetailed); + return null; + } + + if (!isMasterClient) + { + Debug.LogError("Failed to InstantiateSceneObject prefab: " + prefabName + ". Client is not the MasterClient in this room."); + return null; + } + + GameObject prefabGo; + if (!UsePrefabCache || !PrefabCache.TryGetValue(prefabName, out prefabGo)) + { + prefabGo = (GameObject)Resources.Load(prefabName, typeof(GameObject)); + if (UsePrefabCache) + { + PrefabCache.Add(prefabName, prefabGo); + } + } + + if (prefabGo == null) + { + Debug.LogError("Failed to InstantiateSceneObject prefab: " + prefabName + ". Verify the Prefab is in a Resources folder (and not in a subfolder)"); + return null; + } + + // a scene object instantiated with network visibility has to contain a PhotonView + if (prefabGo.GetComponent() == null) + { + Debug.LogError("Failed to InstantiateSceneObject prefab:" + prefabName + ". Prefab must have a PhotonView component."); + return null; + } + + Component[] views = (Component[])prefabGo.GetPhotonViewsInChildren(); + int[] viewIDs = AllocateSceneViewIDs(views.Length); + + if (viewIDs == null) + { + Debug.LogError("Failed to InstantiateSceneObject prefab: " + prefabName + ". No ViewIDs are free to use. Max is: " + MAX_VIEW_IDS); + return null; + } + + // Send to others, create info + Hashtable instantiateEvent = networkingPeer.SendInstantiate(prefabName, position, rotation, group, viewIDs, data, true); + + // Instantiate the GO locally (but the same way as if it was done via event). This will also cache the instantiationId + return networkingPeer.DoInstantiate(instantiateEvent, networkingPeer.LocalPlayer, prefabGo); + } + + /// + /// The current roundtrip time to the photon server. + /// + /// Roundtrip time (to server and back). + public static int GetPing() + { + return networkingPeer.RoundTripTime; + } + + /// Refreshes the server timestamp (async operation, takes a roundtrip). + /// Can be useful if a bad connection made the timestamp unusable or imprecise. + public static void FetchServerTimestamp() + { + if (networkingPeer != null) + { + networkingPeer.FetchServerTimestamp(); + } + } + + /// + /// Can be used to immediately send the RPCs and Instantiates just called, so they are on their way to the other players. + /// + /// + /// This could be useful if you do a RPC to load a level and then load it yourself. + /// While loading, no RPCs are sent to others, so this would delay the "load" RPC. + /// You can send the RPC to "others", use this method, disable the message queue + /// (by isMessageQueueRunning) and then load. + /// + public static void SendOutgoingCommands() + { + if (!VerifyCanUseNetwork()) + { + return; + } + + while (networkingPeer.SendOutgoingCommands()) + { + } + } + + /// Request a client to disconnect (KICK). Only the master client can do this + /// Only the target player gets this event. That player will disconnect automatically, which is what the others will notice, too. + /// The PhotonPlayer to kick. + public static bool CloseConnection(PhotonPlayer kickPlayer) + { + if (!VerifyCanUseNetwork()) + { + return false; + } + + if (!player.IsMasterClient) + { + Debug.LogError("CloseConnection: Only the masterclient can kick another player."); + return false; + } + + if (kickPlayer == null) + { + Debug.LogError("CloseConnection: No such player connected!"); + return false; + } + + RaiseEventOptions options = new RaiseEventOptions() { TargetActors = new int[] { kickPlayer.ID } }; + return networkingPeer.OpRaiseEvent(PunEvent.CloseConnection, null, true, options); + } + + /// + /// Asks the server to assign another player as Master Client of your current room. + /// + /// + /// RPCs and RaiseEvent have the option to send messages only to the Master Client of a room. + /// SetMasterClient affects which client gets those messages. + /// + /// This method calls an operation on the server to set a new Master Client, which takes a roundtrip. + /// In case of success, this client and the others get the new Master Client from the server. + /// + /// SetMasterClient tells the server which current Master Client should be replaced with the new one. + /// It will fail, if anything switches the Master Client moments earlier. There is no callback for this + /// error. All clients should get the new Master Client assigned by the server anyways. + /// + /// See also: PhotonNetwork.masterClient + /// + /// On v3 servers: + /// The ReceiverGroup.MasterClient (usable in RPCs) is not affected by this (still points to lowest player.ID in room). + /// Avoid using this enum value (and send to a specific player instead). + /// + /// If the current Master Client leaves, PUN will detect a new one by "lowest player ID". Implement OnMasterClientSwitched + /// to get a callback in this case. The PUN-selected Master Client might assign a new one. + /// + /// Make sure you don't create an endless loop of Master-assigning! When selecting a custom Master Client, all clients + /// should point to the same player, no matter who actually assigns this player. + /// + /// Locally the Master Client is immediately switched, while remote clients get an event. This means the game + /// is tempoarily without Master Client like when a current Master Client leaves. + /// + /// When switching the Master Client manually, keep in mind that this user might leave and not do it's work, just like + /// any Master Client. + /// + /// + /// The player to become the next Master Client. + /// False when this operation couldn't be done. Must be in a room (not in offlineMode). + public static bool SetMasterClient(PhotonPlayer masterClientPlayer) + { + if (!inRoom || !VerifyCanUseNetwork() || offlineMode) + { + if (logLevel == PhotonLogLevel.Informational) Debug.Log("Can not SetMasterClient(). Not in room or in offlineMode."); + return false; + } + + if (room.serverSideMasterClient) + { + Hashtable newProps = new Hashtable() { { GamePropertyKey.MasterClientId, masterClientPlayer.ID } }; + Hashtable prevProps = new Hashtable() { { GamePropertyKey.MasterClientId, networkingPeer.mMasterClientId } }; + return networkingPeer.OpSetPropertiesOfRoom(newProps, expectedProperties: prevProps, webForward: false); + } + else + { + if (!isMasterClient) + { + return false; + } + return networkingPeer.SetMasterClient(masterClientPlayer.ID, true); + } + } + + /// + /// Network-Destroy the GameObject associated with the PhotonView, unless the PhotonView is static or not under this client's control. + /// + /// + /// Destroying a networked GameObject while in a Room includes: + /// - Removal of the Instantiate call from the server's room buffer. + /// - Removing RPCs buffered for PhotonViews that got created indirectly with the PhotonNetwork.Instantiate call. + /// - Sending a message to other clients to remove the GameObject also (affected by network lag). + /// + /// Usually, when you leave a room, the GOs get destroyed automatically. + /// If you have to destroy a GO while not in a room, the Destroy is only done locally. + /// + /// Destroying networked objects works only if they got created with PhotonNetwork.Instantiate(). + /// Objects loaded with a scene are ignored, no matter if they have PhotonView components. + /// + /// The GameObject must be under this client's control: + /// - Instantiated and owned by this client. + /// - Instantiated objects of players who left the room are controlled by the Master Client. + /// - Scene-owned game objects are controlled by the Master Client. + /// - GameObject can be destroyed while client is not in a room. + /// + /// Nothing. Check error debug log for any issues. + public static void Destroy(PhotonView targetView) + { + if (targetView != null) + { + networkingPeer.RemoveInstantiatedGO(targetView.gameObject, !inRoom); + } + else + { + Debug.LogError("Destroy(targetPhotonView) failed, cause targetPhotonView is null."); + } + } + + /// + /// Network-Destroy the GameObject, unless it is static or not under this client's control. + /// + /// + /// Destroying a networked GameObject includes: + /// - Removal of the Instantiate call from the server's room buffer. + /// - Removing RPCs buffered for PhotonViews that got created indirectly with the PhotonNetwork.Instantiate call. + /// - Sending a message to other clients to remove the GameObject also (affected by network lag). + /// + /// Usually, when you leave a room, the GOs get destroyed automatically. + /// If you have to destroy a GO while not in a room, the Destroy is only done locally. + /// + /// Destroying networked objects works only if they got created with PhotonNetwork.Instantiate(). + /// Objects loaded with a scene are ignored, no matter if they have PhotonView components. + /// + /// The GameObject must be under this client's control: + /// - Instantiated and owned by this client. + /// - Instantiated objects of players who left the room are controlled by the Master Client. + /// - Scene-owned game objects are controlled by the Master Client. + /// - GameObject can be destroyed while client is not in a room. + /// + /// Nothing. Check error debug log for any issues. + public static void Destroy(GameObject targetGo) + { + networkingPeer.RemoveInstantiatedGO(targetGo, !inRoom); + } + + /// + /// Network-Destroy all GameObjects, PhotonViews and their RPCs of targetPlayer. Can only be called on local player (for "self") or Master Client (for anyone). + /// + /// + /// Destroying a networked GameObject includes: + /// - Removal of the Instantiate call from the server's room buffer. + /// - Removing RPCs buffered for PhotonViews that got created indirectly with the PhotonNetwork.Instantiate call. + /// - Sending a message to other clients to remove the GameObject also (affected by network lag). + /// + /// Destroying networked objects works only if they got created with PhotonNetwork.Instantiate(). + /// Objects loaded with a scene are ignored, no matter if they have PhotonView components. + /// + /// Nothing. Check error debug log for any issues. + public static void DestroyPlayerObjects(PhotonPlayer targetPlayer) + { + if (player == null) + { + Debug.LogError("DestroyPlayerObjects() failed, cause parameter 'targetPlayer' was null."); + } + + DestroyPlayerObjects(targetPlayer.ID); + } + + /// + /// Network-Destroy all GameObjects, PhotonViews and their RPCs of this player (by ID). Can only be called on local player (for "self") or Master Client (for anyone). + /// + /// + /// Destroying a networked GameObject includes: + /// - Removal of the Instantiate call from the server's room buffer. + /// - Removing RPCs buffered for PhotonViews that got created indirectly with the PhotonNetwork.Instantiate call. + /// - Sending a message to other clients to remove the GameObject also (affected by network lag). + /// + /// Destroying networked objects works only if they got created with PhotonNetwork.Instantiate(). + /// Objects loaded with a scene are ignored, no matter if they have PhotonView components. + /// + /// Nothing. Check error debug log for any issues. + public static void DestroyPlayerObjects(int targetPlayerId) + { + if (!VerifyCanUseNetwork()) + { + return; + } + if (player.IsMasterClient || targetPlayerId == player.ID) + { + networkingPeer.DestroyPlayerObjects(targetPlayerId, false); + } + else + { + Debug.LogError("DestroyPlayerObjects() failed, cause players can only destroy their own GameObjects. A Master Client can destroy anyone's. This is master: " + PhotonNetwork.isMasterClient); + } + } + + /// + /// Network-Destroy all GameObjects, PhotonViews and their RPCs in the room. Removes anything buffered from the server. Can only be called by Master Client (for anyone). + /// + /// + /// Can only be called by Master Client (for anyone). + /// Unlike the Destroy methods, this will remove anything from the server's room buffer. If your game + /// buffers anything beyond Instantiate and RPC calls, that will be cleaned as well from server. + /// + /// Destroying all includes: + /// - Remove anything from the server's room buffer (Instantiate, RPCs, anything buffered). + /// - Sending a message to other clients to destroy everything locally, too (affected by network lag). + /// + /// Destroying networked objects works only if they got created with PhotonNetwork.Instantiate(). + /// Objects loaded with a scene are ignored, no matter if they have PhotonView components. + /// + /// Nothing. Check error debug log for any issues. + public static void DestroyAll() + { + if (isMasterClient) + { + networkingPeer.DestroyAll(false); + } + else + { + Debug.LogError("Couldn't call DestroyAll() as only the master client is allowed to call this."); + } + } + + /// + /// Remove all buffered RPCs from server that were sent by targetPlayer. Can only be called on local player (for "self") or Master Client (for anyone). + /// + /// + /// This method requires either: + /// - This is the targetPlayer's client. + /// - This client is the Master Client (can remove any PhotonPlayer's RPCs). + /// + /// If the targetPlayer calls RPCs at the same time that this is called, + /// network lag will determine if those get buffered or cleared like the rest. + /// + /// This player's buffered RPCs get removed from server buffer. + public static void RemoveRPCs(PhotonPlayer targetPlayer) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + if (!targetPlayer.IsLocal && !isMasterClient) + { + Debug.LogError("Error; Only the MasterClient can call RemoveRPCs for other players."); + return; + } + + networkingPeer.OpCleanRpcBuffer(targetPlayer.ID); + } + + /// + /// Remove all buffered RPCs from server that were sent via targetPhotonView. The Master Client and the owner of the targetPhotonView may call this. + /// + /// + /// This method requires either: + /// - The targetPhotonView is owned by this client (Instantiated by it). + /// - This client is the Master Client (can remove any PhotonView's RPCs). + /// + /// RPCs buffered for this PhotonView get removed from server buffer. + public static void RemoveRPCs(PhotonView targetPhotonView) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + networkingPeer.CleanRpcBufferIfMine(targetPhotonView); + } + + /// + /// Remove all buffered RPCs from server that were sent in the targetGroup, if this is the Master Client or if this controls the individual PhotonView. + /// + /// + /// This method requires either: + /// - This client is the Master Client (can remove any RPCs per group). + /// - Any other client: each PhotonView is checked if it is under this client's control. Only those RPCs are removed. + /// + /// Interest group that gets all RPCs removed. + public static void RemoveRPCsInGroup(int targetGroup) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + networkingPeer.RemoveRPCsInGroup(targetGroup); + } + + /// + /// Internal to send an RPC on given PhotonView. Do not call this directly but use: PhotonView.RPC! + /// + internal static void RPC(PhotonView view, string methodName, PhotonTargets target, bool encrypt, params object[] parameters) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + if (room == null) + { + Debug.LogWarning("RPCs can only be sent in rooms. Call of \"" + methodName + "\" gets executed locally only, if at all."); + return; + } + + if (networkingPeer != null) + { + if (PhotonNetwork.room.serverSideMasterClient) + { + networkingPeer.RPC(view, methodName, target, null, encrypt, parameters); + } + else + { + if (PhotonNetwork.networkingPeer.hasSwitchedMC && target == PhotonTargets.MasterClient) + { + networkingPeer.RPC(view, methodName, PhotonTargets.Others, PhotonNetwork.masterClient, encrypt, parameters); + } + else + { + networkingPeer.RPC(view, methodName, target, null, encrypt, parameters); + } + } + } + else + { + Debug.LogWarning("Could not execute RPC " + methodName + ". Possible scene loading in progress?"); + } + } + + /// + /// Internal to send an RPC on given PhotonView. Do not call this directly but use: PhotonView.RPC! + /// + internal static void RPC(PhotonView view, string methodName, PhotonPlayer targetPlayer, bool encrpyt, params object[] parameters) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + if (room == null) + { + Debug.LogWarning("RPCs can only be sent in rooms. Call of \"" + methodName + "\" gets executed locally only, if at all."); + return; + } + + if (player == null) + { + Debug.LogError("RPC can't be sent to target PhotonPlayer being null! Did not send \"" + methodName + "\" call."); + } + + if (networkingPeer != null) + { + networkingPeer.RPC(view, methodName, PhotonTargets.Others, targetPlayer, encrpyt, parameters); + } + else + { + Debug.LogWarning("Could not execute RPC " + methodName + ". Possible scene loading in progress?"); + } + } + + /// + /// Populates SendMonoMessageTargets with currently existing GameObjects that have a Component of type. + /// + /// If null, this will use SendMonoMessageTargets as component-type (MonoBehaviour by default). + public static void CacheSendMonoMessageTargets(Type type) + { + if (type == null) type = SendMonoMessageTargetType; + PhotonNetwork.SendMonoMessageTargets = FindGameObjectsWithComponent(type); + } + + /// Finds the GameObjects with Components of a specific type (using FindObjectsOfType). + /// Type must be a Component + /// HashSet with GameObjects that have a specific type of Component. + public static HashSet FindGameObjectsWithComponent(Type type) + { + HashSet objectsWithComponent = new HashSet(); + + Component[] targetComponents = (Component[]) GameObject.FindObjectsOfType(type); + for (int index = 0; index < targetComponents.Length; index++) + { + if (targetComponents[index] != null) + { + objectsWithComponent.Add(targetComponents[index].gameObject); + } + } + + return objectsWithComponent; + } + + /// + /// Enable/disable receiving on given group (applied to PhotonViews) + /// + /// The interest group to affect. + /// Sets if receiving from group to enabled (or not). + public static void SetReceivingEnabled(int group, bool enabled) + { + if (!VerifyCanUseNetwork()) + { + return; + } + networkingPeer.SetReceivingEnabled(group, enabled); + } + + + /// + /// Enable/disable receiving on given groups (applied to PhotonViews) + /// + /// The interest groups to enable (or null). + /// The interest groups to disable (or null). + public static void SetReceivingEnabled(int[] enableGroups, int[] disableGroups) + { + if (!VerifyCanUseNetwork()) + { + return; + } + networkingPeer.SetReceivingEnabled(enableGroups, disableGroups); + } + + + /// + /// Enable/disable sending on given group (applied to PhotonViews) + /// + /// The interest group to affect. + /// Sets if sending to group is enabled (or not). + public static void SetSendingEnabled(int group, bool enabled) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + networkingPeer.SetSendingEnabled(group, enabled); + } + + + /// + /// Enable/disable sending on given groups (applied to PhotonViews) + /// + /// The interest groups to enable sending on (or null). + /// The interest groups to disable sending on (or null). + public static void SetSendingEnabled(int[] enableGroups, int[] disableGroups) + { + if (!VerifyCanUseNetwork()) + { + return; + } + networkingPeer.SetSendingEnabled(enableGroups, disableGroups); + } + + + + /// + /// Sets level prefix for PhotonViews instantiated later on. Don't set it if you need only one! + /// + /// + /// Important: If you don't use multiple level prefixes, simply don't set this value. The + /// default value is optimized out of the traffic. + /// + /// This won't affect existing PhotonViews (they can't be changed yet for existing PhotonViews). + /// + /// Messages sent with a different level prefix will be received but not executed. This affects + /// RPCs, Instantiates and synchronization. + /// + /// Be aware that PUN never resets this value, you'll have to do so yourself. + /// + /// Max value is short.MaxValue = 32767 + public static void SetLevelPrefix(short prefix) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + networkingPeer.SetLevelPrefix(prefix); + } + + /// Wraps loading a level to pause the network mesage-queue. Optionally syncs the loaded level in a room. + /// + /// To sync the loaded level in a room, set PhotonNetwork.automaticallySyncScene to true. + /// The Master Client of a room will then sync the loaded level with every other player in the room. + /// + /// While loading levels, it makes sense to not dispatch messages received by other players. + /// This method takes care of that by setting PhotonNetwork.isMessageQueueRunning = false and enabling + /// the queue when the level was loaded. + /// + /// You should make sure you don't fire RPCs before you load another scene (which doesn't contain + /// the same GameObjects and PhotonViews). You can call this in OnJoinedRoom. + /// + /// This uses Application.LoadLevel. + /// + /// + /// Number of the level to load. When using level numbers, make sure they are identical on all clients. + /// + public static void LoadLevel(int levelNumber) + { + networkingPeer.SetLevelInPropsIfSynced(levelNumber); + + PhotonNetwork.isMessageQueueRunning = false; + networkingPeer.loadingLevelAndPausedNetwork = true; + SceneManager.LoadScene(levelNumber); + } + + /// Wraps loading a level to pause the network mesage-queue. Optionally syncs the loaded level in a room. + /// + /// While loading levels, it makes sense to not dispatch messages received by other players. + /// This method takes care of that by setting PhotonNetwork.isMessageQueueRunning = false and enabling + /// the queue when the level was loaded. + /// + /// To sync the loaded level in a room, set PhotonNetwork.automaticallySyncScene to true. + /// The Master Client of a room will then sync the loaded level with every other player in the room. + /// + /// You should make sure you don't fire RPCs before you load another scene (which doesn't contain + /// the same GameObjects and PhotonViews). You can call this in OnJoinedRoom. + /// + /// This uses Application.LoadLevel. + /// + /// + /// Name of the level to load. Make sure it's available to all clients in the same room. + /// + public static void LoadLevel(string levelName) + { + networkingPeer.SetLevelInPropsIfSynced(levelName); + + PhotonNetwork.isMessageQueueRunning = false; + networkingPeer.loadingLevelAndPausedNetwork = true; + SceneManager.LoadScene(levelName); + } + + + /// + /// This operation makes Photon call your custom web-service by name (path) with the given parameters. + /// + /// + /// This is a server-side feature which must be setup in the Photon Cloud Dashboard prior to use.
+ /// See the Turnbased Feature Overview for a short intro.
+ /// http://doc.photonengine.com/en/turnbased/current/getting-started/feature-overview + ///
+ /// The Parameters will be converted into JSon format, so make sure your parameters are compatible. + /// + /// See PhotonNetworkingMessage.OnWebRpcResponse on how to get a response. + /// + /// It's important to understand that the OperationResponse only tells if the WebRPC could be called. + /// The content of the response contains any values your web-service sent and the error/success code. + /// In case the web-service failed, an error code and a debug message are usually inside the + /// OperationResponse. + /// + /// The class WebRpcResponse is a helper-class that extracts the most valuable content from the WebRPC + /// response. + ///
+ /// + /// Example callback implementation:
+    ///
+    /// public void OnWebRpcResponse(OperationResponse response)
+    /// {
+    ///     WebRpcResponse webResponse = new WebRpcResponse(operationResponse);
+    ///     if (webResponse.ReturnCode != 0) { //...
+    ///     }
+    ///
+    ///     switch (webResponse.Name) { //...
+    ///     }
+    ///     // and so on
+    /// }
+ ///
+ public static bool WebRpc(string name, object parameters) + { + return networkingPeer.WebRpc(name, parameters); + } + + +#if UNITY_EDITOR + [Conditional("UNITY_EDITOR")] + public static void CreateSettings() + { + PhotonNetwork.PhotonServerSettings = (ServerSettings)Resources.Load(PhotonNetwork.serverSettingsAssetFile, typeof(ServerSettings)); + if (PhotonNetwork.PhotonServerSettings != null) + { + return; + } + + // find out if ServerSettings can be instantiated (existing script check) + ScriptableObject serverSettingTest = ScriptableObject.CreateInstance("ServerSettings"); + if (serverSettingTest == null) + { + Debug.LogError("missing settings script"); + return; + } + UnityEngine.Object.DestroyImmediate(serverSettingTest); + + + // if still not loaded, create one + if (PhotonNetwork.PhotonServerSettings == null) + { + string settingsPath = Path.GetDirectoryName(PhotonNetwork.serverSettingsAssetPath); + if (!Directory.Exists(settingsPath)) + { + Directory.CreateDirectory(settingsPath); + AssetDatabase.ImportAsset(settingsPath); + } + + PhotonNetwork.PhotonServerSettings = (ServerSettings)ScriptableObject.CreateInstance("ServerSettings"); + if (PhotonNetwork.PhotonServerSettings != null) + { + AssetDatabase.CreateAsset(PhotonNetwork.PhotonServerSettings, PhotonNetwork.serverSettingsAssetPath); + } + else + { + Debug.LogError("PUN failed creating a settings file. ScriptableObject.CreateInstance(\"ServerSettings\") returned null. Will try again later."); + } + } + } + + + /// + /// Internally used by Editor scripts, called on Hierarchy change (includes scene save) to remove surplus hidden PhotonHandlers. + /// + public static void InternalCleanPhotonMonoFromSceneIfStuck() + { + PhotonHandler[] photonHandlers = GameObject.FindObjectsOfType(typeof(PhotonHandler)) as PhotonHandler[]; + if (photonHandlers != null && photonHandlers.Length > 0) + { + Debug.Log("Cleaning up hidden PhotonHandler instances in scene. Please save it. This is not an issue."); + foreach (PhotonHandler photonHandler in photonHandlers) + { + // Debug.Log("Removing Handler: " + photonHandler + " photonHandler.gameObject: " + photonHandler.gameObject); + photonHandler.gameObject.hideFlags = 0; + + if (photonHandler.gameObject != null && photonHandler.gameObject.name == "PhotonMono") + { + GameObject.DestroyImmediate(photonHandler.gameObject); + } + + Component.DestroyImmediate(photonHandler); + } + } + } +#endif + +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonNetwork.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonNetwork.cs.meta new file mode 100644 index 0000000..23f48a0 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonNetwork.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88e11b3353de7e94d84b1ec5adbdd15e +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonPlayer.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonPlayer.cs new file mode 100644 index 0000000..ecbc303 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonPlayer.cs @@ -0,0 +1,428 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2011 Exit Games GmbH +// +// +// Represents a player, identified by actorID (a.k.a. ActorNumber). +// Caches properties of a player. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using ExitGames.Client.Photon; +using UnityEngine; +using Hashtable = ExitGames.Client.Photon.Hashtable; + + +/// +/// Summarizes a "player" within a room, identified (in that room) by actorID. +/// +/// +/// Each player has an actorId (or ID), valid for that room. It's -1 until it's assigned by server. +/// Each client can set it's player's custom properties with SetCustomProperties, even before being in a room. +/// They are synced when joining a room. +/// +/// \ingroup publicApi +public class PhotonPlayer : IComparable, IComparable, IEquatable, IEquatable +{ + /// This player's actorID + public int ID + { + get { return this.actorID; } + } + + /// Identifier of this player in current room. + private int actorID = -1; + + private string nameField = ""; + + /// Nickname of this player. + /// Set the PhotonNetwork.playerName to make the name synchronized in a room. + public string NickName + { + get + { + return this.nameField; + } + set + { + if (!IsLocal) + { + Debug.LogError("Error: Cannot change the name of a remote player!"); + return; + } + if (string.IsNullOrEmpty(value) || value.Equals(this.nameField)) + { + return; + } + + this.nameField = value; + PhotonNetwork.playerName = value; // this will sync the local player's name in a room + } + } + + /// UserId of the player, available when the room got created with RoomOptions.PublishUserId = true. + /// Useful for PhotonNetwork.FindFriends and blocking slots in a room for expected players (e.g. in PhotonNetwork.CreateRoom). + public string UserId { get; internal set; } + + /// Only one player is controlled by each client. Others are not local. + public readonly bool IsLocal = false; + + /// + /// True if this player is the Master Client of the current room. + /// + /// + /// See also: PhotonNetwork.masterClient. + /// + public bool IsMasterClient + { + get { return (PhotonNetwork.networkingPeer.mMasterClientId == this.ID); } + } + + /// Players might be inactive in a room when PlayerTTL for a room is > 0. If true, the player is not getting events from this room (now) but can return later. + public bool IsInactive { get; set; } // needed for rejoins + + /// Read-only cache for custom properties of player. Set via PhotonPlayer.SetCustomProperties. + /// + /// Don't modify the content of this Hashtable. Use SetCustomProperties and the + /// properties of this class to modify values. When you use those, the client will + /// sync values with the server. + /// + /// + public Hashtable CustomProperties { get; internal set; } + + /// Creates a Hashtable with all properties (custom and "well known" ones). + /// If used more often, this should be cached. + public Hashtable AllProperties + { + get + { + Hashtable allProps = new Hashtable(); + allProps.Merge(this.CustomProperties); + allProps[ActorProperties.PlayerName] = this.NickName; + return allProps; + } + } + + /// Can be used to store a reference that's useful to know "by player". + /// Example: Set a player's character as Tag by assigning the GameObject on Instantiate. + public object TagObject; + + + /// + /// Creates a PhotonPlayer instance. + /// + /// If this is the local peer's player (or a remote one). + /// ID or ActorNumber of this player in the current room (a shortcut to identify each player in room) + /// Name of the player (a "well known property"). + public PhotonPlayer(bool isLocal, int actorID, string name) + { + this.CustomProperties = new Hashtable(); + this.IsLocal = isLocal; + this.actorID = actorID; + this.nameField = name; + } + + /// + /// Internally used to create players from event Join + /// + protected internal PhotonPlayer(bool isLocal, int actorID, Hashtable properties) + { + this.CustomProperties = new Hashtable(); + this.IsLocal = isLocal; + this.actorID = actorID; + + this.InternalCacheProperties(properties); + } + + /// + /// Makes PhotonPlayer comparable + /// + public override bool Equals(object p) + { + PhotonPlayer pp = p as PhotonPlayer; + return (pp != null && this.GetHashCode() == pp.GetHashCode()); + } + + public override int GetHashCode() + { + return this.ID; + } + + /// + /// Used internally, to update this client's playerID when assigned. + /// + internal void InternalChangeLocalID(int newID) + { + if (!this.IsLocal) + { + Debug.LogError("ERROR You should never change PhotonPlayer IDs!"); + return; + } + + this.actorID = newID; + } + + /// + /// Caches custom properties for this player. + /// + internal void InternalCacheProperties(Hashtable properties) + { + if (properties == null || properties.Count == 0 || this.CustomProperties.Equals(properties)) + { + return; + } + + if (properties.ContainsKey(ActorProperties.PlayerName)) + { + this.nameField = (string)properties[ActorProperties.PlayerName]; + } + if (properties.ContainsKey(ActorProperties.UserId)) + { + this.UserId = (string)properties[ActorProperties.UserId]; + } + if (properties.ContainsKey(ActorProperties.IsInactive)) + { + this.IsInactive = (bool)properties[ActorProperties.IsInactive]; //TURNBASED new well-known propery for players + } + + this.CustomProperties.MergeStringKeys(properties); + this.CustomProperties.StripKeysWithNullValues(); + } + + + /// + /// Updates the this player's Custom Properties with new/updated key-values. + /// + /// + /// Custom Properties are a key-value set (Hashtable) which is available to all players in a room. + /// They can relate to the room or individual players and are useful when only the current value + /// of something is of interest. For example: The map of a room. + /// All keys must be strings. + /// + /// The Room and the PhotonPlayer class both have SetCustomProperties methods. + /// Also, both classes offer access to current key-values by: customProperties. + /// + /// Always use SetCustomProperties to change values. + /// To reduce network traffic, set only values that actually changed. + /// New properties are added, existing values are updated. + /// Other values will not be changed, so only provide values that changed or are new. + /// + /// To delete a named (custom) property of this room, use null as value. + /// + /// Locally, SetCustomProperties will update it's cache without delay. + /// Other clients are updated through Photon (the server) with a fitting operation. + /// + /// Check and Swap + /// + /// SetCustomProperties have the option to do a server-side Check-And-Swap (CAS): + /// Values only get updated if the expected values are correct. + /// The expectedValues can be different key/values than the propertiesToSet. So you can + /// check some key and set another key's value (if the check succeeds). + /// + /// If the client's knowledge of properties is wrong or outdated, it can't set values with CAS. + /// This can be useful to keep players from concurrently setting values. For example: If all players + /// try to pickup some card or item, only one should get it. With CAS, only the first SetProperties + /// gets executed server-side and any other (sent at the same time) fails. + /// + /// The server will broadcast successfully changed values and the local "cache" of customProperties + /// only gets updated after a roundtrip (if anything changed). + /// + /// You can do a "webForward": Photon will send the changed properties to a WebHook defined + /// for your application. + /// + /// OfflineMode + /// + /// While PhotonNetwork.offlineMode is true, the expectedValues and webForward parameters are ignored. + /// In OfflineMode, the local customProperties values are immediately updated (without the roundtrip). + /// + /// The new properties to be set. + /// At least one property key/value set to check server-side. Key and value must be correct. Ignored in OfflineMode. + /// Set to true, to forward the set properties to a WebHook, defined for this app (in Dashboard). Ignored in OfflineMode. + public void SetCustomProperties(Hashtable propertiesToSet, Hashtable expectedValues = null, bool webForward = false) + { + if (propertiesToSet == null) + { + return; + } + + Hashtable customProps = propertiesToSet.StripToStringKeys() as Hashtable; + Hashtable customPropsToCheck = expectedValues.StripToStringKeys() as Hashtable; + + + // no expected values -> set and callback + bool noCas = customPropsToCheck == null || customPropsToCheck.Count == 0; + bool inOnlineRoom = this.actorID > 0 && !PhotonNetwork.offlineMode; + + if (noCas) + { + this.CustomProperties.Merge(customProps); + this.CustomProperties.StripKeysWithNullValues(); + } + + if (inOnlineRoom) + { + PhotonNetwork.networkingPeer.OpSetPropertiesOfActor(this.actorID, customProps, customPropsToCheck, webForward); + } + + if (!inOnlineRoom || noCas) + { + this.InternalCacheProperties(customProps); + NetworkingPeer.SendMonoMessage(PhotonNetworkingMessage.OnPhotonPlayerPropertiesChanged, this, customProps); + } + } + + /// + /// Try to get a specific player by id. + /// + /// ActorID + /// The player with matching actorID or null, if the actorID is not in use. + public static PhotonPlayer Find(int ID) + { + if (PhotonNetwork.networkingPeer != null) + { + return PhotonNetwork.networkingPeer.GetPlayerWithId(ID); + } + return null; + } + + public PhotonPlayer Get(int id) + { + return PhotonPlayer.Find(id); + } + + public PhotonPlayer GetNext() + { + return GetNextFor(this.ID); + } + + public PhotonPlayer GetNextFor(PhotonPlayer currentPlayer) + { + if (currentPlayer == null) + { + return null; + } + return GetNextFor(currentPlayer.ID); + } + + public PhotonPlayer GetNextFor(int currentPlayerId) + { + if (PhotonNetwork.networkingPeer == null || PhotonNetwork.networkingPeer.mActors == null || PhotonNetwork.networkingPeer.mActors.Count < 2) + { + return null; + } + + Dictionary players = PhotonNetwork.networkingPeer.mActors; + int nextHigherId = int.MaxValue; // we look for the next higher ID + int lowestId = currentPlayerId; // if we are the player with the highest ID, there is no higher and we return to the lowest player's id + + foreach (int playerid in players.Keys) + { + if (playerid < lowestId) + { + lowestId = playerid; // less than any other ID (which must be at least less than this player's id). + } + else if (playerid > currentPlayerId && playerid < nextHigherId) + { + nextHigherId = playerid; // more than our ID and less than those found so far. + } + } + + //UnityEngine.Debug.LogWarning("Debug. " + currentPlayerId + " lower: " + lowestId + " higher: " + nextHigherId + " "); + //UnityEngine.Debug.LogWarning(this.RoomReference.GetPlayer(currentPlayerId)); + //UnityEngine.Debug.LogWarning(this.RoomReference.GetPlayer(lowestId)); + //if (nextHigherId != int.MaxValue) UnityEngine.Debug.LogWarning(this.RoomReference.GetPlayer(nextHigherId)); + return (nextHigherId != int.MaxValue) ? players[nextHigherId] : players[lowestId]; + } + + #region IComparable implementation + + public int CompareTo (PhotonPlayer other) + { + if ( other == null) + { + return 0; + } + + return this.GetHashCode().CompareTo(other.GetHashCode()); + } + + public int CompareTo (int other) + { + return this.GetHashCode().CompareTo(other); + } + + #endregion + + #region IEquatable implementation + + public bool Equals (PhotonPlayer other) + { + if ( other == null) + { + return false; + } + + return this.GetHashCode().Equals(other.GetHashCode()); + } + + public bool Equals (int other) + { + return this.GetHashCode().Equals(other); + } + + #endregion + + /// + /// Brief summary string of the PhotonPlayer. Includes name or player.ID and if it's the Master Client. + /// + public override string ToString() + { + if (string.IsNullOrEmpty(this.NickName)) + { + return string.Format("#{0:00}{1}{2}", this.ID, this.IsInactive ? " (inactive)" : " ", this.IsMasterClient ? "(master)":""); + } + + return string.Format("'{0}'{1}{2}", this.NickName, this.IsInactive ? " (inactive)" : " ", this.IsMasterClient ? "(master)" : ""); + } + + /// + /// String summary of the PhotonPlayer: player.ID, name and all custom properties of this user. + /// + /// + /// Use with care and not every frame! + /// Converts the customProperties to a String on every single call. + /// + public string ToStringFull() + { + return string.Format("#{0:00} '{1}'{2} {3}", this.ID, this.NickName, this.IsInactive ? " (inactive)" : "", this.CustomProperties.ToStringFull()); + } + + + #region Obsoleted variable names + + [Obsolete("Please use NickName (updated case for naming).")] + public string name { get { return this.NickName; } set { this.NickName = value; } } + + [Obsolete("Please use UserId (updated case for naming).")] + public string userId { get { return this.UserId; } internal set { this.UserId = value; } } + + [Obsolete("Please use IsLocal (updated case for naming).")] + public bool isLocal { get { return this.IsLocal; } } + + [Obsolete("Please use IsMasterClient (updated case for naming).")] + public bool isMasterClient { get { return this.IsMasterClient; } } + + [Obsolete("Please use IsInactive (updated case for naming).")] + public bool isInactive { get { return this.IsInactive; } set { this.IsInactive = value; } } + + [Obsolete("Please use CustomProperties (updated case for naming).")] + public Hashtable customProperties { get { return this.CustomProperties; } internal set { this.CustomProperties = value; } } + + [Obsolete("Please use AllProperties (updated case for naming).")] + public Hashtable allProperties { get { return this.AllProperties; } } + + #endregion +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonPlayer.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonPlayer.cs.meta new file mode 100644 index 0000000..d494ca7 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonPlayer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e3e4b5bebc687044b9c6c2803c36be3d +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStatsGui.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStatsGui.cs new file mode 100644 index 0000000..bc32525 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStatsGui.cs @@ -0,0 +1,159 @@ +#pragma warning disable 1587 +/// \file +/// Part of the [Optional GUI](@ref optionalGui). +#pragma warning restore 1587 + + +using ExitGames.Client.Photon; +using UnityEngine; + + +/// +/// Basic GUI to show traffic and health statistics of the connection to Photon, +/// toggled by shift+tab. +/// +/// +/// The shown health values can help identify problems with connection losses or performance. +/// Example: +/// If the time delta between two consecutive SendOutgoingCommands calls is a second or more, +/// chances rise for a disconnect being caused by this (because acknowledgements to the server +/// need to be sent in due time). +/// +/// \ingroup optionalGui +public class PhotonStatsGui : MonoBehaviour +{ + /// Shows or hides GUI (does not affect if stats are collected). + public bool statsWindowOn = true; + + /// Option to turn collecting stats on or off (used in Update()). + public bool statsOn = true; + + /// Shows additional "health" values of connection. + public bool healthStatsVisible; + + /// Shows additional "lower level" traffic stats. + public bool trafficStatsOn; + + /// Show buttons to control stats and reset them. + public bool buttonsOn; + + /// Positioning rect for window. + public Rect statsRect = new Rect(0, 100, 200, 50); + + /// Unity GUI Window ID (must be unique or will cause issues). + public int WindowId = 100; + + + public void Start() + { + if (this.statsRect.x <= 0) + { + this.statsRect.x = Screen.width - this.statsRect.width; + } + } + + /// Checks for shift+tab input combination (to toggle statsOn). + public void Update() + { + if (Input.GetKeyDown(KeyCode.Tab) && Input.GetKey(KeyCode.LeftShift)) + { + this.statsWindowOn = !this.statsWindowOn; + this.statsOn = true; // enable stats when showing the window + } + } + + public void OnGUI() + { + if (PhotonNetwork.networkingPeer.TrafficStatsEnabled != statsOn) + { + PhotonNetwork.networkingPeer.TrafficStatsEnabled = this.statsOn; + } + + if (!this.statsWindowOn) + { + return; + } + + this.statsRect = GUILayout.Window(this.WindowId, this.statsRect, this.TrafficStatsWindow, "Messages (shift+tab)"); + } + + public void TrafficStatsWindow(int windowID) + { + bool statsToLog = false; + TrafficStatsGameLevel gls = PhotonNetwork.networkingPeer.TrafficStatsGameLevel; + long elapsedMs = PhotonNetwork.networkingPeer.TrafficStatsElapsedMs / 1000; + if (elapsedMs == 0) + { + elapsedMs = 1; + } + + GUILayout.BeginHorizontal(); + this.buttonsOn = GUILayout.Toggle(this.buttonsOn, "buttons"); + this.healthStatsVisible = GUILayout.Toggle(this.healthStatsVisible, "health"); + this.trafficStatsOn = GUILayout.Toggle(this.trafficStatsOn, "traffic"); + GUILayout.EndHorizontal(); + + string total = string.Format("Out {0,4} | In {1,4} | Sum {2,4}", gls.TotalOutgoingMessageCount, gls.TotalIncomingMessageCount, gls.TotalMessageCount); + string elapsedTime = string.Format("{0}sec average:", elapsedMs); + string average = string.Format("Out {0,4} | In {1,4} | Sum {2,4}", gls.TotalOutgoingMessageCount / elapsedMs, gls.TotalIncomingMessageCount / elapsedMs, gls.TotalMessageCount / elapsedMs); + GUILayout.Label(total); + GUILayout.Label(elapsedTime); + GUILayout.Label(average); + + if (this.buttonsOn) + { + GUILayout.BeginHorizontal(); + this.statsOn = GUILayout.Toggle(this.statsOn, "stats on"); + if (GUILayout.Button("Reset")) + { + PhotonNetwork.networkingPeer.TrafficStatsReset(); + PhotonNetwork.networkingPeer.TrafficStatsEnabled = true; + } + statsToLog = GUILayout.Button("To Log"); + GUILayout.EndHorizontal(); + } + + string trafficStatsIn = string.Empty; + string trafficStatsOut = string.Empty; + if (this.trafficStatsOn) + { + GUILayout.Box("Traffic Stats"); + trafficStatsIn = "Incoming: \n" + PhotonNetwork.networkingPeer.TrafficStatsIncoming.ToString(); + trafficStatsOut = "Outgoing: \n" + PhotonNetwork.networkingPeer.TrafficStatsOutgoing.ToString(); + GUILayout.Label(trafficStatsIn); + GUILayout.Label(trafficStatsOut); + } + + string healthStats = string.Empty; + if (this.healthStatsVisible) + { + GUILayout.Box("Health Stats"); + healthStats = string.Format( + "ping: {6}[+/-{7}]ms resent:{8} \n\nmax ms between\nsend: {0,4} \ndispatch: {1,4} \n\nlongest dispatch for: \nev({3}):{2,3}ms \nop({5}):{4,3}ms", + gls.LongestDeltaBetweenSending, + gls.LongestDeltaBetweenDispatching, + gls.LongestEventCallback, + gls.LongestEventCallbackCode, + gls.LongestOpResponseCallback, + gls.LongestOpResponseCallbackOpCode, + PhotonNetwork.networkingPeer.RoundTripTime, + PhotonNetwork.networkingPeer.RoundTripTimeVariance, + PhotonNetwork.networkingPeer.ResentReliableCommands); + GUILayout.Label(healthStats); + } + + if (statsToLog) + { + string complete = string.Format("{0}\n{1}\n{2}\n{3}\n{4}\n{5}", total, elapsedTime, average, trafficStatsIn, trafficStatsOut, healthStats); + Debug.Log(complete); + } + + // if anything was clicked, the height of this window is likely changed. reduce it to be layouted again next frame + if (GUI.changed) + { + this.statsRect.height = 100; + } + + GUI.DragWindow(); + } +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStatsGui.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStatsGui.cs.meta new file mode 100644 index 0000000..dc1049b --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStatsGui.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d06466c03d263624786afa88b52928b6 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStreamQueue.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStreamQueue.cs new file mode 100644 index 0000000..fcfecba --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStreamQueue.cs @@ -0,0 +1,187 @@ +using System.Collections.Generic; +using UnityEngine; + +/// +/// The PhotonStreamQueue helps you poll object states at higher frequencies then what +/// PhotonNetwork.sendRate dictates and then sends all those states at once when +/// Serialize() is called. +/// On the receiving end you can call Deserialize() and then the stream will roll out +/// the received object states in the same order and timeStep they were recorded in. +/// +public class PhotonStreamQueue +{ + #region Members + + private int m_SampleRate; + private int m_SampleCount; + private int m_ObjectsPerSample = -1; + + private float m_LastSampleTime = -Mathf.Infinity; + private int m_LastFrameCount = -1; + private int m_NextObjectIndex = -1; + + private List m_Objects = new List(); + + private bool m_IsWriting; + + #endregion + + /// + /// Initializes a new instance of the class. + /// + /// How many times per second should the object states be sampled + public PhotonStreamQueue(int sampleRate) + { + this.m_SampleRate = sampleRate; + } + + private void BeginWritePackage() + { + //If not enough time has passed since the last sample, we don't want to write anything + if (Time.realtimeSinceStartup < this.m_LastSampleTime + 1f/this.m_SampleRate) + { + this.m_IsWriting = false; + return; + } + + if (this.m_SampleCount == 1) + { + this.m_ObjectsPerSample = this.m_Objects.Count; + //Debug.Log( "Setting m_ObjectsPerSample to " + m_ObjectsPerSample ); + } + else if (this.m_SampleCount > 1) + { + if (this.m_Objects.Count/this.m_SampleCount != this.m_ObjectsPerSample) + { + Debug.LogWarning("The number of objects sent via a PhotonStreamQueue has to be the same each frame"); + Debug.LogWarning("Objects in List: " + this.m_Objects.Count + " / Sample Count: " + this.m_SampleCount + " = " + (this.m_Objects.Count/this.m_SampleCount) + " != " + this.m_ObjectsPerSample); + } + } + + this.m_IsWriting = true; + this.m_SampleCount++; + this.m_LastSampleTime = Time.realtimeSinceStartup; + + /*if( m_SampleCount > 1 ) + { + Debug.Log( "Check: " + m_Objects.Count + " / " + m_SampleCount + " = " + ( m_Objects.Count / m_SampleCount ) + " = " + m_ObjectsPerSample ); + }*/ + } + + /// + /// Resets the PhotonStreamQueue. You need to do this whenever the amount of objects you are observing changes + /// + public void Reset() + { + this.m_SampleCount = 0; + this.m_ObjectsPerSample = -1; + + this.m_LastSampleTime = -Mathf.Infinity; + this.m_LastFrameCount = -1; + + this.m_Objects.Clear(); + } + + /// + /// Adds the next object to the queue. This works just like PhotonStream.SendNext + /// + /// The object you want to add to the queue + public void SendNext(object obj) + { + if (Time.frameCount != this.m_LastFrameCount) + { + BeginWritePackage(); + } + + this.m_LastFrameCount = Time.frameCount; + + if (this.m_IsWriting == false) + { + return; + } + + this.m_Objects.Add(obj); + } + + /// + /// Determines whether the queue has stored any objects + /// + public bool HasQueuedObjects() + { + return this.m_NextObjectIndex != -1; + } + + /// + /// Receives the next object from the queue. This works just like PhotonStream.ReceiveNext + /// + /// + public object ReceiveNext() + { + if (this.m_NextObjectIndex == -1) + { + return null; + } + + if (this.m_NextObjectIndex >= this.m_Objects.Count) + { + this.m_NextObjectIndex -= this.m_ObjectsPerSample; + } + + return this.m_Objects[this.m_NextObjectIndex++]; + } + + /// + /// Serializes the specified stream. Call this in your OnPhotonSerializeView method to send the whole recorded stream. + /// + /// The PhotonStream you receive as a parameter in OnPhotonSerializeView + public void Serialize(PhotonStream stream) + { + // TODO: find a better solution for this: + // the "if" is a workaround for packages which have only 1 sample/frame. in that case, SendNext didn't set the obj per sample. + if (m_Objects.Count > 0 && this.m_ObjectsPerSample < 0) + { + this.m_ObjectsPerSample = m_Objects.Count; + } + + stream.SendNext(this.m_SampleCount); + stream.SendNext(this.m_ObjectsPerSample); + + for (int i = 0; i < this.m_Objects.Count; ++i) + { + stream.SendNext(this.m_Objects[i]); + } + + //Debug.Log( "Serialize " + m_SampleCount + " samples with " + m_ObjectsPerSample + " objects per sample. object count: " + m_Objects.Count + " / " + ( m_SampleCount * m_ObjectsPerSample ) ); + + this.m_Objects.Clear(); + this.m_SampleCount = 0; + } + + /// + /// Deserializes the specified stream. Call this in your OnPhotonSerializeView method to receive the whole recorded stream. + /// + /// The PhotonStream you receive as a parameter in OnPhotonSerializeView + public void Deserialize(PhotonStream stream) + { + this.m_Objects.Clear(); + + this.m_SampleCount = (int)stream.ReceiveNext(); + this.m_ObjectsPerSample = (int)stream.ReceiveNext(); + + for (int i = 0; i < this.m_SampleCount*this.m_ObjectsPerSample; ++i) + { + this.m_Objects.Add(stream.ReceiveNext()); + } + + if (this.m_Objects.Count > 0) + { + this.m_NextObjectIndex = 0; + } + else + { + this.m_NextObjectIndex = -1; + } + + //Debug.Log( "Deserialized " + m_SampleCount + " samples with " + m_ObjectsPerSample + " objects per sample. object count: " + m_Objects.Count + " / " + ( m_SampleCount * m_ObjectsPerSample ) ); + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStreamQueue.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStreamQueue.cs.meta new file mode 100644 index 0000000..b225d0d --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonStreamQueue.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 006991e32d9020c4d896f161318a2bc0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonView.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonView.cs new file mode 100644 index 0000000..0eada82 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonView.cs @@ -0,0 +1,692 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2011 Exit Games GmbH +// +// +// +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using System; +using UnityEngine; +using System.Reflection; +using System.Collections.Generic; +using ExitGames.Client.Photon; + +#if UNITY_EDITOR +using UnityEditor; +#endif + + +public enum ViewSynchronization { Off, ReliableDeltaCompressed, Unreliable, UnreliableOnChange } +public enum OnSerializeTransform { OnlyPosition, OnlyRotation, OnlyScale, PositionAndRotation, All } +public enum OnSerializeRigidBody { OnlyVelocity, OnlyAngularVelocity, All } + +/// +/// Options to define how Ownership Transfer is handled per PhotonView. +/// +/// +/// This setting affects how RequestOwnership and TransferOwnership work at runtime. +/// +public enum OwnershipOption +{ + /// + /// Ownership is fixed. Instantiated objects stick with their creator, scene objects always belong to the Master Client. + /// + Fixed, + /// + /// Ownership can be taken away from the current owner who can't object. + /// + Takeover, + /// + /// Ownership can be requested with PhotonView.RequestOwnership but the current owner has to agree to give up ownership. + /// + /// The current owner has to implement IPunCallbacks.OnOwnershipRequest to react to the ownership request. + Request +} + + +/// +/// PUN's NetworkView replacement class for networking. Use it like a NetworkView. +/// +/// \ingroup publicApi +[AddComponentMenu("Photon Networking/Photon View &v")] +public class PhotonView : Photon.MonoBehaviour +{ + #if UNITY_EDITOR + [ContextMenu("Open PUN Wizard")] + void OpenPunWizard() + { + EditorApplication.ExecuteMenuItem("Window/Photon Unity Networking"); + } + #endif + + public int ownerId; + + public int group = 0; + + protected internal bool mixedModeIsReliable = false; + + + /// + /// Flag to check if ownership of this photonView was set during the lifecycle. Used for checking when joining late if event with mismatched owner and sender needs addressing. + /// + /// true if owner ship was transfered; otherwise, false. + public bool OwnerShipWasTransfered; + + + // NOTE: this is now an integer because unity won't serialize short (needed for instantiation). we SEND only a short though! + // NOTE: prefabs have a prefixBackup of -1. this is replaced with any currentLevelPrefix that's used at runtime. instantiated GOs get their prefix set pre-instantiation (so those are not -1 anymore) + public int prefix + { + get + { + if (this.prefixBackup == -1 && PhotonNetwork.networkingPeer != null) + { + this.prefixBackup = PhotonNetwork.networkingPeer.currentLevelPrefix; + } + + return this.prefixBackup; + } + set { this.prefixBackup = value; } + } + + // this field is serialized by unity. that means it is copied when instantiating a persistent obj into the scene + public int prefixBackup = -1; + + /// + /// This is the instantiationData that was passed when calling PhotonNetwork.Instantiate* (if that was used to spawn this prefab) + /// + public object[] instantiationData + { + get + { + if (!this.didAwake) + { + // even though viewID and instantiationID are setup before the GO goes live, this data can't be set. as workaround: fetch it if needed + this.instantiationDataField = PhotonNetwork.networkingPeer.FetchInstantiationData(this.instantiationId); + } + return this.instantiationDataField; + } + set { this.instantiationDataField = value; } + } + + internal object[] instantiationDataField; + + /// + /// For internal use only, don't use + /// + protected internal object[] lastOnSerializeDataSent = null; + + /// + /// For internal use only, don't use + /// + protected internal object[] lastOnSerializeDataReceived = null; + + public ViewSynchronization synchronization; + + public OnSerializeTransform onSerializeTransformOption = OnSerializeTransform.PositionAndRotation; + + public OnSerializeRigidBody onSerializeRigidBodyOption = OnSerializeRigidBody.All; + + /// Defines if ownership of this PhotonView is fixed, can be requested or simply taken. + /// + /// Note that you can't edit this value at runtime. + /// The options are described in enum OwnershipOption. + /// The current owner has to implement IPunCallbacks.OnOwnershipRequest to react to the ownership request. + /// + public OwnershipOption ownershipTransfer = OwnershipOption.Fixed; + + public List ObservedComponents; + Dictionary m_OnSerializeMethodInfos = new Dictionary(3); + +#if UNITY_EDITOR + // Suppressing compiler warning "this variable is never used". Only used in the CustomEditor, only in Editor + #pragma warning disable 0414 + [SerializeField] + bool ObservedComponentsFoldoutOpen = true; + #pragma warning restore 0414 +#endif + + [SerializeField] + private int viewIdField = 0; + + /// + /// The ID of the PhotonView. Identifies it in a networked game (per room). + /// + /// See: [Network Instantiation](@ref instantiateManual) + public int viewID + { + get { return this.viewIdField; } + set + { + // if ID was 0 for an awakened PhotonView, the view should add itself into the networkingPeer.photonViewList after setup + bool viewMustRegister = this.didAwake && this.viewIdField == 0; + + // TODO: decide if a viewID can be changed once it wasn't 0. most likely that is not a good idea + // check if this view is in networkingPeer.photonViewList and UPDATE said list (so we don't keep the old viewID with a reference to this object) + // PhotonNetwork.networkingPeer.RemovePhotonView(this, true); + + this.ownerId = value / PhotonNetwork.MAX_VIEW_IDS; + + this.viewIdField = value; + + if (viewMustRegister) + { + PhotonNetwork.networkingPeer.RegisterPhotonView(this); + } + //Debug.Log("Set viewID: " + value + " -> owner: " + this.ownerId + " subId: " + this.subId); + } + } + + public int instantiationId; // if the view was instantiated with a GO, this GO has a instantiationID (first view's viewID) + + /// True if the PhotonView was loaded with the scene (game object) or instantiated with InstantiateSceneObject. + /// + /// Scene objects are not owned by a particular player but belong to the scene. Thus they don't get destroyed when their + /// creator leaves the game and the current Master Client can control them (whoever that is). + /// The ownerId is 0 (player IDs are 1 and up). + /// + public bool isSceneView + { + get { return this.CreatorActorNr == 0; } + } + + /// + /// The owner of a PhotonView is the player who created the GameObject with that view. Objects in the scene don't have an owner. + /// + /// + /// The owner/controller of a PhotonView is also the client which sends position updates of the GameObject. + /// + /// Ownership can be transferred to another player with PhotonView.TransferOwnership or any player can request + /// ownership by calling the PhotonView's RequestOwnership method. + /// The current owner has to implement IPunCallbacks.OnOwnershipRequest to react to the ownership request. + /// + public PhotonPlayer owner + { + get + { + return PhotonPlayer.Find(this.ownerId); + } + } + + public int OwnerActorNr + { + get { return this.ownerId; } + } + + public bool isOwnerActive + { + get { return this.ownerId != 0 && PhotonNetwork.networkingPeer.mActors.ContainsKey(this.ownerId); } + } + + public int CreatorActorNr + { + get { return this.viewIdField / PhotonNetwork.MAX_VIEW_IDS; } + } + + /// + /// True if the PhotonView is "mine" and can be controlled by this client. + /// + /// + /// PUN has an ownership concept that defines who can control and destroy each PhotonView. + /// True in case the owner matches the local PhotonPlayer. + /// True if this is a scene photonview on the Master client. + /// + public bool isMine + { + get + { + return (this.ownerId == PhotonNetwork.player.ID) || (!this.isOwnerActive && PhotonNetwork.isMasterClient); + } + } + + /// + /// The current master ID so that we can compare when we receive OnMasterClientSwitched() callback + /// It's public so that we can check it during ownerId assignments in networkPeer script + /// TODO: Maybe we can have the networkPeer always aware of the previous MasterClient? + /// + public int currentMasterID = -1; + protected internal bool didAwake; + + [SerializeField] + protected internal bool isRuntimeInstantiated; + + protected internal bool removedFromLocalViewList; + + internal MonoBehaviour[] RpcMonoBehaviours; + private MethodInfo OnSerializeMethodInfo; + + private bool failedToFindOnSerialize; + + /// Called by Unity on start of the application and does a setup the PhotonView. + protected internal void Awake() + { + if (this.viewID != 0) + { + // registration might be too late when some script (on this GO) searches this view BUT GetPhotonView() can search ALL in that case + PhotonNetwork.networkingPeer.RegisterPhotonView(this); + this.instantiationDataField = PhotonNetwork.networkingPeer.FetchInstantiationData(this.instantiationId); + } + + this.didAwake = true; + } + + /// + /// Depending on the PhotonView's ownershipTransfer setting, any client can request to become owner of the PhotonView. + /// + /// + /// Requesting ownership can give you control over a PhotonView, if the ownershipTransfer setting allows that. + /// The current owner might have to implement IPunCallbacks.OnOwnershipRequest to react to the ownership request. + /// + /// The owner/controller of a PhotonView is also the client which sends position updates of the GameObject. + /// + public void RequestOwnership() + { + PhotonNetwork.networkingPeer.RequestOwnership(this.viewID, this.ownerId); + } + + /// + /// Transfers the ownership of this PhotonView (and GameObject) to another player. + /// + /// + /// The owner/controller of a PhotonView is also the client which sends position updates of the GameObject. + /// + public void TransferOwnership(PhotonPlayer newOwner) + { + this.TransferOwnership(newOwner.ID); + } + + /// + /// Transfers the ownership of this PhotonView (and GameObject) to another player. + /// + /// + /// The owner/controller of a PhotonView is also the client which sends position updates of the GameObject. + /// + public void TransferOwnership(int newOwnerId) + { + PhotonNetwork.networkingPeer.TransferOwnership(this.viewID, newOwnerId); + this.ownerId = newOwnerId; // immediately switch ownership locally, to avoid more updates sent from this client. + } + + /// + ///Check ownerId assignment for sceneObjects to keep being owned by the MasterClient. + /// + /// New master client. + public void OnMasterClientSwitched(PhotonPlayer newMasterClient) + { + if (this.CreatorActorNr == 0 && !this.OwnerShipWasTransfered && (this.currentMasterID== -1 || this.ownerId==this.currentMasterID)) + { + this.ownerId = newMasterClient.ID; + } + + this.currentMasterID = newMasterClient.ID; + } + + + protected internal void OnDestroy() + { + if (!this.removedFromLocalViewList) + { + bool wasInList = PhotonNetwork.networkingPeer.LocalCleanPhotonView(this); + bool loading = false; + + #if !UNITY_5 || UNITY_5_0 || UNITY_5_1 + loading = Application.isLoadingLevel; + #endif + + if (wasInList && !loading && this.instantiationId > 0 && !PhotonHandler.AppQuits && PhotonNetwork.logLevel >= PhotonLogLevel.Informational) + { + Debug.Log("PUN-instantiated '" + this.gameObject.name + "' got destroyed by engine. This is OK when loading levels. Otherwise use: PhotonNetwork.Destroy()."); + } + } + } + + public void SerializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (this.ObservedComponents != null && this.ObservedComponents.Count > 0) + { + for (int i = 0; i < this.ObservedComponents.Count; ++i) + { + SerializeComponent(this.ObservedComponents[i], stream, info); + } + } + } + + public void DeserializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (this.ObservedComponents != null && this.ObservedComponents.Count > 0) + { + for (int i = 0; i < this.ObservedComponents.Count; ++i) + { + DeserializeComponent(this.ObservedComponents[i], stream, info); + } + } + } + + protected internal void DeserializeComponent(Component component, PhotonStream stream, PhotonMessageInfo info) + { + if (component == null) + { + return; + } + + // Use incoming data according to observed type + if (component is MonoBehaviour) + { + ExecuteComponentOnSerialize(component, stream, info); + } + else if (component is Transform) + { + Transform trans = (Transform) component; + + switch (this.onSerializeTransformOption) + { + case OnSerializeTransform.All: + trans.localPosition = (Vector3) stream.ReceiveNext(); + trans.localRotation = (Quaternion) stream.ReceiveNext(); + trans.localScale = (Vector3) stream.ReceiveNext(); + break; + case OnSerializeTransform.OnlyPosition: + trans.localPosition = (Vector3) stream.ReceiveNext(); + break; + case OnSerializeTransform.OnlyRotation: + trans.localRotation = (Quaternion) stream.ReceiveNext(); + break; + case OnSerializeTransform.OnlyScale: + trans.localScale = (Vector3) stream.ReceiveNext(); + break; + case OnSerializeTransform.PositionAndRotation: + trans.localPosition = (Vector3) stream.ReceiveNext(); + trans.localRotation = (Quaternion) stream.ReceiveNext(); + break; + } + } + else if (component is Rigidbody) + { + Rigidbody rigidB = (Rigidbody) component; + + switch (this.onSerializeRigidBodyOption) + { + case OnSerializeRigidBody.All: + rigidB.velocity = (Vector3) stream.ReceiveNext(); + rigidB.angularVelocity = (Vector3) stream.ReceiveNext(); + break; + case OnSerializeRigidBody.OnlyAngularVelocity: + rigidB.angularVelocity = (Vector3) stream.ReceiveNext(); + break; + case OnSerializeRigidBody.OnlyVelocity: + rigidB.velocity = (Vector3) stream.ReceiveNext(); + break; + } + } + else if (component is Rigidbody2D) + { + Rigidbody2D rigidB = (Rigidbody2D) component; + + switch (this.onSerializeRigidBodyOption) + { + case OnSerializeRigidBody.All: + rigidB.velocity = (Vector2) stream.ReceiveNext(); + rigidB.angularVelocity = (float) stream.ReceiveNext(); + break; + case OnSerializeRigidBody.OnlyAngularVelocity: + rigidB.angularVelocity = (float) stream.ReceiveNext(); + break; + case OnSerializeRigidBody.OnlyVelocity: + rigidB.velocity = (Vector2) stream.ReceiveNext(); + break; + } + } + else + { + Debug.LogError("Type of observed is unknown when receiving."); + } + } + + protected internal void SerializeComponent(Component component, PhotonStream stream, PhotonMessageInfo info) + { + if (component == null) + { + return; + } + + if (component is MonoBehaviour) + { + ExecuteComponentOnSerialize(component, stream, info); + } + else if (component is Transform) + { + Transform trans = (Transform) component; + + switch (this.onSerializeTransformOption) + { + case OnSerializeTransform.All: + stream.SendNext(trans.localPosition); + stream.SendNext(trans.localRotation); + stream.SendNext(trans.localScale); + break; + case OnSerializeTransform.OnlyPosition: + stream.SendNext(trans.localPosition); + break; + case OnSerializeTransform.OnlyRotation: + stream.SendNext(trans.localRotation); + break; + case OnSerializeTransform.OnlyScale: + stream.SendNext(trans.localScale); + break; + case OnSerializeTransform.PositionAndRotation: + stream.SendNext(trans.localPosition); + stream.SendNext(trans.localRotation); + break; + } + } + else if (component is Rigidbody) + { + Rigidbody rigidB = (Rigidbody) component; + + switch (this.onSerializeRigidBodyOption) + { + case OnSerializeRigidBody.All: + stream.SendNext(rigidB.velocity); + stream.SendNext(rigidB.angularVelocity); + break; + case OnSerializeRigidBody.OnlyAngularVelocity: + stream.SendNext(rigidB.angularVelocity); + break; + case OnSerializeRigidBody.OnlyVelocity: + stream.SendNext(rigidB.velocity); + break; + } + } + else if (component is Rigidbody2D) + { + Rigidbody2D rigidB = (Rigidbody2D) component; + + switch (this.onSerializeRigidBodyOption) + { + case OnSerializeRigidBody.All: + stream.SendNext(rigidB.velocity); + stream.SendNext(rigidB.angularVelocity); + break; + case OnSerializeRigidBody.OnlyAngularVelocity: + stream.SendNext(rigidB.angularVelocity); + break; + case OnSerializeRigidBody.OnlyVelocity: + stream.SendNext(rigidB.velocity); + break; + } + } + else + { + Debug.LogError("Observed type is not serializable: " + component.GetType()); + } + } + + protected internal void ExecuteComponentOnSerialize(Component component, PhotonStream stream, PhotonMessageInfo info) + { + IPunObservable observable = component as IPunObservable; + if (observable != null) + { + observable.OnPhotonSerializeView(stream, info); + } + else if (component != null) + { + MethodInfo method = null; + bool found = this.m_OnSerializeMethodInfos.TryGetValue(component, out method); + if (!found) + { + bool foundMethod = NetworkingPeer.GetMethod(component as MonoBehaviour, PhotonNetworkingMessage.OnPhotonSerializeView.ToString(), out method); + + if (foundMethod == false) + { + Debug.LogError("The observed monobehaviour (" + component.name + ") of this PhotonView does not implement OnPhotonSerializeView()!"); + method = null; + } + + this.m_OnSerializeMethodInfos.Add(component, method); + } + + if (method != null) + { + method.Invoke(component, new object[] {stream, info}); + } + } + } + + + /// + /// Can be used to refesh the list of MonoBehaviours on this GameObject while PhotonNetwork.UseRpcMonoBehaviourCache is true. + /// + /// + /// Set PhotonNetwork.UseRpcMonoBehaviourCache to true to enable the caching. + /// Uses this.GetComponents() to get a list of MonoBehaviours to call RPCs on (potentially). + /// + /// While PhotonNetwork.UseRpcMonoBehaviourCache is false, this method has no effect, + /// because the list is refreshed when a RPC gets called. + /// + public void RefreshRpcMonoBehaviourCache() + { + this.RpcMonoBehaviours = this.GetComponents(); + } + + + /// + /// Call a RPC method of this GameObject on remote clients of this room (or on all, inclunding this client). + /// + /// + /// [Remote Procedure Calls](@ref rpcManual) are an essential tool in making multiplayer games with PUN. + /// It enables you to make every client in a room call a specific method. + /// + /// RPC calls can target "All" or the "Others". + /// Usually, the target "All" gets executed locally immediately after sending the RPC. + /// The "*ViaServer" options send the RPC to the server and execute it on this client when it's sent back. + /// Of course, calls are affected by this client's lag and that of remote clients. + /// + /// Each call automatically is routed to the same PhotonView (and GameObject) that was used on the + /// originating client. + /// + /// See: [Remote Procedure Calls](@ref rpcManual). + /// + /// The name of a fitting method that was has the RPC attribute. + /// The group of targets and the way the RPC gets sent. + /// The parameters that the RPC method has (must fit this call!). + public void RPC(string methodName, PhotonTargets target, params object[] parameters) + { + PhotonNetwork.RPC(this, methodName, target, false, parameters); + } + + /// + /// Call a RPC method of this GameObject on remote clients of this room (or on all, inclunding this client). + /// + /// + /// [Remote Procedure Calls](@ref rpcManual) are an essential tool in making multiplayer games with PUN. + /// It enables you to make every client in a room call a specific method. + /// + /// RPC calls can target "All" or the "Others". + /// Usually, the target "All" gets executed locally immediately after sending the RPC. + /// The "*ViaServer" options send the RPC to the server and execute it on this client when it's sent back. + /// Of course, calls are affected by this client's lag and that of remote clients. + /// + /// Each call automatically is routed to the same PhotonView (and GameObject) that was used on the + /// originating client. + /// + /// See: [Remote Procedure Calls](@ref rpcManual). + /// + ///The name of a fitting method that was has the RPC attribute. + ///The group of targets and the way the RPC gets sent. + /// + ///The parameters that the RPC method has (must fit this call!). + public void RpcSecure(string methodName, PhotonTargets target, bool encrypt, params object[] parameters) + { + PhotonNetwork.RPC(this, methodName, target, encrypt, parameters); + } + + /// + /// Call a RPC method of this GameObject on remote clients of this room (or on all, inclunding this client). + /// + /// + /// [Remote Procedure Calls](@ref rpcManual) are an essential tool in making multiplayer games with PUN. + /// It enables you to make every client in a room call a specific method. + /// + /// This method allows you to make an RPC calls on a specific player's client. + /// Of course, calls are affected by this client's lag and that of remote clients. + /// + /// Each call automatically is routed to the same PhotonView (and GameObject) that was used on the + /// originating client. + /// + /// See: [Remote Procedure Calls](@ref rpcManual). + /// + /// The name of a fitting method that was has the RPC attribute. + /// The group of targets and the way the RPC gets sent. + /// The parameters that the RPC method has (must fit this call!). + public void RPC(string methodName, PhotonPlayer targetPlayer, params object[] parameters) + { + PhotonNetwork.RPC(this, methodName, targetPlayer, false, parameters); + } + + /// + /// Call a RPC method of this GameObject on remote clients of this room (or on all, inclunding this client). + /// + /// + /// [Remote Procedure Calls](@ref rpcManual) are an essential tool in making multiplayer games with PUN. + /// It enables you to make every client in a room call a specific method. + /// + /// This method allows you to make an RPC calls on a specific player's client. + /// Of course, calls are affected by this client's lag and that of remote clients. + /// + /// Each call automatically is routed to the same PhotonView (and GameObject) that was used on the + /// originating client. + /// + /// See: [Remote Procedure Calls](@ref rpcManual). + /// + ///The name of a fitting method that was has the RPC attribute. + ///The group of targets and the way the RPC gets sent. + /// + ///The parameters that the RPC method has (must fit this call!). + public void RpcSecure(string methodName, PhotonPlayer targetPlayer, bool encrypt, params object[] parameters) + { + PhotonNetwork.RPC(this, methodName, targetPlayer, encrypt, parameters); + } + + public static PhotonView Get(Component component) + { + return component.GetComponent(); + } + + public static PhotonView Get(GameObject gameObj) + { + return gameObj.GetComponent(); + } + + public static PhotonView Find(int viewID) + { + return PhotonNetwork.networkingPeer.GetPhotonView(viewID); + } + + public override string ToString() + { + return string.Format("View ({3}){0} on {1} {2}", this.viewID, (this.gameObject != null) ? this.gameObject.name : "GO==null", (this.isSceneView) ? "(scene)" : string.Empty, this.prefix); + } +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonView.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonView.cs.meta new file mode 100644 index 0000000..b2b8709 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonView.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: aa584fbee541324448dd18d8409c7a41 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PingCloudRegions.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PingCloudRegions.cs new file mode 100644 index 0000000..d5f23c0 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PingCloudRegions.cs @@ -0,0 +1,337 @@ +using System; +using System.Net; +using System.Collections; +using System.Diagnostics; +using ExitGames.Client.Photon; +using UnityEngine; +using Debug = UnityEngine.Debug; +using SupportClassPun = ExitGames.Client.Photon.SupportClass; + + +#if UNITY_EDITOR || (!UNITY_ANDROID && !UNITY_IPHONE && !UNITY_PS3 && !UNITY_WINRT) + +using System.Net.Sockets; + + +/// Uses C# Socket class from System.Net.Sockets (as Unity usually does). +/// Incompatible with Windows 8 Store/Phone API. +public class PingMonoEditor : PhotonPing +{ + private Socket sock; + + /// + /// Sends a "Photon Ping" to a server. + /// + /// Address in IPv4 or IPv6 format. An address containing a '.' will be interpretet as IPv4. + /// True if the Photon Ping could be sent. + public override bool StartPing(string ip) + { + base.Init(); + + try + { + if (ip.Contains(".")) + { + this.sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); + } + else + { + this.sock = new Socket(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp); + } + + sock.ReceiveTimeout = 5000; + sock.Connect(ip, 5055); + + PingBytes[PingBytes.Length - 1] = PingId; + sock.Send(PingBytes); + PingBytes[PingBytes.Length - 1] = (byte)(PingId - 1); + } + catch (Exception e) + { + sock = null; + Console.WriteLine(e); + } + + return false; + } + + public override bool Done() + { + if (this.GotResult || sock == null) + { + return true; + } + + if (sock.Available <= 0) + { + return false; + } + + int read = sock.Receive(PingBytes, SocketFlags.None); + //Debug.Log("Got: " + SupportClassPun.ByteArrayToString(PingBytes)); + bool replyMatch = PingBytes[PingBytes.Length - 1] == PingId && read == PingLength; + if (!replyMatch) Debug.Log("ReplyMatch is false! "); + + + this.Successful = read == PingBytes.Length && PingBytes[PingBytes.Length - 1] == PingId; + this.GotResult = true; + return true; + } + + public override void Dispose() + { + try + { + sock.Close(); + } + catch + { + } + sock = null; + } + +} + +#endif + + +#if UNITY_WEBGL + +public class PingHttp : PhotonPing +{ + private WWW webRequest; + + public override bool StartPing(string address) + { + address = "http://" + address + "/photon/m/?ping&r=" + UnityEngine.Random.Range(0, 10000); + Debug.Log("StartPing: " + address); + this.webRequest = new WWW(address); + return true; + } + + public override bool Done() + { + if (this.webRequest.isDone) + { + Successful = true; + return true; + } + + return false; + } + + public override void Dispose() + { + this.webRequest.Dispose(); + } +} + +#endif + + +public class PhotonPingManager +{ + public bool UseNative; + public static int Attempts = 5; + public static bool IgnoreInitialAttempt = true; + public static int MaxMilliseconsPerPing = 800; // enter a value you're sure some server can beat (have a lower rtt) + + + public Region BestRegion + { + get + { + Region result = null; + int bestRtt = Int32.MaxValue; + foreach (Region region in PhotonNetwork.networkingPeer.AvailableRegions) + { + Debug.Log("BestRegion checks region: " + region); + if (region.Ping != 0 && region.Ping < bestRtt) + { + bestRtt = region.Ping; + result = region; + } + } + + return (Region)result; + } + } + + public bool Done + { + get { return this.PingsRunning == 0; } + } + + private int PingsRunning; + + + /// + /// Affected by frame-rate of app, as this Coroutine checks the socket for a result once per frame. + /// + public IEnumerator PingSocket(Region region) + { + region.Ping = Attempts*MaxMilliseconsPerPing; + + this.PingsRunning++; // TODO: Add try-catch to make sure the PingsRunning are reduced at the end and that the lib does not crash the app + PhotonPing ping; + if (PhotonHandler.PingImplementation == typeof(PingNativeDynamic)) + { + Debug.Log("Using constructor for new PingNativeDynamic()"); // it seems on android, the Activator can't find the default Constructor + ping = new PingNativeDynamic(); + } + else if (PhotonHandler.PingImplementation == typeof(PingMono)) + { + ping = new PingMono(); // using this type explicitly saves it from IL2CPP bytecode stripping + } + #if UNITY_WEBGL + else if (PhotonHandler.PingImplementation == typeof(PingHttp)) + { + ping = new PingHttp(); + } + #endif + else + { + ping = (PhotonPing)Activator.CreateInstance(PhotonHandler.PingImplementation); + } + + //Debug.Log(region); + + float rttSum = 0.0f; + int replyCount = 0; + + // all addresses for Photon region servers will contain a :port ending. this needs to be removed first. + // PhotonPing.StartPing() requires a plain (IP) address without port or protocol-prefix (on all but Windows 8.1 and WebGL platforms). + + string regionAddress = region.HostAndPort; + int indexOfColon = regionAddress.LastIndexOf(':'); + if (indexOfColon > 1) + { + regionAddress = regionAddress.Substring(0, indexOfColon); + } + + regionAddress = ResolveHost(regionAddress); + + for (int i = 0; i < Attempts; i++) + { + bool overtime = false; + Stopwatch sw = new Stopwatch(); + sw.Start(); + + try + { + ping.StartPing(regionAddress); + } + catch (Exception e) + { + Debug.Log("catched: " + e); + this.PingsRunning--; + break; + } + + + while (!ping.Done()) + { + if (sw.ElapsedMilliseconds >= MaxMilliseconsPerPing) + { + overtime = true; + break; + } + yield return 0; // keep this loop tight, to avoid adding local lag to rtt. + } + int rtt = (int)sw.ElapsedMilliseconds; + + + if (IgnoreInitialAttempt && i == 0) + { + // do nothing. + } + else if (ping.Successful && !overtime) + { + rttSum += rtt; + replyCount++; + region.Ping = (int)((rttSum) / replyCount); + //Debug.Log("region " + region.Code + " RTT " + region.Ping + " success: " + ping.Successful + " over: " + overtime); + } + + yield return new WaitForSeconds(0.1f); + } + + this.PingsRunning--; + + //Debug.Log("this.PingsRunning: " + this.PingsRunning + " this debug: " + ping.DebugString); + yield return null; + } + +#if (UNITY_WINRT && !UNITY_EDITOR) || UNITY_WEBGL + + public static string ResolveHost(string hostName) + { + #if UNITY_WEBGL + if (hostName.StartsWith("wss://")) + { + hostName = hostName.Substring(6); + } + if (hostName.StartsWith("ws://")) + { + hostName = hostName.Substring(5); + } + #endif + + return hostName; + } + +#else + + /// + /// Attempts to resolve a hostname into an IP string or returns empty string if that fails. + /// + /// + /// To be compatible with most platforms, the address family is checked like this:
+ /// if (ipAddress.AddressFamily.ToString().Contains("6")) // ipv6... + /// + /// Hostname to resolve. + /// IP string or empty string if resolution fails + public static string ResolveHost(string hostName) + { + string ipv4Address = string.Empty; + + try + { + IPAddress[] address = Dns.GetHostAddresses(hostName); + //foreach (IPAddress adr in address) + //{ + // Debug.Log(hostName + " -> Adress: " + adr + " family: " + adr.AddressFamily.ToString()); + //} + + if (address.Length == 1) + { + return address[0].ToString(); + } + + // if we got more addresses, try to pick a IPv4 one + for (int index = 0; index < address.Length; index++) + { + IPAddress ipAddress = address[index]; + if (ipAddress != null) + { + // checking ipAddress.ToString() means we don't have to import System.Net.Sockets, which is not available on some platforms (Metro) + if (ipAddress.ToString().Contains(":")) + { + return ipAddress.ToString(); + } + if (string.IsNullOrEmpty(ipv4Address)) + { + ipv4Address = address.ToString(); + } + } + } + } + catch (System.Exception e) + { + Debug.Log("Exception caught! " + e.Source + " Message: " + e.Message); + } + + return ipv4Address; + } +#endif +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PingCloudRegions.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PingCloudRegions.cs.meta new file mode 100644 index 0000000..2e90001 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PingCloudRegions.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 207807222df026f40ac3688a3a051e38 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RPC.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RPC.cs new file mode 100644 index 0000000..c20854d --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RPC.cs @@ -0,0 +1,12 @@ + +#pragma warning disable 1587 +/// \file +/// Reimplements a RPC Attribute, as it's no longer in all versions of the UnityEngine assembly. +#pragma warning restore 1587 + +using System; + +/// Replacement for RPC attribute with different name. Used to flag methods as remote-callable. +public class PunRPC : Attribute +{ +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RPC.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RPC.cs.meta new file mode 100644 index 0000000..5b97d85 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RPC.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c40d255b1edd61842ae10e3346a2251e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Room.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Room.cs new file mode 100644 index 0000000..58844c5 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Room.cs @@ -0,0 +1,367 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2011 Exit Games GmbH +// +// +// Represents a room/game on the server and caches the properties of that. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using System; +using ExitGames.Client.Photon; +using UnityEngine; + + +/// +/// This class resembles a room that PUN joins (or joined). +/// The properties are settable as opposed to those of a RoomInfo and you can close or hide "your" room. +/// +/// \ingroup publicApi +public class Room : RoomInfo +{ + /// The name of a room. Unique identifier (per Loadbalancing group) for a room/match. + public new string Name + { + get + { + return this.nameField; + } + + internal set + { + this.nameField = value; + } + } + + /// + /// Defines if the room can be joined. + /// This does not affect listing in a lobby but joining the room will fail if not open. + /// If not open, the room is excluded from random matchmaking. + /// Due to racing conditions, found matches might become closed before they are joined. + /// Simply re-connect to master and find another. + /// Use property "visible" to not list the room. + /// + public new bool IsOpen + { + get + { + return this.openField; + } + + set + { + if (!this.Equals(PhotonNetwork.room)) + { + UnityEngine.Debug.LogWarning("Can't set open when not in that room."); + } + + if (value != this.openField && !PhotonNetwork.offlineMode) + { + PhotonNetwork.networkingPeer.OpSetPropertiesOfRoom(new Hashtable() { { GamePropertyKey.IsOpen, value } }, expectedProperties: null, webForward: false); + } + + this.openField = value; + } + } + + /// + /// Defines if the room is listed in its lobby. + /// Rooms can be created invisible, or changed to invisible. + /// To change if a room can be joined, use property: open. + /// + public new bool IsVisible + { + get + { + return this.visibleField; + } + + set + { + if (!this.Equals(PhotonNetwork.room)) + { + UnityEngine.Debug.LogWarning("Can't set visible when not in that room."); + } + + if (value != this.visibleField && !PhotonNetwork.offlineMode) + { + PhotonNetwork.networkingPeer.OpSetPropertiesOfRoom(new Hashtable() { { GamePropertyKey.IsVisible, value } }, expectedProperties: null, webForward: false); + } + + this.visibleField = value; + } + } + + /// + /// A list of custom properties that should be forwarded to the lobby and listed there. + /// + public string[] PropertiesListedInLobby { get; private set; } + + /// + /// Gets if this room uses autoCleanUp to remove all (buffered) RPCs and instantiated GameObjects when a player leaves. + /// + public bool AutoCleanUp + { + get + { + return this.autoCleanUpField; + } + } + + /// + /// Sets a limit of players to this room. This property is shown in lobby, too. + /// If the room is full (players count == maxplayers), joining this room will fail. + /// + public new int MaxPlayers + { + get + { + return (int)this.maxPlayersField; + } + + set + { + if (!this.Equals(PhotonNetwork.room)) + { + UnityEngine.Debug.LogWarning("Can't set MaxPlayers when not in that room."); + } + + if (value > 255) + { + UnityEngine.Debug.LogWarning("Can't set Room.MaxPlayers to: " + value + ". Using max value: 255."); + value = 255; + } + + if (value != this.maxPlayersField && !PhotonNetwork.offlineMode) + { + PhotonNetwork.networkingPeer.OpSetPropertiesOfRoom(new Hashtable() { { GamePropertyKey.MaxPlayers, (byte)value } }, expectedProperties: null, webForward: false); + } + + this.maxPlayersField = (byte)value; + } + } + + /// Count of players in this room. + public new int PlayerCount + { + get + { + if (PhotonNetwork.playerList != null) + { + return PhotonNetwork.playerList.Length; + } + else + { + return 0; + } + } + } + + /// + /// List of users who are expected to join this room. In matchmaking, Photon blocks a slot for each of these UserIDs out of the MaxPlayers. + /// + /// + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// Define expected players in the PhotonNetwork methods: CreateRoom, JoinRoom and JoinOrCreateRoom. + /// + public string[] ExpectedUsers + { + get { return this.expectedUsersField; } + } + + /// The ID (actorNumber) of the current Master Client of this room. + /// See also: PhotonNetwork.masterClient. + protected internal int MasterClientId + { + get + { + return this.masterClientIdField; + } + set + { + this.masterClientIdField = value; + } + } + + + internal Room(string roomName, RoomOptions options) : base(roomName, null) + { + if (options == null) + { + options = new RoomOptions(); + } + + this.visibleField = options.IsVisible; + this.openField = options.IsOpen; + this.maxPlayersField = (byte)options.MaxPlayers; + this.autoCleanUpField = false; // defaults to false, unless set to true when room gets created. + + this.InternalCacheProperties(options.CustomRoomProperties); + this.PropertiesListedInLobby = options.CustomRoomPropertiesForLobby; + } + + + /// + /// Updates the current room's Custom Properties with new/updated key-values. + /// + /// + /// Custom Properties are a key-value set (Hashtable) which is available to all players in a room. + /// They can relate to the room or individual players and are useful when only the current value + /// of something is of interest. For example: The map of a room. + /// All keys must be strings. + /// + /// The Room and the PhotonPlayer class both have SetCustomProperties methods. + /// Also, both classes offer access to current key-values by: customProperties. + /// + /// Always use SetCustomProperties to change values. + /// To reduce network traffic, set only values that actually changed. + /// New properties are added, existing values are updated. + /// Other values will not be changed, so only provide values that changed or are new. + /// + /// To delete a named (custom) property of this room, use null as value. + /// + /// Locally, SetCustomProperties will update it's cache without delay. + /// Other clients are updated through Photon (the server) with a fitting operation. + /// + /// Check and Swap + /// + /// SetCustomProperties have the option to do a server-side Check-And-Swap (CAS): + /// Values only get updated if the expected values are correct. + /// The expectedValues can be different key/values than the propertiesToSet. So you can + /// check some key and set another key's value (if the check succeeds). + /// + /// If the client's knowledge of properties is wrong or outdated, it can't set values with CAS. + /// This can be useful to keep players from concurrently setting values. For example: If all players + /// try to pickup some card or item, only one should get it. With CAS, only the first SetProperties + /// gets executed server-side and any other (sent at the same time) fails. + /// + /// The server will broadcast successfully changed values and the local "cache" of customProperties + /// only gets updated after a roundtrip (if anything changed). + /// + /// You can do a "webForward": Photon will send the changed properties to a WebHook defined + /// for your application. + /// + /// OfflineMode + /// + /// While PhotonNetwork.offlineMode is true, the expectedValues and webForward parameters are ignored. + /// In OfflineMode, the local customProperties values are immediately updated (without the roundtrip). + /// + /// The new properties to be set. + /// At least one property key/value set to check server-side. Key and value must be correct. Ignored in OfflineMode. + /// Set to true, to forward the set properties to a WebHook, defined for this app (in Dashboard). Ignored in OfflineMode. + public void SetCustomProperties(Hashtable propertiesToSet, Hashtable expectedValues = null, bool webForward = false) + { + if (propertiesToSet == null) + { + return; + } + + Hashtable customProps = propertiesToSet.StripToStringKeys() as Hashtable; + Hashtable customPropsToCheck = expectedValues.StripToStringKeys() as Hashtable; + + + // no expected values -> set and callback + bool noCas = customPropsToCheck == null || customPropsToCheck.Count == 0; + + if (noCas) + { + this.CustomProperties.Merge(customProps); + this.CustomProperties.StripKeysWithNullValues(); + } + + if (!PhotonNetwork.offlineMode) + { + PhotonNetwork.networkingPeer.OpSetPropertiesOfRoom(customProps, customPropsToCheck, webForward); + } + + if (PhotonNetwork.offlineMode || noCas) + { + this.InternalCacheProperties(customProps); + NetworkingPeer.SendMonoMessage(PhotonNetworkingMessage.OnPhotonCustomRoomPropertiesChanged, customProps); + } + } + + /// + /// Enables you to define the properties available in the lobby if not all properties are needed to pick a room. + /// + /// + /// It makes sense to limit the amount of properties sent to users in the lobby as this improves speed and stability. + /// + /// An array of custom room property names to forward to the lobby. + public void SetPropertiesListedInLobby(string[] propsListedInLobby) + { + Hashtable customProps = new Hashtable(); + customProps[GamePropertyKey.PropsListedInLobby] = propsListedInLobby; + PhotonNetwork.networkingPeer.OpSetPropertiesOfRoom(customProps, expectedProperties: null, webForward: false); + + this.PropertiesListedInLobby = propsListedInLobby; + } + + /// + /// Attempts to remove all current expected users from the server's Slot Reservation list. + /// + /// + /// Note that this operation can conflict with new/other users joining. They might be + /// adding users to the list of expected users before or after this client called ClearExpectedUsers. + /// + /// This room's expectedUsers value will update, when the server sends a successful update. + /// + /// Internals: This methods wraps up setting the ExpectedUsers property of a room. + /// + public void ClearExpectedUsers() + { + Hashtable props = new Hashtable(); + props[GamePropertyKey.ExpectedUsers] = new string[0]; + Hashtable expected = new Hashtable(); + expected[GamePropertyKey.ExpectedUsers] = this.ExpectedUsers; + PhotonNetwork.networkingPeer.OpSetPropertiesOfRoom(props, expected, webForward: false); + } + + + /// Returns a summary of this Room instance as string. + /// Summary of this Room instance. + public override string ToString() + { + return string.Format("Room: '{0}' {1},{2} {4}/{3} players.", this.nameField, this.visibleField ? "visible" : "hidden", this.openField ? "open" : "closed", this.maxPlayersField, this.PlayerCount); + } + + /// Returns a summary of this Room instance as longer string, including Custom Properties. + /// Summary of this Room instance. + public new string ToStringFull() + { + return string.Format("Room: '{0}' {1},{2} {4}/{3} players.\ncustomProps: {5}", this.nameField, this.visibleField ? "visible" : "hidden", this.openField ? "open" : "closed", this.maxPlayersField, this.PlayerCount, this.CustomProperties.ToStringFull()); + } + + + #region Obsoleted variable names + + [Obsolete("Please use Name (updated case for naming).")] + public new string name { get { return this.Name; } internal set { this.Name = value; } } + + [Obsolete("Please use IsOpen (updated case for naming).")] + public new bool open { get { return this.IsOpen; } set { this.IsOpen = value; } } + + [Obsolete("Please use IsVisible (updated case for naming).")] + public new bool visible { get { return this.IsVisible; } set { this.IsVisible = value; } } + + [Obsolete("Please use PropertiesListedInLobby (updated case for naming).")] + public string[] propertiesListedInLobby { get { return this.PropertiesListedInLobby; } private set { this.PropertiesListedInLobby = value; } } + + [Obsolete("Please use AutoCleanUp (updated case for naming).")] + public bool autoCleanUp { get { return this.AutoCleanUp; } } + + [Obsolete("Please use MaxPlayers (updated case for naming).")] + public new int maxPlayers { get { return this.MaxPlayers; } set { this.MaxPlayers = value; } } + + [Obsolete("Please use PlayerCount (updated case for naming).")] + public new int playerCount { get { return this.PlayerCount; } } + + [Obsolete("Please use ExpectedUsers (updated case for naming).")] + public string[] expectedUsers { get { return this.ExpectedUsers; } } + + [Obsolete("Please use MasterClientId (updated case for naming).")] + protected internal int masterClientId { get { return this.MasterClientId; } set { this.MasterClientId = value; } } + + #endregion +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Room.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Room.cs.meta new file mode 100644 index 0000000..66ccb6c --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Room.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 17568a7a5552c09428dd48e73548b8b8 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RoomInfo.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RoomInfo.cs new file mode 100644 index 0000000..2c1eee5 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RoomInfo.cs @@ -0,0 +1,281 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2011 Exit Games GmbH +// +// +// This class resembles info about available rooms, as sent by the Master +// server's lobby. Consider all values as readonly. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using System; +using ExitGames.Client.Photon; + + +/// +/// A simplified room with just the info required to list and join, used for the room listing in the lobby. +/// The properties are not settable (open, MaxPlayers, etc). +/// +/// +/// This class resembles info about available rooms, as sent by the Master server's lobby. +/// Consider all values as readonly. None are synced (only updated by events by server). +/// +/// \ingroup publicApi +public class RoomInfo +{ + /// Used internally in lobby, to mark rooms that are no longer listed. + public bool removedFromList { get; internal set; } + + /// Backing field for property. + private Hashtable customPropertiesField = new Hashtable(); + + /// Backing field for property. + protected byte maxPlayersField = 0; + + /// Backing field for property. + protected string[] expectedUsersField; + + /// Backing field for property. + protected bool openField = true; + + /// Backing field for property. + protected bool visibleField = true; + + /// Backing field for property. False unless the GameProperty is set to true (else it's not sent). + protected bool autoCleanUpField = PhotonNetwork.autoCleanUpPlayerObjects; + + /// Backing field for property. + protected string nameField; + + /// Backing field for master client id (actorNumber). defined by server in room props and ev leave. + protected internal int masterClientIdField; + + protected internal bool serverSideMasterClient { get; private set; } + + /// Read-only "cache" of custom properties of a room. Set via Room.SetCustomProperties (not available for RoomInfo class!). + /// All keys are string-typed and the values depend on the game/application. + /// + public Hashtable CustomProperties + { + get + { + return this.customPropertiesField; + } + } + + /// The name of a room. Unique identifier (per Loadbalancing group) for a room/match. + public string Name + { + get + { + return this.nameField; + } + } + + /// + /// Only used internally in lobby, to display number of players in room (while you're not in). + /// + public int PlayerCount { get; private set; } + + /// + /// State if the local client is already in the game or still going to join it on gameserver (in lobby always false). + /// + public bool IsLocalClientInside { get; set; } + + /// + /// Sets a limit of players to this room. This property is shown in lobby, too. + /// If the room is full (players count == maxplayers), joining this room will fail. + /// + /// + /// As part of RoomInfo this can't be set. + /// As part of a Room (which the player joined), the setter will update the server and all clients. + /// + public byte MaxPlayers + { + get + { + return this.maxPlayersField; + } + } + + /// + /// Defines if the room can be joined. + /// This does not affect listing in a lobby but joining the room will fail if not open. + /// If not open, the room is excluded from random matchmaking. + /// Due to racing conditions, found matches might become closed before they are joined. + /// Simply re-connect to master and find another. + /// Use property "IsVisible" to not list the room. + /// + /// + /// As part of RoomInfo this can't be set. + /// As part of a Room (which the player joined), the setter will update the server and all clients. + /// + public bool IsOpen + { + get + { + return this.openField; + } + } + + /// + /// Defines if the room is listed in its lobby. + /// Rooms can be created invisible, or changed to invisible. + /// To change if a room can be joined, use property: open. + /// + /// + /// As part of RoomInfo this can't be set. + /// As part of a Room (which the player joined), the setter will update the server and all clients. + /// + public bool IsVisible + { + get + { + return this.visibleField; + } + } + + /// + /// Constructs a RoomInfo to be used in room listings in lobby. + /// + /// + /// + protected internal RoomInfo(string roomName, Hashtable properties) + { + this.InternalCacheProperties(properties); + + this.nameField = roomName; + } + + /// + /// Makes RoomInfo comparable (by name). + /// + public override bool Equals(object other) + { + RoomInfo otherRoomInfo = other as RoomInfo; + return (otherRoomInfo != null && this.Name.Equals(otherRoomInfo.nameField)); + } + + /// + /// Accompanies Equals, using the name's HashCode as return. + /// + /// + public override int GetHashCode() + { + return this.nameField.GetHashCode(); + } + + + /// Simple printingin method. + /// Summary of this RoomInfo instance. + public override string ToString() + { + return string.Format("Room: '{0}' {1},{2} {4}/{3} players.", this.nameField, this.visibleField ? "visible" : "hidden", this.openField ? "open" : "closed", this.maxPlayersField, this.PlayerCount); + } + + /// Simple printingin method. + /// Summary of this RoomInfo instance. + public string ToStringFull() + { + return string.Format("Room: '{0}' {1},{2} {4}/{3} players.\ncustomProps: {5}", this.nameField, this.visibleField ? "visible" : "hidden", this.openField ? "open" : "closed", this.maxPlayersField, this.PlayerCount, this.customPropertiesField.ToStringFull()); + } + + /// Copies "well known" properties to fields (IsVisible, etc) and caches the custom properties (string-keys only) in a local hashtable. + /// New or updated properties to store in this RoomInfo. + protected internal void InternalCacheProperties(Hashtable propertiesToCache) + { + if (propertiesToCache == null || propertiesToCache.Count == 0 || this.customPropertiesField.Equals(propertiesToCache)) + { + return; + } + + // check of this game was removed from the list. in that case, we don't + // need to read any further properties + // list updates will remove this game from the game listing + if (propertiesToCache.ContainsKey(GamePropertyKey.Removed)) + { + this.removedFromList = (Boolean)propertiesToCache[GamePropertyKey.Removed]; + if (this.removedFromList) + { + return; + } + } + + // fetch the "well known" properties of the room, if available + if (propertiesToCache.ContainsKey(GamePropertyKey.MaxPlayers)) + { + this.maxPlayersField = (byte)propertiesToCache[GamePropertyKey.MaxPlayers]; + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.IsOpen)) + { + this.openField = (bool)propertiesToCache[GamePropertyKey.IsOpen]; + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.IsVisible)) + { + this.visibleField = (bool)propertiesToCache[GamePropertyKey.IsVisible]; + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.PlayerCount)) + { + this.PlayerCount = (int)((byte)propertiesToCache[GamePropertyKey.PlayerCount]); + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.CleanupCacheOnLeave)) + { + this.autoCleanUpField = (bool)propertiesToCache[GamePropertyKey.CleanupCacheOnLeave]; + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.MasterClientId)) + { + this.serverSideMasterClient = true; + bool isUpdate = this.masterClientIdField != 0; + this.masterClientIdField = (int) propertiesToCache[GamePropertyKey.MasterClientId]; + if (isUpdate) + { + PhotonNetwork.networkingPeer.UpdateMasterClient(); + } + } + + //if (propertiesToCache.ContainsKey(GamePropertyKey.PropsListedInLobby)) + //{ + // // could be cached but isn't useful + //} + + if (propertiesToCache.ContainsKey((byte)GamePropertyKey.ExpectedUsers)) + { + this.expectedUsersField = (string[])propertiesToCache[GamePropertyKey.ExpectedUsers]; + } + + // merge the custom properties (from your application) to the cache (only string-typed keys will be kept) + this.customPropertiesField.MergeStringKeys(propertiesToCache); + } + + + #region Obsoleted variable names + + [Obsolete("Please use CustomProperties (updated case for naming).")] + public Hashtable customProperties { get { return this.CustomProperties; } } + + [Obsolete("Please use Name (updated case for naming).")] + public string name { get { return this.Name; } } + + [Obsolete("Please use PlayerCount (updated case for naming).")] + public int playerCount { get { return this.PlayerCount; } set { this.PlayerCount = value; } } + + [Obsolete("Please use IsLocalClientInside (updated case for naming).")] + public bool isLocalClientInside { get { return this.IsLocalClientInside; } set { this.IsLocalClientInside = value; } } + + [Obsolete("Please use MaxPlayers (updated case for naming).")] + public byte maxPlayers { get { return this.MaxPlayers; } } + + [Obsolete("Please use IsOpen (updated case for naming).")] + public bool open { get { return this.IsOpen; } } + + [Obsolete("Please use IsVisible (updated case for naming).")] + public bool visible { get { return this.IsVisible; } } + + #endregion +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RoomInfo.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RoomInfo.cs.meta new file mode 100644 index 0000000..a1188f0 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RoomInfo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 71760b65ad7d5b842942c797a0366fa7 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RpcIndexComponent.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RpcIndexComponent.cs new file mode 100644 index 0000000..c981afe --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RpcIndexComponent.cs @@ -0,0 +1,6 @@ +#pragma warning disable 1587 +/// \file +/// Outdated. Here to overwrite older files on import. +#pragma warning restore 1587 + +// This class got outdated. As updates from the Asset Store won't delete files, this is emptied. \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RpcIndexComponent.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RpcIndexComponent.cs.meta new file mode 100644 index 0000000..be3e838 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/RpcIndexComponent.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e001b6576e34b8d4e8ce3b3ab5aee427 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/ServerSettings.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/ServerSettings.cs new file mode 100644 index 0000000..97e4b87 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/ServerSettings.cs @@ -0,0 +1,136 @@ +#pragma warning disable 1587 +/// \file +/// ScriptableObject defining a server setup. An instance is created as PhotonServerSettings. +#pragma warning restore 1587 + +using System; +using System.Collections.Generic; +using ExitGames.Client.Photon; +using UnityEngine; + + +public class Region +{ + public CloudRegionCode Code; + public string HostAndPort; + public int Ping; + + public static CloudRegionCode Parse(string codeAsString) + { + codeAsString = codeAsString.ToLower(); + + CloudRegionCode code = CloudRegionCode.none; + if (Enum.IsDefined(typeof(CloudRegionCode), codeAsString)) + { + code = (CloudRegionCode)Enum.Parse(typeof(CloudRegionCode), codeAsString); + } + + return code; + } + + internal static CloudRegionFlag ParseFlag(string codeAsString) + { + codeAsString = codeAsString.ToLower(); + + CloudRegionFlag code = 0; + if (Enum.IsDefined(typeof(CloudRegionFlag), codeAsString)) + { + code = (CloudRegionFlag)Enum.Parse(typeof(CloudRegionFlag), codeAsString); + } + + return code; + } + + public override string ToString() + { + return string.Format("'{0}' \t{1}ms \t{2}", this.Code, this.Ping, this.HostAndPort); + } +} + + +/// +/// Collection of connection-relevant settings, used internally by PhotonNetwork.ConnectUsingSettings. +/// +[Serializable] +public class ServerSettings : ScriptableObject +{ + public enum HostingOption { NotSet = 0, PhotonCloud = 1, SelfHosted = 2, OfflineMode = 3, BestRegion = 4 } + + public string AppID = ""; + public string VoiceAppID = ""; + public string ChatAppID = ""; + + public HostingOption HostType = HostingOption.NotSet; + + public CloudRegionCode PreferredRegion; + public CloudRegionFlag EnabledRegions = (CloudRegionFlag)(-1); + + public ConnectionProtocol Protocol = ConnectionProtocol.Udp; + public string ServerAddress = ""; + public int ServerPort = 5055; + public int VoiceServerPort = 5055; // Voice only uses UDP + + + public bool JoinLobby; + public bool EnableLobbyStatistics; + public PhotonLogLevel PunLogging = PhotonLogLevel.ErrorsOnly; + public DebugLevel NetworkLogging = DebugLevel.ERROR; + + public bool RunInBackground = true; + + public List RpcList = new List(); // set by scripts and or via Inspector + + [HideInInspector] + public bool DisableAutoOpenWizard; + + + + public void UseCloudBestRegion(string cloudAppid) + { + this.HostType = HostingOption.BestRegion; + this.AppID = cloudAppid; + } + + public void UseCloud(string cloudAppid) + { + this.HostType = HostingOption.PhotonCloud; + this.AppID = cloudAppid; + } + + public void UseCloud(string cloudAppid, CloudRegionCode code) + { + this.HostType = HostingOption.PhotonCloud; + this.AppID = cloudAppid; + this.PreferredRegion = code; + } + + public void UseMyServer(string serverAddress, int serverPort, string application) + { + this.HostType = HostingOption.SelfHosted; + this.AppID = (application != null) ? application : "master"; + + this.ServerAddress = serverAddress; + this.ServerPort = serverPort; + } + + /// Checks if a string is a Guid by attempting to create one. + /// The potential guid to check. + /// True if new Guid(val) did not fail. + public static bool IsAppId(string val) + { + try + { + new Guid(val); + } + catch + { + return false; + } + return true; + } + + public override string ToString() + { + return "ServerSettings: " + HostType + " " + ServerAddress; + } +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/ServerSettings.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/ServerSettings.cs.meta new file mode 100644 index 0000000..401bf34 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/ServerSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9f3758f8f58fdef43803eb9be1df0608 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketUdp.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketUdp.cs new file mode 100644 index 0000000..438bc8e --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketUdp.cs @@ -0,0 +1,227 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Protocol & Photon Client Lib - Copyright (C) 2013 Exit Games GmbH +// +// +// Uses the UDP socket for a peer to send and receive enet/Photon messages. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +#if UNITY_EDITOR || (!UNITY_ANDROID && !UNITY_IPHONE && !UNITY_PS3 && !UNITY_WINRT && !UNITY_WP8) + +namespace ExitGames.Client.Photon +{ + using System; + using System.Net; + using System.Net.Sockets; + using System.Security; + using System.Threading; + + /// Internal class to encapsulate the network i/o functionality for the realtime libary. + internal class SocketUdp : IPhotonSocket, IDisposable + { + private Socket sock; + + private readonly object syncer = new object(); + + public SocketUdp(PeerBase npeer) : base(npeer) + { + if (this.ReportDebugOfLevel(DebugLevel.ALL)) + { + this.Listener.DebugReturn(DebugLevel.ALL, "CSharpSocket: UDP, Unity3d."); + } + + this.Protocol = ConnectionProtocol.Udp; + this.PollReceive = false; + } + + public void Dispose() + { + this.State = PhotonSocketState.Disconnecting; + + if (this.sock != null) + { + try + { + if (this.sock.Connected) this.sock.Close(); + } + catch (Exception ex) + { + this.EnqueueDebugReturn(DebugLevel.INFO, "Exception in Dispose(): " + ex); + } + } + + this.sock = null; + this.State = PhotonSocketState.Disconnected; + } + + public override bool Connect() + { + lock (this.syncer) + { + bool baseOk = base.Connect(); + if (!baseOk) + { + return false; + } + + this.State = PhotonSocketState.Connecting; + + Thread dns = new Thread(this.DnsAndConnect); + dns.Name = "photon dns thread"; + dns.IsBackground = true; + dns.Start(); + + return true; + } + } + + public override bool Disconnect() + { + if (this.ReportDebugOfLevel(DebugLevel.INFO)) + { + this.EnqueueDebugReturn(DebugLevel.INFO, "CSharpSocket.Disconnect()"); + } + + this.State = PhotonSocketState.Disconnecting; + + lock (this.syncer) + { + if (this.sock != null) + { + try + { + this.sock.Close(); + } + catch (Exception ex) + { + this.EnqueueDebugReturn(DebugLevel.INFO, "Exception in Disconnect(): " + ex); + } + + this.sock = null; + } + } + + this.State = PhotonSocketState.Disconnected; + return true; + } + + /// used by PhotonPeer* + public override PhotonSocketError Send(byte[] data, int length) + { + lock (this.syncer) + { + if (this.sock == null || !this.sock.Connected) + { + return PhotonSocketError.Skipped; + } + + try + { + sock.Send(data, 0, length, SocketFlags.None); + } + catch (Exception e) + { + if (this.ReportDebugOfLevel(DebugLevel.ERROR)) + { + this.EnqueueDebugReturn(DebugLevel.ERROR, "Cannot send to: " + this.ServerAddress + ". " + e.Message); + } + return PhotonSocketError.Exception; + } + } + + return PhotonSocketError.Success; + } + + public override PhotonSocketError Receive(out byte[] data) + { + data = null; + return PhotonSocketError.NoData; + } + + internal void DnsAndConnect() + { + IPAddress ipAddress = null; + try + { + lock (this.syncer) + { + ipAddress = IPhotonSocket.GetIpAddress(this.ServerAddress); + if (ipAddress == null) + { + throw new ArgumentException("Invalid IPAddress. Address: " + this.ServerAddress); + } + if (ipAddress.AddressFamily != AddressFamily.InterNetwork && ipAddress.AddressFamily != AddressFamily.InterNetworkV6) + { + throw new ArgumentException("AddressFamily '" + ipAddress.AddressFamily + "' not supported. Address: " + this.ServerAddress); + } + + this.sock = new Socket(ipAddress.AddressFamily, SocketType.Dgram, ProtocolType.Udp); + this.sock.Connect(ipAddress, this.ServerPort); + + this.AddressResolvedAsIpv6 = (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6); + this.State = PhotonSocketState.Connected; + + this.peerBase.OnConnect(); + } + } + catch (SecurityException se) + { + if (this.ReportDebugOfLevel(DebugLevel.ERROR)) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Connect() to '" + this.ServerAddress + "' (" + ((ipAddress == null ) ? "": ipAddress.AddressFamily.ToString()) + ") failed: " + se.ToString()); + } + + this.HandleException(StatusCode.SecurityExceptionOnConnect); + return; + } + catch (Exception se) + { + if (this.ReportDebugOfLevel(DebugLevel.ERROR)) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Connect() to '" + this.ServerAddress + "' (" + ((ipAddress == null) ? "" : ipAddress.AddressFamily.ToString()) + ") failed: " + se.ToString()); + } + + this.HandleException(StatusCode.ExceptionOnConnect); + return; + } + + Thread run = new Thread(new ThreadStart(ReceiveLoop)); + run.Name = "photon receive thread"; + run.IsBackground = true; + run.Start(); + } + + /// Endless loop, run in Receive Thread. + public void ReceiveLoop() + { + byte[] inBuffer = new byte[this.MTU]; + while (this.State == PhotonSocketState.Connected) + { + try + { + int read = this.sock.Receive(inBuffer); + this.HandleReceivedDatagram(inBuffer, read, true); + } + catch (Exception e) + { + if (this.State != PhotonSocketState.Disconnecting && this.State != PhotonSocketState.Disconnected) + { + if (this.ReportDebugOfLevel(DebugLevel.ERROR)) + { + this.EnqueueDebugReturn(DebugLevel.ERROR, "Receive issue. State: " + this.State + ". Server: '" + this.ServerAddress + "' Exception: " + e); + } + + this.HandleException(StatusCode.ExceptionOnReceive); + } + } + } //while Connected receive + + // on exit of the receive-loop: disconnect socket + this.Disconnect(); + } + } //class + +} +#endif diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketUdp.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketUdp.cs.meta new file mode 100644 index 0000000..b51113e --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketUdp.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fdcd4031513ba944ba1cc57b3aff328a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketWebTcp.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketWebTcp.cs new file mode 100644 index 0000000..d3dd7c9 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketWebTcp.cs @@ -0,0 +1,269 @@ +#if UNITY_WEBGL || UNITY_XBOXONE +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright (c) Exit Games GmbH. All rights reserved. +// +// +// Internal class to encapsulate the network i/o functionality for the realtime libary. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using System; +using System.Collections; +using UnityEngine; +using SupportClassPun = ExitGames.Client.Photon.SupportClass; + + +namespace ExitGames.Client.Photon +{ + #if UNITY_5_3 || UNITY_5_3_OR_NEWER + /// + /// Yield Instruction to Wait for real seconds. Very important to keep connection working if Time.TimeScale is altered, we still want accurate network events + /// + public sealed class WaitForRealSeconds : CustomYieldInstruction + { + private readonly float _endTime; + + public override bool keepWaiting + { + get { return _endTime > Time.realtimeSinceStartup; } + } + + public WaitForRealSeconds(float seconds) + { + _endTime = Time.realtimeSinceStartup + seconds; + } + } + #endif + + /// + /// Internal class to encapsulate the network i/o functionality for the realtime libary. + /// + public class SocketWebTcp : IPhotonSocket, IDisposable + { + private WebSocket sock; + + private readonly object syncer = new object(); + + public SocketWebTcp(PeerBase npeer) : base(npeer) + { + ServerAddress = npeer.ServerAddress; + if (this.ReportDebugOfLevel(DebugLevel.INFO)) + { + Listener.DebugReturn(DebugLevel.INFO, "new SocketWebTcp() for Unity. Server: " + ServerAddress); + } + + this.Protocol = ConnectionProtocol.WebSocket; + this.PollReceive = false; + } + + public void Dispose() + { + this.State = PhotonSocketState.Disconnecting; + + if (this.sock != null) + { + try + { + if (this.sock.Connected) this.sock.Close(); + } + catch (Exception ex) + { + this.EnqueueDebugReturn(DebugLevel.INFO, "Exception in Dispose(): " + ex); + } + } + + this.sock = null; + this.State = PhotonSocketState.Disconnected; + } + + GameObject websocketConnectionObject; + public override bool Connect() + { + //bool baseOk = base.Connect(); + //if (!baseOk) + //{ + // return false; + //} + + + State = PhotonSocketState.Connecting; + + if (this.websocketConnectionObject != null) + { + UnityEngine.Object.Destroy(this.websocketConnectionObject); + } + + this.websocketConnectionObject = new GameObject("websocketConnectionObject"); + MonoBehaviour mb = this.websocketConnectionObject.AddComponent(); + this.websocketConnectionObject.hideFlags = HideFlags.HideInHierarchy; + UnityEngine.Object.DontDestroyOnLoad(this.websocketConnectionObject); + + this.sock = new WebSocket(new Uri(ServerAddress)); + this.sock.Connect(); + + mb.StartCoroutine(this.ReceiveLoop()); + return true; + } + + + public override bool Disconnect() + { + if (ReportDebugOfLevel(DebugLevel.INFO)) + { + this.Listener.DebugReturn(DebugLevel.INFO, "SocketWebTcp.Disconnect()"); + } + + State = PhotonSocketState.Disconnecting; + + lock (this.syncer) + { + if (this.sock != null) + { + try + { + this.sock.Close(); + } + catch (Exception ex) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Exception in Disconnect(): " + ex); + } + this.sock = null; + } + } + + if (this.websocketConnectionObject != null) + { + UnityEngine.Object.Destroy(this.websocketConnectionObject); + } + + State = PhotonSocketState.Disconnected; + return true; + } + + /// + /// used by TPeer* + /// + public override PhotonSocketError Send(byte[] data, int length) + { + if (this.State != PhotonSocketState.Connected) + { + return PhotonSocketError.Skipped; + } + + try + { + if (this.ReportDebugOfLevel(DebugLevel.ALL)) + { + this.Listener.DebugReturn(DebugLevel.ALL, "Sending: " + SupportClassPun.ByteArrayToString(data)); + } + this.sock.Send(data); + } + catch (Exception e) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Cannot send to: " + this.ServerAddress + ". " + e.Message); + + HandleException(StatusCode.Exception); + return PhotonSocketError.Exception; + } + + return PhotonSocketError.Success; + } + + public override PhotonSocketError Receive(out byte[] data) + { + data = null; + return PhotonSocketError.NoData; + } + + + internal const int ALL_HEADER_BYTES = 9; + internal const int TCP_HEADER_BYTES = 7; + internal const int MSG_HEADER_BYTES = 2; + + public IEnumerator ReceiveLoop() + { + this.Listener.DebugReturn(DebugLevel.INFO, "ReceiveLoop()"); + while (!this.sock.Connected && this.sock.Error == null) + { + #if UNITY_5_3 || UNITY_5_3_OR_NEWER + yield return new WaitForRealSeconds(0.1f); + #else + float waittime = Time.realtimeSinceStartup + 0.1f; + while (Time.realtimeSinceStartup < waittime) yield return 0; + #endif + } + + if (this.sock.Error != null) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Exiting receive thread. Server: " + this.ServerAddress + ":" + this.ServerPort + " Error: " + this.sock.Error); + this.HandleException(StatusCode.ExceptionOnConnect); + } + else + { + // connected + if (this.ReportDebugOfLevel(DebugLevel.ALL)) + { + this.Listener.DebugReturn(DebugLevel.ALL, "Receiving by websocket. this.State: " + State); + } + State = PhotonSocketState.Connected; + while (State == PhotonSocketState.Connected) + { + if (this.sock.Error != null) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Exiting receive thread (inside loop). Server: "+this.ServerAddress+":"+this.ServerPort+" Error: " + this.sock.Error); + this.HandleException(StatusCode.ExceptionOnReceive); + break; + } + else + { + byte[] inBuff = this.sock.Recv(); + if (inBuff == null || inBuff.Length == 0) + { + // nothing received. wait a bit, try again + #if UNITY_5_3 || UNITY_5_3_OR_NEWER + yield return new WaitForRealSeconds(0.02f); + #else + float waittime = Time.realtimeSinceStartup + 0.02f; + while (Time.realtimeSinceStartup < waittime) yield return 0; + #endif + continue; + } + + if (this.ReportDebugOfLevel(DebugLevel.ALL)) + { + this.Listener.DebugReturn(DebugLevel.ALL, "TCP << " + inBuff.Length + " = " + SupportClassPun.ByteArrayToString(inBuff)); + } + + if (inBuff.Length > 0) + { + try + { + HandleReceivedDatagram(inBuff, inBuff.Length, false); + } + catch (Exception e) + { + if (this.State != PhotonSocketState.Disconnecting && this.State != PhotonSocketState.Disconnected) + { + if (this.ReportDebugOfLevel(DebugLevel.ERROR)) + { + this.EnqueueDebugReturn(DebugLevel.ERROR, "Receive issue. State: " + this.State + ". Server: '" + this.ServerAddress + "' Exception: " + e); + } + + this.HandleException(StatusCode.ExceptionOnReceive); + } + } + } + } + } + } + + this.Disconnect(); + } + } + + internal class MonoBehaviourExt : MonoBehaviour {} +} + +#endif diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketWebTcp.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketWebTcp.cs.meta new file mode 100644 index 0000000..7f04d3c --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/SocketWebTcp.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac953d6a57a9ea94e96ec689598995d5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views.meta new file mode 100644 index 0000000..c075bfa --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: af66d584c3a100142bba3e1a89b69459 +folderAsset: yes +timeCreated: 1488120601 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonAnimatorView.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonAnimatorView.cs new file mode 100644 index 0000000..cba9a8b --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonAnimatorView.cs @@ -0,0 +1,544 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Component to synchronize Mecanim animations via PUN. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using System.Collections.Generic; +using UnityEngine; + +/// +/// This class helps you to synchronize Mecanim animations +/// Simply add the component to your GameObject and make sure that +/// the PhotonAnimatorView is added to the list of observed components +/// +/// +/// When Using Trigger Parameters, make sure the component that sets the trigger is higher in the stack of Components on the GameObject than 'PhotonAnimatorView' +/// Triggers are raised true during one frame only. +/// +[RequireComponent(typeof(Animator))] +[RequireComponent(typeof(PhotonView))] +[AddComponentMenu("Photon Networking/Photon Animator View")] +public class PhotonAnimatorView : MonoBehaviour, IPunObservable +{ + #region Enums + + public enum ParameterType + { + Float = 1, + Int = 3, + Bool = 4, + Trigger = 9, + } + + public enum SynchronizeType + { + Disabled = 0, + Discrete = 1, + Continuous = 2, + } + + [System.Serializable] + public class SynchronizedParameter + { + public ParameterType Type; + public SynchronizeType SynchronizeType; + public string Name; + } + + [System.Serializable] + public class SynchronizedLayer + { + public SynchronizeType SynchronizeType; + public int LayerIndex; + } + + #endregion + + #region Properties + +#if PHOTON_DEVELOP + public PhotonAnimatorView ReceivingSender; +#endif + + #endregion + + #region Members + + private Animator m_Animator; + + private PhotonStreamQueue m_StreamQueue; + + //These fields are only used in the CustomEditor for this script and would trigger a + //"this variable is never used" warning, which I am suppressing here +#pragma warning disable 0414 + [HideInInspector] + [SerializeField] + private bool ShowLayerWeightsInspector = true; + + [HideInInspector] + [SerializeField] + private bool ShowParameterInspector = true; +#pragma warning restore 0414 + + [HideInInspector] + [SerializeField] + private List m_SynchronizeParameters = new List(); + + [HideInInspector] + [SerializeField] + private List m_SynchronizeLayers = new List(); + + private Vector3 m_ReceiverPosition; + private float m_LastDeserializeTime; + private bool m_WasSynchronizeTypeChanged = true; + private PhotonView m_PhotonView; + + /// + /// Cached raised triggers that are set to be synchronized in discrete mode. since a Trigger only stay up for less than a frame, + /// We need to cache it until the next discrete serialization call. + /// + List m_raisedDiscreteTriggersCache = new List(); + + #endregion + + #region Unity + + private void Awake() + { + this.m_PhotonView = GetComponent(); + this.m_StreamQueue = new PhotonStreamQueue(120); + + this.m_Animator = GetComponent(); + } + + private void Update() + { + if (this.m_Animator.applyRootMotion && this.m_PhotonView.isMine == false && PhotonNetwork.connected == true) + { + this.m_Animator.applyRootMotion = false; + } + + if (PhotonNetwork.inRoom == false || PhotonNetwork.room.PlayerCount <= 1) + { + this.m_StreamQueue.Reset(); + return; + } + + if (this.m_PhotonView.isMine == true) + { + this.SerializeDataContinuously(); + + this.CacheDiscreteTriggers(); + } + else + { + this.DeserializeDataContinuously(); + } + } + + #endregion + + #region Setup Synchronizing Methods + + /// + /// Caches the discrete triggers values for keeping track of raised triggers, and will be reseted after the sync routine got performed + /// + public void CacheDiscreteTriggers() + { + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; + + if (parameter.SynchronizeType == SynchronizeType.Discrete && parameter.Type == ParameterType.Trigger && this.m_Animator.GetBool(parameter.Name)) + { + if (parameter.Type == ParameterType.Trigger) + { + this.m_raisedDiscreteTriggersCache.Add(parameter.Name); + break; + } + } + } + } + + /// + /// Check if a specific layer is configured to be synchronize + /// + /// Index of the layer. + /// True if the layer is synchronized + public bool DoesLayerSynchronizeTypeExist(int layerIndex) + { + return this.m_SynchronizeLayers.FindIndex(item => item.LayerIndex == layerIndex) != -1; + } + + /// + /// Check if the specified parameter is configured to be synchronized + /// + /// The name of the parameter. + /// True if the parameter is synchronized + public bool DoesParameterSynchronizeTypeExist(string name) + { + return this.m_SynchronizeParameters.FindIndex(item => item.Name == name) != -1; + } + + /// + /// Get a list of all synchronized layers + /// + /// List of SynchronizedLayer objects + public List GetSynchronizedLayers() + { + return this.m_SynchronizeLayers; + } + + /// + /// Get a list of all synchronized parameters + /// + /// List of SynchronizedParameter objects + public List GetSynchronizedParameters() + { + return this.m_SynchronizeParameters; + } + + /// + /// Gets the type how the layer is synchronized + /// + /// Index of the layer. + /// Disabled/Discrete/Continuous + public SynchronizeType GetLayerSynchronizeType(int layerIndex) + { + int index = this.m_SynchronizeLayers.FindIndex(item => item.LayerIndex == layerIndex); + + if (index == -1) + { + return SynchronizeType.Disabled; + } + + return this.m_SynchronizeLayers[index].SynchronizeType; + } + + /// + /// Gets the type how the parameter is synchronized + /// + /// The name of the parameter. + /// Disabled/Discrete/Continuous + public SynchronizeType GetParameterSynchronizeType(string name) + { + int index = this.m_SynchronizeParameters.FindIndex(item => item.Name == name); + + if (index == -1) + { + return SynchronizeType.Disabled; + } + + return this.m_SynchronizeParameters[index].SynchronizeType; + } + + /// + /// Sets the how a layer should be synchronized + /// + /// Index of the layer. + /// Disabled/Discrete/Continuous + public void SetLayerSynchronized(int layerIndex, SynchronizeType synchronizeType) + { + if (Application.isPlaying == true) + { + this.m_WasSynchronizeTypeChanged = true; + } + + int index = this.m_SynchronizeLayers.FindIndex(item => item.LayerIndex == layerIndex); + + if (index == -1) + { + this.m_SynchronizeLayers.Add(new SynchronizedLayer { LayerIndex = layerIndex, SynchronizeType = synchronizeType }); + } + else + { + this.m_SynchronizeLayers[index].SynchronizeType = synchronizeType; + } + } + + /// + /// Sets the how a parameter should be synchronized + /// + /// The name of the parameter. + /// The type of the parameter. + /// Disabled/Discrete/Continuous + public void SetParameterSynchronized(string name, ParameterType type, SynchronizeType synchronizeType) + { + if (Application.isPlaying == true) + { + this.m_WasSynchronizeTypeChanged = true; + } + + int index = this.m_SynchronizeParameters.FindIndex(item => item.Name == name); + + if (index == -1) + { + this.m_SynchronizeParameters.Add(new SynchronizedParameter { Name = name, Type = type, SynchronizeType = synchronizeType }); + } + else + { + this.m_SynchronizeParameters[index].SynchronizeType = synchronizeType; + } + } + + #endregion + + #region Serialization + + private void SerializeDataContinuously() + { + if (this.m_Animator == null) + { + return; + } + + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + if (this.m_SynchronizeLayers[i].SynchronizeType == SynchronizeType.Continuous) + { + this.m_StreamQueue.SendNext(this.m_Animator.GetLayerWeight(this.m_SynchronizeLayers[i].LayerIndex)); + } + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; + + if (parameter.SynchronizeType == SynchronizeType.Continuous) + { + switch (parameter.Type) + { + case ParameterType.Bool: + this.m_StreamQueue.SendNext(this.m_Animator.GetBool(parameter.Name)); + break; + case ParameterType.Float: + this.m_StreamQueue.SendNext(this.m_Animator.GetFloat(parameter.Name)); + break; + case ParameterType.Int: + this.m_StreamQueue.SendNext(this.m_Animator.GetInteger(parameter.Name)); + break; + case ParameterType.Trigger: + this.m_StreamQueue.SendNext(this.m_Animator.GetBool(parameter.Name)); + break; + } + } + } + } + + + private void DeserializeDataContinuously() + { + if (this.m_StreamQueue.HasQueuedObjects() == false) + { + return; + } + + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + if (this.m_SynchronizeLayers[i].SynchronizeType == SynchronizeType.Continuous) + { + this.m_Animator.SetLayerWeight(this.m_SynchronizeLayers[i].LayerIndex, (float)this.m_StreamQueue.ReceiveNext()); + } + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; + + if (parameter.SynchronizeType == SynchronizeType.Continuous) + { + switch (parameter.Type) + { + case ParameterType.Bool: + this.m_Animator.SetBool(parameter.Name, (bool)this.m_StreamQueue.ReceiveNext()); + break; + case ParameterType.Float: + this.m_Animator.SetFloat(parameter.Name, (float)this.m_StreamQueue.ReceiveNext()); + break; + case ParameterType.Int: + this.m_Animator.SetInteger(parameter.Name, (int)this.m_StreamQueue.ReceiveNext()); + break; + case ParameterType.Trigger: + this.m_Animator.SetBool(parameter.Name, (bool)this.m_StreamQueue.ReceiveNext()); + break; + } + } + } + } + + private void SerializeDataDiscretly(PhotonStream stream) + { + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + if (this.m_SynchronizeLayers[i].SynchronizeType == SynchronizeType.Discrete) + { + stream.SendNext(this.m_Animator.GetLayerWeight(this.m_SynchronizeLayers[i].LayerIndex)); + } + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; + + if (parameter.SynchronizeType == SynchronizeType.Discrete) + { + switch (parameter.Type) + { + case ParameterType.Bool: + stream.SendNext(this.m_Animator.GetBool(parameter.Name)); + break; + case ParameterType.Float: + stream.SendNext(this.m_Animator.GetFloat(parameter.Name)); + break; + case ParameterType.Int: + stream.SendNext(this.m_Animator.GetInteger(parameter.Name)); + break; + case ParameterType.Trigger: + // here we can't rely on the current real state of the trigger, we might have missed its raise + stream.SendNext(this.m_raisedDiscreteTriggersCache.Contains(parameter.Name)); + break; + } + } + } + + // reset the cache, we've synchronized. + this.m_raisedDiscreteTriggersCache.Clear(); + } + + private void DeserializeDataDiscretly(PhotonStream stream) + { + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + if (this.m_SynchronizeLayers[i].SynchronizeType == SynchronizeType.Discrete) + { + this.m_Animator.SetLayerWeight(this.m_SynchronizeLayers[i].LayerIndex, (float)stream.ReceiveNext()); + } + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; + + if (parameter.SynchronizeType == SynchronizeType.Discrete) + { + switch (parameter.Type) + { + case ParameterType.Bool: + if (stream.PeekNext() is bool == false) + { + return; + } + this.m_Animator.SetBool(parameter.Name, (bool)stream.ReceiveNext()); + break; + case ParameterType.Float: + if (stream.PeekNext() is float == false) + { + return; + } + + this.m_Animator.SetFloat(parameter.Name, (float)stream.ReceiveNext()); + break; + case ParameterType.Int: + if (stream.PeekNext() is int == false) + { + return; + } + + this.m_Animator.SetInteger(parameter.Name, (int)stream.ReceiveNext()); + break; + case ParameterType.Trigger: + if (stream.PeekNext() is bool == false) + { + return; + } + + if ((bool)stream.ReceiveNext()) + { + this.m_Animator.SetTrigger(parameter.Name); + } + break; + } + } + } + } + + private void SerializeSynchronizationTypeState(PhotonStream stream) + { + byte[] states = new byte[this.m_SynchronizeLayers.Count + this.m_SynchronizeParameters.Count]; + + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + states[i] = (byte)this.m_SynchronizeLayers[i].SynchronizeType; + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + states[this.m_SynchronizeLayers.Count + i] = (byte)this.m_SynchronizeParameters[i].SynchronizeType; + } + + stream.SendNext(states); + } + + private void DeserializeSynchronizationTypeState(PhotonStream stream) + { + byte[] state = (byte[])stream.ReceiveNext(); + + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + this.m_SynchronizeLayers[i].SynchronizeType = (SynchronizeType)state[i]; + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + this.m_SynchronizeParameters[i].SynchronizeType = (SynchronizeType)state[this.m_SynchronizeLayers.Count + i]; + } + } + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (this.m_Animator == null) + { + return; + } + + if (stream.isWriting == true) + { + if (this.m_WasSynchronizeTypeChanged == true) + { + this.m_StreamQueue.Reset(); + this.SerializeSynchronizationTypeState(stream); + + this.m_WasSynchronizeTypeChanged = false; + } + + this.m_StreamQueue.Serialize(stream); + this.SerializeDataDiscretly(stream); + } + else + { +#if PHOTON_DEVELOP + if( ReceivingSender != null ) + { + ReceivingSender.OnPhotonSerializeView( stream, info ); + } + else +#endif + { + if (stream.PeekNext() is byte[]) + { + this.DeserializeSynchronizationTypeState(stream); + } + + this.m_StreamQueue.Deserialize(stream); + this.DeserializeDataDiscretly(stream); + } + } + } + + #endregion +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonAnimatorView.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonAnimatorView.cs.meta new file mode 100644 index 0000000..9232492 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonAnimatorView.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9b8c4a61274f60b4ea5fb4299cfdbf14 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbody2DView.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbody2DView.cs new file mode 100644 index 0000000..1ee31d0 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbody2DView.cs @@ -0,0 +1,68 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Component to synchronize 2d rigidbodies via PUN. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using UnityEngine; + +/// +/// This class helps you to synchronize the velocities of a 2d physics RigidBody. +/// Note that only the velocities are synchronized and because Unitys physics +/// engine is not deterministic (ie. the results aren't always the same on all +/// computers) - the actual positions of the objects may go out of sync. If you +/// want to have the position of this object the same on all clients, you should +/// also add a PhotonTransformView to synchronize the position. +/// Simply add the component to your GameObject and make sure that +/// the PhotonRigidbody2DView is added to the list of observed components +/// +[RequireComponent(typeof(PhotonView))] +[RequireComponent(typeof(Rigidbody2D))] +[AddComponentMenu("Photon Networking/Photon Rigidbody 2D View")] +public class PhotonRigidbody2DView : MonoBehaviour, IPunObservable +{ + [SerializeField] + bool m_SynchronizeVelocity = true; + + [SerializeField] + bool m_SynchronizeAngularVelocity = true; + + Rigidbody2D m_Body; + + void Awake() + { + this.m_Body = GetComponent(); + } + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (stream.isWriting == true) + { + if (this.m_SynchronizeVelocity == true) + { + stream.SendNext(this.m_Body.velocity); + } + + if (this.m_SynchronizeAngularVelocity == true) + { + stream.SendNext(this.m_Body.angularVelocity); + } + } + else + { + if (this.m_SynchronizeVelocity == true) + { + this.m_Body.velocity = (Vector2)stream.ReceiveNext(); + } + + if (this.m_SynchronizeAngularVelocity == true) + { + this.m_Body.angularVelocity = (float)stream.ReceiveNext(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbody2DView.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbody2DView.cs.meta new file mode 100644 index 0000000..b2e6d08 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbody2DView.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0e7cb724808c322458aa4d15f5035fa9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbodyView.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbodyView.cs new file mode 100644 index 0000000..e46af42 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbodyView.cs @@ -0,0 +1,68 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Component to synchronize rigidbodies via PUN. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using UnityEngine; + +/// +/// This class helps you to synchronize the velocities of a physics RigidBody. +/// Note that only the velocities are synchronized and because Unitys physics +/// engine is not deterministic (ie. the results aren't always the same on all +/// computers) - the actual positions of the objects may go out of sync. If you +/// want to have the position of this object the same on all clients, you should +/// also add a PhotonTransformView to synchronize the position. +/// Simply add the component to your GameObject and make sure that +/// the PhotonRigidbodyView is added to the list of observed components +/// +[RequireComponent(typeof(PhotonView))] +[RequireComponent(typeof(Rigidbody))] +[AddComponentMenu("Photon Networking/Photon Rigidbody View")] +public class PhotonRigidbodyView : MonoBehaviour, IPunObservable +{ + [SerializeField] + bool m_SynchronizeVelocity = true; + + [SerializeField] + bool m_SynchronizeAngularVelocity = true; + + Rigidbody m_Body; + + void Awake() + { + this.m_Body = GetComponent(); + } + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (stream.isWriting == true) + { + if (this.m_SynchronizeVelocity == true) + { + stream.SendNext(this.m_Body.velocity); + } + + if (this.m_SynchronizeAngularVelocity == true) + { + stream.SendNext(this.m_Body.angularVelocity); + } + } + else + { + if (this.m_SynchronizeVelocity == true) + { + this.m_Body.velocity = (Vector3)stream.ReceiveNext(); + } + + if (this.m_SynchronizeAngularVelocity == true) + { + this.m_Body.angularVelocity = (Vector3)stream.ReceiveNext(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbodyView.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbodyView.cs.meta new file mode 100644 index 0000000..e8c398f --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonRigidbodyView.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64179f3720bbfe947b7724caa67b7c1d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformView.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformView.cs new file mode 100644 index 0000000..29f576d --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformView.cs @@ -0,0 +1,214 @@ + // ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Component to synchronize Transforms via PUN PhotonView. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using UnityEngine; + +/// +/// This class helps you to synchronize position, rotation and scale +/// of a GameObject. It also gives you many different options to make +/// the synchronized values appear smooth, even when the data is only +/// send a couple of times per second. +/// Simply add the component to your GameObject and make sure that +/// the PhotonTransformView is added to the list of observed components +/// +[RequireComponent(typeof(PhotonView))] +[AddComponentMenu("Photon Networking/Photon Transform View")] +public class PhotonTransformView : MonoBehaviour, IPunObservable +{ + //Since this component is very complex, we seperated it into multiple objects. + //The PositionModel, RotationModel and ScaleMode store the data you are able to + //configure in the inspector while the control objects below are actually moving + //the object and calculating all the inter- and extrapolation + + [SerializeField] + PhotonTransformViewPositionModel m_PositionModel = new PhotonTransformViewPositionModel(); + + [SerializeField] + PhotonTransformViewRotationModel m_RotationModel = new PhotonTransformViewRotationModel(); + + [SerializeField] + PhotonTransformViewScaleModel m_ScaleModel = new PhotonTransformViewScaleModel(); + + PhotonTransformViewPositionControl m_PositionControl; + PhotonTransformViewRotationControl m_RotationControl; + PhotonTransformViewScaleControl m_ScaleControl; + + PhotonView m_PhotonView; + + bool m_ReceivedNetworkUpdate = false; + + /// + /// Flag to skip initial data when Object is instantiated and rely on the first deserialized data instead. + /// + bool m_firstTake = false; + + void Awake() + { + this.m_PhotonView = GetComponent(); + + this.m_PositionControl = new PhotonTransformViewPositionControl(this.m_PositionModel); + this.m_RotationControl = new PhotonTransformViewRotationControl(this.m_RotationModel); + this.m_ScaleControl = new PhotonTransformViewScaleControl(this.m_ScaleModel); + } + + void OnEnable() + { + m_firstTake = true; + } + + void Update() + { + if (this.m_PhotonView == null || this.m_PhotonView.isMine == true || PhotonNetwork.connected == false) + { + return; + } + + this.UpdatePosition(); + this.UpdateRotation(); + this.UpdateScale(); + } + + void UpdatePosition() + { + if (this.m_PositionModel.SynchronizeEnabled == false || this.m_ReceivedNetworkUpdate == false) + { + return; + } + + transform.localPosition = this.m_PositionControl.UpdatePosition(transform.localPosition); + } + + void UpdateRotation() + { + if (this.m_RotationModel.SynchronizeEnabled == false || this.m_ReceivedNetworkUpdate == false) + { + return; + } + + transform.localRotation = this.m_RotationControl.GetRotation(transform.localRotation); + } + + void UpdateScale() + { + if (this.m_ScaleModel.SynchronizeEnabled == false || this.m_ReceivedNetworkUpdate == false) + { + return; + } + + transform.localScale = this.m_ScaleControl.GetScale(transform.localScale); + } + + /// + /// These values are synchronized to the remote objects if the interpolation mode + /// or the extrapolation mode SynchronizeValues is used. Your movement script should pass on + /// the current speed (in units/second) and turning speed (in angles/second) so the remote + /// object can use them to predict the objects movement. + /// + /// The current movement vector of the object in units/second. + /// The current turn speed of the object in angles/second. + public void SetSynchronizedValues(Vector3 speed, float turnSpeed) + { + this.m_PositionControl.SetSynchronizedValues(speed, turnSpeed); + } + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + this.m_PositionControl.OnPhotonSerializeView(transform.localPosition, stream, info); + this.m_RotationControl.OnPhotonSerializeView(transform.localRotation, stream, info); + this.m_ScaleControl.OnPhotonSerializeView(transform.localScale, stream, info); + + if (this.m_PhotonView.isMine == false && this.m_PositionModel.DrawErrorGizmo == true) + { + this.DoDrawEstimatedPositionError(); + } + + if (stream.isReading == true) + { + this.m_ReceivedNetworkUpdate = true; + + // force latest data to avoid initial drifts when player is instantiated. + if (m_firstTake) + { + m_firstTake = false; + + if (this.m_PositionModel.SynchronizeEnabled) + { + this.transform.localPosition = this.m_PositionControl.GetNetworkPosition(); + } + + if (this.m_RotationModel.SynchronizeEnabled) + { + this.transform.localRotation = this.m_RotationControl.GetNetworkRotation(); + } + + if (this.m_ScaleModel.SynchronizeEnabled) + { + this.transform.localScale = this.m_ScaleControl.GetNetworkScale(); + } + + } + + } + } + + //void OnDrawGizmos() + //{ + // if( Application.isPlaying == false || m_PhotonView == null || m_PhotonView.isMine == true || PhotonNetwork.connected == false ) + // { + // return; + // } + + // DoDrawNetworkPositionGizmo(); + // DoDrawExtrapolatedPositionGizmo(); + //} + + void DoDrawEstimatedPositionError() + { + Vector3 targetPosition = this.m_PositionControl.GetNetworkPosition(); + + // we are synchronizing the localPosition, so we need to add the parent position for a proper positioning. + if (transform.parent != null) + { + targetPosition = transform.parent.position + targetPosition ; + } + + Debug.DrawLine(targetPosition, transform.position, Color.red, 2f); + Debug.DrawLine(transform.position, transform.position + Vector3.up, Color.green, 2f); + Debug.DrawLine(targetPosition , targetPosition + Vector3.up, Color.red, 2f); + } + + //void DoDrawNetworkPositionGizmo() + //{ + // if( m_PositionModel.DrawNetworkGizmo == false || m_PositionControl == null ) + // { + // return; + // } + + // ExitGames.Client.GUI.GizmoTypeDrawer.Draw( m_PositionControl.GetNetworkPosition(), + // m_PositionModel.NetworkGizmoType, + // m_PositionModel.NetworkGizmoColor, + // m_PositionModel.NetworkGizmoSize ); + //} + + //void DoDrawExtrapolatedPositionGizmo() + //{ + // if( m_PositionModel.DrawExtrapolatedGizmo == false || + // m_PositionModel.ExtrapolateOption == PhotonTransformViewPositionModel.ExtrapolateOptions.Disabled || + // m_PositionControl == null ) + // { + // return; + // } + + // ExitGames.Client.GUI.GizmoTypeDrawer.Draw( m_PositionControl.GetNetworkPosition() + m_PositionControl.GetExtrapolatedPositionOffset(), + // m_PositionModel.ExtrapolatedGizmoType, + // m_PositionModel.ExtrapolatedGizmoColor, + // m_PositionModel.ExtrapolatedGizmoSize ); + //} +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformView.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformView.cs.meta new file mode 100644 index 0000000..963d8ee --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformView.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 627855c7f81362d41938ffe0b1475957 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionControl.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionControl.cs new file mode 100644 index 0000000..83a870b --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionControl.cs @@ -0,0 +1,246 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Component to synchronize position via PUN PhotonView. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +public class PhotonTransformViewPositionControl +{ + PhotonTransformViewPositionModel m_Model; + float m_CurrentSpeed; + double m_LastSerializeTime; + Vector3 m_SynchronizedSpeed = Vector3.zero; + float m_SynchronizedTurnSpeed = 0; + + Vector3 m_NetworkPosition; + Queue m_OldNetworkPositions = new Queue(); + + bool m_UpdatedPositionAfterOnSerialize = true; + + public PhotonTransformViewPositionControl( PhotonTransformViewPositionModel model ) + { + m_Model = model; + } + + Vector3 GetOldestStoredNetworkPosition() + { + Vector3 oldPosition = m_NetworkPosition; + + if( m_OldNetworkPositions.Count > 0 ) + { + oldPosition = m_OldNetworkPositions.Peek(); + } + + return oldPosition; + } + + /// + /// These values are synchronized to the remote objects if the interpolation mode + /// or the extrapolation mode SynchronizeValues is used. Your movement script should pass on + /// the current speed (in units/second) and turning speed (in angles/second) so the remote + /// object can use them to predict the objects movement. + /// + /// The current movement vector of the object in units/second. + /// The current turn speed of the object in angles/second. + public void SetSynchronizedValues( Vector3 speed, float turnSpeed ) + { + m_SynchronizedSpeed = speed; + m_SynchronizedTurnSpeed = turnSpeed; + } + + /// + /// Calculates the new position based on the values setup in the inspector + /// + /// The current position. + /// The new position. + public Vector3 UpdatePosition( Vector3 currentPosition ) + { + Vector3 targetPosition = GetNetworkPosition() + GetExtrapolatedPositionOffset(); + + switch( m_Model.InterpolateOption ) + { + case PhotonTransformViewPositionModel.InterpolateOptions.Disabled: + if( m_UpdatedPositionAfterOnSerialize == false ) + { + currentPosition = targetPosition; + m_UpdatedPositionAfterOnSerialize = true; + } + break; + + case PhotonTransformViewPositionModel.InterpolateOptions.FixedSpeed: + currentPosition = Vector3.MoveTowards( currentPosition, targetPosition, Time.deltaTime * m_Model.InterpolateMoveTowardsSpeed ); + break; + + case PhotonTransformViewPositionModel.InterpolateOptions.EstimatedSpeed: + if (m_OldNetworkPositions.Count == 0) + { + // special case: we have no previous updates in memory, so we can't guess a speed! + break; + } + + // knowing the last (incoming) position and the one before, we can guess a speed. + // note that the speed is times sendRateOnSerialize! we send X updates/sec, so our estimate has to factor that in. + float estimatedSpeed = (Vector3.Distance(m_NetworkPosition, GetOldestStoredNetworkPosition()) / m_OldNetworkPositions.Count) * PhotonNetwork.sendRateOnSerialize; + + // move towards the targetPosition (including estimates, if that's active) with the speed calculated from the last updates. + currentPosition = Vector3.MoveTowards(currentPosition, targetPosition, Time.deltaTime * estimatedSpeed ); + break; + + case PhotonTransformViewPositionModel.InterpolateOptions.SynchronizeValues: + if( m_SynchronizedSpeed.magnitude == 0 ) + { + currentPosition = targetPosition; + } + else + { + currentPosition = Vector3.MoveTowards( currentPosition, targetPosition, Time.deltaTime * m_SynchronizedSpeed.magnitude ); + } + break; + + case PhotonTransformViewPositionModel.InterpolateOptions.Lerp: + currentPosition = Vector3.Lerp( currentPosition, targetPosition, Time.deltaTime * m_Model.InterpolateLerpSpeed ); + break; + + /*case PhotonTransformViewPositionModel.InterpolateOptions.MoveTowardsComplex: + float distanceToTarget = Vector3.Distance( currentPosition, targetPosition ); + float targetSpeed = m_Model.InterpolateSpeedCurve.Evaluate( distanceToTarget ) * m_Model.InterpolateMoveTowardsSpeed; + + if( targetSpeed > m_CurrentSpeed ) + { + m_CurrentSpeed = Mathf.MoveTowards( m_CurrentSpeed, targetSpeed, Time.deltaTime * m_Model.InterpolateMoveTowardsAcceleration ); + } + else + { + m_CurrentSpeed = Mathf.MoveTowards( m_CurrentSpeed, targetSpeed, Time.deltaTime * m_Model.InterpolateMoveTowardsDeceleration ); + } + + //Debug.Log( m_CurrentSpeed + " - " + targetSpeed + " - " + transform.localPosition + " - " + targetPosition ); + + currentPosition = Vector3.MoveTowards( currentPosition, targetPosition, Time.deltaTime * m_CurrentSpeed ); + break;*/ + } + + if( m_Model.TeleportEnabled == true ) + { + if( Vector3.Distance( currentPosition, GetNetworkPosition() ) > m_Model.TeleportIfDistanceGreaterThan ) + { + currentPosition = GetNetworkPosition(); + } + } + + return currentPosition; + } + + /// + /// Gets the last position that was received through the network + /// + /// + public Vector3 GetNetworkPosition() + { + return m_NetworkPosition; + } + + /// + /// Calculates an estimated position based on the last synchronized position, + /// the time when the last position was received and the movement speed of the object + /// + /// Estimated position of the remote object + public Vector3 GetExtrapolatedPositionOffset() + { + float timePassed = (float)( PhotonNetwork.time - m_LastSerializeTime ); + + if( m_Model.ExtrapolateIncludingRoundTripTime == true ) + { + timePassed += (float)PhotonNetwork.GetPing() / 1000f; + } + + Vector3 extrapolatePosition = Vector3.zero; + + switch( m_Model.ExtrapolateOption ) + { + case PhotonTransformViewPositionModel.ExtrapolateOptions.SynchronizeValues: + Quaternion turnRotation = Quaternion.Euler( 0, m_SynchronizedTurnSpeed * timePassed, 0 ); + extrapolatePosition = turnRotation * ( m_SynchronizedSpeed * timePassed ); + break; + case PhotonTransformViewPositionModel.ExtrapolateOptions.FixedSpeed: + Vector3 moveDirection = ( m_NetworkPosition - GetOldestStoredNetworkPosition() ).normalized; + + extrapolatePosition = moveDirection * m_Model.ExtrapolateSpeed * timePassed; + break; + case PhotonTransformViewPositionModel.ExtrapolateOptions.EstimateSpeedAndTurn: + Vector3 moveDelta = ( m_NetworkPosition - GetOldestStoredNetworkPosition() ) * PhotonNetwork.sendRateOnSerialize; + extrapolatePosition = moveDelta * timePassed; + break; + } + + return extrapolatePosition; + } + + public void OnPhotonSerializeView( Vector3 currentPosition, PhotonStream stream, PhotonMessageInfo info ) + { + if( m_Model.SynchronizeEnabled == false ) + { + return; + } + + if( stream.isWriting == true ) + { + SerializeData( currentPosition, stream, info ); + } + else + { + DeserializeData( stream, info ); + } + + m_LastSerializeTime = PhotonNetwork.time; + m_UpdatedPositionAfterOnSerialize = false; + } + + void SerializeData( Vector3 currentPosition, PhotonStream stream, PhotonMessageInfo info ) + { + stream.SendNext( currentPosition ); + m_NetworkPosition = currentPosition; + + if( m_Model.ExtrapolateOption == PhotonTransformViewPositionModel.ExtrapolateOptions.SynchronizeValues || + m_Model.InterpolateOption == PhotonTransformViewPositionModel.InterpolateOptions.SynchronizeValues ) + { + stream.SendNext( m_SynchronizedSpeed ); + stream.SendNext( m_SynchronizedTurnSpeed ); + } + } + + void DeserializeData( PhotonStream stream, PhotonMessageInfo info ) + { + Vector3 readPosition = (Vector3)stream.ReceiveNext(); + if( m_Model.ExtrapolateOption == PhotonTransformViewPositionModel.ExtrapolateOptions.SynchronizeValues || + m_Model.InterpolateOption == PhotonTransformViewPositionModel.InterpolateOptions.SynchronizeValues ) + { + m_SynchronizedSpeed = (Vector3)stream.ReceiveNext(); + m_SynchronizedTurnSpeed = (float)stream.ReceiveNext(); + } + + if (m_OldNetworkPositions.Count == 0) + { + // if we don't have old positions yet, this is the very first update this client reads. let's use this as current AND old position. + m_NetworkPosition = readPosition; + } + + // the previously received position becomes the old(er) one and queued. the new one is the m_NetworkPosition + m_OldNetworkPositions.Enqueue( m_NetworkPosition ); + m_NetworkPosition = readPosition; + + // reduce items in queue to defined number of stored positions. + while( m_OldNetworkPositions.Count > m_Model.ExtrapolateNumberOfStoredPositions ) + { + m_OldNetworkPositions.Dequeue(); + } + } +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionControl.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionControl.cs.meta new file mode 100644 index 0000000..003f24d --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 83c7620118e76384db972fbb42e91b20 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionModel.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionModel.cs new file mode 100644 index 0000000..2bca35b --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionModel.cs @@ -0,0 +1,67 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Model to synchronize position via PUN PhotonView. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; + +[System.Serializable] +public class PhotonTransformViewPositionModel +{ + public enum InterpolateOptions + { + Disabled, + FixedSpeed, + EstimatedSpeed, + SynchronizeValues, + //MoveTowardsComplex, + Lerp, + } + + public enum ExtrapolateOptions + { + Disabled, + SynchronizeValues, + EstimateSpeedAndTurn, + FixedSpeed, + } + + public bool SynchronizeEnabled; + + public bool TeleportEnabled = true; + public float TeleportIfDistanceGreaterThan = 3f; + + public InterpolateOptions InterpolateOption = InterpolateOptions.EstimatedSpeed; + public float InterpolateMoveTowardsSpeed = 1f; + public float InterpolateLerpSpeed = 1f; + public float InterpolateMoveTowardsAcceleration = 2; + public float InterpolateMoveTowardsDeceleration = 2; + public AnimationCurve InterpolateSpeedCurve = new AnimationCurve( new Keyframe[] { + new Keyframe( -1, 0, 0, Mathf.Infinity ), + new Keyframe( 0, 1, 0, 0 ), + new Keyframe( 1, 1, 0, 1 ), + new Keyframe( 4, 4, 1, 0 ) } ); + + public ExtrapolateOptions ExtrapolateOption = ExtrapolateOptions.Disabled; + public float ExtrapolateSpeed = 1f; + public bool ExtrapolateIncludingRoundTripTime = true; + public int ExtrapolateNumberOfStoredPositions = 1; + + //public bool DrawNetworkGizmo = true; + //public Color NetworkGizmoColor = Color.red; + //public ExitGames.Client.GUI.GizmoType NetworkGizmoType; + //public float NetworkGizmoSize = 1f; + + //public bool DrawExtrapolatedGizmo = true; + //public Color ExtrapolatedGizmoColor = Color.yellow; + //public ExitGames.Client.GUI.GizmoType ExtrapolatedGizmoType; + //public float ExtrapolatedGizmoSize = 1f; + + public bool DrawErrorGizmo = true; +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionModel.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionModel.cs.meta new file mode 100644 index 0000000..58b8945 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewPositionModel.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 50a9ddcc59cdf244883cf0ec646cc8c1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationControl.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationControl.cs new file mode 100644 index 0000000..0055020 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationControl.cs @@ -0,0 +1,64 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Component to synchronize rotations via PUN PhotonView. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; + +public class PhotonTransformViewRotationControl +{ + PhotonTransformViewRotationModel m_Model; + Quaternion m_NetworkRotation; + + public PhotonTransformViewRotationControl( PhotonTransformViewRotationModel model ) + { + m_Model = model; + } + + /// + /// Gets the last rotation that was received through the network + /// + /// + public Quaternion GetNetworkRotation() + { + return m_NetworkRotation; + } + + public Quaternion GetRotation( Quaternion currentRotation ) + { + switch( m_Model.InterpolateOption ) + { + default: + case PhotonTransformViewRotationModel.InterpolateOptions.Disabled: + return m_NetworkRotation; + case PhotonTransformViewRotationModel.InterpolateOptions.RotateTowards: + return Quaternion.RotateTowards( currentRotation, m_NetworkRotation, m_Model.InterpolateRotateTowardsSpeed * Time.deltaTime ); + case PhotonTransformViewRotationModel.InterpolateOptions.Lerp: + return Quaternion.Lerp( currentRotation, m_NetworkRotation, m_Model.InterpolateLerpSpeed * Time.deltaTime ); + } + } + + public void OnPhotonSerializeView( Quaternion currentRotation, PhotonStream stream, PhotonMessageInfo info ) + { + if( m_Model.SynchronizeEnabled == false ) + { + return; + } + + if( stream.isWriting == true ) + { + stream.SendNext( currentRotation ); + m_NetworkRotation = currentRotation; + } + else + { + m_NetworkRotation = (Quaternion)stream.ReceiveNext(); + } + } +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationControl.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationControl.cs.meta new file mode 100644 index 0000000..f3520cd --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c6756f3d99937134d9b25f9573d60f27 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationModel.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationModel.cs new file mode 100644 index 0000000..c97578f --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationModel.cs @@ -0,0 +1,29 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Model class to synchronize rotations via PUN PhotonView. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; + +[System.Serializable] +public class PhotonTransformViewRotationModel +{ + public enum InterpolateOptions + { + Disabled, + RotateTowards, + Lerp, + } + + public bool SynchronizeEnabled; + + public InterpolateOptions InterpolateOption = InterpolateOptions.RotateTowards; + public float InterpolateRotateTowardsSpeed = 180; + public float InterpolateLerpSpeed = 5; +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationModel.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationModel.cs.meta new file mode 100644 index 0000000..288faef --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewRotationModel.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fc810f3956379f34dae4b1487445d290 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleControl.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleControl.cs new file mode 100644 index 0000000..cf1a7cf --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleControl.cs @@ -0,0 +1,64 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Component to synchronize scale via PUN PhotonView. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; + +public class PhotonTransformViewScaleControl +{ + PhotonTransformViewScaleModel m_Model; + Vector3 m_NetworkScale = Vector3.one; + + public PhotonTransformViewScaleControl( PhotonTransformViewScaleModel model ) + { + m_Model = model; + } + + /// + /// Gets the last scale that was received through the network + /// + /// + public Vector3 GetNetworkScale() + { + return m_NetworkScale; + } + + public Vector3 GetScale( Vector3 currentScale ) + { + switch( m_Model.InterpolateOption ) + { + default: + case PhotonTransformViewScaleModel.InterpolateOptions.Disabled: + return m_NetworkScale; + case PhotonTransformViewScaleModel.InterpolateOptions.MoveTowards: + return Vector3.MoveTowards( currentScale, m_NetworkScale, m_Model.InterpolateMoveTowardsSpeed * Time.deltaTime ); + case PhotonTransformViewScaleModel.InterpolateOptions.Lerp: + return Vector3.Lerp( currentScale, m_NetworkScale, m_Model.InterpolateLerpSpeed * Time.deltaTime ); + } + } + + public void OnPhotonSerializeView( Vector3 currentScale, PhotonStream stream, PhotonMessageInfo info ) + { + if( m_Model.SynchronizeEnabled == false ) + { + return; + } + + if( stream.isWriting == true ) + { + stream.SendNext( currentScale ); + m_NetworkScale = currentScale; + } + else + { + m_NetworkScale = (Vector3)stream.ReceiveNext(); + } + } +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleControl.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleControl.cs.meta new file mode 100644 index 0000000..b9c242e --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleControl.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f8ddd626f728c0c4f9305c4fc472b1a2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleModel.cs b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleModel.cs new file mode 100644 index 0000000..0916dd1 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleModel.cs @@ -0,0 +1,29 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Model to synchronize scale via PUN PhotonView. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; + +[System.Serializable] +public class PhotonTransformViewScaleModel +{ + public enum InterpolateOptions + { + Disabled, + MoveTowards, + Lerp, + } + + public bool SynchronizeEnabled; + + public InterpolateOptions InterpolateOption = InterpolateOptions.Disabled; + public float InterpolateMoveTowardsSpeed = 1f; + public float InterpolateLerpSpeed; +} diff --git a/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleModel.cs.meta b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleModel.cs.meta new file mode 100644 index 0000000..b4f63a8 --- /dev/null +++ b/Assets/Photon Unity Networking/Plugins/PhotonNetwork/Views/PhotonTransformViewScaleModel.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7379c1718ac64ca48bdb60b1dd644a5c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/PunIcon-White-128.png b/Assets/Photon Unity Networking/PunIcon-White-128.png new file mode 100644 index 0000000..885c22f Binary files /dev/null and b/Assets/Photon Unity Networking/PunIcon-White-128.png differ diff --git a/Assets/Photon Unity Networking/PunIcon-White-128.png.meta b/Assets/Photon Unity Networking/PunIcon-White-128.png.meta new file mode 100644 index 0000000..967667e --- /dev/null +++ b/Assets/Photon Unity Networking/PunIcon-White-128.png.meta @@ -0,0 +1,45 @@ +fileFormatVersion: 2 +guid: e1e27211415083e41bd38b51da93f58b +TextureImporter: + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 128 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Photon Unity Networking/Resources.meta b/Assets/Photon Unity Networking/Resources.meta new file mode 100644 index 0000000..6f81656 --- /dev/null +++ b/Assets/Photon Unity Networking/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6d73612211923774ca636edb1f25062a +folderAsset: yes +timeCreated: 1488120608 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/Resources/PhotonServerSettings.asset b/Assets/Photon Unity Networking/Resources/PhotonServerSettings.asset new file mode 100644 index 0000000..7efe45b Binary files /dev/null and b/Assets/Photon Unity Networking/Resources/PhotonServerSettings.asset differ diff --git a/Assets/Photon Unity Networking/Resources/PhotonServerSettings.asset.meta b/Assets/Photon Unity Networking/Resources/PhotonServerSettings.asset.meta new file mode 100644 index 0000000..f96b083 --- /dev/null +++ b/Assets/Photon Unity Networking/Resources/PhotonServerSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c5ff01d2540e484db30ed2c8368b72b +timeCreated: 1488120609 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/UtilityScripts.meta b/Assets/Photon Unity Networking/UtilityScripts.meta new file mode 100644 index 0000000..c9a8b21 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cede7756377901040a188e85438b2654 +folderAsset: yes +timeCreated: 1488120601 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/UtilityScripts/ConnectAndJoinRandom.cs b/Assets/Photon Unity Networking/UtilityScripts/ConnectAndJoinRandom.cs new file mode 100644 index 0000000..7559162 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/ConnectAndJoinRandom.cs @@ -0,0 +1,70 @@ +using System; +using UnityEngine; +using System.Collections; + +/// +/// This script automatically connects to Photon (using the settings file), +/// tries to join a random room and creates one if none was found (which is ok). +/// +public class ConnectAndJoinRandom : Photon.MonoBehaviour +{ + /// Connect automatically? If false you can set this to true later on or call ConnectUsingSettings in your own scripts. + public bool AutoConnect = true; + + public byte Version = 1; + + /// if we don't want to connect in Start(), we have to "remember" if we called ConnectUsingSettings() + private bool ConnectInUpdate = true; + + + public virtual void Start() + { + PhotonNetwork.autoJoinLobby = false; // we join randomly. always. no need to join a lobby to get the list of rooms. + } + + public virtual void Update() + { + if (ConnectInUpdate && AutoConnect && !PhotonNetwork.connected) + { + Debug.Log("Update() was called by Unity. Scene is loaded. Let's connect to the Photon Master Server. Calling: PhotonNetwork.ConnectUsingSettings();"); + + ConnectInUpdate = false; + PhotonNetwork.ConnectUsingSettings(Version + "." + SceneManagerHelper.ActiveSceneBuildIndex); + } + } + + + // below, we implement some callbacks of PUN + // you can find PUN's callbacks in the class PunBehaviour or in enum PhotonNetworkingMessage + + + public virtual void OnConnectedToMaster() + { + Debug.Log("OnConnectedToMaster() was called by PUN. Now this client is connected and could join a room. Calling: PhotonNetwork.JoinRandomRoom();"); + PhotonNetwork.JoinRandomRoom(); + } + + public virtual void OnJoinedLobby() + { + Debug.Log("OnJoinedLobby(). This client is connected and does get a room-list, which gets stored as PhotonNetwork.GetRoomList(). This script now calls: PhotonNetwork.JoinRandomRoom();"); + PhotonNetwork.JoinRandomRoom(); + } + + public virtual void OnPhotonRandomJoinFailed() + { + Debug.Log("OnPhotonRandomJoinFailed() was called by PUN. No random room available, so we create one. Calling: PhotonNetwork.CreateRoom(null, new RoomOptions() {maxPlayers = 4}, null);"); + PhotonNetwork.CreateRoom(null, new RoomOptions() { MaxPlayers = 4 }, null); + } + + // the following methods are implemented to give you some context. re-implement them as needed. + + public virtual void OnFailedToConnectToPhoton(DisconnectCause cause) + { + Debug.LogError("Cause: " + cause); + } + + public void OnJoinedRoom() + { + Debug.Log("OnJoinedRoom() called by PUN. Now this client is in a room. From here on, your game would be running. For reference, all callbacks are listed in enum: PhotonNetworkingMessage"); + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/ConnectAndJoinRandom.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/ConnectAndJoinRandom.cs.meta new file mode 100644 index 0000000..13f1494 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/ConnectAndJoinRandom.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5c1b84a427010e0469ce0df07ab64dbc +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/CullArea.cs b/Assets/Photon Unity Networking/UtilityScripts/CullArea.cs new file mode 100644 index 0000000..cb86cfb --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/CullArea.cs @@ -0,0 +1,504 @@ +using System.Collections.Generic; +using UnityEngine; + +/// +/// Represents the cull area used for network culling. +/// +public class CullArea : MonoBehaviour +{ + private const int MAX_NUMBER_OF_ALLOWED_CELLS = 250; + + public const int MAX_NUMBER_OF_SUBDIVISIONS = 3; + + /// + /// This represents the first ID which is assigned to the first created cell. + /// If you already have some interest groups blocking this first ID, fell free to change it. + /// However increasing the first group ID decreases the maximum amount of allowed cells. + /// Allowed values are in range from 1 to 250. + /// + public readonly int FIRST_GROUP_ID = 1; + + /// + /// This represents the order in which updates are sent. + /// The number represents the subdivision of the cell hierarchy: + /// - 0: message is sent to all players + /// - 1: message is sent to players who are interested in the matching cell of the first subdivision + /// If there is only one subdivision we are sending one update to all players + /// before sending three consequent updates only to players who are in the same cell + /// or interested in updates of the current cell. + /// + public readonly int[] SUBDIVISION_FIRST_LEVEL_ORDER = new int[4] { 0, 1, 1, 1 }; + + /// + /// This represents the order in which updates are sent. + /// The number represents the subdivision of the cell hierarchy: + /// - 0: message is sent to all players + /// - 1: message is sent to players who are interested in the matching cell of the first subdivision + /// - 2: message is sent to players who are interested in the matching cell of the second subdivision + /// If there are two subdivisions we are sending every second update only to players + /// who are in the same cell or interested in updates of the current cell. + /// + public readonly int[] SUBDIVISION_SECOND_LEVEL_ORDER = new int[8] { 0, 2, 1, 2, 0, 2, 1, 2 }; + + /// + /// This represents the order in which updates are sent. + /// The number represents the subdivision of the cell hierarchy: + /// - 0: message is sent to all players + /// - 1: message is sent to players who are interested in the matching cell of the first subdivision + /// - 2: message is sent to players who are interested in the matching cell of the second subdivision + /// - 3: message is sent to players who are interested in the matching cell of the third subdivision + /// If there are two subdivisions we are sending every second update only to players + /// who are in the same cell or interested in updates of the current cell. + /// + public readonly int[] SUBDIVISION_THIRD_LEVEL_ORDER = new int[12] { 0, 3, 2, 3, 1, 3, 2, 3, 1, 3, 2, 3 }; + + public Vector2 Center; + public Vector2 Size = new Vector2(25.0f, 25.0f); + + public Vector2[] Subdivisions = new Vector2[MAX_NUMBER_OF_SUBDIVISIONS]; + + public int NumberOfSubdivisions; + + public int CellCount { get; private set; } + + public CellTree CellTree { get; private set; } + + public Dictionary Map { get; private set; } + + public bool YIsUpAxis = true; + public bool RecreateCellHierarchy = false; + + private int idCounter; + + /// + /// Creates the cell hierarchy at runtime. + /// + private void Awake() + { + idCounter = FIRST_GROUP_ID; + + CreateCellHierarchy(); + } + + /// + /// Creates the cell hierarchy in editor and draws the cell view. + /// + public void OnDrawGizmos() + { + idCounter = FIRST_GROUP_ID; + + if (RecreateCellHierarchy) + { + CreateCellHierarchy(); + } + + DrawCells(); + } + + /// + /// Creates the cell hierarchy. + /// + private void CreateCellHierarchy() + { + if (!IsCellCountAllowed()) + { + if (Debug.isDebugBuild) + { + Debug.LogError("There are too many cells created by your subdivision options. Maximum allowed number of cells is " + (MAX_NUMBER_OF_ALLOWED_CELLS - FIRST_GROUP_ID) + ". Current number of cells is " + CellCount + "."); + return; + } + else + { + Application.Quit(); + } + } + + CellTreeNode rootNode = new CellTreeNode(idCounter++, CellTreeNode.ENodeType.Root, null); + + if (YIsUpAxis) + { + Center = new Vector2(transform.position.x, transform.position.y); + Size = new Vector2(transform.localScale.x, transform.localScale.y); + + rootNode.Center = new Vector3(Center.x, Center.y, 0.0f); + rootNode.Size = new Vector3(Size.x, Size.y, 0.0f); + rootNode.TopLeft = new Vector3((Center.x - (Size.x / 2.0f)), (Center.y - (Size.y / 2.0f)), 0.0f); + rootNode.BottomRight = new Vector3((Center.x + (Size.x / 2.0f)), (Center.y + (Size.y / 2.0f)), 0.0f); + } + else + { + Center = new Vector2(transform.position.x, transform.position.z); + Size = new Vector2(transform.localScale.x, transform.localScale.z); + + rootNode.Center = new Vector3(Center.x, 0.0f, Center.y); + rootNode.Size = new Vector3(Size.x, 0.0f, Size.y); + rootNode.TopLeft = new Vector3((Center.x - (Size.x / 2.0f)), 0.0f, (Center.y - (Size.y / 2.0f))); + rootNode.BottomRight = new Vector3((Center.x + (Size.x / 2.0f)), 0.0f, (Center.y + (Size.y / 2.0f))); + } + + CreateChildCells(rootNode, 1); + + CellTree = new CellTree(rootNode); + + RecreateCellHierarchy = false; + } + + /// + /// Creates all child cells. + /// + /// The current parent node. + /// The cell level within the current hierarchy. + private void CreateChildCells(CellTreeNode parent, int cellLevelInHierarchy) + { + if (cellLevelInHierarchy > NumberOfSubdivisions) + { + return; + } + + int rowCount = (int) Subdivisions[(cellLevelInHierarchy - 1)].x; + int columnCount = (int) Subdivisions[(cellLevelInHierarchy - 1)].y; + + float startX = parent.Center.x - (parent.Size.x / 2.0f); + float width = parent.Size.x / rowCount; + + for (int row = 0; row < rowCount; ++row) + { + for (int column = 0; column < columnCount; ++column) + { + float xPos = startX + (row * width) + (width / 2.0f); + + CellTreeNode node = new CellTreeNode(idCounter++, (NumberOfSubdivisions == cellLevelInHierarchy) ? CellTreeNode.ENodeType.Leaf : CellTreeNode.ENodeType.Node, parent); + + if (YIsUpAxis) + { + float startY = parent.Center.y - (parent.Size.y / 2.0f); + float height = parent.Size.y / columnCount; + float yPos = startY + (column * height) + (height / 2.0f); + + node.Center = new Vector3(xPos, yPos, 0.0f); + node.Size = new Vector3(width, height, 0.0f); + node.TopLeft = new Vector3(xPos - (width / 2.0f), yPos - (height / 2.0f), 0.0f); + node.BottomRight = new Vector3(xPos + (width / 2.0f), yPos + (height / 2.0f), 0.0f); + } + else + { + float startZ = parent.Center.z - (parent.Size.z / 2.0f); + float depth = parent.Size.z / columnCount; + float zPos = startZ + (column * depth) + (depth / 2.0f); + + node.Center = new Vector3(xPos, 0.0f, zPos); + node.Size = new Vector3(width, 0.0f, depth); + node.TopLeft = new Vector3(xPos - (width / 2.0f), 0.0f, zPos - (depth / 2.0f)); + node.BottomRight = new Vector3(xPos + (width / 2.0f), 0.0f, zPos + (depth / 2.0f)); + } + + parent.AddChild(node); + + CreateChildCells(node, (cellLevelInHierarchy + 1)); + } + } + + } + + /// + /// Draws the cells. + /// + private void DrawCells() + { + if ((CellTree != null) && (CellTree.RootNode != null)) + { + CellTree.RootNode.Draw(); + } + else + { + RecreateCellHierarchy = true; + } + } + + /// + /// Checks if the cell count is allowed. + /// + /// True if the cell count is allowed, false if the cell count is too large. + private bool IsCellCountAllowed() + { + int horizontalCells = 1; + int verticalCells = 1; + + foreach (Vector2 v in Subdivisions) + { + horizontalCells *= (int) v.x; + verticalCells *= (int) v.y; + } + + CellCount = horizontalCells * verticalCells; + + return (CellCount <= (MAX_NUMBER_OF_ALLOWED_CELLS - FIRST_GROUP_ID)); + } + + /// + /// Gets a list of all cell IDs the player is currently inside or nearby. + /// + /// The current position of the player. + /// A list containing all cell IDs the player is currently inside or nearby. + public List GetActiveCells(Vector3 position) + { + List insideCells = new List(0); + CellTree.RootNode.GetInsideCells(insideCells, YIsUpAxis, position); + + List nearbyCells = new List(0); + CellTree.RootNode.GetNearbyCells(nearbyCells, YIsUpAxis, position); + + foreach (int id in nearbyCells) + { + if (!insideCells.Contains(id)) + { + insideCells.Add(id); + } + } + + return insideCells; + } +} + +/// +/// Represents the tree accessible from its root node. +/// +public class CellTree +{ + /// + /// Represents the root node of the cell tree. + /// + public CellTreeNode RootNode { get; private set; } + + /// + /// Default constructor. + /// + public CellTree() + { + } + + /// + /// Constructor to define the root node. + /// + /// The root node of the tree. + public CellTree(CellTreeNode root) + { + RootNode = root; + } +} + +/// +/// Represents a single node of the tree. +/// +public class CellTreeNode +{ + public enum ENodeType + { + Root, + Node, + Leaf + } + + /// + /// Represents the unique ID of the cell. + /// + public int Id; + + /// + /// Represents the center, top-left or bottom-right position of the cell + /// or the size of the cell. + /// + public Vector3 Center, Size, TopLeft, BottomRight; + + /// + /// Describes the current node type of the cell tree node. + /// + public ENodeType NodeType; + + /// + /// Reference tot he parent node. + /// + public CellTreeNode Parent; + + /// + /// A list containing all child nodes. + /// + public List Childs; + + /// + /// The max distance the player can have to the center of the cell for being 'nearby'. + /// This is calculated once at runtime. + /// + private float maxDistance; + + /// + /// Default constructor. + /// + public CellTreeNode() + { + } + + /// + /// Constructor to define the ID and the node type as well as setting a parent node. + /// + /// The ID of the cell is used as the interest group. + /// The node type of the cell tree node. + /// The parent node of the cell tree node. + public CellTreeNode(int id, ENodeType nodeType, CellTreeNode parent) + { + Id = id; + + NodeType = nodeType; + + Parent = parent; + } + + /// + /// Adds the given child to the node. + /// + /// The child which is added to the node. + public void AddChild(CellTreeNode child) + { + if (Childs == null) + { + Childs = new List(1); + } + + Childs.Add(child); + } + + /// + /// Draws the cell in the editor. + /// + public void Draw() + { +#if UNITY_EDITOR + + if (Childs != null) + { + foreach (CellTreeNode node in Childs) + { + node.Draw(); + } + } + + Gizmos.color = new Color((NodeType == ENodeType.Root) ? 1 : 0, (NodeType == ENodeType.Node) ? 1 : 0, (NodeType == ENodeType.Leaf) ? 1 : 0); + Gizmos.DrawWireCube(Center, Size); + + UnityEditor.Handles.Label(Center, Id.ToString(), new GUIStyle() { fontStyle = FontStyle.Bold }); + +#endif + } + + /// + /// Gathers all leaf nodes and adds them to a given list. + /// + /// The list containing all gathered leaf nodes. + public void GetAllLeafNodes(List leafNodes) + { + if (Childs != null) + { + foreach (CellTreeNode node in Childs) + { + node.GetAllLeafNodes(leafNodes); + } + } + else + { + leafNodes.Add(this); + } + } + + /// + /// Gathers all cell IDs the player is currently inside. + /// + /// The list to add all cell IDs to the player is currently inside. + /// Describes if the y-axis is used as up-axis. + /// The current position of the player + public void GetInsideCells(List insideCells, bool yIsUpAxis, Vector3 position) + { + if (IsPointInsideCell(yIsUpAxis, position)) + { + insideCells.Add(Id); + + if (Childs != null) + { + foreach (CellTreeNode node in Childs) + { + node.GetInsideCells(insideCells, yIsUpAxis, position); + } + } + } + } + + /// + /// Gathers all cell IDs the palyer is currently nearby. + /// + /// The list to add all cell IDs to the player is currently nearby. + /// Describes if the y-axis is used as up-axis. + /// The current position of the player + public void GetNearbyCells(List nearbyCells, bool yIsUpAxis, Vector3 position) + { + if (IsPointNearCell(yIsUpAxis, position)) + { + if (NodeType != ENodeType.Leaf) + { + foreach (CellTreeNode node in Childs) + { + node.GetNearbyCells(nearbyCells, yIsUpAxis, position); + } + } + else + { + nearbyCells.Add(Id); + } + } + } + + /// + /// Checks if the given point is inside the cell. + /// + /// Describes if the y-axis is used as up-axis. + /// The point to check. + /// True if the point is inside the cell, false if the point is not inside the cell. + public bool IsPointInsideCell(bool yIsUpAxis, Vector3 point) + { + if ((point.x < TopLeft.x) || (point.x > BottomRight.x)) + { + return false; + } + + if (yIsUpAxis) + { + if ((point.y >= TopLeft.y) && (point.y <= BottomRight.y)) + { + return true; + } + } + else + { + if ((point.z >= TopLeft.z) && (point.z <= BottomRight.z)) + { + return true; + } + } + + return false; + } + + /// + /// Checks if the given point is near the cell. + /// + /// Describes if the y-axis is used as up-axis. + /// The point to check. + /// True if the point is near the cell, false if the point is too far away. + public bool IsPointNearCell(bool yIsUpAxis, Vector3 point) + { + if (maxDistance == 0.0f) + { + maxDistance = (Size.x + Size.y + Size.z) / 2.0f; + } + + return ((point - Center).sqrMagnitude <= (maxDistance * maxDistance)); + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/CullArea.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/CullArea.cs.meta new file mode 100644 index 0000000..9f081cd --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/CullArea.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfb1c264fdc576442b2f42c998bed4a2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/HighlightOwnedGameObj.cs b/Assets/Photon Unity Networking/UtilityScripts/HighlightOwnedGameObj.cs new file mode 100644 index 0000000..22885cb --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/HighlightOwnedGameObj.cs @@ -0,0 +1,33 @@ +using UnityEngine; + +[RequireComponent(typeof (PhotonView))] +public class HighlightOwnedGameObj : Photon.MonoBehaviour +{ + public GameObject PointerPrefab; + public float Offset = 0.5f; + private Transform markerTransform; + + + // Update is called once per frame + private void Update() + { + if (photonView.isMine) + { + if (this.markerTransform == null) + { + GameObject markerObject = (GameObject) GameObject.Instantiate(this.PointerPrefab); + markerObject.transform.parent = gameObject.transform; + this.markerTransform = markerObject.transform; + } + + Vector3 parentPos = gameObject.transform.position; + this.markerTransform.position = new Vector3(parentPos.x, parentPos.y + this.Offset, parentPos.z); + this.markerTransform.rotation = Quaternion.identity; + } + else if (this.markerTransform != null) + { + Destroy(this.markerTransform.gameObject); + this.markerTransform = null; + } + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/HighlightOwnedGameObj.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/HighlightOwnedGameObj.cs.meta new file mode 100644 index 0000000..bfe5fcd --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/HighlightOwnedGameObj.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 000ef710937cf394f83251fd684272ec +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/InRoomChat.cs b/Assets/Photon Unity Networking/UtilityScripts/InRoomChat.cs new file mode 100644 index 0000000..0907df5 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/InRoomChat.cs @@ -0,0 +1,95 @@ +using System.Collections.Generic; +using UnityEngine; +using System.Collections; + +[RequireComponent(typeof(PhotonView))] +public class InRoomChat : Photon.MonoBehaviour +{ + public Rect GuiRect = new Rect(0,0, 250,300); + public bool IsVisible = true; + public bool AlignBottom = false; + public List messages = new List(); + private string inputLine = ""; + private Vector2 scrollPos = Vector2.zero; + + public static readonly string ChatRPC = "Chat"; + + public void Start() + { + if (this.AlignBottom) + { + this.GuiRect.y = Screen.height - this.GuiRect.height; + } + } + + public void OnGUI() + { + if (!this.IsVisible || !PhotonNetwork.inRoom) + { + return; + } + + if (Event.current.type == EventType.KeyDown && (Event.current.keyCode == KeyCode.KeypadEnter || Event.current.keyCode == KeyCode.Return)) + { + if (!string.IsNullOrEmpty(this.inputLine)) + { + this.photonView.RPC("Chat", PhotonTargets.All, this.inputLine); + this.inputLine = ""; + GUI.FocusControl(""); + return; // printing the now modified list would result in an error. to avoid this, we just skip this single frame + } + else + { + GUI.FocusControl("ChatInput"); + } + } + + GUI.SetNextControlName(""); + GUILayout.BeginArea(this.GuiRect); + + scrollPos = GUILayout.BeginScrollView(scrollPos); + GUILayout.FlexibleSpace(); + for (int i = messages.Count - 1; i >= 0; i--) + { + GUILayout.Label(messages[i]); + } + GUILayout.EndScrollView(); + + GUILayout.BeginHorizontal(); + GUI.SetNextControlName("ChatInput"); + inputLine = GUILayout.TextField(inputLine); + if (GUILayout.Button("Send", GUILayout.ExpandWidth(false))) + { + this.photonView.RPC("Chat", PhotonTargets.All, this.inputLine); + this.inputLine = ""; + GUI.FocusControl(""); + } + GUILayout.EndHorizontal(); + GUILayout.EndArea(); + } + + [PunRPC] + public void Chat(string newLine, PhotonMessageInfo mi) + { + string senderName = "anonymous"; + + if (mi.sender != null) + { + if (!string.IsNullOrEmpty(mi.sender.NickName)) + { + senderName = mi.sender.NickName; + } + else + { + senderName = "player " + mi.sender.ID; + } + } + + this.messages.Add(senderName +": " + newLine); + } + + public void AddLine(string newLine) + { + this.messages.Add(newLine); + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/InRoomChat.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/InRoomChat.cs.meta new file mode 100644 index 0000000..b704ebe --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/InRoomChat.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 043bd8ce63fde7c41a9ee103809fa981 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/InRoomRoundTimer.cs b/Assets/Photon Unity Networking/UtilityScripts/InRoomRoundTimer.cs new file mode 100644 index 0000000..3bf868f --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/InRoomRoundTimer.cs @@ -0,0 +1,120 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Photon Unity Networking +// +// -------------------------------------------------------------------------------------------------------------------- + +using ExitGames.Client.Photon; +using UnityEngine; + + +/// +/// Simple script that uses a property to sync a start time for a multiplayer game. +/// +/// +/// When entering a room, the first player will store the synchronized timestamp. +/// You can't set the room's synchronized time in CreateRoom, because the clock on the Master Server +/// and those on the Game Servers are not in sync. We use many servers and each has it's own timer. +/// +/// Everyone else will join the room and check the property to calculate how much time passed since start. +/// You can start a new round whenever you like. +/// +/// Based on this, you should be able to implement a synchronized timer for turns between players. +/// +public class InRoomRoundTimer : MonoBehaviour +{ + public int SecondsPerTurn = 5; // time per round/turn + public double StartTime; // this should could also be a private. i just like to see this in inspector + public Rect TextPos = new Rect(0,80,150,300); // default gui position. inspector overrides this! + + private bool startRoundWhenTimeIsSynced; // used in an edge-case when we wanted to set a start time but don't know it yet. + private const string StartTimeKey = "st"; // the name of our "start time" custom property. + + + private void StartRoundNow() + { + // in some cases, when you enter a room, the server time is not available immediately. + // time should be 0.0f but to make sure we detect it correctly, check for a very low value. + if (PhotonNetwork.time < 0.0001f) + { + // we can only start the round when the time is available. let's check that in Update() + startRoundWhenTimeIsSynced = true; + return; + } + startRoundWhenTimeIsSynced = false; + + + + ExitGames.Client.Photon.Hashtable startTimeProp = new Hashtable(); // only use ExitGames.Client.Photon.Hashtable for Photon + startTimeProp[StartTimeKey] = PhotonNetwork.time; + PhotonNetwork.room.SetCustomProperties(startTimeProp); // implement OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged) to get this change everywhere + } + + + /// Called by PUN when this client entered a room (no matter if joined or created). + public void OnJoinedRoom() + { + if (PhotonNetwork.isMasterClient) + { + this.StartRoundNow(); + } + else + { + // as the creator of the room sets the start time after entering the room, we may enter a room that has no timer started yet + Debug.Log("StartTime already set: " + PhotonNetwork.room.CustomProperties.ContainsKey(StartTimeKey)); + } + } + + /// Called by PUN when new properties for the room were set (by any client in the room). + public void OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged) + { + if (propertiesThatChanged.ContainsKey(StartTimeKey)) + { + StartTime = (double)propertiesThatChanged[StartTimeKey]; + } + } + + /// + /// In theory, the client which created the room might crash/close before it sets the start time. + /// Just to make extremely sure this never happens, a new masterClient will check if it has to + /// start a new round. + /// + public void OnMasterClientSwitched(PhotonPlayer newMasterClient) + { + if (!PhotonNetwork.room.CustomProperties.ContainsKey(StartTimeKey)) + { + Debug.Log("The new master starts a new round, cause we didn't start yet."); + this.StartRoundNow(); + } + } + + + void Update() + { + if (startRoundWhenTimeIsSynced) + { + this.StartRoundNow(); // the "time is known" check is done inside the method. + } + } + + public void OnGUI() + { + // alternatively to doing this calculation here: + // calculate these values in Update() and make them publicly available to all other scripts + double elapsedTime = (PhotonNetwork.time - StartTime); + double remainingTime = SecondsPerTurn - (elapsedTime % SecondsPerTurn); + int turn = (int)(elapsedTime / SecondsPerTurn); + + + // simple gui for output + GUILayout.BeginArea(TextPos); + GUILayout.Label(string.Format("elapsed: {0:0.000}", elapsedTime)); + GUILayout.Label(string.Format("remaining: {0:0.000}", remainingTime)); + GUILayout.Label(string.Format("turn: {0:0}", turn)); + if (GUILayout.Button("new round")) + { + this.StartRoundNow(); + } + GUILayout.EndArea(); + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/InRoomRoundTimer.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/InRoomRoundTimer.cs.meta new file mode 100644 index 0000000..09c4f7a --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/InRoomRoundTimer.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ffcc1d657cd6ad9409b44f15d3deb78c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/InRoomTime.cs b/Assets/Photon Unity Networking/UtilityScripts/InRoomTime.cs new file mode 100644 index 0000000..47f75a8 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/InRoomTime.cs @@ -0,0 +1,123 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Photon Unity Networking +// +// -------------------------------------------------------------------------------------------------------------------- + + +//#define GUI_ENABLED + + +using System.Collections; +using UnityEngine; +using Hashtable = ExitGames.Client.Photon.Hashtable; + +/// +/// This component establishes a common, shared room-start-time and RoomTime and RoomTimestamp. Both go up without wrapping around (for ~48 days). +/// +/// +/// When entering a new room, this script will take a moment to establish the start timestamp. While this is done, all values are 0. +/// Uses a Custom Property in a room to sync a start time for a multiplayer game. +/// +/// The internally used roomStartTimestamp is only valid in "this" room and only on the one Game Server where +/// it was established initially. This means: This is not useful for asynchronous gameplay! +/// +public class InRoomTime : MonoBehaviour +{ + private int roomStartTimestamp; + private const string StartTimeKey = "#rt"; // the name of our "room time" custom property. + + + /// A common, synced timer as double (similar to Unity's Time.time) for a room, starting close to 0 and not wrapping around. + /// When IsoomTimeSet is false, RoomTimestamp and RoomTime will both be zero. + public double RoomTime + { + get + { + uint u = (uint)this.RoomTimestamp; + double t = u; + return t/1000; + } + } + + /// A common, synced timer for a room, starting close to 0 and not wrapping around. + /// When IsoomTimeSet is false, RoomTimestamp and RoomTime will both be zero. + public int RoomTimestamp + { + get { return PhotonNetwork.inRoom ? PhotonNetwork.ServerTimestamp - this.roomStartTimestamp : 0; } + } + + /// True if the client is in a room and if that room's start time is defined (by any player). + /// When IsoomTimeSet is false, RoomTimestamp and RoomTime will both be zero. + public bool IsRoomTimeSet + { + get { return PhotonNetwork.inRoom && PhotonNetwork.room.CustomProperties.ContainsKey(StartTimeKey); } + } + + + + internal IEnumerator SetRoomStartTimestamp() + { + //Debug.Log("SetRoomStartTimestamp() IsRoomTimeSet: " + IsRoomTimeSet + " PhotonNetwork.isMasterClient: " + PhotonNetwork.isMasterClient); + if (IsRoomTimeSet || !PhotonNetwork.isMasterClient) + { + //Debug.Log("Not setting time."); + yield break; + } + + + // in some cases, when you enter a room, the server time is not available immediately. + if (PhotonNetwork.ServerTimestamp == 0) + { + yield return 0; + } + + ExitGames.Client.Photon.Hashtable startTimeProp = new Hashtable(); // only use ExitGames.Client.Photon.Hashtable for Photon + startTimeProp[StartTimeKey] = PhotonNetwork.ServerTimestamp; + + //Debug.Log("Setting roomStartTimestamp property to: " + startTimeProp[StartTimeKey]); + PhotonNetwork.room.SetCustomProperties(startTimeProp); // implement OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged) to get this change everywhere + } + + + /// Called by PUN when this client entered a room (no matter if joined or created). + public void OnJoinedRoom() + { + StartCoroutine("SetRoomStartTimestamp"); + } + + /// + /// In theory, the client which created the room might crash/close before it sets the start time. + /// Just to make extremely sure this never happens, a new masterClient will check if it has to + /// start a new round. + /// + public void OnMasterClientSwitched(PhotonPlayer newMasterClient) + { + StartCoroutine("SetRoomStartTimestamp"); + } + + /// Called by PUN when new properties for the room were set (by any client in the room). + public void OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged) + { + if (propertiesThatChanged.ContainsKey(StartTimeKey)) + { + this.roomStartTimestamp = (int)propertiesThatChanged[StartTimeKey]; + //Debug.Log("Got prop for roomStartTimestamp: " + roomStartTimestamp); + } + } + + +#if GUI_ENABLED + + public Rect TextPos = new Rect(0, 150, 200, 300); // default gui position. inspector overrides this! + + public void OnGUI() + { + // simple gui for output + GUILayout.BeginArea(TextPos); + GUILayout.Label(string.Format("RoomTime: {0:0.000}", RoomTime)); + GUILayout.Label(string.Format("RoomTimestamp: {0:0.000}", RoomTimestamp)); + GUILayout.EndArea(); + } +#endif +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/InRoomTime.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/InRoomTime.cs.meta new file mode 100644 index 0000000..dbe7339 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/InRoomTime.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 662d55ff3273916409eea65fc61403b3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/InputToEvent.cs b/Assets/Photon Unity Networking/UtilityScripts/InputToEvent.cs new file mode 100644 index 0000000..aa6ea8e --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/InputToEvent.cs @@ -0,0 +1,118 @@ +using UnityEngine; + +/// +/// Utility component to forward mouse or touch input to clicked gameobjects. +/// Calls OnPress, OnClick and OnRelease methods on "first" game object. +/// +public class InputToEvent : MonoBehaviour +{ + private GameObject lastGo; + public static Vector3 inputHitPos; + public bool DetectPointedAtGameObject; + public static GameObject goPointedAt { get; private set; } + + private Vector2 pressedPosition = Vector2.zero; + private Vector2 currentPos = Vector2.zero; + public bool Dragging; + + private Camera m_Camera; + + public Vector2 DragVector + { + get { return this.Dragging ? this.currentPos - this.pressedPosition : Vector2.zero; } + } + + private void Start() + { + this.m_Camera = GetComponent(); + } + + // Update is called once per frame + private void Update() + { + if (this.DetectPointedAtGameObject) + { + goPointedAt = RaycastObject(Input.mousePosition); + } + + if (Input.touchCount > 0) + { + Touch touch = Input.GetTouch(0); + this.currentPos = touch.position; + + if (touch.phase == TouchPhase.Began) + { + Press(touch.position); + } + else if (touch.phase == TouchPhase.Ended) + { + Release(touch.position); + } + + return; + } + + this.currentPos = Input.mousePosition; + if (Input.GetMouseButtonDown(0)) + { + Press(Input.mousePosition); + } + if (Input.GetMouseButtonUp(0)) + { + Release(Input.mousePosition); + } + + if (Input.GetMouseButtonDown(1)) + { + this.pressedPosition = Input.mousePosition; + this.lastGo = RaycastObject(this.pressedPosition); + if (this.lastGo != null) + { + this.lastGo.SendMessage("OnPressRight", SendMessageOptions.DontRequireReceiver); + } + } + } + + + private void Press(Vector2 screenPos) + { + this.pressedPosition = screenPos; + this.Dragging = true; + + this.lastGo = RaycastObject(screenPos); + if (this.lastGo != null) + { + this.lastGo.SendMessage("OnPress", SendMessageOptions.DontRequireReceiver); + } + } + + private void Release(Vector2 screenPos) + { + if (this.lastGo != null) + { + GameObject currentGo = RaycastObject(screenPos); + if (currentGo == this.lastGo) + { + this.lastGo.SendMessage("OnClick", SendMessageOptions.DontRequireReceiver); + } + + this.lastGo.SendMessage("OnRelease", SendMessageOptions.DontRequireReceiver); + this.lastGo = null; + } + + this.pressedPosition = Vector2.zero; + this.Dragging = false; + } + + private GameObject RaycastObject(Vector2 screenPos) + { + RaycastHit info; + if (Physics.Raycast(this.m_Camera.ScreenPointToRay(screenPos), out info, 200)) + { + inputHitPos = info.point; + return info.collider.gameObject; + } + + return null; + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/InputToEvent.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/InputToEvent.cs.meta new file mode 100644 index 0000000..9f0f350 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/InputToEvent.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4fdde8222e647b24b816eec3ad67ff32 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/ManualPhotonViewAllocator.cs b/Assets/Photon Unity Networking/UtilityScripts/ManualPhotonViewAllocator.cs new file mode 100644 index 0000000..1885424 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/ManualPhotonViewAllocator.cs @@ -0,0 +1,31 @@ +using UnityEngine; +using System.Collections; + +[RequireComponent(typeof(PhotonView))] +public class ManualPhotonViewAllocator : MonoBehaviour +{ + public GameObject Prefab; + + public void AllocateManualPhotonView() + { + PhotonView pv = this.gameObject.GetPhotonView(); + if (pv == null) + { + Debug.LogError("Can't do manual instantiation without PhotonView component."); + return; + } + + int viewID = PhotonNetwork.AllocateViewID(); + pv.RPC("InstantiateRpc", PhotonTargets.AllBuffered, viewID); + } + + [PunRPC] + public void InstantiateRpc(int viewID) + { + GameObject go = GameObject.Instantiate(Prefab, InputToEvent.inputHitPos + new Vector3(0, 5f, 0), Quaternion.identity) as GameObject; + go.GetPhotonView().viewID = viewID; + + OnClickDestroy ocd = go.GetComponent(); + ocd.DestroyByRpc = true; + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/ManualPhotonViewAllocator.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/ManualPhotonViewAllocator.cs.meta new file mode 100644 index 0000000..0499fb5 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/ManualPhotonViewAllocator.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2668418d0a8c6804facdeca6e5fc6d98 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/MoveByKeys.cs b/Assets/Photon Unity Networking/UtilityScripts/MoveByKeys.cs new file mode 100644 index 0000000..8f1ded6 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/MoveByKeys.cs @@ -0,0 +1,85 @@ +using UnityEngine; + +/// +/// Very basic component to move a GameObject by WASD and Space. +/// +/// +/// Requires a PhotonView. +/// Disables itself on GameObjects that are not owned on Start. +/// +/// Speed affects movement-speed. +/// JumpForce defines how high the object "jumps". +/// JumpTimeout defines after how many seconds you can jump again. +/// +[RequireComponent(typeof (PhotonView))] +public class MoveByKeys : Photon.MonoBehaviour +{ + public float Speed = 10f; + public float JumpForce = 200f; + public float JumpTimeout = 0.5f; + + private bool isSprite; + private float jumpingTime; + private Rigidbody body; + private Rigidbody2D body2d; + + public void Start() + { + //enabled = photonView.isMine; + this.isSprite = (GetComponent() != null); + + this.body2d = GetComponent(); + this.body = GetComponent(); + } + + + // Update is called once per frame + public void FixedUpdate() + { + if (!photonView.isMine) + { + return; + } + + if ((Input.GetAxisRaw("Horizontal") < -0.1f) || (Input.GetAxisRaw("Horizontal") > 0.1f)) + { + transform.position += Vector3.right * (Speed * Time.deltaTime) * Input.GetAxisRaw("Horizontal"); + } + + // jumping has a simple "cooldown" time but you could also jump in the air + if (this.jumpingTime <= 0.0f) + { + if (this.body != null || this.body2d != null) + { + // obj has a Rigidbody and can jump (AddForce) + if (Input.GetKey(KeyCode.Space)) + { + this.jumpingTime = this.JumpTimeout; + + Vector2 jump = Vector2.up*this.JumpForce; + if (this.body2d != null) + { + this.body2d.AddForce(jump); + } + else if (this.body != null) + { + this.body.AddForce(jump); + } + } + } + } + else + { + this.jumpingTime -= Time.deltaTime; + } + + // 2d objects can't be moved in 3d "forward" + if (!this.isSprite) + { + if ((Input.GetAxisRaw("Vertical") < -0.1f) || (Input.GetAxisRaw("Vertical") > 0.1f)) + { + transform.position += Vector3.forward * (Speed * Time.deltaTime) * Input.GetAxisRaw("Vertical"); + } + } + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/MoveByKeys.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/MoveByKeys.cs.meta new file mode 100644 index 0000000..63447da --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/MoveByKeys.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 99b4daedc5e674a429acdf1e77da6a55 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/NetworkCullingHandler.cs b/Assets/Photon Unity Networking/UtilityScripts/NetworkCullingHandler.cs new file mode 100644 index 0000000..7937fd1 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/NetworkCullingHandler.cs @@ -0,0 +1,213 @@ +using UnityEngine; +using System.Collections.Generic; + +/// +/// Handles the network culling. +/// +[RequireComponent(typeof(PhotonView))] +public class NetworkCullingHandler : MonoBehaviour +{ + #region VARIABLES + + private int orderIndex; + + private CullArea cullArea; + + private List previousActiveCells, activeCells; + + private PhotonView pView; + + private Vector3 lastPosition, currentPosition; + + #endregion + + #region UNITY_FUNCTIONS + + /// + /// Gets references to the PhotonView component and the cull area game object. + /// + private void OnEnable() + { + if (pView == null) + { + pView = GetComponent(); + + if (!pView.isMine) + { + return; + } + } + + if (cullArea == null) + { + cullArea = GameObject.FindObjectOfType(); + } + + previousActiveCells = new List(0); + activeCells = new List(0); + + currentPosition = lastPosition = transform.position; + } + + /// + /// Initializes the right interest group or prepares the permanent change of the interest group of the PhotonView component. + /// + private void Start() + { + if (!pView.isMine) + { + return; + } + + if (PhotonNetwork.inRoom) + { + if (cullArea.NumberOfSubdivisions == 0) + { + pView.group = cullArea.FIRST_GROUP_ID; + + PhotonNetwork.SetReceivingEnabled(cullArea.FIRST_GROUP_ID, true); + PhotonNetwork.SetSendingEnabled(cullArea.FIRST_GROUP_ID, true); + } + else + { + CheckGroupsChanged(); + InvokeRepeating("UpdateActiveGroup", 0.0f, 1.0f / PhotonNetwork.sendRateOnSerialize); + } + } + } + + /// + /// Checks if the player has moved perviously and updates the interest groups if necessary. + /// + private void Update() + { + if (!pView.isMine) + { + return; + } + + lastPosition = currentPosition; + currentPosition = transform.position; + + // This is a simple position comparison of the current and the previous position. + // When using Network Culling in a bigger project keep in mind that there might + // be more transform-related options, e.g. the rotation, or other options to check. + if (currentPosition != lastPosition) + { + CheckGroupsChanged(); + } + } + + /// + /// Cancels all (upcoming) invoke calls. + /// + private void OnDisable() + { + CancelInvoke(); + } + + #endregion + + /// + /// Checks if the interest groups have changed and perform action if necessary. + /// + private void CheckGroupsChanged() + { + if (cullArea.NumberOfSubdivisions == 0) + { + return; + } + + previousActiveCells = new List(activeCells); + activeCells = cullArea.GetActiveCells(transform.position); + + if (activeCells.Count != previousActiveCells.Count) + { + UpdateInterestGroups(); + return; + } + + foreach (int groupId in activeCells) + { + if (!previousActiveCells.Contains(groupId)) + { + UpdateInterestGroups(); + return; + } + } + } + + /// + /// Unsubscribes from old and subscribes to new interest groups. + /// + private void UpdateInterestGroups() + { + foreach (int groupId in previousActiveCells) + { + PhotonNetwork.SetReceivingEnabled(groupId, false); + PhotonNetwork.SetSendingEnabled(groupId, false); + } + + foreach (int groupId in activeCells) + { + PhotonNetwork.SetReceivingEnabled(groupId, true); + PhotonNetwork.SetSendingEnabled(groupId, true); + } + } + + /// + /// Updates the current group of the PhotonView component. + /// + private void UpdateActiveGroup() + { + // If the player leaves the area we insert the whole area itself as an active cell. + // This can be removed if it is sure that the player is not able to leave the area. + while (activeCells.Count <= cullArea.NumberOfSubdivisions) + { + activeCells.Add(cullArea.FIRST_GROUP_ID); + } + + if (cullArea.NumberOfSubdivisions == 1) + { + orderIndex = (++orderIndex % cullArea.SUBDIVISION_FIRST_LEVEL_ORDER.Length); + pView.group = activeCells[cullArea.SUBDIVISION_FIRST_LEVEL_ORDER[orderIndex]]; + } + else if (cullArea.NumberOfSubdivisions == 2) + { + orderIndex = (++orderIndex % cullArea.SUBDIVISION_SECOND_LEVEL_ORDER.Length); + pView.group = activeCells[cullArea.SUBDIVISION_SECOND_LEVEL_ORDER[orderIndex]]; + } + else if (cullArea.NumberOfSubdivisions == 3) + { + orderIndex = (++orderIndex % cullArea.SUBDIVISION_THIRD_LEVEL_ORDER.Length); + pView.group = activeCells[cullArea.SUBDIVISION_THIRD_LEVEL_ORDER[orderIndex]]; + } + } + + /// + /// Drawing informations. + /// + private void OnGUI() + { + if (!pView.isMine) + { + return; + } + + string subscribedAndActiveCells = "Inside cells:\n"; + string subscribedCells = "Subscribed cells:\n"; + + for (int index = 0; index < activeCells.Count; ++index) + { + if (index <= cullArea.NumberOfSubdivisions) + { + subscribedAndActiveCells += activeCells[index] + " "; + } + + subscribedCells += activeCells[index] + " "; + } + + GUI.Label(new Rect(20.0f, Screen.height - 100.0f, 200.0f, 40.0f), "" + subscribedAndActiveCells + "", new GUIStyle() { alignment = TextAnchor.UpperLeft, fontSize = 16 } ); + GUI.Label(new Rect(20.0f, Screen.height - 60.0f, 200.0f, 40.0f), "" + subscribedCells + "", new GUIStyle() { alignment = TextAnchor.UpperLeft, fontSize = 16 } ); + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/NetworkCullingHandler.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/NetworkCullingHandler.cs.meta new file mode 100644 index 0000000..74b7441 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/NetworkCullingHandler.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 84db789113d4b01418c1becb128c4561 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnAwakeUsePhotonView.cs b/Assets/Photon Unity Networking/UtilityScripts/OnAwakeUsePhotonView.cs new file mode 100644 index 0000000..1f1402b --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnAwakeUsePhotonView.cs @@ -0,0 +1,44 @@ +using ExitGames.Client.Photon; +using UnityEngine; +using System.Collections; + + +[RequireComponent(typeof(PhotonView))] +public class OnAwakeUsePhotonView : Photon.MonoBehaviour { + + // tries to send an RPC as soon as this script awakes (e.g. immediately when instantiated) + void Awake() + { + if (!this.photonView.isMine) + { + return; + } + + // Debug.Log("OnAwakeSendRPC.Awake() of " + this + " photonView: " + this.photonView + " this.photonView.instantiationData: " + this.photonView.instantiationData); + this.photonView.RPC("OnAwakeRPC", PhotonTargets.All); + } + + // tries to send an RPC as soon as this script starts (e.g. immediately when instantiated) + void Start() + { + if (!this.photonView.isMine) + { + return; + } + + // Debug.Log("OnAwakeSendRPC.Start() of " + this + " photonView: " + this.photonView); + this.photonView.RPC("OnAwakeRPC", PhotonTargets.All, (byte)1); + } + + [PunRPC] + public void OnAwakeRPC() + { + Debug.Log("RPC: 'OnAwakeRPC' PhotonView: " + this.photonView); + } + + [PunRPC] + public void OnAwakeRPC(byte myParameter) + { + Debug.Log("RPC: 'OnAwakeRPC' Parameter: " + myParameter + " PhotonView: " + this.photonView); + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnAwakeUsePhotonView.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/OnAwakeUsePhotonView.cs.meta new file mode 100644 index 0000000..56814c2 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnAwakeUsePhotonView.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d4d05e72b5afbcf489dc1e87a3fa38f2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnClickDestroy.cs b/Assets/Photon Unity Networking/UtilityScripts/OnClickDestroy.cs new file mode 100644 index 0000000..42cad37 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnClickDestroy.cs @@ -0,0 +1,45 @@ +using UnityEngine; +using System.Collections; + +/// +/// Implements OnClick to destroy the GameObject it's attached to. Optionally a RPC is sent to do this. +/// +/// +/// Using an RPC to Destroy a GameObject allows any player to Destroy a GameObject. But it might cause errors. +/// RPC and the Instantiated GameObject are not fully linked on the server. One might stick in the server witout +/// the other. +/// +/// A buffered RPC gets cleaned up when the sending player leaves the room. This means, the RPC gets lost. +/// +/// Vice versus, a GameObject Instantiate might get cleaned up when the creating player leaves a room. +/// This way, the GameObject that a RPC targets might become lost. +/// +/// It makes sense to test those cases. Many are not breaking errors and you just have to be aware of them. +/// +/// Gets OnClick() calls by InputToEvent class attached to a camera. +/// +[RequireComponent(typeof(PhotonView))] +public class OnClickDestroy : Photon.MonoBehaviour +{ + public bool DestroyByRpc; + + public void OnClick() + { + if (!DestroyByRpc) + { + PhotonNetwork.Destroy(this.gameObject); + } + else + { + this.photonView.RPC("DestroyRpc", PhotonTargets.AllBuffered); + } + } + + [PunRPC] + public IEnumerator DestroyRpc() + { + GameObject.Destroy(this.gameObject); + yield return 0; // if you allow 1 frame to pass, the object's OnDestroy() method gets called and cleans up references. + PhotonNetwork.UnAllocateViewID(this.photonView.viewID); + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnClickDestroy.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/OnClickDestroy.cs.meta new file mode 100644 index 0000000..f091f18 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnClickDestroy.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9dab7328ba500e944a99d62065fba6c0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnClickInstantiate.cs b/Assets/Photon Unity Networking/UtilityScripts/OnClickInstantiate.cs new file mode 100644 index 0000000..2561434 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnClickInstantiate.cs @@ -0,0 +1,42 @@ +using UnityEngine; +using System.Collections; + +public class OnClickInstantiate : MonoBehaviour +{ + public GameObject Prefab; + public int InstantiateType; + private string[] InstantiateTypeNames = {"Mine", "Scene"}; + + public bool showGui; + + void OnClick() + { + if (!PhotonNetwork.inRoom) + { + // only use PhotonNetwork.Instantiate while in a room. + return; + } + + switch (InstantiateType) + { + case 0: + PhotonNetwork.Instantiate(Prefab.name, InputToEvent.inputHitPos + new Vector3(0, 5f, 0), Quaternion.identity, 0); + break; + case 1: + PhotonNetwork.InstantiateSceneObject(Prefab.name, InputToEvent.inputHitPos + new Vector3(0, 5f, 0), Quaternion.identity, 0, null); + break; + } + } + + void OnGUI() + { + if (showGui) + { + GUILayout.BeginArea(new Rect(Screen.width - 180, 0, 180, 50)); + InstantiateType = GUILayout.Toolbar(InstantiateType, InstantiateTypeNames); + GUILayout.EndArea(); + } + } + + +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnClickInstantiate.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/OnClickInstantiate.cs.meta new file mode 100644 index 0000000..1150759 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnClickInstantiate.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9b79a9b62449de940a073364858c3f9b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnClickLoadSomething.cs b/Assets/Photon Unity Networking/UtilityScripts/OnClickLoadSomething.cs new file mode 100644 index 0000000..e6829b3 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnClickLoadSomething.cs @@ -0,0 +1,32 @@ +using UnityEngine; +using System.Collections; +using UnityEngine.SceneManagement; + +/// +/// This component makes it easy to switch scenes or open webpages on click. +/// Requires a InputToEvent component on the camera to forward clicks on screen. +/// +public class OnClickLoadSomething : MonoBehaviour +{ + public enum ResourceTypeOption : byte + { + Scene, + Web + } + + public ResourceTypeOption ResourceTypeToLoad = ResourceTypeOption.Scene; + public string ResourceToLoad; + + public void OnClick() + { + switch (ResourceTypeToLoad) + { + case ResourceTypeOption.Scene: + SceneManager.LoadScene(ResourceToLoad); + break; + case ResourceTypeOption.Web: + Application.OpenURL(ResourceToLoad); + break; + } + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnClickLoadSomething.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/OnClickLoadSomething.cs.meta new file mode 100644 index 0000000..680947b --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnClickLoadSomething.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a9b53cc9db43d39428412f981834d9c1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnJoinedInstantiate.cs b/Assets/Photon Unity Networking/UtilityScripts/OnJoinedInstantiate.cs new file mode 100644 index 0000000..8e74fa6 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnJoinedInstantiate.cs @@ -0,0 +1,33 @@ +using UnityEngine; +using System.Collections; + +public class OnJoinedInstantiate : MonoBehaviour +{ + public Transform SpawnPosition; + public float PositionOffset = 2.0f; + public GameObject[] PrefabsToInstantiate; // set in inspector + + public void OnJoinedRoom() + { + if (this.PrefabsToInstantiate != null) + { + foreach (GameObject o in this.PrefabsToInstantiate) + { + Debug.Log("Instantiating: " + o.name); + + Vector3 spawnPos = Vector3.up; + if (this.SpawnPosition != null) + { + spawnPos = this.SpawnPosition.position; + } + + Vector3 random = Random.insideUnitSphere; + random.y = 0; + random = random.normalized; + Vector3 itempos = spawnPos + this.PositionOffset * random; + + PhotonNetwork.Instantiate(o.name, itempos, Quaternion.identity, 0); + } + } + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnJoinedInstantiate.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/OnJoinedInstantiate.cs.meta new file mode 100644 index 0000000..5b4fba0 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnJoinedInstantiate.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ed3b5dcba7bf9114cb13fc59e0a71f55 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnStartDelete.cs b/Assets/Photon Unity Networking/UtilityScripts/OnStartDelete.cs new file mode 100644 index 0000000..1ef64de --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnStartDelete.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +/// This component will destroy the GameObject it is attached to (in Start()). +public class OnStartDelete : MonoBehaviour +{ + // Use this for initialization + void Start() + { + Destroy(this.gameObject); + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/OnStartDelete.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/OnStartDelete.cs.meta new file mode 100644 index 0000000..4f4d47a --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/OnStartDelete.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f8d56a54ae062da4a87516fb994f4e30 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer.meta b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer.meta new file mode 100644 index 0000000..0331e3c --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 915aec212e8bd7a4690a05f2ad318e7d +folderAsset: yes +timeCreated: 1488120601 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor.meta b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor.meta new file mode 100644 index 0000000..5f5ac67 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 492ea4f7472081a4b85cc0efdade2450 +folderAsset: yes +timeCreated: 1488120601 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PlayerRoomIndexingInspector.cs b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PlayerRoomIndexingInspector.cs new file mode 100644 index 0000000..b3f9bd4 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PlayerRoomIndexingInspector.cs @@ -0,0 +1,70 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Photon Unity Utilities, +// +// +// Custom inspector for PlayerRoomIndexing +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using UnityEditor; + +namespace ExitGames.UtilityScripts +{ + [CustomEditor(typeof(PlayerRoomIndexing))] + public class PlayerRoomIndexingInspector : Editor { + + PlayerRoomIndexing _target; + int localPlayerIndex; + + void OnEnable () { + _target = (PlayerRoomIndexing)target; + _target.OnRoomIndexingChanged += RefreshData; + } + + void OnDisable () { + _target = (PlayerRoomIndexing)target; + _target.OnRoomIndexingChanged -= RefreshData; + } + + public override void OnInspectorGUI() + { + _target = (PlayerRoomIndexing)target; + + _target.OnRoomIndexingChanged += RefreshData; + + if (PhotonNetwork.inRoom) + { + EditorGUILayout.LabelField("Player Index", "PhotonPlayer ID"); + if (_target.PlayerIds != null) + { + int index = 0; + foreach(int ID in _target.PlayerIds) + { + GUI.enabled = ID!=0; + EditorGUILayout.LabelField("Player " +index + (PhotonNetwork.player.ID==ID?" - You -":""), ID==0?"n/a":PhotonPlayer.Find(ID).ToStringFull()); + GUI.enabled = true; + index++; + } + } + }else{ + GUILayout.Label("Room Indexing only works when localPlayer is inside a room"); + } + } + + /// + /// force repaint fo the inspector, else we would not see the new data in the inspector. + /// This is better then doing it in OnInspectorGUI too many times per frame for no need + /// + void RefreshData() + { + Repaint(); + } + + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PlayerRoomIndexingInspector.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PlayerRoomIndexingInspector.cs.meta new file mode 100644 index 0000000..4ed2ee0 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PlayerRoomIndexingInspector.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d6590f39353bf4efdb3b14691166135f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PunTeamsInspector.cs b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PunTeamsInspector.cs new file mode 100644 index 0000000..b6baa8a --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PunTeamsInspector.cs @@ -0,0 +1,57 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Photon Unity Utilities, +// +// +// Custom inspector for PunTeams +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using UnityEditor; + +namespace ExitGames.UtilityScripts +{ + [CustomEditor(typeof(PunTeams))] + public class PunTeamsInspector : Editor { + + + Dictionary _Foldouts ; + + public override void OnInspectorGUI() + { + if (_Foldouts==null) + { + _Foldouts = new Dictionary(); + } + + if (PunTeams.PlayersPerTeam!=null) + { + foreach (KeyValuePair> _pair in PunTeams.PlayersPerTeam) + { + if (!_Foldouts.ContainsKey(_pair.Key)) + { + _Foldouts[_pair.Key] = true; + } + + _Foldouts[_pair.Key] = EditorGUILayout.Foldout(_Foldouts[_pair.Key],"Team "+_pair.Key +" ("+_pair.Value.Count+")"); + + if (_Foldouts[_pair.Key]) + { + EditorGUI.indentLevel++; + foreach(PhotonPlayer _player in _pair.Value) + { + EditorGUILayout.LabelField("",_player.ToString() + (PhotonNetwork.player==_player?" - You -":"")); + } + EditorGUI.indentLevel--; + } + + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PunTeamsInspector.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PunTeamsInspector.cs.meta new file mode 100644 index 0000000..ff6b7e0 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/Editor/PunTeamsInspector.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7dcadaf22424c4f5d82f4d48c3b8097f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/PlayerRoomIndexing.cs b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/PlayerRoomIndexing.cs new file mode 100644 index 0000000..7fcb16b --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/PlayerRoomIndexing.cs @@ -0,0 +1,281 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Photon Unity Utilities, +// +// +// Assign numbers to Players in a room. Uses Room custom Properties +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +using Photon; +using ExitGames.Client.Photon; +using Hashtable = ExitGames.Client.Photon.Hashtable; + + + +namespace ExitGames.UtilityScripts +{ + /// + /// Implements consistent indexing in a room/game with help of room properties. Access them by PhotonPlayer.GetRoomIndex() extension. + /// + /// + /// indexing ranges from 0 to the maximum number of Players. + /// indexing remains for the player while in room. + /// If a Player is indexed 2 and player indexes 1 leaves, index 1 become vacant and will assigned to the future player joining (the first available vacant index is assigned when joining) + /// + public class PlayerRoomIndexing : PunBehaviour + { + + #region Public Properties + + /// + /// The instance. EntryPoint to query about Room Indexing. + /// + public static PlayerRoomIndexing instance; + + /// + /// OnRoomIndexingChanged delegate. Use + /// + public delegate void RoomIndexingChanged(); + /// + /// Called everytime the room Indexing was updated. Use this for discrete updates. Always better than brute force calls every frame. + /// + public RoomIndexingChanged OnRoomIndexingChanged; + + /// Defines the room custom property name to use for room player indexing tracking. + public const string RoomPlayerIndexedProp = "PlayerIndexes"; + + /// + /// Cached list of Player indexes. You can use .GetRoomIndex() + /// + /// The player identifiers. + public int[] PlayerIds + { + get { + return _playerIds; + } + } + + #endregion + + + + #region Private Properties + + int[] _playerIds; + object _indexes; + Dictionary _indexesLUT; + List _indexesPool; + PhotonPlayer _p; + + #endregion + + #region MonoBehaviours methods + + public void Awake() + { + if (instance!=null) + { + Debug.LogError("Existing instance of PlayerRoomIndexing found. Only One instance is required at the most. Please correct and have only one at any time."); + } + instance = this; + } + + #endregion + + + #region PunBehavior Overrides + + public override void OnJoinedRoom() + { + if (PhotonNetwork.isMasterClient) + { + AssignIndex(PhotonNetwork.player); + }else{ + RefreshData(); + } + } + + public override void OnLeftRoom() + { + RefreshData(); + } + + public override void OnPhotonPlayerConnected (PhotonPlayer newPlayer) + { + if (PhotonNetwork.isMasterClient) + { + AssignIndex(newPlayer); + } + + } + + public override void OnPhotonPlayerDisconnected(PhotonPlayer otherPlayer) + { + if (PhotonNetwork.isMasterClient) + { + UnAssignIndex(otherPlayer); + } + } + + public override void OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged) + { + if (propertiesThatChanged.ContainsKey(PlayerRoomIndexing.RoomPlayerIndexedProp)) + { + RefreshData(); + } + } + + + public override void OnMasterClientSwitched(PhotonPlayer newMasterClient) + { + if (PhotonNetwork.isMasterClient) + { + SanitizeIndexing(); + } + } + + #endregion + + /// Get the room index of a particular PhotonPlayer. You can also use .GetRoomIndex() + /// persistent index in room. -1 for none + public int GetRoomIndex( PhotonPlayer player) + { + if (_indexesLUT!=null && _indexesLUT.ContainsKey(player.ID)) + { + return _indexesLUT[player.ID]; + } + return -1; + } + + + /// + /// Sanitizes the indexing incase a player join while masterclient was changed and missed it. + /// + void SanitizeIndexing() + { + if (!PhotonNetwork.isMasterClient) + { + return; + } + + if (PhotonNetwork.room==null) + { + return; + } + + // attempt to access index props. + Dictionary _indexesLUT_local = new Dictionary(); + if(PhotonNetwork.room.CustomProperties.TryGetValue(PlayerRoomIndexing.RoomPlayerIndexedProp, out _indexes)) + { + _indexesLUT_local = _indexes as Dictionary; + } + + // check if we need to assign + if (_indexesLUT_local.Count != PhotonNetwork.room.PlayerCount) + { + foreach(PhotonPlayer _p in PhotonNetwork.playerList) + { + if (!_indexesLUT_local.ContainsKey(_p.ID)) + { + // Debug.Log("Sanitizing Index for "+_p); + AssignIndex(_p); + } + } + + } + + } + + /// + /// Internal call Refresh the cached data and call the OnRoomIndexingChanged delegate. + /// + void RefreshData() + { + if (PhotonNetwork.room!=null) + { + _playerIds = new int[PhotonNetwork.room.MaxPlayers]; + if (PhotonNetwork.room.CustomProperties.TryGetValue(PlayerRoomIndexing.RoomPlayerIndexedProp, out _indexes)) + { + _indexesLUT = _indexes as Dictionary; + + foreach(KeyValuePair _entry in _indexesLUT) + { + //Debug.Log("Entry; "+_entry.Key+":"+_entry.Value); + _p = PhotonPlayer.Find(_entry.Key); + _playerIds[_entry.Value] = _p.ID; + } + } + }else{ + _playerIds = new int[0]; + } + + + if (OnRoomIndexingChanged!=null) OnRoomIndexingChanged(); + } + + + void AssignIndex(PhotonPlayer player) + { + if (PhotonNetwork.room.CustomProperties.TryGetValue(PlayerRoomIndexing.RoomPlayerIndexedProp, out _indexes)) + { + _indexesLUT = _indexes as Dictionary; + + }else{ + _indexesLUT = new Dictionary(); + } + + List _indexesPool = new List( new bool[PhotonNetwork.room.MaxPlayers] ); + foreach(KeyValuePair _entry in _indexesLUT) + { + _indexesPool[_entry.Value] = true; + } + + _indexesLUT[player.ID] = Mathf.Max (0,_indexesPool.IndexOf(false)); + + PhotonNetwork.room.SetCustomProperties(new Hashtable() {{PlayerRoomIndexing.RoomPlayerIndexedProp, _indexesLUT}}); + + RefreshData(); + } + + + void UnAssignIndex(PhotonPlayer player) + { + if (PhotonNetwork.room.CustomProperties.TryGetValue(PlayerRoomIndexing.RoomPlayerIndexedProp, out _indexes)) + { + _indexesLUT = _indexes as Dictionary; + + _indexesLUT.Remove(player.ID); + PhotonNetwork.room.SetCustomProperties(new Hashtable() {{PlayerRoomIndexing.RoomPlayerIndexedProp, _indexesLUT}}); + }else{ + + } + + RefreshData(); + } + + } + + /// Extension used for PlayerRoomIndexing and PhotonPlayer class. + public static class PlayerRoomIndexingExtensions + { + /// Extension for PhotonPlayer class to wrap up access to the player's custom property. + /// persistent index in room. -1 for no indexing + public static int GetRoomIndex(this PhotonPlayer player) + { + if (PlayerRoomIndexing.instance == null) + { + Debug.LogError("Missing PlayerRoomIndexing Component in Scene"); + return -1; + } + return PlayerRoomIndexing.instance.GetRoomIndex(player); + } + + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/PlayerRoomIndexing.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/PlayerRoomIndexing.cs.meta new file mode 100644 index 0000000..c860e34 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PhotonPlayer/PlayerRoomIndexing.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f5a097d1ab84b464395a16e9a7bb35b1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/PickupItem.cs b/Assets/Photon Unity Networking/UtilityScripts/PickupItem.cs new file mode 100644 index 0000000..cd8cafd --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PickupItem.cs @@ -0,0 +1,214 @@ +using System.Collections.Generic; +using UnityEngine; +using System.Collections; +using Hashtable = ExitGames.Client.Photon.Hashtable; + + +/// +/// Makes a scene object pickup-able. Needs a PhotonView which belongs to the scene. +/// +/// Includes a OnPhotonSerializeView implementation that +[RequireComponent(typeof(PhotonView))] +public class PickupItem : Photon.MonoBehaviour, IPunObservable +{ + ///Enables you to define a timeout when the picked up item should re-spawn at the same place it was before. + /// + /// Set in Inspector per GameObject! The value in code is just the default. + /// + /// If you don't want an item to respawn, set SecondsBeforeRespawn == 0. + /// If an item does not respawn, it could be consumed or carried around and dropped somewhere else. + /// + /// A respawning item should stick to a fixed position. It should not be observed at all (in any PhotonView). + /// It can only be consumed and can't be dropped somewhere else (cause that would double the item). + /// + /// This script uses PunRespawn() as RPC and as method that gets called by Invoke() after a timeout. + /// No matter if the item respawns timed or by Drop, that method makes sure (temporary) owner and other status-values + /// are being re-set. + /// + public float SecondsBeforeRespawn = 2; + + /// The most likely trigger to pick up an item. Set in inspector! + /// Edit the collider and set collision masks to avoid pickups by random objects. + public bool PickupOnTrigger; + + /// If the pickup item is currently yours. Interesting in OnPickedUp(PickupItem item). + public bool PickupIsMine; + + /// GameObject to send an event "OnPickedUp(PickupItem item)" to. + /// + /// Implement OnPickedUp(PickupItem item) {} in some script on the linked game object. + /// The item will be "this" and item.PickupIsMine will help you to find if this pickup was done by "this player". + /// + public MonoBehaviour OnPickedUpCall; + + + // these values are internally used. they are public for debugging only + + /// If this client sent a pickup. To avoid sending multiple pickup requests before reply is there. + public bool SentPickup; + + /// Timestamp when to respawn the item (compared to PhotonNetwork.time). + public double TimeOfRespawn; // needed when we want to update new players when a PickupItem respawns + + /// + public int ViewID { get { return this.photonView.viewID; } } + + public static HashSet DisabledPickupItems = new HashSet(); + + + public void OnTriggerEnter(Collider other) + { + // we only call Pickup() if "our" character collides with this PickupItem. + // note: if you "position" remote characters by setting their translation, triggers won't be hit. + + PhotonView otherpv = other.GetComponent(); + if (this.PickupOnTrigger && otherpv != null && otherpv.isMine) + { + //Debug.Log("OnTriggerEnter() calls Pickup()."); + this.Pickup(); + } + } + + + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + // read the description in SecondsBeforeRespawn + + if (stream.isWriting && SecondsBeforeRespawn <= 0) + { + stream.SendNext(this.gameObject.transform.position); + } + else + { + // this will directly apply the last received position for this PickupItem. No smoothing. Usually not needed though. + Vector3 lastIncomingPos = (Vector3)stream.ReceiveNext(); + this.gameObject.transform.position = lastIncomingPos; + } + } + + + public void Pickup() + { + if (this.SentPickup) + { + // skip sending more pickups until the original pickup-RPC got back to this client + return; + } + + this.SentPickup = true; + this.photonView.RPC("PunPickup", PhotonTargets.AllViaServer); + } + + + /// Makes use of RPC PunRespawn to drop an item (sent through server for all). + public void Drop() + { + if (this.PickupIsMine) + { + this.photonView.RPC("PunRespawn", PhotonTargets.AllViaServer); + } + } + + /// Makes use of RPC PunRespawn to drop an item (sent through server for all). + public void Drop(Vector3 newPosition) + { + if (this.PickupIsMine) + { + this.photonView.RPC("PunRespawn", PhotonTargets.AllViaServer, newPosition); + } + } + + + [PunRPC] + public void PunPickup(PhotonMessageInfo msgInfo) + { + // when this client's RPC gets executed, this client no longer waits for a sent pickup and can try again + if (msgInfo.sender.IsLocal) this.SentPickup = false; + + + // In this solution, picked up items are disabled. They can't be picked up again this way, etc. + // You could check "active" first, if you're not interested in failed pickup-attempts. + if (!this.gameObject.GetActive()) + { + // optional logging: + Debug.Log("Ignored PU RPC, cause item is inactive. " + this.gameObject + " SecondsBeforeRespawn: " + SecondsBeforeRespawn + " TimeOfRespawn: " + this.TimeOfRespawn + " respawn in future: " + (TimeOfRespawn > PhotonNetwork.time)); + return; // makes this RPC being ignored + } + + + // if the RPC isn't ignored by now, this is a successful pickup. this might be "my" pickup and we should do a callback + this.PickupIsMine = msgInfo.sender.IsLocal; + + // call the method OnPickedUp(PickupItem item) if a GameObject was defined as callback target + if (this.OnPickedUpCall != null) + { + // you could also skip callbacks for items that are not picked up by this client by using: if (this.PickupIsMine) + this.OnPickedUpCall.SendMessage("OnPickedUp", this); + } + + + // setup a respawn (or none, if the item has to be dropped) + if (SecondsBeforeRespawn <= 0) + { + this.PickedUp(0.0f); // item doesn't auto-respawn. must be dropped + } + else + { + // how long it is until this item respanws, depends on the pickup time and the respawn time + double timeSinceRpcCall = (PhotonNetwork.time - msgInfo.timestamp); + double timeUntilRespawn = SecondsBeforeRespawn - timeSinceRpcCall; + + //Debug.Log("msg timestamp: " + msgInfo.timestamp + " time until respawn: " + timeUntilRespawn); + + if (timeUntilRespawn > 0) + { + this.PickedUp((float)timeUntilRespawn); + } + } + } + + internal void PickedUp(float timeUntilRespawn) + { + // this script simply disables the GO for a while until it respawns. + this.gameObject.SetActive(false); + PickupItem.DisabledPickupItems.Add(this); + this.TimeOfRespawn = 0; + + if (timeUntilRespawn > 0) + { + this.TimeOfRespawn = PhotonNetwork.time + timeUntilRespawn; + Invoke("PunRespawn", timeUntilRespawn); + } + } + + + [PunRPC] + internal void PunRespawn(Vector3 pos) + { + Debug.Log("PunRespawn with Position."); + this.PunRespawn(); + this.gameObject.transform.position = pos; + } + + [PunRPC] + internal void PunRespawn() + { + #if DEBUG + // debugging: in some cases, the respawn is "late". it's unclear why! just be aware of this. + double timeDiffToRespawnTime = PhotonNetwork.time - this.TimeOfRespawn; + if (timeDiffToRespawnTime > 0.1f) Debug.LogWarning("Spawn time is wrong by: " + timeDiffToRespawnTime + " (this is not an error. you just need to be aware of this.)"); + #endif + + + // if this is called from another thread, we might want to do this in OnEnable() instead of here (depends on Invoke's implementation) + PickupItem.DisabledPickupItems.Remove(this); + this.TimeOfRespawn = 0; + this.PickupIsMine = false; + + if (this.gameObject != null) + { + this.gameObject.SetActive(true); + } + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PickupItem.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/PickupItem.cs.meta new file mode 100644 index 0000000..a3dbbcb --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PickupItem.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 49a81ce8037f41540ac70f51e9a19d7f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PickupItemSimple.cs b/Assets/Photon Unity Networking/UtilityScripts/PickupItemSimple.cs new file mode 100644 index 0000000..b5ba55c --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PickupItemSimple.cs @@ -0,0 +1,85 @@ +using UnityEngine; +using System.Collections; + +/// +/// Makes a scene object pickup-able. Needs a PhotonView which belongs to the scene. +/// +[RequireComponent(typeof(PhotonView))] +public class PickupItemSimple : Photon.MonoBehaviour +{ + public float SecondsBeforeRespawn = 2; + public bool PickupOnCollide; + public bool SentPickup; + + public void OnTriggerEnter(Collider other) + { + // we only call Pickup() if "our" character collides with this PickupItem. + // note: if you "position" remote characters by setting their translation, triggers won't be hit. + + PhotonView otherpv = other.GetComponent(); + if (this.PickupOnCollide && otherpv != null && otherpv.isMine) + { + //Debug.Log("OnTriggerEnter() calls Pickup()."); + this.Pickup(); + } + } + + public void Pickup() + { + if (this.SentPickup) + { + // skip sending more pickups until the original pickup-RPC got back to this client + return; + } + + this.SentPickup = true; + this.photonView.RPC("PunPickupSimple", PhotonTargets.AllViaServer); + } + + [PunRPC] + public void PunPickupSimple(PhotonMessageInfo msgInfo) + { + // one of the messages might be ours + // note: you could check "active" first, if you're not interested in your own, failed pickup-attempts. + if (this.SentPickup && msgInfo.sender.IsLocal) + { + if (this.gameObject.GetActive()) + { + // picked up! yay. + } + else + { + // pickup failed. too late (compared to others) + } + } + + this.SentPickup = false; + + if (!this.gameObject.GetActive()) + { + Debug.Log("Ignored PU RPC, cause item is inactive. " + this.gameObject); + return; + } + + + // how long it is until this item respanws, depends on the pickup time and the respawn time + double timeSinceRpcCall = (PhotonNetwork.time - msgInfo.timestamp); + float timeUntilRespawn = SecondsBeforeRespawn - (float)timeSinceRpcCall; + //Debug.Log("msg timestamp: " + msgInfo.timestamp + " time until respawn: " + timeUntilRespawn); + + if (timeUntilRespawn > 0) + { + // this script simply disables the GO for a while until it respawns. + this.gameObject.SetActive(false); + Invoke("RespawnAfter", timeUntilRespawn); + } + } + + public void RespawnAfter() + { + if (this.gameObject != null) + { + this.gameObject.SetActive(true); + } + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PickupItemSimple.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/PickupItemSimple.cs.meta new file mode 100644 index 0000000..4adcc55 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PickupItemSimple.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7dcf9a2d8dc276745bb51228cc019f52 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PickupItemSyncer.cs b/Assets/Photon Unity Networking/UtilityScripts/PickupItemSyncer.cs new file mode 100644 index 0000000..11d2ce2 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PickupItemSyncer.cs @@ -0,0 +1,171 @@ +using System.Collections.Generic; +using UnityEngine; +using System.Collections; +using System; +using Hashtable = ExitGames.Client.Photon.Hashtable; + + +/// Finds out which PickupItems are not spawned at the moment and send this to new players. +/// Attach this component to a single GameObject in the scene, not to all PickupItems. +[RequireComponent(typeof(PhotonView))] +public class PickupItemSyncer : Photon.MonoBehaviour +{ + public bool IsWaitingForPickupInit; + private const float TimeDeltaToIgnore = 0.2f; + + + public void OnPhotonPlayerConnected(PhotonPlayer newPlayer) + { + if (PhotonNetwork.isMasterClient) + { + this.SendPickedUpItems(newPlayer); + } + } + + public void OnJoinedRoom() + { + Debug.Log("Joined Room. isMasterClient: " + PhotonNetwork.isMasterClient + " id: " + PhotonNetwork.player.ID); + // this client joined the room. let's see if there are players and if someone has to inform us about pickups + this.IsWaitingForPickupInit = !PhotonNetwork.isMasterClient; + + if (PhotonNetwork.playerList.Length >= 2) + { + this.Invoke("AskForPickupItemSpawnTimes", 2.0f); + } + } + + + public void AskForPickupItemSpawnTimes() + { + if (this.IsWaitingForPickupInit) + { + if (PhotonNetwork.playerList.Length < 2) + { + Debug.Log("Cant ask anyone else for PickupItem spawn times."); + this.IsWaitingForPickupInit = false; + return; + } + + + // find a another player (than the master, who likely is gone) to ask for the PickupItem spawn times + PhotonPlayer nextPlayer = PhotonNetwork.masterClient.GetNext(); + if (nextPlayer == null || nextPlayer.Equals(PhotonNetwork.player)) + { + nextPlayer = PhotonNetwork.player.GetNext(); + //Debug.Log("This player is the Master's next. Asking this client's 'next' player: " + ((nextPlayer != null) ? nextPlayer.ToStringFull() : "")); + } + + if (nextPlayer != null && !nextPlayer.Equals(PhotonNetwork.player)) + { + this.photonView.RPC("RequestForPickupItems", nextPlayer); + + // you could restart this invoke and try to find another player after 4 seconds. but after a while it doesnt make a difference anymore + //this.Invoke("AskForPickupItemSpawnTimes", 2.0f); + } + else + { + Debug.Log("No player left to ask"); + this.IsWaitingForPickupInit = false; + } + } + } + + [PunRPC] + [Obsolete("Use RequestForPickupItems(PhotonMessageInfo msgInfo) with corrected typing instead.")] + public void RequestForPickupTimes(PhotonMessageInfo msgInfo) + { + RequestForPickupItems(msgInfo); + } + + [PunRPC] + public void RequestForPickupItems(PhotonMessageInfo msgInfo) + { + if (msgInfo.sender == null) + { + Debug.LogError("Unknown player asked for PickupItems"); + return; + } + + SendPickedUpItems(msgInfo.sender); + } + + /// Summarizes all PickupItem ids and spawn times for new players. Calls RPC "PickupItemInit". + /// The player to send the pickup times to. It's a targetted RPC. + private void SendPickedUpItems(PhotonPlayer targetPlayer) + { + if (targetPlayer == null) + { + Debug.LogWarning("Cant send PickupItem spawn times to unknown targetPlayer."); + return; + } + + double now = PhotonNetwork.time; + double soon = now + TimeDeltaToIgnore; + + + PickupItem[] items = new PickupItem[PickupItem.DisabledPickupItems.Count]; + PickupItem.DisabledPickupItems.CopyTo(items); + + List valuesToSend = new List(items.Length * 2); + for (int i = 0; i < items.Length; i++) + { + PickupItem pi = items[i]; + if (pi.SecondsBeforeRespawn <= 0) + { + valuesToSend.Add(pi.ViewID); + valuesToSend.Add((float)0.0f); + } + else + { + double timeUntilRespawn = pi.TimeOfRespawn - PhotonNetwork.time; + if (pi.TimeOfRespawn > soon) + { + // the respawn of this item is not "immediately", so we include it in the message "these items are not active" for the new player + Debug.Log(pi.ViewID + " respawn: " + pi.TimeOfRespawn + " timeUntilRespawn: " + timeUntilRespawn + " (now: " + PhotonNetwork.time + ")"); + valuesToSend.Add(pi.ViewID); + valuesToSend.Add((float)timeUntilRespawn); + } + } + } + + Debug.Log("Sent count: " + valuesToSend.Count + " now: " + now); + this.photonView.RPC("PickupItemInit", targetPlayer, PhotonNetwork.time, valuesToSend.ToArray()); + } + + + [PunRPC] + public void PickupItemInit(double timeBase, float[] inactivePickupsAndTimes) + { + this.IsWaitingForPickupInit = false; + + // if there are no inactive pickups, the sender will send a list of 0 items. this is not a problem... + for (int i = 0; i < inactivePickupsAndTimes.Length / 2; i++) + { + int arrayIndex = i*2; + int viewIdOfPickup = (int)inactivePickupsAndTimes[arrayIndex]; + float timeUntilRespawnBasedOnTimeBase = inactivePickupsAndTimes[arrayIndex + 1]; + + + PhotonView view = PhotonView.Find(viewIdOfPickup); + PickupItem pi = view.GetComponent(); + + if (timeUntilRespawnBasedOnTimeBase <= 0) + { + pi.PickedUp(0.0f); + } + else + { + double timeOfRespawn = timeUntilRespawnBasedOnTimeBase + timeBase; + + Debug.Log(view.viewID + " respawn: " + timeOfRespawn + " timeUntilRespawnBasedOnTimeBase:" + timeUntilRespawnBasedOnTimeBase + " SecondsBeforeRespawn: " + pi.SecondsBeforeRespawn); + double timeBeforeRespawn = timeOfRespawn - PhotonNetwork.time; + if (timeUntilRespawnBasedOnTimeBase <= 0) + { + timeBeforeRespawn = 0.0f; + } + + pi.PickedUp((float) timeBeforeRespawn); + } + } + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PickupItemSyncer.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/PickupItemSyncer.cs.meta new file mode 100644 index 0000000..57643c5 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PickupItemSyncer.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d6826804b93f54045a69115648b2a143 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PointedAtGameObjectInfo.cs b/Assets/Photon Unity Networking/UtilityScripts/PointedAtGameObjectInfo.cs new file mode 100644 index 0000000..3ea57ae --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PointedAtGameObjectInfo.cs @@ -0,0 +1,19 @@ +using UnityEngine; +using System.Collections; + +[RequireComponent(typeof(InputToEvent))] +public class PointedAtGameObjectInfo : MonoBehaviour +{ + void OnGUI() + { + if (InputToEvent.goPointedAt != null) + { + PhotonView pv = InputToEvent.goPointedAt.GetPhotonView(); + if (pv != null) + { + GUI.Label(new Rect(Input.mousePosition.x + 5, Screen.height - Input.mousePosition.y - 15, 300, 30), string.Format("ViewID {0} {1}{2}", pv.viewID, (pv.isSceneView) ? "scene " : "", (pv.isMine) ? "mine" : "owner: " + pv.ownerId)); + } + } + } + +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PointedAtGameObjectInfo.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/PointedAtGameObjectInfo.cs.meta new file mode 100644 index 0000000..9ffbb4f --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PointedAtGameObjectInfo.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e6262dd9a9b078c4e8cbd47495aa6d23 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PunPlayerScores.cs b/Assets/Photon Unity Networking/UtilityScripts/PunPlayerScores.cs new file mode 100644 index 0000000..d706915 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PunPlayerScores.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using UnityEngine; +using System.Collections; +using Hashtable = ExitGames.Client.Photon.Hashtable; + +public class PunPlayerScores : MonoBehaviour +{ + public const string PlayerScoreProp = "score"; +} + +public static class ScoreExtensions +{ + public static void SetScore(this PhotonPlayer player, int newScore) + { + Hashtable score = new Hashtable(); // using PUN's implementation of Hashtable + score[PunPlayerScores.PlayerScoreProp] = newScore; + + player.SetCustomProperties(score); // this locally sets the score and will sync it in-game asap. + } + + public static void AddScore(this PhotonPlayer player, int scoreToAddToCurrent) + { + int current = player.GetScore(); + current = current + scoreToAddToCurrent; + + Hashtable score = new Hashtable(); // using PUN's implementation of Hashtable + score[PunPlayerScores.PlayerScoreProp] = current; + + player.SetCustomProperties(score); // this locally sets the score and will sync it in-game asap. + } + + public static int GetScore(this PhotonPlayer player) + { + object score; + if (player.CustomProperties.TryGetValue(PunPlayerScores.PlayerScoreProp, out score)) + { + return (int) score; + } + + return 0; + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/PunPlayerScores.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/PunPlayerScores.cs.meta new file mode 100644 index 0000000..5904915 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PunPlayerScores.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6b4df3943860f1d45bfe232053a58d80 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PunTeams.cs b/Assets/Photon Unity Networking/UtilityScripts/PunTeams.cs new file mode 100644 index 0000000..3f82cf3 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PunTeams.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using ExitGames.Client.Photon; +using UnityEngine; +using Hashtable = ExitGames.Client.Photon.Hashtable; + + +/// +/// Implements teams in a room/game with help of player properties. Access them by PhotonPlayer.GetTeam extension. +/// +/// +/// Teams are defined by enum Team. Change this to get more / different teams. +/// There are no rules when / if you can join a team. You could add this in JoinTeam or something. +/// +public class PunTeams : MonoBehaviour +{ + /// Enum defining the teams available. First team should be neutral (it's the default value any field of this enum gets). + public enum Team : byte {none, red, blue}; + + /// The main list of teams with their player-lists. Automatically kept up to date. + /// Note that this is static. Can be accessed by PunTeam.PlayersPerTeam. You should not modify this. + public static Dictionary> PlayersPerTeam; + + /// Defines the player custom property name to use for team affinity of "this" player. + public const string TeamPlayerProp = "team"; + + + #region Events by Unity and Photon + + public void Start() + { + PlayersPerTeam = new Dictionary>(); + Array enumVals = Enum.GetValues(typeof (Team)); + foreach (var enumVal in enumVals) + { + PlayersPerTeam[(Team)enumVal] = new List(); + } + } + + public void OnDisable() + { + PlayersPerTeam = new Dictionary>(); + } + + /// Needed to update the team lists when joining a room. + /// Called by PUN. See enum PhotonNetworkingMessage for an explanation. + public void OnJoinedRoom() + { + + this.UpdateTeams(); + } + + public void OnLeftRoom() + { + Start(); + } + + /// Refreshes the team lists. It could be a non-team related property change, too. + /// Called by PUN. See enum PhotonNetworkingMessage for an explanation. + public void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps) + { + this.UpdateTeams(); + } + + public void OnPhotonPlayerDisconnected(PhotonPlayer otherPlayer) + { + this.UpdateTeams(); + } + + public void OnPhotonPlayerConnected(PhotonPlayer newPlayer) + { + this.UpdateTeams(); + } + + #endregion + + + public void UpdateTeams() + { + Array enumVals = Enum.GetValues(typeof(Team)); + foreach (var enumVal in enumVals) + { + PlayersPerTeam[(Team)enumVal].Clear(); + } + + for (int i = 0; i < PhotonNetwork.playerList.Length; i++) + { + PhotonPlayer player = PhotonNetwork.playerList[i]; + Team playerTeam = player.GetTeam(); + PlayersPerTeam[playerTeam].Add(player); + } + } +} + +/// Extension used for PunTeams and PhotonPlayer class. Wraps access to the player's custom property. +public static class TeamExtensions +{ + /// Extension for PhotonPlayer class to wrap up access to the player's custom property. + /// PunTeam.Team.none if no team was found (yet). + public static PunTeams.Team GetTeam(this PhotonPlayer player) + { + object teamId; + if (player.CustomProperties.TryGetValue(PunTeams.TeamPlayerProp, out teamId)) + { + return (PunTeams.Team)teamId; + } + + return PunTeams.Team.none; + } + + /// Switch that player's team to the one you assign. + /// Internally checks if this player is in that team already or not. Only team switches are actually sent. + /// + /// + public static void SetTeam(this PhotonPlayer player, PunTeams.Team team) + { + if (!PhotonNetwork.connectedAndReady) + { + Debug.LogWarning("JoinTeam was called in state: " + PhotonNetwork.connectionStateDetailed + ". Not connectedAndReady."); + return; + } + + PunTeams.Team currentTeam = player.GetTeam(); + if (currentTeam != team) + { + player.SetCustomProperties(new Hashtable() {{PunTeams.TeamPlayerProp, (byte) team}}); + } + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/PunTeams.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/PunTeams.cs.meta new file mode 100644 index 0000000..9dffb8a --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PunTeams.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6587c8104d7524f4280d0a68dd779f27 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/PunTurnManager.cs b/Assets/Photon Unity Networking/UtilityScripts/PunTurnManager.cs new file mode 100644 index 0000000..a90a390 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PunTurnManager.cs @@ -0,0 +1,411 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2016 Exit Games GmbH +// +// +// Manager for Turn Based games, using PUN +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +using System; +using System.Collections.Generic; +using ExitGames.Client.Photon; +using Photon; +using UnityEngine; +using ExitGames = ExitGames.Client.Photon.Hashtable; + +/// +/// Pun turnBased Game manager. +/// Provides an Interface (IPunTurnManagerCallbacks) for the typical turn flow and logic, between players +/// Provides Extensions for PhotonPlayer, Room and RoomInfo to feature dedicated api for TurnBased Needs +/// +public class PunTurnManager : PunBehaviour +{ + /// + /// Wraps accessing the "turn" custom properties of a room. + /// + /// The turn index + public int Turn + { + get { return PhotonNetwork.room.GetTurn(); } + private set { + + _isOverCallProcessed = false; + + PhotonNetwork.room.SetTurn(value, true); + } + } + + + /// + /// The duration of the turn in seconds. + /// + public float TurnDuration = 20f; + + /// + /// Gets the elapsed time in the current turn in seconds + /// + /// The elapsed time in the turn. + public float ElapsedTimeInTurn + { + get { return ((float)(PhotonNetwork.ServerTimestamp - PhotonNetwork.room.GetTurnStart()))/1000.0f; } + } + + + /// + /// Gets the remaining seconds for the current turn. Ranges from 0 to TurnDuration + /// + /// The remaining seconds fo the current turn + public float RemainingSecondsInTurn + { + get { return Mathf.Max(0f,this.TurnDuration - this.ElapsedTimeInTurn); } + } + + + /// + /// Gets a value indicating whether the turn is completed by all. + /// + /// true if this turn is completed by all; otherwise, false. + public bool IsCompletedByAll + { + get { return PhotonNetwork.room != null && Turn > 0 && this.finishedPlayers.Count == PhotonNetwork.room.PlayerCount; } + } + + /// + /// Gets a value indicating whether the current turn is finished by me. + /// + /// true if the current turn is finished by me; otherwise, false. + public bool IsFinishedByMe + { + get { return this.finishedPlayers.Contains(PhotonNetwork.player); } + } + + /// + /// Gets a value indicating whether the current turn is over. That is the ElapsedTimeinTurn is greater or equal to the TurnDuration + /// + /// true if the current turn is over; otherwise, false. + public bool IsOver + { + get { return this.RemainingSecondsInTurn <= 0f; } + } + + /// + /// The turn manager listener. Set this to your own script instance to catch Callbacks + /// + public IPunTurnManagerCallbacks TurnManagerListener; + + + /// + /// The finished players. + /// + private readonly HashSet finishedPlayers = new HashSet(); + + /// + /// The turn manager event offset event message byte. Used internaly for defining data in Room Custom Properties + /// + public const byte TurnManagerEventOffset = 0; + /// + /// The Move event message byte. Used internaly for saving data in Room Custom Properties + /// + public const byte EvMove = 1 + TurnManagerEventOffset; + /// + /// The Final Move event message byte. Used internaly for saving data in Room Custom Properties + /// + public const byte EvFinalMove = 2 + TurnManagerEventOffset; + + // keep track of message calls + private bool _isOverCallProcessed = false; + + #region MonoBehaviour CallBack + /// + /// Register for Event Call from PhotonNetwork. + /// + void Start() + { + PhotonNetwork.OnEventCall = OnEvent; + } + + void Update() + { + if (Turn > 0 && this.IsOver && !_isOverCallProcessed) + { + _isOverCallProcessed = true; + this.TurnManagerListener.OnTurnTimeEnds(this.Turn); + } + + } + + + #endregion + + + /// + /// Tells the TurnManager to begins a new turn. + /// + public void BeginTurn() + { + Turn = this.Turn + 1; // note: this will set a property in the room, which is available to the other players. + } + + + /// + /// Call to send an action. Optionally finish the turn, too. + /// The move object can be anything. Try to optimize though and only send the strict minimum set of information to define the turn move. + /// + /// + /// + public void SendMove(object move, bool finished) + { + if (IsFinishedByMe) + { + UnityEngine.Debug.LogWarning("Can't SendMove. Turn is finished by this player."); + return; + } + + // along with the actual move, we have to send which turn this move belongs to + Hashtable moveHt = new Hashtable(); + moveHt.Add("turn", Turn); + moveHt.Add("move", move); + + byte evCode = (finished) ? EvFinalMove : EvMove; + PhotonNetwork.RaiseEvent(evCode, moveHt, true, new RaiseEventOptions() { CachingOption = EventCaching.AddToRoomCache }); + if (finished) + { + PhotonNetwork.player.SetFinishedTurn(Turn); + } + + // the server won't send the event back to the origin (by default). to get the event, call it locally + // (note: the order of events might be mixed up as we do this locally) + OnEvent(evCode, moveHt, PhotonNetwork.player.ID); + } + + /// + /// Gets if the player finished the current turn. + /// + /// true, if player finished the current turn, false otherwise. + /// The Player to check for + public bool GetPlayerFinishedTurn(PhotonPlayer player) + { + if (player != null && this.finishedPlayers != null && this.finishedPlayers.Contains(player)) + { + return true; + } + + return false; + } + + #region Callbacks + + /// + /// Called by PhotonNetwork.OnEventCall registration + /// + /// Event code. + /// Content. + /// Sender identifier. + public void OnEvent(byte eventCode, object content, int senderId) + { + PhotonPlayer sender = PhotonPlayer.Find(senderId); + switch (eventCode) + { + case EvMove: + { + Hashtable evTable = content as Hashtable; + int turn = (int)evTable["turn"]; + object move = evTable["move"]; + this.TurnManagerListener.OnPlayerMove(sender, turn, move); + + break; + } + case EvFinalMove: + { + Hashtable evTable = content as Hashtable; + int turn = (int)evTable["turn"]; + object move = evTable["move"]; + + if (turn == this.Turn) + { + this.finishedPlayers.Add(sender); + + this.TurnManagerListener.OnPlayerFinished(sender, turn, move); + + } + + if (IsCompletedByAll) + { + this.TurnManagerListener.OnTurnCompleted(this.Turn); + } + break; + } + } + } + + /// + /// Called by PhotonNetwork + /// + /// Properties that changed. + public override void OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged) + { + + // Debug.Log("OnPhotonCustomRoomPropertiesChanged: "+propertiesThatChanged.ToStringFull()); + + if (propertiesThatChanged.ContainsKey("Turn")) + { + _isOverCallProcessed = false; + this.finishedPlayers.Clear(); + this.TurnManagerListener.OnTurnBegins(this.Turn); + } + } + + #endregion +} + + +public interface IPunTurnManagerCallbacks +{ + /// + /// Called the turn begins event. + /// + /// Turn Index + void OnTurnBegins(int turn); + + /// + /// Called when a turn is completed (finished by all players) + /// + /// Turn Index + void OnTurnCompleted(int turn); + + /// + /// Called when a player moved (but did not finish the turn) + /// + /// Player reference + /// Turn Index + /// Move Object data + void OnPlayerMove(PhotonPlayer player, int turn, object move); + + /// + /// When a player finishes a turn (includes the action/move of that player) + /// + /// Player reference + /// Turn index + /// Move Object data + void OnPlayerFinished(PhotonPlayer player, int turn, object move); + + + /// + /// Called when a turn completes due to a time constraint (timeout for a turn) + /// + /// Turn index + void OnTurnTimeEnds(int turn); +} + + +public static class TurnExtensions +{ + /// + /// currently ongoing turn number + /// + public static readonly string TurnPropKey = "Turn"; + + /// + /// start (server) time for currently ongoing turn (used to calculate end) + /// + public static readonly string TurnStartPropKey = "TStart"; + + /// + /// Finished Turn of Actor (followed by number) + /// + public static readonly string FinishedTurnPropKey = "FToA"; + + /// + /// Sets the turn. + /// + /// Room reference + /// Turn index + /// If set to true set start time. + public static void SetTurn(this Room room, int turn, bool setStartTime = false) + { + if (room == null || room.CustomProperties == null) + { + return; + } + + Hashtable turnProps = new Hashtable(); + turnProps[TurnPropKey] = turn; + if (setStartTime) + { + turnProps[TurnStartPropKey] = PhotonNetwork.ServerTimestamp; + } + + room.SetCustomProperties(turnProps); + } + + /// + /// Gets the current turn from a RoomInfo + /// + /// The turn index + /// RoomInfo reference + public static int GetTurn(this RoomInfo room) + { + if (room == null || room.CustomProperties == null || !room.CustomProperties.ContainsKey(TurnPropKey)) + { + return 0; + } + + return (int)room.CustomProperties[TurnPropKey]; + } + + + /// + /// Returns the start time when the turn began. This can be used to calculate how long it's going on. + /// + /// The turn start. + /// Room. + public static int GetTurnStart(this RoomInfo room) + { + if (room == null || room.CustomProperties == null || !room.CustomProperties.ContainsKey(TurnStartPropKey)) + { + return 0; + } + + return (int)room.CustomProperties[TurnStartPropKey]; + } + + /// + /// gets the player's finished turn (from the ROOM properties) + /// + /// The finished turn index + /// Player reference + public static int GetFinishedTurn(this PhotonPlayer player) + { + Room room = PhotonNetwork.room; + if (room == null || room.CustomProperties == null || !room.CustomProperties.ContainsKey(TurnPropKey)) + { + return 0; + } + + string propKey = FinishedTurnPropKey + player.ID; + return (int)room.CustomProperties[propKey]; + } + + /// + /// Sets the player's finished turn (in the ROOM properties) + /// + /// Player Reference + /// Turn Index + public static void SetFinishedTurn(this PhotonPlayer player, int turn) + { + Room room = PhotonNetwork.room; + if (room == null || room.CustomProperties == null) + { + return; + } + + string propKey = FinishedTurnPropKey + player.ID; + Hashtable finishedTurnProp = new Hashtable(); + finishedTurnProp[propKey] = turn; + + room.SetCustomProperties(finishedTurnProp); + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/PunTurnManager.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/PunTurnManager.cs.meta new file mode 100644 index 0000000..0076919 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/PunTurnManager.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1a1b3bda60e9e804f87fd1e5d20a885a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/QuitOnEscapeOrBack.cs b/Assets/Photon Unity Networking/UtilityScripts/QuitOnEscapeOrBack.cs new file mode 100644 index 0000000..563a77b --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/QuitOnEscapeOrBack.cs @@ -0,0 +1,14 @@ +using UnityEngine; +using System.Collections; + +public class QuitOnEscapeOrBack : MonoBehaviour +{ + private void Update() + { + // "back" button of phone equals "Escape". quit app if that's pressed + if (Input.GetKeyDown(KeyCode.Escape)) + { + Application.Quit(); + } + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/QuitOnEscapeOrBack.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/QuitOnEscapeOrBack.cs.meta new file mode 100644 index 0000000..6133070 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/QuitOnEscapeOrBack.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1fbabafd914a48f4eb6108d8d8f43d29 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/ServerTime.cs b/Assets/Photon Unity Networking/UtilityScripts/ServerTime.cs new file mode 100644 index 0000000..b0a678b --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/ServerTime.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; +using System.Collections; + +public class ServerTime : MonoBehaviour +{ + // Update is called once per frame + void OnGUI() + { + GUILayout.BeginArea(new Rect(Screen.width/2-100, 0, 200,30)); + GUILayout.Label(string.Format("Time Offset: {0}", PhotonNetwork.ServerTimestamp - Environment.TickCount)); + if (GUILayout.Button("fetch")) + { + PhotonNetwork.FetchServerTimestamp(); + } + GUILayout.EndArea(); + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/ServerTime.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/ServerTime.cs.meta new file mode 100644 index 0000000..ce77a56 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/ServerTime.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 63a4d1519cb8dea42be7addce2022400 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/ShowInfoOfPlayer.cs b/Assets/Photon Unity Networking/UtilityScripts/ShowInfoOfPlayer.cs new file mode 100644 index 0000000..fb320fd --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/ShowInfoOfPlayer.cs @@ -0,0 +1,78 @@ +using UnityEngine; +using System.Collections; +using ExitGames.Client.Photon; +/// +/// Can be attached to a GameObject to show info about the owner of the PhotonView. +/// +/// +/// This is a Photon.Monobehaviour, which adds the property photonView (that's all). +/// +[RequireComponent(typeof(PhotonView))] +public class ShowInfoOfPlayer : Photon.MonoBehaviour +{ + private GameObject textGo; + private TextMesh tm; + public float CharacterSize = 0; + + public Font font; + public bool DisableOnOwnObjects; + + void Start() + { + if (font == null) + { + #if UNITY_3_5 + font = (Font)FindObjectsOfTypeIncludingAssets(typeof(Font))[0]; + #else + font = (Font)Resources.FindObjectsOfTypeAll(typeof(Font))[0]; + #endif + Debug.LogWarning("No font defined. Found font: " + font); + } + + if (tm == null) + { + textGo = new GameObject("3d text"); + //textGo.transform.localScale = new Vector3(0.2f, 0.2f, 0.2f); + textGo.transform.parent = this.gameObject.transform; + textGo.transform.localPosition = Vector3.zero; + + MeshRenderer mr = textGo.AddComponent(); + mr.material = font.material; + tm = textGo.AddComponent(); + tm.font = font; + tm.anchor = TextAnchor.MiddleCenter; + if (this.CharacterSize > 0) + { + tm.characterSize = this.CharacterSize; + } + } + } + + void Update() + { + bool showInfo = !this.DisableOnOwnObjects || this.photonView.isMine; + if (textGo != null) + { + textGo.SetActive(showInfo); + } + if (!showInfo) + { + return; + } + + + PhotonPlayer owner = this.photonView.owner; + if (owner != null) + { + tm.text = (string.IsNullOrEmpty(owner.NickName)) ? "player"+owner.ID : owner.NickName; + } + else if (this.photonView.isSceneView) + { + tm.text = "scn"; + } + else + { + tm.text = "n/a"; + } + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/ShowInfoOfPlayer.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/ShowInfoOfPlayer.cs.meta new file mode 100644 index 0000000..8bae35f --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/ShowInfoOfPlayer.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6acb8d21564821e4e92aaa49ce2151cc +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/ShowStatusWhenConnecting.cs b/Assets/Photon Unity Networking/UtilityScripts/ShowStatusWhenConnecting.cs new file mode 100644 index 0000000..e8bf6f4 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/ShowStatusWhenConnecting.cs @@ -0,0 +1,45 @@ +using UnityEngine; +using System.Collections; + +public class ShowStatusWhenConnecting : MonoBehaviour +{ + public GUISkin Skin; + + void OnGUI() + { + if( Skin != null ) + { + GUI.skin = Skin; + } + + float width = 400; + float height = 100; + + Rect centeredRect = new Rect( ( Screen.width - width ) / 2, ( Screen.height - height ) / 2, width, height ); + + GUILayout.BeginArea( centeredRect, GUI.skin.box ); + { + GUILayout.Label( "Connecting" + GetConnectingDots(), GUI.skin.customStyles[ 0 ] ); + GUILayout.Label( "Status: " + PhotonNetwork.connectionStateDetailed ); + } + GUILayout.EndArea(); + + if( PhotonNetwork.inRoom ) + { + enabled = false; + } + } + + string GetConnectingDots() + { + string str = ""; + int numberOfDots = Mathf.FloorToInt( Time.timeSinceLevelLoad * 3f % 4 ); + + for( int i = 0; i < numberOfDots; ++i ) + { + str += " ."; + } + + return str; + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/ShowStatusWhenConnecting.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/ShowStatusWhenConnecting.cs.meta new file mode 100644 index 0000000..a6a7b83 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/ShowStatusWhenConnecting.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 321c592dfcb49cd458c8f2cbe497513d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/SmoothSyncMovement.cs b/Assets/Photon Unity Networking/UtilityScripts/SmoothSyncMovement.cs new file mode 100644 index 0000000..a19f6fc --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/SmoothSyncMovement.cs @@ -0,0 +1,54 @@ +using UnityEngine; +using System.Collections; + +[RequireComponent(typeof(PhotonView))] +public class SmoothSyncMovement : Photon.MonoBehaviour, IPunObservable +{ + public float SmoothingDelay = 5; + public void Awake() + { + bool observed = false; + foreach (Component observedComponent in this.photonView.ObservedComponents) + { + if (observedComponent == this) + { + observed = true; + break; + } + } + if (!observed) + { + Debug.LogWarning(this + " is not observed by this object's photonView! OnPhotonSerializeView() in this class won't be used."); + } + } + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (stream.isWriting) + { + //We own this player: send the others our data + stream.SendNext(transform.position); + stream.SendNext(transform.rotation); + } + else + { + //Network player, receive data + correctPlayerPos = (Vector3)stream.ReceiveNext(); + correctPlayerRot = (Quaternion)stream.ReceiveNext(); + } + } + + private Vector3 correctPlayerPos = Vector3.zero; //We lerp towards this + private Quaternion correctPlayerRot = Quaternion.identity; //We lerp towards this + + public void Update() + { + if (!photonView.isMine) + { + //Update remote player (smooth this, this looks good, at the cost of some accuracy) + transform.position = Vector3.Lerp(transform.position, correctPlayerPos, Time.deltaTime * this.SmoothingDelay); + transform.rotation = Quaternion.Lerp(transform.rotation, correctPlayerRot, Time.deltaTime * this.SmoothingDelay); + } + } + +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/SmoothSyncMovement.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/SmoothSyncMovement.cs.meta new file mode 100644 index 0000000..ed3764a --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/SmoothSyncMovement.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 35144820bcc25444bb8f0fd767d9423e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/SupportLogger.cs b/Assets/Photon Unity Networking/UtilityScripts/SupportLogger.cs new file mode 100644 index 0000000..fdca7b6 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/SupportLogger.cs @@ -0,0 +1,108 @@ +using System.Text; +using UnityEngine; +using System.Collections; + +public class SupportLogger : MonoBehaviour +{ + public bool LogTrafficStats = true; + + public void Start() + { + GameObject go = GameObject.Find("PunSupportLogger"); + if (go == null) + { + go = new GameObject("PunSupportLogger"); + DontDestroyOnLoad(go); + SupportLogging sl = go.AddComponent(); + sl.LogTrafficStats = this.LogTrafficStats; + } + } +} + +public class SupportLogging : MonoBehaviour +{ + public bool LogTrafficStats; + + public void Start() + { + if (LogTrafficStats) + { + this.InvokeRepeating("LogStats", 10, 10); + } + } + + + protected void OnApplicationPause(bool pause) + { + Debug.Log("SupportLogger OnApplicationPause: " + pause + " connected: " + PhotonNetwork.connected); + } + + public void OnApplicationQuit() + { + this.CancelInvoke(); + } + + public void LogStats() + { + if (this.LogTrafficStats) + { + Debug.Log("SupportLogger " + PhotonNetwork.NetworkStatisticsToString()); + } + } + + private void LogBasics() + { + StringBuilder sb = new StringBuilder(); + sb.AppendFormat("SupportLogger Info: PUN {0}: ", PhotonNetwork.versionPUN); + + sb.AppendFormat("AppID: {0}*** GameVersion: {1} ", PhotonNetwork.networkingPeer.AppId.Substring(0, 8), PhotonNetwork.networkingPeer.AppVersion); + sb.AppendFormat("Server: {0}. Region: {1} ", PhotonNetwork.ServerAddress, PhotonNetwork.networkingPeer.CloudRegion); + sb.AppendFormat("HostType: {0} ", PhotonNetwork.PhotonServerSettings.HostType); + + + Debug.Log(sb.ToString()); + } + + + public void OnConnectedToPhoton() + { + Debug.Log("SupportLogger OnConnectedToPhoton()."); + this.LogBasics(); + + if (LogTrafficStats) + { + PhotonNetwork.NetworkStatisticsEnabled = true; + } + } + + public void OnFailedToConnectToPhoton(DisconnectCause cause) + { + Debug.Log("SupportLogger OnFailedToConnectToPhoton("+cause+")."); + this.LogBasics(); + } + + public void OnJoinedLobby() + { + Debug.Log("SupportLogger OnJoinedLobby(" + PhotonNetwork.lobby + ")."); + } + + public void OnJoinedRoom() + { + Debug.Log("SupportLogger OnJoinedRoom(" + PhotonNetwork.room + "). " + PhotonNetwork.lobby + " GameServer:" + PhotonNetwork.ServerAddress); + } + + public void OnCreatedRoom() + { + Debug.Log("SupportLogger OnCreatedRoom(" + PhotonNetwork.room + "). " + PhotonNetwork.lobby + " GameServer:" + PhotonNetwork.ServerAddress); + } + + public void OnLeftRoom() + { + Debug.Log("SupportLogger OnLeftRoom()."); + } + + public void OnDisconnectedFromPhoton() + { + Debug.Log("SupportLogger OnDisconnectedFromPhoton()."); + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/SupportLogger.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/SupportLogger.cs.meta new file mode 100644 index 0000000..7e8b7cc --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/SupportLogger.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9b61c60d38639484ebbd7f2100dd3d08 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/TimeKeeper.cs b/Assets/Photon Unity Networking/UtilityScripts/TimeKeeper.cs new file mode 100644 index 0000000..5c6d949 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/TimeKeeper.cs @@ -0,0 +1,62 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Exit Games GmbH, 2012 +// +// +// TimeKeeper Helper. See class description. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +namespace ExitGames.Client.DemoParticle +{ + using System; + + /// + /// A utility class that turns it's ShouldExecute property to true after a set interval time has passed. + /// + /// + /// TimeKeepers can be useful to execute tasks in a certain interval within a game loop (integrating a recurring task into a certain thread). + /// + /// An interval can be overridden, when you set ShouldExecute to true. + /// Call Reset after execution of whatever you do to re-enable the TimeKeeper (ShouldExecute becomes false until interval passed). + /// Being based on Environment.TickCount, this is not very precise but cheap. + /// + public class TimeKeeper + { + private int lastExecutionTime = Environment.TickCount; + private bool shouldExecute; + + /// Interval in which ShouldExecute should be true (and something is executed). + public int Interval { get; set; } + + /// A disabled TimeKeeper never turns ShouldExecute to true. Reset won't affect IsEnabled! + public bool IsEnabled { get; set; } + + /// Turns true of the time interval has passed (after reset or creation) or someone set ShouldExecute manually. + /// Call Reset to start a new interval. + public bool ShouldExecute + { + get { return (this.IsEnabled && (this.shouldExecute || (Environment.TickCount - this.lastExecutionTime > this.Interval))); } + set { this.shouldExecute = value; } + } + + /// + /// Creates a new TimeKeeper and sets it's interval. + /// + /// + public TimeKeeper(int interval) + { + this.IsEnabled = true; + this.Interval = interval; + } + + /// ShouldExecute becomes false and the time interval is refreshed for next execution. + /// Does not affect IsEnabled. + public void Reset() + { + this.shouldExecute = false; + this.lastExecutionTime = Environment.TickCount; + } + } +} diff --git a/Assets/Photon Unity Networking/UtilityScripts/TimeKeeper.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/TimeKeeper.cs.meta new file mode 100644 index 0000000..f8143a1 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/TimeKeeper.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 11b45bfcb19ad694bb6f199fb97642ce +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon Unity Networking/UtilityScripts/UI.meta b/Assets/Photon Unity Networking/UtilityScripts/UI.meta new file mode 100644 index 0000000..ea69211 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/UI.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9f9a783fc36449646aac8a5d6d41930a +folderAsset: yes +timeCreated: 1488120601 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon Unity Networking/UtilityScripts/UI/ButtonInsideScrollList.cs b/Assets/Photon Unity Networking/UtilityScripts/UI/ButtonInsideScrollList.cs new file mode 100644 index 0000000..36fe137 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/UI/ButtonInsideScrollList.cs @@ -0,0 +1,55 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Photon Unity Utilities, +// +// +// Used on Buttons inside UI lists to prevent scrollRect parent to scroll when down on buttons. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +using UnityEngine; +using System.Collections; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace ExitGames.UtilityScripts +{ + /// + /// Button inside scroll list will stop scrolling ability of scrollRect container, so that when pressing down on a button and draggin up and down will not affect scrolling. + /// this doesn't do anything if no scrollRect component found in Parent Hierarchy. + /// + public class ButtonInsideScrollList : MonoBehaviour, IPointerDownHandler, IPointerUpHandler { + + ScrollRect scrollRect; + + // Use this for initialization + void Start () { + scrollRect = GetComponentInParent(); + } + + #region IPointerDownHandler implementation + void IPointerDownHandler.OnPointerDown (PointerEventData eventData) + { + if (scrollRect !=null) + { + scrollRect.StopMovement(); + scrollRect.enabled = false; + } + } + #endregion + + #region IPointerUpHandler implementation + + void IPointerUpHandler.OnPointerUp (PointerEventData eventData) + { + if (scrollRect !=null && !scrollRect.enabled) + { + scrollRect.enabled = true; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/UI/ButtonInsideScrollList.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/UI/ButtonInsideScrollList.cs.meta new file mode 100644 index 0000000..9e18870 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/UI/ButtonInsideScrollList.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e0e8b381f2c05442ca5c01638958156a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/UI/TextButtonTransition.cs b/Assets/Photon Unity Networking/UtilityScripts/UI/TextButtonTransition.cs new file mode 100644 index 0000000..55c0700 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/UI/TextButtonTransition.cs @@ -0,0 +1,45 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// +// +// Use this on Button texts to have some color transition on the text as well without corrupting button's behaviour. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +using UnityEngine; +using System.Collections; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace ExitGames.UtilityScripts +{ + + /// + /// Use this on Button texts to have some color transition on the text as well without corrupting button's behaviour. + /// + [RequireComponent(typeof(Text))] + public class TextButtonTransition : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler { + + Text _text; + + public Color NormalColor= Color.white; + public Color HoverColor = Color.black; + + public void Awake() + { + _text = GetComponent(); + } + + public void OnPointerEnter(PointerEventData eventData) + { + _text.color = HoverColor; + } + + public void OnPointerExit(PointerEventData eventData) + { + _text.color = NormalColor; + } + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/UI/TextButtonTransition.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/UI/TextButtonTransition.cs.meta new file mode 100644 index 0000000..43cf251 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/UI/TextButtonTransition.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9d234639538a34b8d9e3cc6362a7afd0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/UtilityScripts/UI/TextToggleIsOnTransition.cs b/Assets/Photon Unity Networking/UtilityScripts/UI/TextToggleIsOnTransition.cs new file mode 100644 index 0000000..81befa6 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/UI/TextToggleIsOnTransition.cs @@ -0,0 +1,68 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// +// +// Use this on Button texts to have some color transition on the text as well without corrupting button's behaviour. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +using UnityEngine; +using System.Collections; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace ExitGames.UtilityScripts +{ + + /// + /// Use this on toggles texts to have some color transition on the text depending on the isOnState. + /// + [RequireComponent(typeof(Text))] + public class TextToggleIsOnTransition : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler { + + public Toggle toggle; + + Text _text; + + public Color NormalOnColor= Color.white; + public Color NormalOffColor = Color.black; + public Color HoverOnColor= Color.black; + public Color HoverOffColor = Color.black; + + bool isHover; + + public void OnEnable() + { + _text = GetComponent(); + + toggle.onValueChanged.AddListener(OnValueChanged); + } + + public void OnDisable() + { + toggle.onValueChanged.RemoveListener(OnValueChanged); + } + + public void OnValueChanged(bool isOn) + { + + _text.color = isOn? (isHover?HoverOnColor:HoverOffColor) : (isHover?NormalOnColor:NormalOffColor) ; + + } + + public void OnPointerEnter(PointerEventData eventData) + { + isHover = true; + _text.color = toggle.isOn?HoverOnColor:HoverOffColor; + } + + public void OnPointerExit(PointerEventData eventData) + { + isHover = false; + _text.color = toggle.isOn?NormalOnColor:NormalOffColor; + } + + } +} \ No newline at end of file diff --git a/Assets/Photon Unity Networking/UtilityScripts/UI/TextToggleIsOnTransition.cs.meta b/Assets/Photon Unity Networking/UtilityScripts/UI/TextToggleIsOnTransition.cs.meta new file mode 100644 index 0000000..a2ae161 --- /dev/null +++ b/Assets/Photon Unity Networking/UtilityScripts/UI/TextToggleIsOnTransition.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ec99d371d7c8e44899ce4b834dfd4d6a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon Unity Networking/link.xml b/Assets/Photon Unity Networking/link.xml new file mode 100644 index 0000000..e3f39df --- /dev/null +++ b/Assets/Photon Unity Networking/link.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Photon Unity Networking/link.xml.meta b/Assets/Photon Unity Networking/link.xml.meta new file mode 100644 index 0000000..850d94d --- /dev/null +++ b/Assets/Photon Unity Networking/link.xml.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: cecd4a32eba31cd4393c185e20824bfc +TextScriptImporter: + userData: diff --git a/Assets/Photon Unity Networking/readme.txt b/Assets/Photon Unity Networking/readme.txt new file mode 100644 index 0000000..42bd722 --- /dev/null +++ b/Assets/Photon Unity Networking/readme.txt @@ -0,0 +1,96 @@ + +Photon Unity Networking (PUN) + This package is a re-implementation of Unity's Networking, using Photon. + Also included: A setup wizard, demo scenes, documentation and Editor extensions. + + +PUN & PUN+ + PUN is the free package of Photon Unity Networking. Export to iOS or Android from Unity 4 requires Unity Pro Licenses. + PUN+ contains special native plugins that allow export to mobiles from Unity 4.x Free. You also get a Photon Cloud subscription upgrade. See below. + Unity 5 does not restrict export to mobiles. + + +Android and iOS Exports + See "PUN & PUN+" + iOS: Set the stripping level to "Strip Bytecode" and use ".Net 2.0" in the player settings. + More aggressive stripping will break the runtime and you can't connect anymore with PUN Free. + + +UnityScript / JavaScript + PUN is written with C# in mind primarily. + To use PUN from UnityScript, you need to move some folders in your project. + Move both folders "PhotonNetwork" and "UtilityScripts" to the Assets\Plugins\ folder. + from: \Photon Unity Networking\Plugins\ + and: \Photon Unity Networking\ + to: \Plugins\ + Now PUN compiles before UnityScript and that makes it available from regular UnityScript code. + + +Help and Documentation + Please read the included chm (or pdf). + Exit Games Forum: http://forum.photonengine.com/categories/unity-networking-plugin-pun + Online documentation: http://doc.photonengine.com/en/pun + Unity Forum Thread: http://forum.unity3d.com/threads/photon-unity-networking.101734/ + + +Integration + This package adds an Editor window "PUN Wizard" for connection setup: + Menu -> Window -> Photon Unity Networking (shortcut: ALT+P) + It also adds a commonly used component "PhotonView" to this menu: + Menu -> Component -> Miscellaneous -> PhotonView (shortcut: ALT+V) + When imported into a new, empty project, the "PunStartup" script opens the "demo hub" and setup scenes to build. + + +Clean PUN Import (no demos) + To get a clean import of PUN and PUN+ into your project, just skip the folders "Demos" and "UtilityScripts". + UtilityScripts can be useful for rapid prototyping but are optional to use. + "Important Files" are listed below. + + +Server + Exit Games Photon can be run on your servers or you can subscribe to the Photon Cloud for managed servers. + + The window "Photon Unity Networking" will help you setup a Photon Cloud account. + This service is geared towards room-based games and the server cannot be modified. + Read more about it: http://www.photonengine.com + + Alternatively, download the Server SDK and run your own Photon Server. + The SDK has the binaries to run immediately but also includes the source code and projects + for the game logic. You can use that as basis to modify and extend it. + A 100 concurrent user license is free (also for commercial use) per game. + Read more about it: http://www.photonengine.com/en/OnPremise + + +PUN+ and Networking Guide Subscriptions + Follow these steps when you bought an asset that includes an upgrade for a Photon Cloud subscription: + Use an existing Photon Cloud Account or register. https://www.photonengine.com/Account/SignUp + Sign in and open the Dashboard. https://www.photonengine.com/dashboard/Realtime/ + Select the Subscription to upgrade and click "Apply Unity Purchase". + Enter your Unity Invoice Number and App ID. + + You find the App ID on: https://www.photonengine.com/dashboard/Realtime/ + You find your Unity Invoice Number in the Unity AssetStore: + https://www.assetstore.unity3d.com/en/#!/account/transactions + Or while logged in to the Asset Store, click on your name on the top right. + From the drop-down select the payment method you used to obtain PUN+). + Navigate to your PUN+ purchase and copy the number following the "#" symbol (excluding the "#" and spaces). + + +Important Files + + Documentation + PhotonNetwork-Documentation.chm (a pdf is also included) + changelog.txt + + Extensions & Source + Photon Unity Networking\Editor\PhotonNetwork\*.* + Photon Unity Networking\Plugins\PhotonNetwork\*.* + Plugins\**\Photon*.* + + + The server-setup will be saved as file (can be moved into any Resources folder and edited in inspector) + Photon Unity Networking\Resources\PhotonServerSettings.asset + + Demos + All demos are in separate folders in Photon Unity Networking\Demos\. Delete this folder in your projects. + Each has a Demo-Scene. diff --git a/Assets/Photon Unity Networking/readme.txt.meta b/Assets/Photon Unity Networking/readme.txt.meta new file mode 100644 index 0000000..e8c13cd --- /dev/null +++ b/Assets/Photon Unity Networking/readme.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d90864ccbf99d4a449c87472b0a181e8 +labels: +- ExitGames +- PUN +- Photon +- Networking diff --git a/Assets/Plugins/GameDataEditor/ArrayExtensions.cs b/Assets/Plugins/GameDataEditor/ArrayExtensions.cs new file mode 100644 index 0000000..69d6241 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/ArrayExtensions.cs @@ -0,0 +1,14 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.ArrayExtensions +using System; + +namespace GameDataEditor +{ + public static class ArrayExtensions + { + public static bool IsValidIndex(this Array variable, int index) + { + return index > -1 && variable != null && index < variable.Length; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/BasicFieldType.cs b/Assets/Plugins/GameDataEditor/BasicFieldType.cs new file mode 100644 index 0000000..b8b4d3e --- /dev/null +++ b/Assets/Plugins/GameDataEditor/BasicFieldType.cs @@ -0,0 +1,24 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.BasicFieldType +using System; + +namespace GameDataEditor +{ + [Flags] + public enum BasicFieldType + { + Undefined = 0, + Bool = 1, + Int = 2, + Float = 4, + String = 8, + Vector2 = 0x10, + Vector3 = 0x20, + Vector4 = 0x40, + Color = 0x80, + GameObject = 0x100, + Texture2D = 0x200, + Material = 0x400, + AudioClip = 0x800 + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/ColorExtensions.cs b/Assets/Plugins/GameDataEditor/ColorExtensions.cs new file mode 100644 index 0000000..4f35a73 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/ColorExtensions.cs @@ -0,0 +1,44 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.ColorExtensions +using System.Globalization; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public static class ColorExtensions + { + public static string ToHexString(this Color32 color) + { + return string.Format("#{0}{1}{2}", color.r.ToString("x2"), color.g.ToString("x2"), color.b.ToString("x2")); + } + + public static Color ToColor(this string hex) + { + return hex.ToColor32(); + } + + public static Color32 ToColor32(this string hex) + { + if (string.IsNullOrEmpty(hex)) + { + return default(Color32); + } + hex = hex.Replace("#", string.Empty); + byte r = byte.Parse(hex.Substring(0, 2), NumberStyles.HexNumber); + byte g = byte.Parse(hex.Substring(2, 2), NumberStyles.HexNumber); + byte b = byte.Parse(hex.Substring(4, 2), NumberStyles.HexNumber); + return new Color32(r, g, b, 1); + } + + public static bool NearlyEqual(this Color variable, Color other) + { + return variable.r.NearlyEqual(other.r) && variable.g.NearlyEqual(other.g) && variable.b.NearlyEqual(other.b); + } + + public static bool NearlyEqual(this Color32 variable, Color32 other) + { + return FloatExtensions.NearlyEqual((int)variable.r, (int)other.r) && FloatExtensions.NearlyEqual((int)variable.g, (int)other.g) && FloatExtensions.NearlyEqual((int)variable.b, (int)other.b); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/DictionaryExtensions.cs b/Assets/Plugins/GameDataEditor/DictionaryExtensions.cs new file mode 100644 index 0000000..2533cd9 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/DictionaryExtensions.cs @@ -0,0 +1,921 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.DictionaryExtensions +using System; +using System.Collections.Generic; +using System.Reflection; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public static class DictionaryExtensions + { + public static MethodInfo DeepCopyMethodInfo = typeof(DictionaryExtensions).GetMethod("DeepCopy"); + + public static bool TryAddOrUpdateValue(this Dictionary variable, TKey key, TValue value) + { + try + { + if (variable.ContainsKey(key)) + { + variable[key] = value; + return true; + } + return variable.TryAddValue(key, value); + } + catch + { + return false; + } + } + + public static bool TryAddValue(this Dictionary variable, TKey key, TValue value) + { + try + { + variable.Add(key, value); + return true; + } + catch + { + return false; + } + } + + public static bool TryGetList(this Dictionary variable, TKey key, out List value) + { + bool result = true; + value = null; + try + { + variable.TryGetValue(key, out var value2); + value = value2 as List; + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetTwoDList(this Dictionary variable, TKey key, out List> value) + { + bool result = true; + value = null; + try + { + value = new List>(); + if (variable.TryGetList(key, out var value2)) + { + value = value2.ConvertAll((object obj) => obj as List); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetBool(this Dictionary variable, TKey key, out bool value) + { + bool result = true; + value = false; + try + { + variable.TryGetValue(key, out var value2); + value = Convert.ToBoolean(value2); + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetBoolList(this Dictionary variable, TKey key, out List value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = value2.ConvertAll(Convert.ToBoolean); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetBoolTwoDList(this Dictionary variable, TKey key, out List> value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = new List>(); + foreach (object item2 in value2) + { + List list = item2 as List; + List item = list.ConvertAll(Convert.ToBoolean); + value.Add(item); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetString(this Dictionary variable, TKey key, out string value) + { + bool result = true; + value = string.Empty; + try + { + variable.TryGetValue(key, out var value2); + value = value2.ToString(); + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetStringList(this Dictionary variable, TKey key, out List value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = value2.ConvertAll((object obj) => obj.ToString()); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetStringTwoDList(this Dictionary variable, TKey key, out List> value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = new List>(); + foreach (object item2 in value2) + { + List list = item2 as List; + List item = list.ConvertAll((object obj) => obj.ToString()); + value.Add(item); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetFloat(this Dictionary variable, TKey key, out float value) + { + bool result = true; + value = 0f; + try + { + variable.TryGetValue(key, out var value2); + value = Convert.ToSingle(value2); + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetFloatList(this Dictionary variable, TKey key, out List value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = value2.ConvertAll(Convert.ToSingle); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetFloatTwoDList(this Dictionary variable, TKey key, out List> value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = new List>(); + foreach (object item2 in value2) + { + List list = item2 as List; + List item = list.ConvertAll(Convert.ToSingle); + value.Add(item); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetInt(this Dictionary variable, TKey key, out int value) + { + bool result = true; + value = 0; + try + { + variable.TryGetValue(key, out var value2); + value = Convert.ToInt32(value2); + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetIntList(this Dictionary variable, TKey key, out List value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = value2.ConvertAll(Convert.ToInt32); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetIntTwoDList(this Dictionary variable, TKey key, out List> value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = new List>(); + foreach (object item2 in value2) + { + List list = item2 as List; + List item = list.ConvertAll(Convert.ToInt32); + value.Add(item); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetVector2(this Dictionary variable, TKey key, out Vector2 value) + { + bool result = true; + value = Vector2.zero; + try + { + variable.TryGetValue(key, out var value2); + if ((object)value2 is Dictionary dictionary) + { + value.x = Convert.ToSingle(dictionary["x"]); + value.y = Convert.ToSingle(dictionary["y"]); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetVector2List(this Dictionary variable, TKey key, out List value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = new List(); + foreach (object item2 in value2) + { + Dictionary dictionary = item2 as Dictionary; + Vector2 item = default(Vector2); + if (dictionary != null) + { + dictionary.TryGetFloat("x", out item.x); + dictionary.TryGetFloat("y", out item.y); + } + value.Add(item); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetVector2TwoDList(this Dictionary variable, TKey key, out List> value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetTwoDList(key, out var value2)) + { + value = new List>(); + foreach (List item2 in value2) + { + List list = item2 as List; + List list2 = new List(); + foreach (object item3 in list) + { + Dictionary dictionary = item3 as Dictionary; + Vector2 item = default(Vector2); + if (dictionary != null) + { + dictionary.TryGetFloat("x", out item.x); + dictionary.TryGetFloat("y", out item.y); + } + list2.Add(item); + } + value.Add(list2); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetVector3(this Dictionary variable, TKey key, out Vector3 value) + { + bool result = true; + value = Vector3.zero; + try + { + variable.TryGetValue(key, out var value2); + if ((object)value2 is Dictionary dictionary) + { + value.x = Convert.ToSingle(dictionary["x"]); + value.y = Convert.ToSingle(dictionary["y"]); + value.z = Convert.ToSingle(dictionary["z"]); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetVector3List(this Dictionary variable, TKey key, out List value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = new List(); + foreach (object item2 in value2) + { + Dictionary dictionary = item2 as Dictionary; + Vector3 item = default(Vector3); + if (dictionary != null) + { + dictionary.TryGetFloat("x", out item.x); + dictionary.TryGetFloat("y", out item.y); + dictionary.TryGetFloat("z", out item.z); + } + value.Add(item); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetVector3TwoDList(this Dictionary variable, TKey key, out List> value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetTwoDList(key, out var value2)) + { + value = new List>(); + foreach (List item2 in value2) + { + List list = item2 as List; + List list2 = new List(); + foreach (object item3 in list) + { + Dictionary dictionary = item3 as Dictionary; + Vector3 item = default(Vector3); + if (dictionary != null) + { + dictionary.TryGetFloat("x", out item.x); + dictionary.TryGetFloat("y", out item.y); + dictionary.TryGetFloat("z", out item.z); + } + list2.Add(item); + } + value.Add(list2); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetVector4(this Dictionary variable, TKey key, out Vector4 value) + { + bool result = true; + value = Vector4.zero; + try + { + variable.TryGetValue(key, out var value2); + if ((object)value2 is Dictionary dictionary) + { + value.x = Convert.ToSingle(dictionary["x"]); + value.y = Convert.ToSingle(dictionary["y"]); + value.z = Convert.ToSingle(dictionary["z"]); + value.w = Convert.ToSingle(dictionary["w"]); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetVector4List(this Dictionary variable, TKey key, out List value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = new List(); + foreach (object item2 in value2) + { + Dictionary dictionary = item2 as Dictionary; + Vector4 item = default(Vector4); + if (dictionary != null) + { + dictionary.TryGetFloat("x", out item.x); + dictionary.TryGetFloat("y", out item.y); + dictionary.TryGetFloat("z", out item.z); + dictionary.TryGetFloat("w", out item.w); + } + value.Add(item); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetVector4TwoDList(this Dictionary variable, TKey key, out List> value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetTwoDList(key, out var value2)) + { + value = new List>(); + foreach (List item2 in value2) + { + List list = item2 as List; + List list2 = new List(); + foreach (object item3 in list) + { + Dictionary dictionary = item3 as Dictionary; + Vector4 item = default(Vector4); + if (dictionary != null) + { + dictionary.TryGetFloat("x", out item.x); + dictionary.TryGetFloat("y", out item.y); + dictionary.TryGetFloat("z", out item.z); + dictionary.TryGetFloat("w", out item.w); + } + list2.Add(item); + } + value.Add(list2); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetColor(this Dictionary variable, TKey key, out Color value) + { + bool result = true; + value = Color.black; + try + { + variable.TryGetValue(key, out var value2); + if ((object)value2 is Dictionary variable2) + { + variable2.TryGetFloat("r", out value.r); + variable2.TryGetFloat("g", out value.g); + variable2.TryGetFloat("b", out value.b); + variable2.TryGetFloat("a", out value.a); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetColorList(this Dictionary variable, TKey key, out List value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetList(key, out var value2)) + { + value = new List(); + foreach (object item2 in value2) + { + Dictionary dictionary = item2 as Dictionary; + Color item = default(Color); + if (dictionary != null) + { + dictionary.TryGetFloat("r", out item.r); + dictionary.TryGetFloat("g", out item.g); + dictionary.TryGetFloat("b", out item.b); + dictionary.TryGetFloat("a", out item.a); + } + value.Add(item); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetColorTwoDList(this Dictionary variable, TKey key, out List> value) + { + bool result = true; + value = null; + try + { + if (variable.TryGetTwoDList(key, out var value2)) + { + value = new List>(); + foreach (List item2 in value2) + { + List list = item2 as List; + List list2 = new List(); + foreach (object item3 in list) + { + Dictionary dictionary = item3 as Dictionary; + Color item = default(Vector4); + if (dictionary != null) + { + dictionary.TryGetFloat("r", out item.r); + dictionary.TryGetFloat("g", out item.g); + dictionary.TryGetFloat("b", out item.b); + dictionary.TryGetFloat("a", out item.a); + } + list2.Add(item); + } + value.Add(list2); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetUnityType(this Dictionary variable, TKey key, out T value) where T : UnityEngine.Object + { + bool result = true; + value = (T)null; + try + { + if (variable.TryGetString(key, out var value2)) + { + value = Resources.Load(value2); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetUnityTypeList(this Dictionary variable, TKey key, out List value) where T : UnityEngine.Object + { + bool result = true; + value = null; + try + { + if (variable.TryGetStringList(key, out var value2)) + { + value = new List(); + foreach (string item in value2) + { + value.Add(Resources.Load(item)); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetUnityTypeTwoDList(this Dictionary variable, TKey key, out List> value) where T : UnityEngine.Object + { + bool result = true; + value = null; + try + { + if (variable.TryGetStringTwoDList(key, out var value2)) + { + value = new List>(); + foreach (List item in value2) + { + List list = new List(); + foreach (string item2 in item) + { + list.Add(Resources.Load(item2)); + } + value.Add(list); + } + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetGameObject(this Dictionary variable, TKey key, out GameObject value) + { + return variable.TryGetUnityType(key, out value); + } + + public static bool TryGetGameObjectList(this Dictionary variable, TKey key, out List value) + { + return variable.TryGetUnityTypeList(key, out value); + } + + public static bool TryGetGameObjectTwoDList(this Dictionary variable, TKey key, out List> value) + { + return variable.TryGetUnityTypeTwoDList(key, out value); + } + + public static bool TryGetTexture2D(this Dictionary variable, TKey key, out Texture2D value) + { + return variable.TryGetUnityType(key, out value); + } + + public static bool TryGetTexture2DList(this Dictionary variable, TKey key, out List value) + { + return variable.TryGetUnityTypeList(key, out value); + } + + public static bool TryGetTexture2DTwoDList(this Dictionary variable, TKey key, out List> value) + { + return variable.TryGetUnityTypeTwoDList(key, out value); + } + + public static bool TryGetMaterial(this Dictionary variable, TKey key, out Material value) + { + return variable.TryGetUnityType(key, out value); + } + + public static bool TryGetMaterialList(this Dictionary variable, TKey key, out List value) + { + return variable.TryGetUnityTypeList(key, out value); + } + + public static bool TryGetMaterialTwoDList(this Dictionary variable, TKey key, out List> value) + { + return variable.TryGetUnityTypeTwoDList(key, out value); + } + + public static bool TryGetAudioClip(this Dictionary variable, TKey key, out AudioClip value) + { + return variable.TryGetUnityType(key, out value); + } + + public static bool TryGetAudioClipList(this Dictionary variable, TKey key, out List value) + { + return variable.TryGetUnityTypeList(key, out value); + } + + public static bool TryGetAudioClipTwoDList(this Dictionary variable, TKey key, out List> value) + { + return variable.TryGetUnityTypeTwoDList(key, out value); + } + + public static bool TryGetCustom(this Dictionary variable, TKey key, out T value) where T : IGDEData, new() + { + bool result = true; + value = new T(); + try + { + if (variable.TryGetValue(key, out var value2)) + { + value.LoadFromDict(key.ToString(), value2 as Dictionary); + } + else + { + value.LoadFromSavedData(key.ToString()); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetCustomList(this Dictionary variable, TKey key, out List value) where T : IGDEData, new() + { + bool result = true; + value = new List(); + try + { + variable.TryGetStringList(key, out var value2); + foreach (string item in value2) + { + GDEDataManager.DataDictionary.TryGetCustom(item, out var value3); + value.Add(value3); + } + } + catch + { + result = false; + } + return result; + } + + public static bool TryGetCustomTwoDList(this Dictionary variable, TKey key, out List> value) where T : IGDEData, new() + { + bool result = true; + value = new List>(); + try + { + variable.TryGetStringTwoDList(key, out var value2); + foreach (List item in value2) + { + List list = new List(); + foreach (string item2 in item) + { + GDEDataManager.DataDictionary.TryGetCustom(item2, out var value3); + list.Add(value3); + } + value.Add(list); + } + } + catch + { + result = false; + } + return result; + } + + public static Dictionary DeepCopy(this Dictionary variable) + { + Dictionary dictionary = new Dictionary(); + TKey val = default(TKey); + TValue val2 = default(TValue); + foreach (KeyValuePair item in variable) + { + if (item.Key == null) + { + val = item.Key; + } + else if (item.Key.IsCloneableType()) + { + val = (TKey)((ICloneable)(object)item.Key).Clone(); + } + else if (item.Key.IsGenericList()) + { + Type type = item.Key.GetType().GetGenericArguments()[0]; + MethodInfo methodInfo = ListExtensions.DeepCopyMethodInfo.MakeGenericMethod(type); + val = (TKey)methodInfo.Invoke(item.Key, new object[1] { item.Key }); + } + else if (item.Key.IsGenericDictionary()) + { + Type[] genericArguments = item.Key.GetType().GetGenericArguments(); + Type type2 = genericArguments[0]; + Type type3 = genericArguments[1]; + MethodInfo methodInfo2 = DeepCopyMethodInfo.MakeGenericMethod(type2, type3); + val = (TKey)methodInfo2.Invoke(item.Key, new object[1] { item.Key }); + } + else + { + val = item.Key; + } + if (item.Value == null) + { + val2 = item.Value; + } + else if (item.Value.IsCloneableType()) + { + val2 = (TValue)((ICloneable)(object)item.Value).Clone(); + } + else if (item.Value.IsGenericList()) + { + Type type4 = item.Value.GetType().GetGenericArguments()[0]; + MethodInfo methodInfo3 = ListExtensions.DeepCopyMethodInfo.MakeGenericMethod(type4); + val2 = (TValue)methodInfo3.Invoke(item.Value, new object[1] { item.Value }); + } + else if (item.Value.IsGenericDictionary()) + { + Type[] genericArguments2 = item.Value.GetType().GetGenericArguments(); + Type type5 = genericArguments2[0]; + Type type6 = genericArguments2[1]; + MethodInfo methodInfo4 = DeepCopyMethodInfo.MakeGenericMethod(type5, type6); + val2 = (TValue)methodInfo4.Invoke(item.Value, new object[1] { item.Value }); + } + else + { + val2 = item.Value; + } + dictionary.Add(val, val2); + } + return dictionary; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/FlagExtensions.cs b/Assets/Plugins/GameDataEditor/FlagExtensions.cs new file mode 100644 index 0000000..9979486 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/FlagExtensions.cs @@ -0,0 +1,16 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.FlagExtensions +using System; + +namespace GameDataEditor +{ + public static class FlagExtensions + { + public static bool IsSet(this Enum variable, Enum flag) + { + ulong num = Convert.ToUInt64(variable); + ulong num2 = Convert.ToUInt64(flag); + return (num & num2) == num2; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/FloatExtensions.cs b/Assets/Plugins/GameDataEditor/FloatExtensions.cs new file mode 100644 index 0000000..d911fc5 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/FloatExtensions.cs @@ -0,0 +1,16 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.FloatExtensions +using System; + +namespace GameDataEditor +{ + public static class FloatExtensions + { + public const float TOLERANCE = 0.1f; + + public static bool NearlyEqual(this float a, float b) + { + return Math.Abs(a - b) < 0.1f; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDE2DListItemKeys.cs b/Assets/Plugins/GameDataEditor/GDE2DListItemKeys.cs new file mode 100644 index 0000000..5b68f35 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDE2DListItemKeys.cs @@ -0,0 +1,12 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDE2DListItemKeys + +namespace GameDataEditor +{ + public class GDE2DListItemKeys + { + public static string TwoDList_DevItem = "DevItem"; + + public static string TwoDListCustom_custom = "custom"; + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEAbilityData.cs b/Assets/Plugins/GameDataEditor/GDEAbilityData.cs new file mode 100644 index 0000000..eb4d61a --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEAbilityData.cs @@ -0,0 +1,142 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEAbilityData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDEAbilityData : IGDEData + { + private static string IDKey = "ID"; + + private int _ID; + + private static string GameCharacterTypeKey = "GameCharacterType"; + + private GDEGameCharacterTypeData _GameCharacterType; + + private static string AbilityNameKey = "AbilityName"; + + private GDEConstantTextListData _AbilityName; + + public int ID + { + get + { + return _ID; + } + set + { + if (_ID != value) + { + _ID = value; + GDEDataManager.SetInt(_key + "_" + IDKey, _ID); + } + } + } + + public GDEGameCharacterTypeData GameCharacterType + { + get + { + return _GameCharacterType; + } + set + { + if (_GameCharacterType != value) + { + _GameCharacterType = value; + GDEDataManager.SetCustom(_key + "_" + GameCharacterTypeKey, _GameCharacterType); + } + } + } + + public GDEConstantTextListData AbilityName + { + get + { + return _AbilityName; + } + set + { + if (_AbilityName != value) + { + _AbilityName = value; + GDEDataManager.SetCustom(_key + "_" + AbilityNameKey, _AbilityName); + } + } + } + + public GDEAbilityData() + { + _key = string.Empty; + } + + public GDEAbilityData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetInt(IDKey, out _ID); + dict.TryGetString(GameCharacterTypeKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _GameCharacterType); + dict.TryGetString(AbilityNameKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _AbilityName); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _ID = GDEDataManager.GetInt(_key + "_" + IDKey, _ID); + _GameCharacterType = GDEDataManager.GetCustom(_key + "_" + GameCharacterTypeKey, _GameCharacterType); + _AbilityName = GDEDataManager.GetCustom(_key + "_" + AbilityNameKey, _AbilityName); + } + + public void Reset_ID() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(IDKey, out _ID); + } + + public void Reset_GameCharacterType() + { + GDEDataManager.ResetToDefault(_key, GameCharacterTypeKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(GameCharacterTypeKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _GameCharacterType); + GameCharacterType = GDEDataManager.GetCustom(_key + "_" + GameCharacterTypeKey, _GameCharacterType); + GameCharacterType.ResetAll(); + } + + public void Reset_AbilityName() + { + GDEDataManager.ResetToDefault(_key, AbilityNameKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(AbilityNameKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _AbilityName); + AbilityName = GDEDataManager.GetCustom(_key + "_" + AbilityNameKey, _AbilityName); + AbilityName.ResetAll(); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.ResetToDefault(_key, GameCharacterTypeKey); + GDEDataManager.ResetToDefault(_key, AbilityNameKey); + Reset_GameCharacterType(); + Reset_AbilityName(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEAchievementData.cs b/Assets/Plugins/GameDataEditor/GDEAchievementData.cs new file mode 100644 index 0000000..43cda12 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEAchievementData.cs @@ -0,0 +1,163 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEAchievementData +using System.Collections.Generic; +using GameDataEditor; + + +namespace GameDataEditor +{ + public class GDEAchievementData : IGDEData + { + private static string EnabledKey = "Enabled"; + + private bool _Enabled; + + private static string IDKey = "ID"; + + private int _ID; + + private static string MaxValueKey = "MaxValue"; + + private int _MaxValue; + + private static string AdditionalPlayerLevelKey = "AdditionalPlayerLevel"; + + private int _AdditionalPlayerLevel; + + public bool Enabled + { + get + { + return _Enabled; + } + set + { + if (_Enabled != value) + { + _Enabled = value; + GDEDataManager.SetBool(_key + "_" + EnabledKey, _Enabled); + } + } + } + + public int ID + { + get + { + return _ID; + } + set + { + if (_ID != value) + { + _ID = value; + GDEDataManager.SetInt(_key + "_" + IDKey, _ID); + } + } + } + + public int MaxValue + { + get + { + return _MaxValue; + } + set + { + if (_MaxValue != value) + { + _MaxValue = value; + GDEDataManager.SetInt(_key + "_" + MaxValueKey, _MaxValue); + } + } + } + + public int AdditionalPlayerLevel + { + get + { + return _AdditionalPlayerLevel; + } + set + { + if (_AdditionalPlayerLevel != value) + { + _AdditionalPlayerLevel = value; + GDEDataManager.SetInt(_key + "_" + AdditionalPlayerLevelKey, _AdditionalPlayerLevel); + } + } + } + + public GDEAchievementData() + { + _key = string.Empty; + } + + public GDEAchievementData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetBool(EnabledKey, out _Enabled); + dict.TryGetInt(IDKey, out _ID); + dict.TryGetInt(MaxValueKey, out _MaxValue); + dict.TryGetInt(AdditionalPlayerLevelKey, out _AdditionalPlayerLevel); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _Enabled = GDEDataManager.GetBool(_key + "_" + EnabledKey, _Enabled); + _ID = GDEDataManager.GetInt(_key + "_" + IDKey, _ID); + _MaxValue = GDEDataManager.GetInt(_key + "_" + MaxValueKey, _MaxValue); + _AdditionalPlayerLevel = GDEDataManager.GetInt(_key + "_" + AdditionalPlayerLevelKey, _AdditionalPlayerLevel); + } + + public void Reset_Enabled() + { + GDEDataManager.ResetToDefault(_key, EnabledKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBool(EnabledKey, out _Enabled); + } + + public void Reset_ID() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(IDKey, out _ID); + } + + public void Reset_MaxValue() + { + GDEDataManager.ResetToDefault(_key, MaxValueKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(MaxValueKey, out _MaxValue); + } + + public void Reset_AdditionalPlayerLevel() + { + GDEDataManager.ResetToDefault(_key, AdditionalPlayerLevelKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(AdditionalPlayerLevelKey, out _AdditionalPlayerLevel); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.ResetToDefault(_key, EnabledKey); + GDEDataManager.ResetToDefault(_key, MaxValueKey); + GDEDataManager.ResetToDefault(_key, AdditionalPlayerLevelKey); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEConstantTextListData.cs b/Assets/Plugins/GameDataEditor/GDEConstantTextListData.cs new file mode 100644 index 0000000..bb2ca20 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEConstantTextListData.cs @@ -0,0 +1,197 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEConstantTextListData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDEConstantTextListData : IGDEData + { + private static string ForceEnableToUseEnglishFontKey = "ForceEnableToUseEnglishFont"; + + private bool _ForceEnableToUseEnglishFont; + + private static string EnglishKey = "English"; + + private string _English; + + private static string JapaneseKey = "Japanese"; + + private string _Japanese; + + private static string FrenchKey = "French"; + + private string _French; + + private static string TypeKey = "Type"; + + private GDEConstantTextTypeData _Type; + + public bool ForceEnableToUseEnglishFont + { + get + { + return _ForceEnableToUseEnglishFont; + } + set + { + if (_ForceEnableToUseEnglishFont != value) + { + _ForceEnableToUseEnglishFont = value; + GDEDataManager.SetBool(_key + "_" + ForceEnableToUseEnglishFontKey, _ForceEnableToUseEnglishFont); + } + } + } + + public string English + { + get + { + return _English; + } + set + { + if (_English != value) + { + _English = value; + GDEDataManager.SetString(_key + "_" + EnglishKey, _English); + } + } + } + + public string Japanese + { + get + { + return _Japanese; + } + set + { + if (_Japanese != value) + { + _Japanese = value; + GDEDataManager.SetString(_key + "_" + JapaneseKey, _Japanese); + } + } + } + + public string French + { + get + { + return _French; + } + set + { + if (_French != value) + { + _French = value; + GDEDataManager.SetString(_key + "_" + FrenchKey, _French); + } + } + } + + public GDEConstantTextTypeData Type + { + get + { + return _Type; + } + set + { + if (_Type != value) + { + _Type = value; + GDEDataManager.SetCustom(_key + "_" + TypeKey, _Type); + } + } + } + + public GDEConstantTextListData() + { + _key = string.Empty; + } + + public GDEConstantTextListData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetBool(ForceEnableToUseEnglishFontKey, out _ForceEnableToUseEnglishFont); + dict.TryGetString(EnglishKey, out _English); + dict.TryGetString(JapaneseKey, out _Japanese); + dict.TryGetString(FrenchKey, out _French); + dict.TryGetString(TypeKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Type); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _ForceEnableToUseEnglishFont = GDEDataManager.GetBool(_key + "_" + ForceEnableToUseEnglishFontKey, _ForceEnableToUseEnglishFont); + _English = GDEDataManager.GetString(_key + "_" + EnglishKey, _English); + _Japanese = GDEDataManager.GetString(_key + "_" + JapaneseKey, _Japanese); + _French = GDEDataManager.GetString(_key + "_" + FrenchKey, _French); + _Type = GDEDataManager.GetCustom(_key + "_" + TypeKey, _Type); + } + + public void Reset_ForceEnableToUseEnglishFont() + { + GDEDataManager.ResetToDefault(_key, ForceEnableToUseEnglishFontKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBool(ForceEnableToUseEnglishFontKey, out _ForceEnableToUseEnglishFont); + } + + public void Reset_English() + { + GDEDataManager.ResetToDefault(_key, EnglishKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(EnglishKey, out _English); + } + + public void Reset_Japanese() + { + GDEDataManager.ResetToDefault(_key, JapaneseKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(JapaneseKey, out _Japanese); + } + + public void Reset_French() + { + GDEDataManager.ResetToDefault(_key, FrenchKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(FrenchKey, out _French); + } + + public void Reset_Type() + { + GDEDataManager.ResetToDefault(_key, TypeKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(TypeKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Type); + Type = GDEDataManager.GetCustom(_key + "_" + TypeKey, _Type); + Type.ResetAll(); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, TypeKey); + GDEDataManager.ResetToDefault(_key, EnglishKey); + GDEDataManager.ResetToDefault(_key, JapaneseKey); + GDEDataManager.ResetToDefault(_key, FrenchKey); + GDEDataManager.ResetToDefault(_key, ForceEnableToUseEnglishFontKey); + Reset_Type(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEConstantTextTypeData.cs b/Assets/Plugins/GameDataEditor/GDEConstantTextTypeData.cs new file mode 100644 index 0000000..76d4938 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEConstantTextTypeData.cs @@ -0,0 +1,44 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEConstantTextTypeData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDEConstantTextTypeData : IGDEData + { + public GDEConstantTextTypeData() + { + _key = string.Empty; + } + + public GDEConstantTextTypeData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + } + else + { + LoadFromSavedData(dataKey); + } + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + } + + public void ResetAll() + { + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDECrypto.cs b/Assets/Plugins/GameDataEditor/GDECrypto.cs new file mode 100644 index 0000000..9d54a19 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDECrypto.cs @@ -0,0 +1,44 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDECrypto +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +namespace GameDataEditor +{ + [Serializable] + public class GDECrypto + { + public const int KEY_LENGTH = 256; + + public byte[] Salt; + + public byte[] IV; + + public string Pass; + + public string Decrypt(byte[] cipherTextBytes) + { + string result = string.Empty; + try + { + byte[] bytes = new Rfc2898DeriveBytes(Pass, Salt).GetBytes(32); + byte[] array = new byte[cipherTextBytes.Length]; + using RijndaelManaged rijndaelManaged = new RijndaelManaged(); + rijndaelManaged.Mode = CipherMode.CBC; + using ICryptoTransform transform = rijndaelManaged.CreateDecryptor(bytes, IV); + using MemoryStream stream = new MemoryStream(cipherTextBytes); + using CryptoStream cryptoStream = new CryptoStream(stream, transform, CryptoStreamMode.Read); + int count = cryptoStream.Read(array, 0, array.Length); + result = Encoding.UTF8.GetString(array, 0, count); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEDataManager.cs b/Assets/Plugins/GameDataEditor/GDEDataManager.cs new file mode 100644 index 0000000..a56d2d6 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEDataManager.cs @@ -0,0 +1,1139 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEDataManager +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public class GDEDataManager + { + private static bool isInitialized; + + private static Dictionary dataDictionary; + + private static Dictionary> dataKeysBySchema; + + private static string _dataFilePath; + + public static Dictionary DataDictionary => dataDictionary; + + public static string DataFilePath + { + get + { + return _dataFilePath; + } + private set + { + _dataFilePath = value; + } + } + + public static bool Init(string filePath, bool encrypted = false) + { + bool result = true; + if (isInitialized) + { + return result; + } + try + { + DataFilePath = filePath; + TextAsset dataAsset = Resources.Load(DataFilePath) as TextAsset; + Init(dataAsset, encrypted); + isInitialized = true; + } + catch (Exception message) + { + Debug.LogError(message); + result = false; + } + return result; + } + + public static bool Init(TextAsset dataAsset, bool encrypted = false) + { + bool result = true; + if (isInitialized) + { + return result; + } + if (dataAsset == null) + { + Debug.LogError("GDEInit: TextAsset is null!"); + return false; + } + try + { + string empty = string.Empty; + empty = ((!encrypted) ? dataAsset.text : DecryptGDEData(dataAsset.bytes)); + InitFromText(empty); + isInitialized = true; + } + catch (Exception message) + { + Debug.LogError(message); + result = false; + } + return result; + } + + public static bool InitFromText(string dataString) + { + bool result = true; + if (isInitialized) + { + return result; + } + try + { + dataDictionary = Json.Deserialize(dataString) as Dictionary; + BuildDataKeysBySchemaList(); + isInitialized = true; + } + catch (Exception message) + { + Debug.LogError(message); + result = false; + } + return result; + } + + public static string DecryptGDEData(byte[] encryptedContent) + { + GDECrypto gDECrypto = null; + TextAsset textAsset = (TextAsset)Resources.Load("gde_meta_data", typeof(TextAsset)); + byte[] buffer = Convert.FromBase64String(textAsset.text); + Resources.UnloadAsset(textAsset); + using (MemoryStream serializationStream = new MemoryStream(buffer)) + { + BinaryFormatter binaryFormatter = new BinaryFormatter(); + gDECrypto = (GDECrypto)binaryFormatter.Deserialize(serializationStream); + } + string result = string.Empty; + if (gDECrypto != null) + { + result = gDECrypto.Decrypt(encryptedContent); + } + return result; + } + + private static void BuildDataKeysBySchemaList() + { + dataKeysBySchema = new Dictionary>(); + foreach (KeyValuePair item in dataDictionary) + { + if (!item.Key.StartsWith("_gdeSchema_")) + { + Dictionary variable = item.Value as Dictionary; + variable.TryGetString("_gdeSchema", out var value); + if (dataKeysBySchema.TryGetValue(value, out var value2)) + { + value2.Add(item.Key); + continue; + } + value2 = new List(); + value2.Add(item.Key); + dataKeysBySchema.Add(value, value2); + } + } + } + + public static bool Get(string key, out Dictionary data) + { + if (dataDictionary == null) + { + data = null; + return false; + } + bool flag = true; + flag = dataDictionary.TryGetValue(key, out var value); + data = value as Dictionary; + return flag; + } + + public static bool GetAllDataBySchema(string schema, out Dictionary data) + { + if (dataDictionary == null) + { + data = null; + return false; + } + bool result = true; + data = new Dictionary(); + if (dataKeysBySchema.TryGetValue(schema, out var value)) + { + foreach (string item in value) + { + if (Get(item, out var data2)) + { + data.Add(item.Clone().ToString(), data2.DeepCopy()); + } + } + } + else + { + result = false; + } + return result; + } + + public static bool GetAllDataKeysBySchema(string schema, out List dataKeys) + { + if (dataDictionary == null) + { + dataKeys = null; + return false; + } + return dataKeysBySchema.TryGetValue(schema, out dataKeys); + } + + public static void ResetToDefault(string itemName, string fieldName) + { + PlayerPrefs.DeleteKey(itemName + "_" + fieldName); + } + + public static string GetString(string key, string defaultVal) + { + string text = defaultVal; + try + { + text = PlayerPrefs.GetString(key, text); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return text; + } + + public static List GetStringList(string key, List defaultVal) + { + List result = defaultVal; + try + { + result = GDEPPX.GetStringList(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List> GetStringTwoDList(string key, List> defaultVal) + { + List> result = defaultVal; + try + { + result = GDEPPX.Get2DStringList(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static int GetInt(string key, int defaultVal) + { + int num = defaultVal; + try + { + num = PlayerPrefs.GetInt(key, num); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return num; + } + + public static List GetIntList(string key, List defaultVal) + { + List result = defaultVal; + try + { + result = GDEPPX.GetIntList(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List> GetIntTwoDList(string key, List> defaultVal) + { + List> result = defaultVal; + try + { + result = GDEPPX.Get2DIntList(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static float GetFloat(string key, float defaultVal) + { + float num = defaultVal; + try + { + num = PlayerPrefs.GetFloat(key, num); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return num; + } + + public static List GetFloatList(string key, List defaultVal) + { + List list = defaultVal; + try + { + list = GDEPPX.GetFloatList(key, list); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return list; + } + + public static List> GetFloatTwoDList(string key, List> defaultVal) + { + List> result = defaultVal; + try + { + result = GDEPPX.Get2DFloatList(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static bool GetBool(string key, bool defaultVal) + { + bool result = defaultVal; + try + { + result = GDEPPX.GetBool(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List GetBoolList(string key, List defaultVal) + { + List result = defaultVal; + try + { + result = GDEPPX.GetBoolList(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List> GetBoolTwoDList(string key, List> defaultVal) + { + List> result = defaultVal; + try + { + result = GDEPPX.Get2DBoolList(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static Color32 GetColor(string key, Color32 defaultVal) + { + Color32 result = defaultVal; + try + { + result = GDEPPX.GetColor(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List GetColorList(string key, List defaultVal) + { + List result = defaultVal; + try + { + result = GDEPPX.GetColorList(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List> GetColorTwoDList(string key, List> defaultVal) + { + List> result = defaultVal; + try + { + result = GDEPPX.Get2DColorList(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static Vector2 GetVector2(string key, Vector2 defaultVal) + { + Vector2 result = defaultVal; + try + { + result = GDEPPX.GetVector2(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List GetVector2List(string key, List defaultVal) + { + List result = defaultVal; + try + { + result = GDEPPX.GetVector2List(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List> GetVector2TwoDList(string key, List> defaultVal) + { + List> result = defaultVal; + try + { + result = GDEPPX.Get2DVector2List(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static Vector3 GetVector3(string key, Vector3 defaultVal) + { + Vector3 result = defaultVal; + try + { + result = GDEPPX.GetVector3(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List GetVector3List(string key, List defaultVal) + { + List result = defaultVal; + try + { + result = GDEPPX.GetVector3List(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List> GetVector3TwoDList(string key, List> defaultVal) + { + List> result = defaultVal; + try + { + result = GDEPPX.Get2DVector3List(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static Vector4 GetVector4(string key, Vector4 defaultVal) + { + Vector4 result = defaultVal; + try + { + result = GDEPPX.GetVector4(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List GetVector4List(string key, List defaultVal) + { + List result = defaultVal; + try + { + result = GDEPPX.GetVector4List(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static List> GetVector4TwoDList(string key, List> defaultVal) + { + List> result = defaultVal; + try + { + result = GDEPPX.Get2DVector4List(key, defaultVal); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static GameObject GetGameObject(string key, GameObject defaultVal) + { + return defaultVal; + } + + public static List GetGameObjectList(string key, List defaultVal) + { + return defaultVal; + } + + public static List> GetGameObjectTwoDList(string key, List> defaultVal) + { + return defaultVal; + } + + public static Texture2D GetTexture2D(string key, Texture2D defaultVal) + { + return defaultVal; + } + + public static List GetTexture2DList(string key, List defaultVal) + { + return defaultVal; + } + + public static List> GetTexture2DTwoDList(string key, List> defaultVal) + { + return defaultVal; + } + + public static Material GetMaterial(string key, Material defaultVal) + { + return defaultVal; + } + + public static List GetMaterialList(string key, List defaultVal) + { + return defaultVal; + } + + public static List> GetMaterialTwoDList(string key, List> defaultVal) + { + return defaultVal; + } + + public static AudioClip GetAudioClip(string key, AudioClip defaultVal) + { + return defaultVal; + } + + public static List GetAudioClipList(string key, List defaultVal) + { + return defaultVal; + } + + public static List> GetAudioClipTwoDList(string key, List> defaultVal) + { + return defaultVal; + } + + public static T GetCustom(string key, T defaultVal) where T : IGDEData, new() + { + T value = defaultVal; + try + { + string text = ((defaultVal == null) ? string.Empty : defaultVal.Key); + string @string = GetString(key, text); + if (@string != text) + { + DataDictionary.TryGetCustom(@string, out value); + value.LoadFromSavedData(@string); + } + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return value; + } + + public static List GetCustomList(string key, List defaultVal) where T : IGDEData, new() + { + List list = defaultVal; + try + { + if (PlayerPrefs.HasKey(key)) + { + list = new List(); + List stringList = GetStringList(key, null); + if (stringList != null) + { + foreach (string item in stringList) + { + if (DataDictionary.TryGetCustom(item, out var value)) + { + list.Add(value); + } + } + } + } + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return list; + } + + public static List> GetCustomTwoDList(string key, List> defaultVal) where T : IGDEData, new() + { + List> list = defaultVal; + try + { + if (PlayerPrefs.HasKey(key)) + { + list = new List>(); + List> stringTwoDList = GetStringTwoDList(key, null); + if (stringTwoDList != null) + { + foreach (List item in stringTwoDList) + { + List list2 = new List(); + foreach (string item2 in item) + { + if (DataDictionary.TryGetCustom(item2, out var value)) + { + list2.Add(value); + } + } + list.Add(list2); + } + } + } + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return list; + } + + public static void SetString(string key, string val) + { + try + { + PlayerPrefs.SetString(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetStringList(string key, List val) + { + try + { + GDEPPX.SetStringList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetStringTwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DStringList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetInt(string key, int val) + { + try + { + PlayerPrefs.SetInt(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetIntList(string key, List val) + { + try + { + GDEPPX.SetIntList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetIntTwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DIntList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetFloat(string key, float val) + { + try + { + PlayerPrefs.SetFloat(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetFloatList(string key, List val) + { + try + { + GDEPPX.SetFloatList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetFloatTwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DFloatList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetBool(string key, bool val) + { + try + { + GDEPPX.SetBool(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetBoolList(string key, List val) + { + try + { + GDEPPX.SetBoolList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetBoolTwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DBoolList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetColor(string key, Color32 val) + { + try + { + GDEPPX.SetColor(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetColorList(string key, List val) + { + try + { + GDEPPX.SetColorList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetColorTwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DColorList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetVector2(string key, Vector2 val) + { + try + { + GDEPPX.SetVector2(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetVector2List(string key, List val) + { + try + { + GDEPPX.SetVector2List(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetVector2TwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DVector2List(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetVector3(string key, Vector3 val) + { + try + { + GDEPPX.SetVector3(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetVector3List(string key, List val) + { + try + { + GDEPPX.SetVector3List(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetVector3TwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DVector3List(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetVector4(string key, Vector4 val) + { + try + { + GDEPPX.SetVector4(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetVector4List(string key, List val) + { + try + { + GDEPPX.SetVector4List(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetVector4TwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DVector4List(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetGameObject(string key, GameObject val) + { + try + { + GDEPPX.SetGameObject(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetGameObjectList(string key, List val) + { + try + { + GDEPPX.SetGameObjectList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetGameObjectTwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DGameObjectList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetTexture2D(string key, Texture2D val) + { + try + { + GDEPPX.SetTexture2D(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetTexture2DList(string key, List val) + { + try + { + GDEPPX.SetTexture2DList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetTexture2DTwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DTexture2DList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetMaterial(string key, Material val) + { + try + { + GDEPPX.SetMaterial(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetMaterialList(string key, List val) + { + try + { + GDEPPX.SetMaterialList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetMaterialTwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DMaterialList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetAudioClip(string key, AudioClip val) + { + try + { + GDEPPX.SetAudioClip(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetAudioClipList(string key, List val) + { + try + { + GDEPPX.SetAudioClipList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetAudioClipTwoDList(string key, List> val) + { + try + { + GDEPPX.Set2DAudioClipList(key, val); + } + catch (Exception exception) + { + Debug.LogException(exception); + } + } + + public static void SetCustom(string key, T val) where T : IGDEData + { + SetString(key, val.Key); + } + + public static void SetCustomList(string key, List val) where T : IGDEData + { + List customKeys = new List(); + val.ForEach(delegate(T x) + { + customKeys.Add(x.Key); + }); + SetStringList(key, customKeys); + } + + public static void SetCustomTwoDList(string key, List> val) where T : IGDEData + { + List> list = new List>(); + foreach (List item in val) + { + List subListKeys = new List(); + item.ForEach(delegate(T x) + { + subListKeys.Add(x.Key); + }); + list.Add(subListKeys); + } + SetStringTwoDList(key, list); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEDifficultyListData.cs b/Assets/Plugins/GameDataEditor/GDEDifficultyListData.cs new file mode 100644 index 0000000..0c25adf --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEDifficultyListData.cs @@ -0,0 +1,532 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEDifficultyListData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDEDifficultyListData : IGDEData + { + private static string difficultyLevelKey = "difficultyLevel"; + + private int _difficultyLevel; + + private static string commonDropRateKey = "commonDropRate"; + + private int _commonDropRate; + + private static string uncommonDropRateKey = "uncommonDropRate"; + + private int _uncommonDropRate; + + private static string rareDropRateKey = "rareDropRate"; + + private int _rareDropRate; + + private static string legendaryDropRateKey = "legendaryDropRate"; + + private int _legendaryDropRate; + + private static string epicDropRateKey = "epicDropRate"; + + private int _epicDropRate; + + private static string enemyCostMagnifyKey = "enemyCostMagnify"; + + private float _enemyCostMagnify; + + private static string enemyCostCapMagnifyKey = "enemyCostCapMagnify"; + + private float _enemyCostCapMagnify; + + private static string enemyDamageMagnifyKey = "enemyDamageMagnify"; + + private float _enemyDamageMagnify; + + private static string enemyHealthMagnifyKey = "enemyHealthMagnify"; + + private float _enemyHealthMagnify; + + private static string enemyStaggerRegsitMagnifyKey = "enemyStaggerRegsitMagnify"; + + private float _enemyStaggerRegsitMagnify; + + private static string playerRegenDelayMagnifyKey = "playerRegenDelayMagnify"; + + private float _playerRegenDelayMagnify; + + private static string friendshipPointMagnifyKey = "friendshipPointMagnify"; + + private float _friendshipPointMagnify; + + private static string expMagnifyKey = "expMagnify"; + + private float _expMagnify; + + private static string difficultyNameKey = "difficultyName"; + + private GDEConstantTextListData _difficultyName; + + private static string descriptionKey = "description"; + + private GDEConstantTextListData _description; + + public int difficultyLevel + { + get + { + return _difficultyLevel; + } + set + { + if (_difficultyLevel != value) + { + _difficultyLevel = value; + GDEDataManager.SetInt(_key + "_" + difficultyLevelKey, _difficultyLevel); + } + } + } + + public int commonDropRate + { + get + { + return _commonDropRate; + } + set + { + if (_commonDropRate != value) + { + _commonDropRate = value; + GDEDataManager.SetInt(_key + "_" + commonDropRateKey, _commonDropRate); + } + } + } + + public int uncommonDropRate + { + get + { + return _uncommonDropRate; + } + set + { + if (_uncommonDropRate != value) + { + _uncommonDropRate = value; + GDEDataManager.SetInt(_key + "_" + uncommonDropRateKey, _uncommonDropRate); + } + } + } + + public int rareDropRate + { + get + { + return _rareDropRate; + } + set + { + if (_rareDropRate != value) + { + _rareDropRate = value; + GDEDataManager.SetInt(_key + "_" + rareDropRateKey, _rareDropRate); + } + } + } + + public int legendaryDropRate + { + get + { + return _legendaryDropRate; + } + set + { + if (_legendaryDropRate != value) + { + _legendaryDropRate = value; + GDEDataManager.SetInt(_key + "_" + legendaryDropRateKey, _legendaryDropRate); + } + } + } + + public int epicDropRate + { + get + { + return _epicDropRate; + } + set + { + if (_epicDropRate != value) + { + _epicDropRate = value; + GDEDataManager.SetInt(_key + "_" + epicDropRateKey, _epicDropRate); + } + } + } + + public float enemyCostMagnify + { + get + { + return _enemyCostMagnify; + } + set + { + if (_enemyCostMagnify != value) + { + _enemyCostMagnify = value; + GDEDataManager.SetFloat(_key + "_" + enemyCostMagnifyKey, _enemyCostMagnify); + } + } + } + + public float enemyCostCapMagnify + { + get + { + return _enemyCostCapMagnify; + } + set + { + if (_enemyCostCapMagnify != value) + { + _enemyCostCapMagnify = value; + GDEDataManager.SetFloat(_key + "_" + enemyCostCapMagnifyKey, _enemyCostCapMagnify); + } + } + } + + public float enemyDamageMagnify + { + get + { + return _enemyDamageMagnify; + } + set + { + if (_enemyDamageMagnify != value) + { + _enemyDamageMagnify = value; + GDEDataManager.SetFloat(_key + "_" + enemyDamageMagnifyKey, _enemyDamageMagnify); + } + } + } + + public float enemyHealthMagnify + { + get + { + return _enemyHealthMagnify; + } + set + { + if (_enemyHealthMagnify != value) + { + _enemyHealthMagnify = value; + GDEDataManager.SetFloat(_key + "_" + enemyHealthMagnifyKey, _enemyHealthMagnify); + } + } + } + + public float enemyStaggerRegsitMagnify + { + get + { + return _enemyStaggerRegsitMagnify; + } + set + { + if (_enemyStaggerRegsitMagnify != value) + { + _enemyStaggerRegsitMagnify = value; + GDEDataManager.SetFloat(_key + "_" + enemyStaggerRegsitMagnifyKey, _enemyStaggerRegsitMagnify); + } + } + } + + public float playerRegenDelayMagnify + { + get + { + return _playerRegenDelayMagnify; + } + set + { + if (_playerRegenDelayMagnify != value) + { + _playerRegenDelayMagnify = value; + GDEDataManager.SetFloat(_key + "_" + playerRegenDelayMagnifyKey, _playerRegenDelayMagnify); + } + } + } + + public float friendshipPointMagnify + { + get + { + return _friendshipPointMagnify; + } + set + { + if (_friendshipPointMagnify != value) + { + _friendshipPointMagnify = value; + GDEDataManager.SetFloat(_key + "_" + friendshipPointMagnifyKey, _friendshipPointMagnify); + } + } + } + + public float expMagnify + { + get + { + return _expMagnify; + } + set + { + if (_expMagnify != value) + { + _expMagnify = value; + GDEDataManager.SetFloat(_key + "_" + expMagnifyKey, _expMagnify); + } + } + } + + public GDEConstantTextListData difficultyName + { + get + { + return _difficultyName; + } + set + { + if (_difficultyName != value) + { + _difficultyName = value; + GDEDataManager.SetCustom(_key + "_" + difficultyNameKey, _difficultyName); + } + } + } + + public GDEConstantTextListData description + { + get + { + return _description; + } + set + { + if (_description != value) + { + _description = value; + GDEDataManager.SetCustom(_key + "_" + descriptionKey, _description); + } + } + } + + public GDEDifficultyListData() + { + _key = string.Empty; + } + + public GDEDifficultyListData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetInt(difficultyLevelKey, out _difficultyLevel); + dict.TryGetInt(commonDropRateKey, out _commonDropRate); + dict.TryGetInt(uncommonDropRateKey, out _uncommonDropRate); + dict.TryGetInt(rareDropRateKey, out _rareDropRate); + dict.TryGetInt(legendaryDropRateKey, out _legendaryDropRate); + dict.TryGetInt(epicDropRateKey, out _epicDropRate); + dict.TryGetFloat(enemyCostMagnifyKey, out _enemyCostMagnify); + dict.TryGetFloat(enemyCostCapMagnifyKey, out _enemyCostCapMagnify); + dict.TryGetFloat(enemyDamageMagnifyKey, out _enemyDamageMagnify); + dict.TryGetFloat(enemyHealthMagnifyKey, out _enemyHealthMagnify); + dict.TryGetFloat(enemyStaggerRegsitMagnifyKey, out _enemyStaggerRegsitMagnify); + dict.TryGetFloat(playerRegenDelayMagnifyKey, out _playerRegenDelayMagnify); + dict.TryGetFloat(friendshipPointMagnifyKey, out _friendshipPointMagnify); + dict.TryGetFloat(expMagnifyKey, out _expMagnify); + dict.TryGetString(difficultyNameKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _difficultyName); + dict.TryGetString(descriptionKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _description); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _difficultyLevel = GDEDataManager.GetInt(_key + "_" + difficultyLevelKey, _difficultyLevel); + _commonDropRate = GDEDataManager.GetInt(_key + "_" + commonDropRateKey, _commonDropRate); + _uncommonDropRate = GDEDataManager.GetInt(_key + "_" + uncommonDropRateKey, _uncommonDropRate); + _rareDropRate = GDEDataManager.GetInt(_key + "_" + rareDropRateKey, _rareDropRate); + _legendaryDropRate = GDEDataManager.GetInt(_key + "_" + legendaryDropRateKey, _legendaryDropRate); + _epicDropRate = GDEDataManager.GetInt(_key + "_" + epicDropRateKey, _epicDropRate); + _enemyCostMagnify = GDEDataManager.GetFloat(_key + "_" + enemyCostMagnifyKey, _enemyCostMagnify); + _enemyCostCapMagnify = GDEDataManager.GetFloat(_key + "_" + enemyCostCapMagnifyKey, _enemyCostCapMagnify); + _enemyDamageMagnify = GDEDataManager.GetFloat(_key + "_" + enemyDamageMagnifyKey, _enemyDamageMagnify); + _enemyHealthMagnify = GDEDataManager.GetFloat(_key + "_" + enemyHealthMagnifyKey, _enemyHealthMagnify); + _enemyStaggerRegsitMagnify = GDEDataManager.GetFloat(_key + "_" + enemyStaggerRegsitMagnifyKey, _enemyStaggerRegsitMagnify); + _playerRegenDelayMagnify = GDEDataManager.GetFloat(_key + "_" + playerRegenDelayMagnifyKey, _playerRegenDelayMagnify); + _friendshipPointMagnify = GDEDataManager.GetFloat(_key + "_" + friendshipPointMagnifyKey, _friendshipPointMagnify); + _expMagnify = GDEDataManager.GetFloat(_key + "_" + expMagnifyKey, _expMagnify); + _difficultyName = GDEDataManager.GetCustom(_key + "_" + difficultyNameKey, _difficultyName); + _description = GDEDataManager.GetCustom(_key + "_" + descriptionKey, _description); + } + + public void Reset_difficultyLevel() + { + GDEDataManager.ResetToDefault(_key, difficultyLevelKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(difficultyLevelKey, out _difficultyLevel); + } + + public void Reset_commonDropRate() + { + GDEDataManager.ResetToDefault(_key, commonDropRateKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(commonDropRateKey, out _commonDropRate); + } + + public void Reset_uncommonDropRate() + { + GDEDataManager.ResetToDefault(_key, uncommonDropRateKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(uncommonDropRateKey, out _uncommonDropRate); + } + + public void Reset_rareDropRate() + { + GDEDataManager.ResetToDefault(_key, rareDropRateKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(rareDropRateKey, out _rareDropRate); + } + + public void Reset_legendaryDropRate() + { + GDEDataManager.ResetToDefault(_key, legendaryDropRateKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(legendaryDropRateKey, out _legendaryDropRate); + } + + public void Reset_epicDropRate() + { + GDEDataManager.ResetToDefault(_key, epicDropRateKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(epicDropRateKey, out _epicDropRate); + } + + public void Reset_enemyCostMagnify() + { + GDEDataManager.ResetToDefault(_key, enemyCostMagnifyKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(enemyCostMagnifyKey, out _enemyCostMagnify); + } + + public void Reset_enemyCostCapMagnify() + { + GDEDataManager.ResetToDefault(_key, enemyCostCapMagnifyKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(enemyCostCapMagnifyKey, out _enemyCostCapMagnify); + } + + public void Reset_enemyDamageMagnify() + { + GDEDataManager.ResetToDefault(_key, enemyDamageMagnifyKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(enemyDamageMagnifyKey, out _enemyDamageMagnify); + } + + public void Reset_enemyHealthMagnify() + { + GDEDataManager.ResetToDefault(_key, enemyHealthMagnifyKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(enemyHealthMagnifyKey, out _enemyHealthMagnify); + } + + public void Reset_enemyStaggerRegsitMagnify() + { + GDEDataManager.ResetToDefault(_key, enemyStaggerRegsitMagnifyKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(enemyStaggerRegsitMagnifyKey, out _enemyStaggerRegsitMagnify); + } + + public void Reset_playerRegenDelayMagnify() + { + GDEDataManager.ResetToDefault(_key, playerRegenDelayMagnifyKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(playerRegenDelayMagnifyKey, out _playerRegenDelayMagnify); + } + + public void Reset_friendshipPointMagnify() + { + GDEDataManager.ResetToDefault(_key, friendshipPointMagnifyKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(friendshipPointMagnifyKey, out _friendshipPointMagnify); + } + + public void Reset_expMagnify() + { + GDEDataManager.ResetToDefault(_key, expMagnifyKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(expMagnifyKey, out _expMagnify); + } + + public void Reset_difficultyName() + { + GDEDataManager.ResetToDefault(_key, difficultyNameKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(difficultyNameKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _difficultyName); + difficultyName = GDEDataManager.GetCustom(_key + "_" + difficultyNameKey, _difficultyName); + difficultyName.ResetAll(); + } + + public void Reset_description() + { + GDEDataManager.ResetToDefault(_key, descriptionKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(descriptionKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _description); + description = GDEDataManager.GetCustom(_key + "_" + descriptionKey, _description); + description.ResetAll(); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, difficultyNameKey); + GDEDataManager.ResetToDefault(_key, descriptionKey); + GDEDataManager.ResetToDefault(_key, difficultyLevelKey); + GDEDataManager.ResetToDefault(_key, enemyCostMagnifyKey); + GDEDataManager.ResetToDefault(_key, enemyCostCapMagnifyKey); + GDEDataManager.ResetToDefault(_key, enemyDamageMagnifyKey); + GDEDataManager.ResetToDefault(_key, enemyHealthMagnifyKey); + GDEDataManager.ResetToDefault(_key, enemyStaggerRegsitMagnifyKey); + GDEDataManager.ResetToDefault(_key, playerRegenDelayMagnifyKey); + GDEDataManager.ResetToDefault(_key, friendshipPointMagnifyKey); + GDEDataManager.ResetToDefault(_key, expMagnifyKey); + GDEDataManager.ResetToDefault(_key, commonDropRateKey); + GDEDataManager.ResetToDefault(_key, uncommonDropRateKey); + GDEDataManager.ResetToDefault(_key, rareDropRateKey); + GDEDataManager.ResetToDefault(_key, legendaryDropRateKey); + GDEDataManager.ResetToDefault(_key, epicDropRateKey); + Reset_difficultyName(); + Reset_description(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEEnemyTableData.cs b/Assets/Plugins/GameDataEditor/GDEEnemyTableData.cs new file mode 100644 index 0000000..c19e62a --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEEnemyTableData.cs @@ -0,0 +1,167 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEEnemyTableData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDEEnemyTableData : IGDEData + { + private static string IDKey = "ID"; + + private int _ID; + + private static string CostKey = "Cost"; + + private int _Cost; + + private static string ExpKey = "Exp"; + + private int _Exp; + + private static string NameKey = "Name"; + + private GDEConstantTextListData _Name; + + public int ID + { + get + { + return _ID; + } + set + { + if (_ID != value) + { + _ID = value; + GDEDataManager.SetInt(_key + "_" + IDKey, _ID); + } + } + } + + public int Cost + { + get + { + return _Cost; + } + set + { + if (_Cost != value) + { + _Cost = value; + GDEDataManager.SetInt(_key + "_" + CostKey, _Cost); + } + } + } + + public int Exp + { + get + { + return _Exp; + } + set + { + if (_Exp != value) + { + _Exp = value; + GDEDataManager.SetInt(_key + "_" + ExpKey, _Exp); + } + } + } + + public GDEConstantTextListData Name + { + get + { + return _Name; + } + set + { + if (_Name != value) + { + _Name = value; + GDEDataManager.SetCustom(_key + "_" + NameKey, _Name); + } + } + } + + public GDEEnemyTableData() + { + _key = string.Empty; + } + + public GDEEnemyTableData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetInt(IDKey, out _ID); + dict.TryGetInt(CostKey, out _Cost); + dict.TryGetInt(ExpKey, out _Exp); + dict.TryGetString(NameKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Name); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _ID = GDEDataManager.GetInt(_key + "_" + IDKey, _ID); + _Cost = GDEDataManager.GetInt(_key + "_" + CostKey, _Cost); + _Exp = GDEDataManager.GetInt(_key + "_" + ExpKey, _Exp); + _Name = GDEDataManager.GetCustom(_key + "_" + NameKey, _Name); + } + + public void Reset_ID() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(IDKey, out _ID); + } + + public void Reset_Cost() + { + GDEDataManager.ResetToDefault(_key, CostKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(CostKey, out _Cost); + } + + public void Reset_Exp() + { + GDEDataManager.ResetToDefault(_key, ExpKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(ExpKey, out _Exp); + } + + public void Reset_Name() + { + GDEDataManager.ResetToDefault(_key, NameKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(NameKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Name); + Name = GDEDataManager.GetCustom(_key + "_" + NameKey, _Name); + Name.ResetAll(); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.ResetToDefault(_key, CostKey); + GDEDataManager.ResetToDefault(_key, ExpKey); + GDEDataManager.ResetToDefault(_key, NameKey); + Reset_Name(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEGameCharacterTypeData.cs b/Assets/Plugins/GameDataEditor/GDEGameCharacterTypeData.cs new file mode 100644 index 0000000..b85b37d --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEGameCharacterTypeData.cs @@ -0,0 +1,325 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEGameCharacterTypeData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDEGameCharacterTypeData : IGDEData + { + private static string IsPlayableKey = "IsPlayable"; + + private bool _IsPlayable; + + private static string IDKey = "ID"; + + private int _ID; + + private static string RequiredPlaylerLevelToUnlockKey = "RequiredPlaylerLevelToUnlock"; + + private int _RequiredPlaylerLevelToUnlock; + + private static string ShieldTypeKey = "ShieldType"; + + private string _ShieldType; + + private static string SignatureKey = "Signature"; + + private string _Signature; + + private static string SymbolColorKey = "SymbolColor"; + + private GDESkillUIColorData _SymbolColor; + + private static string CharacterNameKey = "CharacterName"; + + private GDEConstantTextListData _CharacterName; + + private static string CharacterDescriptionKey = "CharacterDescription"; + + private GDEConstantTextListData _CharacterDescription; + + private static string RequiredAchivementToUnlockKey = "RequiredAchivementToUnlock"; + + public List> RequiredAchivementToUnlock; + + public bool IsPlayable + { + get + { + return _IsPlayable; + } + set + { + if (_IsPlayable != value) + { + _IsPlayable = value; + GDEDataManager.SetBool(_key + "_" + IsPlayableKey, _IsPlayable); + } + } + } + + public int ID + { + get + { + return _ID; + } + set + { + if (_ID != value) + { + _ID = value; + GDEDataManager.SetInt(_key + "_" + IDKey, _ID); + } + } + } + + public int RequiredPlaylerLevelToUnlock + { + get + { + return _RequiredPlaylerLevelToUnlock; + } + set + { + if (_RequiredPlaylerLevelToUnlock != value) + { + _RequiredPlaylerLevelToUnlock = value; + GDEDataManager.SetInt(_key + "_" + RequiredPlaylerLevelToUnlockKey, _RequiredPlaylerLevelToUnlock); + } + } + } + + public string ShieldType + { + get + { + return _ShieldType; + } + set + { + if (_ShieldType != value) + { + _ShieldType = value; + GDEDataManager.SetString(_key + "_" + ShieldTypeKey, _ShieldType); + } + } + } + + public string Signature + { + get + { + return _Signature; + } + set + { + if (_Signature != value) + { + _Signature = value; + GDEDataManager.SetString(_key + "_" + SignatureKey, _Signature); + } + } + } + + public GDESkillUIColorData SymbolColor + { + get + { + return _SymbolColor; + } + set + { + if (_SymbolColor != value) + { + _SymbolColor = value; + GDEDataManager.SetCustom(_key + "_" + SymbolColorKey, _SymbolColor); + } + } + } + + public GDEConstantTextListData CharacterName + { + get + { + return _CharacterName; + } + set + { + if (_CharacterName != value) + { + _CharacterName = value; + GDEDataManager.SetCustom(_key + "_" + CharacterNameKey, _CharacterName); + } + } + } + + public GDEConstantTextListData CharacterDescription + { + get + { + return _CharacterDescription; + } + set + { + if (_CharacterDescription != value) + { + _CharacterDescription = value; + GDEDataManager.SetCustom(_key + "_" + CharacterDescriptionKey, _CharacterDescription); + } + } + } + + public GDEGameCharacterTypeData() + { + _key = string.Empty; + } + + public GDEGameCharacterTypeData(string key) + { + _key = key; + } + + public void Set_RequiredAchivementToUnlock() + { + GDEDataManager.SetCustomTwoDList(_key + "_" + RequiredAchivementToUnlockKey, RequiredAchivementToUnlock); + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetBool(IsPlayableKey, out _IsPlayable); + dict.TryGetInt(IDKey, out _ID); + dict.TryGetInt(RequiredPlaylerLevelToUnlockKey, out _RequiredPlaylerLevelToUnlock); + dict.TryGetString(ShieldTypeKey, out _ShieldType); + dict.TryGetString(SignatureKey, out _Signature); + dict.TryGetString(SymbolColorKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _SymbolColor); + dict.TryGetString(CharacterNameKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _CharacterName); + dict.TryGetString(CharacterDescriptionKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _CharacterDescription); + dict.TryGetCustomTwoDList(RequiredAchivementToUnlockKey, out RequiredAchivementToUnlock); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _IsPlayable = GDEDataManager.GetBool(_key + "_" + IsPlayableKey, _IsPlayable); + _ID = GDEDataManager.GetInt(_key + "_" + IDKey, _ID); + _RequiredPlaylerLevelToUnlock = GDEDataManager.GetInt(_key + "_" + RequiredPlaylerLevelToUnlockKey, _RequiredPlaylerLevelToUnlock); + _ShieldType = GDEDataManager.GetString(_key + "_" + ShieldTypeKey, _ShieldType); + _Signature = GDEDataManager.GetString(_key + "_" + SignatureKey, _Signature); + _SymbolColor = GDEDataManager.GetCustom(_key + "_" + SymbolColorKey, _SymbolColor); + _CharacterName = GDEDataManager.GetCustom(_key + "_" + CharacterNameKey, _CharacterName); + _CharacterDescription = GDEDataManager.GetCustom(_key + "_" + CharacterDescriptionKey, _CharacterDescription); + RequiredAchivementToUnlock = GDEDataManager.GetCustomTwoDList(_key + "_" + RequiredAchivementToUnlockKey, RequiredAchivementToUnlock); + } + + public void Reset_IsPlayable() + { + GDEDataManager.ResetToDefault(_key, IsPlayableKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBool(IsPlayableKey, out _IsPlayable); + } + + public void Reset_ID() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(IDKey, out _ID); + } + + public void Reset_RequiredPlaylerLevelToUnlock() + { + GDEDataManager.ResetToDefault(_key, RequiredPlaylerLevelToUnlockKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(RequiredPlaylerLevelToUnlockKey, out _RequiredPlaylerLevelToUnlock); + } + + public void Reset_ShieldType() + { + GDEDataManager.ResetToDefault(_key, ShieldTypeKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(ShieldTypeKey, out _ShieldType); + } + + public void Reset_Signature() + { + GDEDataManager.ResetToDefault(_key, SignatureKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(SignatureKey, out _Signature); + } + + public void Reset_SymbolColor() + { + GDEDataManager.ResetToDefault(_key, SymbolColorKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(SymbolColorKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _SymbolColor); + SymbolColor = GDEDataManager.GetCustom(_key + "_" + SymbolColorKey, _SymbolColor); + SymbolColor.ResetAll(); + } + + public void Reset_CharacterName() + { + GDEDataManager.ResetToDefault(_key, CharacterNameKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(CharacterNameKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _CharacterName); + CharacterName = GDEDataManager.GetCustom(_key + "_" + CharacterNameKey, _CharacterName); + CharacterName.ResetAll(); + } + + public void Reset_CharacterDescription() + { + GDEDataManager.ResetToDefault(_key, CharacterDescriptionKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(CharacterDescriptionKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _CharacterDescription); + CharacterDescription = GDEDataManager.GetCustom(_key + "_" + CharacterDescriptionKey, _CharacterDescription); + CharacterDescription.ResetAll(); + } + + public void Reset_RequiredAchivementToUnlock() + { + GDEDataManager.ResetToDefault(_key, RequiredAchivementToUnlockKey); + GDEDataManager.Get(_key, out var data); + data.TryGetCustomTwoDList(RequiredAchivementToUnlockKey, out RequiredAchivementToUnlock); + RequiredAchivementToUnlock = GDEDataManager.GetCustomTwoDList(_key + "_" + RequiredAchivementToUnlockKey, RequiredAchivementToUnlock); + RequiredAchivementToUnlock.ForEach(delegate(List x) + { + x.ForEach(delegate(GDEAchievementData y) + { + y.ResetAll(); + }); + }); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.ResetToDefault(_key, SymbolColorKey); + GDEDataManager.ResetToDefault(_key, IsPlayableKey); + GDEDataManager.ResetToDefault(_key, ShieldTypeKey); + GDEDataManager.ResetToDefault(_key, CharacterNameKey); + GDEDataManager.ResetToDefault(_key, CharacterDescriptionKey); + GDEDataManager.ResetToDefault(_key, RequiredPlaylerLevelToUnlockKey); + GDEDataManager.ResetToDefault(_key, RequiredAchivementToUnlockKey); + GDEDataManager.ResetToDefault(_key, SignatureKey); + Reset_SymbolColor(); + Reset_CharacterName(); + Reset_CharacterDescription(); + Reset_RequiredAchivementToUnlock(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEItemKeys.cs b/Assets/Plugins/GameDataEditor/GDEItemKeys.cs new file mode 100644 index 0000000..983733e --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEItemKeys.cs @@ -0,0 +1,1496 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEItemKeys + +namespace GameDataEditor +{ + public class GDEItemKeys + { + public static string ConstantTextList_FONT = "FONT"; + + public static string ConstantTextList_FONT_SIZE_RATE = "FONT_SIZE_RATE"; + + public static string ConstantTextList_GUI_COMMON_PLACEHOLDER = "GUI_COMMON_PLACEHOLDER"; + + public static string ConstantTextList_GUI_COMMON_OK = "GUI_COMMON_OK"; + + public static string ConstantTextList_GUI_COMMON_CANCEL = "GUI_COMMON_CANCEL"; + + public static string ConstantTextList_GUI_COMMON_CONFIRM = "GUI_COMMON_CONFIRM"; + + public static string ConstantTextList_GUI_COMMON_CONNECTING = "GUI_COMMON_CONNECTING"; + + public static string ConstantTextList_GUI_COMMON_BACK = "GUI_COMMON_BACK"; + + public static string ConstantTextList_TITLE_AUTH_HEADER = "TITLE_AUTH_HEADER"; + + public static string ConstantTextList_TITLE_AUTH_BUTTON = "TITLE_AUTH_BUTTON"; + + public static string ConstantTextList_TITLE_AUTH_LOGIN_MENU = "TITLE_AUTH_LOGIN_MENU"; + + public static string ConstantTextList_TITLE_AUTH_LOGIN_USER_NAME = "TITLE_AUTH_LOGIN_USER_NAME"; + + public static string ConstantTextList_TITLE_AUTH_LOGIN_PASSWORD = "TITLE_AUTH_LOGIN_PASSWORD"; + + public static string ConstantTextList_TITLE_AUTH_REMEMBER_ME = "TITLE_AUTH_REMEMBER_ME"; + + public static string ConstantTextList_TITLE_AUTH_FAILED = "TITLE_AUTH_FAILED"; + + public static string ConstantTextList_TITLE_AUTH_OFFLINE_MODE = "TITLE_AUTH_OFFLINE_MODE"; + + public static string ConstantTextList_TITLE_AUTH_REGION = "TITLE_AUTH_REGION"; + + public static string ConstantTextList_PLAYER_WINDOW_LV_TEXT = "PLAYER_WINDOW_LV_TEXT"; + + public static string ConstantTextList_LOBBY_CREATE_MATCH = "LOBBY_CREATE_MATCH"; + + public static string ConstantTextList_LOBBY_QUICK_MATCH = "LOBBY_QUICK_MATCH"; + + public static string ConstantTextList_LOBBY_PRIVATE_MATCH = "LOBBY_PRIVATE_MATCH"; + + public static string ConstantTextList_LOBBY_OPTION = "LOBBY_OPTION"; + + public static string ConstantTextList_LOBBY_CHOOSE_CHARACTER = "LOBBY_CHOOSE_CHARACTER"; + + public static string ConstantTextList_LOBBY_CHOOSE_CHARACTER_1P = "LOBBY_CHOOSE_CHARACTER_1P"; + + public static string ConstantTextList_LOBBY_CHOOSE_CHARACTER_2P = "LOBBY_CHOOSE_CHARACTER_2P"; + + public static string ConstantTextList_LOBBY_CHOOSE_CHARACTER_NOT_EXIST = "LOBBY_CHOOSE_CHARACTER_NOT_EXIST"; + + public static string ConstantTextList_LOBBY_ENTER_YOUR_NAME = "LOBBY_ENTER_YOUR_NAME"; + + public static string ConstantTextList_LOBBY_OK_BUTTON = "LOBBY_OK_BUTTON"; + + public static string ConstantTextList_LOBBY_CHOOSE_DIFFICULTY = "LOBBY_CHOOSE_DIFFICULTY"; + + public static string ConstantTextList_LOBBY_DIFFICULTY_LABEL = "LOBBY_DIFFICULTY_LABEL"; + + public static string ConstantTextList_LOBBY_CHOOSE_ENEMY_TYPE = "LOBBY_CHOOSE_ENEMY_TYPE"; + + public static string ConstantTextList_LOBBY_ENEMY_TYPE_LABEL = "LOBBY_ENEMY_TYPE_LABEL"; + + public static string ConstantTextList_LOBBY_CHOOSE_MAP = "LOBBY_CHOOSE_MAP"; + + public static string ConstantTextList_LOBBY_MAP_LABEL = "LOBBY_MAP_LABEL"; + + public static string ConstantTextList_LOBBY_PRIVACY_SETTING = "LOBBY_PRIVACY_SETTING"; + + public static string ConstantTextList_LOBBY_PRIVACY_SETTING_LABEL = "LOBBY_PRIVACY_SETTING_LABEL"; + + public static string ConstantTextList_LOBBY_ROOM_PASSWORD = "LOBBY_ROOM_PASSWORD"; + + public static string ConstantTextList_LOBBY_GO_TO_GAME_INFROMATION = "LOBBY_GO_TO_GAME_INFROMATION"; + + public static string ConstantTextList_LOBBY_BACK_TO_MENU = "LOBBY_BACK_TO_MENU"; + + public static string ConstantTextList_LOBBY_COUNTDOWN_TO_GO = "LOBBY_COUNTDOWN_TO_GO"; + + public static string ConstantTextList_LOBBY_COUNTDOWN_TO_BACK = "LOBBY_COUNTDOWN_TO_BACK"; + + public static string ConstantTextList_LOBBY_WAITING_FOR_CREATE_ROOM = "LOBBY_WAITING_FOR_CREATE_ROOM"; + + public static string ConstantTextList_LOBBY_WAITING_FOR_MATCH = "LOBBY_WAITING_FOR_MATCH"; + + public static string ConstantTextList_LOBBY_PRIVATE_MATCH_INFORMATION = "LOBBY_PRIVATE_MATCH_INFORMATION"; + + public static string ConstantTextList_LOBBY_WAITING_FOR_PRIVATE_MATCH = "LOBBY_WAITING_FOR_PRIVATE_MATCH"; + + public static string ConstantTextList_LOBBY_ERROR_MISSING_NETWORK_CONNNECTION = "LOBBY_ERROR_MISSING_NETWORK_CONNNECTION"; + + public static string ConstantTextList_LOBBY_ERROR_FAILD_TO_CREATE_ROOM = "LOBBY_ERROR_FAILD_TO_CREATE_ROOM"; + + public static string ConstantTextList_LOBBY_ERROR_FAILD_TO_JOIN_ROOM = "LOBBY_ERROR_FAILD_TO_JOIN_ROOM"; + + public static string ConstantTextList_LOBBY_ERROR_TITLE_ANY_NETWORK = "LOBBY_ERROR_TITLE_ANY_NETWORK"; + + public static string ConstantTextList_LOBBY_INFORMATION_TITLE_ANY_NETWORK = "LOBBY_INFORMATION_TITLE_ANY_NETWORK"; + + public static string ConstantTextList_OPTION_MENU_TITLE = "OPTION_MENU_TITLE"; + + public static string ConstantTextList_OPTION_MENU_CATEGORY_GRAPHICS = "OPTION_MENU_CATEGORY_GRAPHICS"; + + public static string ConstantTextList_OPTION_MENU_SCREEN_RESOLUTION = "OPTION_MENU_SCREEN_RESOLUTION"; + + public static string ConstantTextList_OPTION_MENU_FULL_SCREEN = "OPTION_MENU_FULL_SCREEN"; + + public static string ConstantTextList_OPTION_MENU_CATEGORY_ACCESSIBILITY = "OPTION_MENU_CATEGORY_ACCESSIBILITY"; + + public static string ConstantTextList_OPTION_MENU_LANGUAGE = "OPTION_MENU_LANGUAGE"; + + public static string ConstantTextList_OPTION_MENU_QUALITY = "OPTION_MENU_QUALITY"; + + public static string ConstantTextList_OPTION_MENU_QUALITY_RESTART_REQUIRED = "OPTION_MENU_QUALITY_RESTART_REQUIRED"; + + public static string ConstantTextList_OPTION_MENU_QUALITY_0 = "OPTION_MENU_QUALITY_0"; + + public static string ConstantTextList_OPTION_MENU_QUALITY_1 = "OPTION_MENU_QUALITY_1"; + + public static string ConstantTextList_OPTION_MENU_QUALITY_2 = "OPTION_MENU_QUALITY_2"; + + public static string ConstantTextList_OPTION_MENU_QUALITY_3 = "OPTION_MENU_QUALITY_3"; + + public static string ConstantTextList_OPTION_MENU_DIFFICULTY = "OPTION_MENU_DIFFICULTY"; + + public static string ConstantTextList_OPTION_MENU_CURRENT_DIFFICULTY = "OPTION_MENU_CURRENT_DIFFICULTY"; + + public static string ConstantTextList_OPTION_RESTART_REQUIRED = "OPTION_RESTART_REQUIRED"; + + public static string ConstantTextList_OPTION_KEYCONFIG = "OPTION_KEYCONFIG"; + + public static string ConstantTextList_OPTION_KEYCONFIG_BUTTON = "OPTION_KEYCONFIG_BUTTON"; + + public static string ConstantTextList_ENEMY_TYPE_INSECT = "ENEMY_TYPE_INSECT"; + + public static string ConstantTextList_ENEMY_TYPE_SHADOW_PONY = "ENEMY_TYPE_SHADOW_PONY"; + + public static string ConstantTextList_DIFFICULTY_EASY = "DIFFICULTY_EASY"; + + public static string ConstantTextList_DIFFICULTY_NORMAL = "DIFFICULTY_NORMAL"; + + public static string ConstantTextList_DIFFICULTY_HARD = "DIFFICULTY_HARD"; + + public static string ConstantTextList_DIFFICULTY_VERY_HARD = "DIFFICULTY_VERY_HARD"; + + public static string ConstantTextList_DIFFICULTY_NIGHTMARE = "DIFFICULTY_NIGHTMARE"; + + public static string ConstantTextList_DIFFICULTY_CHAOS = "DIFFICULTY_CHAOS"; + + public static string ConstantTextList_DIFFICULTY_DESC_EASY = "DIFFICULTY_DESC_EASY"; + + public static string ConstantTextList_DIFFICULTY_DESC_NORMAL = "DIFFICULTY_DESC_NORMAL"; + + public static string ConstantTextList_DIFFICULTY_DESC_HARD = "DIFFICULTY_DESC_HARD"; + + public static string ConstantTextList_DIFFICULTY_DESC_VERY_HARD = "DIFFICULTY_DESC_VERY_HARD"; + + public static string ConstantTextList_DIFFICULTY_DESC_NIGHTMARE = "DIFFICULTY_DESC_NIGHTMARE"; + + public static string ConstantTextList_DIFFICULTY_DESC_CHAOS = "DIFFICULTY_DESC_CHAOS"; + + public static string ConstantTextList_MAP_NAME_THE_OLD_CASTLE = "MAP_NAME_THE_OLD_CASTLE"; + + public static string ConstantTextList_MAP_NAME_THE_CRYSTAL_EMPIRE = "MAP_NAME_THE_CRYSTAL_EMPIRE"; + + public static string ConstantTextList_MAP_NAME_THE_MOON = "MAP_NAME_THE_MOON"; + + public static string ConstantTextList_ELEMENT_NAME_MAGIC = "ELEMENT_NAME_MAGIC"; + + public static string ConstantTextList_ELEMENT_NAME_PONICO = "ELEMENT_NAME_PONICO"; + + public static string ConstantTextList_ELEMENT_NAME_KINDNESS = "ELEMENT_NAME_KINDNESS"; + + public static string ConstantTextList_ELEMENT_NAME_LAUGHTER = "ELEMENT_NAME_LAUGHTER"; + + public static string ConstantTextList_ELEMENT_NAME_LOYALTY = "ELEMENT_NAME_LOYALTY"; + + public static string ConstantTextList_ELEMENT_NAME_GENEROSITY = "ELEMENT_NAME_GENEROSITY"; + + public static string ConstantTextList_ELEMENT_NAME_HONESTY = "ELEMENT_NAME_HONESTY"; + + public static string ConstantTextList_ELEMENT_NAME_MAGIC_SIMPLE = "ELEMENT_NAME_MAGIC_SIMPLE"; + + public static string ConstantTextList_ELEMENT_NAME_PONICO_SIMPLE = "ELEMENT_NAME_PONICO_SIMPLE"; + + public static string ConstantTextList_ELEMENT_NAME_KINDNESS_SIMPLE = "ELEMENT_NAME_KINDNESS_SIMPLE"; + + public static string ConstantTextList_ELEMENT_NAME_LAUGHTER_SIMPLE = "ELEMENT_NAME_LAUGHTER_SIMPLE"; + + public static string ConstantTextList_ELEMENT_NAME_LOYALTY_SIMPLE = "ELEMENT_NAME_LOYALTY_SIMPLE"; + + public static string ConstantTextList_ELEMENT_NAME_GENEROSITY_SIMPLE = "ELEMENT_NAME_GENEROSITY_SIMPLE"; + + public static string ConstantTextList_ELEMENT_NAME_HONESTY_SIMPLE = "ELEMENT_NAME_HONESTY_SIMPLE"; + + public static string ConstantTextList_ENEMY_NAME_CHANGELING = "ENEMY_NAME_CHANGELING"; + + public static string ConstantTextList_ENEMY_NAME_FLIGHTLING = "ENEMY_NAME_FLIGHTLING"; + + public static string ConstantTextList_ENEMY_NAME_CHANGELING_ALPHA = "ENEMY_NAME_CHANGELING_ALPHA"; + + public static string ConstantTextList_ENEMY_NAME_THE_QUEEN_OF_INSECTS = "ENEMY_NAME_THE_QUEEN_OF_INSECTS"; + + public static string ConstantTextList_ENEMY_NAME_THE_CRYSTAL_TYRANT = "ENEMY_NAME_THE_CRYSTAL_TYRANT"; + + public static string ConstantTextList_ENEMY_NAME_THE_NIGHTMARE = "ENEMY_NAME_THE_NIGHTMARE"; + + public static string ConstantTextList_KEYMAP_DESCRIPTION = "KEYMAP_DESCRIPTION"; + + public static string ConstantTextList_SELF_REVIVE_DESCRIPTION = "SELF_REVIVE_DESCRIPTION"; + + public static string ConstantTextList_REVIVE_DESCRIPTION = "REVIVE_DESCRIPTION"; + + public static string ConstantTextList_SELF_REVIVE_DESCRIPTION_DISABLE = "SELF_REVIVE_DESCRIPTION_DISABLE"; + + public static string ConstantTextList_REVIVE_DESCRIPTION_DISABLE = "REVIVE_DESCRIPTION_DISABLE"; + + public static string ConstantTextList_LOBBY_DISCRIPTION = "LOBBY_DISCRIPTION"; + + public static string ConstantTextList_ACTIVITY_TITLE_ARE_YOU_READY = "ACTIVITY_TITLE_ARE_YOU_READY"; + + public static string ConstantTextList_ACTIVITY_TITLE_LOBBY_INFO = "ACTIVITY_TITLE_LOBBY_INFO"; + + public static string ConstantTextList_ACTIVITY_TITLE_KEY_MAP = "ACTIVITY_TITLE_KEY_MAP"; + + public static string ConstantTextList_ACTIVITY_TITLE_RETURNING_PORTAL_INFO = "ACTIVITY_TITLE_RETURNING_PORTAL_INFO"; + + public static string ConstantTextList_ACTIVITY_TITLE_DEPATURE_PORTAL_INFO = "ACTIVITY_TITLE_DEPATURE_PORTAL_INFO"; + + public static string ConstantTextList_ACTIVITY_TITLE_OBJECTIVE_SURVIVAL = "ACTIVITY_TITLE_OBJECTIVE_SURVIVAL"; + + public static string ConstantTextList_ACTIVITY_TITLE_ANYONE_DEFEATED = "ACTIVITY_TITLE_ANYONE_DEFEATED"; + + public static string ConstantTextList_ACTIVITY_TITLE_MYSELF_DEFEATED = "ACTIVITY_TITLE_MYSELF_DEFEATED"; + + public static string ConstantTextList_ACTIVITY_TITLE_FRIENDSHIP_POINT_INFO = "ACTIVITY_TITLE_FRIENDSHIP_POINT_INFO"; + + public static string ConstantTextList_ACTIVITY_TITLE_CURRENT_WAVE_COMPLETED = "ACTIVITY_TITLE_CURRENT_WAVE_COMPLETED"; + + public static string ConstantTextList_ACTIVITY_TITLE_ALL_WAVES_COMPLETED = "ACTIVITY_TITLE_ALL_WAVES_COMPLETED"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_MAGIC_DESCRIPTION = "ACTIVITY_TITLE_ELE_MAGIC_DESCRIPTION"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_MAGIC_EVADE = "ACTIVITY_TITLE_ELE_MAGIC_EVADE"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_MAGIC_BASE_ATTACK = "ACTIVITY_TITLE_ELE_MAGIC_BASE_ATTACK"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_MAGIC_ABILITY_1 = "ACTIVITY_TITLE_ELE_MAGIC_ABILITY_1"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_MAGIC_ABILITY_2 = "ACTIVITY_TITLE_ELE_MAGIC_ABILITY_2"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_MAGIC_ABILITY_3 = "ACTIVITY_TITLE_ELE_MAGIC_ABILITY_3"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_HONESTY_DESCRIPTION = "ACTIVITY_TITLE_ELE_HONESTY_DESCRIPTION"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_HONESTY_EVADE = "ACTIVITY_TITLE_ELE_HONESTY_EVADE"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_HONESTY_BASE_ATTACK = "ACTIVITY_TITLE_ELE_HONESTY_BASE_ATTACK"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_HONESTY_ABILITY_1 = "ACTIVITY_TITLE_ELE_HONESTY_ABILITY_1"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_HONESTY_ABILITY_2 = "ACTIVITY_TITLE_ELE_HONESTY_ABILITY_2"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_HONESTY_ABILITY_3 = "ACTIVITY_TITLE_ELE_HONESTY_ABILITY_3"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_LOYALTY_DESCRIPTION = "ACTIVITY_TITLE_ELE_LOYALTY_DESCRIPTION"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_LOYALTY_EVADE = "ACTIVITY_TITLE_ELE_LOYALTY_EVADE"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_LOYALTY_BASE_ATTACK = "ACTIVITY_TITLE_ELE_LOYALTY_BASE_ATTACK"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_LOYALTY_ABILITY_1 = "ACTIVITY_TITLE_ELE_LOYALTY_ABILITY_1"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_LOYALTY_ABILITY_2 = "ACTIVITY_TITLE_ELE_LOYALTY_ABILITY_2"; + + public static string ConstantTextList_ACTIVITY_TITLE_ELE_LOYALTY_ABILITY_3 = "ACTIVITY_TITLE_ELE_LOYALTY_ABILITY_3"; + + public static string ConstantTextList_ACTIVITY_TITLE_RISING_SIUN_DESCRIPTION = "ACTIVITY_TITLE_RISING_SIUN_DESCRIPTION"; + + public static string ConstantTextList_ACTIVITY_TITLE_RISING_SUN_EVADE = "ACTIVITY_TITLE_RISING_SUN_EVADE"; + + public static string ConstantTextList_ACTIVITY_TITLE_RISING_SUN_BASE_ATTACK = "ACTIVITY_TITLE_RISING_SUN_BASE_ATTACK"; + + public static string ConstantTextList_ACTIVITY_TITLE_RISING_SUN_ABILITY_1 = "ACTIVITY_TITLE_RISING_SUN_ABILITY_1"; + + public static string ConstantTextList_ACTIVITY_TITLE_RISING_SUN_ABILITY_2 = "ACTIVITY_TITLE_RISING_SUN_ABILITY_2"; + + public static string ConstantTextList_ACTIVITY_TITLE_RISING_SUN_ABILITY_3 = "ACTIVITY_TITLE_RISING_SUN_ABILITY_3"; + + public static string ConstantTextList_INGAME_GAMEOVER_SCREEN_CAPTION = "INGAME_GAMEOVER_SCREEN_CAPTION"; + + public static string ConstantTextList_INGAME_GAMEOVER_SCREEN_PENALTY_DESCRIPTION = "INGAME_GAMEOVER_SCREEN_PENALTY_DESCRIPTION"; + + public static string ConstantTextList_INGAME_GAMEOVER_SCREEN_BUTTON_RETRY = "INGAME_GAMEOVER_SCREEN_BUTTON_RETRY"; + + public static string ConstantTextList_INGAME_GAMEOVER_SCREEN_BUTTON_QUIT = "INGAME_GAMEOVER_SCREEN_BUTTON_QUIT"; + + public static string ConstantTextList_INGAME_GAMEOVER_WAITING_HOST = "INGAME_GAMEOVER_WAITING_HOST"; + + public static string ConstantTextList_ACTIVITY_NOTE_SUCCEED_TO_CONNECT_MASTER_SERVER = "ACTIVITY_NOTE_SUCCEED_TO_CONNECT_MASTER_SERVER"; + + public static string ConstantTextList_ACTIVITY_NOTE_BOOT_IN_OFFLINE_MODE = "ACTIVITY_NOTE_BOOT_IN_OFFLINE_MODE"; + + public static string ConstantTextList_ACTIVITY_NOTE_ARE_YOU_READY = "ACTIVITY_NOTE_ARE_YOU_READY"; + + public static string ConstantTextList_ACTIVITY_NOTE_LOBBY_INFO = "ACTIVITY_NOTE_LOBBY_INFO"; + + public static string ConstantTextList_ACTIVITY_NOTE_RETURNING_PORTAL_INFO = "ACTIVITY_NOTE_RETURNING_PORTAL_INFO"; + + public static string ConstantTextList_ACTIVITY_NOTE_DEPATURE_PORTAL_INFO = "ACTIVITY_NOTE_DEPATURE_PORTAL_INFO"; + + public static string ConstantTextList_ACTIVITY_NOTE_KEY_MAP = "ACTIVITY_NOTE_KEY_MAP"; + + public static string ConstantTextList_ACTIVITY_NOTE_OBJECTIVE_SURVIVAL = "ACTIVITY_NOTE_OBJECTIVE_SURVIVAL"; + + public static string ConstantTextList_ACTIVITY_NOTE_ANYONE_DEFEATED = "ACTIVITY_NOTE_ANYONE_DEFEATED"; + + public static string ConstantTextList_ACTIVITY_NOTE_MYSELF_DEFEATED = "ACTIVITY_NOTE_MYSELF_DEFEATED"; + + public static string ConstantTextList_ACTIVITY_NOTE_FRIENDSHIP_POINT_INFO = "ACTIVITY_NOTE_FRIENDSHIP_POINT_INFO"; + + public static string ConstantTextList_ACTIVITY_NOTE_NEXT_WAVE = "ACTIVITY_NOTE_NEXT_WAVE"; + + public static string ConstantTextList_ACTIVITY_NOTE_ALL_WAVES_COMPLETED = "ACTIVITY_NOTE_ALL_WAVES_COMPLETED"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_MAGIC_DESCRIPTION = "ACTIVITY_NOTE_ELE_MAGIC_DESCRIPTION"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_MAGIC_EVADE = "ACTIVITY_NOTE_ELE_MAGIC_EVADE"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_MAGIC_BASE_ATTACK = "ACTIVITY_NOTE_ELE_MAGIC_BASE_ATTACK"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_MAGIC_ABILITY_1 = "ACTIVITY_NOTE_ELE_MAGIC_ABILITY_1"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_MAGIC_ABILITY_2 = "ACTIVITY_NOTE_ELE_MAGIC_ABILITY_2"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_MAGIC_ABILITY_3 = "ACTIVITY_NOTE_ELE_MAGIC_ABILITY_3"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_HONESTY_DESCRIPTION = "ACTIVITY_NOTE_ELE_HONESTY_DESCRIPTION"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_HONESTY_EVADE = "ACTIVITY_NOTE_ELE_HONESTY_EVADE"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_HONESTY_BASE_ATTACK = "ACTIVITY_NOTE_ELE_HONESTY_BASE_ATTACK"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_HONESTY_ABILITY_1 = "ACTIVITY_NOTE_ELE_HONESTY_ABILITY_1"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_HONESTY_ABILITY_2 = "ACTIVITY_NOTE_ELE_HONESTY_ABILITY_2"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_HONESTY_ABILITY_3 = "ACTIVITY_NOTE_ELE_HONESTY_ABILITY_3"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_LOYALTY_DESCRIPTION = "ACTIVITY_NOTE_ELE_LOYALTY_DESCRIPTION"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_LOYALTY_EVADE = "ACTIVITY_NOTE_ELE_LOYALTY_EVADE"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_LOYALTY_BASE_ATTACK = "ACTIVITY_NOTE_ELE_LOYALTY_BASE_ATTACK"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_LOYALTY_ABILITY_1 = "ACTIVITY_NOTE_ELE_LOYALTY_ABILITY_1"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_LOYALTY_ABILITY_2 = "ACTIVITY_NOTE_ELE_LOYALTY_ABILITY_2"; + + public static string ConstantTextList_ACTIVITY_NOTE_ELE_LOYALTY_ABILITY_3 = "ACTIVITY_NOTE_ELE_LOYALTY_ABILITY_3"; + + public static string ConstantTextList_ACTIVITY_NOTE_RISING_SUN_DESCRIPTION = "ACTIVITY_NOTE_RISING_SUN_DESCRIPTION"; + + public static string ConstantTextList_ACTIVITY_NOTE_RISING_SUN_EVADE = "ACTIVITY_NOTE_RISING_SUN_EVADE"; + + public static string ConstantTextList_ACTIVITY_NOTE_RISING_SUN_BASE_ATTACK = "ACTIVITY_NOTE_RISING_SUN_BASE_ATTACK"; + + public static string ConstantTextList_ACTIVITY_NOTE_RISING_SUN_ABILITY_1 = "ACTIVITY_NOTE_RISING_SUN_ABILITY_1"; + + public static string ConstantTextList_ACTIVITY_NOTE_RISING_SUN_ABILITY_2 = "ACTIVITY_NOTE_RISING_SUN_ABILITY_2"; + + public static string ConstantTextList_ACTIVITY_NOTE_RISING_SUN_ABILITY_3 = "ACTIVITY_NOTE_RISING_SUN_ABILITY_3"; + + public static string ConstantTextList_SKILL_TREE_LEVEL_LABEL = "SKILL_TREE_LEVEL_LABEL"; + + public static string ConstantTextList_SKILL_TREE_SKILL_POINTS_LABEL = "SKILL_TREE_SKILL_POINTS_LABEL"; + + public static string ConstantTextList_SKILL_TREE_SKILL_LEVEL_GUIDE_LABEL = "SKILL_TREE_SKILL_LEVEL_GUIDE_LABEL"; + + public static string ConstantTextList_SKILL_TREE_REQUIRE_COST_LABLEL = "SKILL_TREE_REQUIRE_COST_LABLEL"; + + public static string ConstantTextList_SKILL_TREE_REQUIRE_UNLOCK_LABLEL = "SKILL_TREE_REQUIRE_UNLOCK_LABLEL"; + + public static string ConstantTextList_SKILL_TREE_CONFIRMATION_OF_UNLOCKING_TITLE = "SKILL_TREE_CONFIRMATION_OF_UNLOCKING_TITLE"; + + public static string ConstantTextList_SKILL_TREE_HEADER_TITLE = "SKILL_TREE_HEADER_TITLE"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_SPARKLY_CANNON = "SKILL_TREE_GROUP_NAME_SPARKLY_CANNON"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_SUMMON_ARROW = "SKILL_TREE_GROUP_NAME_SUMMON_ARROW"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_MAGIC_BUBBLE = "SKILL_TREE_GROUP_NAME_MAGIC_BUBBLE"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_DEFENSIVE_MAGICOLOGY = "SKILL_TREE_GROUP_NAME_DEFENSIVE_MAGICOLOGY"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_OFFENSIVE_MAGICOLOGY = "SKILL_TREE_GROUP_NAME_OFFENSIVE_MAGICOLOGY"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_TRICKY_ROPE = "SKILL_TREE_GROUP_NAME_TRICKY_ROPE"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_B_K_STOMP = "SKILL_TREE_GROUP_NAME_B_K_STOMP"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_YEEHAW = "SKILL_TREE_GROUP_NAME_YEEHAW"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_TOUGHNESS = "SKILL_TREE_GROUP_NAME_TOUGHNESS"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_KICKER_TRAINING = "SKILL_TREE_GROUP_NAME_KICKER_TRAINING"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_DOUBLE_PAYBACK = "SKILL_TREE_GROUP_NAME_DOUBLE_PAYBACK"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_RAINBLOW = "SKILL_TREE_GROUP_NAME_RAINBLOW"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_OMNISMASH = "SKILL_TREE_GROUP_NAME_OMNISMASH"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_E_U_P_TRAINING = "SKILL_TREE_GROUP_NAME_E_U_P_TRAINING"; + + public static string ConstantTextList_SKILL_TREE_GROUP_NAME_MARTIAL_ARTS = "SKILL_TREE_GROUP_NAME_MARTIAL_ARTS"; + + public static string ConstantTextList_HEALTH_ATTRIBUTE_HEALTH = "HEALTH_ATTRIBUTE_HEALTH"; + + public static string ConstantTextList_HEALTH_ATTRIBUTE_MAGIC_POWER = "HEALTH_ATTRIBUTE_MAGIC_POWER"; + + public static string ConstantTextList_HEALTH_ATTRIBUTE_EARTH_POWER = "HEALTH_ATTRIBUTE_EARTH_POWER"; + + public static string ConstantTextList_HEALTH_ATTRIBUTE_WING_POWER = "HEALTH_ATTRIBUTE_WING_POWER"; + + public static string ConstantTextList_HEALTH_AND_SHIELD = "HEALTH_AND_SHIELD"; + + public static string ConstantTextList_ABILITY_NAME_COMMON_BASE_ATTACK = "ABILITY_NAME_COMMON_BASE_ATTACK"; + + public static string ConstantTextList_ABILITY_NAME_SPARKLY_CANNON = "ABILITY_NAME_SPARKLY_CANNON"; + + public static string ConstantTextList_ABILITY_NAME_SUMMON_ARROW = "ABILITY_NAME_SUMMON_ARROW"; + + public static string ConstantTextList_ABILITY_NAME_MAGIC_BUBBLE = "ABILITY_NAME_MAGIC_BUBBLE"; + + public static string ConstantTextList_ABILITY_NAME_TRICKY_ROPE = "ABILITY_NAME_TRICKY_ROPE"; + + public static string ConstantTextList_ABILITY_NAME_B_K_STOMP = "ABILITY_NAME_B_K_STOMP"; + + public static string ConstantTextList_ABILITY_NAME_YEEHAW = "ABILITY_NAME_YEEHAW"; + + public static string ConstantTextList_ABILITY_NAME_CHARGE = "ABILITY_NAME_CHARGE"; + + public static string ConstantTextList_ABILITY_NAME_DOUBLE_PAYBACK = "ABILITY_NAME_DOUBLE_PAYBACK"; + + public static string ConstantTextList_ABILITY_NAME_RAINBLOW = "ABILITY_NAME_RAINBLOW"; + + public static string ConstantTextList_ABILITY_NAME_OMNISMASH = "ABILITY_NAME_OMNISMASH"; + + public static string ConstantTextList_ABILITY_NAME_RAPID_MOVE = "ABILITY_NAME_RAPID_MOVE"; + + public static string ConstantTextList_GAINED_SCORE_DEFEAT = "GAINED_SCORE_DEFEAT"; + + public static string ConstantTextList_GAINED_SCORE_ASSIST = "GAINED_SCORE_ASSIST"; + + public static string ConstantTextList_RESULT_SCORE = "RESULT_SCORE"; + + public static string ConstantTextList_RESULT_HEADER = "RESULT_HEADER"; + + public static string ConstantTextList_RESULT_TOTAL_SCORE = "RESULT_TOTAL_SCORE"; + + public static string ConstantTextList_CHARACTER_SELECT_BUTTON_SKILL_TREE = "CHARACTER_SELECT_BUTTON_SKILL_TREE"; + + public static string ConstantTextList_CHARACTER_SELECT_BUTTON_REBIRTH = "CHARACTER_SELECT_BUTTON_REBIRTH"; + + public static string ConstantTextList_CHARACTER_SELECT_REBIRTHING_TITLE = "CHARACTER_SELECT_REBIRTHING_TITLE"; + + public static string ConstantTextList_CHARACTER_SELECT_REBIRTHING_DESC = "CHARACTER_SELECT_REBIRTHING_DESC"; + + public static string ConstantTextList_CHARACTER_SELECT_REBIRTHING_DESC_2 = "CHARACTER_SELECT_REBIRTHING_DESC_2"; + + public static string ConstantTextList_SKILL_COMMON_DESC_1 = "SKILL_COMMON_DESC_1"; + + public static string ConstantTextList_SKILL_COMMON_DESC_2 = "SKILL_COMMON_DESC_2"; + + public static string ConstantTextList_SKILL_COMMON_DESC_3 = "SKILL_COMMON_DESC_3"; + + public static string ConstantTextList_SKILL_COMMON_DESC_4 = "SKILL_COMMON_DESC_4"; + + public static string ConstantTextList_SKILL_COMMON_DESC_5 = "SKILL_COMMON_DESC_5"; + + public static string ConstantTextList_SKILL_COMMON_DESC_6 = "SKILL_COMMON_DESC_6"; + + public static string ConstantTextList_SKILL_COMMON_DESC_7 = "SKILL_COMMON_DESC_7"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_1 = "MAGIC_SKILL_UNIQUE_DESC_1"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_2 = "MAGIC_SKILL_UNIQUE_DESC_2"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_3 = "MAGIC_SKILL_UNIQUE_DESC_3"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_4 = "MAGIC_SKILL_UNIQUE_DESC_4"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_5 = "MAGIC_SKILL_UNIQUE_DESC_5"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_6 = "MAGIC_SKILL_UNIQUE_DESC_6"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_7 = "MAGIC_SKILL_UNIQUE_DESC_7"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_8 = "MAGIC_SKILL_UNIQUE_DESC_8"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_9 = "MAGIC_SKILL_UNIQUE_DESC_9"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_10 = "MAGIC_SKILL_UNIQUE_DESC_10"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_11 = "MAGIC_SKILL_UNIQUE_DESC_11"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_12 = "MAGIC_SKILL_UNIQUE_DESC_12"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_13 = "MAGIC_SKILL_UNIQUE_DESC_13"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_14 = "MAGIC_SKILL_UNIQUE_DESC_14"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_15 = "MAGIC_SKILL_UNIQUE_DESC_15"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_16 = "MAGIC_SKILL_UNIQUE_DESC_16"; + + public static string ConstantTextList_MAGIC_SKILL_UNIQUE_DESC_17 = "MAGIC_SKILL_UNIQUE_DESC_17"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_1 = "HONESTY_SKILL_UNIQUE_DESC_1"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_2 = "HONESTY_SKILL_UNIQUE_DESC_2"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_3 = "HONESTY_SKILL_UNIQUE_DESC_3"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_4 = "HONESTY_SKILL_UNIQUE_DESC_4"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_5 = "HONESTY_SKILL_UNIQUE_DESC_5"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_6 = "HONESTY_SKILL_UNIQUE_DESC_6"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_7 = "HONESTY_SKILL_UNIQUE_DESC_7"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_8 = "HONESTY_SKILL_UNIQUE_DESC_8"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_9 = "HONESTY_SKILL_UNIQUE_DESC_9"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_10 = "HONESTY_SKILL_UNIQUE_DESC_10"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_11 = "HONESTY_SKILL_UNIQUE_DESC_11"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_12 = "HONESTY_SKILL_UNIQUE_DESC_12"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_13 = "HONESTY_SKILL_UNIQUE_DESC_13"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_14 = "HONESTY_SKILL_UNIQUE_DESC_14"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_15 = "HONESTY_SKILL_UNIQUE_DESC_15"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_16 = "HONESTY_SKILL_UNIQUE_DESC_16"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_17 = "HONESTY_SKILL_UNIQUE_DESC_17"; + + public static string ConstantTextList_HONESTY_SKILL_UNIQUE_DESC_18 = "HONESTY_SKILL_UNIQUE_DESC_18"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_1 = "LOYALTY_SKILL_UNIQUE_DESC_1"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_2 = "LOYALTY_SKILL_UNIQUE_DESC_2"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_3 = "LOYALTY_SKILL_UNIQUE_DESC_3"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_4 = "LOYALTY_SKILL_UNIQUE_DESC_4"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_5 = "LOYALTY_SKILL_UNIQUE_DESC_5"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_6 = "LOYALTY_SKILL_UNIQUE_DESC_6"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_7 = "LOYALTY_SKILL_UNIQUE_DESC_7"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_8 = "LOYALTY_SKILL_UNIQUE_DESC_8"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_9 = "LOYALTY_SKILL_UNIQUE_DESC_9"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_10 = "LOYALTY_SKILL_UNIQUE_DESC_10"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_11 = "LOYALTY_SKILL_UNIQUE_DESC_11"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_12 = "LOYALTY_SKILL_UNIQUE_DESC_12"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_13 = "LOYALTY_SKILL_UNIQUE_DESC_13"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_14 = "LOYALTY_SKILL_UNIQUE_DESC_14"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_15 = "LOYALTY_SKILL_UNIQUE_DESC_15"; + + public static string ConstantTextList_LOYALTY_SKILL_UNIQUE_DESC_16 = "LOYALTY_SKILL_UNIQUE_DESC_16"; + + public static string WordScriptsList_P_MAGIC_APPEAR_1 = "P_MAGIC_APPEAR_1"; + + public static string WordScriptsList_P_MAGIC_BORING_1 = "P_MAGIC_BORING_1"; + + public static string WordScriptsList_P_MAGIC_BORING_2 = "P_MAGIC_BORING_2"; + + public static string WordScriptsList_P_MAGIC_ENCOUNT_1 = "P_MAGIC_ENCOUNT_1"; + + public static string WordScriptsList_P_MAGIC_ENCOUNT_2 = "P_MAGIC_ENCOUNT_2"; + + public static string WordScriptsList_P_MAGIC_ENCOUNT_3 = "P_MAGIC_ENCOUNT_3"; + + public static string WordScriptsList_P_MAGIC_ENCOUNT_4 = "P_MAGIC_ENCOUNT_4"; + + public static string WordScriptsList_P_MAGIC_TELEPORT_1 = "P_MAGIC_TELEPORT_1"; + + public static string WordScriptsList_P_MAGIC_TELEPORT_2 = "P_MAGIC_TELEPORT_2"; + + public static string WordScriptsList_P_MAGIC_ABILITY_1 = "P_MAGIC_ABILITY_1"; + + public static string WordScriptsList_P_MAGIC_ABILITY_2 = "P_MAGIC_ABILITY_2"; + + public static string WordScriptsList_P_MAGIC_ABILITY_3 = "P_MAGIC_ABILITY_3"; + + public static string WordScriptsList_P_MAGIC_ABILITY_MAGIC_BUBBLE_1 = "P_MAGIC_ABILITY_MAGIC_BUBBLE_1"; + + public static string WordScriptsList_P_MAGIC_ABILITY_MAGIC_BUBBLE_2 = "P_MAGIC_ABILITY_MAGIC_BUBBLE_2"; + + public static string WordScriptsList_P_MAGIC_FRIENDSHIP_ABILITY_1 = "P_MAGIC_FRIENDSHIP_ABILITY_1"; + + public static string WordScriptsList_P_MAGIC_TOOK_DAMAGE_1 = "P_MAGIC_TOOK_DAMAGE_1"; + + public static string WordScriptsList_P_MAGIC_TOOK_DAMAGE_2 = "P_MAGIC_TOOK_DAMAGE_2"; + + public static string WordScriptsList_P_MAGIC_LOST_SECONDARY_HP_1 = "P_MAGIC_LOST_SECONDARY_HP_1"; + + public static string WordScriptsList_P_MAGIC_PRIMARY_HP_LESS_THAN_HALF_1 = "P_MAGIC_PRIMARY_HP_LESS_THAN_HALF_1"; + + public static string WordScriptsList_P_MAGIC_DEFEATED_1 = "P_MAGIC_DEFEATED_1"; + + public static string WordScriptsList_P_MAGIC_DEFEATED_2 = "P_MAGIC_DEFEATED_2"; + + public static string WordScriptsList_P_MAGIC_RESURRECTED_1 = "P_MAGIC_RESURRECTED_1"; + + public static string WordScriptsList_P_MAGIC_RESURRECTED_2 = "P_MAGIC_RESURRECTED_2"; + + public static string WordScriptsList_P_MAGIC_DEFEAT_ENEMY_1 = "P_MAGIC_DEFEAT_ENEMY_1"; + + public static string WordScriptsList_P_MAGIC_DEFEAT_ENEMY_2 = "P_MAGIC_DEFEAT_ENEMY_2"; + + public static string WordScriptsList_P_MAGIC_DEFEAT_ENEMY_3 = "P_MAGIC_DEFEAT_ENEMY_3"; + + public static string WordScriptsList_P_MAGIC_DEFEAT_ENEMY_4 = "P_MAGIC_DEFEAT_ENEMY_4"; + + public static string WordScriptsList_P_MAGIC_ALLY_DEFEAT_ENEMY_1 = "P_MAGIC_ALLY_DEFEAT_ENEMY_1"; + + public static string WordScriptsList_P_MAGIC_ALLY_DEFEAT_ENEMY_2 = "P_MAGIC_ALLY_DEFEAT_ENEMY_2"; + + public static string WordScriptsList_P_MAGIC_ALLY_DEFEAT_ENEMY_3 = "P_MAGIC_ALLY_DEFEAT_ENEMY_3"; + + public static string WordScriptsList_P_MAGIC_ALLY_DEFEAT_ENEMY_4 = "P_MAGIC_ALLY_DEFEAT_ENEMY_4"; + + public static string WordScriptsList_P_MAGIC_ALLY_DEFEATED_1 = "P_MAGIC_ALLY_DEFEATED_1"; + + public static string WordScriptsList_P_MAGIC_DIALOG_1 = "P_MAGIC_DIALOG_1"; + + public static string WordScriptsList_P_MAGIC_DIALOG_2 = "P_MAGIC_DIALOG_2"; + + public static string WordScriptsList_P_MAGIC_DIALOG_3 = "P_MAGIC_DIALOG_3"; + + public static string WordScriptsList_P_MAGIC_DIALOG_4 = "P_MAGIC_DIALOG_4"; + + public static string WordScriptsList_P_MAGIC_DIALOG_5 = "P_MAGIC_DIALOG_5"; + + public static string WordScriptsList_P_MAGIC_DIALOG_6 = "P_MAGIC_DIALOG_6"; + + public static string WordScriptsList_P_MAGIC_DIALOG_7 = "P_MAGIC_DIALOG_7"; + + public static string WordScriptsList_P_MAGIC_DIALOG_8 = "P_MAGIC_DIALOG_8"; + + public static string WordScriptsList_P_HONESTY_APPEAR_1 = "P_HONESTY_APPEAR_1"; + + public static string WordScriptsList_P_HONESTY_BORING_1 = "P_HONESTY_BORING_1"; + + public static string WordScriptsList_P_HONESTY_BORING_2 = "P_HONESTY_BORING_2"; + + public static string WordScriptsList_P_HONESTY_ENCOUNT_1 = "P_HONESTY_ENCOUNT_1"; + + public static string WordScriptsList_P_HONESTY_ENCOUNT_2 = "P_HONESTY_ENCOUNT_2"; + + public static string WordScriptsList_P_HONESTY_ENCOUNT_3 = "P_HONESTY_ENCOUNT_3"; + + public static string WordScriptsList_P_HONESTY_ENCOUNT_4 = "P_HONESTY_ENCOUNT_4"; + + public static string WordScriptsList_P_HONESTY_EVASION_1 = "P_HONESTY_EVASION_1"; + + public static string WordScriptsList_P_HONESTY_EVASION_2 = "P_HONESTY_EVASION_2"; + + public static string WordScriptsList_P_HONESTY_EVASION_3 = "P_HONESTY_EVASION_3"; + + public static string WordScriptsList_P_HONESTY_ABILITY_1 = "P_HONESTY_ABILITY_1"; + + public static string WordScriptsList_P_HONESTY_ABILITY_2 = "P_HONESTY_ABILITY_2"; + + public static string WordScriptsList_P_HONESTY_ABILITY_3 = "P_HONESTY_ABILITY_3"; + + public static string WordScriptsList_P_HONESTY_ABILITY_ROPE_1 = "P_HONESTY_ABILITY_ROPE_1"; + + public static string WordScriptsList_P_HONESTY_ABILITY_ROPE_2 = "P_HONESTY_ABILITY_ROPE_2"; + + public static string WordScriptsList_P_HONESTY_ABILITY_YEEHAW_1 = "P_HONESTY_ABILITY_YEEHAW_1"; + + public static string WordScriptsList_P_HONESTY_ABILITY_YEEHAW_2 = "P_HONESTY_ABILITY_YEEHAW_2"; + + public static string WordScriptsList_P_HONESTY_FRIENDSHIP_ABILITY_1 = "P_HONESTY_FRIENDSHIP_ABILITY_1"; + + public static string WordScriptsList_P_HONESTY_FRIENDSHIP_ABILITY_2 = "P_HONESTY_FRIENDSHIP_ABILITY_2"; + + public static string WordScriptsList_P_HONESTY_FRIENDSHIP_ABILITY_3 = "P_HONESTY_FRIENDSHIP_ABILITY_3"; + + public static string WordScriptsList_P_HONESTY_FRIENDSHIP_ABILITY_4 = "P_HONESTY_FRIENDSHIP_ABILITY_4"; + + public static string WordScriptsList_P_HONESTY_TOOK_DAMAGE_1 = "P_HONESTY_TOOK_DAMAGE_1"; + + public static string WordScriptsList_P_HONESTY_TOOK_DAMAGE_2 = "P_HONESTY_TOOK_DAMAGE_2"; + + public static string WordScriptsList_P_HONESTY_TOOK_DAMAGE_3 = "P_HONESTY_TOOK_DAMAGE_3"; + + public static string WordScriptsList_P_HONESTY_TOOK_DAMAGE_4 = "P_HONESTY_TOOK_DAMAGE_4"; + + public static string WordScriptsList_P_HONESTY_TOOK_DAMAGE_5 = "P_HONESTY_TOOK_DAMAGE_5"; + + public static string WordScriptsList_P_HONESTY_TOOK_DAMAGE_6 = "P_HONESTY_TOOK_DAMAGE_6"; + + public static string WordScriptsList_P_HONESTY_LOST_SECONDARY_HP_1 = "P_HONESTY_LOST_SECONDARY_HP_1"; + + public static string WordScriptsList_P_HONESTY_PRIMARY_HP_LESS_THAN_HALF_1 = "P_HONESTY_PRIMARY_HP_LESS_THAN_HALF_1"; + + public static string WordScriptsList_P_HONESTY_DEFEATED_1 = "P_HONESTY_DEFEATED_1"; + + public static string WordScriptsList_P_HONESTY_DEFEATED_2 = "P_HONESTY_DEFEATED_2"; + + public static string WordScriptsList_P_HONESTY_DEFEATED_3 = "P_HONESTY_DEFEATED_3"; + + public static string WordScriptsList_P_HONESTY_RESURRECTED_1 = "P_HONESTY_RESURRECTED_1"; + + public static string WordScriptsList_P_HONESTY_RESURRECTED_2 = "P_HONESTY_RESURRECTED_2"; + + public static string WordScriptsList_P_HONESTY_RESURRECTED_3 = "P_HONESTY_RESURRECTED_3"; + + public static string WordScriptsList_P_HONESTY_RESURRECTED_4 = "P_HONESTY_RESURRECTED_4"; + + public static string WordScriptsList_P_HONESTY_DEFEAT_ENEMY_1 = "P_HONESTY_DEFEAT_ENEMY_1"; + + public static string WordScriptsList_P_HONESTY_DEFEAT_ENEMY_2 = "P_HONESTY_DEFEAT_ENEMY_2"; + + public static string WordScriptsList_P_HONESTY_DEFEAT_ENEMY_3 = "P_HONESTY_DEFEAT_ENEMY_3"; + + public static string WordScriptsList_P_HONESTY_DEFEAT_ENEMY_4 = "P_HONESTY_DEFEAT_ENEMY_4"; + + public static string WordScriptsList_P_HONESTY_ALLY_DEFEAT_ENEMY_1 = "P_HONESTY_ALLY_DEFEAT_ENEMY_1"; + + public static string WordScriptsList_P_HONESTY_ALLY_DEFEAT_ENEMY_2 = "P_HONESTY_ALLY_DEFEAT_ENEMY_2"; + + public static string WordScriptsList_P_HONESTY_ALLY_DEFEAT_ENEMY_3 = "P_HONESTY_ALLY_DEFEAT_ENEMY_3"; + + public static string WordScriptsList_P_HONESTY_ALLY_DEFEAT_ENEMY_4 = "P_HONESTY_ALLY_DEFEAT_ENEMY_4"; + + public static string WordScriptsList_P_HONESTY_ALLY_DEFEATED_1 = "P_HONESTY_ALLY_DEFEATED_1"; + + public static string WordScriptsList_P_HONESTY_DIALOG_1 = "P_HONESTY_DIALOG_1"; + + public static string WordScriptsList_P_HONESTY_DIALOG_2 = "P_HONESTY_DIALOG_2"; + + public static string WordScriptsList_P_HONESTY_DIALOG_3 = "P_HONESTY_DIALOG_3"; + + public static string WordScriptsList_P_HONESTY_DIALOG_4 = "P_HONESTY_DIALOG_4"; + + public static string WordScriptsList_P_HONESTY_DIALOG_5 = "P_HONESTY_DIALOG_5"; + + public static string WordScriptsList_P_HONESTY_DIALOG_6 = "P_HONESTY_DIALOG_6"; + + public static string WordScriptsList_P_HONESTY_DIALOG_7 = "P_HONESTY_DIALOG_7"; + + public static string WordScriptsList_P_HONESTY_DIALOG_8 = "P_HONESTY_DIALOG_8"; + + public static string WordScriptsList_P_LOYALTY_APPEAR_1 = "P_LOYALTY_APPEAR_1"; + + public static string WordScriptsList_P_LOYALTY_BORING_1 = "P_LOYALTY_BORING_1"; + + public static string WordScriptsList_P_LOYALTY_BORING_2 = "P_LOYALTY_BORING_2"; + + public static string WordScriptsList_P_LOYALTY_ENCOUNT_1 = "P_LOYALTY_ENCOUNT_1"; + + public static string WordScriptsList_P_LOYALTY_ENCOUNT_2 = "P_LOYALTY_ENCOUNT_2"; + + public static string WordScriptsList_P_LOYALTY_ENCOUNT_3 = "P_LOYALTY_ENCOUNT_3"; + + public static string WordScriptsList_P_LOYALTY_ENCOUNT_4 = "P_LOYALTY_ENCOUNT_4"; + + public static string WordScriptsList_P_LOYALTY_EVASION_1 = "P_LOYALTY_EVASION_1"; + + public static string WordScriptsList_P_LOYALTY_EVASION_2 = "P_LOYALTY_EVASION_2"; + + public static string WordScriptsList_P_LOYALTY_EVASION_3 = "P_LOYALTY_EVASION_3"; + + public static string WordScriptsList_P_LOYALTY_EVASION_4 = "P_LOYALTY_EVASION_4"; + + public static string WordScriptsList_P_LOYALTY_ABILITY_1 = "P_LOYALTY_ABILITY_1"; + + public static string WordScriptsList_P_LOYALTY_ABILITY_2 = "P_LOYALTY_ABILITY_2"; + + public static string WordScriptsList_P_LOYALTY_ABILITY_3 = "P_LOYALTY_ABILITY_3"; + + public static string WordScriptsList_P_LOYALTY_ABILITY_4 = "P_LOYALTY_ABILITY_4"; + + public static string WordScriptsList_P_LOYALTY_ABILITY_DOUBLE_PAYBACK_1 = "P_LOYALTY_ABILITY_DOUBLE_PAYBACK_1"; + + public static string WordScriptsList_P_LOYALTY_ABILITY_DOUBLE_PAYBACK_2 = "P_LOYALTY_ABILITY_DOUBLE_PAYBACK_2"; + + public static string WordScriptsList_P_LOYALTY_FRIENDSHIP_ABILITY_1 = "P_LOYALTY_FRIENDSHIP_ABILITY_1"; + + public static string WordScriptsList_P_LOYALTY_FRIENDSHIP_ABILITY_2 = "P_LOYALTY_FRIENDSHIP_ABILITY_2"; + + public static string WordScriptsList_P_LOYALTY_TOOK_DAMAGE_1 = "P_LOYALTY_TOOK_DAMAGE_1"; + + public static string WordScriptsList_P_LOYALTY_TOOK_DAMAGE_2 = "P_LOYALTY_TOOK_DAMAGE_2"; + + public static string WordScriptsList_P_LOYALTY_LOST_SECONDARY_HP_1 = "P_LOYALTY_LOST_SECONDARY_HP_1"; + + public static string WordScriptsList_P_LOYALTY_PRIMARY_HP_LESS_THAN_HALF_1 = "P_LOYALTY_PRIMARY_HP_LESS_THAN_HALF_1"; + + public static string WordScriptsList_P_LOYALTY_DEFEATED_1 = "P_LOYALTY_DEFEATED_1"; + + public static string WordScriptsList_P_LOYALTY_RESURRECTED_1 = "P_LOYALTY_RESURRECTED_1"; + + public static string WordScriptsList_P_LOYALTY_RESURRECTED_2 = "P_LOYALTY_RESURRECTED_2"; + + public static string WordScriptsList_P_LOYALTY_DEFEAT_ENEMY_1 = "P_LOYALTY_DEFEAT_ENEMY_1"; + + public static string WordScriptsList_P_LOYALTY_DEFEAT_ENEMY_2 = "P_LOYALTY_DEFEAT_ENEMY_2"; + + public static string WordScriptsList_P_LOYALTY_DEFEAT_ENEMY_3 = "P_LOYALTY_DEFEAT_ENEMY_3"; + + public static string WordScriptsList_P_LOYALTY_DEFEAT_ENEMY_4 = "P_LOYALTY_DEFEAT_ENEMY_4"; + + public static string WordScriptsList_P_LOYALTY_ALLY_DEFEAT_ENEMY_1 = "P_LOYALTY_ALLY_DEFEAT_ENEMY_1"; + + public static string WordScriptsList_P_LOYALTY_ALLY_DEFEAT_ENEMY_2 = "P_LOYALTY_ALLY_DEFEAT_ENEMY_2"; + + public static string WordScriptsList_P_LOYALTY_ALLY_DEFEAT_ENEMY_3 = "P_LOYALTY_ALLY_DEFEAT_ENEMY_3"; + + public static string WordScriptsList_P_LOYALTY_ALLY_DEFEAT_ENEMY_4 = "P_LOYALTY_ALLY_DEFEAT_ENEMY_4"; + + public static string WordScriptsList_P_LOYALTY_ALLY_DEFEATED_1 = "P_LOYALTY_ALLY_DEFEATED_1"; + + public static string WordScriptsList_P_LOYALTY_DIALOG_1 = "P_LOYALTY_DIALOG_1"; + + public static string WordScriptsList_P_LOYALTY_DIALOG_2 = "P_LOYALTY_DIALOG_2"; + + public static string WordScriptsList_P_LOYALTY_DIALOG_3 = "P_LOYALTY_DIALOG_3"; + + public static string WordScriptsList_P_LOYALTY_DIALOG_4 = "P_LOYALTY_DIALOG_4"; + + public static string WordScriptsList_P_LOYALTY_DIALOG_5 = "P_LOYALTY_DIALOG_5"; + + public static string WordScriptsList_P_LOYALTY_DIALOG_6 = "P_LOYALTY_DIALOG_6"; + + public static string WordScriptsList_P_LOYALTY_DIALOG_7 = "P_LOYALTY_DIALOG_7"; + + public static string WordScriptsList_P_LOYALTY_DIALOG_8 = "P_LOYALTY_DIALOG_8"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_APPEAR_1 = "E_THE_INSECT_QUEEN_APPEAR_1"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_APPEAR_2 = "E_THE_INSECT_QUEEN_APPEAR_2"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_1 = "E_THE_INSECT_QUEEN_RANDOM_1"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_2 = "E_THE_INSECT_QUEEN_RANDOM_2"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_3 = "E_THE_INSECT_QUEEN_RANDOM_3"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_4 = "E_THE_INSECT_QUEEN_RANDOM_4"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_5 = "E_THE_INSECT_QUEEN_RANDOM_5"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_6 = "E_THE_INSECT_QUEEN_RANDOM_6"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_7 = "E_THE_INSECT_QUEEN_RANDOM_7"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_8 = "E_THE_INSECT_QUEEN_RANDOM_8"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_9 = "E_THE_INSECT_QUEEN_RANDOM_9"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_10 = "E_THE_INSECT_QUEEN_RANDOM_10"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_11 = "E_THE_INSECT_QUEEN_RANDOM_11"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_RANDOM_12 = "E_THE_INSECT_QUEEN_RANDOM_12"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_USING_ABILITY_1 = "E_THE_INSECT_QUEEN_USING_ABILITY_1"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_USING_ABILITY_2 = "E_THE_INSECT_QUEEN_USING_ABILITY_2"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_USING_ABILITY_3 = "E_THE_INSECT_QUEEN_USING_ABILITY_3"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_USING_ABILITY_4 = "E_THE_INSECT_QUEEN_USING_ABILITY_4"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_USING_ABILITY_5 = "E_THE_INSECT_QUEEN_USING_ABILITY_5"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_USING_ABILITY_6 = "E_THE_INSECT_QUEEN_USING_ABILITY_6"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_USING_ABILITY_7 = "E_THE_INSECT_QUEEN_USING_ABILITY_7"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_USING_ABILITY_8 = "E_THE_INSECT_QUEEN_USING_ABILITY_8"; + + public static string WordScriptsList_E_THE_INSECT_QUEEN_USING_ABILITY_9 = "E_THE_INSECT_QUEEN_USING_ABILITY_9"; + + public static string ConstantTextType_NONE = "NONE"; + + public static string ConstantTextType_SYSTEM_MESSAGE = "SYSTEM_MESSAGE"; + + public static string ConstantTextType_ENEMY_TYPE = "ENEMY_TYPE"; + + public static string ConstantTextType_DIFFICULTY = "DIFFICULTY"; + + public static string ConstantTextType_MAP_NAME = "MAP_NAME"; + + public static string ConstantTextType_PLAYER_NAME = "PLAYER_NAME"; + + public static string ConstantTextType_ENEMY_NAME = "ENEMY_NAME"; + + public static string ConstantTextType_SKILL_TREE = "SKILL_TREE"; + + public static string ConstantTextType_RESULT = "RESULT"; + + public static string GameCharacterType_MAGIC = "MAGIC"; + + public static string GameCharacterType_HONESTY = "HONESTY"; + + public static string GameCharacterType_LOYALTY = "LOYALTY"; + + public static string GameCharacterType_KINDNESS = "KINDNESS"; + + public static string GameCharacterType_GENEROSITY = "GENEROSITY"; + + public static string GameCharacterType_LAGHTER = "LAGHTER"; + + public static string GameCharacterType_CHANGELING = "CHANGELING"; + + public static string GameCharacterType_FLIGHTLING = "FLIGHTLING"; + + public static string GameCharacterType_CHANGELING_ALPHA = "CHANGELING_ALPHA"; + + public static string GameCharacterType_THE_INSECT_QUEEN = "THE_INSECT_QUEEN"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_MANUAL = "WS_TRIGGER_TYPE_MANUAL"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_ARRIVAL = "WS_TRIGGER_TYPE_ARRIVAL"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_NO_INPUT_SIGNAL = "WS_TRIGGER_TYPE_NO_INPUT_SIGNAL"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_ENEMY_DETECTED = "WS_TRIGGER_TYPE_ENEMY_DETECTED"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_EVADED = "WS_TRIGGER_TYPE_EVADED"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_USED_ABILITY = "WS_TRIGGER_TYPE_USED_ABILITY"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_USED_FRIENDSHIP_ABILITY = "WS_TRIGGER_TYPE_USED_FRIENDSHIP_ABILITY"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_TOOK_DAMAGE = "WS_TRIGGER_TYPE_TOOK_DAMAGE"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_LOST_SECONDARY_HP = "WS_TRIGGER_TYPE_LOST_SECONDARY_HP"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_PRIMARY_HP_LESS_THAN_HALF = "WS_TRIGGER_TYPE_PRIMARY_HP_LESS_THAN_HALF"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_DEFEATED = "WS_TRIGGER_TYPE_DEFEATED"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_RESURRECTED = "WS_TRIGGER_TYPE_RESURRECTED"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_ALLY_DEFEATED = "WS_TRIGGER_TYPE_ALLY_DEFEATED"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_DEFEAT_ENEMY = "WS_TRIGGER_TYPE_DEFEAT_ENEMY"; + + public static string WordScriptTriggerType_WS_TRIGGER_TYPE_ALLY_DEFEAT_ENEMY = "WS_TRIGGER_TYPE_ALLY_DEFEAT_ENEMY"; + + public static string DifficultyList_EASY = "EASY"; + + public static string DifficultyList_NORMAL = "NORMAL"; + + public static string DifficultyList_HARD = "HARD"; + + public static string DifficultyList_VERY_HARD = "VERY_HARD"; + + public static string DifficultyList_NIGHTMARE = "NIGHTMARE"; + + public static string DifficultyList_CHAOS = "CHAOS"; + + public static string SkillTree_MAGIC_SPARKLY_CANNON_LV1_1 = "MAGIC_SPARKLY_CANNON_LV1_1"; + + public static string SkillTree_MAGIC_SPARKLY_CANNON_LV1_2 = "MAGIC_SPARKLY_CANNON_LV1_2"; + + public static string SkillTree_MAGIC_SPARKLY_CANNON_LV2_1 = "MAGIC_SPARKLY_CANNON_LV2_1"; + + public static string SkillTree_MAGIC_SPARKLY_CANNON_LV2_2 = "MAGIC_SPARKLY_CANNON_LV2_2"; + + public static string SkillTree_MAGIC_SPARKLY_CANNON_LV3_1 = "MAGIC_SPARKLY_CANNON_LV3_1"; + + public static string SkillTree_MAGIC_SPARKLY_CANNON_LV3_2 = "MAGIC_SPARKLY_CANNON_LV3_2"; + + public static string SkillTree_MAGIC_SPARKLY_CANNON_LV4__DEFFENSIVE_CANNON = "MAGIC_SPARKLY_CANNON_LV4__DEFFENSIVE_CANNON"; + + public static string SkillTree_MAGIC_SPARKLY_CANNON_LV4_UNSTOPPABLE_CANNON = "MAGIC_SPARKLY_CANNON_LV4_UNSTOPPABLE_CANNON"; + + public static string SkillTree_MAGIC_SUMMON_ARROW_LV1_1 = "MAGIC_SUMMON_ARROW_LV1_1"; + + public static string SkillTree_MAGIC_SUMMON_ARROW_LV1_2 = "MAGIC_SUMMON_ARROW_LV1_2"; + + public static string SkillTree_MAGIC_SUMMON_ARROW_LV2_1 = "MAGIC_SUMMON_ARROW_LV2_1"; + + public static string SkillTree_MAGIC_SUMMON_ARROW_LV2_2 = "MAGIC_SUMMON_ARROW_LV2_2"; + + public static string SkillTree_MAGIC_SUMMON_ARROW_LV3_1 = "MAGIC_SUMMON_ARROW_LV3_1"; + + public static string SkillTree_MAGIC_SUMMON_ARROW_LV3_2 = "MAGIC_SUMMON_ARROW_LV3_2"; + + public static string SkillTree_MAGIC_SUMMON_ARROW_LV4_STUNNING_ARROW = "MAGIC_SUMMON_ARROW_LV4_STUNNING_ARROW"; + + public static string SkillTree_MAGIC_SUMMON_ARROW_LV4_SUMMON_TRAP = "MAGIC_SUMMON_ARROW_LV4_SUMMON_TRAP"; + + public static string SkillTree_MAGIC_MAGIC_BUBBLE_LV1_1 = "MAGIC_MAGIC_BUBBLE_LV1_1"; + + public static string SkillTree_MAGIC_MAGIC_BUBBLE_LV1_2 = "MAGIC_MAGIC_BUBBLE_LV1_2"; + + public static string SkillTree_MAGIC_MAGIC_BUBBLE_LV2_1 = "MAGIC_MAGIC_BUBBLE_LV2_1"; + + public static string SkillTree_MAGIC_MAGIC_BUBBLE_LV2_2 = "MAGIC_MAGIC_BUBBLE_LV2_2"; + + public static string SkillTree_MAGIC_MAGIC_BUBBLE_LV3_1 = "MAGIC_MAGIC_BUBBLE_LV3_1"; + + public static string SkillTree_MAGIC_MAGIC_BUBBLE_LV3_2 = "MAGIC_MAGIC_BUBBLE_LV3_2"; + + public static string SkillTree_MAGIC_MAGIC_BUBBLE_LV4_DISRUPTOR_BUBBLE = "MAGIC_MAGIC_BUBBLE_LV4_DISRUPTOR_BUBBLE"; + + public static string SkillTree_MAGIC_MAGIC_BUBBLE_LV4_HEALING_BUBBLE = "MAGIC_MAGIC_BUBBLE_LV4_HEALING_BUBBLE"; + + public static string SkillTree_MAGIC_DIFFENCE_PASSIVE_LV1_1 = "MAGIC_DIFFENCE_PASSIVE_LV1_1"; + + public static string SkillTree_MAGIC_DIFFENCE_PASSIVE_LV1_2 = "MAGIC_DIFFENCE_PASSIVE_LV1_2"; + + public static string SkillTree_MAGIC_DIFFENCE_PASSIVE_LV2_1 = "MAGIC_DIFFENCE_PASSIVE_LV2_1"; + + public static string SkillTree_MAGIC_DIFFENCE_PASSIVE_LV2_2 = "MAGIC_DIFFENCE_PASSIVE_LV2_2"; + + public static string SkillTree_MAGIC_DIFFENCE_PASSIVE_LV3_1 = "MAGIC_DIFFENCE_PASSIVE_LV3_1"; + + public static string SkillTree_MAGIC_DIFFENCE_PASSIVE_LV3_2 = "MAGIC_DIFFENCE_PASSIVE_LV3_2"; + + public static string SkillTree_MAGIC_DIFFENCE_PASSIVE_LV4_EXPLOSIVE_TELEPORTATION = "MAGIC_DIFFENCE_PASSIVE_LV4_EXPLOSIVE_TELEPORTATION"; + + public static string SkillTree_MAGIC_DIFFENCE_PASSIVE_LV4_CONCENTRATIVE_TELEPORTATION = "MAGIC_DIFFENCE_PASSIVE_LV4_CONCENTRATIVE_TELEPORTATION"; + + public static string SkillTree_MAGIC_ATTACK_PASSIVE_LV1_1 = "MAGIC_ATTACK_PASSIVE_LV1_1"; + + public static string SkillTree_MAGIC_ATTACK_PASSIVE_LV1_2 = "MAGIC_ATTACK_PASSIVE_LV1_2"; + + public static string SkillTree_MAGIC_ATTACK_PASSIVE_LV2_1 = "MAGIC_ATTACK_PASSIVE_LV2_1"; + + public static string SkillTree_MAGIC_ATTACK_PASSIVE_LV2_2 = "MAGIC_ATTACK_PASSIVE_LV2_2"; + + public static string SkillTree_MAGIC_ATTACK_PASSIVE_LV3_1 = "MAGIC_ATTACK_PASSIVE_LV3_1"; + + public static string SkillTree_MAGIC_ATTACK_PASSIVE_LV3_2 = "MAGIC_ATTACK_PASSIVE_LV3_2"; + + public static string SkillTree_MAGIC_ATTACK_PASSIVE_LV4_AGRESSIVE_CASTING = "MAGIC_ATTACK_PASSIVE_LV4_AGRESSIVE_CASTING"; + + public static string SkillTree_MAGIC_ATTACK_PASSIVE_LV4_SMART_CASTING = "MAGIC_ATTACK_PASSIVE_LV4_SMART_CASTING"; + + public static string SkillTree_MAGIC_SMART_CASTING_RELATED = "MAGIC_SMART_CASTING_RELATED"; + + public static string SkillTree_MAGIC_SUMMON_TRAP_RELATED = "MAGIC_SUMMON_TRAP_RELATED"; + + public static string SkillTree_MAGIC_UNSTOPPABLE_CANNON_RELATED = "MAGIC_UNSTOPPABLE_CANNON_RELATED"; + + public static string SkillTree_MAGIC_DISRUPTOR_BUBBLE_RELATED = "MAGIC_DISRUPTOR_BUBBLE_RELATED"; + + public static string SkillTree_MAGIC_DEFENSIVE_CANNON_RELATED = "MAGIC_DEFENSIVE_CANNON_RELATED"; + + public static string SkillTree_HONESTY_ROPE_LV1_1 = "HONESTY_ROPE_LV1_1"; + + public static string SkillTree_HONESTY_ROPE_LV1_2 = "HONESTY_ROPE_LV1_2"; + + public static string SkillTree_HONESTY_ROPE_LV2_1 = "HONESTY_ROPE_LV2_1"; + + public static string SkillTree_HONESTY_ROPE_LV2_2 = "HONESTY_ROPE_LV2_2"; + + public static string SkillTree_HONESTY_ROPE_LV3_1 = "HONESTY_ROPE_LV3_1"; + + public static string SkillTree_HONESTY_ROPE_LV3_2 = "HONESTY_ROPE_LV3_2"; + + public static string SkillTree_HONESTY_ROPE_LV4_SLOW_DOWN = "HONESTY_ROPE_LV4_SLOW_DOWN"; + + public static string SkillTree_HONESTY_ROPE_LV4_SYNERGY_ROPING = "HONESTY_ROPE_LV4_SYNERGY_ROPING"; + + public static string SkillTree_HONESTY_STOMP_LV1_1 = "HONESTY_STOMP_LV1_1"; + + public static string SkillTree_HONESTY_STOMP_LV1_2 = "HONESTY_STOMP_LV1_2"; + + public static string SkillTree_HONESTY_STOMP_LV2_1 = "HONESTY_STOMP_LV2_1"; + + public static string SkillTree_HONESTY_STOMP_LV2_2 = "HONESTY_STOMP_LV2_2"; + + public static string SkillTree_HONESTY_STOMP_LV3_1 = "HONESTY_STOMP_LV3_1"; + + public static string SkillTree_HONESTY_STOMP_LV3_2 = "HONESTY_STOMP_LV3_2"; + + public static string SkillTree_HONESTY_STOMP_LV4_POWER_HITTER = "HONESTY_STOMP_LV4_POWER_HITTER"; + + public static string SkillTree_HONESTY_STOMP_LV4_AVERAGE_HITTER = "HONESTY_STOMP_LV4_AVERAGE_HITTER"; + + public static string SkillTree_HONESTY_YEEHAW_LV1_1 = "HONESTY_YEEHAW_LV1_1"; + + public static string SkillTree_HONESTY_YEEHAW_LV1_2 = "HONESTY_YEEHAW_LV1_2"; + + public static string SkillTree_HONESTY_YEEHAW_LV2_1 = "HONESTY_YEEHAW_LV2_1"; + + public static string SkillTree_HONESTY_YEEHAW_LV2_2 = "HONESTY_YEEHAW_LV2_2"; + + public static string SkillTree_HONESTY_YEEHAW_LV3_1 = "HONESTY_YEEHAW_LV3_1"; + + public static string SkillTree_HONESTY_YEEHAW_LV3_2 = "HONESTY_YEEHAW_LV3_2"; + + public static string SkillTree_HONESTY_YEEHAW_LV4_TAUNT = "HONESTY_YEEHAW_LV4_TAUNT"; + + public static string SkillTree_HONESTY_YEEHAW_LV4_SHOUT_OF_COURAGE = "HONESTY_YEEHAW_LV4_SHOUT_OF_COURAGE"; + + public static string SkillTree_HONESTY_DIFFENCE_PASSIVE_LV1_1 = "HONESTY_DIFFENCE_PASSIVE_LV1_1"; + + public static string SkillTree_HONESTY_DIFFENCE_PASSIVE_LV1_2 = "HONESTY_DIFFENCE_PASSIVE_LV1_2"; + + public static string SkillTree_HONESTY_DIFFENCE_PASSIVE_LV2_1 = "HONESTY_DIFFENCE_PASSIVE_LV2_1"; + + public static string SkillTree_HONESTY_DIFFENCE_PASSIVE_LV2_2 = "HONESTY_DIFFENCE_PASSIVE_LV2_2"; + + public static string SkillTree_HONESTY_DIFFENCE_PASSIVE_LV3_1 = "HONESTY_DIFFENCE_PASSIVE_LV3_1"; + + public static string SkillTree_HONESTY_DIFFENCE_PASSIVE_LV3_2 = "HONESTY_DIFFENCE_PASSIVE_LV3_2"; + + public static string SkillTree_HONESTY_DIFFENCE_PASSIVE_LV4_OFFENSIVE_STEP = "HONESTY_DIFFENCE_PASSIVE_LV4_OFFENSIVE_STEP"; + + public static string SkillTree_HONESTY_DIFFENCE_PASSIVE_LV4_DEFFENSIVE_STEP = "HONESTY_DIFFENCE_PASSIVE_LV4_DEFFENSIVE_STEP"; + + public static string SkillTree_HONESTY_ATTACK_PASSIVE_LV1_1 = "HONESTY_ATTACK_PASSIVE_LV1_1"; + + public static string SkillTree_HONESTY_ATTACK_PASSIVE_LV1_2 = "HONESTY_ATTACK_PASSIVE_LV1_2"; + + public static string SkillTree_HONESTY_ATTACK_PASSIVE_LV2_1 = "HONESTY_ATTACK_PASSIVE_LV2_1"; + + public static string SkillTree_HONESTY_ATTACK_PASSIVE_LV2_2 = "HONESTY_ATTACK_PASSIVE_LV2_2"; + + public static string SkillTree_HONESTY_ATTACK_PASSIVE_LV3_1 = "HONESTY_ATTACK_PASSIVE_LV3_1"; + + public static string SkillTree_HONESTY_ATTACK_PASSIVE_LV3_2 = "HONESTY_ATTACK_PASSIVE_LV3_2"; + + public static string SkillTree_HONESTY_ATTACK_PASSIVE_LV4_HIGH_RISK_AND_HIGH_RETURN = "HONESTY_ATTACK_PASSIVE_LV4_HIGH_RISK_AND_HIGH_RETURN"; + + public static string SkillTree_HONESTY_ATTACK_PASSIVE_LV4_BATTLE_CYCLE = "HONESTY_ATTACK_PASSIVE_LV4_BATTLE_CYCLE"; + + public static string SkillTree_HONESTY_SLOWDOWN_RELATED = "HONESTY_SLOWDOWN_RELATED"; + + public static string SkillTree_HONESTY_SHINAGY_ROPE_RELATED = "HONESTY_SHINAGY_ROPE_RELATED"; + + public static string SkillTree_HONESTY_YEEHAW_LV4_RELATED = "HONESTY_YEEHAW_LV4_RELATED"; + + public static string SkillTree_LOYALTY_DOUBLE_PAYBACK_LV1_1 = "LOYALTY_DOUBLE_PAYBACK_LV1_1"; + + public static string SkillTree_LOYALTY_DOUBLE_PAYBACK_LV1_2 = "LOYALTY_DOUBLE_PAYBACK_LV1_2"; + + public static string SkillTree_LOYALTY_DOUBLE_PAYBACK_LV2_1 = "LOYALTY_DOUBLE_PAYBACK_LV2_1"; + + public static string SkillTree_LOYALTY_DOUBLE_PAYBACK_LV2_2 = "LOYALTY_DOUBLE_PAYBACK_LV2_2"; + + public static string SkillTree_LOYALTY_DOUBLE_PAYBACK_LV3_1 = "LOYALTY_DOUBLE_PAYBACK_LV3_1"; + + public static string SkillTree_LOYALTY_DOUBLE_PAYBACK_LV3_2 = "LOYALTY_DOUBLE_PAYBACK_LV3_2"; + + public static string SkillTree_LOYALTY_DOUBLE_PAYBACK_LV4_MAXIMUM_AWESOMENESS = "LOYALTY_DOUBLE_PAYBACK_LV4_MAXIMUM_AWESOMENESS"; + + public static string SkillTree_LOYALTY_DOUBLE_PAYBACK_LV4_AWESOME_COMBO = "LOYALTY_DOUBLE_PAYBACK_LV4_AWESOME_COMBO"; + + public static string SkillTree_LOYALTY_RAINBLOW_LV1_1 = "LOYALTY_RAINBLOW_LV1_1"; + + public static string SkillTree_LOYALTY_RAINBLOW_LV1_2 = "LOYALTY_RAINBLOW_LV1_2"; + + public static string SkillTree_LOYALTY_RAINBLOW_LV2_1 = "LOYALTY_RAINBLOW_LV2_1"; + + public static string SkillTree_LOYALTY_RAINBLOW_LV2_2 = "LOYALTY_RAINBLOW_LV2_2"; + + public static string SkillTree_LOYALTY_RAINBLOW_LV3_1 = "LOYALTY_RAINBLOW_LV3_1"; + + public static string SkillTree_LOYALTY_RAINBLOW_LV3_2 = "LOYALTY_RAINBLOW_LV3_2"; + + public static string SkillTree_LOYALTY_RAINBLOW_LV4_WINGPOWER_EMITTER = "LOYALTY_RAINBLOW_LV4_WINGPOWER_EMITTER"; + + public static string SkillTree_LOYALTY_RAINBLOW_LV4_STICKY_TORNADO = "LOYALTY_RAINBLOW_LV4_STICKY_TORNADO"; + + public static string SkillTree_LOYALTY_OMNISMASH_LV1_1 = "LOYALTY_OMNISMASH_LV1_1"; + + public static string SkillTree_LOYALTY_OMNISMASH_LV1_2 = "LOYALTY_OMNISMASH_LV1_2"; + + public static string SkillTree_LOYALTY_OMNISMASH_LV2_1 = "LOYALTY_OMNISMASH_LV2_1"; + + public static string SkillTree_LOYALTY_OMNISMASH_LV2_2 = "LOYALTY_OMNISMASH_LV2_2"; + + public static string SkillTree_LOYALTY_OMNISMASH_LV3_1 = "LOYALTY_OMNISMASH_LV3_1"; + + public static string SkillTree_LOYALTY_OMNISMASH_LV3_2 = "LOYALTY_OMNISMASH_LV3_2"; + + public static string SkillTree_LOYALTY_OMNISMASH_LV4_LET_ME_SHOW_YOU_MY_TRUE_POWER = "LOYALTY_OMNISMASH_LV4_LET_ME_SHOW_YOU_MY_TRUE_POWER"; + + public static string SkillTree_LOYALTY_OMNISMASH_LV4_NOT_A_BIG_DEAL = "LOYALTY_OMNISMASH_LV4_NOT_A_BIG_DEAL"; + + public static string SkillTree_LOYALTY_DIFFENCE_PASSIVE_LV1_1 = "LOYALTY_DIFFENCE_PASSIVE_LV1_1"; + + public static string SkillTree_LOYALTY_DIFFENCE_PASSIVE_LV1_2 = "LOYALTY_DIFFENCE_PASSIVE_LV1_2"; + + public static string SkillTree_LOYALTY_DIFFENCE_PASSIVE_LV2_1 = "LOYALTY_DIFFENCE_PASSIVE_LV2_1"; + + public static string SkillTree_LOYALTY_DIFFENCE_PASSIVE_LV2_2 = "LOYALTY_DIFFENCE_PASSIVE_LV2_2"; + + public static string SkillTree_LOYALTY_DIFFENCE_PASSIVE_LV3_1 = "LOYALTY_DIFFENCE_PASSIVE_LV3_1"; + + public static string SkillTree_LOYALTY_DIFFENCE_PASSIVE_LV3_2 = "LOYALTY_DIFFENCE_PASSIVE_LV3_2"; + + public static string SkillTree_LOYALTY_DIFFENCE_PASSIVE_LV4_DEAL_WITH_IT = "LOYALTY_DIFFENCE_PASSIVE_LV4_DEAL_WITH_IT"; + + public static string SkillTree_LOYALTY_DIFFENCE_PASSIVE_LV4_IT_IS_MY_TURN = "LOYALTY_DIFFENCE_PASSIVE_LV4_IT_IS_MY_TURN"; + + public static string SkillTree_LOYALTY_ATTACK_PASSIVE_LV1_1 = "LOYALTY_ATTACK_PASSIVE_LV1_1"; + + public static string SkillTree_LOYALTY_ATTACK_PASSIVE_LV1_2 = "LOYALTY_ATTACK_PASSIVE_LV1_2"; + + public static string SkillTree_LOYALTY_ATTACK_PASSIVE_LV2_1 = "LOYALTY_ATTACK_PASSIVE_LV2_1"; + + public static string SkillTree_LOYALTY_ATTACK_PASSIVE_LV2_2 = "LOYALTY_ATTACK_PASSIVE_LV2_2"; + + public static string SkillTree_LOYALTY_ATTACK_PASSIVE_LV3_1 = "LOYALTY_ATTACK_PASSIVE_LV3_1"; + + public static string SkillTree_LOYALTY_ATTACK_PASSIVE_LV3_2 = "LOYALTY_ATTACK_PASSIVE_LV3_2"; + + public static string SkillTree_LOYALTY_ATTACK_PASSIVE_LV4_SO_FAST_SO_COOL = "LOYALTY_ATTACK_PASSIVE_LV4_SO_FAST_SO_COOL"; + + public static string SkillTree_LOYALTY_ATTACK_PASSIVE_LV4_HELLO_CAPTAIN_AWESOME = "LOYALTY_ATTACK_PASSIVE_LV4_HELLO_CAPTAIN_AWESOME"; + + public static string SkillTree_LOYALTY_RAINBLOW_LV4_RELATED = "LOYALTY_RAINBLOW_LV4_RELATED"; + + public static string SkillTree_LOYALTY_NOT_A_BIG_DEAL_RELATED = "LOYALTY_NOT_A_BIG_DEAL_RELATED"; + + public static string SkillTree_LOYALTY_DIFFENCE_PASSIVE_LV4_RELATED = "LOYALTY_DIFFENCE_PASSIVE_LV4_RELATED"; + + public static string SkillTree_LOYALTY_SO_FAST_SO_COOL_RELATED = "LOYALTY_SO_FAST_SO_COOL_RELATED"; + + public static string SkillTree_LOYALTY_HELLO_CAPTAIN_AWESOME_RELATED = "LOYALTY_HELLO_CAPTAIN_AWESOME_RELATED"; + + public static string SkillGroup_MAGIC_SPARKLY_CANNON = "MAGIC_SPARKLY_CANNON"; + + public static string SkillGroup_MAGIC_SUMMON_ARROW = "MAGIC_SUMMON_ARROW"; + + public static string SkillGroup_MAGIC_MAGIC_BUBBLE = "MAGIC_MAGIC_BUBBLE"; + + public static string SkillGroup_MAGIC_DEFENSIVE_SKILL = "MAGIC_DEFENSIVE_SKILL"; + + public static string SkillGroup_MAGIC_OFFENSIVE_SKILL = "MAGIC_OFFENSIVE_SKILL"; + + public static string SkillGroup_HONESTY_ROPE = "HONESTY_ROPE"; + + public static string SkillGroup_HONESTY_STOMP = "HONESTY_STOMP"; + + public static string SkillGroup_HONESTY_YEEHAW = "HONESTY_YEEHAW"; + + public static string SkillGroup_HONESTY_DEFENSIVE_SKILL = "HONESTY_DEFENSIVE_SKILL"; + + public static string SkillGroup_HONESTY_OFFENSIVE_SKILL = "HONESTY_OFFENSIVE_SKILL"; + + public static string SkillGroup_LOYALTY_DOUBLE_PAYBACK = "LOYALTY_DOUBLE_PAYBACK"; + + public static string SkillGroup_LOYALTY_RAINBLOW = "LOYALTY_RAINBLOW"; + + public static string SkillGroup_LOYALTY_OMNISMASH = "LOYALTY_OMNISMASH"; + + public static string SkillGroup_LOYALTY_DEFENSIVE_SKILL = "LOYALTY_DEFENSIVE_SKILL"; + + public static string SkillGroup_LOYALTY_OFFENSIVE_SKILL = "LOYALTY_OFFENSIVE_SKILL"; + + public static string SkillType_IOR_DAMAGE = "IOR_DAMAGE"; + + public static string SkillType_IOR_COOLDOWN = "IOR_COOLDOWN"; + + public static string SkillType_IOR_STAGGER = "IOR_STAGGER"; + + public static string SkillType_IOR_HATE = "IOR_HATE"; + + public static string SkillType_IOR_FRIENDSHIP_POINT = "IOR_FRIENDSHIP_POINT"; + + public static string SkillType_PASSIVE_IOR_HEALTH_AND_SHIELD = "PASSIVE_IOR_HEALTH_AND_SHIELD"; + + public static string SkillType_PASSIVE_IOR_STAGGER_RESIST = "PASSIVE_IOR_STAGGER_RESIST"; + + public static string SkillType_UNIQUE = "UNIQUE"; + + public static string SkillUIColor_BLUE = "BLUE"; + + public static string SkillUIColor_PURPLE = "PURPLE"; + + public static string SkillUIColor_RED = "RED"; + + public static string SkillUIColor_YELLOW = "YELLOW"; + + public static string SkillUIColor_GREEN = "GREEN"; + + public static string SkillUIColor_WHITE = "WHITE"; + + public static string SkillUIColor_PINK = "PINK"; + + public static string SkillUIColor_SKY = "SKY"; + + public static string SkillUIColor_ORANGE = "ORANGE"; + + public static string SkillUIColor_COLOR_LOYALTY = "COLOR_LOYALTY"; + + public static string SkillUIColor_COLOR_MAGIC = "COLOR_MAGIC"; + + public static string SkillUIColor_COLOR_HONESTY = "COLOR_HONESTY"; + + public static string LevelTable_CHARACTER_LV1 = "CHARACTER_LV1"; + + public static string LevelTable_CHARACTER_LV2 = "CHARACTER_LV2"; + + public static string LevelTable_CHARACTER_LV3 = "CHARACTER_LV3"; + + public static string LevelTable_CHARACTER_LV4 = "CHARACTER_LV4"; + + public static string LevelTable_CHARACTER_LV5 = "CHARACTER_LV5"; + + public static string LevelTable_CHARACTER_LV6 = "CHARACTER_LV6"; + + public static string LevelTable_CHARACTER_LV7 = "CHARACTER_LV7"; + + public static string LevelTable_CHARACTER_LV8 = "CHARACTER_LV8"; + + public static string LevelTable_CHARACTER_LV9 = "CHARACTER_LV9"; + + public static string LevelTable_CHARACTER_LV10 = "CHARACTER_LV10"; + + public static string LevelTable_CHARACTER_LV11 = "CHARACTER_LV11"; + + public static string LevelTable_CHARACTER_LV12 = "CHARACTER_LV12"; + + public static string LevelTable_CHARACTER_LV13 = "CHARACTER_LV13"; + + public static string LevelTable_CHARACTER_LV14 = "CHARACTER_LV14"; + + public static string LevelTable_CHARACTER_LV15 = "CHARACTER_LV15"; + + public static string LevelTable_CHARACTER_LV16 = "CHARACTER_LV16"; + + public static string LevelTable_CHARACTER_LV17 = "CHARACTER_LV17"; + + public static string LevelTable_CHARACTER_LV18 = "CHARACTER_LV18"; + + public static string LevelTable_CHARACTER_LV19 = "CHARACTER_LV19"; + + public static string LevelTable_CHARACTER_LV20 = "CHARACTER_LV20"; + + public static string EnemyTable_ENEMY_TABLE_CHANGELING = "ENEMY_TABLE_CHANGELING"; + + public static string EnemyTable_ENEMY_TABLE_FLIGHTLING = "ENEMY_TABLE_FLIGHTLING"; + + public static string EnemyTable_ENEMY_TABLE_CHANGELING_ALPHA = "ENEMY_TABLE_CHANGELING_ALPHA"; + + public static string EnemyTable_ENEMY_TABLE_CHRYSALIS = "ENEMY_TABLE_CHRYSALIS"; + + public static string Ability_MAGIC_BASE_ATTACK = "MAGIC_BASE_ATTACK"; + + public static string Ability_SPARKLY_CANNON = "SPARKLY_CANNON"; + + public static string Ability_SUMMON_ARROW = "SUMMON_ARROW"; + + public static string Ability_MAGIC_BUBBLE = "MAGIC_BUBBLE"; + + public static string Ability_HONESTY_BASE_ATTACK = "HONESTY_BASE_ATTACK"; + + public static string Ability_ROPE = "ROPE"; + + public static string Ability_STOMP = "STOMP"; + + public static string Ability_YEEHAW = "YEEHAW"; + + public static string Ability_HONESTY_EVASION = "HONESTY_EVASION"; + + public static string Ability_LOYALTY_BASE_ATTACK = "LOYALTY_BASE_ATTACK"; + + public static string Ability_DOUBLE_PAYBACK = "DOUBLE_PAYBACK"; + + public static string Ability_RAINBLOW = "RAINBLOW"; + + public static string Ability_OMNISMASH = "OMNISMASH"; + + public static string Ability_LOYALTY_EVASION = "LOYALTY_EVASION"; + + public static string Achievement_MAGIC_WAVE_ACHIEVEMENT_1 = "MAGIC_WAVE_ACHIEVEMENT_1"; + + public static string Achievement_MAGIC_WAVE_ACHIEVEMENT_2 = "MAGIC_WAVE_ACHIEVEMENT_2"; + + public static string Achievement_MAGIC_WAVE_ACHIEVEMENT_3 = "MAGIC_WAVE_ACHIEVEMENT_3"; + + public static string Achievement_MAGIC_DIFFICULTY_ACHIEVEMENT_1 = "MAGIC_DIFFICULTY_ACHIEVEMENT_1"; + + public static string Achievement_MAGIC_DIFFICULTY_ACHIEVEMENT_2 = "MAGIC_DIFFICULTY_ACHIEVEMENT_2"; + + public static string Achievement_MAGIC_DIFFICULTY_ACHIEVEMENT_3 = "MAGIC_DIFFICULTY_ACHIEVEMENT_3"; + + public static string Achievement_HONESTY_WAVE_ACHIEVEMENT_1 = "HONESTY_WAVE_ACHIEVEMENT_1"; + + public static string Achievement_HONESTY_WAVE_ACHIEVEMENT_2 = "HONESTY_WAVE_ACHIEVEMENT_2"; + + public static string Achievement_HONESTY_WAVE_ACHIEVEMENT_3 = "HONESTY_WAVE_ACHIEVEMENT_3"; + + public static string Achievement_HONESTY_DIFFICULTY_ACHIEVEMENT_1 = "HONESTY_DIFFICULTY_ACHIEVEMENT_1"; + + public static string Achievement_HONESTY_DIFFICULTY_ACHIEVEMENT_2 = "HONESTY_DIFFICULTY_ACHIEVEMENT_2"; + + public static string Achievement_HONESTY_DIFFICULTY_ACHIEVEMENT_3 = "HONESTY_DIFFICULTY_ACHIEVEMENT_3"; + + public static string Achievement_LOYALTY_WAVE_ACHIEVEMENT_1 = "LOYALTY_WAVE_ACHIEVEMENT_1"; + + public static string Achievement_LOYALTY_WAVE_ACHIEVEMENT_2 = "LOYALTY_WAVE_ACHIEVEMENT_2"; + + public static string Achievement_LOYALTY_WAVE_ACHIEVEMENT_3 = "LOYALTY_WAVE_ACHIEVEMENT_3"; + + public static string Achievement_LOYALTY_DIFFICULTY_ACHIEVEMENT_1 = "LOYALTY_DIFFICULTY_ACHIEVEMENT_1"; + + public static string Achievement_LOYALTY_DIFFICULTY_ACHIEVEMENT_2 = "LOYALTY_DIFFICULTY_ACHIEVEMENT_2"; + + public static string Achievement_LOYALTY_DIFFICULTY_ACHIEVEMENT_3 = "LOYALTY_DIFFICULTY_ACHIEVEMENT_3"; + + public static string Achievement_CHANGELING_BEATING_1 = "CHANGELING_BEATING_1"; + + public static string Achievement_CHANGELING_BEATING_2 = "CHANGELING_BEATING_2"; + + public static string Achievement_CHANGELING_BEATING_3 = "CHANGELING_BEATING_3"; + + public static string Achievement_CHANGELING_DIFFICULTY_1 = "CHANGELING_DIFFICULTY_1"; + + public static string Achievement_CHANGELING_DIFFICULTY_2 = "CHANGELING_DIFFICULTY_2"; + + public static string Achievement_ENEMY_BEATING_1 = "ENEMY_BEATING_1"; + + public static string Achievement_FRIEND_REVIVING_1 = "FRIEND_REVIVING_1"; + + public static string Achievement_FRIEND_REVIVING_2 = "FRIEND_REVIVING_2"; + + public static string Achievement_FRIEND_REVIVING_3 = "FRIEND_REVIVING_3"; + + public static string Achievement_IMMORTAL_1 = "IMMORTAL_1"; + + public static string Achievement_IMMORTAL_2 = "IMMORTAL_2"; + + public static string Achievement_IMMORTAL_3 = "IMMORTAL_3"; + + public static string Achievement_PROMOTE_1 = "PROMOTE_1"; + + public static string Achievement_PROMOTE_2 = "PROMOTE_2"; + + public static string Achievement_PROMOTE_3 = "PROMOTE_3"; + + public static string Achievement_SURVIVAL_1 = "SURVIVAL_1"; + + public static string Achievement_SURVIVAL_2 = "SURVIVAL_2"; + + public static string Achievement_SURVIVAL_3 = "SURVIVAL_3"; + + public static string Achievement_SURVIVAL_4 = "SURVIVAL_4"; + + public static string Achievement_SURVIVAL_5 = "SURVIVAL_5"; + + public static string Achievement_SURVIVAL_6 = "SURVIVAL_6"; + + public static string Achievement_SURVIVAL_WITH_UNDEFEATED_1 = "SURVIVAL_WITH_UNDEFEATED_1"; + + public static string Achievement_SURVIVAL_WITH_UNDEFEATED_2 = "SURVIVAL_WITH_UNDEFEATED_2"; + + public static string Achievement_SURVIVAL_WITH_UNDEFEATED_3 = "SURVIVAL_WITH_UNDEFEATED_3"; + + public static string Achievement_SURVIVAL_WITH_UNDEFEATED_4 = "SURVIVAL_WITH_UNDEFEATED_4"; + + public static string Achievement_SURVIVAL_WITH_UNDEFEATED_5 = "SURVIVAL_WITH_UNDEFEATED_5"; + + public static string Achievement_SURVIVAL_WITH_UNDEFEATED_6 = "SURVIVAL_WITH_UNDEFEATED_6"; + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDELevelTableData.cs b/Assets/Plugins/GameDataEditor/GDELevelTableData.cs new file mode 100644 index 0000000..f0ac3ae --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDELevelTableData.cs @@ -0,0 +1,132 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDELevelTableData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDELevelTableData : IGDEData + { + private static string LevelKey = "Level"; + + private int _Level; + + private static string SkillPointKey = "SkillPoint"; + + private int _SkillPoint; + + private static string ExpRequirementKey = "ExpRequirement"; + + private int _ExpRequirement; + + public int Level + { + get + { + return _Level; + } + set + { + if (_Level != value) + { + _Level = value; + GDEDataManager.SetInt(_key + "_" + LevelKey, _Level); + } + } + } + + public int SkillPoint + { + get + { + return _SkillPoint; + } + set + { + if (_SkillPoint != value) + { + _SkillPoint = value; + GDEDataManager.SetInt(_key + "_" + SkillPointKey, _SkillPoint); + } + } + } + + public int ExpRequirement + { + get + { + return _ExpRequirement; + } + set + { + if (_ExpRequirement != value) + { + _ExpRequirement = value; + GDEDataManager.SetInt(_key + "_" + ExpRequirementKey, _ExpRequirement); + } + } + } + + public GDELevelTableData() + { + _key = string.Empty; + } + + public GDELevelTableData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetInt(LevelKey, out _Level); + dict.TryGetInt(SkillPointKey, out _SkillPoint); + dict.TryGetInt(ExpRequirementKey, out _ExpRequirement); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _Level = GDEDataManager.GetInt(_key + "_" + LevelKey, _Level); + _SkillPoint = GDEDataManager.GetInt(_key + "_" + SkillPointKey, _SkillPoint); + _ExpRequirement = GDEDataManager.GetInt(_key + "_" + ExpRequirementKey, _ExpRequirement); + } + + public void Reset_Level() + { + GDEDataManager.ResetToDefault(_key, LevelKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(LevelKey, out _Level); + } + + public void Reset_SkillPoint() + { + GDEDataManager.ResetToDefault(_key, SkillPointKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(SkillPointKey, out _SkillPoint); + } + + public void Reset_ExpRequirement() + { + GDEDataManager.ResetToDefault(_key, ExpRequirementKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(ExpRequirementKey, out _ExpRequirement); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, LevelKey); + GDEDataManager.ResetToDefault(_key, SkillPointKey); + GDEDataManager.ResetToDefault(_key, ExpRequirementKey); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEPPX.cs b/Assets/Plugins/GameDataEditor/GDEPPX.cs new file mode 100644 index 0000000..d82ca76 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEPPX.cs @@ -0,0 +1,1220 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEPPX +using System; +using System.Collections; +using System.Collections.Generic; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public class GDEPPX + { + private enum ListType + { + Float, + Int32, + Bool, + String, + Vector2, + Vector3, + Quaternion, + Color, + Vector4, + Float_2D, + Int32_2D, + Bool_2D, + String_2D, + Vector2_2D, + Vector3_2D, + Vector4_2D, + Quaternion_2D, + Color_2D + } + + private static int endianDiff1; + + private static int endianDiff2; + + private static int idx; + + private static byte[] byteBlock; + + private static void ConvertToInt(List list, byte[] bytes) + { + ConvertToInt((IList)list, bytes); + } + + private static void ConvertToInt(IList list, byte[] bytes) + { + list.Add(ConvertBytesToInt32(bytes)); + } + + private static void ConvertToFloat(List list, byte[] bytes) + { + ConvertToFloat((IList)list, bytes); + } + + private static void ConvertToFloat(IList list, byte[] bytes) + { + list.Add(ConvertBytesToFloat(bytes)); + } + + private static void ConvertToVector2(List list, byte[] bytes) + { + ConvertToVector2((IList)list, bytes); + } + + private static void ConvertToVector2(IList list, byte[] bytes) + { + list.Add(new Vector2(ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes))); + } + + private static void ConvertToVector3(List list, byte[] bytes) + { + ConvertToVector3((IList)list, bytes); + } + + private static void ConvertToVector3(IList list, byte[] bytes) + { + list.Add(new Vector3(ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes))); + } + + private static void ConvertToVector4(List list, byte[] bytes) + { + ConvertToVector4((IList)list, bytes); + } + + private static void ConvertToVector4(IList list, byte[] bytes) + { + list.Add(new Vector4(ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes))); + } + + private static void ConvertToQuaternion(List list, byte[] bytes) + { + ConvertToQuaternion((IList)list, bytes); + } + + private static void ConvertToQuaternion(IList list, byte[] bytes) + { + list.Add(new Quaternion(ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes))); + } + + private static void ConvertToColor(List list, byte[] bytes) + { + ConvertToColor((IList)list, bytes); + } + + private static void ConvertToColor(IList list, byte[] bytes) + { + list.Add(new Color(ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes))); + } + + private static void ConvertFromInt(int[] array, byte[] bytes, int i) + { + ConvertInt32ToBytes(array[i], bytes); + } + + private static void ConvertFromInt(IList list, byte[] bytes, int i) + { + ConvertInt32ToBytes((int)list[i], bytes); + } + + private static void ConvertFromFloat(float[] array, byte[] bytes, int i) + { + ConvertFloatToBytes(array[i], bytes); + } + + private static void ConvertFromFloat(IList list, byte[] bytes, int i) + { + ConvertFloatToBytes((float)list[i], bytes); + } + + private static void ConvertFromVector2(Vector2[] array, byte[] bytes, int i) + { + ConvertFloatToBytes(array[i].x, bytes); + ConvertFloatToBytes(array[i].y, bytes); + } + + private static void ConvertFromVector2(IList list, byte[] bytes, int i) + { + ConvertFloatToBytes(((Vector2)list[i]).x, bytes); + ConvertFloatToBytes(((Vector2)list[i]).y, bytes); + } + + private static void ConvertFromVector3(Vector3[] array, byte[] bytes, int i) + { + ConvertFloatToBytes(array[i].x, bytes); + ConvertFloatToBytes(array[i].y, bytes); + ConvertFloatToBytes(array[i].z, bytes); + } + + private static void ConvertFromVector3(IList list, byte[] bytes, int i) + { + ConvertFloatToBytes(((Vector3)list[i]).x, bytes); + ConvertFloatToBytes(((Vector3)list[i]).y, bytes); + ConvertFloatToBytes(((Vector3)list[i]).z, bytes); + } + + private static void ConvertFromVector4(Vector4[] array, byte[] bytes, int i) + { + ConvertFloatToBytes(array[i].x, bytes); + ConvertFloatToBytes(array[i].y, bytes); + ConvertFloatToBytes(array[i].z, bytes); + ConvertFloatToBytes(array[i].w, bytes); + } + + private static void ConvertFromVector4(IList list, byte[] bytes, int i) + { + ConvertFloatToBytes(((Vector4)list[i]).x, bytes); + ConvertFloatToBytes(((Vector4)list[i]).y, bytes); + ConvertFloatToBytes(((Vector4)list[i]).z, bytes); + ConvertFloatToBytes(((Vector4)list[i]).w, bytes); + } + + private static void ConvertFromQuaternion(Quaternion[] array, byte[] bytes, int i) + { + ConvertFloatToBytes(array[i].x, bytes); + ConvertFloatToBytes(array[i].y, bytes); + ConvertFloatToBytes(array[i].z, bytes); + ConvertFloatToBytes(array[i].w, bytes); + } + + private static void ConvertFromQuaternion(IList list, byte[] bytes, int i) + { + ConvertFloatToBytes(((Quaternion)list[i]).x, bytes); + ConvertFloatToBytes(((Quaternion)list[i]).y, bytes); + ConvertFloatToBytes(((Quaternion)list[i]).z, bytes); + ConvertFloatToBytes(((Quaternion)list[i]).w, bytes); + } + + private static void ConvertFromColor(Color[] array, byte[] bytes, int i) + { + ConvertFloatToBytes(array[i].r, bytes); + ConvertFloatToBytes(array[i].g, bytes); + ConvertFloatToBytes(array[i].b, bytes); + ConvertFloatToBytes(array[i].a, bytes); + } + + private static void ConvertFromColor(IList list, byte[] bytes, int i) + { + ConvertFloatToBytes(((Color)list[i]).r, bytes); + ConvertFloatToBytes(((Color)list[i]).g, bytes); + ConvertFloatToBytes(((Color)list[i]).b, bytes); + ConvertFloatToBytes(((Color)list[i]).a, bytes); + } + + private static void ConvertFloatToBytes(float f, byte[] bytes) + { + byteBlock = BitConverter.GetBytes(f); + ConvertTo4Bytes(bytes); + } + + private static float ConvertBytesToFloat(byte[] bytes) + { + ConvertFrom4Bytes(bytes); + return BitConverter.ToSingle(byteBlock, 0); + } + + private static void ConvertInt32ToBytes(int i, byte[] bytes) + { + byteBlock = BitConverter.GetBytes(i); + ConvertTo4Bytes(bytes); + } + + private static int ConvertBytesToInt32(byte[] bytes) + { + ConvertFrom4Bytes(bytes); + return BitConverter.ToInt32(byteBlock, 0); + } + + private static void ConvertTo4Bytes(byte[] bytes) + { + bytes[idx] = byteBlock[endianDiff1]; + bytes[idx + 1] = byteBlock[1 + endianDiff2]; + bytes[idx + 2] = byteBlock[2 - endianDiff2]; + bytes[idx + 3] = byteBlock[3 - endianDiff1]; + idx += 4; + } + + private static void ConvertFrom4Bytes(byte[] bytes) + { + byteBlock[endianDiff1] = bytes[idx]; + byteBlock[1 + endianDiff2] = bytes[idx + 1]; + byteBlock[2 - endianDiff2] = bytes[idx + 2]; + byteBlock[3 - endianDiff1] = bytes[idx + 3]; + idx += 4; + } + + public static bool GetBool(string name) + { + return PlayerPrefs.GetInt(name) == 1; + } + + public static bool GetBool(string name, bool defaultValue) + { + return 1 == PlayerPrefs.GetInt(name, defaultValue ? 1 : 0); + } + + public static long GetLong(string key, long defaultValue) + { + SplitLong(defaultValue, out var lowBits, out var highBits); + lowBits = PlayerPrefs.GetInt(key + "_lowBits", lowBits); + highBits = PlayerPrefs.GetInt(key + "_highBits", highBits); + ulong num = (uint)highBits; + num <<= 32; + return (long)(num | (uint)lowBits); + } + + public static long GetLong(string key) + { + int @int = PlayerPrefs.GetInt(key + "_lowBits"); + int int2 = PlayerPrefs.GetInt(key + "_highBits"); + ulong num = (uint)int2; + num <<= 32; + return (long)(num | (uint)@int); + } + + private static Vector2 GetVector2(string key) + { + List floatList = GetFloatList(key); + if (floatList.Count < 2) + { + return Vector2.zero; + } + return new Vector2(floatList[0], floatList[1]); + } + + public static Vector2 GetVector2(string key, Vector2 defaultValue) + { + Vector2 result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetVector2(key); + } + return result; + } + + public static Color GetColor(string key) + { + List floatList = GetFloatList(key); + if (floatList.Count < 4) + { + return Color.black; + } + return new Color(floatList[0], floatList[1], floatList[2], floatList[3]); + } + + public static Color GetColor(string key, Color defaultValue) + { + Color result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetColor(key); + } + return result; + } + + public static Vector3 GetVector3(string key) + { + List floatList = GetFloatList(key); + if (floatList.Count < 3) + { + return Vector3.zero; + } + return new Vector3(floatList[0], floatList[1], floatList[2]); + } + + public static Vector3 GetVector3(string key, Vector3 defaultValue) + { + Vector3 result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetVector3(key); + } + return result; + } + + public static Vector4 GetVector4(string key) + { + List floatList = GetFloatList(key); + if (floatList.Count < 4) + { + return Vector4.zero; + } + return new Vector4(floatList[0], floatList[1], floatList[2], floatList[3]); + } + + public static Vector4 GetVector4(string key, Vector4 defaultValue) + { + Vector4 result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetVector4(key); + } + return result; + } + + public static List GetBoolList(string key) + { + List list = new List(); + if (PlayerPrefs.HasKey(key)) + { + byte[] array = Convert.FromBase64String(PlayerPrefs.GetString(key)); + if (array.Length < 5) + { + Debug.LogError($"Corrupt preference file for: {key}"); + return list; + } + if (array[0] != 2) + { + Debug.LogError($"{key} is not a boolean array."); + return list; + } + Initialize(); + byte[] array2 = new byte[array.Length - 5]; + Array.Copy(array, 5, array2, 0, array2.Length); + BitArray bitArray = new BitArray(array2); + bitArray.Length = ConvertBytesToInt32(array); + bool[] array3 = new bool[bitArray.Count]; + bitArray.CopyTo(array3, 0); + list.AddRange(array3); + } + return list; + } + + public static List GetBoolList(string key, List defaultValue) + { + List result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetBoolList(key); + } + return result; + } + + public static List> Get2DBoolList(string key) + { + List> list = new List>(); + if (PlayerPrefs.HasKey(key)) + { + byte[] array = Convert.FromBase64String(PlayerPrefs.GetString(key)); + if (array.Length < 5) + { + Debug.LogError($"Corrupt preference file for: {key}"); + return list; + } + if (array[0] != 11) + { + Debug.LogError($"{key} is not a boolean array."); + return list; + } + int num = BitConverter.ToInt32(array, 1); + int num2 = num * 4 + 5; + byte[] array2 = new byte[array.Length - num2]; + Array.Copy(array, num2, array2, 0, array2.Length); + BitArray bitArray = new BitArray(array2); + int num3 = 5; + int num4 = 0; + int num5 = 0; + for (int i = 0; i < num; i++) + { + num4 = BitConverter.ToInt32(array, num3); + num3 += 4; + List list2 = new List(); + for (int j = 0; j < num4; j++) + { + list2.Add(bitArray.Get(num5++)); + } + list.Add(list2); + } + } + return list; + } + + public static List> Get2DBoolList(string key, List> defaultValue) + { + List> result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = Get2DBoolList(key); + } + return result; + } + + public static List GetStringList(string key) + { + if (PlayerPrefs.HasKey(key)) + { + string @string = PlayerPrefs.GetString(key); + List list = Json.Deserialize(@string) as List; + return list.ConvertAll((object obj) => obj.ToString()); + } + return new List(); + } + + public static List GetStringList(string key, List defaultValue) + { + List result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetStringList(key); + } + return result; + } + + public static List> Get2DStringList(string key) + { + if (PlayerPrefs.HasKey(key)) + { + string @string = PlayerPrefs.GetString(key); + List list = Json.Deserialize(@string) as List; + List> list2 = new List>(); + { + foreach (object item in list) + { + List list3 = item as List; + list2.Add(list3.ConvertAll((object obj) => obj.ToString())); + } + return list2; + } + } + return new List>(); + } + + public static List> Get2DStringList(string key, List> defaultValue) + { + List> result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = Get2DStringList(key); + } + return result; + } + + public static List GetIntList(string key) + { + List list = new List(); + GetValue(key, list, ListType.Int32, 1, ConvertToInt); + return list; + } + + public static List GetIntList(string key, List defaultValue) + { + List result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetIntList(key); + } + return result; + } + + public static List> Get2DIntList(string key) + { + List> list = new List>(); + Get2DValue(key, list, ListType.Int32_2D, 1, ConvertToInt); + return list; + } + + public static List> Get2DIntList(string key, List> defaultValue) + { + List> result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = Get2DIntList(key); + } + return result; + } + + public static List GetFloatList(string key) + { + List list = new List(); + GetValue(key, list, ListType.Float, 1, ConvertToFloat); + return list; + } + + public static List GetFloatList(string key, List defaultValue) + { + List result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetFloatList(key); + } + return result; + } + + public static List> Get2DFloatList(string key) + { + List> list = new List>(); + Get2DValue(key, list, ListType.Float_2D, 1, ConvertToFloat); + return list; + } + + public static List> Get2DFloatList(string key, List> defaultValue) + { + List> result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = Get2DFloatList(key); + } + return result; + } + + public static List GetVector2List(string key) + { + List list = new List(); + GetValue(key, list, ListType.Vector2, 2, ConvertToVector2); + return list; + } + + public static List GetVector2List(string key, List defaultValue) + { + List result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetVector2List(key); + } + return result; + } + + public static List> Get2DVector2List(string key) + { + List> list = new List>(); + Get2DValue(key, list, ListType.Vector2_2D, 2, ConvertToVector2); + return list; + } + + public static List> Get2DVector2List(string key, List> defaultValue) + { + List> result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = Get2DVector2List(key); + } + return result; + } + + public static List GetVector3List(string key) + { + List list = new List(); + GetValue(key, list, ListType.Vector3, 3, ConvertToVector3); + return list; + } + + public static List GetVector3List(string key, List defaultValue) + { + List result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetVector3List(key); + } + return result; + } + + public static List> Get2DVector3List(string key) + { + List> list = new List>(); + Get2DValue(key, list, ListType.Vector3_2D, 3, ConvertToVector3); + return list; + } + + public static List> Get2DVector3List(string key, List> defaultValue) + { + List> result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = Get2DVector3List(key); + } + return result; + } + + public static List GetVector4List(string key) + { + List list = new List(); + GetValue(key, list, ListType.Vector4, 4, ConvertToVector4); + return list; + } + + public static List GetVector4List(string key, List defaultValue) + { + List result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetVector4List(key); + } + return result; + } + + public static List> Get2DVector4List(string key) + { + List> list = new List>(); + Get2DValue(key, list, ListType.Vector4_2D, 4, ConvertToVector4); + return list; + } + + public static List> Get2DVector4List(string key, List> defaultValue) + { + List> result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = Get2DVector4List(key); + } + return result; + } + + public static List GetQuaternionList(string key) + { + List list = new List(); + GetValue(key, list, ListType.Quaternion, 4, ConvertToQuaternion); + return list; + } + + public static List GetQuaternionList(string key, List defaultValue) + { + List result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetQuaternionList(key); + } + return result; + } + + public static List> Get2DQuaternionList(string key) + { + List> list = new List>(); + Get2DValue(key, list, ListType.Quaternion_2D, 4, ConvertToQuaternion); + return list; + } + + public static List> Get2DQuaternionList(string key, List> defaultValue) + { + List> result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = Get2DQuaternionList(key); + } + return result; + } + + public static List GetColorList(string key) + { + List list = new List(); + GetValue(key, list, ListType.Color, 4, ConvertToColor); + return list; + } + + public static List GetColorList(string key, List defaultValue) + { + List result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetColorList(key); + } + return result; + } + + public static List> Get2DColorList(string key) + { + List> list = new List>(); + Get2DValue(key, list, ListType.Color_2D, 4, ConvertToColor); + return list; + } + + public static List> Get2DColorList(string key, List> defaultValue) + { + List> result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = Get2DColorList(key); + } + return result; + } + + private static void GetValue(string key, T list, ListType arrayType, int vectorNumber, Action convert) where T : IList + { + if (!PlayerPrefs.HasKey(key)) + { + return; + } + byte[] array = Convert.FromBase64String(PlayerPrefs.GetString(key)); + if ((array.Length - 1) % (vectorNumber * 4) != 0) + { + Debug.LogError($"Corrupt preference file for: {key}"); + return; + } + if ((ListType)array[0] != arrayType) + { + Debug.LogError($"{key} is not a {arrayType.ToString()} array."); + return; + } + Initialize(); + int num = (array.Length - 1) / (vectorNumber * 4); + for (int i = 0; i < num; i++) + { + convert(list, array); + } + } + + private static void Get2DValue(string key, T list, ListType arrayType, int vectorNumber, Action convert) where T : IList + { + if (!PlayerPrefs.HasKey(key)) + { + return; + } + byte[] array = Convert.FromBase64String(PlayerPrefs.GetString(key)); + if (array.Length < 5) + { + Debug.LogError($"Corrupt preference file for: {key}"); + return; + } + int num = BitConverter.ToInt32(array, 1); + byte[] array2 = new byte[num * 4 + 5]; + Array.Copy(array, 0, array2, 0, array2.Length); + List list2 = new List(array); + list2.RemoveRange(1, array2.Length - 1); + array = list2.ToArray(); + if ((array.Length - 1) % (vectorNumber * 4) != 0) + { + Debug.LogError($"Corrupt preference file for: {key}"); + return; + } + if ((ListType)array[0] != arrayType) + { + Debug.LogError(string.Format("Corrupt preference file for: {0}", key, arrayType.ToString())); + return; + } + Initialize(); + GetNewListForType(arrayType, out var list3); + int num2 = (array.Length - 1) / (vectorNumber * 4); + for (int i = 0; i < num2; i++) + { + convert(list3, array); + } + int num3 = 0; + int num4 = 0; + int num5 = 5; + for (int j = 0; j < num; j++) + { + num3 = BitConverter.ToInt32(array2, num5); + num5 += 4; + GetNewListForType(arrayType, out var list4); + for (int k = 0; k < num3; k++) + { + list4.Add(list3[num4++]); + } + list.Add(list4); + } + } + + private static void GetNewListForType(ListType arrayType, out IList list) + { + list = null; + if (arrayType.Equals(ListType.Bool_2D)) + { + list = new List(); + } + else if (arrayType.Equals(ListType.Int32_2D)) + { + list = new List(); + } + else if (arrayType.Equals(ListType.Float_2D)) + { + list = new List(); + } + else if (arrayType.Equals(ListType.Vector2_2D)) + { + list = new List(); + } + else if (arrayType.Equals(ListType.Vector3_2D)) + { + list = new List(); + } + else if (arrayType.Equals(ListType.Vector4_2D)) + { + list = new List(); + } + else if (arrayType.Equals(ListType.Quaternion_2D)) + { + list = new List(); + } + else if (arrayType.Equals(ListType.Color_2D)) + { + list = new List(); + } + } + + public static Quaternion GetQuaternion(string key) + { + List floatList = GetFloatList(key); + if (floatList.Count < 4) + { + return Quaternion.identity; + } + return new Quaternion(floatList[0], floatList[1], floatList[2], floatList[3]); + } + + public static Quaternion GetQuaternion(string key, Quaternion defaultValue) + { + Quaternion result = defaultValue; + if (PlayerPrefs.HasKey(key)) + { + result = GetQuaternion(key); + } + return result; + } + + private static void Initialize(bool is2DList = false) + { + if (BitConverter.IsLittleEndian) + { + endianDiff1 = 0; + endianDiff2 = 0; + } + else + { + endianDiff1 = 3; + endianDiff2 = 1; + } + if (byteBlock == null) + { + byteBlock = new byte[4]; + } + if (is2DList) + { + idx = 0; + } + else + { + idx = 1; + } + } + + private static void SplitLong(long input, out int lowBits, out int highBits) + { + lowBits = (int)input; + highBits = (int)(input >> 32); + } + + public static void ShowArrayType(string key) + { + byte[] array = Convert.FromBase64String(PlayerPrefs.GetString(key)); + if (array.Length > 0) + { + ListType listType = (ListType)array[0]; + Debug.Log(string.Format("Corrupt preference file for: {0}", key, listType.ToString())); + } + } + + private static bool SaveBytes(string key, byte[] bytes) + { + try + { + PlayerPrefs.SetString(key, Convert.ToBase64String(bytes)); + } + catch + { + return false; + } + return true; + } + + public static bool SetBool(string name, bool value) + { + try + { + PlayerPrefs.SetInt(name, value ? 1 : 0); + } + catch + { + return false; + } + return true; + } + + public static void SetLong(string key, long value) + { + SplitLong(value, out var lowBits, out var highBits); + PlayerPrefs.SetInt(key + "_lowBits", lowBits); + PlayerPrefs.SetInt(key + "_highBits", highBits); + } + + public static bool SetVector2(string key, Vector2 vector) + { + return SetFloatList(key, new List { vector.x, vector.y }); + } + + public static bool SetVector3(string key, Vector3 vector) + { + return SetFloatList(key, new List { vector.x, vector.y, vector.z }); + } + + public static bool SetVector4(string key, Vector4 vector) + { + return SetFloatList(key, new List { vector.x, vector.y, vector.z, vector.w }); + } + + public static bool SetQuaternion(string key, Quaternion vector) + { + return SetFloatList(key, new List { vector.x, vector.y, vector.z, vector.w }); + } + + public static bool SetColor(string key, Color color) + { + return SetFloatList(key, new List { color.r, color.g, color.b, color.a }); + } + + public static bool SetGameObject(string key, GameObject go) + { + return true; + } + + public static bool SetTexture2D(string key, Texture2D tex) + { + return true; + } + + public static bool SetMaterial(string key, Material mat) + { + return true; + } + + public static bool SetAudioClip(string key, AudioClip aud) + { + return true; + } + + public static bool SetBoolList(string key, List boolList) + { + byte[] array = new byte[(boolList.Count + 7) / 8 + 5]; + array[0] = Convert.ToByte(ListType.Bool); + BitArray bitArray = new BitArray(boolList.ToArray()); + bitArray.CopyTo(array, 5); + Initialize(); + ConvertInt32ToBytes(boolList.Count, array); + return SaveBytes(key, array); + } + + public static bool Set2DBoolList(string key, List> list) + { + int num = 5; + List list2 = new List(); + foreach (List item in list) + { + num += 4; + list2.AddRange(item); + } + num += (list2.Count + 7) / 8; + int num2 = 0; + byte[] array = new byte[num]; + array[0] = Convert.ToByte(ListType.Bool_2D); + num2++; + byte[] bytes = BitConverter.GetBytes(list.Count); + if (!BitConverter.IsLittleEndian) + { + Array.Reverse(bytes); + } + bytes.CopyTo(array, num2); + num2 += bytes.Length; + foreach (List item2 in list) + { + bytes = BitConverter.GetBytes(item2.Count); + if (!BitConverter.IsLittleEndian) + { + Array.Reverse(bytes); + } + bytes.CopyTo(array, num2); + num2 += bytes.Length; + } + BitArray bitArray = new BitArray(list2.ToArray()); + bitArray.CopyTo(array, num2); + return SaveBytes(key, array); + } + + public static bool SetStringList(string key, List list) + { + bool result = false; + try + { + string value = Json.Serialize(list); + PlayerPrefs.SetString(key, value); + result = true; + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static bool Set2DStringList(string key, List> list) + { + bool result = false; + try + { + string value = Json.Serialize(list); + PlayerPrefs.SetString(key, value); + result = true; + } + catch (Exception exception) + { + Debug.LogException(exception); + } + return result; + } + + public static bool SetIntList(string key, List list) + { + return SetValue(key, list, ListType.Int32, 1, ConvertFromInt); + } + + public static bool SetFloatList(string key, List list) + { + return SetValue(key, list, ListType.Float, 1, ConvertFromFloat); + } + + public static bool SetVector2List(string key, List list) + { + return SetValue(key, list, ListType.Vector2, 2, ConvertFromVector2); + } + + public static bool SetVector3List(string key, List list) + { + return SetValue(key, list, ListType.Vector3, 3, ConvertFromVector3); + } + + public static bool SetVector4List(string key, List list) + { + return SetValue(key, list, ListType.Vector4, 4, ConvertFromVector4); + } + + public static bool SetQuaternionList(string key, List list) + { + return SetValue(key, list, ListType.Quaternion, 4, ConvertFromQuaternion); + } + + public static bool SetColorList(string key, List list) + { + return SetValue(key, list, ListType.Color, 4, ConvertFromColor); + } + + public static bool SetGameObjectList(string key, List list) + { + return true; + } + + public static bool SetTexture2DList(string key, List list) + { + return true; + } + + public static bool SetMaterialList(string key, List List) + { + return true; + } + + public static bool SetAudioClipList(string key, List list) + { + return true; + } + + private static bool SetValue(string key, T array, ListType arrayType, int vectorNumber, Action convert) where T : IList + { + byte[] array2 = new byte[4 * array.Count * vectorNumber + 1]; + array2[0] = Convert.ToByte(arrayType); + Initialize(); + for (int i = 0; i < array.Count; i++) + { + convert(array, array2, i); + } + return SaveBytes(key, array2); + } + + public static bool Set2DIntList(string key, List> int2DList) + { + return Set2DValue(key, int2DList, ListType.Int32_2D, 1, ConvertFromInt); + } + + public static bool Set2DFloatList(string key, List> float2DList) + { + return Set2DValue(key, float2DList, ListType.Float_2D, 1, ConvertFromFloat); + } + + public static bool Set2DVector2List(string key, List> vec2_2DList) + { + return Set2DValue(key, vec2_2DList, ListType.Vector2_2D, 2, ConvertFromVector2); + } + + public static bool Set2DVector3List(string key, List> vec3_2DList) + { + return Set2DValue(key, vec3_2DList, ListType.Vector3_2D, 3, ConvertFromVector3); + } + + public static bool Set2DVector4List(string key, List> vec4_2DList) + { + return Set2DValue(key, vec4_2DList, ListType.Vector4_2D, 4, ConvertFromVector4); + } + + public static bool Set2DGameObjectList(string key, List> go_2DList) + { + return true; + } + + public static bool Set2DTexture2DList(string key, List> tex_2DList) + { + return true; + } + + public static bool Set2DMaterialList(string key, List> mat_2DList) + { + return true; + } + + public static bool Set2DAudioClipList(string key, List> aud_2DList) + { + return true; + } + + public static bool Set2DQuaternionList(string key, List> quaternion_2DList) + { + return Set2DValue(key, quaternion_2DList, ListType.Quaternion_2D, 4, ConvertFromQuaternion); + } + + public static bool Set2DColorList(string key, List> color_2DList) + { + return Set2DValue(key, color_2DList, ListType.Color_2D, 4, ConvertFromColor); + } + + private static bool Set2DValue(string key, IList list, ListType arrayType, int vectorNumber, Action convert) + { + List list2 = new List(); + list2.Add(Convert.ToByte(arrayType)); + byte[] bytes = BitConverter.GetBytes(list.Count); + if (!BitConverter.IsLittleEndian) + { + Array.Reverse(bytes); + } + list2.AddRange(bytes); + foreach (IList item in list) + { + bytes = BitConverter.GetBytes(item.Count); + if (!BitConverter.IsLittleEndian) + { + Array.Reverse(bytes); + } + list2.AddRange(bytes); + } + for (int i = 0; i < list.Count; i++) + { + IList list4 = list[i] as IList; + byte[] array = new byte[4 * list4.Count * vectorNumber]; + Initialize(is2DList: true); + for (int j = 0; j < list4.Count; j++) + { + convert(list4, array, j); + } + list2.AddRange(array); + } + return SaveBytes(key, list2.ToArray()); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEReadSceneCustomData.cs b/Assets/Plugins/GameDataEditor/GDEReadSceneCustomData.cs new file mode 100644 index 0000000..4ffa348 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEReadSceneCustomData.cs @@ -0,0 +1,72 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEReadSceneCustomData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDEReadSceneCustomData : IGDEData + { + private static string descriptionKey = "description"; + + private string _description; + + public string description + { + get + { + return _description; + } + set + { + if (_description != value) + { + _description = value; + GDEDataManager.SetString(_key + "_" + descriptionKey, _description); + } + } + } + + public GDEReadSceneCustomData() + { + _key = string.Empty; + } + + public GDEReadSceneCustomData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetString(descriptionKey, out _description); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _description = GDEDataManager.GetString(_key + "_" + descriptionKey, _description); + } + + public void Reset_description() + { + GDEDataManager.ResetToDefault(_key, descriptionKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(descriptionKey, out _description); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, descriptionKey); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEReadSceneData.cs b/Assets/Plugins/GameDataEditor/GDEReadSceneData.cs new file mode 100644 index 0000000..2f0572a --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEReadSceneData.cs @@ -0,0 +1,470 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEReadSceneData +using System.Collections.Generic; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public class GDEReadSceneData : IGDEData + { + private static string bool_fieldKey = "bool_field"; + + private bool _bool_field; + + private static string int_fieldKey = "int_field"; + + private int _int_field; + + private static string float_fieldKey = "float_field"; + + private float _float_field; + + private static string string_fieldKey = "string_field"; + + private string _string_field; + + private static string vector2_fieldKey = "vector2_field"; + + private Vector2 _vector2_field; + + private static string vector3_fieldKey = "vector3_field"; + + private Vector3 _vector3_field; + + private static string vector4_fieldKey = "vector4_field"; + + private Vector4 _vector4_field; + + private static string color_fieldKey = "color_field"; + + private Color _color_field; + + private static string custom_fieldKey = "custom_field"; + + private GDEReadSceneUnityTypesData _custom_field; + + private static string bool_list_fieldKey = "bool_list_field"; + + public List bool_list_field; + + private static string int_list_fieldKey = "int_list_field"; + + public List int_list_field; + + private static string float_list_fieldKey = "float_list_field"; + + public List float_list_field; + + private static string string_list_fieldKey = "string_list_field"; + + public List string_list_field; + + private static string vector2_list_fieldKey = "vector2_list_field"; + + public List vector2_list_field; + + private static string vector3_list_fieldKey = "vector3_list_field"; + + public List vector3_list_field; + + private static string vector4_list_fieldKey = "vector4_list_field"; + + public List vector4_list_field; + + private static string color_list_fieldKey = "color_list_field"; + + public List color_list_field; + + public bool bool_field + { + get + { + return _bool_field; + } + set + { + if (_bool_field != value) + { + _bool_field = value; + GDEDataManager.SetBool(_key + "_" + bool_fieldKey, _bool_field); + } + } + } + + public int int_field + { + get + { + return _int_field; + } + set + { + if (_int_field != value) + { + _int_field = value; + GDEDataManager.SetInt(_key + "_" + int_fieldKey, _int_field); + } + } + } + + public float float_field + { + get + { + return _float_field; + } + set + { + if (_float_field != value) + { + _float_field = value; + GDEDataManager.SetFloat(_key + "_" + float_fieldKey, _float_field); + } + } + } + + public string string_field + { + get + { + return _string_field; + } + set + { + if (_string_field != value) + { + _string_field = value; + GDEDataManager.SetString(_key + "_" + string_fieldKey, _string_field); + } + } + } + + public Vector2 vector2_field + { + get + { + return _vector2_field; + } + set + { + if (_vector2_field != value) + { + _vector2_field = value; + GDEDataManager.SetVector2(_key + "_" + vector2_fieldKey, _vector2_field); + } + } + } + + public Vector3 vector3_field + { + get + { + return _vector3_field; + } + set + { + if (_vector3_field != value) + { + _vector3_field = value; + GDEDataManager.SetVector3(_key + "_" + vector3_fieldKey, _vector3_field); + } + } + } + + public Vector4 vector4_field + { + get + { + return _vector4_field; + } + set + { + if (_vector4_field != value) + { + _vector4_field = value; + GDEDataManager.SetVector4(_key + "_" + vector4_fieldKey, _vector4_field); + } + } + } + + public Color color_field + { + get + { + return _color_field; + } + set + { + if (_color_field != value) + { + _color_field = value; + GDEDataManager.SetColor(_key + "_" + color_fieldKey, _color_field); + } + } + } + + public GDEReadSceneUnityTypesData custom_field + { + get + { + return _custom_field; + } + set + { + if (_custom_field != value) + { + _custom_field = value; + GDEDataManager.SetCustom(_key + "_" + custom_fieldKey, _custom_field); + } + } + } + + public GDEReadSceneData() + { + _key = string.Empty; + } + + public GDEReadSceneData(string key) + { + _key = key; + } + + public void Set_bool_list_field() + { + GDEDataManager.SetBoolList(_key + "_" + bool_list_fieldKey, bool_list_field); + } + + public void Set_int_list_field() + { + GDEDataManager.SetIntList(_key + "_" + int_list_fieldKey, int_list_field); + } + + public void Set_float_list_field() + { + GDEDataManager.SetFloatList(_key + "_" + float_list_fieldKey, float_list_field); + } + + public void Set_string_list_field() + { + GDEDataManager.SetStringList(_key + "_" + string_list_fieldKey, string_list_field); + } + + public void Set_vector2_list_field() + { + GDEDataManager.SetVector2List(_key + "_" + vector2_list_fieldKey, vector2_list_field); + } + + public void Set_vector3_list_field() + { + GDEDataManager.SetVector3List(_key + "_" + vector3_list_fieldKey, vector3_list_field); + } + + public void Set_vector4_list_field() + { + GDEDataManager.SetVector4List(_key + "_" + vector4_list_fieldKey, vector4_list_field); + } + + public void Set_color_list_field() + { + GDEDataManager.SetColorList(_key + "_" + color_list_fieldKey, color_list_field); + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetBool(bool_fieldKey, out _bool_field); + dict.TryGetInt(int_fieldKey, out _int_field); + dict.TryGetFloat(float_fieldKey, out _float_field); + dict.TryGetString(string_fieldKey, out _string_field); + dict.TryGetVector2(vector2_fieldKey, out _vector2_field); + dict.TryGetVector3(vector3_fieldKey, out _vector3_field); + dict.TryGetVector4(vector4_fieldKey, out _vector4_field); + dict.TryGetColor(color_fieldKey, out _color_field); + dict.TryGetString(custom_fieldKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _custom_field); + dict.TryGetBoolList(bool_list_fieldKey, out bool_list_field); + dict.TryGetIntList(int_list_fieldKey, out int_list_field); + dict.TryGetFloatList(float_list_fieldKey, out float_list_field); + dict.TryGetStringList(string_list_fieldKey, out string_list_field); + dict.TryGetVector2List(vector2_list_fieldKey, out vector2_list_field); + dict.TryGetVector3List(vector3_list_fieldKey, out vector3_list_field); + dict.TryGetVector4List(vector4_list_fieldKey, out vector4_list_field); + dict.TryGetColorList(color_list_fieldKey, out color_list_field); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _bool_field = GDEDataManager.GetBool(_key + "_" + bool_fieldKey, _bool_field); + _int_field = GDEDataManager.GetInt(_key + "_" + int_fieldKey, _int_field); + _float_field = GDEDataManager.GetFloat(_key + "_" + float_fieldKey, _float_field); + _string_field = GDEDataManager.GetString(_key + "_" + string_fieldKey, _string_field); + _vector2_field = GDEDataManager.GetVector2(_key + "_" + vector2_fieldKey, _vector2_field); + _vector3_field = GDEDataManager.GetVector3(_key + "_" + vector3_fieldKey, _vector3_field); + _vector4_field = GDEDataManager.GetVector4(_key + "_" + vector4_fieldKey, _vector4_field); + _color_field = GDEDataManager.GetColor(_key + "_" + color_fieldKey, _color_field); + _custom_field = GDEDataManager.GetCustom(_key + "_" + custom_fieldKey, _custom_field); + bool_list_field = GDEDataManager.GetBoolList(_key + "_" + bool_list_fieldKey, bool_list_field); + int_list_field = GDEDataManager.GetIntList(_key + "_" + int_list_fieldKey, int_list_field); + float_list_field = GDEDataManager.GetFloatList(_key + "_" + float_list_fieldKey, float_list_field); + string_list_field = GDEDataManager.GetStringList(_key + "_" + string_list_fieldKey, string_list_field); + vector2_list_field = GDEDataManager.GetVector2List(_key + "_" + vector2_list_fieldKey, vector2_list_field); + vector3_list_field = GDEDataManager.GetVector3List(_key + "_" + vector3_list_fieldKey, vector3_list_field); + vector4_list_field = GDEDataManager.GetVector4List(_key + "_" + vector4_list_fieldKey, vector4_list_field); + color_list_field = GDEDataManager.GetColorList(_key + "_" + color_list_fieldKey, color_list_field); + } + + public void Reset_bool_field() + { + GDEDataManager.ResetToDefault(_key, bool_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBool(bool_fieldKey, out _bool_field); + } + + public void Reset_int_field() + { + GDEDataManager.ResetToDefault(_key, int_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(int_fieldKey, out _int_field); + } + + public void Reset_float_field() + { + GDEDataManager.ResetToDefault(_key, float_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(float_fieldKey, out _float_field); + } + + public void Reset_string_field() + { + GDEDataManager.ResetToDefault(_key, string_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(string_fieldKey, out _string_field); + } + + public void Reset_vector2_field() + { + GDEDataManager.ResetToDefault(_key, vector2_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector2(vector2_fieldKey, out _vector2_field); + } + + public void Reset_vector3_field() + { + GDEDataManager.ResetToDefault(_key, vector3_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector3(vector3_fieldKey, out _vector3_field); + } + + public void Reset_vector4_field() + { + GDEDataManager.ResetToDefault(_key, vector4_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector4(vector4_fieldKey, out _vector4_field); + } + + public void Reset_color_field() + { + GDEDataManager.ResetToDefault(_key, color_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetColor(color_fieldKey, out _color_field); + } + + public void Reset_bool_list_field() + { + GDEDataManager.ResetToDefault(_key, bool_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBoolList(bool_list_fieldKey, out bool_list_field); + } + + public void Reset_int_list_field() + { + GDEDataManager.ResetToDefault(_key, int_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetIntList(int_list_fieldKey, out int_list_field); + } + + public void Reset_float_list_field() + { + GDEDataManager.ResetToDefault(_key, float_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloatList(float_list_fieldKey, out float_list_field); + } + + public void Reset_string_list_field() + { + GDEDataManager.ResetToDefault(_key, string_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetStringList(string_list_fieldKey, out string_list_field); + } + + public void Reset_vector2_list_field() + { + GDEDataManager.ResetToDefault(_key, vector2_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector2List(vector2_list_fieldKey, out vector2_list_field); + } + + public void Reset_vector3_list_field() + { + GDEDataManager.ResetToDefault(_key, vector3_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector3List(vector3_list_fieldKey, out vector3_list_field); + } + + public void Reset_vector4_list_field() + { + GDEDataManager.ResetToDefault(_key, vector4_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector4List(vector4_list_fieldKey, out vector4_list_field); + } + + public void Reset_color_list_field() + { + GDEDataManager.ResetToDefault(_key, color_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetColorList(color_list_fieldKey, out color_list_field); + } + + public void Reset_custom_field() + { + GDEDataManager.ResetToDefault(_key, custom_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(custom_fieldKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _custom_field); + custom_field = GDEDataManager.GetCustom(_key + "_" + custom_fieldKey, _custom_field); + custom_field.ResetAll(); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, bool_fieldKey); + GDEDataManager.ResetToDefault(_key, bool_list_fieldKey); + GDEDataManager.ResetToDefault(_key, int_fieldKey); + GDEDataManager.ResetToDefault(_key, float_fieldKey); + GDEDataManager.ResetToDefault(_key, string_fieldKey); + GDEDataManager.ResetToDefault(_key, vector2_fieldKey); + GDEDataManager.ResetToDefault(_key, vector3_fieldKey); + GDEDataManager.ResetToDefault(_key, vector4_fieldKey); + GDEDataManager.ResetToDefault(_key, color_fieldKey); + GDEDataManager.ResetToDefault(_key, int_list_fieldKey); + GDEDataManager.ResetToDefault(_key, float_list_fieldKey); + GDEDataManager.ResetToDefault(_key, string_list_fieldKey); + GDEDataManager.ResetToDefault(_key, vector2_list_fieldKey); + GDEDataManager.ResetToDefault(_key, vector3_list_fieldKey); + GDEDataManager.ResetToDefault(_key, vector4_list_fieldKey); + GDEDataManager.ResetToDefault(_key, color_list_fieldKey); + GDEDataManager.ResetToDefault(_key, custom_fieldKey); + Reset_custom_field(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEReadSceneItemKeys.cs b/Assets/Plugins/GameDataEditor/GDEReadSceneItemKeys.cs new file mode 100644 index 0000000..685c771 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEReadSceneItemKeys.cs @@ -0,0 +1,18 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEReadSceneItemKeys + +namespace GameDataEditor +{ + public class GDEReadSceneItemKeys + { + public static string ReadScene_test_data = "test_data"; + + public static string ReadSceneUnityTypes_unity_types_data = "unity_types_data"; + + public static string ReadSceneCustom_custom_1 = "custom_1"; + + public static string ReadSceneCustom_custom_2 = "custom_2"; + + public static string ReadSceneCustom_custom_3 = "custom_3"; + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEReadSceneUnityTypesData.cs b/Assets/Plugins/GameDataEditor/GDEReadSceneUnityTypesData.cs new file mode 100644 index 0000000..b8e7b0f --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEReadSceneUnityTypesData.cs @@ -0,0 +1,182 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEReadSceneUnityTypesData +using System.Collections.Generic; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public class GDEReadSceneUnityTypesData : IGDEData + { + private static string go_fieldKey = "go_field"; + + private GameObject _go_field; + + private static string tex_fieldKey = "tex_field"; + + private Texture2D _tex_field; + + private static string mat_fieldKey = "mat_field"; + + private Material _mat_field; + + private static string aud_fieldKey = "aud_field"; + + private AudioClip _aud_field; + + private static string go_list_fieldKey = "go_list_field"; + + public List go_list_field; + + public GameObject go_field + { + get + { + return _go_field; + } + set + { + if (_go_field != value) + { + _go_field = value; + GDEDataManager.SetGameObject(_key + "_" + go_fieldKey, _go_field); + } + } + } + + public Texture2D tex_field + { + get + { + return _tex_field; + } + set + { + if (_tex_field != value) + { + _tex_field = value; + GDEDataManager.SetTexture2D(_key + "_" + tex_fieldKey, _tex_field); + } + } + } + + public Material mat_field + { + get + { + return _mat_field; + } + set + { + if (_mat_field != value) + { + _mat_field = value; + GDEDataManager.SetMaterial(_key + "_" + mat_fieldKey, _mat_field); + } + } + } + + public AudioClip aud_field + { + get + { + return _aud_field; + } + set + { + if (_aud_field != value) + { + _aud_field = value; + GDEDataManager.SetAudioClip(_key + "_" + aud_fieldKey, _aud_field); + } + } + } + + public GDEReadSceneUnityTypesData() + { + _key = string.Empty; + } + + public GDEReadSceneUnityTypesData(string key) + { + _key = key; + } + + public void Set_go_list_field() + { + GDEDataManager.SetGameObjectList(_key + "_" + go_list_fieldKey, go_list_field); + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetGameObject(go_fieldKey, out _go_field); + dict.TryGetTexture2D(tex_fieldKey, out _tex_field); + dict.TryGetMaterial(mat_fieldKey, out _mat_field); + dict.TryGetAudioClip(aud_fieldKey, out _aud_field); + dict.TryGetGameObjectList(go_list_fieldKey, out go_list_field); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _go_field = GDEDataManager.GetGameObject(_key + "_" + go_fieldKey, _go_field); + _tex_field = GDEDataManager.GetTexture2D(_key + "_" + tex_fieldKey, _tex_field); + _mat_field = GDEDataManager.GetMaterial(_key + "_" + mat_fieldKey, _mat_field); + _aud_field = GDEDataManager.GetAudioClip(_key + "_" + aud_fieldKey, _aud_field); + go_list_field = GDEDataManager.GetGameObjectList(_key + "_" + go_list_fieldKey, go_list_field); + } + + public void Reset_go_field() + { + GDEDataManager.ResetToDefault(_key, go_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetGameObject(go_fieldKey, out _go_field); + } + + public void Reset_tex_field() + { + GDEDataManager.ResetToDefault(_key, tex_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetTexture2D(tex_fieldKey, out _tex_field); + } + + public void Reset_mat_field() + { + GDEDataManager.ResetToDefault(_key, mat_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetMaterial(mat_fieldKey, out _mat_field); + } + + public void Reset_aud_field() + { + GDEDataManager.ResetToDefault(_key, aud_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetAudioClip(aud_fieldKey, out _aud_field); + } + + public void Reset_go_list_field() + { + GDEDataManager.ResetToDefault(_key, go_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetGameObjectList(go_list_fieldKey, out go_list_field); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, tex_fieldKey); + GDEDataManager.ResetToDefault(_key, go_fieldKey); + GDEDataManager.ResetToDefault(_key, mat_fieldKey); + GDEDataManager.ResetToDefault(_key, go_list_fieldKey); + GDEDataManager.ResetToDefault(_key, aud_fieldKey); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDERotateGODemo.cs b/Assets/Plugins/GameDataEditor/GDERotateGODemo.cs new file mode 100644 index 0000000..52386a1 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDERotateGODemo.cs @@ -0,0 +1,18 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDERotateGODemo +using UnityEngine; + +namespace GameDataEditor +{ + public class GDERotateGODemo : MonoBehaviour + { + public float Speed = 1f; + + public Vector3 rotateVec3; + + private void Update() + { + base.transform.Rotate(rotateVec3 * Time.deltaTime * Speed); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDESetCustomData.cs b/Assets/Plugins/GameDataEditor/GDESetCustomData.cs new file mode 100644 index 0000000..64360ca --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDESetCustomData.cs @@ -0,0 +1,283 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDESetCustomData +using System.Collections.Generic; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public class GDESetCustomData : IGDEData + { + private static string bool_fieldKey = "bool_field"; + + private bool _bool_field; + + private static string int_fieldKey = "int_field"; + + private int _int_field; + + private static string float_fieldKey = "float_field"; + + private float _float_field; + + private static string descriptionKey = "description"; + + private string _description; + + private static string string_fieldKey = "string_field"; + + private string _string_field; + + private static string vector2_fieldKey = "vector2_field"; + + private Vector2 _vector2_field; + + private static string vector3_fieldKey = "vector3_field"; + + private Vector3 _vector3_field; + + private static string color_fieldKey = "color_field"; + + private Color _color_field; + + public bool bool_field + { + get + { + return _bool_field; + } + set + { + if (_bool_field != value) + { + _bool_field = value; + GDEDataManager.SetBool(_key + "_" + bool_fieldKey, _bool_field); + } + } + } + + public int int_field + { + get + { + return _int_field; + } + set + { + if (_int_field != value) + { + _int_field = value; + GDEDataManager.SetInt(_key + "_" + int_fieldKey, _int_field); + } + } + } + + public float float_field + { + get + { + return _float_field; + } + set + { + if (_float_field != value) + { + _float_field = value; + GDEDataManager.SetFloat(_key + "_" + float_fieldKey, _float_field); + } + } + } + + public string description + { + get + { + return _description; + } + set + { + if (_description != value) + { + _description = value; + GDEDataManager.SetString(_key + "_" + descriptionKey, _description); + } + } + } + + public string string_field + { + get + { + return _string_field; + } + set + { + if (_string_field != value) + { + _string_field = value; + GDEDataManager.SetString(_key + "_" + string_fieldKey, _string_field); + } + } + } + + public Vector2 vector2_field + { + get + { + return _vector2_field; + } + set + { + if (_vector2_field != value) + { + _vector2_field = value; + GDEDataManager.SetVector2(_key + "_" + vector2_fieldKey, _vector2_field); + } + } + } + + public Vector3 vector3_field + { + get + { + return _vector3_field; + } + set + { + if (_vector3_field != value) + { + _vector3_field = value; + GDEDataManager.SetVector3(_key + "_" + vector3_fieldKey, _vector3_field); + } + } + } + + public Color color_field + { + get + { + return _color_field; + } + set + { + if (_color_field != value) + { + _color_field = value; + GDEDataManager.SetColor(_key + "_" + color_fieldKey, _color_field); + } + } + } + + public GDESetCustomData() + { + _key = string.Empty; + } + + public GDESetCustomData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetBool(bool_fieldKey, out _bool_field); + dict.TryGetInt(int_fieldKey, out _int_field); + dict.TryGetFloat(float_fieldKey, out _float_field); + dict.TryGetString(descriptionKey, out _description); + dict.TryGetString(string_fieldKey, out _string_field); + dict.TryGetVector2(vector2_fieldKey, out _vector2_field); + dict.TryGetVector3(vector3_fieldKey, out _vector3_field); + dict.TryGetColor(color_fieldKey, out _color_field); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _bool_field = GDEDataManager.GetBool(_key + "_" + bool_fieldKey, _bool_field); + _int_field = GDEDataManager.GetInt(_key + "_" + int_fieldKey, _int_field); + _float_field = GDEDataManager.GetFloat(_key + "_" + float_fieldKey, _float_field); + _description = GDEDataManager.GetString(_key + "_" + descriptionKey, _description); + _string_field = GDEDataManager.GetString(_key + "_" + string_fieldKey, _string_field); + _vector2_field = GDEDataManager.GetVector2(_key + "_" + vector2_fieldKey, _vector2_field); + _vector3_field = GDEDataManager.GetVector3(_key + "_" + vector3_fieldKey, _vector3_field); + _color_field = GDEDataManager.GetColor(_key + "_" + color_fieldKey, _color_field); + } + + public void Reset_bool_field() + { + GDEDataManager.ResetToDefault(_key, bool_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBool(bool_fieldKey, out _bool_field); + } + + public void Reset_int_field() + { + GDEDataManager.ResetToDefault(_key, int_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(int_fieldKey, out _int_field); + } + + public void Reset_float_field() + { + GDEDataManager.ResetToDefault(_key, float_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(float_fieldKey, out _float_field); + } + + public void Reset_description() + { + GDEDataManager.ResetToDefault(_key, descriptionKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(descriptionKey, out _description); + } + + public void Reset_string_field() + { + GDEDataManager.ResetToDefault(_key, string_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(string_fieldKey, out _string_field); + } + + public void Reset_vector2_field() + { + GDEDataManager.ResetToDefault(_key, vector2_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector2(vector2_fieldKey, out _vector2_field); + } + + public void Reset_vector3_field() + { + GDEDataManager.ResetToDefault(_key, vector3_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector3(vector3_fieldKey, out _vector3_field); + } + + public void Reset_color_field() + { + GDEDataManager.ResetToDefault(_key, color_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetColor(color_fieldKey, out _color_field); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, descriptionKey); + GDEDataManager.ResetToDefault(_key, int_fieldKey); + GDEDataManager.ResetToDefault(_key, float_fieldKey); + GDEDataManager.ResetToDefault(_key, vector2_fieldKey); + GDEDataManager.ResetToDefault(_key, vector3_fieldKey); + GDEDataManager.ResetToDefault(_key, color_fieldKey); + GDEDataManager.ResetToDefault(_key, string_fieldKey); + GDEDataManager.ResetToDefault(_key, bool_fieldKey); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDESetListData.cs b/Assets/Plugins/GameDataEditor/GDESetListData.cs new file mode 100644 index 0000000..93952e0 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDESetListData.cs @@ -0,0 +1,220 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDESetListData +using System.Collections.Generic; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public class GDESetListData : IGDEData + { + private static string bool_list_fieldKey = "bool_list_field"; + + public List bool_list_field; + + private static string int_list_fieldKey = "int_list_field"; + + public List int_list_field; + + private static string float_list_fieldKey = "float_list_field"; + + public List float_list_field; + + private static string string_list_fieldKey = "string_list_field"; + + public List string_list_field; + + private static string vector2_list_fieldKey = "vector2_list_field"; + + public List vector2_list_field; + + private static string vector3_list_fieldKey = "vector3_list_field"; + + public List vector3_list_field; + + private static string vector4_list_fieldKey = "vector4_list_field"; + + public List vector4_list_field; + + private static string color_list_fieldKey = "color_list_field"; + + public List color_list_field; + + private static string custom_list_fieldKey = "custom_list_field"; + + public List custom_list_field; + + public GDESetListData() + { + _key = string.Empty; + } + + public GDESetListData(string key) + { + _key = key; + } + + public void Set_bool_list_field() + { + GDEDataManager.SetBoolList(_key + "_" + bool_list_fieldKey, bool_list_field); + } + + public void Set_int_list_field() + { + GDEDataManager.SetIntList(_key + "_" + int_list_fieldKey, int_list_field); + } + + public void Set_float_list_field() + { + GDEDataManager.SetFloatList(_key + "_" + float_list_fieldKey, float_list_field); + } + + public void Set_string_list_field() + { + GDEDataManager.SetStringList(_key + "_" + string_list_fieldKey, string_list_field); + } + + public void Set_vector2_list_field() + { + GDEDataManager.SetVector2List(_key + "_" + vector2_list_fieldKey, vector2_list_field); + } + + public void Set_vector3_list_field() + { + GDEDataManager.SetVector3List(_key + "_" + vector3_list_fieldKey, vector3_list_field); + } + + public void Set_vector4_list_field() + { + GDEDataManager.SetVector4List(_key + "_" + vector4_list_fieldKey, vector4_list_field); + } + + public void Set_color_list_field() + { + GDEDataManager.SetColorList(_key + "_" + color_list_fieldKey, color_list_field); + } + + public void Set_custom_list_field() + { + GDEDataManager.SetCustomList(_key + "_" + custom_list_fieldKey, custom_list_field); + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetBoolList(bool_list_fieldKey, out bool_list_field); + dict.TryGetIntList(int_list_fieldKey, out int_list_field); + dict.TryGetFloatList(float_list_fieldKey, out float_list_field); + dict.TryGetStringList(string_list_fieldKey, out string_list_field); + dict.TryGetVector2List(vector2_list_fieldKey, out vector2_list_field); + dict.TryGetVector3List(vector3_list_fieldKey, out vector3_list_field); + dict.TryGetVector4List(vector4_list_fieldKey, out vector4_list_field); + dict.TryGetColorList(color_list_fieldKey, out color_list_field); + dict.TryGetCustomList(custom_list_fieldKey, out custom_list_field); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + bool_list_field = GDEDataManager.GetBoolList(_key + "_" + bool_list_fieldKey, bool_list_field); + int_list_field = GDEDataManager.GetIntList(_key + "_" + int_list_fieldKey, int_list_field); + float_list_field = GDEDataManager.GetFloatList(_key + "_" + float_list_fieldKey, float_list_field); + string_list_field = GDEDataManager.GetStringList(_key + "_" + string_list_fieldKey, string_list_field); + vector2_list_field = GDEDataManager.GetVector2List(_key + "_" + vector2_list_fieldKey, vector2_list_field); + vector3_list_field = GDEDataManager.GetVector3List(_key + "_" + vector3_list_fieldKey, vector3_list_field); + vector4_list_field = GDEDataManager.GetVector4List(_key + "_" + vector4_list_fieldKey, vector4_list_field); + color_list_field = GDEDataManager.GetColorList(_key + "_" + color_list_fieldKey, color_list_field); + custom_list_field = GDEDataManager.GetCustomList(_key + "_" + custom_list_fieldKey, custom_list_field); + } + + public void Reset_bool_list_field() + { + GDEDataManager.ResetToDefault(_key, bool_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBoolList(bool_list_fieldKey, out bool_list_field); + } + + public void Reset_int_list_field() + { + GDEDataManager.ResetToDefault(_key, int_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetIntList(int_list_fieldKey, out int_list_field); + } + + public void Reset_float_list_field() + { + GDEDataManager.ResetToDefault(_key, float_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloatList(float_list_fieldKey, out float_list_field); + } + + public void Reset_string_list_field() + { + GDEDataManager.ResetToDefault(_key, string_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetStringList(string_list_fieldKey, out string_list_field); + } + + public void Reset_vector2_list_field() + { + GDEDataManager.ResetToDefault(_key, vector2_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector2List(vector2_list_fieldKey, out vector2_list_field); + } + + public void Reset_vector3_list_field() + { + GDEDataManager.ResetToDefault(_key, vector3_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector3List(vector3_list_fieldKey, out vector3_list_field); + } + + public void Reset_vector4_list_field() + { + GDEDataManager.ResetToDefault(_key, vector4_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector4List(vector4_list_fieldKey, out vector4_list_field); + } + + public void Reset_color_list_field() + { + GDEDataManager.ResetToDefault(_key, color_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetColorList(color_list_fieldKey, out color_list_field); + } + + public void Reset_custom_list_field() + { + GDEDataManager.ResetToDefault(_key, custom_list_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetCustomList(custom_list_fieldKey, out custom_list_field); + custom_list_field = GDEDataManager.GetCustomList(_key + "_" + custom_list_fieldKey, custom_list_field); + custom_list_field.ForEach(delegate(GDESetCustomData x) + { + x.ResetAll(); + }); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, int_list_fieldKey); + GDEDataManager.ResetToDefault(_key, float_list_fieldKey); + GDEDataManager.ResetToDefault(_key, string_list_fieldKey); + GDEDataManager.ResetToDefault(_key, vector2_list_fieldKey); + GDEDataManager.ResetToDefault(_key, vector3_list_fieldKey); + GDEDataManager.ResetToDefault(_key, vector4_list_fieldKey); + GDEDataManager.ResetToDefault(_key, color_list_fieldKey); + GDEDataManager.ResetToDefault(_key, bool_list_fieldKey); + GDEDataManager.ResetToDefault(_key, custom_list_fieldKey); + Reset_custom_list_field(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDESetSceneItemKeys.cs b/Assets/Plugins/GameDataEditor/GDESetSceneItemKeys.cs new file mode 100644 index 0000000..6504005 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDESetSceneItemKeys.cs @@ -0,0 +1,20 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDESetSceneItemKeys + +namespace GameDataEditor +{ + public class GDESetSceneItemKeys + { + public static string SetSingle_single_data = "single_data"; + + public static string SetCustom_custom_data_1 = "custom_data_1"; + + public static string SetCustom_custom_data_2 = "custom_data_2"; + + public static string SetCustom_custom_data_3 = "custom_data_3"; + + public static string SetList_list_data = "list_data"; + + public static string SetTwoDList_twod_list_data = "twod_list_data"; + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDESetSingleData.cs b/Assets/Plugins/GameDataEditor/GDESetSingleData.cs new file mode 100644 index 0000000..1cfeb33 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDESetSingleData.cs @@ -0,0 +1,318 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDESetSingleData +using System.Collections.Generic; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public class GDESetSingleData : IGDEData + { + private static string bool_fieldKey = "bool_field"; + + private bool _bool_field; + + private static string int_fieldKey = "int_field"; + + private int _int_field; + + private static string float_fieldKey = "float_field"; + + private float _float_field; + + private static string string_fieldKey = "string_field"; + + private string _string_field; + + private static string vector2_fieldKey = "vector2_field"; + + private Vector2 _vector2_field; + + private static string vector3_fieldKey = "vector3_field"; + + private Vector3 _vector3_field; + + private static string vector4_fieldKey = "vector4_field"; + + private Vector4 _vector4_field; + + private static string color_fieldKey = "color_field"; + + private Color _color_field; + + private static string custom_fieldKey = "custom_field"; + + private GDESetCustomData _custom_field; + + public bool bool_field + { + get + { + return _bool_field; + } + set + { + if (_bool_field != value) + { + _bool_field = value; + GDEDataManager.SetBool(_key + "_" + bool_fieldKey, _bool_field); + } + } + } + + public int int_field + { + get + { + return _int_field; + } + set + { + if (_int_field != value) + { + _int_field = value; + GDEDataManager.SetInt(_key + "_" + int_fieldKey, _int_field); + } + } + } + + public float float_field + { + get + { + return _float_field; + } + set + { + if (_float_field != value) + { + _float_field = value; + GDEDataManager.SetFloat(_key + "_" + float_fieldKey, _float_field); + } + } + } + + public string string_field + { + get + { + return _string_field; + } + set + { + if (_string_field != value) + { + _string_field = value; + GDEDataManager.SetString(_key + "_" + string_fieldKey, _string_field); + } + } + } + + public Vector2 vector2_field + { + get + { + return _vector2_field; + } + set + { + if (_vector2_field != value) + { + _vector2_field = value; + GDEDataManager.SetVector2(_key + "_" + vector2_fieldKey, _vector2_field); + } + } + } + + public Vector3 vector3_field + { + get + { + return _vector3_field; + } + set + { + if (_vector3_field != value) + { + _vector3_field = value; + GDEDataManager.SetVector3(_key + "_" + vector3_fieldKey, _vector3_field); + } + } + } + + public Vector4 vector4_field + { + get + { + return _vector4_field; + } + set + { + if (_vector4_field != value) + { + _vector4_field = value; + GDEDataManager.SetVector4(_key + "_" + vector4_fieldKey, _vector4_field); + } + } + } + + public Color color_field + { + get + { + return _color_field; + } + set + { + if (_color_field != value) + { + _color_field = value; + GDEDataManager.SetColor(_key + "_" + color_fieldKey, _color_field); + } + } + } + + public GDESetCustomData custom_field + { + get + { + return _custom_field; + } + set + { + if (_custom_field != value) + { + _custom_field = value; + GDEDataManager.SetCustom(_key + "_" + custom_fieldKey, _custom_field); + } + } + } + + public GDESetSingleData() + { + _key = string.Empty; + } + + public GDESetSingleData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetBool(bool_fieldKey, out _bool_field); + dict.TryGetInt(int_fieldKey, out _int_field); + dict.TryGetFloat(float_fieldKey, out _float_field); + dict.TryGetString(string_fieldKey, out _string_field); + dict.TryGetVector2(vector2_fieldKey, out _vector2_field); + dict.TryGetVector3(vector3_fieldKey, out _vector3_field); + dict.TryGetVector4(vector4_fieldKey, out _vector4_field); + dict.TryGetColor(color_fieldKey, out _color_field); + dict.TryGetString(custom_fieldKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _custom_field); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _bool_field = GDEDataManager.GetBool(_key + "_" + bool_fieldKey, _bool_field); + _int_field = GDEDataManager.GetInt(_key + "_" + int_fieldKey, _int_field); + _float_field = GDEDataManager.GetFloat(_key + "_" + float_fieldKey, _float_field); + _string_field = GDEDataManager.GetString(_key + "_" + string_fieldKey, _string_field); + _vector2_field = GDEDataManager.GetVector2(_key + "_" + vector2_fieldKey, _vector2_field); + _vector3_field = GDEDataManager.GetVector3(_key + "_" + vector3_fieldKey, _vector3_field); + _vector4_field = GDEDataManager.GetVector4(_key + "_" + vector4_fieldKey, _vector4_field); + _color_field = GDEDataManager.GetColor(_key + "_" + color_fieldKey, _color_field); + _custom_field = GDEDataManager.GetCustom(_key + "_" + custom_fieldKey, _custom_field); + } + + public void Reset_bool_field() + { + GDEDataManager.ResetToDefault(_key, bool_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBool(bool_fieldKey, out _bool_field); + } + + public void Reset_int_field() + { + GDEDataManager.ResetToDefault(_key, int_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(int_fieldKey, out _int_field); + } + + public void Reset_float_field() + { + GDEDataManager.ResetToDefault(_key, float_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(float_fieldKey, out _float_field); + } + + public void Reset_string_field() + { + GDEDataManager.ResetToDefault(_key, string_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(string_fieldKey, out _string_field); + } + + public void Reset_vector2_field() + { + GDEDataManager.ResetToDefault(_key, vector2_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector2(vector2_fieldKey, out _vector2_field); + } + + public void Reset_vector3_field() + { + GDEDataManager.ResetToDefault(_key, vector3_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector3(vector3_fieldKey, out _vector3_field); + } + + public void Reset_vector4_field() + { + GDEDataManager.ResetToDefault(_key, vector4_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector4(vector4_fieldKey, out _vector4_field); + } + + public void Reset_color_field() + { + GDEDataManager.ResetToDefault(_key, color_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetColor(color_fieldKey, out _color_field); + } + + public void Reset_custom_field() + { + GDEDataManager.ResetToDefault(_key, custom_fieldKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(custom_fieldKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _custom_field); + custom_field = GDEDataManager.GetCustom(_key + "_" + custom_fieldKey, _custom_field); + custom_field.ResetAll(); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, bool_fieldKey); + GDEDataManager.ResetToDefault(_key, int_fieldKey); + GDEDataManager.ResetToDefault(_key, float_fieldKey); + GDEDataManager.ResetToDefault(_key, string_fieldKey); + GDEDataManager.ResetToDefault(_key, vector2_fieldKey); + GDEDataManager.ResetToDefault(_key, vector3_fieldKey); + GDEDataManager.ResetToDefault(_key, vector4_fieldKey); + GDEDataManager.ResetToDefault(_key, color_fieldKey); + GDEDataManager.ResetToDefault(_key, custom_fieldKey); + Reset_custom_field(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDESetTwoDListData.cs b/Assets/Plugins/GameDataEditor/GDESetTwoDListData.cs new file mode 100644 index 0000000..a51fbdd --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDESetTwoDListData.cs @@ -0,0 +1,223 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDESetTwoDListData +using System.Collections.Generic; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public class GDESetTwoDListData : IGDEData + { + private static string bool_2dlistKey = "bool_2dlist"; + + public List> bool_2dlist; + + private static string int_2dlistKey = "int_2dlist"; + + public List> int_2dlist; + + private static string float_2dlistKey = "float_2dlist"; + + public List> float_2dlist; + + private static string string_2dlistKey = "string_2dlist"; + + public List> string_2dlist; + + private static string vector2_2dlistKey = "vector2_2dlist"; + + public List> vector2_2dlist; + + private static string vector3_2dlistKey = "vector3_2dlist"; + + public List> vector3_2dlist; + + private static string vector4_2dlistKey = "vector4_2dlist"; + + public List> vector4_2dlist; + + private static string color_2dlistKey = "color_2dlist"; + + public List> color_2dlist; + + private static string custom_2dlistKey = "custom_2dlist"; + + public List> custom_2dlist; + + public GDESetTwoDListData() + { + _key = string.Empty; + } + + public GDESetTwoDListData(string key) + { + _key = key; + } + + public void Set_bool_2dlist() + { + GDEDataManager.SetBoolTwoDList(_key + "_" + bool_2dlistKey, bool_2dlist); + } + + public void Set_int_2dlist() + { + GDEDataManager.SetIntTwoDList(_key + "_" + int_2dlistKey, int_2dlist); + } + + public void Set_float_2dlist() + { + GDEDataManager.SetFloatTwoDList(_key + "_" + float_2dlistKey, float_2dlist); + } + + public void Set_string_2dlist() + { + GDEDataManager.SetStringTwoDList(_key + "_" + string_2dlistKey, string_2dlist); + } + + public void Set_vector2_2dlist() + { + GDEDataManager.SetVector2TwoDList(_key + "_" + vector2_2dlistKey, vector2_2dlist); + } + + public void Set_vector3_2dlist() + { + GDEDataManager.SetVector3TwoDList(_key + "_" + vector3_2dlistKey, vector3_2dlist); + } + + public void Set_vector4_2dlist() + { + GDEDataManager.SetVector4TwoDList(_key + "_" + vector4_2dlistKey, vector4_2dlist); + } + + public void Set_color_2dlist() + { + GDEDataManager.SetColorTwoDList(_key + "_" + color_2dlistKey, color_2dlist); + } + + public void Set_custom_2dlist() + { + GDEDataManager.SetCustomTwoDList(_key + "_" + custom_2dlistKey, custom_2dlist); + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetBoolTwoDList(bool_2dlistKey, out bool_2dlist); + dict.TryGetIntTwoDList(int_2dlistKey, out int_2dlist); + dict.TryGetFloatTwoDList(float_2dlistKey, out float_2dlist); + dict.TryGetStringTwoDList(string_2dlistKey, out string_2dlist); + dict.TryGetVector2TwoDList(vector2_2dlistKey, out vector2_2dlist); + dict.TryGetVector3TwoDList(vector3_2dlistKey, out vector3_2dlist); + dict.TryGetVector4TwoDList(vector4_2dlistKey, out vector4_2dlist); + dict.TryGetColorTwoDList(color_2dlistKey, out color_2dlist); + dict.TryGetCustomTwoDList(custom_2dlistKey, out custom_2dlist); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + bool_2dlist = GDEDataManager.GetBoolTwoDList(_key + "_" + bool_2dlistKey, bool_2dlist); + int_2dlist = GDEDataManager.GetIntTwoDList(_key + "_" + int_2dlistKey, int_2dlist); + float_2dlist = GDEDataManager.GetFloatTwoDList(_key + "_" + float_2dlistKey, float_2dlist); + string_2dlist = GDEDataManager.GetStringTwoDList(_key + "_" + string_2dlistKey, string_2dlist); + vector2_2dlist = GDEDataManager.GetVector2TwoDList(_key + "_" + vector2_2dlistKey, vector2_2dlist); + vector3_2dlist = GDEDataManager.GetVector3TwoDList(_key + "_" + vector3_2dlistKey, vector3_2dlist); + vector4_2dlist = GDEDataManager.GetVector4TwoDList(_key + "_" + vector4_2dlistKey, vector4_2dlist); + color_2dlist = GDEDataManager.GetColorTwoDList(_key + "_" + color_2dlistKey, color_2dlist); + custom_2dlist = GDEDataManager.GetCustomTwoDList(_key + "_" + custom_2dlistKey, custom_2dlist); + } + + public void Reset_bool_2dlist() + { + GDEDataManager.ResetToDefault(_key, bool_2dlistKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBoolTwoDList(bool_2dlistKey, out bool_2dlist); + } + + public void Reset_int_2dlist() + { + GDEDataManager.ResetToDefault(_key, int_2dlistKey); + GDEDataManager.Get(_key, out var data); + data.TryGetIntTwoDList(int_2dlistKey, out int_2dlist); + } + + public void Reset_float_2dlist() + { + GDEDataManager.ResetToDefault(_key, float_2dlistKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloatTwoDList(float_2dlistKey, out float_2dlist); + } + + public void Reset_string_2dlist() + { + GDEDataManager.ResetToDefault(_key, string_2dlistKey); + GDEDataManager.Get(_key, out var data); + data.TryGetStringTwoDList(string_2dlistKey, out string_2dlist); + } + + public void Reset_vector2_2dlist() + { + GDEDataManager.ResetToDefault(_key, vector2_2dlistKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector2TwoDList(vector2_2dlistKey, out vector2_2dlist); + } + + public void Reset_vector3_2dlist() + { + GDEDataManager.ResetToDefault(_key, vector3_2dlistKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector3TwoDList(vector3_2dlistKey, out vector3_2dlist); + } + + public void Reset_vector4_2dlist() + { + GDEDataManager.ResetToDefault(_key, vector4_2dlistKey); + GDEDataManager.Get(_key, out var data); + data.TryGetVector4TwoDList(vector4_2dlistKey, out vector4_2dlist); + } + + public void Reset_color_2dlist() + { + GDEDataManager.ResetToDefault(_key, color_2dlistKey); + GDEDataManager.Get(_key, out var data); + data.TryGetColorTwoDList(color_2dlistKey, out color_2dlist); + } + + public void Reset_custom_2dlist() + { + GDEDataManager.ResetToDefault(_key, custom_2dlistKey); + GDEDataManager.Get(_key, out var data); + data.TryGetCustomTwoDList(custom_2dlistKey, out custom_2dlist); + custom_2dlist = GDEDataManager.GetCustomTwoDList(_key + "_" + custom_2dlistKey, custom_2dlist); + custom_2dlist.ForEach(delegate(List x) + { + x.ForEach(delegate(GDESetCustomData y) + { + y.ResetAll(); + }); + }); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, custom_2dlistKey); + GDEDataManager.ResetToDefault(_key, color_2dlistKey); + GDEDataManager.ResetToDefault(_key, vector4_2dlistKey); + GDEDataManager.ResetToDefault(_key, vector3_2dlistKey); + GDEDataManager.ResetToDefault(_key, vector2_2dlistKey); + GDEDataManager.ResetToDefault(_key, string_2dlistKey); + GDEDataManager.ResetToDefault(_key, float_2dlistKey); + GDEDataManager.ResetToDefault(_key, int_2dlistKey); + GDEDataManager.ResetToDefault(_key, bool_2dlistKey); + Reset_custom_2dlist(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDESkillGroupData.cs b/Assets/Plugins/GameDataEditor/GDESkillGroupData.cs new file mode 100644 index 0000000..a4b72e6 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDESkillGroupData.cs @@ -0,0 +1,107 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDESkillGroupData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDESkillGroupData : IGDEData + { + private static string IDKey = "ID"; + + private int _ID; + + private static string SkillGroupNameKey = "SkillGroupName"; + + private GDEConstantTextListData _SkillGroupName; + + public int ID + { + get + { + return _ID; + } + set + { + if (_ID != value) + { + _ID = value; + GDEDataManager.SetInt(_key + "_" + IDKey, _ID); + } + } + } + + public GDEConstantTextListData SkillGroupName + { + get + { + return _SkillGroupName; + } + set + { + if (_SkillGroupName != value) + { + _SkillGroupName = value; + GDEDataManager.SetCustom(_key + "_" + SkillGroupNameKey, _SkillGroupName); + } + } + } + + public GDESkillGroupData() + { + _key = string.Empty; + } + + public GDESkillGroupData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetInt(IDKey, out _ID); + dict.TryGetString(SkillGroupNameKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _SkillGroupName); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _ID = GDEDataManager.GetInt(_key + "_" + IDKey, _ID); + _SkillGroupName = GDEDataManager.GetCustom(_key + "_" + SkillGroupNameKey, _SkillGroupName); + } + + public void Reset_ID() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(IDKey, out _ID); + } + + public void Reset_SkillGroupName() + { + GDEDataManager.ResetToDefault(_key, SkillGroupNameKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(SkillGroupNameKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _SkillGroupName); + SkillGroupName = GDEDataManager.GetCustom(_key + "_" + SkillGroupNameKey, _SkillGroupName); + SkillGroupName.ResetAll(); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.ResetToDefault(_key, SkillGroupNameKey); + Reset_SkillGroupName(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDESkillTreeData.cs b/Assets/Plugins/GameDataEditor/GDESkillTreeData.cs new file mode 100644 index 0000000..67cf595 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDESkillTreeData.cs @@ -0,0 +1,557 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDESkillTreeData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDESkillTreeData : IGDEData + { + private static string IDKey = "ID"; + + private int _ID; + + private static string SkillLevelKey = "SkillLevel"; + + private int _SkillLevel; + + private static string OptionIDKey = "OptionID"; + + private int _OptionID; + + private static string CostKey = "Cost"; + + private int _Cost; + + private static string Value1Key = "Value1"; + + private float _Value1; + + private static string Value2Key = "Value2"; + + private float _Value2; + + private static string Value3Key = "Value3"; + + private float _Value3; + + private static string Value4Key = "Value4"; + + private float _Value4; + + private static string Value5Key = "Value5"; + + private float _Value5; + + private static string SkillGroupKey = "SkillGroup"; + + private GDESkillGroupData _SkillGroup; + + private static string GameCharacterTypeKey = "GameCharacterType"; + + private GDEGameCharacterTypeData _GameCharacterType; + + private static string AbilityKey = "Ability"; + + private GDEAbilityData _Ability; + + private static string SkillTypeKey = "SkillType"; + + private GDESkillTypeData _SkillType; + + private static string RelatedSkillKey = "RelatedSkill"; + + private GDESkillTreeData _RelatedSkill; + + private static string UIColorKey = "UIColor"; + + private GDESkillUIColorData _UIColor; + + private static string SpecificDescriptionTextKey = "SpecificDescriptionText"; + + private GDEConstantTextListData _SpecificDescriptionText; + + public int ID + { + get + { + return _ID; + } + set + { + if (_ID != value) + { + _ID = value; + GDEDataManager.SetInt(_key + "_" + IDKey, _ID); + } + } + } + + public int SkillLevel + { + get + { + return _SkillLevel; + } + set + { + if (_SkillLevel != value) + { + _SkillLevel = value; + GDEDataManager.SetInt(_key + "_" + SkillLevelKey, _SkillLevel); + } + } + } + + public int OptionID + { + get + { + return _OptionID; + } + set + { + if (_OptionID != value) + { + _OptionID = value; + GDEDataManager.SetInt(_key + "_" + OptionIDKey, _OptionID); + } + } + } + + public int Cost + { + get + { + return _Cost; + } + set + { + if (_Cost != value) + { + _Cost = value; + GDEDataManager.SetInt(_key + "_" + CostKey, _Cost); + } + } + } + + public float Value1 + { + get + { + return _Value1; + } + set + { + if (_Value1 != value) + { + _Value1 = value; + GDEDataManager.SetFloat(_key + "_" + Value1Key, _Value1); + } + } + } + + public float Value2 + { + get + { + return _Value2; + } + set + { + if (_Value2 != value) + { + _Value2 = value; + GDEDataManager.SetFloat(_key + "_" + Value2Key, _Value2); + } + } + } + + public float Value3 + { + get + { + return _Value3; + } + set + { + if (_Value3 != value) + { + _Value3 = value; + GDEDataManager.SetFloat(_key + "_" + Value3Key, _Value3); + } + } + } + + public float Value4 + { + get + { + return _Value4; + } + set + { + if (_Value4 != value) + { + _Value4 = value; + GDEDataManager.SetFloat(_key + "_" + Value4Key, _Value4); + } + } + } + + public float Value5 + { + get + { + return _Value5; + } + set + { + if (_Value5 != value) + { + _Value5 = value; + GDEDataManager.SetFloat(_key + "_" + Value5Key, _Value5); + } + } + } + + public GDESkillGroupData SkillGroup + { + get + { + return _SkillGroup; + } + set + { + if (_SkillGroup != value) + { + _SkillGroup = value; + GDEDataManager.SetCustom(_key + "_" + SkillGroupKey, _SkillGroup); + } + } + } + + public GDEGameCharacterTypeData GameCharacterType + { + get + { + return _GameCharacterType; + } + set + { + if (_GameCharacterType != value) + { + _GameCharacterType = value; + GDEDataManager.SetCustom(_key + "_" + GameCharacterTypeKey, _GameCharacterType); + } + } + } + + public GDEAbilityData Ability + { + get + { + return _Ability; + } + set + { + if (_Ability != value) + { + _Ability = value; + GDEDataManager.SetCustom(_key + "_" + AbilityKey, _Ability); + } + } + } + + public GDESkillTypeData SkillType + { + get + { + return _SkillType; + } + set + { + if (_SkillType != value) + { + _SkillType = value; + GDEDataManager.SetCustom(_key + "_" + SkillTypeKey, _SkillType); + } + } + } + + public GDESkillTreeData RelatedSkill + { + get + { + return _RelatedSkill; + } + set + { + if (_RelatedSkill != value) + { + _RelatedSkill = value; + GDEDataManager.SetCustom(_key + "_" + RelatedSkillKey, _RelatedSkill); + } + } + } + + public GDESkillUIColorData UIColor + { + get + { + return _UIColor; + } + set + { + if (_UIColor != value) + { + _UIColor = value; + GDEDataManager.SetCustom(_key + "_" + UIColorKey, _UIColor); + } + } + } + + public GDEConstantTextListData SpecificDescriptionText + { + get + { + return _SpecificDescriptionText; + } + set + { + if (_SpecificDescriptionText != value) + { + _SpecificDescriptionText = value; + GDEDataManager.SetCustom(_key + "_" + SpecificDescriptionTextKey, _SpecificDescriptionText); + } + } + } + + public GDESkillTreeData() + { + _key = string.Empty; + } + + public GDESkillTreeData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetInt(IDKey, out _ID); + dict.TryGetInt(SkillLevelKey, out _SkillLevel); + dict.TryGetInt(OptionIDKey, out _OptionID); + dict.TryGetInt(CostKey, out _Cost); + dict.TryGetFloat(Value1Key, out _Value1); + dict.TryGetFloat(Value2Key, out _Value2); + dict.TryGetFloat(Value3Key, out _Value3); + dict.TryGetFloat(Value4Key, out _Value4); + dict.TryGetFloat(Value5Key, out _Value5); + dict.TryGetString(SkillGroupKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _SkillGroup); + dict.TryGetString(GameCharacterTypeKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _GameCharacterType); + dict.TryGetString(AbilityKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Ability); + dict.TryGetString(SkillTypeKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _SkillType); + dict.TryGetString(RelatedSkillKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _RelatedSkill); + dict.TryGetString(UIColorKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _UIColor); + dict.TryGetString(SpecificDescriptionTextKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _SpecificDescriptionText); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _ID = GDEDataManager.GetInt(_key + "_" + IDKey, _ID); + _SkillLevel = GDEDataManager.GetInt(_key + "_" + SkillLevelKey, _SkillLevel); + _OptionID = GDEDataManager.GetInt(_key + "_" + OptionIDKey, _OptionID); + _Cost = GDEDataManager.GetInt(_key + "_" + CostKey, _Cost); + _Value1 = GDEDataManager.GetFloat(_key + "_" + Value1Key, _Value1); + _Value2 = GDEDataManager.GetFloat(_key + "_" + Value2Key, _Value2); + _Value3 = GDEDataManager.GetFloat(_key + "_" + Value3Key, _Value3); + _Value4 = GDEDataManager.GetFloat(_key + "_" + Value4Key, _Value4); + _Value5 = GDEDataManager.GetFloat(_key + "_" + Value5Key, _Value5); + _SkillGroup = GDEDataManager.GetCustom(_key + "_" + SkillGroupKey, _SkillGroup); + _GameCharacterType = GDEDataManager.GetCustom(_key + "_" + GameCharacterTypeKey, _GameCharacterType); + _Ability = GDEDataManager.GetCustom(_key + "_" + AbilityKey, _Ability); + _SkillType = GDEDataManager.GetCustom(_key + "_" + SkillTypeKey, _SkillType); + _RelatedSkill = GDEDataManager.GetCustom(_key + "_" + RelatedSkillKey, _RelatedSkill); + _UIColor = GDEDataManager.GetCustom(_key + "_" + UIColorKey, _UIColor); + _SpecificDescriptionText = GDEDataManager.GetCustom(_key + "_" + SpecificDescriptionTextKey, _SpecificDescriptionText); + } + + public void Reset_ID() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(IDKey, out _ID); + } + + public void Reset_SkillLevel() + { + GDEDataManager.ResetToDefault(_key, SkillLevelKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(SkillLevelKey, out _SkillLevel); + } + + public void Reset_OptionID() + { + GDEDataManager.ResetToDefault(_key, OptionIDKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(OptionIDKey, out _OptionID); + } + + public void Reset_Cost() + { + GDEDataManager.ResetToDefault(_key, CostKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(CostKey, out _Cost); + } + + public void Reset_Value1() + { + GDEDataManager.ResetToDefault(_key, Value1Key); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(Value1Key, out _Value1); + } + + public void Reset_Value2() + { + GDEDataManager.ResetToDefault(_key, Value2Key); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(Value2Key, out _Value2); + } + + public void Reset_Value3() + { + GDEDataManager.ResetToDefault(_key, Value3Key); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(Value3Key, out _Value3); + } + + public void Reset_Value4() + { + GDEDataManager.ResetToDefault(_key, Value4Key); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(Value4Key, out _Value4); + } + + public void Reset_Value5() + { + GDEDataManager.ResetToDefault(_key, Value5Key); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(Value5Key, out _Value5); + } + + public void Reset_SkillGroup() + { + GDEDataManager.ResetToDefault(_key, SkillGroupKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(SkillGroupKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _SkillGroup); + SkillGroup = GDEDataManager.GetCustom(_key + "_" + SkillGroupKey, _SkillGroup); + SkillGroup.ResetAll(); + } + + public void Reset_GameCharacterType() + { + GDEDataManager.ResetToDefault(_key, GameCharacterTypeKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(GameCharacterTypeKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _GameCharacterType); + GameCharacterType = GDEDataManager.GetCustom(_key + "_" + GameCharacterTypeKey, _GameCharacterType); + GameCharacterType.ResetAll(); + } + + public void Reset_Ability() + { + GDEDataManager.ResetToDefault(_key, AbilityKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(AbilityKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Ability); + Ability = GDEDataManager.GetCustom(_key + "_" + AbilityKey, _Ability); + Ability.ResetAll(); + } + + public void Reset_SkillType() + { + GDEDataManager.ResetToDefault(_key, SkillTypeKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(SkillTypeKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _SkillType); + SkillType = GDEDataManager.GetCustom(_key + "_" + SkillTypeKey, _SkillType); + SkillType.ResetAll(); + } + + public void Reset_RelatedSkill() + { + GDEDataManager.ResetToDefault(_key, RelatedSkillKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(RelatedSkillKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _RelatedSkill); + RelatedSkill = GDEDataManager.GetCustom(_key + "_" + RelatedSkillKey, _RelatedSkill); + RelatedSkill.ResetAll(); + } + + public void Reset_UIColor() + { + GDEDataManager.ResetToDefault(_key, UIColorKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(UIColorKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _UIColor); + UIColor = GDEDataManager.GetCustom(_key + "_" + UIColorKey, _UIColor); + UIColor.ResetAll(); + } + + public void Reset_SpecificDescriptionText() + { + GDEDataManager.ResetToDefault(_key, SpecificDescriptionTextKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(SpecificDescriptionTextKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _SpecificDescriptionText); + SpecificDescriptionText = GDEDataManager.GetCustom(_key + "_" + SpecificDescriptionTextKey, _SpecificDescriptionText); + SpecificDescriptionText.ResetAll(); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.ResetToDefault(_key, SkillGroupKey); + GDEDataManager.ResetToDefault(_key, SkillLevelKey); + GDEDataManager.ResetToDefault(_key, OptionIDKey); + GDEDataManager.ResetToDefault(_key, CostKey); + GDEDataManager.ResetToDefault(_key, GameCharacterTypeKey); + GDEDataManager.ResetToDefault(_key, AbilityKey); + GDEDataManager.ResetToDefault(_key, SkillTypeKey); + GDEDataManager.ResetToDefault(_key, Value1Key); + GDEDataManager.ResetToDefault(_key, Value2Key); + GDEDataManager.ResetToDefault(_key, Value3Key); + GDEDataManager.ResetToDefault(_key, Value4Key); + GDEDataManager.ResetToDefault(_key, Value5Key); + GDEDataManager.ResetToDefault(_key, RelatedSkillKey); + GDEDataManager.ResetToDefault(_key, UIColorKey); + GDEDataManager.ResetToDefault(_key, SpecificDescriptionTextKey); + Reset_SkillGroup(); + Reset_GameCharacterType(); + Reset_Ability(); + Reset_SkillType(); + Reset_RelatedSkill(); + Reset_UIColor(); + Reset_SpecificDescriptionText(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDESkillTypeData.cs b/Assets/Plugins/GameDataEditor/GDESkillTypeData.cs new file mode 100644 index 0000000..73279af --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDESkillTypeData.cs @@ -0,0 +1,107 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDESkillTypeData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDESkillTypeData : IGDEData + { + private static string IDKey = "ID"; + + private int _ID; + + private static string DescriptionTextKey = "DescriptionText"; + + private GDEConstantTextListData _DescriptionText; + + public int ID + { + get + { + return _ID; + } + set + { + if (_ID != value) + { + _ID = value; + GDEDataManager.SetInt(_key + "_" + IDKey, _ID); + } + } + } + + public GDEConstantTextListData DescriptionText + { + get + { + return _DescriptionText; + } + set + { + if (_DescriptionText != value) + { + _DescriptionText = value; + GDEDataManager.SetCustom(_key + "_" + DescriptionTextKey, _DescriptionText); + } + } + } + + public GDESkillTypeData() + { + _key = string.Empty; + } + + public GDESkillTypeData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetInt(IDKey, out _ID); + dict.TryGetString(DescriptionTextKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _DescriptionText); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _ID = GDEDataManager.GetInt(_key + "_" + IDKey, _ID); + _DescriptionText = GDEDataManager.GetCustom(_key + "_" + DescriptionTextKey, _DescriptionText); + } + + public void Reset_ID() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(IDKey, out _ID); + } + + public void Reset_DescriptionText() + { + GDEDataManager.ResetToDefault(_key, DescriptionTextKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(DescriptionTextKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _DescriptionText); + DescriptionText = GDEDataManager.GetCustom(_key + "_" + DescriptionTextKey, _DescriptionText); + DescriptionText.ResetAll(); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, IDKey); + GDEDataManager.ResetToDefault(_key, DescriptionTextKey); + Reset_DescriptionText(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDESkillUIColorData.cs b/Assets/Plugins/GameDataEditor/GDESkillUIColorData.cs new file mode 100644 index 0000000..6c30126 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDESkillUIColorData.cs @@ -0,0 +1,162 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDESkillUIColorData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDESkillUIColorData : IGDEData + { + private static string RKey = "R"; + + private float _R; + + private static string GKey = "G"; + + private float _G; + + private static string BKey = "B"; + + private float _B; + + private static string WKey = "W"; + + private float _W; + + public float R + { + get + { + return _R; + } + set + { + if (_R != value) + { + _R = value; + GDEDataManager.SetFloat(_key + "_" + RKey, _R); + } + } + } + + public float G + { + get + { + return _G; + } + set + { + if (_G != value) + { + _G = value; + GDEDataManager.SetFloat(_key + "_" + GKey, _G); + } + } + } + + public float B + { + get + { + return _B; + } + set + { + if (_B != value) + { + _B = value; + GDEDataManager.SetFloat(_key + "_" + BKey, _B); + } + } + } + + public float W + { + get + { + return _W; + } + set + { + if (_W != value) + { + _W = value; + GDEDataManager.SetFloat(_key + "_" + WKey, _W); + } + } + } + + public GDESkillUIColorData() + { + _key = string.Empty; + } + + public GDESkillUIColorData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetFloat(RKey, out _R); + dict.TryGetFloat(GKey, out _G); + dict.TryGetFloat(BKey, out _B); + dict.TryGetFloat(WKey, out _W); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _R = GDEDataManager.GetFloat(_key + "_" + RKey, _R); + _G = GDEDataManager.GetFloat(_key + "_" + GKey, _G); + _B = GDEDataManager.GetFloat(_key + "_" + BKey, _B); + _W = GDEDataManager.GetFloat(_key + "_" + WKey, _W); + } + + public void Reset_R() + { + GDEDataManager.ResetToDefault(_key, RKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(RKey, out _R); + } + + public void Reset_G() + { + GDEDataManager.ResetToDefault(_key, GKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(GKey, out _G); + } + + public void Reset_B() + { + GDEDataManager.ResetToDefault(_key, BKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(BKey, out _B); + } + + public void Reset_W() + { + GDEDataManager.ResetToDefault(_key, WKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloat(WKey, out _W); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, RKey); + GDEDataManager.ResetToDefault(_key, GKey); + GDEDataManager.ResetToDefault(_key, BKey); + GDEDataManager.ResetToDefault(_key, WKey); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDETwoDListCustomData.cs b/Assets/Plugins/GameDataEditor/GDETwoDListCustomData.cs new file mode 100644 index 0000000..356af95 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDETwoDListCustomData.cs @@ -0,0 +1,61 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDETwoDListCustomData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDETwoDListCustomData : IGDEData + { + private static string cust_string_listKey = "cust_string_list"; + + public List cust_string_list; + + public GDETwoDListCustomData() + { + _key = string.Empty; + } + + public GDETwoDListCustomData(string key) + { + _key = key; + } + + public void Set_cust_string_list() + { + GDEDataManager.SetStringList(_key + "_" + cust_string_listKey, cust_string_list); + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetStringList(cust_string_listKey, out cust_string_list); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + cust_string_list = GDEDataManager.GetStringList(_key + "_" + cust_string_listKey, cust_string_list); + } + + public void Reset_cust_string_list() + { + GDEDataManager.ResetToDefault(_key, cust_string_listKey); + GDEDataManager.Get(_key, out var data); + data.TryGetStringList(cust_string_listKey, out cust_string_list); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, cust_string_listKey); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDETwoDListData.cs b/Assets/Plugins/GameDataEditor/GDETwoDListData.cs new file mode 100644 index 0000000..430478c --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDETwoDListData.cs @@ -0,0 +1,299 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDETwoDListData +using System.Collections.Generic; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public class GDETwoDListData : IGDEData + { + private static string bKey = "b"; + + public List> b; + + private static string iKey = "i"; + + public List> i; + + private static string fKey = "f"; + + public List> f; + + private static string sKey = "s"; + + public List> s; + + private static string v2Key = "v2"; + + public List> v2; + + private static string v3Key = "v3"; + + public List> v3; + + private static string v4Key = "v4"; + + public List> v4; + + private static string cKey = "c"; + + public List> c; + + private static string goKey = "go"; + + public List> go; + + private static string texKey = "tex"; + + public List> tex; + + private static string matKey = "mat"; + + public List> mat; + + private static string audKey = "aud"; + + public List> aud; + + private static string cusKey = "cus"; + + public List> cus; + + public GDETwoDListData() + { + _key = string.Empty; + } + + public GDETwoDListData(string key) + { + _key = key; + } + + public void Set_b() + { + GDEDataManager.SetBoolTwoDList(_key + "_" + bKey, b); + } + + public void Set_i() + { + GDEDataManager.SetIntTwoDList(_key + "_" + iKey, i); + } + + public void Set_f() + { + GDEDataManager.SetFloatTwoDList(_key + "_" + fKey, f); + } + + public void Set_s() + { + GDEDataManager.SetStringTwoDList(_key + "_" + sKey, s); + } + + public void Set_v2() + { + GDEDataManager.SetVector2TwoDList(_key + "_" + v2Key, v2); + } + + public void Set_v3() + { + GDEDataManager.SetVector3TwoDList(_key + "_" + v3Key, v3); + } + + public void Set_v4() + { + GDEDataManager.SetVector4TwoDList(_key + "_" + v4Key, v4); + } + + public void Set_c() + { + GDEDataManager.SetColorTwoDList(_key + "_" + cKey, c); + } + + public void Set_go() + { + GDEDataManager.SetGameObjectTwoDList(_key + "_" + goKey, go); + } + + public void Set_tex() + { + GDEDataManager.SetTexture2DTwoDList(_key + "_" + texKey, tex); + } + + public void Set_mat() + { + GDEDataManager.SetMaterialTwoDList(_key + "_" + matKey, mat); + } + + public void Set_aud() + { + GDEDataManager.SetAudioClipTwoDList(_key + "_" + audKey, aud); + } + + public void Set_cus() + { + GDEDataManager.SetCustomTwoDList(_key + "_" + cusKey, cus); + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetBoolTwoDList(bKey, out b); + dict.TryGetIntTwoDList(iKey, out i); + dict.TryGetFloatTwoDList(fKey, out f); + dict.TryGetStringTwoDList(sKey, out s); + dict.TryGetVector2TwoDList(v2Key, out v2); + dict.TryGetVector3TwoDList(v3Key, out v3); + dict.TryGetVector4TwoDList(v4Key, out v4); + dict.TryGetColorTwoDList(cKey, out c); + dict.TryGetGameObjectTwoDList(goKey, out go); + dict.TryGetTexture2DTwoDList(texKey, out tex); + dict.TryGetMaterialTwoDList(matKey, out mat); + dict.TryGetAudioClipTwoDList(audKey, out aud); + dict.TryGetCustomTwoDList(cusKey, out cus); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + b = GDEDataManager.GetBoolTwoDList(_key + "_" + bKey, b); + i = GDEDataManager.GetIntTwoDList(_key + "_" + iKey, i); + f = GDEDataManager.GetFloatTwoDList(_key + "_" + fKey, f); + s = GDEDataManager.GetStringTwoDList(_key + "_" + sKey, s); + v2 = GDEDataManager.GetVector2TwoDList(_key + "_" + v2Key, v2); + v3 = GDEDataManager.GetVector3TwoDList(_key + "_" + v3Key, v3); + v4 = GDEDataManager.GetVector4TwoDList(_key + "_" + v4Key, v4); + c = GDEDataManager.GetColorTwoDList(_key + "_" + cKey, c); + go = GDEDataManager.GetGameObjectTwoDList(_key + "_" + goKey, go); + tex = GDEDataManager.GetTexture2DTwoDList(_key + "_" + texKey, tex); + mat = GDEDataManager.GetMaterialTwoDList(_key + "_" + matKey, mat); + aud = GDEDataManager.GetAudioClipTwoDList(_key + "_" + audKey, aud); + cus = GDEDataManager.GetCustomTwoDList(_key + "_" + cusKey, cus); + } + + public void Reset_b() + { + GDEDataManager.ResetToDefault(_key, bKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBoolTwoDList(bKey, out b); + } + + public void Reset_i() + { + GDEDataManager.ResetToDefault(_key, iKey); + GDEDataManager.Get(_key, out var data); + data.TryGetIntTwoDList(iKey, out i); + } + + public void Reset_f() + { + GDEDataManager.ResetToDefault(_key, fKey); + GDEDataManager.Get(_key, out var data); + data.TryGetFloatTwoDList(fKey, out f); + } + + public void Reset_s() + { + GDEDataManager.ResetToDefault(_key, sKey); + GDEDataManager.Get(_key, out var data); + data.TryGetStringTwoDList(sKey, out s); + } + + public void Reset_v2() + { + GDEDataManager.ResetToDefault(_key, v2Key); + GDEDataManager.Get(_key, out var data); + data.TryGetVector2TwoDList(v2Key, out v2); + } + + public void Reset_v3() + { + GDEDataManager.ResetToDefault(_key, v3Key); + GDEDataManager.Get(_key, out var data); + data.TryGetVector3TwoDList(v3Key, out v3); + } + + public void Reset_v4() + { + GDEDataManager.ResetToDefault(_key, v4Key); + GDEDataManager.Get(_key, out var data); + data.TryGetVector4TwoDList(v4Key, out v4); + } + + public void Reset_c() + { + GDEDataManager.ResetToDefault(_key, cKey); + GDEDataManager.Get(_key, out var data); + data.TryGetColorTwoDList(cKey, out c); + } + + public void Reset_go() + { + GDEDataManager.ResetToDefault(_key, goKey); + GDEDataManager.Get(_key, out var data); + data.TryGetGameObjectTwoDList(goKey, out go); + } + + public void Reset_tex() + { + GDEDataManager.ResetToDefault(_key, texKey); + GDEDataManager.Get(_key, out var data); + data.TryGetTexture2DTwoDList(texKey, out tex); + } + + public void Reset_mat() + { + GDEDataManager.ResetToDefault(_key, matKey); + GDEDataManager.Get(_key, out var data); + data.TryGetMaterialTwoDList(matKey, out mat); + } + + public void Reset_aud() + { + GDEDataManager.ResetToDefault(_key, audKey); + GDEDataManager.Get(_key, out var data); + data.TryGetAudioClipTwoDList(audKey, out aud); + } + + public void Reset_cus() + { + GDEDataManager.ResetToDefault(_key, cusKey); + GDEDataManager.Get(_key, out var data); + data.TryGetCustomTwoDList(cusKey, out cus); + cus = GDEDataManager.GetCustomTwoDList(_key + "_" + cusKey, cus); + cus.ForEach(delegate(List x) + { + x.ForEach(delegate(GDETwoDListCustomData y) + { + y.ResetAll(); + }); + }); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, bKey); + GDEDataManager.ResetToDefault(_key, iKey); + GDEDataManager.ResetToDefault(_key, fKey); + GDEDataManager.ResetToDefault(_key, sKey); + GDEDataManager.ResetToDefault(_key, v2Key); + GDEDataManager.ResetToDefault(_key, v3Key); + GDEDataManager.ResetToDefault(_key, v4Key); + GDEDataManager.ResetToDefault(_key, cKey); + GDEDataManager.ResetToDefault(_key, cusKey); + GDEDataManager.ResetToDefault(_key, goKey); + GDEDataManager.ResetToDefault(_key, texKey); + GDEDataManager.ResetToDefault(_key, matKey); + GDEDataManager.ResetToDefault(_key, audKey); + Reset_cus(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEWordScriptTriggerTypeData.cs b/Assets/Plugins/GameDataEditor/GDEWordScriptTriggerTypeData.cs new file mode 100644 index 0000000..22bbfaa --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEWordScriptTriggerTypeData.cs @@ -0,0 +1,102 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEWordScriptTriggerTypeData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDEWordScriptTriggerTypeData : IGDEData + { + private static string enableStakingKey = "enableStaking"; + + private bool _enableStaking; + + private static string priorityKey = "priority"; + + private int _priority; + + public bool enableStaking + { + get + { + return _enableStaking; + } + set + { + if (_enableStaking != value) + { + _enableStaking = value; + GDEDataManager.SetBool(_key + "_" + enableStakingKey, _enableStaking); + } + } + } + + public int priority + { + get + { + return _priority; + } + set + { + if (_priority != value) + { + _priority = value; + GDEDataManager.SetInt(_key + "_" + priorityKey, _priority); + } + } + } + + public GDEWordScriptTriggerTypeData() + { + _key = string.Empty; + } + + public GDEWordScriptTriggerTypeData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetBool(enableStakingKey, out _enableStaking); + dict.TryGetInt(priorityKey, out _priority); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _enableStaking = GDEDataManager.GetBool(_key + "_" + enableStakingKey, _enableStaking); + _priority = GDEDataManager.GetInt(_key + "_" + priorityKey, _priority); + } + + public void Reset_enableStaking() + { + GDEDataManager.ResetToDefault(_key, enableStakingKey); + GDEDataManager.Get(_key, out var data); + data.TryGetBool(enableStakingKey, out _enableStaking); + } + + public void Reset_priority() + { + GDEDataManager.ResetToDefault(_key, priorityKey); + GDEDataManager.Get(_key, out var data); + data.TryGetInt(priorityKey, out _priority); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, priorityKey); + GDEDataManager.ResetToDefault(_key, enableStakingKey); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDEWordScriptsListData.cs b/Assets/Plugins/GameDataEditor/GDEWordScriptsListData.cs new file mode 100644 index 0000000..2b320a1 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDEWordScriptsListData.cs @@ -0,0 +1,397 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDEWordScriptsListData +using System.Collections.Generic; +using GameDataEditor; + +namespace GameDataEditor +{ + public class GDEWordScriptsListData : IGDEData + { + private static string VoiceAssetPathKey = "VoiceAssetPath"; + + private string _VoiceAssetPath; + + private static string ThaiCaptionKey = "ThaiCaption"; + + private string _ThaiCaption; + + private static string TraditionalChineseCaptionKey = "TraditionalChineseCaption"; + + private string _TraditionalChineseCaption; + + private static string FrenchCaptionKey = "FrenchCaption"; + + private string _FrenchCaption; + + private static string EnglishCaptionKey = "EnglishCaption"; + + private string _EnglishCaption; + + private static string JapaneseCaptionKey = "JapaneseCaption"; + + private string _JapaneseCaption; + + private static string TriggerKey = "Trigger"; + + private GDEWordScriptTriggerTypeData _Trigger; + + private static string ActorKey = "Actor"; + + private GDEGameCharacterTypeData _Actor; + + private static string Together_1Key = "Together_1"; + + private GDEGameCharacterTypeData _Together_1; + + private static string Together_2Key = "Together_2"; + + private GDEGameCharacterTypeData _Together_2; + + private static string NextKey = "Next"; + + private GDEWordScriptsListData _Next; + + public string VoiceAssetPath + { + get + { + return _VoiceAssetPath; + } + set + { + if (_VoiceAssetPath != value) + { + _VoiceAssetPath = value; + GDEDataManager.SetString(_key + "_" + VoiceAssetPathKey, _VoiceAssetPath); + } + } + } + + public string ThaiCaption + { + get + { + return _ThaiCaption; + } + set + { + if (_ThaiCaption != value) + { + _ThaiCaption = value; + GDEDataManager.SetString(_key + "_" + ThaiCaptionKey, _ThaiCaption); + } + } + } + + public string TraditionalChineseCaption + { + get + { + return _TraditionalChineseCaption; + } + set + { + if (_TraditionalChineseCaption != value) + { + _TraditionalChineseCaption = value; + GDEDataManager.SetString(_key + "_" + TraditionalChineseCaptionKey, _TraditionalChineseCaption); + } + } + } + + public string FrenchCaption + { + get + { + return _FrenchCaption; + } + set + { + if (_FrenchCaption != value) + { + _FrenchCaption = value; + GDEDataManager.SetString(_key + "_" + FrenchCaptionKey, _FrenchCaption); + } + } + } + + public string EnglishCaption + { + get + { + return _EnglishCaption; + } + set + { + if (_EnglishCaption != value) + { + _EnglishCaption = value; + GDEDataManager.SetString(_key + "_" + EnglishCaptionKey, _EnglishCaption); + } + } + } + + public string JapaneseCaption + { + get + { + return _JapaneseCaption; + } + set + { + if (_JapaneseCaption != value) + { + _JapaneseCaption = value; + GDEDataManager.SetString(_key + "_" + JapaneseCaptionKey, _JapaneseCaption); + } + } + } + + public GDEWordScriptTriggerTypeData Trigger + { + get + { + return _Trigger; + } + set + { + if (_Trigger != value) + { + _Trigger = value; + GDEDataManager.SetCustom(_key + "_" + TriggerKey, _Trigger); + } + } + } + + public GDEGameCharacterTypeData Actor + { + get + { + return _Actor; + } + set + { + if (_Actor != value) + { + _Actor = value; + GDEDataManager.SetCustom(_key + "_" + ActorKey, _Actor); + } + } + } + + public GDEGameCharacterTypeData Together_1 + { + get + { + return _Together_1; + } + set + { + if (_Together_1 != value) + { + _Together_1 = value; + GDEDataManager.SetCustom(_key + "_" + Together_1Key, _Together_1); + } + } + } + + public GDEGameCharacterTypeData Together_2 + { + get + { + return _Together_2; + } + set + { + if (_Together_2 != value) + { + _Together_2 = value; + GDEDataManager.SetCustom(_key + "_" + Together_2Key, _Together_2); + } + } + } + + public GDEWordScriptsListData Next + { + get + { + return _Next; + } + set + { + if (_Next != value) + { + _Next = value; + GDEDataManager.SetCustom(_key + "_" + NextKey, _Next); + } + } + } + + public GDEWordScriptsListData() + { + _key = string.Empty; + } + + public GDEWordScriptsListData(string key) + { + _key = key; + } + + public override void LoadFromDict(string dataKey, Dictionary dict) + { + _key = dataKey; + if (dict == null) + { + LoadFromSavedData(dataKey); + return; + } + dict.TryGetString(VoiceAssetPathKey, out _VoiceAssetPath); + dict.TryGetString(ThaiCaptionKey, out _ThaiCaption); + dict.TryGetString(TraditionalChineseCaptionKey, out _TraditionalChineseCaption); + dict.TryGetString(FrenchCaptionKey, out _FrenchCaption); + dict.TryGetString(EnglishCaptionKey, out _EnglishCaption); + dict.TryGetString(JapaneseCaptionKey, out _JapaneseCaption); + dict.TryGetString(TriggerKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Trigger); + dict.TryGetString(ActorKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Actor); + dict.TryGetString(Together_1Key, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Together_1); + dict.TryGetString(Together_2Key, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Together_2); + dict.TryGetString(NextKey, out value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Next); + LoadFromSavedData(dataKey); + } + + public override void LoadFromSavedData(string dataKey) + { + _key = dataKey; + _VoiceAssetPath = GDEDataManager.GetString(_key + "_" + VoiceAssetPathKey, _VoiceAssetPath); + _ThaiCaption = GDEDataManager.GetString(_key + "_" + ThaiCaptionKey, _ThaiCaption); + _TraditionalChineseCaption = GDEDataManager.GetString(_key + "_" + TraditionalChineseCaptionKey, _TraditionalChineseCaption); + _FrenchCaption = GDEDataManager.GetString(_key + "_" + FrenchCaptionKey, _FrenchCaption); + _EnglishCaption = GDEDataManager.GetString(_key + "_" + EnglishCaptionKey, _EnglishCaption); + _JapaneseCaption = GDEDataManager.GetString(_key + "_" + JapaneseCaptionKey, _JapaneseCaption); + _Trigger = GDEDataManager.GetCustom(_key + "_" + TriggerKey, _Trigger); + _Actor = GDEDataManager.GetCustom(_key + "_" + ActorKey, _Actor); + _Together_1 = GDEDataManager.GetCustom(_key + "_" + Together_1Key, _Together_1); + _Together_2 = GDEDataManager.GetCustom(_key + "_" + Together_2Key, _Together_2); + _Next = GDEDataManager.GetCustom(_key + "_" + NextKey, _Next); + } + + public void Reset_VoiceAssetPath() + { + GDEDataManager.ResetToDefault(_key, VoiceAssetPathKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(VoiceAssetPathKey, out _VoiceAssetPath); + } + + public void Reset_ThaiCaption() + { + GDEDataManager.ResetToDefault(_key, ThaiCaptionKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(ThaiCaptionKey, out _ThaiCaption); + } + + public void Reset_TraditionalChineseCaption() + { + GDEDataManager.ResetToDefault(_key, TraditionalChineseCaptionKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(TraditionalChineseCaptionKey, out _TraditionalChineseCaption); + } + + public void Reset_FrenchCaption() + { + GDEDataManager.ResetToDefault(_key, FrenchCaptionKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(FrenchCaptionKey, out _FrenchCaption); + } + + public void Reset_EnglishCaption() + { + GDEDataManager.ResetToDefault(_key, EnglishCaptionKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(EnglishCaptionKey, out _EnglishCaption); + } + + public void Reset_JapaneseCaption() + { + GDEDataManager.ResetToDefault(_key, JapaneseCaptionKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(JapaneseCaptionKey, out _JapaneseCaption); + } + + public void Reset_Trigger() + { + GDEDataManager.ResetToDefault(_key, TriggerKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(TriggerKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Trigger); + Trigger = GDEDataManager.GetCustom(_key + "_" + TriggerKey, _Trigger); + Trigger.ResetAll(); + } + + public void Reset_Actor() + { + GDEDataManager.ResetToDefault(_key, ActorKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(ActorKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Actor); + Actor = GDEDataManager.GetCustom(_key + "_" + ActorKey, _Actor); + Actor.ResetAll(); + } + + public void Reset_Together_1() + { + GDEDataManager.ResetToDefault(_key, Together_1Key); + GDEDataManager.Get(_key, out var data); + data.TryGetString(Together_1Key, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Together_1); + Together_1 = GDEDataManager.GetCustom(_key + "_" + Together_1Key, _Together_1); + Together_1.ResetAll(); + } + + public void Reset_Together_2() + { + GDEDataManager.ResetToDefault(_key, Together_2Key); + GDEDataManager.Get(_key, out var data); + data.TryGetString(Together_2Key, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Together_2); + Together_2 = GDEDataManager.GetCustom(_key + "_" + Together_2Key, _Together_2); + Together_2.ResetAll(); + } + + public void Reset_Next() + { + GDEDataManager.ResetToDefault(_key, NextKey); + GDEDataManager.Get(_key, out var data); + data.TryGetString(NextKey, out var value); + GDEDataManager.DataDictionary.TryGetCustom(value, out _Next); + Next = GDEDataManager.GetCustom(_key + "_" + NextKey, _Next); + Next.ResetAll(); + } + + public void ResetAll() + { + GDEDataManager.ResetToDefault(_key, TriggerKey); + GDEDataManager.ResetToDefault(_key, ActorKey); + GDEDataManager.ResetToDefault(_key, Together_1Key); + GDEDataManager.ResetToDefault(_key, Together_2Key); + GDEDataManager.ResetToDefault(_key, VoiceAssetPathKey); + GDEDataManager.ResetToDefault(_key, NextKey); + GDEDataManager.ResetToDefault(_key, ThaiCaptionKey); + GDEDataManager.ResetToDefault(_key, TraditionalChineseCaptionKey); + GDEDataManager.ResetToDefault(_key, FrenchCaptionKey); + GDEDataManager.ResetToDefault(_key, EnglishCaptionKey); + GDEDataManager.ResetToDefault(_key, JapaneseCaptionKey); + Reset_Trigger(); + Reset_Actor(); + Reset_Together_1(); + Reset_Together_2(); + Reset_Next(); + GDEDataManager.Get(_key, out var data); + LoadFromDict(_key, data); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GDMConstants.cs b/Assets/Plugins/GameDataEditor/GDMConstants.cs new file mode 100644 index 0000000..feeeb4f --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GDMConstants.cs @@ -0,0 +1,172 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GDMConstants + +namespace GameDataEditor +{ + public class GDMConstants + { + public const string MetaDataFormat = "{0}{1}"; + + public const string GdeSignature = "GDE"; + + public const string TypePrefix = "_gdeType_"; + + public const string IsListPrefix = "_gdeIsList_"; + + public const string SchemaPrefix = "_gdeSchema_"; + + public const string SchemaKey = "_gdeSchema"; + + public const string MetaDataFileName = "gde_meta_data"; + + public const string ErrorLoadingValue = "Could not load {0} value from item name:{1}, field name:{2}!"; + + public const string ErrorSettingValue = "Could not save {0} value to item name:{1}, field name:{2}!"; + + public const string ErrorSettingCustomValue = "Could not save {0} value to item name:{1}, field name:{2}, custom field name:{3}!"; + + public const string ErrorResettingValue = "Could not reset item name:{0}, field name:{1}!"; + + public const string ErrorResettingCustomValue = "Could not reset item name:{0}, field name:{1}, custom field name:{2}!"; + + public const string ErrorTextAssetNull = "GDEInit: TextAsset is null!"; + + public const string ErrorCorruptPrefFormat = "Corrupt preference file for: {0}"; + + public const string ErrorNotBoolArrayFormat = "{0} is not a boolean array."; + + public const string ErrorNotArrayFormat = "{0} is not a {1} array."; + + public const string ErrorNotInitialized = "GDE Data Manager not initialized!"; + + public const string ActionCategory = "Game Data Editor"; + + public const string ItemNameTooltip = "Item Name"; + + public const string FieldNameTooltip = "Field Name"; + + public const string BoolType = "bool"; + + public const string ColorType = "Color"; + + public const string FloatType = "float"; + + public const string IntType = "int"; + + public const string StringType = "string"; + + public const string Vec2Type = "Vector2"; + + public const string Vec3Type = "Vector3"; + + public const string CustomType = "Custom"; + + public const string InitActionTooltip = "Initializes the Game Data Manager"; + + public const string GDEDataFilenameTooltip = "GDE Data File Name"; + + public const string EncryptedCheckboxTooltip = "Check if GDE Data has been encrypted."; + + public const string ResetActionTooltip = "Resets a Field to the original value on a GDE Item"; + + public const string ResetCustomActionTooltip = "Resets a Field to the original value in a GDE Custom Item"; + + public const string ResetFieldNameTooltip = "The name of the field inside the custom item."; + + public const string GetBoolActionTooltip = "Gets a bool from a GDE Item"; + + public const string GetColorActionTooltip = "Gets a Color from a GDE Item"; + + public const string GetFloatActionTooltip = "Gets a float from a GDE Item"; + + public const string GetIntActionTooltip = "Gets an int from a GDE Item"; + + public const string GetStringActionTooltip = "Gets a string from a GDE Item"; + + public const string GetVec2ActionTooltip = "Gets a Vector2 from a GDE Item"; + + public const string GetVec3ActionTooltip = "Gets a Vector3 from a GDE Item"; + + public const string GetGOActionTooltip = "Gets a GameObject from a GDE Item"; + + public const string GetTexture2DActionTooltip = "Gets a Texture2D from a GDE Item"; + + public const string GetMaterialActionTooltip = "Gets a Material from a GDE Item"; + + public const string GetAudioClipActionTooltip = "Gets an AudioClip from a GDE Item"; + + public const string GetBoolCustomActionTooltip = "Gets a bool from a GDE Custom Item"; + + public const string GetColorCustomActionTooltip = "Gets a Color from a GDE Custom Item"; + + public const string GetFloatCustomActionTooltip = "Gets a Float from a GDE Custom Item"; + + public const string GetIntCustomActionTooltip = "Gets a Int from a GDE Custom Item"; + + public const string GetStringCustomActionTooltip = "Gets a string from a GDE Custom Item"; + + public const string GetVec2CustomActionTooltip = "Gets a Vector2 from a GDE Custom Item"; + + public const string GetVec3CustomActionTooltip = "Gets a Vector3 from a GDE Custom Item"; + + public const string GetGOCustomActionTooltip = "Gets a GameObject from a GDE Custom Item"; + + public const string GetTexture2DCustomActionTooltip = "Gets a Texture2D from a GDE Custom Item"; + + public const string GetMaterialCustomActionTooltip = "Gets a Material from a GDE Custom Item"; + + public const string GetAudioClipCustomActionTooltip = "Geta an AudioClip from a GDE Custom Item"; + + public const string BoolCustomFieldTooltip = "The field name of the bool inside the custom item."; + + public const string ColorCustomFieldTooltip = "The field name of the Color inside the custom item."; + + public const string FloatCustomFieldTooltip = "The field name of the float inside the custom item."; + + public const string IntCustomFieldTooltip = "The field name of the int inside the custom item."; + + public const string StringCustomFieldTooltip = "The field name of the string inside the custom item."; + + public const string Vec2CustomFieldTooltip = "The field name of the Vector2 inside the custom item."; + + public const string Vec3CustomFieldTooltip = "The field name of the Vector3 inside the custom item."; + + public const string GOCustomFieldTooltip = "The field name of the GameObject inside the custom item."; + + public const string Texture2DCustomFieldTooltip = "The field name of the Texture2D inside the custom item."; + + public const string MaterialCustomFieldTooltip = "The field name of the Material inside the custom item."; + + public const string AudioClipCustomFieldTooltip = "The field name of the AudioClip inside the custom item."; + + public const string SetBoolActionTooltip = "Sets a Bool on a GDE Item"; + + public const string SetColorActionTooltip = "Sets a Color on a GDE Item"; + + public const string SetFloatActionTooltip = "Sets a float on a GDE Item"; + + public const string SetIntActionTooltip = "Sets an int on a GDE Item"; + + public const string SetStringActionTooltip = "Sets a string on a GDE Item"; + + public const string SetVec2ActionTooltip = "Sets a Vector2 on a GDE Item"; + + public const string SetVec3ActionTooltip = "Sets a Vector3 on a GDE Item"; + + public const string SetCustomActionTooltip = "Sets a Custom on a GDE Item"; + + public const string SetCustomBoolActionTooltip = "Sets a bool on a GDE Custom Item"; + + public const string SetCustomColorActionTooltip = "Sets a Color on a GDE Custom Item"; + + public const string SetCustomFloatActionTooltip = "Sets a float on a GDE Custom Item"; + + public const string SetCustomIntActionTooltip = "Sets an int on a GDE Custom Item"; + + public const string SetCustomStringActionTooltip = "Sets a string on a GDE Custom Item"; + + public const string SetCustomVec2ActionTooltip = "Sets a Vector2 on a GDE Custom Item"; + + public const string SetCustomVec3ActionTooltip = "Sets a Vector3 on a GDE Custom Item"; + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/GenericExtensions.cs b/Assets/Plugins/GameDataEditor/GenericExtensions.cs new file mode 100644 index 0000000..efd9d68 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/GenericExtensions.cs @@ -0,0 +1,73 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.GenericExtensions +using System; +using System.Collections.Generic; +using System.Reflection; +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public static class GenericExtensions + { + public static bool IsCloneableType(this T variable) + { + return typeof(ICloneable).IsAssignableFrom(variable.GetType()); + } + + public static bool IsGenericList(this T variable) + { + Type[] interfaces = variable.GetType().GetInterfaces(); + foreach (Type type in interfaces) + { + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(IList<>)) + { + return true; + } + } + return false; + } + + public static bool IsGenericDictionary(this T variable) + { + Type[] interfaces = variable.GetType().GetInterfaces(); + foreach (Type type in interfaces) + { + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(IDictionary<, >)) + { + return true; + } + } + return false; + } + + public static bool DerivesFromUnityObject(this T variable) + { + return typeof(UnityEngine.Object).IsAssignableFrom(variable.GetType()); + } + + public static T DeepCopyCollection(this T variable) + { + if (variable == null) + { + return variable; + } + T result = variable; + if (variable.IsGenericDictionary()) + { + Type[] genericArguments = variable.GetType().GetGenericArguments(); + Type type = genericArguments[0]; + Type type2 = genericArguments[1]; + MethodInfo methodInfo = DictionaryExtensions.DeepCopyMethodInfo.MakeGenericMethod(type, type2); + result = (T)methodInfo.Invoke(variable, new object[1] { variable }); + } + else if (variable.IsGenericList()) + { + Type type3 = variable.GetType().GetGenericArguments()[0]; + MethodInfo methodInfo2 = ListExtensions.DeepCopyMethodInfo.MakeGenericMethod(type3); + result = (T)methodInfo2.Invoke(variable, new object[1] { variable }); + } + return result; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/IGDEData.cs b/Assets/Plugins/GameDataEditor/IGDEData.cs new file mode 100644 index 0000000..cff2de4 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/IGDEData.cs @@ -0,0 +1,27 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.IGDEData +using System.Collections.Generic; + +namespace GameDataEditor +{ + public abstract class IGDEData + { + protected string _key; + + public string Key + { + get + { + return _key; + } + private set + { + _key = value; + } + } + + public abstract void LoadFromDict(string key, Dictionary dict); + + public abstract void LoadFromSavedData(string key); + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/Json.cs b/Assets/Plugins/GameDataEditor/Json.cs new file mode 100644 index 0000000..71d91ad --- /dev/null +++ b/Assets/Plugins/GameDataEditor/Json.cs @@ -0,0 +1,462 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.Json +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; +using GameDataEditor; + +namespace GameDataEditor +{ + public static class Json + { + private sealed class Parser : IDisposable + { + private enum TOKEN + { + NONE, + CURLY_OPEN, + CURLY_CLOSE, + SQUARED_OPEN, + SQUARED_CLOSE, + COLON, + COMMA, + STRING, + NUMBER, + TRUE, + FALSE, + NULL + } + + private const string WORD_BREAK = "{}[],:\""; + + private StringReader json; + + private char PeekChar => Convert.ToChar(json.Peek()); + + private char NextChar => Convert.ToChar(json.Read()); + + private string NextWord + { + get + { + StringBuilder stringBuilder = new StringBuilder(); + while (!IsWordBreak(PeekChar)) + { + stringBuilder.Append(NextChar); + if (json.Peek() == -1) + { + break; + } + } + return stringBuilder.ToString(); + } + } + + private TOKEN NextToken + { + get + { + EatWhitespace(); + if (json.Peek() == -1) + { + return TOKEN.NONE; + } + switch (PeekChar) + { + case '{': + return TOKEN.CURLY_OPEN; + case '}': + json.Read(); + return TOKEN.CURLY_CLOSE; + case '[': + return TOKEN.SQUARED_OPEN; + case ']': + json.Read(); + return TOKEN.SQUARED_CLOSE; + case ',': + json.Read(); + return TOKEN.COMMA; + case '"': + return TOKEN.STRING; + case ':': + return TOKEN.COLON; + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return TOKEN.NUMBER; + default: + switch (NextWord) + { + case "false": return TOKEN.FALSE; + case "true": return TOKEN.TRUE; + case "null": return TOKEN.NULL; + default: return TOKEN.NONE; + } + } + } + } + + private Parser(string jsonString) + { + json = new StringReader(jsonString); + } + + public static bool IsWordBreak(char c) + { + return char.IsWhiteSpace(c) || "{}[],:\"".IndexOf(c) != -1; + } + + public static object Parse(string jsonString) + { + using (Parser parser = new Parser(jsonString)) { + return parser.ParseValue(); + } + } + + public void Dispose() + { + json.Dispose(); + json = null; + } + + private Dictionary ParseObject() + { + Dictionary dictionary = new Dictionary(); + json.Read(); + while (true) + { + switch (NextToken) + { + case TOKEN.COMMA: + continue; + case TOKEN.NONE: + return null; + case TOKEN.CURLY_CLOSE: + return dictionary; + } + string text = ParseString(); + if (text == null) + { + return null; + } + if (NextToken != TOKEN.COLON) + { + return null; + } + json.Read(); + dictionary[text] = ParseValue(); + } + } + + private List ParseArray() + { + List list = new List(); + json.Read(); + bool flag = true; + while (flag) + { + TOKEN nextToken = NextToken; + switch (nextToken) + { + case TOKEN.NONE: + return null; + case TOKEN.SQUARED_CLOSE: + flag = false; + break; + default: + { + object item = ParseByToken(nextToken); + list.Add(item); + break; + } + case TOKEN.COMMA: + break; + } + } + return list; + } + + private object ParseValue() + { + TOKEN nextToken = NextToken; + return ParseByToken(nextToken); + } + + private object ParseByToken(TOKEN token) + { + switch (token) + { + case TOKEN.STRING: return ParseString(); + case TOKEN.NUMBER: return ParseNumber(); + case TOKEN.CURLY_OPEN: return ParseObject(); + case TOKEN.SQUARED_OPEN: return ParseArray(); + case TOKEN.TRUE: return true; + case TOKEN.FALSE: return false; + case TOKEN.NULL: return null; + default: return null; + }; + } + + private string ParseString() + { + StringBuilder stringBuilder = new StringBuilder(); + json.Read(); + bool flag = true; + while (flag) + { + if (json.Peek() == -1) + { + flag = false; + break; + } + char nextChar = NextChar; + switch (nextChar) + { + case '"': + flag = false; + break; + case '\\': + if (json.Peek() == -1) + { + flag = false; + break; + } + nextChar = NextChar; + switch (nextChar) + { + case '"': + case '/': + case '\\': + stringBuilder.Append(nextChar); + break; + case 'b': + stringBuilder.Append('\b'); + break; + case 'f': + stringBuilder.Append('\f'); + break; + case 'n': + stringBuilder.Append('\n'); + break; + case 'r': + stringBuilder.Append('\r'); + break; + case 't': + stringBuilder.Append('\t'); + break; + case 'u': + { + char[] array = new char[4]; + for (int i = 0; i < 4; i++) + { + array[i] = NextChar; + } + stringBuilder.Append((char)Convert.ToInt32(new string(array), 16)); + break; + } + } + break; + default: + stringBuilder.Append(nextChar); + break; + } + } + return stringBuilder.ToString(); + } + + private object ParseNumber() + { + string nextWord = NextWord; + if (nextWord.IndexOf('.') == -1) + { + long.TryParse(nextWord, out var result); + return result; + } + double.TryParse(nextWord, out var result2); + return result2; + } + + private void EatWhitespace() + { + while (char.IsWhiteSpace(PeekChar)) + { + json.Read(); + if (json.Peek() == -1) + { + break; + } + } + } + } + + private sealed class Serializer + { + private StringBuilder builder; + + private Serializer() + { + builder = new StringBuilder(); + } + + public static string Serialize(object obj) + { + Serializer serializer = new Serializer(); + serializer.SerializeValue(obj); + return serializer.builder.ToString(); + } + + private void SerializeValue(object value) + { + if (value == null) + { + builder.Append("null"); + } + else if (value is string str) + { + SerializeString(str); + } + else if (value is bool) + { + builder.Append((!(bool)value) ? "false" : "true"); + } + else if (value is IList anArray) + { + SerializeArray(anArray); + } + else if (value is IDictionary obj) + { + SerializeObject(obj); + } + else if (value is char) + { + SerializeString(new string((char)value, 1)); + } + else + { + SerializeOther(value); + } + } + + private void SerializeObject(IDictionary obj) + { + bool flag = true; + builder.Append('{'); + foreach (object key in obj.Keys) + { + if (!flag) + { + builder.Append(','); + } + SerializeString(key.ToString()); + builder.Append(':'); + SerializeValue(obj[key]); + flag = false; + } + builder.Append('}'); + } + + private void SerializeArray(IList anArray) + { + builder.Append('['); + bool flag = true; + foreach (object item in anArray) + { + if (!flag) + { + builder.Append(','); + } + SerializeValue(item); + flag = false; + } + builder.Append(']'); + } + + private void SerializeString(string str) + { + builder.Append('"'); + char[] array = str.ToCharArray(); + char[] array2 = array; + foreach (char c in array2) + { + switch (c) + { + case '"': + builder.Append("\\\""); + continue; + case '\\': + builder.Append("\\\\"); + continue; + case '\b': + builder.Append("\\b"); + continue; + case '\f': + builder.Append("\\f"); + continue; + case '\n': + builder.Append("\\n"); + continue; + case '\r': + builder.Append("\\r"); + continue; + case '\t': + builder.Append("\\t"); + continue; + } + int num = Convert.ToInt32(c); + if (num >= 32 && num <= 126) + { + builder.Append(c); + continue; + } + builder.Append("\\u"); + builder.Append(num.ToString("x4")); + } + builder.Append('"'); + } + + private void SerializeOther(object value) + { + if (value is float) + { + builder.Append(((float)value).ToString("R")); + } + else if (value is int || value is uint || value is long || value is sbyte || value is byte || value is short || value is ushort || value is ulong) + { + builder.Append(value); + } + else if (value is double || value is decimal) + { + builder.Append(Convert.ToDouble(value).ToString("R")); + } + else + { + SerializeString(value.ToString()); + } + } + } + + public static object Deserialize(string json) + { + if (json == null) + { + return null; + } + return Parser.Parse(json); + } + + public static string Serialize(object obj) + { + return Serializer.Serialize(obj); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/ListExtensions.cs b/Assets/Plugins/GameDataEditor/ListExtensions.cs new file mode 100644 index 0000000..f56a673 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/ListExtensions.cs @@ -0,0 +1,72 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.ListExtensions +using System; +using System.Collections.Generic; +using System.Reflection; +using GameDataEditor; + +namespace GameDataEditor +{ + public static class ListExtensions + { + public static MethodInfo DeepCopyMethodInfo = typeof(ListExtensions).GetMethod("DeepCopy"); + + public static bool IsValidIndex(this List variable, int index) + { + return index > -1 && variable != null && index < variable.Count; + } + + public static List DeepCopy(this List variable) + { + List list = new List(); + T val = default(T); + foreach (T item in variable) + { + if (item == null) + { + val = item; + } + else if (item.IsCloneableType()) + { + val = (T)((ICloneable)(object)item).Clone(); + } + else if (item.IsGenericList()) + { + Type type = item.GetType().GetGenericArguments()[0]; + MethodInfo methodInfo = DeepCopyMethodInfo.MakeGenericMethod(type); + val = (T)methodInfo.Invoke(item, new object[1] { item }); + } + else if (item.IsGenericDictionary()) + { + Type[] genericArguments = item.GetType().GetGenericArguments(); + Type type2 = genericArguments[0]; + Type type3 = genericArguments[1]; + MethodInfo methodInfo2 = DictionaryExtensions.DeepCopyMethodInfo.MakeGenericMethod(type2, type3); + val = (T)methodInfo2.Invoke(item, new object[1] { item }); + } + else + { + val = item; + } + list.Add(val); + } + return list; + } + + public static List AllIndexesOf(this List variable, T searchValue) + { + List list = new List(); + int num; + for (num = 0; num <= variable.Count; num++) + { + num = variable.IndexOf(searchValue, num); + if (num == -1) + { + break; + } + list.Add(num); + } + return list; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/StringExtensions.cs b/Assets/Plugins/GameDataEditor/StringExtensions.cs new file mode 100644 index 0000000..50f5aa6 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/StringExtensions.cs @@ -0,0 +1,81 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.StringExtensions +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +namespace GameDataEditor +{ + public static class StringExtensions + { + public static string HighlightSubstring(this string variable, string substring, string color) + { + string result = variable; + if (!Application.unityVersion.StartsWith("3") && !string.IsNullOrEmpty(substring)) + { + int num = variable.Replace("Schema:", " ").IndexOf(substring, StringComparison.CurrentCultureIgnoreCase); + if (num != -1) + { + result = $"{variable.Substring(0, num)}{variable.Substring(num, substring.Length)}{variable.Substring(num + substring.Length)}"; + } + } + return result; + } + + public static string Md5Sum(this string strToEncrypt) + { + UTF8Encoding uTF8Encoding = new UTF8Encoding(); + byte[] bytes = uTF8Encoding.GetBytes(strToEncrypt); + MD5CryptoServiceProvider mD5CryptoServiceProvider = new MD5CryptoServiceProvider(); + byte[] array = mD5CryptoServiceProvider.ComputeHash(bytes); + string text = string.Empty; + for (int i = 0; i < array.Length; i++) + { + text += Convert.ToString(array[i], 16).PadLeft(2, '0'); + } + return text.PadLeft(32, '0'); + } + + public static string UppercaseFirst(this string s) + { + if (string.IsNullOrEmpty(s)) + { + return string.Empty; + } + char[] array = s.ToCharArray(); + array[0] = char.ToUpper(array[0]); + return new string(array); + } + + public static bool Contains(this string source, string substring, StringComparison comp) + { + if (string.IsNullOrEmpty(substring) || string.IsNullOrEmpty(source)) + { + return true; + } + return source.IndexOf(substring, comp) >= 0; + } + + public static string StripAssetPath(this string source) + { + string text = string.Empty; + string value = "Resources"; + string[] array = source.Split(Path.DirectorySeparatorChar); + int num = Array.IndexOf(array, value); + if (num >= 0) + { + char directorySeparatorChar = Path.DirectorySeparatorChar; + text = string.Join(directorySeparatorChar.ToString(), array, num + 1, array.Length - num - 2); + if (!string.IsNullOrEmpty(text)) + { + string text2 = text; + char directorySeparatorChar2 = Path.DirectorySeparatorChar; + text = text2 + directorySeparatorChar2; + } + } + return text + Path.GetFileNameWithoutExtension(source); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GameDataEditor/VectorExtensions.cs b/Assets/Plugins/GameDataEditor/VectorExtensions.cs new file mode 100644 index 0000000..8d42f55 --- /dev/null +++ b/Assets/Plugins/GameDataEditor/VectorExtensions.cs @@ -0,0 +1,15 @@ +// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +// GameDataEditor.VectorExtensions +using GameDataEditor; +using UnityEngine; + +namespace GameDataEditor +{ + public static class VectorExtensions + { + public static bool NearlyEqual(this Vector3 variable, Vector3 other) + { + return variable.x.NearlyEqual(other.x) && variable.y.NearlyEqual(other.y) && variable.z.NearlyEqual(other.z); + } + } +} \ No newline at end of file diff --git a/packages/Photon3Unity3D.dll b/Assets/Plugins/Photon3Unity3D.dll similarity index 100% rename from packages/Photon3Unity3D.dll rename to Assets/Plugins/Photon3Unity3D.dll diff --git a/Assets/Plugins/Photon3Unity3D.dll.meta b/Assets/Plugins/Photon3Unity3D.dll.meta new file mode 100644 index 0000000..3b70afb --- /dev/null +++ b/Assets/Plugins/Photon3Unity3D.dll.meta @@ -0,0 +1,90 @@ +fileFormatVersion: 2 +guid: aadb37a20a33632429047acaef43658a +labels: +- ExitGames +- PUN +- Photon +- Networking +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 1 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + Linux: + enabled: 1 + settings: + CPU: x86 + Linux64: + enabled: 1 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 1 + settings: {} + OSXIntel: + enabled: 1 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 1 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 1 + settings: {} + PS4: + enabled: 1 + settings: {} + WP8: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + Web: + enabled: 1 + settings: {} + WebGL: + enabled: 1 + settings: {} + WebStreamed: + enabled: 1 + settings: {} + Win: + enabled: 1 + settings: + CPU: AnyCPU + Win64: + enabled: 1 + settings: + CPU: AnyCPU + WindowsStoreApps: + enabled: 1 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: Il2Cpp + iOS: + enabled: 1 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Photon3Unity3D.xml b/Assets/Plugins/Photon3Unity3D.xml new file mode 100644 index 0000000..6ffd9d0 --- /dev/null +++ b/Assets/Plugins/Photon3Unity3D.xml @@ -0,0 +1,2048 @@ + + + + Photon3Unity3D + + + + + This is a substitute for the Hashtable class, missing in: Win8RT and Windows Phone. It uses a Dictionary<object,object> as base. + + + Please be aware that this class might act differently than the Hashtable equivalent. + As far as Photon is concerned, the substitution is sufficiently precise. + + + + + Creates a shallow copy of the Hashtable. + + + A shallow copy of a collection copies only the elements of the collection, whether they are + reference types or value types, but it does not copy the objects that the references refer + to. The references in the new collection point to the same objects that the references in + the original collection point to. + + Shallow copy of the Hashtable. + + + + Contains several (more or less) useful static methods, mostly used for debugging. + + + + + Gets the local machine's "milliseconds since start" value (precision is described in remarks). + + + This method uses Environment.TickCount (cheap but with only 16ms precision). + PhotonPeer.LocalMsTimestampDelegate is available to set the delegate (unless already connected). + + Fraction of the current time in Milliseconds (this is not a proper datetime timestamp). + + + + Creates a background thread that calls the passed function in 100ms intervals, as long as that returns true. + + + + + + Creates a background thread that calls the passed function in 100ms intervals, as long as that returns true. + + + Milliseconds to sleep between calls of myThread. + + + + Writes the exception's stack trace to the received stream. + + Exception to obtain information from. + Output sream used to write to. + + + + Writes the exception's stack trace to the received stream. Writes to: System.Diagnostics.Debug. + + Exception to obtain information from. + + + + This method returns a string, representing the content of the given IDictionary. + Returns "null" if parameter is null. + + + IDictionary to return as string. + + + The string representation of keys and values in IDictionary. + + + + + This method returns a string, representing the content of the given IDictionary. + Returns "null" if parameter is null. + + IDictionary to return as string. + + + + + Converts a byte-array to string (useful as debugging output). + Uses BitConverter.ToString(list) internally after a null-check of list. + + Byte-array to convert to string. + + List of bytes as string. + + + + + Class to wrap static access to the random.Next() call in a thread safe manner. + + + + + Defines block size for encryption/decryption algorithm + + + + + Defines IV size for encryption/decryption algorithm + + + + + Defines HMAC size for packet authentication algorithm + + + + + Enumeration of situations that change the peers internal status. + Used in calls to OnStatusChanged to inform your application of various situations that might happen. + + + Most of these codes are referenced somewhere else in the documentation when they are relevant to methods. + + + + the PhotonPeer is connected.
See {@link PhotonListener#OnStatusChanged}*
+
+ + the PhotonPeer just disconnected.
See {@link PhotonListener#OnStatusChanged}*
+
+ + the PhotonPeer encountered an exception and will disconnect, too.
See {@link PhotonListener#OnStatusChanged}*
+
+ + the PhotonPeer encountered an exception while opening the incoming connection to the server. The server could be down / not running or the client has no network or a misconfigured DNS.
See {@link PhotonListener#OnStatusChanged}*
+
+ + Used on platforms that throw a security exception on connect. Unity3d does this, e.g., if a webplayer build could not fetch a policy-file from a remote server. + + + PhotonPeer outgoing queue is filling up. send more often. + + + PhotonPeer outgoing queue is filling up. send more often. + + + Sending command failed. Either not connected, or the requested channel is bigger than the number of initialized channels. + + + PhotonPeer outgoing queue is filling up. send more often. + + + PhotonPeer incoming queue is filling up. Dispatch more often. + + + PhotonPeer incoming queue is filling up. Dispatch more often. + + + PhotonPeer incoming queue is filling up. Dispatch more often. + + + Exception, if a server cannot be connected. Most likely, the server is not responding. Ask user to try again later. + + + Exception, if a server cannot be connected. Most likely, the server is not responding. Ask user to try again later. + + + Disconnection due to a timeout (client did no longer receive ACKs from server). + + + Disconnect by server due to timeout (received a disconnect command, cause server misses ACKs of client). + + + Disconnect by server due to concurrent user limit reached (received a disconnect command). + + + Disconnect by server due to server's logic (received a disconnect command). + + + Tcp Router Response. Only used when Photon is setup as TCP router! Routing is ok. + + + Tcp Router Response. Only used when Photon is setup as TCP router! Routing node unknown. Check client connect values. + + + Tcp Router Response. Only used when Photon is setup as TCP router! Routing endpoint unknown. + + + Tcp Router Response. Only used when Photon is setup as TCP router! Routing not setup yet. Connect again. + + + (1048) Value for OnStatusChanged()-call, when the encryption-setup for secure communication finished successfully. + + + (1049) Value for OnStatusChanged()-call, when the encryption-setup failed for some reason. Check debug logs. + + + + Callback interface for the Photon client side. Must be provided to a new PhotonPeer in its constructor. + + + These methods are used by your PhotonPeer instance to keep your app updated. Read each method's + description and check out the samples to see how to use them. + + + + + Provides textual descriptions for various error conditions and noteworthy situations. + In cases where the application needs to react, a call to OnStatusChanged is used. + OnStatusChanged gives "feedback" to the game, DebugReturn provies human readable messages + on the background. + + + All debug output of the library will be reported through this method. Print it or put it in a + buffer to use it on-screen. Use PhotonPeer.DebugOut to select how verbose the output is. + + DebugLevel (severity) of the message. + Debug text. Print to System.Console or screen. + + + + Callback method which gives you (async) responses for called operations. + + + Similar to method-calling, operations can have a result. + Because operation-calls are non-blocking and executed on the server, responses are provided + after a roundtrip as call to this method. + + Example: Trying to create a room usually succeeds but can fail if the room's name is already + in use (room names are their IDs). + + This method is used as general callback for all operations. Each response corresponds to a certain + "type" of operation by its OperationCode. + + + + When you join a room, the server will assign a consecutive number to each client: the + "actorNr" or "player number". This is sent back in the OperationResult's + Parameters as value of key . + + Fetch your actorNr of a Join response like this: + int actorNr = (int)operationResponse[(byte)OperationCode.ActorNr]; + + The response to an operation\-call. + + + + OnStatusChanged is called to let the game know when asyncronous actions finished or when errors happen. + + + Not all of the many StatusCode values will apply to your game. Example: If you don't use encryption, + the respective status changes are never made. + + The values are all part of the StatusCode enumeration and described value-by-value. + + A code to identify the situation. + + + + Called whenever an event from the Photon Server is dispatched. + + + Events are used for communication between clients and allow the server to update clients over time. + The creation of an event is often triggered by an operation (called by this client or an other). + + Each event carries its specific content in its Parameters. Your application knows which content to + expect by checking the event's 'type', given by the event's Code. + + Events can be defined and extended server-side. + + If you use the LoadBalancing application as base, several events like EvJoin and EvLeave are already defined. + For these events and their Parameters, the library provides constants, so check the EventCode and ParameterCode + classes. + + Photon also allows you to come up with custom events on the fly, purely client-side. To do so, use + OpRaiseEvent. + + Events are buffered on the client side and must be Dispatched. This way, OnEvent is always taking + place in the same thread as a call. + + The event currently being dispatched. + + + + Value range for a Peer's connection and initialization state, as returned by the PeerState property. + + + While this is not the same as the StatusCode of IPhotonPeerListener.OnStatusChanged(), it directly relates to it. + In most cases, it makes more sense to build a game's state on top of the OnStatusChanged() as you get changes. + + + + The peer is disconnected and can't call Operations. Call Connect(). + + + The peer is establishing the connection: opening a socket, exchanging packages with Photon. + + + The connection is established and now sends the application name to Photon. + You set the "application name" by calling PhotonPeer.Connect(). + + + The peer is connected and initialized (selected an application). You can now use operations. + + + The peer is disconnecting. It sent a disconnect to the server, which will acknowledge closing the connection. + + + + These are the options that can be used as underlying transport protocol. + + + + Use UDP to connect to Photon, which allows you to send operations reliable or unreliable on demand. + + + Use TCP to connect to Photon. + + + A TCP-based protocol commonly supported by browsers.For WebGL games mostly. Note: No WebSocket IPhotonSocket implementation is in this Assembly. + This protocol is only available in Unity exports to WebGL. + + + A TCP-based, encrypted protocol commonly supported by browsers. For WebGL games mostly. Note: No WebSocket IPhotonSocket implementation is in this Assembly. + This protocol is only available in Unity exports to WebGL. + + + + Level / amount of DebugReturn callbacks. Each debug level includes output for lower ones: OFF, ERROR, WARNING, INFO, ALL. + + + + No debug out. + + + Only error descriptions. + + + Warnings and errors. + + + Information about internal workflows, warnings and errors. + + + Most complete workflow description (but lots of debug output), info, warnings and errors. + + + + Instances of the PhotonPeer class are used to connect to a Photon server and communicate with it. + + + A PhotonPeer instance allows communication with the Photon Server, which in turn distributes messages + to other PhotonPeer clients. + An application can use more than one PhotonPeer instance, which are treated as separate users on the + server. Each should have its own listener instance, to separate the operations, callbacks and events. + + + + False if this library build contains C# Socket code. If true, you must set some type as SocketImplementation before connecting. + + + True, if this library needs a native Photon "Encryptor" plugin library for "Datagram Encryption". If false, this dll attempts to use managed encryption. + + + True if the library was compiled with DEBUG setting. + + + A simplified identifier for client SDKs. Photon's APIs might modify this (as a dll can be used in more than one product). Helps debugging. + + + For the Init-request, we shift the ClientId by one and the last bit signals a "debug" (0) or "release" build (1). + + + Defines if Key Exchange for Encryption is done asynchronously in another thread. + + + Version of this library as string. + + + Defines which IPhotonSocket class to use per ConnectionProtocol. + + Several platforms have special Socket implementations and slightly different APIs. + To accomodate this, switching the socket implementation for a network protocol was made available. + By default, UDP and TCP have socket implementations assigned. + + You only need to set the SocketImplementationConfig once, after creating a PhotonPeer + and before connecting. If you switch the TransportProtocol, the correct implementation is being used. + + + + + Can be used to read the IPhotonSocket implementation at runtime (before connecting). + + + Use the SocketImplementationConfig to define which IPhotonSocket is used per ConnectionProtocol. + + + + + Sets the level (and amount) of debug output provided by the library. + + + This affects the callbacks to IPhotonPeerListener.DebugReturn. + Default Level: Error. + + + + + Gets the IPhotonPeerListener of this instance (set in constructor). + Can be used in derived classes for Listener.DebugReturn(). + + + + + Gets count of all bytes coming in (including headers, excluding UDP/TCP overhead) + + + + + Gets count of all bytes going out (including headers, excluding UDP/TCP overhead) + + + + + Gets the size of the dispatched event or operation-result in bytes. + This value is set before OnEvent() or OnOperationResponse() is called (within DispatchIncomingCommands()). + + + Get this value directly in OnEvent() or OnOperationResponse(). Example: + void OnEvent(...) { + int eventSizeInBytes = this.peer.ByteCountCurrentDispatch; + //... + + void OnOperationResponse(...) { + int resultSizeInBytes = this.peer.ByteCountCurrentDispatch; + //... + + + + Returns the debug string of the event or operation-response currently being dispatched or string. Empty if none. + In a release build of the lib, this will always be empty. + + + + Gets the size of the last serialized operation call in bytes. + The value includes all headers for this single operation but excludes those of UDP, Enet Package Headers and TCP. + + + Get this value immediately after calling an operation. + Example: + + this.loadbalancingClient.OpJoinRoom("myroom"); + int opjoinByteCount = this.loadbalancingClient.ByteCountLastOperation; + + + + + Gets the byte-count of incoming "low level" messages, which are either Enet Commands or Tcp Messages. + These include all headers, except those of the underlying internet protocol Udp or Tcp. + + + + + Gets the byte-count of outgoing "low level" messages, which are either Enet Commands or Tcp Messages. + These include all headers, except those of the underlying internet protocol Udp or Tcp. + + + + + Gets a statistic of incoming and outgoing traffic, split by operation, operation-result and event. + + + Operations are outgoing traffic, results and events are incoming. + Includes the per-command header sizes (Udp: Enet Command Header or Tcp: Message Header). + + + + + Returns the count of milliseconds the stats are enabled for tracking. + + + + + Enables or disables collection of statistics in TrafficStatsIncoming, TrafficStatsOutgoing and TrafficstatsGameLevel. + + + Setting this to true, also starts the stopwatch to measure the timespan the stats are collected. + Enables the traffic statistics of a peer: TrafficStatsIncoming, TrafficStatsOutgoing and TrafficstatsGameLevel (nothing else). + Default value: false (disabled). + + + + + Creates new instances of TrafficStats and starts a new timer for those. + + + + Size of CommandLog. Default is 0, no logging. + + A bigger log is better for debugging but uses more memory. + Get the log as string via CommandLogToString. + + + + Converts the CommandLog into a readable table-like string with summary. + + Sent reliable commands begin with SND. Their acknowledgements with ACK. + ACKs list the reliable sequence number of the command they acknowledge (not their own). + Careful: This method should not be called frequently, as it's time- and memory-consuming to create the log. + + + + + Up to 4 resend attempts for a reliable command can be done in quick succession (after RTT+4*Variance). + + + By default 0. Any later resend attempt will then double the time before the next resend. + Max value = 4; + Make sure to adjust SentCountAllowance to a slightly higher value, as more repeats will get done. + + + + + This is the (low level) state of the connection to the server of a PhotonPeer. Managed internally and read-only. + + + Don't mix this up with the StatusCode provided in IPhotonListener.OnStatusChanged(). + Applications should use the StatusCode of OnStatusChanged() to track their state, as + it also covers the higher level initialization between a client and Photon. + + + + + This peer's ID as assigned by the server or 0 if not using UDP. Will be 0xFFFF before the client connects. + + Used for debugging only. This value is not useful in everyday Photon usage. + + + + Initial size internal lists for incoming/outgoing commands (reliable and unreliable). + + + This sets only the initial size. All lists simply grow in size as needed. This means that + incoming or outgoing commands can pile up and consume heap size if Service is not called + often enough to handle the messages in either direction. + + Configure the WarningSize, to get callbacks when the lists reach a certain size. + + UDP: Incoming and outgoing commands each have separate buffers for reliable and unreliable sending. + There are additional buffers for "sent commands" and "ACKs". + TCP: Only two buffers exist: incoming and outgoing commands. + + + + (default=2) minimum number of open connections + + + (default=6) maximum number of open connections, should be > RhttpMinConnections + + + + Limits the queue of received unreliable commands within DispatchIncomingCommands before dispatching them. + This works only in UDP. + This limit is applied when you call DispatchIncomingCommands. If this client (already) received more than + LimitOfUnreliableCommands, it will throw away the older ones instead of dispatching them. This can produce + bigger gaps for unreliable commands but your client catches up faster. + + + This can be useful when the client couldn't dispatch anything for some time (cause it was in a room but + loading a level). + If set to 20, the incoming unreliable queues are truncated to 20. + If 0, all received unreliable commands will be dispatched. + This is a "per channel" value, so each channel can hold up to LimitOfUnreliableCommands commands. + This value interacts with DispatchIncomingCommands: If that is called less often, more commands get skipped. + + + + + Count of all currently received but not-yet-Dispatched reliable commands + (events and operation results) from all channels. + + + + + Count of all commands currently queued as outgoing, including all channels and reliable, unreliable. + + + + + Gets / sets the number of channels available in UDP connections with Photon. + Photon Channels are only supported for UDP. + The default ChannelCount is 2. Channel IDs start with 0 and 255 is a internal channel. + + + + + While not connected, this controls if the next connection(s) should use a per-package CRC checksum. + + + While turned on, the client and server will add a CRC checksum to every sent package. + The checksum enables both sides to detect and ignore packages that were corrupted during transfer. + Corrupted packages have the same impact as lost packages: They require a re-send, adding a delay + and could lead to timeouts. + + Building the checksum has a low processing overhead but increases integrity of sent and received data. + Packages discarded due to failed CRC cecks are counted in PhotonPeer.PacketLossByCrc. + + + + + Count of packages dropped due to failed CRC checks for this connection. + + + + + + Count of packages dropped due to wrong challenge for this connection. + + + + + Count of commands that got repeated (due to local repeat-timing before an ACK was received). + + + + + The WarningSize is used test all message queues for congestion (in and out, reliable and unreliable). + OnStatusChanged will be called with a warning if a queue holds WarningSize commands or a multiple + of it. + Default: 100. + Example: If command is received, OnStatusChanged will be called when the respective command queue + has 100, 200, 300 ... items. + + + + + Number of send retries before a peer is considered lost/disconnected. Default: 7. + The initial timeout countdown of a command is calculated by the current roundTripTime + 4 * roundTripTimeVariance. + Please note that the timeout span until a command will be resent is not constant, but based on + the roundtrip time at the initial sending, which will be doubled with every failed retry. + + DisconnectTimeout and SentCountAllowance are competing settings: either might trigger a disconnect on the + client first, depending on the values and Roundtrip Time. + + + + + Sets the milliseconds without reliable command before a ping command (reliable) will be sent (Default: 1000ms). + The ping command is used to keep track of the connection in case the client does not send reliable commands + by itself. + A ping (or reliable commands) will update the RoundTripTime calculation. + + + + + Milliseconds after which a reliable UDP command triggers a timeout disconnect, unless acknowledged by server. + This value currently only affects UDP connections. + DisconnectTimeout is not an exact value for a timeout. The exact timing of the timeout depends on the frequency + of Service() calls and commands that are sent with long roundtrip-times and variance are checked less often for + re-sending! + + DisconnectTimeout and SentCountAllowance are competing settings: either might trigger a disconnect on the + client first, depending on the values and Roundtrip Time. + Default: 10000 ms. + + + + + Approximated Environment.TickCount value of server (while connected). + + + UDP: The server's timestamp is automatically fetched after connecting (once). This is done + internally by a command which is acknowledged immediately by the server. + TCP: The server's timestamp fetched with each ping but set only after connecting (once). + + The approximation will be off by +/- 10ms in most cases. Per peer/client and connection, the + offset will be constant (unless FetchServerTimestamp() is used). A constant offset should be + better to adjust for. Unfortunately there is no way to find out how much the local value + differs from the original. + + The approximation adds RoundtripTime / 2 and uses this.LocalTimeInMilliSeconds to calculate + in-between values (this property returns a new value per tick). + + The value sent by Photon equals Environment.TickCount in the logic layer. + + + 0 until connected. + While connected, the value is an approximation of the server's current timestamp. + + + + The internally used "per connection" time value, which is updated infrequently, when the library executes some connectio-related tasks. + + This integer value is an infrequently updated value by design. + The lib internally sets the value when it sends outgoing commands or reads incoming packages. + This is based on SupportClass.GetTickCount() and an initial time value per (server) connection. + This value is also used in low level Enet commands as sent time and optional logging. + + + + The last ConnectionTime value, when some ACKs were sent out by this client. + Only applicable to UDP connections. + + + The last ConnectionTime value, when SendOutgoingCommands actually checked outgoing queues to send them. Must be connected. + Available for UDP and TCP connections. + + + + Gets a local timestamp in milliseconds by calling SupportClass.GetTickCount(). + See LocalMsTimestampDelegate. + + + + + This setter for the (local-) timestamp delegate replaces the default Environment.TickCount with any equal function. + + + About Environment.TickCount: + The value of this property is derived from the system timer and is stored as a 32-bit signed integer. + Consequently, if the system runs continuously, TickCount will increment from zero to Int32..::.MaxValue + for approximately 24.9 days, then jump to Int32..::.MinValue, which is a negative number, then increment + back to zero during the next 24.9 days. + + Exception is thrown peer.PeerState is not PS_DISCONNECTED. + + + + Time until a reliable command is acknowledged by the server. + + The value measures network latency and for UDP it includes the server's ACK-delay (setting in config). + In TCP, there is no ACK-delay, so the value is slightly lower (if you use default settings for Photon). + + RoundTripTime is updated constantly. Every reliable command will contribute a fraction to this value. + + This is also the approximate time until a raised event reaches another client or until an operation + result is available. + + + + + Changes of the roundtriptime as variance value. Gives a hint about how much the time is changing. + + + + + Stores timestamp of the last time anything (!) was received from the server (including + low level Ping and ACKs but also events and operation-returns). This is not the time when + something was dispatched. + If you enable NetworkSimulation, this value is affected as well. + + + + + The server address which was used in PhotonPeer.Connect() or null (before Connect() was called). + + + The ServerAddress can only be changed for HTTP connections (to replace one that goes through a Loadbalancer with a direct URL). + + + + The protocol this peer is currently connected/connecting with (or 0). + + + This is the protocol to be used for next connect (see remarks). + The TransportProtocol can be changed anytime but it will not change the protocol + of currently active connections. Instead, TransportProtocol will be applied on next Connect. + + + + + Gets or sets the network simulation "enabled" setting. + Changing this value also locks this peer's sending and when setting false, + the internally used queues are executed (so setting to false can take some cycles). + + + + + Gets the settings for built-in Network Simulation for this peer instance + while IsSimulationEnabled will enable or disable them. + Once obtained, the settings can be modified by changing the properties. + + + + + Defines the initial size of an internally used StreamBuffer for Tcp. + The StreamBuffer is used to aggregate operation into (less) send calls, + which uses less resoures. + + + The size is not restricing the buffer and does not affect when poutgoing data is actually sent. + + + + + The Maximum Trasfer Unit (MTU) defines the (network-level) packet-content size that is + guaranteed to arrive at the server in one piece. The Photon Protocol uses this + size to split larger data into packets and for receive-buffers of packets. + + + This value affects the Packet-content. The resulting UDP packages will have additional + headers that also count against the package size (so it's bigger than this limit in the end) + Setting this value while being connected is not allowed and will throw an Exception. + Minimum is 576. Huge values won't speed up connections in most cases! + + + + + This property is set internally, when OpExchangeKeysForEncryption successfully finished. + While it's true, encryption can be used for operations. + + + + + While true, the peer will not send any other commands except ACKs (used in UDP connections). + + + + Implements the message-protocol, based on the underlying network protocol (udp, tcp, http). + + + + Creates a new PhotonPeer instance to communicate with Photon and selects either UDP or TCP as + protocol. We recommend UDP. + + a IPhotonPeerListener implementation + Protocol to use to connect to Photon. + + + + This method does a DNS lookup (if necessary) and connects to the given serverAddress. + + The return value gives you feedback if the address has the correct format. If so, this + starts the process to establish the connection itself, which might take a few seconds. + + When the connection is established, a callback to IPhotonPeerListener.OnStatusChanged + will be done. If the connection can't be established, despite having a valid address, + the OnStatusChanged is called with an error-value. + + The applicationName defines the application logic to use server-side and it should match the name of + one of the apps in your server's config. + + By default, the applicationName is "LoadBalancing" but there is also the "MmoDemo". + You can setup your own application and name it any way you like. + + + Address of the Photon server. Format: ip:port (e.g. 127.0.0.1:5055) or hostname:port (e.g. localhost:5055) + + + The name of the application to use within Photon or the appId of PhotonCloud. + Should match a "Name" for an application, as setup in your PhotonServer.config. + + + true if IP is available (DNS name is resolved) and server is being connected. false on error. + + + + + This method does a DNS lookup (if necessary) and connects to the given serverAddress. + + The return value gives you feedback if the address has the correct format. If so, this + starts the process to establish the connection itself, which might take a few seconds. + + When the connection is established, a callback to IPhotonPeerListener.OnStatusChanged + will be done. If the connection can't be established, despite having a valid address, + the OnStatusChanged is called with an error-value. + + The applicationName defines the application logic to use server-side and it should match the name of + one of the apps in your server's config. + + By default, the applicationName is "LoadBalancing" but there is also the "MmoDemo". + You can setup your own application and name it any way you like. + + + Address of the Photon server. Format: ip:port (e.g. 127.0.0.1:5055) or hostname:port (e.g. localhost:5055) + + + The name of the application to use within Photon or the appId of PhotonCloud. + Should match a "Name" for an application, as setup in your PhotonServer.config. + + + Allows you to send some data, which may be used by server during peer creation + (e.g. as additional authentication info). + You can use any serializable data type of Photon. + Helpful for self-hosted solutions. Server will read this info on peer creation stage, + and may reject client without creating of peer if auth info is invalid. + + + true if IP is available (DNS name is resolved) and server is being connected. false on error. + + + + + This method initiates a mutual disconnect between this client and the server. + + + Calling this method does not immediately close a connection. Disconnect lets the server + know that this client is no longer listening. For the server, this is a much faster way + to detect that the client is gone but it requires the client to send a few final messages. + + On completion, OnStatusChanged is called with the StatusCode.Disconnect. + + If the client is disconnected already or the connection thread is stopped, then there is no callback. + + The default server logic will leave any joined game and trigger the respective event + () for the remaining players. + + + + + This method immediately closes a connection (pure client side) and ends related listening Threads. + + + Unlike Disconnect, this method will simply stop to listen to the server. Udp connections will timeout. + If the connections was open, this will trigger a callback to OnStatusChanged with code StatusCode.Disconnect. + + + + + This will fetch the server's timestamp and update the approximation for property ServerTimeInMilliseconds. + + The server time approximation will NOT become more accurate by repeated calls. Accuracy currently depends + on a single roundtrip which is done as fast as possible. + + The command used for this is immediately acknowledged by the server. This makes sure the roundtrip time is + low and the timestamp + rountriptime / 2 is close to the original value. + + + + + This method creates a public key for this client and exchanges it with the server. + + + Encryption is not instantly available but calls OnStatusChanged when it finishes. + Check for StatusCode EncryptionEstablished and EncryptionFailedToEstablish. + + Calling this method sets IsEncryptionAvailable to false. + This method must be called before the "encrypt" parameter of OpCustom can be used. + + If operation could be enqueued for sending + + + PayloadEncryption Secret. Message payloads get encrypted with it individually and on demand. + + + + Initializes Datagram Encryption. + + secret used to chipher udp packets + secret used for authentication of udp packets + + + + This method excutes DispatchIncomingCommands and SendOutgoingCommands in your application Thread-context. + + + The Photon client libraries are designed to fit easily into a game or application. The application + is in control of the context (thread) in which incoming events and responses are executed and has + full control of the creation of UDP/TCP packages. + + Sending packages and dispatching received messages are two separate tasks. Service combines them + into one method at the cost of control. It calls DispatchIncomingCommands and SendOutgoingCommands. + + Call this method regularly (2..20 times a second). + + This will Dispatch ANY remaining buffered responses and events AND will send queued outgoing commands. + Fewer calls might be more effective if a device cannot send many packets per second, as multiple + operations might be combined into one package. + + + You could replace Service by: + + while (DispatchIncomingCommands()); //Dispatch until everything is Dispatched... + SendOutgoingCommands(); //Send a UDP/TCP package with outgoing messages + + + + + + + This method creates a UDP/TCP package for outgoing commands (operations and acknowledgements) + and sends them to the server. + This method is also called by Service(). + + + As the Photon library does not create any UDP/TCP packages by itself. Instead, the application + fully controls how many packages are sent and when. A tradeoff, an application will + lose connection, if it is no longer calling SendOutgoingCommands or Service. + + If multiple operations and ACKs are waiting to be sent, they will be aggregated into one + package. The package fills in this order: + ACKs for received commands + A "Ping" - only if no reliable data was sent for a while + Starting with the lowest Channel-Nr: + Reliable Commands in channel + Unreliable Commands in channel + + This gives a higher priority to lower channels. + + A longer interval between sends will lower the overhead per sent operation but + increase the internal delay (which adds "lag"). + + Call this 2..20 times per second (depending on your target platform). + + The if commands are not yet sent. Udp limits it's package size, Tcp doesnt. + + + + This method directly causes the callbacks for events, responses and state changes + within a IPhotonPeerListener. DispatchIncomingCommands only executes a single received + command per call. If a command was dispatched, the return value is true and the method + should be called again. + This method is called by Service() until currently available commands are dispatched. + + + In general, this method should be called until it returns false. In a few cases, it might + make sense to pause dispatching (if a certain state is reached and the app needs to load + data, before it should handle new events). + + The callbacks to the peer's IPhotonPeerListener are executed in the same thread that is + calling DispatchIncomingCommands. This makes things easier in a game loop: Event execution + won't clash with painting objects or the game logic. + + + + + Returns a string of the most interesting connection statistics. + When you have issues on the client side, these might contain hints about the issue's cause. + + If true, Incoming and Outgoing low-level stats are included in the string. + Stats as string. + + + + Channel-less wrapper for OpCustom(). + + Operations are handled by their byte\-typed code. + The codes of the "LoadBalancong" application are in the class . + Containing parameters as key\-value pair. The key is byte\-typed, while the value is any serializable datatype. + Selects if the operation must be acknowledged or not. If false, the + operation is not guaranteed to reach the server. + If operation could be enqueued for sending + + + + Allows the client to send any operation to the Photon Server by setting any opCode and the operation's parameters. + + + Photon can be extended with new operations which are identified by a single + byte, defined server side and known as operation code (opCode). Similarly, the operation's parameters + are defined server side as byte keys of values, which a client sends as customOpParameters + accordingly. + Operations are handled by their byte\-typed code. The codes of the + "LoadBalancing" application are in the class . + Containing parameters as key\-value pair. The key is byte\-typed, while the value is any serializable datatype. + Selects if the operation must be acknowledged or not. If false, the + operation is not guaranteed to reach the server. + The channel in which this operation should be sent. + If operation could be enqueued for sending + + + + Allows the client to send any operation to the Photon Server by setting any opCode and the operation's parameters. + + + Variant with encryption parameter. + + Use this only after encryption was established by EstablishEncryption and waiting for the OnStateChanged callback. + + Operations are handled by their byte\-typed code. The codes of the + "LoadBalancing" application are in the class . + Containing parameters as key\-value pair. The key is byte\-typed, while the value is any serializable datatype. + Selects if the operation must be acknowledged or not. If false, the + operation is not guaranteed to reach the server. + The channel in which this operation should be sent. + Can only be true, while IsEncryptionAvailable is true, too. + If operation could be enqueued for sending + + + + Allows the client to send any operation to the Photon Server by setting any opCode and the operation's parameters. + + + Variant with an OperationRequest object. + + This variant offers an alternative way to describe a operation request. Operation code and it's parameters + are wrapped up in a object. Still, the parameters are a Dictionary. + + The operation to call on Photon. + Use unreliable (false) if the call might get lost (when it's content is soon outdated). + Defines the sequence of requests this operation belongs to. + Encrypt request before sending. Depends on IsEncryptionAvailable. + If operation could be enqueued for sending + + + + Registers new types/classes for de/serialization and the fitting methods to call for this type. + + + SerializeMethod and DeserializeMethod are complementary: Feed the product of serializeMethod to + the constructor, to get a comparable instance of the object. + + After registering a Type, it can be used in events and operations and will be serialized like + built-in types. + + Type (class) to register. + A byte-code used as shortcut during transfer of this Type. + Method delegate to create a byte[] from a customType instance. + Method delegate to create instances of customType's from byte[]. + If the Type was registered successfully. + + + Param code. Used in internal op: InitEncryption. + + + Encryption-Mode code. Used in internal op: InitEncryption. + + + Param code. Used in internal op: InitEncryption. + + + Code of internal op: InitEncryption. + + + TODO: Code of internal op: Ping (used in PUN binary websockets). + + + Result code for any (internal) operation. + + + Byte count of last sent operation (set during serialization). + + + Byte count of last dispatched message (set during dispatch/deserialization). + + + The command that's currently being dispatched. + + + EnetPeer will set this value, so trafficstats can use it. TCP has 0 bytes per package extra + + + See PhotonPeer value. + + + See PhotonPeer value. + + + See PhotonPeer value. + + + See PhotonPeer value. + + + This ID is assigned by the Realtime Server upon connection. + The application does not have to care about this, but it is useful in debugging. + + + + This is the (low level) connection state of the peer. It's internal and based on eNet's states. + + Applications can read the "high level" state as PhotonPeer.PeerState, which uses a different enum. + + + + The serverTimeOffset is serverTimestamp - localTime. Used to approximate the serverTimestamp with help of localTime + + + + + Gets the currently used settings for the built-in network simulation. + Please check the description of NetworkSimulationSet for more details. + + + + Size of CommandLog. Default is 0, no logging. + + + Log of sent reliable commands and incoming ACKs. + + + Log of incoming reliable commands, used to track which commands from the server this client got. Part of the PhotonPeer.CommandLogToString() result. + + + Reduce CommandLog to CommandLogSize. Oldest entries get discarded. + + + Initializes the CommandLog and InReliableLog according to CommandLogSize. A value of 0 will set both logs to 0. + + + Converts the CommandLog into a readable table-like string with summary. + + + + Count of all bytes going out (including headers) + + + + + Count of all bytes coming in (including headers) + + + + Set via Connect(..., customObject) and sent in Init-Request. + + + Temporary cache of AppId. Used in Connect() to keep the AppId until we send the Init-Request (after the network-level (and Enet) connect). + + + + This is the replacement for the const values used in eNet like: PS_DISCONNECTED, PS_CONNECTED, etc. + + + + No connection is available. Use connect. + + + Establishing a connection already. The app should wait for a status callback. + + + + The low level connection with Photon is established. On connect, the library will automatically + send an Init package to select the application it connects to (see also PhotonPeer.Connect()). + When the Init is done, IPhotonPeerListener.OnStatusChanged() is called with connect. + + Please note that calling operations is only possible after the OnStatusChanged() with StatusCode.Connect. + + + Connection going to be ended. Wait for status callback. + + + Acknowledging a disconnect from Photon. Wait for status callback. + + + Connection not properly disconnected. + + + Set to timeInt, whenever SendOutgoingCommands actually checks outgoing queues to send them. Must be connected. + + + Connect to server and send Init (which inlcudes the appId). + If customData is not null, the new init will be used (http-based). + + + If IPhotonSocket.Connected is true, this value shows if the server's address resolved as IPv6 address. + + You must check the socket's IsConnected state. Otherwise, this value is not initialized. + Sent to server in Init-Request. + + + + Must be called by a IPhotonSocket when it connected to set IsIpv6. + The new value of IsIpv6. + + + + + + + + + + + + Checks the incoming queue and Dispatches received data if possible. + + If a Dispatch happened or not, which shows if more Dispatches might be needed. + + + + Checks outgoing queues for commands to send and puts them on their way. + This creates one package per go in UDP. + + If commands are not sent, cause they didn't fit into the package that's sent. + + + Returns the UDP Payload starting with Magic Number for binary protocol + + + Returns the UDP Payload starting with Magic Number for binary protocol + + + Maximum Transfer Unit to be used for UDP+TCP + + + (default=2) Rhttp: minimum number of open connections + + + (default=6) Rhttp: maximum number of open connections, should be > rhttpMinConnections + + + + Internally uses an operation to exchange encryption keys with the server. + + If the op could be sent. + + + + Core of the Network Simulation, which is available in Debug builds. + Called by a timer in intervals. + + + + Will contain channel 0xFF and any other. + + + One list for all channels keeps sent commands (for re-sending). + + + One list for all channels keeps acknowledgements. + + + Gets enabled by "request" from server (not by client). + + + + Checks the incoming queue and Dispatches received data if possible. + + If a Dispatch happened or not, which shows if more Dispatches might be needed. + + + + gathers acks until udp-packet is full and sends it! + + + + + gathers commands from all (out)queues until udp-packet is full and sends it! + + + + + Checks if any channel has a outgoing reliable command. + + True if any channel has a outgoing reliable command. False otherwise. + + + + Checks connected state and channel before operation is serialized and enqueued for sending. + + operation parameters + code of operation + send as reliable command + channel (sequence) for command + encrypt or not + usually EgMessageType.Operation + if operation could be enqueued + + + reliable-udp-level function to send some byte[] to the server via un/reliable command + only called when a custom operation should be send + (enet) command type + data to carry (operation) + channel in which to send + the invocation ID for this operation (the payload) + + + Returns the UDP Payload starting with Magic Number for binary protocol + + + reads incoming udp-packages to create and queue incoming commands* + + + queues incoming commands in the correct order as either unreliable, reliable or unsequenced. return value determines if the command is queued / done. + + + removes commands which are acknowledged* + + + Internal class for "commands" - the package in which operations are sent. + + + this variant does only create outgoing commands and increments . incoming ones are created from a DataInputStream + + + reads the command values (commandHeader and command-values) from incoming bytestream and populates the incoming command* + + + TCP "Package" header: 7 bytes + + + TCP "Message" header: 2 bytes + + + TCP header combined: 9 bytes + + + Defines if the (TCP) socket implementation needs to do "framing". + The WebSocket protocol (e.g.) includes framing, so when that is used, we set DoFraming to false. + + + + Checks the incoming queue and Dispatches received data if possible. Returns if a Dispatch happened or + not, which shows if more Dispatches might be needed. + + + + + gathers commands from all (out)queues until udp-packet is full and sends it! + + + + Sends a ping in intervals to keep connection alive (server will timeout connection if nothing is sent). + Always false in this case (local queues are ignored. true would be: "call again to send remaining data"). + + + Returns the UDP Payload starting with Magic Number for binary protocol + + + enqueues serialized operations to be sent as tcp stream / package + + + Sends a ping and modifies this.lastPingResult to avoid another ping for a while. + + + reads incoming tcp-packages to create and queue incoming commands* + + + + Container for an Operation request, which is a code and parameters. + + + On the lowest level, Photon only allows byte-typed keys for operation parameters. + The values of each such parameter can be any serializable datatype: byte, int, hashtable and many more. + + + + Byte-typed code for an operation - the short identifier for the server's method to call. + + + The parameters of the operation - each identified by a byte-typed code in Photon. + + + + Contains the server's response for an operation called by this peer. + The indexer of this class actually provides access to the Parameters Dictionary. + + + The OperationCode defines the type of operation called on Photon and in turn also the Parameters that + are set in the request. Those are provided as Dictionary with byte-keys. + There are pre-defined constants for various codes defined in the LoadBalancing application. + Check: OperationCode, ParameterCode, etc. + + An operation's request is summarized by the ReturnCode: a short typed code for "Ok" or + some different result. The code's meaning is specific per operation. An optional DebugMessage can be + provided to simplify debugging. + + Each call of an operation gets an ID, called the "invocID". This can be matched to the IDs + returned with any operation calls. This way, an application could track if a certain OpRaiseEvent + call was successful. + + + + The code for the operation called initially (by this peer). + Use enums or constants to be able to handle those codes, like OperationCode does. + + + A code that "summarizes" the operation's success or failure. Specific per operation. 0 usually means "ok". + + + An optional string sent by the server to provide readable feedback in error-cases. Might be null. + + + A Dictionary of values returned by an operation, using byte-typed keys per value. + + + + Alternative access to the Parameters, which wraps up a TryGetValue() call on the Parameters Dictionary. + + The byte-code of a returned value. + The value returned by the server, or null if the key does not exist in Parameters. + + + ToString() override. + Relatively short output of OpCode and returnCode. + + + Extensive output of operation results. + To be used in debug situations only, as it returns a string for each value. + + + + Contains all components of a Photon Event. + Event Parameters, like OperationRequests and OperationResults, consist of a Dictionary with byte-typed keys per value. + + + The indexer of this class provides access to the Parameters Dictionary. + + The operation RaiseEvent allows you to provide custom event content. Defined in LoadBalancing, this + CustomContent will be made the value of key ParameterCode.CustomEventContent. + + + + The event code identifies the type of event. + + + The Parameters of an event is a Dictionary<byte, object>. + + + + Alternative access to the Parameters. + + The key byte-code of a event value. + The Parameters value, or null if the key does not exist in Parameters. + + + ToString() override. + Short output of "Event" and it's Code. + + + Extensive output of the event content. + To be used in debug situations only, as it returns a string for each value. + + + + Type of serialization methods to add custom type support. + Use PhotonPeer.ReisterType() to register new types with serialization and deserialization methods. + + The method will get objects passed that were registered with it in RegisterType(). + Return a byte[] that resembles the object passed in. The framework will surround it with length and type info, so don't include it. + + + + Type of deserialization methods to add custom type support. + Use PhotonPeer.RegisterType() to register new types with serialization and deserialization methods. + + The framwork passes in the data it got by the associated SerializeMethod. The type code and length are stripped and applied before a DeserializeMethod is called. + Return a object of the type that was associated with this method through RegisterType(). + + + + Provides tools for the Exit Games Protocol + + + + + Serialize creates a byte-array from the given object and returns it. + + The object to serialize + The serialized byte-array + + + + Deserialize returns an object reassembled from the given byte-array. + + The byte-array to be Deserialized + The Deserialized object + + + + Serializes a short typed value into a byte-array (target) starting at the also given targetOffset. + The altered offset is known to the caller, because it is given via a referenced parameter. + + The short value to be serialized + The byte-array to serialize the short to + The offset in the byte-array + + + + Serializes an int typed value into a byte-array (target) starting at the also given targetOffset. + The altered offset is known to the caller, because it is given via a referenced parameter. + + The int value to be serialized + The byte-array to serialize the short to + The offset in the byte-array + + + + Serializes an float typed value into a byte-array (target) starting at the also given targetOffset. + The altered offset is known to the caller, because it is given via a referenced parameter. + + The float value to be serialized + The byte-array to serialize the short to + The offset in the byte-array + + + + Deserialize fills the given int typed value with the given byte-array (source) starting at the also given offset. + The result is placed in a variable (value). There is no need to return a value because the parameter value is given by reference. + The altered offset is this way also known to the caller. + + The int value to deserialize into + The byte-array to deserialize from + The offset in the byte-array + + + + Deserialize fills the given short typed value with the given byte-array (source) starting at the also given offset. + The result is placed in a variable (value). There is no need to return a value because the parameter value is given by reference. + The altered offset is this way also known to the caller. + + The short value to deserialized into + The byte-array to deserialize from + The offset in the byte-array + + + + Deserialize fills the given float typed value with the given byte-array (source) starting at the also given offset. + The result is placed in a variable (value). There is no need to return a value because the parameter value is given by reference. + The altered offset is this way also known to the caller. + + The float value to deserialize + The byte-array to deserialize from + The offset in the byte-array + + + + Exit Games GpBinaryV16 protocol implementation + + + + + The gp type. + + + + + Unkown type. + + + + + An array of objects. + + + This type is new in version 1.5. + + + + + A boolean Value. + + + + + A byte value. + + + + + An array of bytes. + + + + + An array of objects. + + + + + A 16-bit integer value. + + + + + A 32-bit floating-point value. + + + This type is new in version 1.5. + + + + + A dictionary + + + This type is new in version 1.6. + + + + + A 64-bit floating-point value. + + + This type is new in version 1.5. + + + + + A Hashtable. + + + + + A 32-bit integer value. + + + + + An array of 32-bit integer values. + + + + + A 64-bit integer value. + + + + + A string value. + + + + + An array of string values. + + + + + A costum type + + + + + Null value don't have types. + + + + + Calls the correct serialization method for the passed object. + + + + + DeserializeInteger returns an Integer typed value from the given stream. + + + + Uses C# Socket class from System.Net.Sockets (as Unity usually does). + Incompatible with Windows 8 Store/Phone API. + + + + Sends a "Photon Ping" to a server. + + Address in IPv4 or IPv6 format. An address containing a '.' will be interpretet as IPv4. + True if the Photon Ping could be sent. + + + + Separates the given address into address (host name or IP) and port. Port must be included after colon! + + + This method expects any address to include a port. The final ':' in addressAndPort has to separate it. + IPv6 addresses have multiple colons and must use brackets to separate address from port. + + Examples: + ns.exitgames.com:5058 + http://[2001:db8:1f70::999:de8:7648:6e8]:100/ + [2001:db8:1f70::999:de8:7648:6e8]:100 + See: + http://serverfault.com/questions/205793/how-can-one-distinguish-the-host-and-the-port-in-an-ipv6-url + + + + Implements a (very) simple test if a (valid) IPAddress is IPv6 by testing for colons (:). + The reason we use this, is that some DotNet platforms don't provide (or allow usage of) the System.Net namespace. + A valid IPAddress or null. + If the IPAddress.ToString() contains a colon (which means it's IPv6). + + + + Returns null or the IPAddress representing the address, doing Dns resolution if needed. + + Only returns IPv4 or IPv6 adresses, no others. + The string address of a server (hostname or IP). + IPAddress for the string address or null, if the address is neither IPv4, IPv6 or some hostname that could be resolved. + + + Internal class to encapsulate the network i/o functionality for the realtime libary. + + + used by PhotonPeer* + + + Endless loop, run in Receive Thread. + + + + Internal class to encapsulate the network i/o functionality for the realtime libary. + + + + + used by TPeer* + + + + + A simulation item is an action that can be queued to simulate network lag. + + + + With this, the actual delay can be measured, compared to the intended lag. + + + Timestamp after which this item must be executed. + + + Action to execute when the lag-time passed. + + + Starts a new Stopwatch + + + + A set of network simulation settings, enabled (and disabled) by PhotonPeer.IsSimulationEnabled. + + + For performance reasons, the lag and jitter settings can't be produced exactly. + In some cases, the resulting lag will be up to 20ms bigger than the lag settings. + Even if all settings are 0, simulation will be used. Set PhotonPeer.IsSimulationEnabled + to false to disable it if no longer needed. + + All lag, jitter and loss is additional to the current, real network conditions. + If the network is slow in reality, this will add even more lag. + The jitter values will affect the lag positive and negative, so the lag settings + describe the medium lag even with jitter. The jitter influence is: [-jitter..+jitter]. + Packets "lost" due to OutgoingLossPercentage count for BytesOut and LostPackagesOut. + Packets "lost" due to IncomingLossPercentage count for BytesIn and LostPackagesIn. + + + + internal + + + internal + + + internal + + + internal + + + internal + + + internal + + + internal + + + This setting overrides all other settings and turns simulation on/off. Default: false. + + + Outgoing packages delay in ms. Default: 100. + + + Randomizes OutgoingLag by [-OutgoingJitter..+OutgoingJitter]. Default: 0. + + + Percentage of outgoing packets that should be lost. Between 0..100. Default: 1. TCP ignores this setting. + + + Incoming packages delay in ms. Default: 100. + + + Randomizes IncomingLag by [-IncomingJitter..+IncomingJitter]. Default: 0. + + + Percentage of incoming packets that should be lost. Between 0..100. Default: 1. TCP ignores this setting. + + + Counts how many outgoing packages actually got lost. TCP connections ignore loss and this stays 0. + + + Counts how many incoming packages actually got lost. TCP connections ignore loss and this stays 0. + + + + Only in use as long as PhotonPeer.TrafficStatsEnabled = true; + + + + Gets sum of outgoing operations in bytes. + + + Gets count of outgoing operations. + + + Gets sum of byte-cost of incoming operation-results. + + + Gets count of incoming operation-results. + + + Gets sum of byte-cost of incoming events. + + + Gets count of incoming events. + + + + Gets longest time it took to complete a call to OnOperationResponse (in your code). + If such a callback takes long, it will lower the network performance and might lead to timeouts. + + + + Gets OperationCode that causes the LongestOpResponseCallback. See that description. + + + + Gets longest time a call to OnEvent (in your code) took. + If such a callback takes long, it will lower the network performance and might lead to timeouts. + + + + Gets EventCode that caused the LongestEventCallback. See that description. + + + + Gets longest time between subsequent calls to DispatchIncomgingCommands in milliseconds. + Note: This is not a crucial timing for the networking. Long gaps just add "local lag" to events that are available already. + + + + + Gets longest time between subsequent calls to SendOutgoingCommands in milliseconds. + Note: This is a crucial value for network stability. Without calling SendOutgoingCommands, + nothing will be sent to the server, who might time out this client. + + + + + Gets number of calls of DispatchIncomingCommands. + + + + + Gets number of calls of DispatchIncomingCommands. + + + + + Gets number of calls of SendOutgoingCommands. + + + + Gets sum of byte-cost of all "logic level" messages. + + + Gets sum of counted "logic level" messages. + + + Gets sum of byte-cost of all incoming "logic level" messages. + + + Gets sum of counted incoming "logic level" messages. + + + Gets sum of byte-cost of all outgoing "logic level" messages (= OperationByteCount). + + + Gets sum of counted outgoing "logic level" messages (= OperationCount). + + + + Resets the values that can be maxed out, like LongestDeltaBetweenDispatching. See remarks. + + + Set to 0: LongestDeltaBetweenDispatching, LongestDeltaBetweenSending, LongestEventCallback, LongestEventCallbackCode, LongestOpResponseCallback, LongestOpResponseCallbackOpCode. + Also resets internal values: timeOfLastDispatchCall and timeOfLastSendCall (so intervals are tracked correctly). + + + + Gets the byte-size of per-package headers. + + + + Counts commands created/received by this client, ignoring repeats (out command count can be higher due to repeats). + + + + Gets count of bytes as traffic, excluding UDP/TCP headers (42 bytes / x bytes). + + + Timestamp of the last incoming ACK that has been read (every PhotonPeer.TimePingInterval milliseconds this client sends a PING which must be ACKd). + + + Timestamp of last incoming reliable command (every second we expect a PING). + + + + Serialize creates a byte-array from the given object and returns it. + + The object to serialize + The serialized byte-array + + + + Deserialize returns an object reassembled from the given byte-array. + + The byte-array to be Deserialized + The Deserialized object + + + + Provides classical Diffie-Hellman Modular Exponentiation Groups defined by the + OAKLEY Key Determination Protocol (RFC 2412). + + + + + Gets the genrator (N) used by the the well known groups 1,2 and 5. + + + + + Gets the 768 bit prime for the well known group 1. + + + + + Gets the 1024 bit prime for the well known group 2. + + + + + Gets the 1536 bit prime for the well known group 5. + + + + + Initializes a new instance of the class. + + + + + Gets the public key that can be used by another DiffieHellmanCryptoProvider object + to generate a shared secret agreement. + + + + + Derives the shared key is generated from the secret agreement between two parties, + given a byte array that contains the second party's public key. + + + The second party's public key. + + +
+
diff --git a/Assets/Plugins/Photon3Unity3D.xml.meta b/Assets/Plugins/Photon3Unity3D.xml.meta new file mode 100644 index 0000000..671d824 --- /dev/null +++ b/Assets/Plugins/Photon3Unity3D.xml.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8d4f08d435c4b6343969d8af249460ff +labels: +- ExitGames +- PUN +- Photon +- Networking +TextScriptImporter: + userData: diff --git a/Assets/Scripts/CloudRegionCode.cs b/Assets/Scripts/CloudRegionCode.cs deleted file mode 100644 index b0c39de..0000000 --- a/Assets/Scripts/CloudRegionCode.cs +++ /dev/null @@ -1,28 +0,0 @@ - -/// -/// Country region codes for the remote cloud server -/// -public enum CloudRegionCode { - // Europe - eu = 0, - // United States - us = 1, - // Asia - asia = 2, - // Japone - jp = 3, - // Australia - au = 5, - // ??? - usw = 6, - // Saddle Arabia - sa = 7, - // ??? - cae = 8, - // ??? - kr = 9, - // India - @in = 10, - // None/Offline - none = 4 -} diff --git a/Assets/Scripts/CloudRegionFlag.cs b/Assets/Scripts/CloudRegionFlag.cs deleted file mode 100644 index a2d876c..0000000 --- a/Assets/Scripts/CloudRegionFlag.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; - -[Flags] -public enum CloudRegionFlag -{ - eu = 0x1, - us = 0x2, - asia = 0x4, - jp = 0x8, - au = 0x10, - usw = 0x20, - sa = 0x40, - cae = 0x80, - kr = 0x100, - @in = 0x200 -} diff --git a/Assets/Scripts/LoadBalancingPeer.cs b/Assets/Scripts/LoadBalancingPeer.cs deleted file mode 100644 index de38973..0000000 --- a/Assets/Scripts/LoadBalancingPeer.cs +++ /dev/null @@ -1,484 +0,0 @@ -using ExitGames.Client.Photon; -using System.Collections.Generic; -using UnityEngine; - -internal class LoadBalancingPeer : PhotonPeer -{ - private readonly Dictionary opParameters = new Dictionary(); - - internal bool IsProtocolSecure => base.UsedProtocol == ConnectionProtocol.WebSocketSecure; - - public LoadBalancingPeer(ConnectionProtocol protocolType) - : base(protocolType) - { - } - - public LoadBalancingPeer(IPhotonPeerListener listener, ConnectionProtocol protocolType) - : base(listener, protocolType) - { - } - - public virtual bool OpGetRegions(string appId) - { - Dictionary dictionary = new Dictionary(); - dictionary[224] = appId; - return OpCustom(220, dictionary, sendReliable: true, 0, encrypt: true); - } - - public virtual bool OpJoinLobby(TypedLobby lobby = null) - { - if ((int)DebugOut >= 3) - { - base.Listener.DebugReturn(DebugLevel.INFO, "OpJoinLobby()"); - } - Dictionary dictionary = null; - if (lobby != null && !lobby.IsDefault) - { - dictionary = new Dictionary(); - dictionary[213] = lobby.Name; - dictionary[212] = (byte)lobby.Type; - } - return OpCustom(229, dictionary, sendReliable: true); - } - - public virtual bool OpLeaveLobby() - { - if ((int)DebugOut >= 3) - { - base.Listener.DebugReturn(DebugLevel.INFO, "OpLeaveLobby()"); - } - return OpCustom(228, null, sendReliable: true); - } - - private void RoomOptionsToOpParameters(Dictionary op, RoomOptions roomOptions) - { - if (roomOptions == null) - { - roomOptions = new RoomOptions(); - } - Hashtable hashtable = new Hashtable(); - hashtable[(byte)253] = roomOptions.IsOpen; - hashtable[(byte)254] = roomOptions.IsVisible; - hashtable[(byte)250] = ((roomOptions.CustomRoomPropertiesForLobby != null) ? roomOptions.CustomRoomPropertiesForLobby : new string[0]); - hashtable.MergeStringKeys(roomOptions.CustomRoomProperties); - if (roomOptions.MaxPlayers > 0) - { - hashtable[(byte)byte.MaxValue] = roomOptions.MaxPlayers; - } - op[248] = hashtable; - op[241] = roomOptions.CleanupCacheOnLeave; - if (roomOptions.CleanupCacheOnLeave) - { - hashtable[(byte)249] = true; - } - if (roomOptions.PlayerTtl > 0 || roomOptions.PlayerTtl == -1) - { - op[232] = true; - op[235] = roomOptions.PlayerTtl; - } - if (roomOptions.EmptyRoomTtl > 0) - { - op[236] = roomOptions.EmptyRoomTtl; - } - if (roomOptions.SuppressRoomEvents) - { - op[237] = true; - } - if (roomOptions.Plugins != null) - { - op[204] = roomOptions.Plugins; - } - if (roomOptions.PublishUserId) - { - op[239] = true; - } - } - - public virtual bool OpCreateRoom(EnterRoomParams opParams) - { - if ((int)DebugOut >= 3) - { - base.Listener.DebugReturn(DebugLevel.INFO, "OpCreateRoom()"); - } - Dictionary dictionary = new Dictionary(); - if (!string.IsNullOrEmpty(opParams.RoomName)) - { - dictionary[byte.MaxValue] = opParams.RoomName; - } - if (opParams.Lobby != null && !string.IsNullOrEmpty(opParams.Lobby.Name)) - { - dictionary[213] = opParams.Lobby.Name; - dictionary[212] = (byte)opParams.Lobby.Type; - } - if (opParams.ExpectedUsers != null && opParams.ExpectedUsers.Length > 0) - { - dictionary[238] = opParams.ExpectedUsers; - } - if (opParams.OnGameServer) - { - if (opParams.PlayerProperties != null && opParams.PlayerProperties.Count > 0) - { - dictionary[249] = opParams.PlayerProperties; - dictionary[250] = true; - } - RoomOptionsToOpParameters(dictionary, opParams.RoomOptions); - } - return OpCustom(227, dictionary, sendReliable: true); - } - - public virtual bool OpJoinRoom(EnterRoomParams opParams) - { - if ((int)DebugOut >= 3) - { - base.Listener.DebugReturn(DebugLevel.INFO, "OpJoinRoom()"); - } - Dictionary dictionary = new Dictionary(); - if (!string.IsNullOrEmpty(opParams.RoomName)) - { - dictionary[byte.MaxValue] = opParams.RoomName; - } - if (opParams.CreateIfNotExists) - { - dictionary[215] = (byte)1; - if (opParams.Lobby != null) - { - dictionary[213] = opParams.Lobby.Name; - dictionary[212] = (byte)opParams.Lobby.Type; - } - } - if (opParams.RejoinOnly) - { - dictionary[215] = (byte)3; - } - if (opParams.ExpectedUsers != null && opParams.ExpectedUsers.Length > 0) - { - dictionary[238] = opParams.ExpectedUsers; - } - if (opParams.OnGameServer) - { - if (opParams.PlayerProperties != null && opParams.PlayerProperties.Count > 0) - { - dictionary[249] = opParams.PlayerProperties; - dictionary[250] = true; - } - if (opParams.CreateIfNotExists) - { - RoomOptionsToOpParameters(dictionary, opParams.RoomOptions); - } - } - return OpCustom(226, dictionary, sendReliable: true); - } - - public virtual bool OpJoinRandomRoom(OpJoinRandomRoomParams opJoinRandomRoomParams) - { - if ((int)DebugOut >= 3) - { - base.Listener.DebugReturn(DebugLevel.INFO, "OpJoinRandomRoom()"); - } - Hashtable hashtable = new Hashtable(); - hashtable.MergeStringKeys(opJoinRandomRoomParams.ExpectedCustomRoomProperties); - if (opJoinRandomRoomParams.ExpectedMaxPlayers > 0) - { - hashtable[(byte)byte.MaxValue] = opJoinRandomRoomParams.ExpectedMaxPlayers; - } - Dictionary dictionary = new Dictionary(); - if (hashtable.Count > 0) - { - dictionary[248] = hashtable; - } - if (opJoinRandomRoomParams.MatchingType != 0) - { - dictionary[223] = (byte)opJoinRandomRoomParams.MatchingType; - } - if (opJoinRandomRoomParams.TypedLobby != null && !string.IsNullOrEmpty(opJoinRandomRoomParams.TypedLobby.Name)) - { - dictionary[213] = opJoinRandomRoomParams.TypedLobby.Name; - dictionary[212] = (byte)opJoinRandomRoomParams.TypedLobby.Type; - } - if (!string.IsNullOrEmpty(opJoinRandomRoomParams.SqlLobbyFilter)) - { - dictionary[245] = opJoinRandomRoomParams.SqlLobbyFilter; - } - if (opJoinRandomRoomParams.ExpectedUsers != null && opJoinRandomRoomParams.ExpectedUsers.Length > 0) - { - dictionary[238] = opJoinRandomRoomParams.ExpectedUsers; - } - return OpCustom(225, dictionary, sendReliable: true); - } - - public virtual bool OpLeaveRoom(bool becomeInactive) - { - Dictionary dictionary = new Dictionary(); - if (becomeInactive) - { - dictionary[233] = becomeInactive; - } - return OpCustom(254, dictionary, sendReliable: true); - } - - public virtual bool OpFindFriends(string[] friendsToFind) - { - Dictionary dictionary = new Dictionary(); - if (friendsToFind != null && friendsToFind.Length > 0) - { - dictionary[1] = friendsToFind; - } - return OpCustom(222, dictionary, sendReliable: true); - } - - public bool OpSetCustomPropertiesOfActor(int actorNr, Hashtable actorProperties) - { - return OpSetPropertiesOfActor(actorNr, actorProperties.StripToStringKeys()); - } - - protected internal bool OpSetPropertiesOfActor(int actorNr, Hashtable actorProperties, Hashtable expectedProperties = null, bool webForward = false) - { - if ((int)DebugOut >= 3) - { - base.Listener.DebugReturn(DebugLevel.INFO, "OpSetPropertiesOfActor()"); - } - if (actorNr <= 0 || actorProperties == null) - { - if ((int)DebugOut >= 3) - { - base.Listener.DebugReturn(DebugLevel.INFO, "OpSetPropertiesOfActor not sent. ActorNr must be > 0 and actorProperties != null."); - } - return false; - } - Dictionary dictionary = new Dictionary(); - dictionary.Add(251, actorProperties); - dictionary.Add(254, actorNr); - dictionary.Add(250, true); - if (expectedProperties != null && expectedProperties.Count != 0) - { - dictionary.Add(231, expectedProperties); - } - if (webForward) - { - dictionary[234] = true; - } - return OpCustom(252, dictionary, sendReliable: true, 0, encrypt: false); - } - - protected void OpSetPropertyOfRoom(byte propCode, object value) - { - Hashtable hashtable = new Hashtable(); - hashtable[propCode] = value; - OpSetPropertiesOfRoom(hashtable); - } - - public bool OpSetCustomPropertiesOfRoom(Hashtable gameProperties, bool broadcast, byte channelId) - { - return OpSetPropertiesOfRoom(gameProperties.StripToStringKeys()); - } - - protected internal bool OpSetPropertiesOfRoom(Hashtable gameProperties, Hashtable expectedProperties = null, bool webForward = false) - { - if ((int)DebugOut >= 3) - { - base.Listener.DebugReturn(DebugLevel.INFO, "OpSetPropertiesOfRoom()"); - } - Dictionary dictionary = new Dictionary(); - dictionary.Add(251, gameProperties); - dictionary.Add(250, true); - if (expectedProperties != null && expectedProperties.Count != 0) - { - dictionary.Add(231, expectedProperties); - } - if (webForward) - { - dictionary[234] = true; - } - return OpCustom(252, dictionary, sendReliable: true, 0, encrypt: false); - } - - public virtual bool OpAuthenticate(string appId, string appVersion, AuthenticationValues authValues, string regionCode, bool getLobbyStatistics) - { - if ((int)DebugOut >= 3) - { - base.Listener.DebugReturn(DebugLevel.INFO, "OpAuthenticate()"); - } - Dictionary dictionary = new Dictionary(); - if (getLobbyStatistics) - { - dictionary[211] = true; - } - if (authValues != null && authValues.Token != null) - { - dictionary[221] = authValues.Token; - return OpCustom(230, dictionary, sendReliable: true, 0, encrypt: false); - } - dictionary[220] = appVersion; - dictionary[224] = appId; - if (!string.IsNullOrEmpty(regionCode)) - { - dictionary[210] = regionCode; - } - if (authValues != null) - { - if (!string.IsNullOrEmpty(authValues.UserId)) - { - dictionary[225] = authValues.UserId; - } - if (authValues.AuthType != CustomAuthenticationType.None) - { - if (!IsProtocolSecure && !base.IsEncryptionAvailable) - { - base.Listener.DebugReturn(DebugLevel.ERROR, "OpAuthenticate() failed. When you want Custom Authentication encryption is mandatory."); - return false; - } - dictionary[217] = (byte)authValues.AuthType; - if (!string.IsNullOrEmpty(authValues.Token)) - { - dictionary[221] = authValues.Token; - } - else - { - if (!string.IsNullOrEmpty(authValues.AuthGetParameters)) - { - dictionary[216] = authValues.AuthGetParameters; - } - if (authValues.AuthPostData != null) - { - dictionary[214] = authValues.AuthPostData; - } - } - } - } - bool flag = OpCustom(230, dictionary, sendReliable: true, 0, base.IsEncryptionAvailable); - if (!flag) - { - base.Listener.DebugReturn(DebugLevel.ERROR, "Error calling OpAuthenticate! Did not work. Check log output, AuthValues and if you're connected."); - } - return flag; - } - - public virtual bool OpAuthenticateOnce(string appId, string appVersion, AuthenticationValues authValues, string regionCode, EncryptionMode encryptionMode, ConnectionProtocol expectedProtocol) - { - if ((int)DebugOut >= 3) - { - base.Listener.DebugReturn(DebugLevel.INFO, "OpAuthenticate()"); - } - Dictionary dictionary = new Dictionary(); - if (authValues != null && authValues.Token != null) - { - dictionary[221] = authValues.Token; - return OpCustom(231, dictionary, sendReliable: true, 0, encrypt: false); - } - if (encryptionMode == EncryptionMode.DatagramEncryption && expectedProtocol != 0) - { - Debug.LogWarning("Expected protocol set to UDP, due to encryption mode DatagramEncryption. Changing protocol in PhotonServerSettings from: " + PhotonNetwork.PhotonServerSettings.Protocol); - PhotonNetwork.PhotonServerSettings.Protocol = ConnectionProtocol.Udp; - expectedProtocol = ConnectionProtocol.Udp; - } - dictionary[195] = (byte)expectedProtocol; - dictionary[193] = (byte)encryptionMode; - dictionary[220] = appVersion; - dictionary[224] = appId; - if (!string.IsNullOrEmpty(regionCode)) - { - dictionary[210] = regionCode; - } - if (authValues != null) - { - if (!string.IsNullOrEmpty(authValues.UserId)) - { - dictionary[225] = authValues.UserId; - } - if (authValues.AuthType != CustomAuthenticationType.None) - { - dictionary[217] = (byte)authValues.AuthType; - if (!string.IsNullOrEmpty(authValues.Token)) - { - dictionary[221] = authValues.Token; - } - else - { - if (!string.IsNullOrEmpty(authValues.AuthGetParameters)) - { - dictionary[216] = authValues.AuthGetParameters; - } - if (authValues.AuthPostData != null) - { - dictionary[214] = authValues.AuthPostData; - } - } - } - } - return OpCustom(231, dictionary, sendReliable: true, 0, base.IsEncryptionAvailable); - } - - public virtual bool OpChangeGroups(byte[] groupsToRemove, byte[] groupsToAdd) - { - if ((int)DebugOut >= 5) - { - base.Listener.DebugReturn(DebugLevel.ALL, "OpChangeGroups()"); - } - Dictionary dictionary = new Dictionary(); - if (groupsToRemove != null) - { - dictionary[239] = groupsToRemove; - } - if (groupsToAdd != null) - { - dictionary[238] = groupsToAdd; - } - return OpCustom(248, dictionary, sendReliable: true, 0); - } - - public virtual bool OpRaiseEvent(byte eventCode, object customEventContent, bool sendReliable, RaiseEventOptions raiseEventOptions) - { - opParameters.Clear(); - opParameters[244] = eventCode; - if (customEventContent != null) - { - opParameters[245] = customEventContent; - } - if (raiseEventOptions == null) - { - raiseEventOptions = RaiseEventOptions.Default; - } - else - { - if (raiseEventOptions.CachingOption != 0) - { - opParameters[247] = (byte)raiseEventOptions.CachingOption; - } - if (raiseEventOptions.Receivers != 0) - { - opParameters[246] = (byte)raiseEventOptions.Receivers; - } - if (raiseEventOptions.InterestGroup != 0) - { - opParameters[240] = raiseEventOptions.InterestGroup; - } - if (raiseEventOptions.TargetActors != null) - { - opParameters[252] = raiseEventOptions.TargetActors; - } - if (raiseEventOptions.ForwardToWebhook) - { - opParameters[234] = true; - } - } - return OpCustom(253, opParameters, sendReliable, raiseEventOptions.SequenceChannel, raiseEventOptions.Encrypt); - } - - public virtual bool OpSettings(bool receiveLobbyStats) - { - if ((int)DebugOut >= 5) - { - base.Listener.DebugReturn(DebugLevel.ALL, "OpSettings()"); - } - opParameters.Clear(); - if (receiveLobbyStats) - { - opParameters[0] = receiveLobbyStats; - } - if (opParameters.Count == 0) - { - return true; - } - return OpCustom(218, opParameters, sendReliable: true); - } -} diff --git a/Assets/Scripts/NetworkingPeer.cs b/Assets/Scripts/NetworkingPeer.cs deleted file mode 100644 index 36a0d9a..0000000 --- a/Assets/Scripts/NetworkingPeer.cs +++ /dev/null @@ -1,3387 +0,0 @@ -using ExitGames.Client.Photon; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; -using UnityEngine; - -internal class NetworkingPeer : LoadBalancingPeer, IPhotonPeerListener -{ - protected internal string AppId; - - private string tokenCache; - - public AuthModeOption AuthMode; - - public EncryptionMode EncryptionMode; - - public const string NameServerHost = "ns.exitgames.com"; - - public const string NameServerHttp = "http://ns.exitgamescloud.com:80/photon/n"; - - private static readonly Dictionary ProtocolToNameServerPort = new Dictionary - { - { - ConnectionProtocol.Udp, - 5058 - }, - { - ConnectionProtocol.Tcp, - 4533 - }, - { - ConnectionProtocol.WebSocket, - 9093 - }, - { - ConnectionProtocol.WebSocketSecure, - 19093 - } - }; - - public bool IsInitialConnect; - - public bool insideLobby; - - protected internal List LobbyStatistics = new List(); - - public Dictionary mGameList = new Dictionary(); - - public RoomInfo[] mGameListCopy = new RoomInfo[0]; - - private string playername = string.Empty; - - private bool mPlayernameHasToBeUpdated; - - private Room currentRoom; - - private JoinType lastJoinType; - - protected internal EnterRoomParams enterRoomParamsCache; - - private bool didAuthenticate; - - private string[] friendListRequested; - - private int friendListTimestamp; - - private bool isFetchingFriendList; - - public Dictionary mActors = new Dictionary(); - - public PhotonPlayer[] mOtherPlayerListCopy = new PhotonPlayer[0]; - - public PhotonPlayer[] mPlayerListCopy = new PhotonPlayer[0]; - - public bool hasSwitchedMC; - - private HashSet allowedReceivingGroups = new HashSet(); - - private HashSet blockSendingGroups = new HashSet(); - - protected internal Dictionary photonViewList = new Dictionary(); - - private readonly PhotonStream readStream = new PhotonStream(write: false, null); - - private readonly PhotonStream pStream = new PhotonStream(write: true, null); - - private readonly Dictionary dataPerGroupReliable = new Dictionary(); - - private readonly Dictionary dataPerGroupUnreliable = new Dictionary(); - - protected internal short currentLevelPrefix; - - protected internal bool loadingLevelAndPausedNetwork; - - protected internal const string CurrentSceneProperty = "curScn"; - - public static bool UsePrefabCache = true; - - internal IPunPrefabPool ObjectPool; - - public static Dictionary PrefabCache = new Dictionary(); - - private Dictionary> monoRPCMethodsCache = new Dictionary>(); - - private readonly Dictionary rpcShortcuts; - - private static readonly string OnPhotonInstantiateString = 18.ToString(); - - private Dictionary tempInstantiationData = new Dictionary(); - - public static int ObjectsInOneUpdate = 10; - - public const int SyncViewId = 0; - - public const int SyncCompressed = 1; - - public const int SyncNullValues = 2; - - public const int SyncFirstValue = 3; - - protected internal string AppVersion => string.Format("{0}_{1}", PhotonNetwork.gameVersion, "1.80"); - - public AuthenticationValues AuthValues - { - get; - set; - } - - private string TokenForInit - { - get - { - if (AuthMode == AuthModeOption.Auth) - { - return null; - } - return (AuthValues == null) ? null : AuthValues.Token; - } - } - - public bool IsUsingNameServer - { - get; - protected internal set; - } - - public string NameServerAddress => GetNameServerAddress(); - - public string MasterServerAddress - { - get; - protected internal set; - } - - public string GameServerAddress - { - get; - protected internal set; - } - - protected internal ServerConnection Server - { - get; - private set; - } - - public ClientState State - { - get; - internal set; - } - - public TypedLobby lobby - { - get; - set; - } - - private bool requestLobbyStatistics => PhotonNetwork.EnableLobbyStatistics && Server == ServerConnection.MasterServer; - - public string PlayerName - { - get - { - return playername; - } - set - { - if (!string.IsNullOrEmpty(value) && !value.Equals(playername)) - { - if (LocalPlayer != null) - { - LocalPlayer.NickName = value; - } - playername = value; - if (CurrentRoom != null) - { - SendPlayerName(); - } - } - } - } - - public Room CurrentRoom - { - get - { - if (currentRoom != null && currentRoom.IsLocalClientInside) - { - return currentRoom; - } - return null; - } - private set - { - currentRoom = value; - } - } - - public PhotonPlayer LocalPlayer - { - get; - internal set; - } - - public int PlayersOnMasterCount - { - get; - internal set; - } - - public int PlayersInRoomsCount - { - get; - internal set; - } - - public int RoomsCount - { - get; - internal set; - } - - protected internal int FriendListAge => (!isFetchingFriendList && friendListTimestamp != 0) ? (Environment.TickCount - friendListTimestamp) : 0; - - public bool IsAuthorizeSecretAvailable => AuthValues != null && !string.IsNullOrEmpty(AuthValues.Token); - - public List AvailableRegions - { - get; - protected internal set; - } - - public CloudRegionCode CloudRegion - { - get; - protected internal set; - } - - public int mMasterClientId - { - get - { - if (PhotonNetwork.offlineMode) - { - return LocalPlayer.ID; - } - return (CurrentRoom != null) ? CurrentRoom.MasterClientId : 0; - } - private set - { - if (CurrentRoom != null) - { - CurrentRoom.MasterClientId = value; - } - } - } - - public NetworkingPeer(string playername, ConnectionProtocol connectionProtocol) - : base(connectionProtocol) - { - base.Listener = this; - base.LimitOfUnreliableCommands = 40; - lobby = TypedLobby.Default; - PlayerName = playername; - LocalPlayer = new PhotonPlayer(isLocal: true, -1, this.playername); - AddNewPlayer(LocalPlayer.ID, LocalPlayer); - rpcShortcuts = new Dictionary(PhotonNetwork.PhotonServerSettings.RpcList.Count); - for (int i = 0; i < PhotonNetwork.PhotonServerSettings.RpcList.Count; i++) - { - string key = PhotonNetwork.PhotonServerSettings.RpcList[i]; - rpcShortcuts[key] = i; - } - State = ClientState.PeerCreated; - } - - private string GetNameServerAddress() - { - ConnectionProtocol transportProtocol = base.TransportProtocol; - int value = 0; - ProtocolToNameServerPort.TryGetValue(transportProtocol, out value); - string arg = string.Empty; - switch (transportProtocol) - { - case ConnectionProtocol.WebSocket: - arg = "ws://"; - break; - case ConnectionProtocol.WebSocketSecure: - arg = "wss://"; - break; - } - return string.Format("{0}{1}:{2}", arg, "ns.exitgames.com", value); - } - - public override bool Connect(string serverAddress, string applicationName) - { - Debug.LogError("Avoid using this directly. Thanks."); - return false; - } - - public bool ReconnectToMaster() - { - if (AuthValues == null) - { - Debug.LogWarning("ReconnectToMaster() with AuthValues == null is not correct!"); - AuthValues = new AuthenticationValues(); - } - AuthValues.Token = tokenCache; - return Connect(MasterServerAddress, ServerConnection.MasterServer); - } - - public bool ReconnectAndRejoin() - { - if (AuthValues == null) - { - Debug.LogWarning("ReconnectAndRejoin() with AuthValues == null is not correct!"); - AuthValues = new AuthenticationValues(); - } - AuthValues.Token = tokenCache; - if (!string.IsNullOrEmpty(GameServerAddress) && enterRoomParamsCache != null) - { - lastJoinType = JoinType.JoinRoom; - enterRoomParamsCache.RejoinOnly = true; - return Connect(GameServerAddress, ServerConnection.GameServer); - } - return false; - } - - public bool Connect(string serverAddress, ServerConnection type) - { - if (PhotonHandler.AppQuits) - { - Debug.LogWarning("Ignoring Connect() because app gets closed. If this is an error, check PhotonHandler.AppQuits."); - return false; - } - if (State == ClientState.Disconnecting) - { - Debug.LogError("Connect() failed. Can't connect while disconnecting (still). Current state: " + PhotonNetwork.connectionStateDetailed); - return false; - } - SetupProtocol(type); - bool flag = base.Connect(serverAddress, string.Empty, TokenForInit); - if (flag) - { - switch (type) - { - case ServerConnection.NameServer: - State = ClientState.ConnectingToNameServer; - break; - case ServerConnection.MasterServer: - State = ClientState.ConnectingToMasterserver; - break; - case ServerConnection.GameServer: - State = ClientState.ConnectingToGameserver; - break; - } - } - return flag; - } - - public bool ConnectToNameServer() - { - if (PhotonHandler.AppQuits) - { - Debug.LogWarning("Ignoring Connect() because app gets closed. If this is an error, check PhotonHandler.AppQuits."); - return false; - } - IsUsingNameServer = true; - CloudRegion = CloudRegionCode.none; - if (State == ClientState.ConnectedToNameServer) - { - return true; - } - SetupProtocol(ServerConnection.NameServer); - if (!base.Connect(NameServerAddress, "ns", TokenForInit)) - { - return false; - } - State = ClientState.ConnectingToNameServer; - return true; - } - - public bool ConnectToRegionMaster(CloudRegionCode region) - { - if (PhotonHandler.AppQuits) - { - Debug.LogWarning("Ignoring Connect() because app gets closed. If this is an error, check PhotonHandler.AppQuits."); - return false; - } - IsUsingNameServer = true; - CloudRegion = region; - if (State == ClientState.ConnectedToNameServer) - { - return CallAuthenticate(); - } - SetupProtocol(ServerConnection.NameServer); - if (!base.Connect(NameServerAddress, "ns", TokenForInit)) - { - return false; - } - State = ClientState.ConnectingToNameServer; - return true; - } - - protected internal void SetupProtocol(ServerConnection serverType) - { - ConnectionProtocol connectionProtocol = base.TransportProtocol; - if (AuthMode == AuthModeOption.AuthOnceWss) - { - if (serverType != ServerConnection.NameServer) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.ErrorsOnly) - { - Debug.LogWarning("Using PhotonServerSettings.Protocol when leaving the NameServer (AuthMode is AuthOnceWss): " + PhotonNetwork.PhotonServerSettings.Protocol); - } - connectionProtocol = PhotonNetwork.PhotonServerSettings.Protocol; - } - else - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.ErrorsOnly) - { - Debug.LogWarning("Using WebSocket to connect NameServer (AuthMode is AuthOnceWss)."); - } - connectionProtocol = ConnectionProtocol.WebSocketSecure; - } - } - Type type = Type.GetType("ExitGames.Client.Photon.SocketWebTcp, Assembly-CSharp", throwOnError: false); - if (type == null) - { - type = Type.GetType("ExitGames.Client.Photon.SocketWebTcp, Assembly-CSharp-firstpass", throwOnError: false); - } - if (type != null) - { - SocketImplementationConfig[ConnectionProtocol.WebSocket] = type; - SocketImplementationConfig[ConnectionProtocol.WebSocketSecure] = type; - } - if (PhotonHandler.PingImplementation == null) - { - PhotonHandler.PingImplementation = typeof(PingMono); - } - if (base.TransportProtocol != connectionProtocol) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.ErrorsOnly) - { - Debug.LogWarning("Protocol switch from: " + base.TransportProtocol + " to: " + connectionProtocol + "."); - } - base.TransportProtocol = connectionProtocol; - } - } - - public override void Disconnect() - { - if (base.PeerState == PeerStateValue.Disconnected) - { - if (!PhotonHandler.AppQuits) - { - Debug.LogWarning($"Can't execute Disconnect() while not connected. Nothing changed. State: {State}"); - } - } - else - { - State = ClientState.Disconnecting; - base.Disconnect(); - } - } - - private bool CallAuthenticate() - { - object authenticationValues = AuthValues; - if (authenticationValues == null) - { - AuthenticationValues authenticationValues2 = new AuthenticationValues(); - authenticationValues2.UserId = PlayerName; - authenticationValues = authenticationValues2; - } - AuthenticationValues authValues = (AuthenticationValues)authenticationValues; - if (AuthMode == AuthModeOption.Auth) - { - return OpAuthenticate(AppId, AppVersion, authValues, CloudRegion.ToString(), requestLobbyStatistics); - } - return OpAuthenticateOnce(AppId, AppVersion, authValues, CloudRegion.ToString(), EncryptionMode, PhotonNetwork.PhotonServerSettings.Protocol); - } - - private void DisconnectToReconnect() - { - switch (Server) - { - case ServerConnection.NameServer: - State = ClientState.DisconnectingFromNameServer; - base.Disconnect(); - break; - case ServerConnection.MasterServer: - State = ClientState.DisconnectingFromMasterserver; - base.Disconnect(); - break; - case ServerConnection.GameServer: - State = ClientState.DisconnectingFromGameserver; - base.Disconnect(); - break; - } - } - - public bool GetRegions() - { - if (Server != ServerConnection.NameServer) - { - return false; - } - bool flag = OpGetRegions(AppId); - if (flag) - { - AvailableRegions = null; - } - return flag; - } - - public override bool OpFindFriends(string[] friendsToFind) - { - if (isFetchingFriendList) - { - return false; - } - friendListRequested = friendsToFind; - isFetchingFriendList = true; - return base.OpFindFriends(friendsToFind); - } - - public bool OpCreateGame(EnterRoomParams enterRoomParams) - { - bool flag = enterRoomParams.OnGameServer = (Server == ServerConnection.GameServer); - enterRoomParams.PlayerProperties = GetLocalActorProperties(); - if (!flag) - { - enterRoomParamsCache = enterRoomParams; - } - lastJoinType = JoinType.CreateRoom; - return base.OpCreateRoom(enterRoomParams); - } - - public override bool OpJoinRoom(EnterRoomParams opParams) - { - if (!(opParams.OnGameServer = (Server == ServerConnection.GameServer))) - { - enterRoomParamsCache = opParams; - } - lastJoinType = ((!opParams.CreateIfNotExists) ? JoinType.JoinRoom : JoinType.JoinOrCreateRoom); - return base.OpJoinRoom(opParams); - } - - public override bool OpJoinRandomRoom(OpJoinRandomRoomParams opJoinRandomRoomParams) - { - enterRoomParamsCache = new EnterRoomParams(); - enterRoomParamsCache.Lobby = opJoinRandomRoomParams.TypedLobby; - enterRoomParamsCache.ExpectedUsers = opJoinRandomRoomParams.ExpectedUsers; - lastJoinType = JoinType.JoinRandomRoom; - return base.OpJoinRandomRoom(opJoinRandomRoomParams); - } - - public virtual bool OpLeave() - { - if (State != ClientState.Joined) - { - Debug.LogWarning("Not sending leave operation. State is not 'Joined': " + State); - return false; - } - return OpCustom(254, null, sendReliable: true, 0); - } - - public override bool OpRaiseEvent(byte eventCode, object customEventContent, bool sendReliable, RaiseEventOptions raiseEventOptions) - { - if (PhotonNetwork.offlineMode) - { - return false; - } - return base.OpRaiseEvent(eventCode, customEventContent, sendReliable, raiseEventOptions); - } - - private void ReadoutProperties(ExitGames.Client.Photon.Hashtable gameProperties, ExitGames.Client.Photon.Hashtable pActorProperties, int targetActorNr) - { - if (pActorProperties != null && pActorProperties.Count > 0) - { - if (targetActorNr > 0) - { - PhotonPlayer playerWithId = GetPlayerWithId(targetActorNr); - if (playerWithId != null) - { - ExitGames.Client.Photon.Hashtable hashtable = ReadoutPropertiesForActorNr(pActorProperties, targetActorNr); - playerWithId.InternalCacheProperties(hashtable); - SendMonoMessage(PhotonNetworkingMessage.OnPhotonPlayerPropertiesChanged, playerWithId, hashtable); - } - } - else - { - foreach (object key in pActorProperties.Keys) - { - int num = (int)key; - ExitGames.Client.Photon.Hashtable hashtable2 = (ExitGames.Client.Photon.Hashtable)pActorProperties[key]; - string name = (string)hashtable2[(byte)byte.MaxValue]; - PhotonPlayer photonPlayer = GetPlayerWithId(num); - if (photonPlayer == null) - { - photonPlayer = new PhotonPlayer(isLocal: false, num, name); - AddNewPlayer(num, photonPlayer); - } - photonPlayer.InternalCacheProperties(hashtable2); - SendMonoMessage(PhotonNetworkingMessage.OnPhotonPlayerPropertiesChanged, photonPlayer, hashtable2); - } - } - } - if (CurrentRoom != null && gameProperties != null) - { - CurrentRoom.InternalCacheProperties(gameProperties); - SendMonoMessage(PhotonNetworkingMessage.OnPhotonCustomRoomPropertiesChanged, gameProperties); - if (PhotonNetwork.automaticallySyncScene) - { - LoadLevelIfSynced(); - } - } - } - - private ExitGames.Client.Photon.Hashtable ReadoutPropertiesForActorNr(ExitGames.Client.Photon.Hashtable actorProperties, int actorNr) - { - if (actorProperties.ContainsKey(actorNr)) - { - return (ExitGames.Client.Photon.Hashtable)actorProperties[actorNr]; - } - return actorProperties; - } - - public void ChangeLocalID(int newID) - { - if (LocalPlayer == null) - { - Debug.LogWarning($"LocalPlayer is null or not in mActors! LocalPlayer: {LocalPlayer} mActors==null: {mActors == null} newID: {newID}"); - } - if (mActors.ContainsKey(LocalPlayer.ID)) - { - mActors.Remove(LocalPlayer.ID); - } - LocalPlayer.InternalChangeLocalID(newID); - mActors[LocalPlayer.ID] = LocalPlayer; - RebuildPlayerListCopies(); - } - - private void LeftLobbyCleanup() - { - mGameList = new Dictionary(); - mGameListCopy = new RoomInfo[0]; - if (insideLobby) - { - insideLobby = false; - SendMonoMessage(PhotonNetworkingMessage.OnLeftLobby); - } - } - - private void LeftRoomCleanup() - { - bool flag = CurrentRoom != null; - bool flag2 = (CurrentRoom == null) ? PhotonNetwork.autoCleanUpPlayerObjects : CurrentRoom.AutoCleanUp; - hasSwitchedMC = false; - CurrentRoom = null; - mActors = new Dictionary(); - mPlayerListCopy = new PhotonPlayer[0]; - mOtherPlayerListCopy = new PhotonPlayer[0]; - allowedReceivingGroups = new HashSet(); - blockSendingGroups = new HashSet(); - mGameList = new Dictionary(); - mGameListCopy = new RoomInfo[0]; - isFetchingFriendList = false; - ChangeLocalID(-1); - if (flag2) - { - LocalCleanupAnythingInstantiated(destroyInstantiatedGameObjects: true); - PhotonNetwork.manuallyAllocatedViewIds = new List(); - } - if (flag) - { - SendMonoMessage(PhotonNetworkingMessage.OnLeftRoom); - } - } - - protected internal void LocalCleanupAnythingInstantiated(bool destroyInstantiatedGameObjects) - { - if (tempInstantiationData.Count > 0) - { - Debug.LogWarning("It seems some instantiation is not completed, as instantiation data is used. You should make sure instantiations are paused when calling this method. Cleaning now, despite this."); - } - if (destroyInstantiatedGameObjects) - { - HashSet hashSet = new HashSet(); - foreach (PhotonView value in photonViewList.Values) - { - if (value.isRuntimeInstantiated) - { - hashSet.Add(value.gameObject); - } - } - foreach (GameObject item in hashSet) - { - RemoveInstantiatedGO(item, localOnly: true); - } - } - tempInstantiationData.Clear(); - PhotonNetwork.lastUsedViewSubId = 0; - PhotonNetwork.lastUsedViewSubIdStatic = 0; - } - - private void GameEnteredOnGameServer(OperationResponse operationResponse) - { - if (operationResponse.ReturnCode != 0) - { - switch (operationResponse.OperationCode) - { - case 227: - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log("Create failed on GameServer. Changing back to MasterServer. Msg: " + operationResponse.DebugMessage); - } - SendMonoMessage(PhotonNetworkingMessage.OnPhotonCreateRoomFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); - break; - case 226: - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log("Join failed on GameServer. Changing back to MasterServer. Msg: " + operationResponse.DebugMessage); - if (operationResponse.ReturnCode == 32758) - { - Debug.Log("Most likely the game became empty during the switch to GameServer."); - } - } - SendMonoMessage(PhotonNetworkingMessage.OnPhotonJoinRoomFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); - break; - case 225: - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log("Join failed on GameServer. Changing back to MasterServer. Msg: " + operationResponse.DebugMessage); - if (operationResponse.ReturnCode == 32758) - { - Debug.Log("Most likely the game became empty during the switch to GameServer."); - } - } - SendMonoMessage(PhotonNetworkingMessage.OnPhotonRandomJoinFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); - break; - } - DisconnectToReconnect(); - } - else - { - Room room = new Room(enterRoomParamsCache.RoomName, null); - room.IsLocalClientInside = true; - CurrentRoom = room; - State = ClientState.Joined; - if (operationResponse.Parameters.ContainsKey(252)) - { - int[] actorsInRoom = (int[])operationResponse.Parameters[252]; - UpdatedActorList(actorsInRoom); - } - int newID = (int)operationResponse[254]; - ChangeLocalID(newID); - ExitGames.Client.Photon.Hashtable pActorProperties = (ExitGames.Client.Photon.Hashtable)operationResponse[249]; - ExitGames.Client.Photon.Hashtable gameProperties = (ExitGames.Client.Photon.Hashtable)operationResponse[248]; - ReadoutProperties(gameProperties, pActorProperties, 0); - if (!CurrentRoom.serverSideMasterClient) - { - CheckMasterClient(-1); - } - if (mPlayernameHasToBeUpdated) - { - SendPlayerName(); - } - switch (operationResponse.OperationCode) - { - case 227: - SendMonoMessage(PhotonNetworkingMessage.OnCreatedRoom); - break; - } - } - } - - private void AddNewPlayer(int ID, PhotonPlayer player) - { - if (!mActors.ContainsKey(ID)) - { - mActors[ID] = player; - RebuildPlayerListCopies(); - } - else - { - Debug.LogError("Adding player twice: " + ID); - } - } - - private void RemovePlayer(int ID, PhotonPlayer player) - { - mActors.Remove(ID); - if (!player.IsLocal) - { - RebuildPlayerListCopies(); - } - } - - private void RebuildPlayerListCopies() - { - mPlayerListCopy = new PhotonPlayer[mActors.Count]; - mActors.Values.CopyTo(mPlayerListCopy, 0); - List list = new List(); - for (int i = 0; i < mPlayerListCopy.Length; i++) - { - PhotonPlayer photonPlayer = mPlayerListCopy[i]; - if (!photonPlayer.IsLocal) - { - list.Add(photonPlayer); - } - } - mOtherPlayerListCopy = list.ToArray(); - } - - private void ResetPhotonViewsOnSerialize() - { - foreach (PhotonView value in photonViewList.Values) - { - value.lastOnSerializeDataSent = null; - } - } - - private void HandleEventLeave(int actorID, EventData evLeave) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log("HandleEventLeave for player ID: " + actorID + " evLeave: " + evLeave.ToStringFull()); - } - PhotonPlayer playerWithId = GetPlayerWithId(actorID); - if (playerWithId == null) - { - Debug.LogError($"Received event Leave for unknown player ID: {actorID}"); - } - else - { - bool isInactive = playerWithId.IsInactive; - if (evLeave.Parameters.ContainsKey(233)) - { - playerWithId.IsInactive = (bool)evLeave.Parameters[233]; - if (playerWithId.IsInactive && isInactive) - { - Debug.LogWarning("HandleEventLeave for player ID: " + actorID + " isInactive: " + playerWithId.IsInactive + ". Stopping handling if inactive."); - return; - } - } - if (evLeave.Parameters.ContainsKey(203)) - { - if ((int)evLeave[203] != 0) - { - mMasterClientId = (int)evLeave[203]; - UpdateMasterClient(); - } - } - else if (!CurrentRoom.serverSideMasterClient) - { - CheckMasterClient(actorID); - } - if (!playerWithId.IsInactive || isInactive) - { - if (CurrentRoom != null && CurrentRoom.AutoCleanUp) - { - DestroyPlayerObjects(actorID, localOnly: true); - } - RemovePlayer(actorID, playerWithId); - SendMonoMessage(PhotonNetworkingMessage.OnPhotonPlayerDisconnected, playerWithId); - } - } - } - - private void CheckMasterClient(int leavingPlayerId) - { - bool flag = mMasterClientId == leavingPlayerId; - bool flag2 = leavingPlayerId > 0; - if (!flag2 || flag) - { - int num; - if (mActors.Count <= 1) - { - num = LocalPlayer.ID; - } - else - { - num = 2147483647; - foreach (int key in mActors.Keys) - { - if (key < num && key != leavingPlayerId) - { - num = key; - } - } - } - mMasterClientId = num; - if (flag2) - { - SendMonoMessage(PhotonNetworkingMessage.OnMasterClientSwitched, GetPlayerWithId(num)); - } - } - } - - protected internal void UpdateMasterClient() - { - SendMonoMessage(PhotonNetworkingMessage.OnMasterClientSwitched, PhotonNetwork.masterClient); - } - - private static int ReturnLowestPlayerId(PhotonPlayer[] players, int playerIdToIgnore) - { - if (players == null || players.Length == 0) - { - return -1; - } - int num = 2147483647; - foreach (PhotonPlayer photonPlayer in players) - { - if (photonPlayer.ID != playerIdToIgnore && photonPlayer.ID < num) - { - num = photonPlayer.ID; - } - } - return num; - } - - protected internal bool SetMasterClient(int playerId, bool sync) - { - if (mMasterClientId == playerId || !mActors.ContainsKey(playerId)) - { - return false; - } - if (sync && !OpRaiseEvent(208, new ExitGames.Client.Photon.Hashtable - { - { - (byte)1, - playerId - } - }, sendReliable: true, null)) - { - return false; - } - hasSwitchedMC = true; - CurrentRoom.MasterClientId = playerId; - SendMonoMessage(PhotonNetworkingMessage.OnMasterClientSwitched, GetPlayerWithId(playerId)); - return true; - } - - public bool SetMasterClient(int nextMasterId) - { - ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(); - hashtable.Add((byte)248, nextMasterId); - ExitGames.Client.Photon.Hashtable gameProperties = hashtable; - hashtable = new ExitGames.Client.Photon.Hashtable(); - hashtable.Add((byte)248, mMasterClientId); - ExitGames.Client.Photon.Hashtable expectedProperties = hashtable; - return OpSetPropertiesOfRoom(gameProperties, expectedProperties); - } - - protected internal PhotonPlayer GetPlayerWithId(int number) - { - if (mActors == null) - { - return null; - } - PhotonPlayer value = null; - mActors.TryGetValue(number, out value); - return value; - } - - private void SendPlayerName() - { - if (State == ClientState.Joining) - { - mPlayernameHasToBeUpdated = true; - } - else if (LocalPlayer != null) - { - LocalPlayer.NickName = PlayerName; - ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(); - hashtable[(byte)byte.MaxValue] = PlayerName; - if (LocalPlayer.ID > 0) - { - OpSetPropertiesOfActor(LocalPlayer.ID, hashtable); - mPlayernameHasToBeUpdated = false; - } - } - } - - private ExitGames.Client.Photon.Hashtable GetLocalActorProperties() - { - if (PhotonNetwork.player != null) - { - return PhotonNetwork.player.AllProperties; - } - ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(); - hashtable[(byte)byte.MaxValue] = PlayerName; - return hashtable; - } - - public void DebugReturn(DebugLevel level, string message) - { - switch (level) - { - case DebugLevel.ERROR: - Debug.LogError(message); - return; - case DebugLevel.WARNING: - Debug.LogWarning(message); - return; - case DebugLevel.INFO: - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log(message); - return; - } - break; - } - if (level == DebugLevel.ALL && PhotonNetwork.logLevel == PhotonLogLevel.Full) - { - Debug.Log(message); - } - } - - public void OnOperationResponse(OperationResponse operationResponse) - { - if (PhotonNetwork.networkingPeer.State == ClientState.Disconnecting) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log("OperationResponse ignored while disconnecting. Code: " + operationResponse.OperationCode); - } - } - else - { - if (operationResponse.ReturnCode == 0) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log(operationResponse.ToString()); - } - } - else if (operationResponse.ReturnCode == -3) - { - Debug.LogError("Operation " + operationResponse.OperationCode + " could not be executed (yet). Wait for state JoinedLobby or ConnectedToMaster and their callbacks before calling operations. WebRPCs need a server-side configuration. Enum OperationCode helps identify the operation."); - } - else if (operationResponse.ReturnCode == 32752) - { - Debug.LogError("Operation " + operationResponse.OperationCode + " failed in a server-side plugin. Check the configuration in the Dashboard. Message from server-plugin: " + operationResponse.DebugMessage); - } - else if (operationResponse.ReturnCode == 32760) - { - Debug.LogWarning("Operation failed: " + operationResponse.ToStringFull()); - } - else - { - Debug.LogError("Operation failed: " + operationResponse.ToStringFull() + " Server: " + Server); - } - if (operationResponse.Parameters.ContainsKey(221)) - { - if (AuthValues == null) - { - AuthValues = new AuthenticationValues(); - } - AuthValues.Token = (operationResponse[221] as string); - tokenCache = AuthValues.Token; - } - switch (operationResponse.OperationCode) - { - case 252: - case 253: - break; - case 230: - case 231: - if (operationResponse.ReturnCode != 0) - { - if (operationResponse.ReturnCode == -2) - { - Debug.LogError(string.Format("If you host Photon yourself, make sure to start the 'Instance LoadBalancing' " + base.ServerAddress)); - } - else if (operationResponse.ReturnCode == 32767) - { - Debug.LogError($"The appId this client sent is unknown on the server (Cloud). Check settings. If using the Cloud, check account."); - SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, DisconnectCause.InvalidAuthentication); - } - else if (operationResponse.ReturnCode == 32755) - { - Debug.LogError($"Custom Authentication failed (either due to user-input or configuration or AuthParameter string format). Calling: OnCustomAuthenticationFailed()"); - SendMonoMessage(PhotonNetworkingMessage.OnCustomAuthenticationFailed, operationResponse.DebugMessage); - } - else - { - Debug.LogError($"Authentication failed: '{operationResponse.DebugMessage}' Code: {operationResponse.ReturnCode}"); - } - State = ClientState.Disconnecting; - Disconnect(); - if (operationResponse.ReturnCode == 32757) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.LogWarning($"Currently, the limit of users is reached for this title. Try again later. Disconnecting"); - } - SendMonoMessage(PhotonNetworkingMessage.OnPhotonMaxCccuReached); - SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, DisconnectCause.MaxCcuReached); - } - else if (operationResponse.ReturnCode == 32756) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.LogError($"The used master server address is not available with the subscription currently used. Got to Photon Cloud Dashboard or change URL. Disconnecting."); - } - SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, DisconnectCause.InvalidRegion); - } - else if (operationResponse.ReturnCode == 32753) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.LogError($"The authentication ticket expired. You need to connect (and authenticate) again. Disconnecting."); - } - SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, DisconnectCause.AuthenticationTicketExpired); - } - } - else - { - if (Server == ServerConnection.NameServer || Server == ServerConnection.MasterServer) - { - if (operationResponse.Parameters.ContainsKey(225)) - { - string text = (string)operationResponse.Parameters[225]; - if (!string.IsNullOrEmpty(text)) - { - if (AuthValues == null) - { - AuthValues = new AuthenticationValues(); - } - AuthValues.UserId = text; - PhotonNetwork.player.UserId = text; - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - DebugReturn(DebugLevel.INFO, $"Received your UserID from server. Updating local value to: {text}"); - } - } - } - if (operationResponse.Parameters.ContainsKey(202)) - { - playername = (string)operationResponse.Parameters[202]; - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - DebugReturn(DebugLevel.INFO, $"Received your NickName from server. Updating local value to: {playername}"); - } - } - if (operationResponse.Parameters.ContainsKey(192)) - { - SetupEncryption((Dictionary)operationResponse.Parameters[192]); - } - } - if (Server == ServerConnection.NameServer) - { - MasterServerAddress = (operationResponse[230] as string); - DisconnectToReconnect(); - } - else if (Server == ServerConnection.MasterServer) - { - if (AuthMode != 0) - { - OpSettings(requestLobbyStatistics); - } - if (PhotonNetwork.autoJoinLobby) - { - State = ClientState.Authenticated; - OpJoinLobby(lobby); - } - else - { - State = ClientState.ConnectedToMaster; - SendMonoMessage(PhotonNetworkingMessage.OnConnectedToMaster); - } - } - else if (Server == ServerConnection.GameServer) - { - State = ClientState.Joining; - enterRoomParamsCache.PlayerProperties = GetLocalActorProperties(); - enterRoomParamsCache.OnGameServer = true; - if (lastJoinType == JoinType.JoinRoom || lastJoinType == JoinType.JoinRandomRoom || lastJoinType == JoinType.JoinOrCreateRoom) - { - OpJoinRoom(enterRoomParamsCache); - } - else if (lastJoinType == JoinType.CreateRoom) - { - OpCreateGame(enterRoomParamsCache); - } - } - if (operationResponse.Parameters.ContainsKey(245)) - { - Dictionary dictionary = (Dictionary)operationResponse.Parameters[245]; - if (dictionary != null) - { - SendMonoMessage(PhotonNetworkingMessage.OnCustomAuthenticationResponse, dictionary); - } - } - } - break; - case 220: - if (operationResponse.ReturnCode == 32767) - { - Debug.LogError($"The appId this client sent is unknown on the server (Cloud). Check settings. If using the Cloud, check account."); - SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, DisconnectCause.InvalidAuthentication); - State = ClientState.Disconnecting; - Disconnect(); - } - else if (operationResponse.ReturnCode != 0) - { - Debug.LogError("GetRegions failed. Can't provide regions list. Error: " + operationResponse.ReturnCode + ": " + operationResponse.DebugMessage); - } - else - { - string[] array3 = operationResponse[210] as string[]; - string[] array4 = operationResponse[230] as string[]; - if (array3 == null || array4 == null || array3.Length != array4.Length) - { - Debug.LogError("The region arrays from Name Server are not ok. Must be non-null and same length. " + (array3 == null) + " " + (array4 == null) + "\n" + operationResponse.ToStringFull()); - } - else - { - AvailableRegions = new List(array3.Length); - for (int j = 0; j < array3.Length; j++) - { - string text3 = array3[j]; - if (!string.IsNullOrEmpty(text3)) - { - text3 = text3.ToLower(); - CloudRegionCode cloudRegionCode = Region.Parse(text3); - bool flag = true; - if (PhotonNetwork.PhotonServerSettings.HostType == ServerSettings.HostingOption.BestRegion && PhotonNetwork.PhotonServerSettings.EnabledRegions != 0) - { - CloudRegionFlag cloudRegionFlag = Region.ParseFlag(text3); - flag = ((PhotonNetwork.PhotonServerSettings.EnabledRegions & cloudRegionFlag) != (CloudRegionFlag)0); - if (!flag && PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log("Skipping region because it's not in PhotonServerSettings.EnabledRegions: " + cloudRegionCode); - } - } - if (flag) - { - AvailableRegions.Add(new Region - { - Code = cloudRegionCode, - HostAndPort = array4[j] - }); - } - } - } - if (PhotonNetwork.PhotonServerSettings.HostType == ServerSettings.HostingOption.BestRegion) - { - PhotonHandler.PingAvailableRegionsAndConnectToBest(); - } - } - } - break; - case 227: - if (Server == ServerConnection.GameServer) - { - GameEnteredOnGameServer(operationResponse); - } - else if (operationResponse.ReturnCode != 0) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.LogWarning($"CreateRoom failed, client stays on masterserver: {operationResponse.ToStringFull()}."); - } - State = ((!insideLobby) ? ClientState.ConnectedToMaster : ClientState.JoinedLobby); - SendMonoMessage(PhotonNetworkingMessage.OnPhotonCreateRoomFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); - } - else - { - string text2 = (string)operationResponse[byte.MaxValue]; - if (!string.IsNullOrEmpty(text2)) - { - enterRoomParamsCache.RoomName = text2; - } - GameServerAddress = (string)operationResponse[230]; - DisconnectToReconnect(); - } - break; - case 226: - if (Server != ServerConnection.GameServer) - { - if (operationResponse.ReturnCode != 0) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log($"JoinRoom failed (room maybe closed by now). Client stays on masterserver: {operationResponse.ToStringFull()}. State: {State}"); - } - SendMonoMessage(PhotonNetworkingMessage.OnPhotonJoinRoomFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); - } - else - { - GameServerAddress = (string)operationResponse[230]; - DisconnectToReconnect(); - } - } - else - { - GameEnteredOnGameServer(operationResponse); - } - break; - case 225: - if (operationResponse.ReturnCode != 0) - { - if (operationResponse.ReturnCode == 32760) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) - { - Debug.Log("JoinRandom failed: No open game. Calling: OnPhotonRandomJoinFailed() and staying on master server."); - } - } - else if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.LogWarning($"JoinRandom failed: {operationResponse.ToStringFull()}."); - } - SendMonoMessage(PhotonNetworkingMessage.OnPhotonRandomJoinFailed, operationResponse.ReturnCode, operationResponse.DebugMessage); - } - else - { - string roomName = (string)operationResponse[byte.MaxValue]; - enterRoomParamsCache.RoomName = roomName; - GameServerAddress = (string)operationResponse[230]; - DisconnectToReconnect(); - } - break; - case 229: - State = ClientState.JoinedLobby; - insideLobby = true; - SendMonoMessage(PhotonNetworkingMessage.OnJoinedLobby); - break; - case 228: - State = ClientState.Authenticated; - LeftLobbyCleanup(); - break; - case 254: - DisconnectToReconnect(); - break; - case 251: - { - ExitGames.Client.Photon.Hashtable pActorProperties = (ExitGames.Client.Photon.Hashtable)operationResponse[249]; - ExitGames.Client.Photon.Hashtable gameProperties = (ExitGames.Client.Photon.Hashtable)operationResponse[248]; - ReadoutProperties(gameProperties, pActorProperties, 0); - break; - } - case 222: - { - bool[] array = operationResponse[1] as bool[]; - string[] array2 = operationResponse[2] as string[]; - if (array != null && array2 != null && friendListRequested != null && array.Length == friendListRequested.Length) - { - List list = new List(friendListRequested.Length); - for (int i = 0; i < friendListRequested.Length; i++) - { - FriendInfo friendInfo = new FriendInfo(); - friendInfo.Name = friendListRequested[i]; - friendInfo.Room = array2[i]; - friendInfo.IsOnline = array[i]; - list.Insert(i, friendInfo); - } - PhotonNetwork.Friends = list; - } - else - { - Debug.LogError("FindFriends failed to apply the result, as a required value wasn't provided or the friend list length differed from result."); - } - friendListRequested = null; - isFetchingFriendList = false; - friendListTimestamp = Environment.TickCount; - if (friendListTimestamp == 0) - { - friendListTimestamp = 1; - } - SendMonoMessage(PhotonNetworkingMessage.OnUpdatedFriendList); - break; - } - case 219: - SendMonoMessage(PhotonNetworkingMessage.OnWebRpcResponse, operationResponse); - break; - default: - Debug.LogWarning($"OperationResponse unhandled: {operationResponse.ToString()}"); - break; - } - } - } - - public void OnStatusChanged(StatusCode statusCode) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log($"OnStatusChanged: {statusCode.ToString()} current State: {State}"); - } - switch (statusCode) - { - case StatusCode.QueueOutgoingReliableWarning: - case StatusCode.QueueOutgoingUnreliableWarning: - case StatusCode.QueueOutgoingAcksWarning: - case StatusCode.QueueSentWarning: - break; - case StatusCode.SendError: - break; - case StatusCode.Connect: - if (State == ClientState.ConnectingToNameServer) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) - { - Debug.Log("Connected to NameServer."); - } - Server = ServerConnection.NameServer; - if (AuthValues != null) - { - AuthValues.Token = null; - } - } - if (State == ClientState.ConnectingToGameserver) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) - { - Debug.Log("Connected to gameserver."); - } - Server = ServerConnection.GameServer; - State = ClientState.ConnectedToGameserver; - } - if (State == ClientState.ConnectingToMasterserver) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) - { - Debug.Log("Connected to masterserver."); - } - Server = ServerConnection.MasterServer; - State = ClientState.Authenticating; - if (IsInitialConnect) - { - IsInitialConnect = false; - SendMonoMessage(PhotonNetworkingMessage.OnConnectedToPhoton); - } - } - if (base.TransportProtocol != ConnectionProtocol.WebSocketSecure) - { - if (Server == ServerConnection.NameServer || AuthMode == AuthModeOption.Auth) - { - EstablishEncryption(); - } - break; - } - if (DebugOut == DebugLevel.INFO) - { - Debug.Log("Skipping EstablishEncryption. Protocol is secure."); - } - goto case StatusCode.EncryptionEstablished; - case StatusCode.EncryptionEstablished: - if (Server == ServerConnection.NameServer) - { - State = ClientState.ConnectedToNameServer; - if (!didAuthenticate && CloudRegion == CloudRegionCode.none) - { - OpGetRegions(AppId); - } - } - if ((Server == ServerConnection.NameServer || (AuthMode != AuthModeOption.AuthOnce && AuthMode != AuthModeOption.AuthOnceWss)) && !didAuthenticate && (!IsUsingNameServer || CloudRegion != CloudRegionCode.none)) - { - didAuthenticate = CallAuthenticate(); - if (didAuthenticate) - { - State = ClientState.Authenticating; - } - } - break; - case StatusCode.EncryptionFailedToEstablish: - { - Debug.LogError("Encryption wasn't established: " + statusCode + ". Going to authenticate anyways."); - object authenticationValues = AuthValues; - if (authenticationValues == null) - { - AuthenticationValues authenticationValues2 = new AuthenticationValues(); - authenticationValues2.UserId = PlayerName; - authenticationValues = authenticationValues2; - } - AuthenticationValues authValues = (AuthenticationValues)authenticationValues; - OpAuthenticate(AppId, AppVersion, authValues, CloudRegion.ToString(), requestLobbyStatistics); - break; - } - case StatusCode.Disconnect: - didAuthenticate = false; - isFetchingFriendList = false; - if (Server == ServerConnection.GameServer) - { - LeftRoomCleanup(); - } - if (Server == ServerConnection.MasterServer) - { - LeftLobbyCleanup(); - } - if (State == ClientState.DisconnectingFromMasterserver) - { - if (Connect(GameServerAddress, ServerConnection.GameServer)) - { - State = ClientState.ConnectingToGameserver; - } - } - else if (State == ClientState.DisconnectingFromGameserver || State == ClientState.DisconnectingFromNameServer) - { - SetupProtocol(ServerConnection.MasterServer); - if (Connect(MasterServerAddress, ServerConnection.MasterServer)) - { - State = ClientState.ConnectingToMasterserver; - } - } - else - { - if (AuthValues != null) - { - AuthValues.Token = null; - } - State = ClientState.PeerCreated; - SendMonoMessage(PhotonNetworkingMessage.OnDisconnectedFromPhoton); - } - break; - case StatusCode.SecurityExceptionOnConnect: - case StatusCode.ExceptionOnConnect: - { - State = ClientState.PeerCreated; - if (AuthValues != null) - { - AuthValues.Token = null; - } - DisconnectCause disconnectCause = (DisconnectCause)statusCode; - SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, disconnectCause); - break; - } - case StatusCode.Exception: - if (IsInitialConnect) - { - Debug.LogError("Exception while connecting to: " + base.ServerAddress + ". Check if the server is available."); - if (base.ServerAddress == null || base.ServerAddress.StartsWith("127.0.0.1")) - { - Debug.LogWarning("The server address is 127.0.0.1 (localhost): Make sure the server is running on this machine. Android and iOS emulators have their own localhost."); - if (base.ServerAddress == GameServerAddress) - { - Debug.LogWarning("This might be a misconfiguration in the game server config. You need to edit it to a (public) address."); - } - } - State = ClientState.PeerCreated; - DisconnectCause disconnectCause = (DisconnectCause)statusCode; - SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, disconnectCause); - } - else - { - State = ClientState.PeerCreated; - DisconnectCause disconnectCause = (DisconnectCause)statusCode; - SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, disconnectCause); - } - Disconnect(); - break; - case StatusCode.TimeoutDisconnect: - if (IsInitialConnect) - { - Debug.LogWarning(statusCode + " while connecting to: " + base.ServerAddress + ". Check if the server is available."); - DisconnectCause disconnectCause = (DisconnectCause)statusCode; - SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, disconnectCause); - } - else - { - DisconnectCause disconnectCause = (DisconnectCause)statusCode; - SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, disconnectCause); - } - if (AuthValues != null) - { - AuthValues.Token = null; - } - Disconnect(); - break; - case StatusCode.ExceptionOnReceive: - case StatusCode.DisconnectByServer: - case StatusCode.DisconnectByServerUserLimit: - case StatusCode.DisconnectByServerLogic: - if (IsInitialConnect) - { - Debug.LogWarning(statusCode + " while connecting to: " + base.ServerAddress + ". Check if the server is available."); - DisconnectCause disconnectCause = (DisconnectCause)statusCode; - SendMonoMessage(PhotonNetworkingMessage.OnFailedToConnectToPhoton, disconnectCause); - } - else - { - DisconnectCause disconnectCause = (DisconnectCause)statusCode; - SendMonoMessage(PhotonNetworkingMessage.OnConnectionFail, disconnectCause); - } - if (AuthValues != null) - { - AuthValues.Token = null; - } - Disconnect(); - break; - case StatusCode.QueueIncomingReliableWarning: - case StatusCode.QueueIncomingUnreliableWarning: - Debug.Log(statusCode + ". This client buffers many incoming messages. This is OK temporarily. With lots of these warnings, check if you send too much or execute messages too slow. " + ((!PhotonNetwork.isMessageQueueRunning) ? "Your isMessageQueueRunning is false. This can cause the issue temporarily." : string.Empty)); - break; - default: - Debug.LogError("Received unknown status code: " + statusCode); - break; - } - } - - public void OnEvent(EventData photonEvent) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log($"OnEvent: {photonEvent.ToString()}"); - } - int num = -1; - PhotonPlayer photonPlayer = null; - if (photonEvent.Parameters.ContainsKey(254)) - { - num = (int)photonEvent[254]; - photonPlayer = GetPlayerWithId(num); - } - switch (photonEvent.Code) - { - case 228: - break; - case 209: - { - int[] array = (int[])photonEvent.Parameters[245]; - int num3 = array[0]; - int num4 = array[1]; - PhotonView photonView = PhotonView.Find(num3); - if (photonView == null) - { - Debug.LogWarning("Can't find PhotonView of incoming OwnershipRequest. ViewId not found: " + num3); - } - else - { - if (PhotonNetwork.logLevel == PhotonLogLevel.Informational) - { - Debug.Log("Ev OwnershipRequest " + photonView.ownershipTransfer + ". ActorNr: " + num + " takes from: " + num4 + ". Current owner: " + photonView.ownerId + " isOwnerActive: " + photonView.isOwnerActive + ". MasterClient: " + mMasterClientId + ". This client's player: " + PhotonNetwork.player.ToStringFull()); - } - switch (photonView.ownershipTransfer) - { - case OwnershipOption.Fixed: - Debug.LogWarning("Ownership mode == fixed. Ignoring request."); - break; - case OwnershipOption.Takeover: - if (num4 == photonView.ownerId || (num4 == 0 && photonView.ownerId == mMasterClientId)) - { - photonView.OwnerShipWasTransfered = true; - photonView.ownerId = num; - if (PhotonNetwork.logLevel == PhotonLogLevel.Informational) - { - Debug.LogWarning(photonView + " ownership transfered to: " + num); - } - } - break; - case OwnershipOption.Request: - if ((num4 == PhotonNetwork.player.ID || PhotonNetwork.player.IsMasterClient) && (photonView.ownerId == PhotonNetwork.player.ID || (PhotonNetwork.player.IsMasterClient && !photonView.isOwnerActive))) - { - SendMonoMessage(PhotonNetworkingMessage.OnOwnershipRequest, photonView, photonPlayer); - } - break; - } - } - break; - } - case 210: - { - int[] array6 = (int[])photonEvent.Parameters[245]; - Debug.Log("Ev OwnershipTransfer. ViewID " + array6[0] + " to: " + array6[1] + " Time: " + Environment.TickCount % 1000); - int viewID = array6[0]; - int ownerId = array6[1]; - PhotonView photonView2 = PhotonView.Find(viewID); - if (photonView2 != null) - { - photonView2.OwnerShipWasTransfered = true; - photonView2.ownerId = ownerId; - } - break; - } - case 230: - { - mGameList = new Dictionary(); - ExitGames.Client.Photon.Hashtable hashtable2 = (ExitGames.Client.Photon.Hashtable)photonEvent[222]; - foreach (object key in hashtable2.Keys) - { - string text2 = (string)key; - mGameList[text2] = new RoomInfo(text2, (ExitGames.Client.Photon.Hashtable)hashtable2[key]); - } - mGameListCopy = new RoomInfo[mGameList.Count]; - mGameList.Values.CopyTo(mGameListCopy, 0); - SendMonoMessage(PhotonNetworkingMessage.OnReceivedRoomListUpdate); - break; - } - case 229: - { - ExitGames.Client.Photon.Hashtable hashtable = (ExitGames.Client.Photon.Hashtable)photonEvent[222]; - foreach (object key2 in hashtable.Keys) - { - string text = (string)key2; - RoomInfo roomInfo = new RoomInfo(text, (ExitGames.Client.Photon.Hashtable)hashtable[key2]); - if (roomInfo.removedFromList) - { - mGameList.Remove(text); - } - else - { - mGameList[text] = roomInfo; - } - } - mGameListCopy = new RoomInfo[mGameList.Count]; - mGameList.Values.CopyTo(mGameListCopy, 0); - SendMonoMessage(PhotonNetworkingMessage.OnReceivedRoomListUpdate); - break; - } - case 226: - PlayersInRoomsCount = (int)photonEvent[229]; - PlayersOnMasterCount = (int)photonEvent[227]; - RoomsCount = (int)photonEvent[228]; - break; - case byte.MaxValue: - { - ExitGames.Client.Photon.Hashtable properties = (ExitGames.Client.Photon.Hashtable)photonEvent[249]; - if (photonPlayer == null) - { - bool isLocal = LocalPlayer.ID == num; - AddNewPlayer(num, new PhotonPlayer(isLocal, num, properties)); - ResetPhotonViewsOnSerialize(); - } - else - { - photonPlayer.InternalCacheProperties(properties); - photonPlayer.IsInactive = false; - } - if (num == LocalPlayer.ID) - { - int[] actorsInRoom = (int[])photonEvent[252]; - UpdatedActorList(actorsInRoom); - if (lastJoinType == JoinType.JoinOrCreateRoom && LocalPlayer.ID == 1) - { - SendMonoMessage(PhotonNetworkingMessage.OnCreatedRoom); - } - SendMonoMessage(PhotonNetworkingMessage.OnJoinedRoom); - } - else - { - SendMonoMessage(PhotonNetworkingMessage.OnPhotonPlayerConnected, mActors[num]); - } - break; - } - case 254: - HandleEventLeave(num, photonEvent); - break; - case 253: - { - int num2 = (int)photonEvent[253]; - ExitGames.Client.Photon.Hashtable gameProperties = null; - ExitGames.Client.Photon.Hashtable pActorProperties = null; - if (num2 == 0) - { - gameProperties = (ExitGames.Client.Photon.Hashtable)photonEvent[251]; - } - else - { - pActorProperties = (ExitGames.Client.Photon.Hashtable)photonEvent[251]; - } - ReadoutProperties(gameProperties, pActorProperties, num2); - break; - } - case 200: - ExecuteRpc(photonEvent[245] as ExitGames.Client.Photon.Hashtable, photonPlayer); - break; - case 201: - case 206: - { - ExitGames.Client.Photon.Hashtable hashtable4 = (ExitGames.Client.Photon.Hashtable)photonEvent[245]; - int networkTime = (int)hashtable4[(byte)0]; - short correctPrefix = -1; - byte b = 10; - int num6 = 1; - if (hashtable4.ContainsKey((byte)1)) - { - correctPrefix = (short)hashtable4[(byte)1]; - num6 = 2; - } - byte b2 = b; - while (b2 - b < hashtable4.Count - num6) - { - OnSerializeRead(hashtable4[b2] as object[], photonPlayer, networkTime, correctPrefix); - b2 = (byte)(b2 + 1); - } - break; - } - case 202: - DoInstantiate((ExitGames.Client.Photon.Hashtable)photonEvent[245], photonPlayer, null); - break; - case 203: - if (photonPlayer == null || !photonPlayer.IsMasterClient) - { - Debug.LogError("Error: Someone else(" + photonPlayer + ") then the masterserver requests a disconnect!"); - } - else - { - PhotonNetwork.LeaveRoom(); - } - break; - case 207: - { - ExitGames.Client.Photon.Hashtable hashtable3 = (ExitGames.Client.Photon.Hashtable)photonEvent[245]; - int num7 = (int)hashtable3[(byte)0]; - if (num7 >= 0) - { - DestroyPlayerObjects(num7, localOnly: true); - } - else - { - if ((int)DebugOut >= 3) - { - Debug.Log("Ev DestroyAll! By PlayerId: " + num); - } - DestroyAll(localOnly: true); - } - break; - } - case 204: - { - ExitGames.Client.Photon.Hashtable hashtable3 = (ExitGames.Client.Photon.Hashtable)photonEvent[245]; - int num5 = (int)hashtable3[(byte)0]; - PhotonView value = null; - if (photonViewList.TryGetValue(num5, out value)) - { - RemoveInstantiatedGO(value.gameObject, localOnly: true); - } - else if ((int)DebugOut >= 1) - { - Debug.LogError("Ev Destroy Failed. Could not find PhotonView with instantiationId " + num5 + ". Sent by actorNr: " + num); - } - break; - } - case 208: - { - ExitGames.Client.Photon.Hashtable hashtable3 = (ExitGames.Client.Photon.Hashtable)photonEvent[245]; - int playerId = (int)hashtable3[(byte)1]; - SetMasterClient(playerId, sync: false); - break; - } - case 224: - { - string[] array2 = photonEvent[213] as string[]; - byte[] array3 = photonEvent[212] as byte[]; - int[] array4 = photonEvent[229] as int[]; - int[] array5 = photonEvent[228] as int[]; - LobbyStatistics.Clear(); - for (int i = 0; i < array2.Length; i++) - { - TypedLobbyInfo typedLobbyInfo = new TypedLobbyInfo(); - typedLobbyInfo.Name = array2[i]; - typedLobbyInfo.Type = (LobbyType)array3[i]; - typedLobbyInfo.PlayerCount = array4[i]; - typedLobbyInfo.RoomCount = array5[i]; - LobbyStatistics.Add(typedLobbyInfo); - } - SendMonoMessage(PhotonNetworkingMessage.OnLobbyStatisticsUpdate); - break; - } - case 251: - if (PhotonNetwork.OnEventCall != null) - { - object content2 = photonEvent[245]; - PhotonNetwork.OnEventCall(photonEvent.Code, content2, num); - } - else - { - Debug.LogWarning("Warning: Unhandled Event ErrorInfo (251). Set PhotonNetwork.OnEventCall to the method PUN should call for this event."); - } - break; - case 223: - if (AuthValues == null) - { - AuthValues = new AuthenticationValues(); - } - AuthValues.Token = (photonEvent[221] as string); - tokenCache = AuthValues.Token; - break; - default: - if (photonEvent.Code < 200) - { - if (PhotonNetwork.OnEventCall != null) - { - object content = photonEvent[245]; - PhotonNetwork.OnEventCall(photonEvent.Code, content, num); - } - else - { - Debug.LogWarning("Warning: Unhandled event " + photonEvent + ". Set PhotonNetwork.OnEventCall."); - } - } - break; - } - } - - public void OnMessage(object messages) - { - } - - private void SetupEncryption(Dictionary encryptionData) - { - if (AuthMode == AuthModeOption.Auth && DebugOut == DebugLevel.ERROR) - { - Debug.LogWarning("SetupEncryption() called but ignored. Not XB1 compiled. EncryptionData: " + encryptionData.ToStringFull()); - } - else - { - if (DebugOut == DebugLevel.INFO) - { - Debug.Log("SetupEncryption() got called. " + encryptionData.ToStringFull()); - } - switch ((byte)encryptionData[0]) - { - case 0: - { - byte[] secret = (byte[])encryptionData[1]; - InitPayloadEncryption(secret); - break; - } - case 10: - { - byte[] encryptionSecret = (byte[])encryptionData[1]; - byte[] hmacSecret = (byte[])encryptionData[2]; - InitDatagramEncryption(encryptionSecret, hmacSecret); - break; - } - default: - throw new ArgumentOutOfRangeException(); - } - } - } - - protected internal void UpdatedActorList(int[] actorsInRoom) - { - foreach (int num in actorsInRoom) - { - if (LocalPlayer.ID != num && !mActors.ContainsKey(num)) - { - AddNewPlayer(num, new PhotonPlayer(isLocal: false, num, string.Empty)); - } - } - } - - private void SendVacantViewIds() - { - Debug.Log("SendVacantViewIds()"); - List list = new List(); - foreach (PhotonView value in photonViewList.Values) - { - if (!value.isOwnerActive) - { - list.Add(value.viewID); - } - } - Debug.Log("Sending vacant view IDs. Length: " + list.Count); - OpRaiseEvent(211, list.ToArray(), sendReliable: true, null); - } - - public static void SendMonoMessage(PhotonNetworkingMessage methodString, params object[] parameters) - { - HashSet hashSet = (PhotonNetwork.SendMonoMessageTargets == null) ? PhotonNetwork.FindGameObjectsWithComponent(PhotonNetwork.SendMonoMessageTargetType) : PhotonNetwork.SendMonoMessageTargets; - string methodName = methodString.ToString(); - object value = (parameters == null || parameters.Length != 1) ? parameters : parameters[0]; - foreach (GameObject item in hashSet) - { - if (item != null) - { - item.SendMessage(methodName, value, SendMessageOptions.DontRequireReceiver); - } - } - } - - protected internal void ExecuteRpc(ExitGames.Client.Photon.Hashtable rpcData, PhotonPlayer sender) - { - if (rpcData == null || !rpcData.ContainsKey((byte)0)) - { - Debug.LogError("Malformed RPC; this should never occur. Content: " + SupportClass.DictionaryToString(rpcData)); - } - else - { - int num = (int)rpcData[(byte)0]; - int num2 = 0; - if (rpcData.ContainsKey((byte)1)) - { - num2 = (short)rpcData[(byte)1]; - } - string text; - if (rpcData.ContainsKey((byte)5)) - { - int num3 = (byte)rpcData[(byte)5]; - if (num3 > PhotonNetwork.PhotonServerSettings.RpcList.Count - 1) - { - Debug.LogError("Could not find RPC with index: " + num3 + ". Going to ignore! Check PhotonServerSettings.RpcList"); - return; - } - text = PhotonNetwork.PhotonServerSettings.RpcList[num3]; - } - else - { - text = (string)rpcData[(byte)3]; - } - object[] array = null; - if (rpcData.ContainsKey((byte)4)) - { - array = (object[])rpcData[(byte)4]; - } - if (array == null) - { - array = new object[0]; - } - PhotonView photonView = GetPhotonView(num); - if (photonView == null) - { - int num4 = num / PhotonNetwork.MAX_VIEW_IDS; - bool flag = num4 == LocalPlayer.ID; - bool flag2 = num4 == sender.ID; - if (flag) - { - Debug.LogWarning("Received RPC \"" + text + "\" for viewID " + num + " but this PhotonView does not exist! View was/is ours." + ((!flag2) ? " Remote called." : " Owner called.") + " By: " + sender.ID); - } - else - { - Debug.LogWarning("Received RPC \"" + text + "\" for viewID " + num + " but this PhotonView does not exist! Was remote PV." + ((!flag2) ? " Remote called." : " Owner called.") + " By: " + sender.ID + " Maybe GO was destroyed but RPC not cleaned up."); - } - } - else if (photonView.prefix != num2) - { - Debug.LogError("Received RPC \"" + text + "\" on viewID " + num + " with a prefix of " + num2 + ", our prefix is " + photonView.prefix + ". The RPC has been ignored."); - } - else if (string.IsNullOrEmpty(text)) - { - Debug.LogError("Malformed RPC; this should never occur. Content: " + SupportClass.DictionaryToString(rpcData)); - } - else - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) - { - Debug.Log("Received RPC: " + text); - } - if (photonView.group == 0 || allowedReceivingGroups.Contains(photonView.group)) - { - Type[] array2 = new Type[0]; - if (array.Length > 0) - { - array2 = new Type[array.Length]; - int num5 = 0; - foreach (object obj in array) - { - if (obj == null) - { - array2[num5] = null; - } - else - { - array2[num5] = obj.GetType(); - } - num5++; - } - } - int num6 = 0; - int num7 = 0; - if (!PhotonNetwork.UseRpcMonoBehaviourCache || photonView.RpcMonoBehaviours == null || photonView.RpcMonoBehaviours.Length == 0) - { - photonView.RefreshRpcMonoBehaviourCache(); - } - for (int j = 0; j < photonView.RpcMonoBehaviours.Length; j++) - { - MonoBehaviour monoBehaviour = photonView.RpcMonoBehaviours[j]; - if (monoBehaviour == null) - { - Debug.LogError("ERROR You have missing MonoBehaviours on your gameobjects!"); - } - else - { - Type type = monoBehaviour.GetType(); - List value = null; - if (!monoRPCMethodsCache.TryGetValue(type, out value)) - { - List methods = SupportClass.GetMethods(type, typeof(PunRPC)); - monoRPCMethodsCache[type] = methods; - value = methods; - } - if (value != null) - { - for (int k = 0; k < value.Count; k++) - { - MethodInfo methodInfo = value[k]; - if (methodInfo.Name.Equals(text)) - { - num7++; - ParameterInfo[] cachedParemeters = methodInfo.GetCachedParemeters(); - if (cachedParemeters.Length == array2.Length) - { - if (CheckTypeMatch(cachedParemeters, array2)) - { - num6++; - object obj2 = methodInfo.Invoke(monoBehaviour, array); - if (PhotonNetwork.StartRpcsAsCoroutine && methodInfo.ReturnType == typeof(IEnumerator)) - { - monoBehaviour.StartCoroutine((IEnumerator)obj2); - } - } - } - else if (cachedParemeters.Length - 1 == array2.Length) - { - if (CheckTypeMatch(cachedParemeters, array2) && cachedParemeters[cachedParemeters.Length - 1].ParameterType == typeof(PhotonMessageInfo)) - { - num6++; - int timestamp = (int)rpcData[(byte)2]; - object[] array3 = new object[array.Length + 1]; - array.CopyTo(array3, 0); - array3[array3.Length - 1] = new PhotonMessageInfo(sender, timestamp, photonView); - object obj3 = methodInfo.Invoke(monoBehaviour, array3); - if (PhotonNetwork.StartRpcsAsCoroutine && methodInfo.ReturnType == typeof(IEnumerator)) - { - monoBehaviour.StartCoroutine((IEnumerator)obj3); - } - } - } - else if (cachedParemeters.Length == 1 && cachedParemeters[0].ParameterType.IsArray) - { - num6++; - object obj4 = methodInfo.Invoke(monoBehaviour, new object[1] - { - array - }); - if (PhotonNetwork.StartRpcsAsCoroutine && methodInfo.ReturnType == typeof(IEnumerator)) - { - monoBehaviour.StartCoroutine((IEnumerator)obj4); - } - } - } - } - } - } - } - if (num6 != 1) - { - string text2 = string.Empty; - foreach (Type type2 in array2) - { - if (text2 != string.Empty) - { - text2 += ", "; - } - text2 = ((type2 != null) ? (text2 + type2.Name) : (text2 + "null")); - } - if (num6 == 0) - { - if (num7 == 0) - { - Debug.LogError("PhotonView with ID " + num + " has no method \"" + text + "\" marked with the [PunRPC](C#) or @PunRPC(JS) property! Args: " + text2); - } - else - { - Debug.LogError("PhotonView with ID " + num + " has no method \"" + text + "\" that takes " + array2.Length + " argument(s): " + text2); - } - } - else - { - Debug.LogError("PhotonView with ID " + num + " has " + num6 + " methods \"" + text + "\" that takes " + array2.Length + " argument(s): " + text2 + ". Should be just one?"); - } - } - } - } - } - } - - private bool CheckTypeMatch(ParameterInfo[] methodParameters, Type[] callParameterTypes) - { - if (methodParameters.Length < callParameterTypes.Length) - { - return false; - } - for (int i = 0; i < callParameterTypes.Length; i++) - { - Type parameterType = methodParameters[i].ParameterType; - if (callParameterTypes[i] != null && !parameterType.IsAssignableFrom(callParameterTypes[i]) && (!parameterType.IsEnum || !Enum.GetUnderlyingType(parameterType).IsAssignableFrom(callParameterTypes[i]))) - { - return false; - } - } - return true; - } - - internal ExitGames.Client.Photon.Hashtable SendInstantiate(string prefabName, Vector3 position, Quaternion rotation, int group, int[] viewIDs, object[] data, bool isGlobalObject) - { - int num = viewIDs[0]; - ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(); - hashtable[(byte)0] = prefabName; - if (position != Vector3.zero) - { - hashtable[(byte)1] = position; - } - if (rotation != Quaternion.identity) - { - hashtable[(byte)2] = rotation; - } - if (group != 0) - { - hashtable[(byte)3] = group; - } - if (viewIDs.Length > 1) - { - hashtable[(byte)4] = viewIDs; - } - if (data != null) - { - hashtable[(byte)5] = data; - } - if (currentLevelPrefix > 0) - { - hashtable[(byte)8] = currentLevelPrefix; - } - hashtable[(byte)6] = PhotonNetwork.ServerTimestamp; - hashtable[(byte)7] = num; - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.CachingOption = ((!isGlobalObject) ? EventCaching.AddToRoomCache : EventCaching.AddToRoomCacheGlobal); - OpRaiseEvent(202, hashtable, sendReliable: true, raiseEventOptions); - return hashtable; - } - - internal GameObject DoInstantiate(ExitGames.Client.Photon.Hashtable evData, PhotonPlayer photonPlayer, GameObject resourceGameObject) - { - string text = (string)evData[(byte)0]; - int timestamp = (int)evData[(byte)6]; - int num = (int)evData[(byte)7]; - Vector3 position = (!evData.ContainsKey((byte)1)) ? Vector3.zero : ((Vector3)evData[(byte)1]); - Quaternion rotation = Quaternion.identity; - if (evData.ContainsKey((byte)2)) - { - rotation = (Quaternion)evData[(byte)2]; - } - int num2 = 0; - if (evData.ContainsKey((byte)3)) - { - num2 = (int)evData[(byte)3]; - } - short prefix = 0; - if (evData.ContainsKey((byte)8)) - { - prefix = (short)evData[(byte)8]; - } - int[] array = (!evData.ContainsKey((byte)4)) ? new int[1] - { - num - } : ((int[])evData[(byte)4]); - object[] array2 = (!evData.ContainsKey((byte)5)) ? null : ((object[])evData[(byte)5]); - if (num2 != 0 && !allowedReceivingGroups.Contains(num2)) - { - return null; - } - if (ObjectPool != null) - { - GameObject gameObject = ObjectPool.Instantiate(text, position, rotation); - PhotonView[] photonViewsInChildren = gameObject.GetPhotonViewsInChildren(); - if (photonViewsInChildren.Length != array.Length) - { - throw new Exception("Error in Instantiation! The resource's PhotonView count is not the same as in incoming data."); - } - for (int i = 0; i < photonViewsInChildren.Length; i++) - { - photonViewsInChildren[i].didAwake = false; - photonViewsInChildren[i].viewID = 0; - photonViewsInChildren[i].prefix = prefix; - photonViewsInChildren[i].instantiationId = num; - photonViewsInChildren[i].isRuntimeInstantiated = true; - photonViewsInChildren[i].instantiationDataField = array2; - photonViewsInChildren[i].didAwake = true; - photonViewsInChildren[i].viewID = array[i]; - } - gameObject.SendMessage(OnPhotonInstantiateString, new PhotonMessageInfo(photonPlayer, timestamp, null), SendMessageOptions.DontRequireReceiver); - return gameObject; - } - if (resourceGameObject == null) - { - if (!UsePrefabCache || !PrefabCache.TryGetValue(text, out resourceGameObject)) - { - resourceGameObject = (GameObject)Resources.Load(text, typeof(GameObject)); - if (UsePrefabCache) - { - PrefabCache.Add(text, resourceGameObject); - } - } - if (resourceGameObject == null) - { - Debug.LogError("PhotonNetwork error: Could not Instantiate the prefab [" + text + "]. Please verify you have this gameobject in a Resources folder."); - return null; - } - } - PhotonView[] photonViewsInChildren2 = resourceGameObject.GetPhotonViewsInChildren(); - if (photonViewsInChildren2.Length != array.Length) - { - throw new Exception("Error in Instantiation! The resource's PhotonView count is not the same as in incoming data."); - } - for (int j = 0; j < array.Length; j++) - { - photonViewsInChildren2[j].viewID = array[j]; - photonViewsInChildren2[j].prefix = prefix; - photonViewsInChildren2[j].instantiationId = num; - photonViewsInChildren2[j].isRuntimeInstantiated = true; - } - StoreInstantiationData(num, array2); - GameObject gameObject2 = UnityEngine.Object.Instantiate(resourceGameObject, position, rotation); - for (int k = 0; k < array.Length; k++) - { - photonViewsInChildren2[k].viewID = 0; - photonViewsInChildren2[k].prefix = -1; - photonViewsInChildren2[k].prefixBackup = -1; - photonViewsInChildren2[k].instantiationId = -1; - photonViewsInChildren2[k].isRuntimeInstantiated = false; - } - RemoveInstantiationData(num); - gameObject2.SendMessage(OnPhotonInstantiateString, new PhotonMessageInfo(photonPlayer, timestamp, null), SendMessageOptions.DontRequireReceiver); - return gameObject2; - } - - private void StoreInstantiationData(int instantiationId, object[] instantiationData) - { - tempInstantiationData[instantiationId] = instantiationData; - } - - public object[] FetchInstantiationData(int instantiationId) - { - object[] value = null; - if (instantiationId == 0) - { - return null; - } - tempInstantiationData.TryGetValue(instantiationId, out value); - return value; - } - - private void RemoveInstantiationData(int instantiationId) - { - tempInstantiationData.Remove(instantiationId); - } - - public void DestroyPlayerObjects(int playerId, bool localOnly) - { - if (playerId <= 0) - { - Debug.LogError("Failed to Destroy objects of playerId: " + playerId); - } - else - { - if (!localOnly) - { - OpRemoveFromServerInstantiationsOfPlayer(playerId); - OpCleanRpcBuffer(playerId); - SendDestroyOfPlayer(playerId); - } - HashSet hashSet = new HashSet(); - foreach (PhotonView value in photonViewList.Values) - { - if (value != null && value.CreatorActorNr == playerId) - { - hashSet.Add(value.gameObject); - } - } - foreach (GameObject item in hashSet) - { - RemoveInstantiatedGO(item, localOnly: true); - } - foreach (PhotonView value2 in photonViewList.Values) - { - if (value2.ownerId == playerId) - { - value2.ownerId = value2.CreatorActorNr; - } - } - } - } - - public void DestroyAll(bool localOnly) - { - if (!localOnly) - { - OpRemoveCompleteCache(); - SendDestroyOfAll(); - } - LocalCleanupAnythingInstantiated(destroyInstantiatedGameObjects: true); - } - - protected internal void RemoveInstantiatedGO(GameObject go, bool localOnly) - { - if (go == null) - { - Debug.LogError("Failed to 'network-remove' GameObject because it's null."); - } - else - { - PhotonView[] componentsInChildren = go.GetComponentsInChildren(includeInactive: true); - if (componentsInChildren == null || componentsInChildren.Length <= 0) - { - Debug.LogError("Failed to 'network-remove' GameObject because has no PhotonView components: " + go); - } - else - { - PhotonView photonView = componentsInChildren[0]; - int creatorActorNr = photonView.CreatorActorNr; - int instantiationId = photonView.instantiationId; - if (!localOnly) - { - if (!photonView.isMine) - { - Debug.LogError("Failed to 'network-remove' GameObject. Client is neither owner nor masterClient taking over for owner who left: " + photonView); - return; - } - if (instantiationId < 1) - { - Debug.LogError("Failed to 'network-remove' GameObject because it is missing a valid InstantiationId on view: " + photonView + ". Not Destroying GameObject or PhotonViews!"); - return; - } - } - if (!localOnly) - { - ServerCleanInstantiateAndDestroy(instantiationId, creatorActorNr, photonView.isRuntimeInstantiated); - } - for (int num = componentsInChildren.Length - 1; num >= 0; num--) - { - PhotonView photonView2 = componentsInChildren[num]; - if (!(photonView2 == null)) - { - if (photonView2.instantiationId >= 1) - { - LocalCleanPhotonView(photonView2); - } - if (!localOnly) - { - OpCleanRpcBuffer(photonView2); - } - } - } - if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) - { - Debug.Log("Network destroy Instantiated GO: " + go.name); - } - if (ObjectPool != null) - { - PhotonView[] photonViewsInChildren = go.GetPhotonViewsInChildren(); - for (int i = 0; i < photonViewsInChildren.Length; i++) - { - photonViewsInChildren[i].viewID = 0; - } - ObjectPool.Destroy(go); - } - else - { - UnityEngine.Object.Destroy(go); - } - } - } - } - - private void ServerCleanInstantiateAndDestroy(int instantiateId, int creatorId, bool isRuntimeInstantiated) - { - ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(); - hashtable[(byte)7] = instantiateId; - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.CachingOption = EventCaching.RemoveFromRoomCache; - raiseEventOptions.TargetActors = new int[1] - { - creatorId - }; - RaiseEventOptions raiseEventOptions2 = raiseEventOptions; - OpRaiseEvent(202, hashtable, sendReliable: true, raiseEventOptions2); - ExitGames.Client.Photon.Hashtable hashtable2 = new ExitGames.Client.Photon.Hashtable(); - hashtable2[(byte)0] = instantiateId; - raiseEventOptions2 = null; - if (!isRuntimeInstantiated) - { - raiseEventOptions2 = new RaiseEventOptions(); - raiseEventOptions2.CachingOption = EventCaching.AddToRoomCacheGlobal; - Debug.Log("Destroying GO as global. ID: " + instantiateId); - } - OpRaiseEvent(204, hashtable2, sendReliable: true, raiseEventOptions2); - } - - private void SendDestroyOfPlayer(int actorNr) - { - ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(); - hashtable[(byte)0] = actorNr; - OpRaiseEvent(207, hashtable, sendReliable: true, null); - } - - private void SendDestroyOfAll() - { - ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(); - hashtable[(byte)0] = -1; - OpRaiseEvent(207, hashtable, sendReliable: true, null); - } - - private void OpRemoveFromServerInstantiationsOfPlayer(int actorNr) - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.CachingOption = EventCaching.RemoveFromRoomCache; - raiseEventOptions.TargetActors = new int[1] - { - actorNr - }; - RaiseEventOptions raiseEventOptions2 = raiseEventOptions; - OpRaiseEvent(202, null, sendReliable: true, raiseEventOptions2); - } - - protected internal void RequestOwnership(int viewID, int fromOwner) - { - Debug.Log("RequestOwnership(): " + viewID + " from: " + fromOwner + " Time: " + Environment.TickCount % 1000); - OpRaiseEvent(209, new int[2] - { - viewID, - fromOwner - }, sendReliable: true, new RaiseEventOptions - { - Receivers = ReceiverGroup.All - }); - } - - protected internal void TransferOwnership(int viewID, int playerID) - { - Debug.Log("TransferOwnership() view " + viewID + " to: " + playerID + " Time: " + Environment.TickCount % 1000); - OpRaiseEvent(210, new int[2] - { - viewID, - playerID - }, sendReliable: true, new RaiseEventOptions - { - Receivers = ReceiverGroup.All - }); - } - - public bool LocalCleanPhotonView(PhotonView view) - { - view.removedFromLocalViewList = true; - return photonViewList.Remove(view.viewID); - } - - public PhotonView GetPhotonView(int viewID) - { - PhotonView value = null; - photonViewList.TryGetValue(viewID, out value); - if (value == null) - { - PhotonView[] array = UnityEngine.Object.FindObjectsOfType(typeof(PhotonView)) as PhotonView[]; - foreach (PhotonView photonView in array) - { - if (photonView.viewID == viewID) - { - if (photonView.didAwake) - { - Debug.LogWarning("Had to lookup view that wasn't in photonViewList: " + photonView); - } - return photonView; - } - } - } - return value; - } - - public void RegisterPhotonView(PhotonView netView) - { - if (!Application.isPlaying) - { - photonViewList = new Dictionary(); - } - else if (netView.viewID == 0) - { - Debug.Log("PhotonView register is ignored, because viewID is 0. No id assigned yet to: " + netView); - } - else - { - PhotonView value = null; - if (photonViewList.TryGetValue(netView.viewID, out value)) - { - if (!(netView != value)) - { - return; - } - Debug.LogError($"PhotonView ID duplicate found: {netView.viewID}. New: {netView} old: {value}. Maybe one wasn't destroyed on scene load?! Check for 'DontDestroyOnLoad'. Destroying old entry, adding new."); - RemoveInstantiatedGO(value.gameObject, localOnly: true); - } - photonViewList.Add(netView.viewID, netView); - if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) - { - Debug.Log("Registered PhotonView: " + netView.viewID); - } - } - } - - public void OpCleanRpcBuffer(int actorNumber) - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.CachingOption = EventCaching.RemoveFromRoomCache; - raiseEventOptions.TargetActors = new int[1] - { - actorNumber - }; - RaiseEventOptions raiseEventOptions2 = raiseEventOptions; - OpRaiseEvent(200, null, sendReliable: true, raiseEventOptions2); - } - - public void OpRemoveCompleteCacheOfPlayer(int actorNumber) - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.CachingOption = EventCaching.RemoveFromRoomCache; - raiseEventOptions.TargetActors = new int[1] - { - actorNumber - }; - RaiseEventOptions raiseEventOptions2 = raiseEventOptions; - OpRaiseEvent(0, null, sendReliable: true, raiseEventOptions2); - } - - public void OpRemoveCompleteCache() - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.CachingOption = EventCaching.RemoveFromRoomCache; - raiseEventOptions.Receivers = ReceiverGroup.MasterClient; - RaiseEventOptions raiseEventOptions2 = raiseEventOptions; - OpRaiseEvent(0, null, sendReliable: true, raiseEventOptions2); - } - - private void RemoveCacheOfLeftPlayers() - { - Dictionary dictionary = new Dictionary(); - dictionary[244] = (byte)0; - dictionary[247] = (byte)7; - OpCustom(253, dictionary, sendReliable: true, 0); - } - - public void CleanRpcBufferIfMine(PhotonView view) - { - if (view.ownerId != LocalPlayer.ID && !LocalPlayer.IsMasterClient) - { - Debug.LogError("Cannot remove cached RPCs on a PhotonView thats not ours! " + view.owner + " scene: " + view.isSceneView); - } - else - { - OpCleanRpcBuffer(view); - } - } - - public void OpCleanRpcBuffer(PhotonView view) - { - ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(); - hashtable[(byte)0] = view.viewID; - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.CachingOption = EventCaching.RemoveFromRoomCache; - RaiseEventOptions raiseEventOptions2 = raiseEventOptions; - OpRaiseEvent(200, hashtable, sendReliable: true, raiseEventOptions2); - } - - public void RemoveRPCsInGroup(int group) - { - foreach (PhotonView value in photonViewList.Values) - { - if (value.group == group) - { - CleanRpcBufferIfMine(value); - } - } - } - - public void SetLevelPrefix(short prefix) - { - currentLevelPrefix = prefix; - } - - internal void RPC(PhotonView view, string methodName, PhotonTargets target, PhotonPlayer player, bool encrypt, params object[] parameters) - { - if (!blockSendingGroups.Contains(view.group)) - { - if (view.viewID < 1) - { - Debug.LogError("Illegal view ID:" + view.viewID + " method: " + methodName + " GO:" + view.gameObject.name); - } - if (PhotonNetwork.logLevel >= PhotonLogLevel.Full) - { - Debug.Log("Sending RPC \"" + methodName + "\" to target: " + target + " or player:" + player + "."); - } - ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(); - hashtable[(byte)0] = view.viewID; - if (view.prefix > 0) - { - hashtable[(byte)1] = (short)view.prefix; - } - hashtable[(byte)2] = PhotonNetwork.ServerTimestamp; - int value = 0; - if (rpcShortcuts.TryGetValue(methodName, out value)) - { - hashtable[(byte)5] = (byte)value; - } - else - { - hashtable[(byte)3] = methodName; - } - if (parameters != null && parameters.Length > 0) - { - hashtable[(byte)4] = parameters; - } - if (player != null) - { - if (LocalPlayer.ID == player.ID) - { - ExecuteRpc(hashtable, player); - } - else - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.TargetActors = new int[1] - { - player.ID - }; - raiseEventOptions.Encrypt = encrypt; - RaiseEventOptions raiseEventOptions2 = raiseEventOptions; - OpRaiseEvent(200, hashtable, sendReliable: true, raiseEventOptions2); - } - } - else - { - switch (target) - { - case PhotonTargets.All: - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.InterestGroup = (byte)view.group; - raiseEventOptions.Encrypt = encrypt; - RaiseEventOptions raiseEventOptions9 = raiseEventOptions; - OpRaiseEvent(200, hashtable, sendReliable: true, raiseEventOptions9); - ExecuteRpc(hashtable, LocalPlayer); - break; - } - case PhotonTargets.Others: - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.InterestGroup = (byte)view.group; - raiseEventOptions.Encrypt = encrypt; - RaiseEventOptions raiseEventOptions8 = raiseEventOptions; - OpRaiseEvent(200, hashtable, sendReliable: true, raiseEventOptions8); - break; - } - case PhotonTargets.AllBuffered: - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.CachingOption = EventCaching.AddToRoomCache; - raiseEventOptions.Encrypt = encrypt; - RaiseEventOptions raiseEventOptions6 = raiseEventOptions; - OpRaiseEvent(200, hashtable, sendReliable: true, raiseEventOptions6); - ExecuteRpc(hashtable, LocalPlayer); - break; - } - case PhotonTargets.OthersBuffered: - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.CachingOption = EventCaching.AddToRoomCache; - raiseEventOptions.Encrypt = encrypt; - RaiseEventOptions raiseEventOptions4 = raiseEventOptions; - OpRaiseEvent(200, hashtable, sendReliable: true, raiseEventOptions4); - break; - } - case PhotonTargets.MasterClient: - if (mMasterClientId == LocalPlayer.ID) - { - ExecuteRpc(hashtable, LocalPlayer); - } - else - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.Receivers = ReceiverGroup.MasterClient; - raiseEventOptions.Encrypt = encrypt; - RaiseEventOptions raiseEventOptions7 = raiseEventOptions; - OpRaiseEvent(200, hashtable, sendReliable: true, raiseEventOptions7); - } - break; - case PhotonTargets.AllViaServer: - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.InterestGroup = (byte)view.group; - raiseEventOptions.Receivers = ReceiverGroup.All; - raiseEventOptions.Encrypt = encrypt; - RaiseEventOptions raiseEventOptions5 = raiseEventOptions; - OpRaiseEvent(200, hashtable, sendReliable: true, raiseEventOptions5); - if (PhotonNetwork.offlineMode) - { - ExecuteRpc(hashtable, LocalPlayer); - } - break; - } - case PhotonTargets.AllBufferedViaServer: - { - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - raiseEventOptions.InterestGroup = (byte)view.group; - raiseEventOptions.Receivers = ReceiverGroup.All; - raiseEventOptions.CachingOption = EventCaching.AddToRoomCache; - raiseEventOptions.Encrypt = encrypt; - RaiseEventOptions raiseEventOptions3 = raiseEventOptions; - OpRaiseEvent(200, hashtable, sendReliable: true, raiseEventOptions3); - if (PhotonNetwork.offlineMode) - { - ExecuteRpc(hashtable, LocalPlayer); - } - break; - } - default: - Debug.LogError("Unsupported target enum: " + target); - break; - } - } - } - } - - public void SetReceivingEnabled(int group, bool enabled) - { - if (group <= 0) - { - Debug.LogError("Error: PhotonNetwork.SetReceivingEnabled was called with an illegal group number: " + group + ". The group number should be at least 1."); - } - else if (enabled) - { - if (!allowedReceivingGroups.Contains(group)) - { - allowedReceivingGroups.Add(group); - byte[] groupsToAdd = new byte[1] - { - (byte)group - }; - OpChangeGroups(null, groupsToAdd); - } - } - else if (allowedReceivingGroups.Contains(group)) - { - allowedReceivingGroups.Remove(group); - byte[] groupsToRemove = new byte[1] - { - (byte)group - }; - OpChangeGroups(groupsToRemove, null); - } - } - - public void SetReceivingEnabled(int[] enableGroups, int[] disableGroups) - { - List list = new List(); - List list2 = new List(); - if (enableGroups != null) - { - foreach (int num in enableGroups) - { - if (num <= 0) - { - Debug.LogError("Error: PhotonNetwork.SetReceivingEnabled was called with an illegal group number: " + num + ". The group number should be at least 1."); - } - else if (!allowedReceivingGroups.Contains(num)) - { - allowedReceivingGroups.Add(num); - list.Add((byte)num); - } - } - } - if (disableGroups != null) - { - foreach (int num2 in disableGroups) - { - if (num2 <= 0) - { - Debug.LogError("Error: PhotonNetwork.SetReceivingEnabled was called with an illegal group number: " + num2 + ". The group number should be at least 1."); - } - else if (list.Contains((byte)num2)) - { - Debug.LogError("Error: PhotonNetwork.SetReceivingEnabled disableGroups contains a group that is also in the enableGroups: " + num2 + "."); - } - else if (allowedReceivingGroups.Contains(num2)) - { - allowedReceivingGroups.Remove(num2); - list2.Add((byte)num2); - } - } - } - OpChangeGroups((list2.Count <= 0) ? null : list2.ToArray(), (list.Count <= 0) ? null : list.ToArray()); - } - - public void SetSendingEnabled(int group, bool enabled) - { - if (!enabled) - { - blockSendingGroups.Add(group); - } - else - { - blockSendingGroups.Remove(group); - } - } - - public void SetSendingEnabled(int[] enableGroups, int[] disableGroups) - { - if (enableGroups != null) - { - foreach (int item in enableGroups) - { - if (blockSendingGroups.Contains(item)) - { - blockSendingGroups.Remove(item); - } - } - } - if (disableGroups != null) - { - foreach (int item2 in disableGroups) - { - if (!blockSendingGroups.Contains(item2)) - { - blockSendingGroups.Add(item2); - } - } - } - } - - public void NewSceneLoaded() - { - if (loadingLevelAndPausedNetwork) - { - loadingLevelAndPausedNetwork = false; - PhotonNetwork.isMessageQueueRunning = true; - } - List list = new List(); - foreach (KeyValuePair photonView in photonViewList) - { - PhotonView value = photonView.Value; - if (value == null) - { - list.Add(photonView.Key); - } - } - for (int i = 0; i < list.Count; i++) - { - int key = list[i]; - photonViewList.Remove(key); - } - if (list.Count > 0 && PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log("New level loaded. Removed " + list.Count + " scene view IDs from last level."); - } - } - - public void RunViewUpdate() - { - if (PhotonNetwork.connected && !PhotonNetwork.offlineMode && mActors != null && mActors.Count > 1) - { - int num = 0; - RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); - foreach (PhotonView value3 in photonViewList.Values) - { - if (value3.synchronization != 0 && value3.isMine && value3.gameObject.activeInHierarchy && !blockSendingGroups.Contains(value3.group)) - { - object[] array = OnSerializeWrite(value3); - if (array != null) - { - if (value3.synchronization == ViewSynchronization.ReliableDeltaCompressed || value3.mixedModeIsReliable) - { - ExitGames.Client.Photon.Hashtable value = null; - if (!dataPerGroupReliable.TryGetValue(value3.group, out value)) - { - value = new ExitGames.Client.Photon.Hashtable(ObjectsInOneUpdate); - dataPerGroupReliable[value3.group] = value; - } - value.Add((byte)(value.Count + 10), array); - num++; - if (value.Count >= ObjectsInOneUpdate) - { - num -= value.Count; - raiseEventOptions.InterestGroup = (byte)value3.group; - value[(byte)0] = PhotonNetwork.ServerTimestamp; - if (currentLevelPrefix >= 0) - { - value[(byte)1] = currentLevelPrefix; - } - OpRaiseEvent(206, value, sendReliable: true, raiseEventOptions); - value.Clear(); - } - } - else - { - ExitGames.Client.Photon.Hashtable value2 = null; - if (!dataPerGroupUnreliable.TryGetValue(value3.group, out value2)) - { - value2 = new ExitGames.Client.Photon.Hashtable(ObjectsInOneUpdate); - dataPerGroupUnreliable[value3.group] = value2; - } - value2.Add((byte)(value2.Count + 10), array); - num++; - if (value2.Count >= ObjectsInOneUpdate) - { - num -= value2.Count; - raiseEventOptions.InterestGroup = (byte)value3.group; - value2[(byte)0] = PhotonNetwork.ServerTimestamp; - if (currentLevelPrefix >= 0) - { - value2[(byte)1] = currentLevelPrefix; - } - OpRaiseEvent(201, value2, sendReliable: false, raiseEventOptions); - value2.Clear(); - } - } - } - } - } - if (num != 0) - { - foreach (int key in dataPerGroupReliable.Keys) - { - raiseEventOptions.InterestGroup = (byte)key; - ExitGames.Client.Photon.Hashtable hashtable = dataPerGroupReliable[key]; - if (hashtable.Count != 0) - { - hashtable[(byte)0] = PhotonNetwork.ServerTimestamp; - if (currentLevelPrefix >= 0) - { - hashtable[(byte)1] = currentLevelPrefix; - } - OpRaiseEvent(206, hashtable, sendReliable: true, raiseEventOptions); - hashtable.Clear(); - } - } - foreach (int key2 in dataPerGroupUnreliable.Keys) - { - raiseEventOptions.InterestGroup = (byte)key2; - ExitGames.Client.Photon.Hashtable hashtable2 = dataPerGroupUnreliable[key2]; - if (hashtable2.Count != 0) - { - hashtable2[(byte)0] = PhotonNetwork.ServerTimestamp; - if (currentLevelPrefix >= 0) - { - hashtable2[(byte)1] = currentLevelPrefix; - } - OpRaiseEvent(201, hashtable2, sendReliable: false, raiseEventOptions); - hashtable2.Clear(); - } - } - } - } - } - - private object[] OnSerializeWrite(PhotonView view) - { - if (view.synchronization == ViewSynchronization.Off) - { - return null; - } - PhotonMessageInfo info = new PhotonMessageInfo(LocalPlayer, PhotonNetwork.ServerTimestamp, view); - pStream.ResetWriteStream(); - pStream.SendNext(view.viewID); - pStream.SendNext(false); - pStream.SendNext(null); - view.SerializeView(pStream, info); - if (pStream.Count <= 3) - { - return null; - } - if (view.synchronization == ViewSynchronization.Unreliable) - { - return pStream.ToArray(); - } - object[] array = pStream.ToArray(); - if (view.synchronization == ViewSynchronization.UnreliableOnChange) - { - if (AlmostEquals(array, view.lastOnSerializeDataSent)) - { - if (view.mixedModeIsReliable) - { - return null; - } - view.mixedModeIsReliable = true; - view.lastOnSerializeDataSent = array; - } - else - { - view.mixedModeIsReliable = false; - view.lastOnSerializeDataSent = array; - } - return array; - } - if (view.synchronization == ViewSynchronization.ReliableDeltaCompressed) - { - object[] result = DeltaCompressionWrite(view.lastOnSerializeDataSent, array); - view.lastOnSerializeDataSent = array; - return result; - } - return null; - } - - private void OnSerializeRead(object[] data, PhotonPlayer sender, int networkTime, short correctPrefix) - { - int num = (int)data[0]; - PhotonView photonView = GetPhotonView(num); - if (photonView == null) - { - Debug.LogWarning("Received OnSerialization for view ID " + num + ". We have no such PhotonView! Ignored this if you're leaving a room. State: " + State); - } - else if (photonView.prefix > 0 && correctPrefix != photonView.prefix) - { - Debug.LogError("Received OnSerialization for view ID " + num + " with prefix " + correctPrefix + ". Our prefix is " + photonView.prefix); - } - else if (photonView.group == 0 || allowedReceivingGroups.Contains(photonView.group)) - { - if (photonView.synchronization == ViewSynchronization.ReliableDeltaCompressed) - { - object[] array = DeltaCompressionRead(photonView.lastOnSerializeDataReceived, data); - if (array == null) - { - if (PhotonNetwork.logLevel >= PhotonLogLevel.Informational) - { - Debug.Log("Skipping packet for " + photonView.name + " [" + photonView.viewID + "] as we haven't received a full packet for delta compression yet. This is OK if it happens for the first few frames after joining a game."); - } - return; - } - photonView.lastOnSerializeDataReceived = array; - data = array; - } - if (sender.ID != photonView.ownerId && (!photonView.OwnerShipWasTransfered || photonView.ownerId == 0) && photonView.currentMasterID == -1) - { - photonView.ownerId = sender.ID; - } - readStream.SetReadStream(data, 3); - photonView.DeserializeView(info: new PhotonMessageInfo(sender, networkTime, photonView), stream: readStream); - } - } - - private object[] DeltaCompressionWrite(object[] previousContent, object[] currentContent) - { - if (currentContent == null || previousContent == null || previousContent.Length != currentContent.Length) - { - return currentContent; - } - if (currentContent.Length <= 3) - { - return null; - } - previousContent[1] = false; - int num = 0; - Queue queue = null; - for (int i = 3; i < currentContent.Length; i++) - { - object obj = currentContent[i]; - object two = previousContent[i]; - if (AlmostEquals(obj, two)) - { - num++; - previousContent[i] = null; - } - else - { - previousContent[i] = obj; - if (obj == null) - { - if (queue == null) - { - queue = new Queue(currentContent.Length); - } - queue.Enqueue(i); - } - } - } - if (num > 0) - { - if (num == currentContent.Length - 3) - { - return null; - } - previousContent[1] = true; - if (queue != null) - { - previousContent[2] = queue.ToArray(); - } - } - previousContent[0] = currentContent[0]; - return previousContent; - } - - private object[] DeltaCompressionRead(object[] lastOnSerializeDataReceived, object[] incomingData) - { - if (!(bool)incomingData[1]) - { - return incomingData; - } - if (lastOnSerializeDataReceived == null) - { - return null; - } - int[] array = incomingData[2] as int[]; - for (int i = 3; i < incomingData.Length; i++) - { - if ((array == null || !array.Contains(i)) && incomingData[i] == null) - { - object obj = incomingData[i] = lastOnSerializeDataReceived[i]; - } - } - return incomingData; - } - - private bool AlmostEquals(object[] lastData, object[] currentContent) - { - if (lastData == null && currentContent == null) - { - return true; - } - if (lastData == null || currentContent == null || lastData.Length != currentContent.Length) - { - return false; - } - for (int i = 0; i < currentContent.Length; i++) - { - object one = currentContent[i]; - object two = lastData[i]; - if (!AlmostEquals(one, two)) - { - return false; - } - } - return true; - } - - private bool AlmostEquals(object one, object two) - { - if (one == null || two == null) - { - return one == null && two == null; - } - if (!one.Equals(two)) - { - if (one is Vector3) - { - Vector3 target = (Vector3)one; - Vector3 second = (Vector3)two; - if (target.AlmostEquals(second, PhotonNetwork.precisionForVectorSynchronization)) - { - return true; - } - } - else if (one is Vector2) - { - Vector2 target2 = (Vector2)one; - Vector2 second2 = (Vector2)two; - if (target2.AlmostEquals(second2, PhotonNetwork.precisionForVectorSynchronization)) - { - return true; - } - } - else if (one is Quaternion) - { - Quaternion target3 = (Quaternion)one; - Quaternion second3 = (Quaternion)two; - if (target3.AlmostEquals(second3, PhotonNetwork.precisionForQuaternionSynchronization)) - { - return true; - } - } - else if (one is float) - { - float target4 = (float)one; - float second4 = (float)two; - if (target4.AlmostEquals(second4, PhotonNetwork.precisionForFloatSynchronization)) - { - return true; - } - } - return false; - } - return true; - } - - protected internal static bool GetMethod(MonoBehaviour monob, string methodType, out MethodInfo mi) - { - mi = null; - if (monob == null || string.IsNullOrEmpty(methodType)) - { - return false; - } - List methods = SupportClass.GetMethods(monob.GetType(), null); - for (int i = 0; i < methods.Count; i++) - { - MethodInfo methodInfo = methods[i]; - if (methodInfo.Name.Equals(methodType)) - { - mi = methodInfo; - return true; - } - } - return false; - } - - protected internal void LoadLevelIfSynced() - { - if (PhotonNetwork.automaticallySyncScene && !PhotonNetwork.isMasterClient && PhotonNetwork.room != null && PhotonNetwork.room.CustomProperties.ContainsKey("curScn")) - { - object obj = PhotonNetwork.room.CustomProperties["curScn"]; - if (obj is int) - { - if (SceneManagerHelper.ActiveSceneBuildIndex != (int)obj) - { - PhotonNetwork.LoadLevel((int)obj); - } - } - else if (obj is string && SceneManagerHelper.ActiveSceneName != (string)obj) - { - PhotonNetwork.LoadLevel((string)obj); - } - } - } - - protected internal void SetLevelInPropsIfSynced(object levelId) - { - if (PhotonNetwork.automaticallySyncScene && PhotonNetwork.isMasterClient && PhotonNetwork.room != null) - { - if (levelId == null) - { - Debug.LogError("Parameter levelId can't be null!"); - } - else - { - if (PhotonNetwork.room.CustomProperties.ContainsKey("curScn")) - { - object obj = PhotonNetwork.room.CustomProperties["curScn"]; - if ((obj is int && SceneManagerHelper.ActiveSceneBuildIndex == (int)obj) || (obj is string && SceneManagerHelper.ActiveSceneName != null && SceneManagerHelper.ActiveSceneName.Equals((string)obj))) - { - return; - } - } - ExitGames.Client.Photon.Hashtable hashtable = new ExitGames.Client.Photon.Hashtable(); - if (levelId is int) - { - hashtable["curScn"] = (int)levelId; - } - else if (levelId is string) - { - hashtable["curScn"] = (string)levelId; - } - else - { - Debug.LogError("Parameter levelId must be int or string!"); - } - PhotonNetwork.room.SetCustomProperties(hashtable); - SendOutgoingCommands(); - } - } - } - - public void SetApp(string appId, string gameVersion) - { - AppId = appId.Trim(); - if (!string.IsNullOrEmpty(gameVersion)) - { - PhotonNetwork.gameVersion = gameVersion.Trim(); - } - } - - public bool WebRpc(string uriPath, object parameters) - { - Dictionary dictionary = new Dictionary(); - dictionary.Add(209, uriPath); - dictionary.Add(208, parameters); - return OpCustom(219, dictionary, sendReliable: true); - } -} diff --git a/Assets/Scripts/ThirdPersonController.cs b/Assets/Scripts/ThirdPersonController.cs deleted file mode 100644 index 1e9ea04..0000000 --- a/Assets/Scripts/ThirdPersonController.cs +++ /dev/null @@ -1,413 +0,0 @@ -using System; -using UnityEngine; - -[Serializable] -[RequireComponent(typeof(CharacterController))] -public class ThirdPersonController : MonoBehaviour -{ - public AnimationClip idleAnimation; - - public AnimationClip walkAnimation; - - public AnimationClip runAnimation; - - public AnimationClip jumpPoseAnimation; - - public float walkMaxAnimationSpeed; - - public float trotMaxAnimationSpeed; - - public float runMaxAnimationSpeed; - - public float jumpAnimationSpeed; - - public float landAnimationSpeed; - - private Animation _animation; - - private CharacterState _characterState; - - public float walkSpeed; - - public float trotSpeed; - - public float runSpeed; - - public float inAirControlAcceleration; - - public float jumpHeight; - - public float gravity; - - public float speedSmoothing; - - public float rotateSpeed; - - public float trotAfterSeconds; - - public bool canJump; - - private float jumpRepeatTime; - - private float jumpTimeout; - - private float groundedTimeout; - - private float lockCameraTimer; - - private Vector3 moveDirection; - - private float verticalSpeed; - - private float moveSpeed; - - private CollisionFlags collisionFlags; - - private bool jumping; - - private bool jumpingReachedApex; - - private bool movingBack; - - private bool isMoving; - - private float walkTimeStart; - - private float lastJumpButtonTime; - - private float lastJumpTime; - - private float lastJumpStartHeight; - - private Vector3 inAirVelocity; - - private float lastGroundedTime; - - private bool isControllable; - - public ThirdPersonController() - { - walkMaxAnimationSpeed = 0.75f; - trotMaxAnimationSpeed = 1f; - runMaxAnimationSpeed = 1f; - jumpAnimationSpeed = 1.15f; - landAnimationSpeed = 1f; - walkSpeed = 2f; - trotSpeed = 4f; - runSpeed = 6f; - inAirControlAcceleration = 3f; - jumpHeight = 0.5f; - gravity = 20f; - speedSmoothing = 10f; - rotateSpeed = 500f; - trotAfterSeconds = 3f; - canJump = true; - jumpRepeatTime = 0.05f; - jumpTimeout = 0.15f; - groundedTimeout = 0.25f; - moveDirection = Vector3.zero; - lastJumpButtonTime = -10f; - lastJumpTime = -1f; - inAirVelocity = Vector3.zero; - isControllable = true; - } - - public override void Awake() - { - moveDirection = transform.TransformDirection(Vector3.forward); - _animation = (Animation)GetComponent(typeof(Animation)); - if (!(bool)_animation) - { - Debug.Log("The character you would like to control doesn't have animations. Moving her might look weird."); - } - if (!(bool)idleAnimation) - { - _animation = null; - Debug.Log("No idle animation found. Turning off animations."); - } - if (!(bool)walkAnimation) - { - _animation = null; - Debug.Log("No walk animation found. Turning off animations."); - } - if (!(bool)runAnimation) - { - _animation = null; - Debug.Log("No run animation found. Turning off animations."); - } - if (!(bool)jumpPoseAnimation && canJump) - { - _animation = null; - Debug.Log("No jump animation found and the character has canJump enabled. Turning off animations."); - } - } - - public override void UpdateSmoothedMovementDirection() - { - Transform transform = Camera.main.transform; - bool flag = IsGrounded(); - Vector3 a = transform.TransformDirection(Vector3.forward); - a.y = 0f; - a = a.normalized; - Vector3 a2 = new Vector3(a.z, 0f, 0f - a.x); - float axisRaw = Input.GetAxisRaw("Vertical"); - float axisRaw2 = Input.GetAxisRaw("Horizontal"); - if (!(axisRaw >= -0.2f)) - { - movingBack = true; - } - else - { - movingBack = false; - } - bool flag2 = isMoving; - int num = (Mathf.Abs(axisRaw2) > 0.1f) ? 1 : 0; - if (num == 0) - { - num = ((Mathf.Abs(axisRaw) > 0.1f) ? 1 : 0); - } - isMoving = ((byte)num != 0); - Vector3 vector = axisRaw2 * a2 + axisRaw * a; - if (flag) - { - lockCameraTimer += Time.deltaTime; - if (isMoving != flag2) - { - lockCameraTimer = 0f; - } - if (vector != Vector3.zero) - { - if (!(moveSpeed >= walkSpeed * 0.9f) && flag) - { - moveDirection = vector.normalized; - } - else - { - moveDirection = Vector3.RotateTowards(moveDirection, vector, rotateSpeed * 0.0174532924f * Time.deltaTime, 1000f); - moveDirection = moveDirection.normalized; - } - } - float t = speedSmoothing * Time.deltaTime; - float num2 = Mathf.Min(vector.magnitude, 1f); - _characterState = CharacterState.Idle; - if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) - { - num2 *= runSpeed; - _characterState = CharacterState.Running; - } - else if (!(Time.time - trotAfterSeconds <= walkTimeStart)) - { - num2 *= trotSpeed; - _characterState = CharacterState.Trotting; - } - else - { - num2 *= walkSpeed; - _characterState = CharacterState.Walking; - } - moveSpeed = Mathf.Lerp(moveSpeed, num2, t); - if (!(moveSpeed >= walkSpeed * 0.3f)) - { - walkTimeStart = Time.time; - } - } - else - { - if (jumping) - { - lockCameraTimer = 0f; - } - if (isMoving) - { - inAirVelocity += vector.normalized * Time.deltaTime * inAirControlAcceleration; - } - } - } - - public override void ApplyJumping() - { - if (lastJumpTime + jumpRepeatTime <= Time.time && IsGrounded() && canJump && !(Time.time >= lastJumpButtonTime + jumpTimeout)) - { - verticalSpeed = CalculateJumpVerticalSpeed(jumpHeight); - SendMessage("DidJump", SendMessageOptions.DontRequireReceiver); - } - } - - public override void ApplyGravity() - { - if (isControllable) - { - bool button = Input.GetButton("Jump"); - if (jumping && !jumpingReachedApex && !(verticalSpeed > 0f)) - { - jumpingReachedApex = true; - SendMessage("DidJumpReachApex", SendMessageOptions.DontRequireReceiver); - } - if (IsGrounded()) - { - verticalSpeed = 0f; - } - else - { - verticalSpeed -= gravity * Time.deltaTime; - } - } - } - - public override float CalculateJumpVerticalSpeed(float targetJumpHeight) - { - return Mathf.Sqrt(2f * targetJumpHeight * gravity); - } - - public override void DidJump() - { - jumping = true; - jumpingReachedApex = false; - lastJumpTime = Time.time; - Vector3 position = transform.position; - lastJumpStartHeight = position.y; - lastJumpButtonTime = -10f; - _characterState = CharacterState.Jumping; - } - - public override void Update() - { - if (!isControllable) - { - Input.ResetInputAxes(); - } - if (Input.GetButtonDown("Jump")) - { - lastJumpButtonTime = Time.time; - } - UpdateSmoothedMovementDirection(); - ApplyGravity(); - ApplyJumping(); - Vector3 a = moveDirection * moveSpeed + new Vector3(0f, verticalSpeed, 0f) + inAirVelocity; - a *= Time.deltaTime; - CharacterController characterController = (CharacterController)GetComponent(typeof(CharacterController)); - collisionFlags = characterController.Move(a); - if ((bool)_animation) - { - if (_characterState == CharacterState.Jumping) - { - if (!jumpingReachedApex) - { - _animation[jumpPoseAnimation.name].speed = jumpAnimationSpeed; - _animation[jumpPoseAnimation.name].wrapMode = WrapMode.ClampForever; - _animation.CrossFade(jumpPoseAnimation.name); - } - else - { - _animation[jumpPoseAnimation.name].speed = 0f - landAnimationSpeed; - _animation[jumpPoseAnimation.name].wrapMode = WrapMode.ClampForever; - _animation.CrossFade(jumpPoseAnimation.name); - } - } - else if (!(characterController.velocity.sqrMagnitude >= 0.1f)) - { - _animation.CrossFade(idleAnimation.name); - } - else if (_characterState == CharacterState.Running) - { - _animation[runAnimation.name].speed = Mathf.Clamp(characterController.velocity.magnitude, 0f, runMaxAnimationSpeed); - _animation.CrossFade(runAnimation.name); - } - else if (_characterState == CharacterState.Trotting) - { - _animation[walkAnimation.name].speed = Mathf.Clamp(characterController.velocity.magnitude, 0f, trotMaxAnimationSpeed); - _animation.CrossFade(walkAnimation.name); - } - else if (_characterState == CharacterState.Walking) - { - _animation[walkAnimation.name].speed = Mathf.Clamp(characterController.velocity.magnitude, 0f, walkMaxAnimationSpeed); - _animation.CrossFade(walkAnimation.name); - } - } - if (IsGrounded()) - { - transform.rotation = Quaternion.LookRotation(moveDirection); - } - else - { - Vector3 forward = a; - forward.y = 0f; - if (!(forward.sqrMagnitude <= 0.001f)) - { - transform.rotation = Quaternion.LookRotation(forward); - } - } - if (IsGrounded()) - { - lastGroundedTime = Time.time; - inAirVelocity = Vector3.zero; - if (jumping) - { - jumping = false; - SendMessage("DidLand", SendMessageOptions.DontRequireReceiver); - } - } - } - - public override void OnControllerColliderHit(ControllerColliderHit hit) - { - Vector3 vector = hit.moveDirection; - if (vector.y <= 0.01f) - { - } - } - - public override float GetSpeed() - { - return moveSpeed; - } - - public override bool IsJumping() - { - return jumping; - } - - public override bool IsGrounded() - { - return (collisionFlags & CollisionFlags.Below) != CollisionFlags.None; - } - - public override Vector3 GetDirection() - { - return moveDirection; - } - - public override bool IsMovingBackwards() - { - return movingBack; - } - - public override float GetLockCameraTimer() - { - return lockCameraTimer; - } - - public override bool IsMoving() - { - return Mathf.Abs(Input.GetAxisRaw("Vertical")) + Mathf.Abs(Input.GetAxisRaw("Horizontal")) > 0.5f; - } - - public override bool HasJumpReachedApex() - { - return jumpingReachedApex; - } - - public override bool IsGroundedWithTimeout() - { - return lastGroundedTime + groundedTimeout > Time.time; - } - - public override void Reset() - { - gameObject.tag = "Player"; - } - - public override void Main() - { - } -} diff --git a/README.md b/README.md index 8ef8882..1e311af 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,17 @@ Free and Open-Source, just to show that once it's on the internet you can never get rid of it. + +## Dependencies + +This project requires the following modules: + + - RogoDigital.Libsync + - Spine + - AmplifyBloom + - GameDataEditor + - Photon Unity Networking + ## Building This project uses the 2018 version of Unity diff --git a/fie.csproj b/fie.csproj index 24529b5..aad9f67 100644 --- a/fie.csproj +++ b/fie.csproj @@ -27,31 +27,780 @@ true - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + @@ -79,6 +828,10 @@ packages\MoodkieSecurity.dll + + False + Assets\Plugins\Photon3Unity3D.dll + @@ -98,9 +851,6 @@ packages\UnityEngine.UI.dll - - packages\Photon3Unity3D.dll - packages\PlayMaker.dll diff --git a/packages.config b/packages.config deleted file mode 100644 index 142aeff..0000000 --- a/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/Unity3D.SDK.2018.4.11.1/.signature.p7s b/packages/Unity3D.SDK.2018.4.11.1/.signature.p7s deleted file mode 100644 index e536633..0000000 Binary files a/packages/Unity3D.SDK.2018.4.11.1/.signature.p7s and /dev/null differ diff --git a/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEditor.dll b/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEditor.dll deleted file mode 100644 index 4156cda..0000000 Binary files a/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEditor.dll and /dev/null differ diff --git a/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEditor.xml b/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEditor.xml deleted file mode 100644 index 4bc17f3..0000000 --- a/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEditor.xml +++ /dev/null @@ -1,43396 +0,0 @@ - - - - - UnityEditor - - - - The behavior in case of unhandled .NET exception. - - - - - Crash in case of unhandled .NET exception (Crash Report will be generated). - - - - - Silent exit in case of unhandled .NET exception (no Crash Report generated). - - - - - Editor API for the Unity Services editor feature. Normally UnityAds is enabled from the Services window, but if writing your own editor extension, this API can be used. - - - - - Global boolean for enabling or disabling the advertisement feature. - - - - - Controls if the advertisement system should be initialized immediately on startup. - - - - - Controls if testing advertisements are used instead of production advertisements. - - - - - Gets the game identifier specified for a runtime platform. - - - - The platform specific game identifier. - - - - - Gets the game identifier specified for a runtime platform. - - - - The platform specific game identifier. - - - - - Returns if a specific platform is enabled. - - - - Boolean for the platform. - - - - - Sets the game identifier for the specified platform. - - - - - - - Enable the specific platform. - - - - - - - Sets the game identifier for the specified platform. - - - - - - - Navigation mesh builder interface. - - - - - Returns true if an asynchronous build is still running. (UnityEditor) - - - - - Build the Navmesh. (UnityEditor) - - - - - Build the Navmesh Asyncronously. (UnityEditor) - - - - - Builds the combined navmesh for the contents of multiple Scenes. (UnityEditor) - - Array of paths to Scenes that are used for building the navmesh. - - - - Cancel Navmesh construction. (UnityEditor) See Also: NavMeshBuilder.BuildNavMeshAsync - - - - - Cancels an asynchronous update of the specified NavMesh data. (UnityEngine) See Also: NavMeshBuilder.UpdateNavMeshDataAsync. - - The data associated with asynchronous updating. - - - - Clear all Navmeshes. (UnityEditor) - - - - - Collects renderers or physics colliders, and terrains within a volume. (UnityEditor) - - The queried objects must overlap these bounds to be included in the results. - Specifies which layers are included in the query. - Which type of geometry to collect - e.g. physics colliders. - Area type to assign to results, unless modified by NavMeshMarkup. - List of markups which allows finer control over how objects are collected. - Results are selected only from the stage to which this scene belongs. - List where results are stored, the list is cleared at the beginning of the call. - - - - Collects renderers or physics colliders, and terrains within a transform hierarchy. (UnityEditor) - - If not null, consider only root and its children in the query; if null, includes everything loaded. - Specifies which layers are included in the query. - Which type of geometry to collect - e.g. physics colliders. - Area type to assign to results, unless modified by NavMeshMarkup. - List of markups which allows finer control over how objects are collected. - Results are selected only from the stage to which this scene belongs. - List where results are stored, the list is cleared at the beginning of the call. - - - - NavMesh utility functionality effective only in the Editor. - - - - - Displays in the Editor the precise intermediate data used during the build process of the specified NavMesh. - - NavMesh object for which debug data has been deliberately collected during the build process. - Bitmask that designates the types of data to show at one time. - - - - Represents the visualization state of the navigation debug graphics. - - - - - A count of how many users requesting navigation debug graphics to be enabled. - - - - - Editor API for the Unity Services editor feature. Normally Analytics is enabled from the Services window, but if writing your own editor extension, this API can be used. - - - - - This Boolean field will cause the Analytics feature in Unity to be enabled if true, or disabled if false. - - - - - Controls whether Unity initializes Analytics immediately on startup. - - - - - Set to true for testing Analytics integration only within the Editor. - - - - - Normally performance reporting is enabled from the Services window, but if writing your own editor extension, this API can be used. - - - - - This Boolean field causes the performance reporting feature in Unity to be enabled if true, or disabled if false. - - - - - Implement this interface to receive a callback after the Android Gradle project is generated. Inherited from UnityEditor.Build.IOrderedCallback. - - - - - Implement this function to receive a callback after the Android Gradle project is generated and before building begins. It is not called when doing an Internal build. - - The path to the root of the Gradle project. Note: when exporting the project, this parameter holds the path to the folder specified for export. - - - - Android CPU architecture. - - - - - All architectures. - - - - - 64-bit ARM architecture. - - - - - 32-bit ARM architecture. - - - - - Invalid architecture. - - - - - 32-bit Intel architecture. - - - - - Describes the method for how content is displayed on the screen. - - - - - Always render offscreen and blit to the backbuffer. - - - - - Automatically determine the most appropriate method for drawing to the screen. - - - - - Never render offscreen and blit to the backbuffer. Always render directly to the backbuffer. - - - - - Type of Android build system. - - - - - Export ADT (legacy) project. This option is obsolete and no longer supported - please use AndroidBuildSystem.Gradle export instead. - - - - - Build APK using Gradle or export Gradle project. - - - - - Build APK using internal build system. - - - - - Build configurations for the generated project. - - - - - Build configuration set to Debug for the generated project. - - - - - Build configuration set to Development for the generated project. - - - - - Build configuration set to Release for the generated project. - - - - - This enumeration has values for different qualities to decompress ETC2 textures on Android devices that don't support the ETC2 texture format. - - - - - Textures are decompressed to a suitable 16-bit format. - - - - - Textures are decompressed to the TextureFormat.RGBA32 format. - - - - - Textures are decompressed to the TextureFormat.RGBA32 format and downscaled to half of the original texture width and height. - - - - - This enumeration has values for different qualities to decompress an ETC2 texture on Android devices that don't support the ETC2 texture format. - - - - - Texture is decompressed to a suitable 16-bit format. - - - - - Texture is decompressed to the TextureFormat.RGBA32 format. - - - - - Texture is decompressed to the TextureFormat.RGBA32 format and downscaled to half of the original texture width and height. - - - - - Use the value defined in Player build settings. - - - - - Gamepad support level for Android TV. - - - - - Requires a gamepad for gameplay. - - - - - Game is fully operational with a D-pad, no gamepad needed. - - - - - Works with a gamepad, but does not require it. - - - - - How to minify the java code of your binary. - - - - - Use experimental internal gradle minification. - - - - - Use no minification. - - - - - Use proguard minification. - - - - - Preferred application install location. - - - - - Let the OS decide, app doesn't have any preferences. - - - - - Force installation into internal memory. Needed for things like Live Wallpapers. - - - - - Prefer external, if possible. Install to internal otherwise. - - - - - Supported Android SDK versions. - - - - - Android 4.1, "Jelly Bean", API level 16. - - - - - Android 4.2, "Jelly Bean", API level 17. - - - - - Android 4.3, "Jelly Bean", API level 18. - - - - - Android 4.4, "KitKat", API level 19. - - - - - Android 5.0, "Lollipop", API level 21. - - - - - Android 5.1, "Lollipop", API level 22. - - - - - Android 6.0, "Marshmallow", API level 23. - - - - - Android 7.0, "Nougat", API level 24. - - - - - Android 7.1, "Nougat", API level 25. - - - - - Android 8.0, "Oreo", API level 26. - - - - - Android 8.1, "Oreo", API level 27. - - - - - Android 9.0, "Pie", API level 28. - - - - - Sets the target API level automatically, according to the latest installed SDK on your computer. - - - - - Application should show ActivityIndicator when loading. - - - - - Don't Show. - - - - - Inversed Large. - - - - - Inversed Small. - - - - - Large. - - - - - Small. - - - - - Android splash screen scale modes. - - - - - Center. - - - - - Scale to fill. - - - - - Scale to fit. - - - - - Target Android device architecture. - - - - - Intel only. - - - - - ARMv7 only. - - - - - All supported architectures. - - - - - Lerp from 0 - 1. - - - - - Retuns the float value of the tween. - - - - - Constructor. - - Start Value. - - - - - Constructor. - - Start Value. - - - - - Constructor. - - Start Value. - - - - - Constructor. - - Start Value. - - - - - Returns a value between from and to depending on the current value of the bools animation. - - Value to lerp from. - Value to lerp to. - - - - Type specific implementation of BaseAnimValue_1.GetValue. - - - Current value. - - - - - An animated float value. - - - - - Constructor. - - Start Value. - - - - - Constructor. - - Start Value. - - - - - Type specific implementation of BaseAnimValue_1.GetValue. - - - Current Value. - - - - - An animated Quaternion value. - - - - - Constructor. - - Start Value. - - - - - Constructor. - - Start Value. - - - - - Type specific implementation of BaseAnimValue_1.GetValue. - - - Current Value. - - - - - An animated Vector3 value. - - - - - Constructor. - - Start Value. - - - - - Constructor. - - Start Value. - - - - - Constructor. - - Start Value. - - - - - Type specific implementation of BaseAnimValue_1.GetValue. - - - Current Value. - - - - - Abstract base class for Animated Values. - - - - - Is the value currently animating. - - - - - Speed of the tween. - - - - - Target to tween towards. - - - - - Current value of the animation. - - - - - Callback while the value is changing. - - - - - Begin an animation moving from the start value to the target value. - - Target value. - Start value. - - - - Abstract function to be overridden in derived types. Should return the current value of the animated value. - - - Current Value. - - - - - Stop the animation and assign the given value. - - Value to assign. - - - - An AnimationClipCurveData object contains all the information needed to identify a specific curve in an AnimationClip. The curve animates a specific property of a component material attached to a game object animated bone. - - - - - The actual animation curve. - - - - - The path of the game object / bone being animated. - - - - - The name of the property being animated. - - - - - The type of the component / material being animated. - - - - - AnimationMode is used by the AnimationWindow to store properties modified - by the AnimationClip playback. - - - - - The color used to show that a property is currently being animated. - - - - - The color used to show that an animated property has been modified. - - - - - The color used to show that an animated property automatically records changes in the animation clip. - - - - - Marks a property defined by an EditorCurveBinding as currently being animated. - - The GameObject being modified. - The binding for the property being modified. - - - - Marks a property as currently being animated. - - Description of the animation clip curve being modified. - Object property being modified. - Indicates whether to retain modifications when the targeted object is an instance of a Prefab. - - - - Initialise the start of the animation clip sampling. - - - - - Finish the sampling of the animation clip. - - - - - Are we currently in AnimationMode? - - - - - Is the specified property currently in animation mode and being animated? - - The object to determine if it contained the animation. - The name of the animation to search for. - - Whether the property search is found or not. - - - - - Samples an AnimationClip on the object and also records any modified - properties in AnimationMode. - - - - - - - - Starts the animation mode. - - - - - Stops Animation mode, reverts all properties that were animated in animation mode. - - - - - Condition that is used to determine if a transition must be taken. - - - - - The mode of the condition. - - - - - The name of the parameter used in the condition. - - - - - The AnimatorParameter's threshold value for the condition to be true. - - - - - The mode of the condition. - - - - - The condition is true when parameter value is equal to the threshold. - - - - - The condition is true when parameter value is greater than the threshold. - - - - - The condition is true when the parameter value is true. - - - - - The condition is true when the parameter value is false. - - - - - The condition is true when the parameter value is less than the threshold. - - - - - The condition is true when the parameter value is not equal to the threshold. - - - - - The Animator Controller controls animation through layers with state machines, controlled by parameters. - - - - - The layers in the controller. - - - - - Parameters are used to communicate between scripting and the controller. They are used to drive transitions and blendtrees for example. - - - - - Adds a state machine behaviour class of type stateMachineBehaviourType to the AnimatorState for layer layerIndex. This function should be used when you are dealing with synchronized layer and would like to add a state machine behaviour on a synchronized layer. C# Users can use a generic version. - - - - - - - - Generic version. See the page for more details. - - - - - - - Utility function to add a layer to the controller. - - The name of the Layer. - The layer to add. - - - - Utility function to add a layer to the controller. - - The name of the Layer. - The layer to add. - - - - Utility function that creates a new state with the motion in it. - - The Motion that will be in the AnimatorState. - The layer where the Motion will be added. - - - - Utility function that creates a new state with the motion in it. - - The Motion that will be in the AnimatorState. - The layer where the Motion will be added. - - - - Utility function to add a parameter to the controller. - - The name of the parameter. - The type of the parameter. - The parameter to add. - - - - Utility function to add a parameter to the controller. - - The name of the parameter. - The type of the parameter. - The parameter to add. - - - - Creates an AnimatorController at the given path. - - The path where the AnimatorController asset will be created. - - The created AnimationController or null if an error occured. - - - - - Creates an AnimatorController at the given path, and automatically create an AnimatorLayer with an AnimatorStateMachine that will add a State with the AnimationClip in it. - - The path where the AnimatorController will be created. - The default clip that will be played by the AnimatorController. - - - - Creates a BlendTree in a new AnimatorState. - - The name of the BlendTree. - The created BlendTree. - The index where the BlendTree will be created. - - - - Creates a BlendTree in a new AnimatorState. - - The name of the BlendTree. - The created BlendTree. - The index where the BlendTree will be created. - - - - This function will create a StateMachineBehaviour instance based on the class define in this script. - - MonoScript class to instantiate. - - Returns instance id of created object, returns 0 if something is not valid. - - - - - Constructor. - - - - - Use this function to retrieve the owner of this behaviour. - - The State Machine Behaviour to get context for. - - Returns the State Machine Behaviour edition context. - - - - - Returns all StateMachineBehaviour that match type T or are derived from T. - - - - - Gets the effective state machine behaviour list for the AnimatorState. Behaviours are either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to get Behaviour list that is effectively used. - - The AnimatorState which we want the Behaviour list. - The layer that is queried. - - - - Gets the effective Motion for the AnimatorState. The Motion is either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to get the Motion that is effectively used. - - The AnimatorState which we want the Motion. - The layer that is queried. - - - - Gets the effective Motion for the AnimatorState. The Motion is either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to get the Motion that is effectively used. - - The AnimatorState which we want the Motion. - The layer that is queried. - - - - Creates a unique name for the layers. - - The desired name of the AnimatorLayer. - - - - Creates a unique name for the parameter. - - The desired name of the AnimatorParameter. - - - - Utility function to remove a layer from the controller. - - The index of the AnimatorLayer. - - - - Utility function to remove a parameter from the controller. - - The index of the AnimatorParameter. - - - - Sets the effective state machine Behaviour list for the AnimatorState. The Behaviour list is either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to set the Behaviour list that is effectively used. - - The AnimatorState which we want to set the Behaviour list. - The layer to set the Behaviour list. - The Behaviour list that will be set. - - - - Sets the effective Motion for the AnimatorState. The Motion is either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to set the Motion that is effectively used. - - The AnimatorState which we want to set the Motion. - The Motion that will be set. - The layer to set the Motion. - - - - Sets the effective Motion for the AnimatorState. The Motion is either stored in the AnimatorStateMachine or in the AnimatorLayer's ovverrides. Use this function to set the Motion that is effectively used. - - The AnimatorState which we want to set the Motion. - The Motion that will be set. - The layer to set the Motion. - - - - The Animation Layer contains a state machine that controls animations of a model or part of it. - - - - - The AvatarMask that is used to mask the animation on the given layer. - - - - - The blending mode used by the layer. It is not taken into account for the first layer. - - - - - The default blending weight that the layers has. It is not taken into account for the first layer. - - - - - When active, the layer will have an IK pass when evaluated. It will trigger an OnAnimatorIK callback. - - - - - The name of the layer. - - - - - The state machine for the layer. - - - - - When active, the layer will take control of the duration of the Synced Layer. - - - - - Specifies the index of the Synced Layer. - - - - - Gets the override behaviour list for the state on the given layer. - - The state which we want to get the behaviour list. - - - - Gets the override motion for the state on the given layer. - - The state which we want to get the motion. - - - - Sets the override behaviour list for the state on the given layer. - - The state which we want to set the behaviour list. - The behaviour list that will be set. - - - - Sets the override motion for the state on the given layer. - - The state which we want to set the motion. - The motion that will be set. - - - - Specifies how the layer is blended with the previous layers. - - - - - Animations are added to the previous layers. - - - - - Animations overrides to the previous layers. - - - - - States are the basic building blocks of a state machine. Each state contains a Motion ( AnimationClip or BlendTree) which will play while the character is in that state. When an event in the game triggers a state transition, the character will be left in a new state whose animation sequence will then take over. - - - - - The Behaviour list assigned to this state. - - - - - Offset at which the animation loop starts. Useful for synchronizing looped animations. -Units is normalized time. - - - - - The animator controller parameter that drives the cycle offset value. - - - - - Define if the cycle offset value is driven by an Animator controller parameter or by the value set in the editor. - - - - - Should Foot IK be respected for this state. - - - - - Should the state be mirrored. - - - - - The animator controller parameter that drives the mirror value. - - - - - Define if the mirror value is driven by an Animator controller parameter or by the value set in the editor. - - - - - The motion assigned to this state. - - - - - The hashed name of the state. - - - - - The default speed of the motion. - - - - - The animator controller parameter that drives the speed value. - - - - - Define if the speed value is driven by an Animator controller parameter or by the value set in the editor. - - - - - A tag can be used to identify a state. - - - - - If timeParameterActive is true, the value of this Parameter will be used instead of normalized time. - - - - - If true, use value of given Parameter as normalized time. - - - - - The transitions that are going out of the state. - - - - - Whether or not the AnimatorStates writes back the default values for properties that are not animated by its Motion. - - - - - Utility function to add an outgoing transition to the exit of the state's parent state machine. - - If true, the exit time will be the equivalent of 0.25 second. - - The Animations.AnimatorStateTransition that was added. - - - - - Utility function to add an outgoing transition to the exit of the state's parent state machine. - - If true, the exit time will be the equivalent of 0.25 second. - - The Animations.AnimatorStateTransition that was added. - - - - - Adds a state machine behaviour class of type stateMachineBehaviourType to the AnimatorState. C# Users can use a generic version. - - - - - - Generic version. See the page for more details. - - - - - Utility function to add an outgoing transition to the destination state. - - If true, the exit time will be the equivalent of 0.25 second. - The destination state. - - - - Utility function to add an outgoing transition to the destination state. - - If true, the exit time will be the equivalent of 0.25 second. - The destination state. - - - - Utility function to add an outgoing transition to the destination state machine. - - If true, the exit time will be the equivalent of 0.25 second. - The destination state machine. - - - - Utility function to add an outgoing transition to the destination state machine. - - If true, the exit time will be the equivalent of 0.25 second. - The destination state machine. - - - - Utility function to add an outgoing transition. - - The transition to add. - - - - Utility function to remove a transition from the state. - - Transition to remove. - - - - A graph controlling the interaction of states. Each state references a motion. - - - - - The position of the AnyState node. - - - - - The list of AnyState transitions. - - - - - The Behaviour list assigned to this state machine. - - - - - The state that the state machine will be in when it starts. - - - - - The position of the entry node. - - - - - The list of entry transitions in the state machine. - - - - - The position of the exit node. - - - - - The position of the parent state machine node. Only valid when in a hierachic state machine. - - - - - The list of sub state machines. - - - - - The list of states. - - - - - Utility function to add an AnyState transition to the specified state or statemachine. - - The destination state. - The destination statemachine. - - - - Utility function to add an AnyState transition to the specified state or statemachine. - - The destination state. - The destination statemachine. - - - - Utility function to add an incoming transition to the exit of it's parent state machine. - - The destination Animations.AnimatorState state. - The destination Animations.AnimatorStateMachine state machine. - - - - Utility function to add an incoming transition to the exit of it's parent state machine. - - The destination Animations.AnimatorState state. - The destination Animations.AnimatorStateMachine state machine. - - - - Utility function to add a state to the state machine. - - The name of the new state. - The position of the state node. - - The AnimatorState that was created for this state. - - - - - Utility function to add a state to the state machine. - - The name of the new state. - The position of the state node. - - The AnimatorState that was created for this state. - - - - - Utility function to add a state to the state machine. - - The state to add. - The position of the state node. - - - - Utility function to add a state machine to the state machine. - - The name of the new state machine. - The position of the state machine node. - - The newly created Animations.AnimatorStateMachine state machine. - - - - - Utility function to add a state machine to the state machine. - - The name of the new state machine. - The position of the state machine node. - - The newly created Animations.AnimatorStateMachine state machine. - - - - - Utility function to add a state machine to the state machine. - - The state machine to add. - The position of the state machine node. - - - - Adds a state machine behaviour class of type stateMachineBehaviourType to the AnimatorStateMachine. C# Users can use a generic version. - - - - - - Generic version. See the page for more details. - - - - - Utility function to add an outgoing transition from the source state machine to the exit of it's parent state machine. - - The source state machine. - - - - Utility function to add an outgoing transition from the source state machine to the destination. - - The source state machine. - The destination state machine. - The destination state. - - The Animations.AnimatorTransition transition that was created. - - - - - Utility function to add an outgoing transition from the source state machine to the destination. - - The source state machine. - The destination state machine. - The destination state. - - The Animations.AnimatorTransition transition that was created. - - - - - Utility function to add an outgoing transition from the source state machine to the destination. - - The source state machine. - The destination state machine. - The destination state. - - The Animations.AnimatorTransition transition that was created. - - - - - Gets the list of all outgoing state machine transitions from given state machine. - - The source state machine. - - - - Makes a unique state machine name in the context of the parent state machine. - - Desired name for the state machine. - - - - Makes a unique state name in the context of the parent state machine. - - Desired name for the state. - - - - Utility function to remove an AnyState transition from the state machine. - - The AnyStat transition to remove. - - - - Utility function to remove an entry transition from the state machine. - - The transition to remove. - - - - Utility function to remove a state from the state machine. - - The state to remove. - - - - Utility function to remove a state machine from its parent state machine. - - The state machine to remove. - - - - Utility function to remove an outgoing transition from source state machine. - - The transition to remove. - The source state machine. - - - - Sets the list of all outgoing state machine transitions from given state machine. - - The source state machine. - The outgoing transitions. - - - - - Transitions define when and how the state machine switch from one state to another. AnimatorStateTransition always originate from an Animator State (or AnyState) and have timing parameters. - - - - - Set to true to allow or disallow transition to self during AnyState transition. - - - - - The duration of the transition. - - - - - If AnimatorStateTransition.hasExitTime is true, exitTime represents the exact time at which the transition can take effect. - -This is represented in normalized time, so for example an exit time of 0.75 means that on the first frame where 75% of the animation has played, the Exit Time condition will be true. On the next frame, the condition will be false. - -For looped animations, transitions with exit times smaller than 1 will be evaluated every loop, so you can use this to time your transition with the proper timing in the animation, every loop. - -Transitions with exit times greater than one will be evaluated only once, so they can be used to exit at a specific time, after a fixed number of loops. For example, a transition with an exit time of 3.5 will be evaluated once, after three and a half loops. - - - - - When active the transition will have an exit time condition. - - - - - Determines whether the duration of the transition is reported in a fixed duration in seconds or as a normalized time. - - - - - Which AnimatorState transitions can interrupt the Transition. - - - - - The time at which the destination state will start. - - - - - The Transition can be interrupted by a transition that has a higher priority. - - - - - Creates a new animator state transition. - - - - - Transitions define when and how the state machine switch from on state to another. AnimatorTransition always originate from a StateMachine or a StateMachine entry. They do not define timing parameters. - - - - - Creates a new animator transition. - - - - - Base class for animator transitions. Transitions define when and how the state machine switches from one state to another. - - - - - Animations.AnimatorCondition conditions that need to be met for a transition to happen. - - - - - The destination state of the transition. - - - - - The destination state machine of the transition. - - - - - Is the transition destination the exit of the current state machine. - - - - - Mutes the transition. The transition will never occur. - - - - - Mutes all other transitions in the source state. - - - - - Utility function to add a condition to a transition. - - The Animations.AnimatorCondition mode of the condition. - The threshold value of the condition. - The name of the parameter. - - - - Utility function to remove a condition from the transition. - - The condition to remove. - - - - Blend trees are used to blend continuously animation between their childs. They can either be 1D or 2D. - - - - - Parameter that is used to compute the blending weight of the childs in 1D blend trees or on the X axis of a 2D blend tree. - - - - - Parameter that is used to compute the blending weight of the childs on the Y axis of a 2D blend tree. - - - - - The Blending type can be either 1D or different types of 2D. - - - - - A copy of the list of the blend tree child motions. - - - - - Sets the maximum threshold that will be used by the ChildMotion. Only used when useAutomaticThresholds is true. - - - - - Sets the minimum threshold that will be used by the ChildMotion. Only used when useAutomaticThresholds is true. - - - - - When active, the children's thresholds are automatically spread between 0 and 1. - - - - - Utility function to add a child motion to a blend trees. - - The motion to add as child. - The position of the child. When using 2D blend trees. - The threshold of the child. When using 1D blend trees. - - - - Utility function to add a child motion to a blend trees. - - The motion to add as child. - The position of the child. When using 2D blend trees. - The threshold of the child. When using 1D blend trees. - - - - Utility function to add a child motion to a blend trees. - - The motion to add as child. - The position of the child. When using 2D blend trees. - The threshold of the child. When using 1D blend trees. - - - - Utility function to add a child blend tree to a blend tree. - - The position of the child. When using 2D blend trees. - The threshold of the child. When using 1D blend trees. - - - - Utility function to add a child blend tree to a blend tree. - - The position of the child. When using 2D blend trees. - The threshold of the child. When using 1D blend trees. - - - - Utility function to remove the child of a blend tree. - - The index of the blend tree to remove. - - - - The type of blending algorithm that the blend tree uses. - - - - - Direct control of blending weight for each node. - - - - - Best used when your motions do not represent different directions. - - - - - This blend type is used when your motions represent different directions, however you can have multiple motions in the same direction, for example "walk forward" and "run forward". - - - - - Basic blending using a single parameter. - - - - - Best used when your motions represent different directions, such as "walk forward", "walk backward", "walk left", and "walk right", or "aim up", "aim down", "aim left", and "aim right". - - - - - Structure that represents a state in the context of its parent state machine. - - - - - The position the the state node in the context of its parent state machine. - - - - - The state. - - - - - Structure that represents a state machine in the context of its parent state machine. - - - - - The position the the state machine node in the context of its parent state machine. - - - - - The state machine. - - - - - Structure that represents a motion in the context of its parent blend tree. - - - - - Normalized time offset of the child. - - - - - The parameter used by the child when used in a BlendTree of type BlendTreeType.Direct. - - - - - Mirror of the child. - - - - - The motion itself. - - - - - The position of the child. Used in 2D blend trees. - - - - - The threshold of the child. Used in 1D blend trees. - - - - - The relative speed of the child. - - - - - Records the changing properties of a GameObject as the Scene runs and saves the information into an AnimationClip. - - - - - Returns the current time of the recording. (Read Only) - - - - - Returns true when the recorder is recording. (Read Only) - - - - - The GameObject root of the animated hierarchy. (Read Only) - - - - - Binds a GameObject's property as defined by EditorCurveBinding. - - The binding definition. - - - - Adds bindings for all of target's properties, and also for all the target's children if recursive is true. - - .root or any of its children. - Binds also all the target's children properties when set to true. - - - - Adds bindings for all the properties of component. - - The component to bind. - - - - TODO. - - - - - - - - TODO. - - - - - - - - Adds bindings for all the properties of the first component of type T found in target, and also for all the target's children if recursive is true. - - .root or any of its children. - Binds also the target's children transform properties when set to true. - Type of the component. - - - - Adds bindings for all the properties of the first component of type T found in target, and also for all the target's children if recursive is true. - - .root or any of its children. - Binds also the target's children transform properties when set to true. - Type of the component. - - - - Create a new GameObjectRecorder. - - The root GameObject for the animated hierarchy. - - - - TODO. - - - - - Returns an array of all the bindings added to the recorder. - - - Array of bindings. - - - - - Reset the recording. - - - - - Saves the recorded animation into clip. - -When no frames per second is given, the default is 60 FPS. - - Destination clip. - The frames per second for the clip. - - - - Saves the recorded animation into clip. - -When no frames per second is given, the default is 60 FPS. - - Destination clip. - The frames per second for the clip. - - - - Forwards the animation by dt seconds, then record the values of the added bindings. - - Delta time. - - - - This class contains all the owner's information for this State Machine Behaviour. - - - - - The Animations.AnimatorController that owns this state machine behaviour. - - - - - The object that owns this state machine behaviour. Could be an Animations.AnimatorState or Animations.AnimatorStateMachine. - - - - - The animator's layer index that owns this state machine behaviour. - - - - - Which AnimatorState transitions can interrupt the Transition. - - - - - The Transition can be interrupted by transitions in the destination AnimatorState. - - - - - The Transition can be interrupted by transitions in the source or the destination AnimatorState. - - - - - The Transition cannot be interrupted. Formely know as Atomic. - - - - - The Transition can be interrupted by transitions in the source AnimatorState. - - - - - The Transition can be interrupted by transitions in the source or the destination AnimatorState. - - - - - Editor utility functions for modifying animation clips. - - - - - Triggered when an animation curve inside an animation clip has been modified. - - - - - Calculates path from root transform to target transform. - - - - - - - Describes the type of modification that caused OnCurveWasModified to fire. - - - - - Retrieves all curves from a specific animation clip. - - - - - - - Retrieves all curves from a specific animation clip. - - - - - - - Returns all the animatable bindings that a specific game object has. - - - - - - - Returns the animated object that the binding is pointing to. - - - - - - - Returns the array of Animation Clips associated with the GameObject or component. - - - - - - - Returns the array of Animation Clips associated with the GameObject or component. - - - - - - - Retrieves all animation events associated with the animation clip. - - - - - - Returns all the float curve bindings currently stored in the clip. - - - - - - Return the float curve that the binding is pointing to. - - - - - - - - - - Return the float curve that the binding is pointing to. - - - - - - - - - - Retrieves the current float value by sampling a curve value on a specific game object. - - - - - - - - - - Returns whether the animation clip is set to generate root motion curves. - - AnimationClip to query. - - - - Retrieve the specified keyframe broken tangent flag. - - Curve to query. - Keyframe index. - - Broken flag at specified index. - - - - - Retrieve the left tangent mode of the keyframe at specified index. - - Curve to query. - Keyframe index. - - Tangent mode at specified index. - - - - - Retrieve the right tangent mode of the keyframe at specified index. - - Curve to query. - Keyframe index. - - Tangent mode at specified index. - - - - - Return the object reference curve that the binding is pointing to. - - - - - - - Returns all the object reference curve bindings currently stored in the clip. - - - - - - Triggered when an animation curve inside an animation clip has been modified. - - - - - - - - Set the additive reference pose from referenceClip at time for animation clip clip. - - The animation clip to be used. - The animation clip containing the reference pose. - Time that defines the reference pose in referenceClip. - - - - Sets the array of AnimationClips to be referenced in the Animation component. - - - - - - - Replaces all animation events in the animation clip. - - - - - - - Adds, modifies or removes an editor float curve in a given clip. - - The animation clip to which the curve will be added. - The bindings which defines the path and the property of the curve. - The curve to add. Setting this to null will remove the curve. - - - - Sets whether the animation clip generates root motion curves. - - AnimationClip to change. - Set to true to enable generation of root motion curves. - - - - Change the specified keyframe broken tangent flag. - - The curve to modify. - Keyframe index. - Broken flag. - - - - Change the specified keyframe tangent mode. - - The curve to modify. - Keyframe index. - Tangent mode. - - - - Change the specified keyframe tangent mode. - - The curve to modify. - Keyframe index. - Tangent mode. - - - - Adds, modifies or removes an object reference curve in a given clip. - - Setting this to null will remove the curve. - - - - - - Tangent constraints on Keyframe. - - - - - The tangents are automatically set to make the curve go smoothly through the key. - - - - - The tangents are automatically set to make the curve go smoothly through the key. - - - - - The curve retains a constant value between two keys. - - - - - The tangent can be freely set by dragging the tangent handle. - - - - - The tangent points towards the neighboring key. - - - - - .NET API compatibility level. - - - - - .NET 2.0. - - - - - .NET 2.0 Subset. - - - - - .NET 4.6. - - - - - Micro profile, used by Mono scripting backend on iOS, tvOS, and Android if stripping level is set to "Use micro mscorlib". - - - - - Profile that targets the .NET Standard 2.0. - - - - - Web profile, formerly used only by Samsung TV. - - - - - Helpers for builtin arrays. - - - - - Appends item to the end of array. - - - - - - - Appends items to the end of array. - - - - - - - Compares two arrays. - - - - - True if both have the same number of elements and the contents are equal. - - - - - Compares two array references. - - - - - True if both have the same number of elements and are the same instances. - - - - - Clears the array. - - - - - - Determines if the array contains the item. - - - - - True if item is in array, false otherwise. - - - - - Find the index of the first element that satisfies the predicate. - - - - - The zero-based index of the first occurrence of the element, if found; otherwise, �1. - - - - - Index of first element with value value. - - - - - The zero-based index of the element, if found; otherwise -1. - - - - - Inserts item item at position index. - - - - - - - - Index of the last element with value value. - - - - - The zero-based index of the element, if found; otherwise -1. - - - - - Removes item from array. - - - - - - - Remove element at position index. - - - - - - - Method used for calculating a font's ascent. - - - - - Ascender method. - - - - - Bounding box method. - - - - - Legacy bounding box method. - - - - - Aspect ratio. - - - - - 16:10 aspect ratio. - - - - - 16:9 aspect ratio. - - - - - 4:3 aspect ratio. - - - - - 5:4 aspect ratio. - - - - - Undefined aspect ratios. - - - - - This class has event dispatchers for assembly reload events. - - - - - This event is dispatched just after Unity have reloaded all assemblies. - - - - - - This event is dispatched just before Unity reloads all assemblies. - - - - - - Delegate used for assembly reload events. - - - - - AssetBundle building map entry. - - - - - Addressable name used to load an asset. - - - - - AssetBundle name. - - - - - AssetBundle variant. - - - - - Asset names which belong to the given AssetBundle. - - - - - An Interface for accessing assets and performing operations on assets. - - - - - Callback raised whenever a package import is cancelled by the user. - - - - - - Callback raised whenever a package import successfully completes. - - - - - - Callback raised whenever a package import failed. - - - - - - Callback raised whenever a package import starts. - - - - - - Adds objectToAdd to an existing asset at path. - - Object to add to the existing asset. - Filesystem path to the asset. - - - - Adds objectToAdd to an existing asset identified by assetObject. - - - - - - - Get the GUID for the asset at path. - - Filesystem path for the asset. - - GUID. - - - - - Removes all labels attached to an asset. - - - - - - Is object an asset? - - - - - - - Is object an asset? - - - - - - - Duplicates the asset at path and stores it at newPath. - - Filesystem path of the source asset. - Filesystem path of the new asset to create. - - - - Creates a new asset at path. - - Object to use in creating the asset. - Filesystem path for the new asset. - - - - Create a new folder. - - The name of the parent folder. - The name of the new folder. - - The GUID of the newly created folder. - - - - - Deletes the asset file at path. - - Filesystem path of the asset to be deleted. - - - - Exports the assets identified by assetPathNames to a unitypackage file in fileName. - - - - - - - - - Exports the assets identified by assetPathNames to a unitypackage file in fileName. - - - - - - - - - Exports the assets identified by assetPathNames to a unitypackage file in fileName. - - - - - - - - - Exports the assets identified by assetPathNames to a unitypackage file in fileName. - - - - - - - - - Creates an external Asset from an object (such as a Material) by extracting it from within an imported asset (such as an FBX file). - - The sub-asset to extract. - The file path of the new Asset. - - An empty string if Unity has successfully extracted the Asset, or an error message if not. - - - - - Search the asset database using the search filter string. - - The filter string can contain search data. See below for details about this string. - The folders where the search will start. - - Array of matching asset. Note that GUIDs will be returned. - - - - - Search the asset database using the search filter string. - - The filter string can contain search data. See below for details about this string. - The folders where the search will start. - - Array of matching asset. Note that GUIDs will be returned. - - - - - Forcibly load and re-serialize the given assets, flushing any outstanding data changes to disk. - - The paths to the assets that should be reserialized. If omitted, will reserialize all assets in the project. - Specify whether you want to reserialize the assets themselves, their .meta files, or both. If omitted, defaults to both. - - - - Forcibly load and re-serialize the given assets, flushing any outstanding data changes to disk. - - The paths to the assets that should be reserialized. If omitted, will reserialize all assets in the project. - Specify whether you want to reserialize the assets themselves, their .meta files, or both. If omitted, defaults to both. - - - - Forcibly load and re-serialize the given assets, flushing any outstanding data changes to disk. - - The paths to the assets that should be reserialized. If omitted, will reserialize all assets in the project. - Specify whether you want to reserialize the assets themselves, their .meta files, or both. If omitted, defaults to both. - - - - Creates a new unique path for an asset. - - - - - - Return all the AssetBundle names in the asset database. - - - Array of asset bundle names. - - - - - Given an assetBundleName, returns the list of AssetBundles that it depends on. - - The name of the AssetBundle for which dependencies are required. - If false, returns only AssetBundles which are direct dependencies of the input; if true, includes all indirect dependencies of the input. - - The names of all AssetBundles that the input depends on. - - - - - Returns the hash of all the dependencies of an asset. - - Path to the asset. - - Aggregate hash. - - - - - Returns the path name relative to the project folder where the asset is stored. - - - - - - Returns the path name relative to the project folder where the asset is stored. - - The instance ID of the asset. - A reference to the asset. - - The asset path name, or null, or an empty string if the asset does not exist. - - - - - Returns the path name relative to the project folder where the asset is stored. - - The instance ID of the asset. - A reference to the asset. - - The asset path name, or null, or an empty string if the asset does not exist. - - - - - Gets the path to the asset file associated with a text .meta file. - - - - - - Get the paths of the assets which have been marked with the given assetBundle name. - - - - - - Get the Asset paths for all Assets tagged with assetBundleName and - named assetName. - - - - - - - Retrieves an icon for the asset at the given asset path. - - - - - - Gets the IP address of the Cache Server currently in use by the Editor. - - - Returns a string representation of the current Cache Server IP address. - - - - - Given a pathName, returns the list of all assets that it depends on. - - The path to the asset for which dependencies are required. - If false, return only assets which are direct dependencies of the input; if true, include all indirect dependencies of the input. Defaults to true. - - The paths of all assets that the input depends on. - - - - - Given a pathName, returns the list of all assets that it depends on. - - The path to the asset for which dependencies are required. - If false, return only assets which are direct dependencies of the input; if true, include all indirect dependencies of the input. Defaults to true. - - The paths of all assets that the input depends on. - - - - - Given an array of pathNames, returns the list of all assets that the input depend on. - - The path to the assets for which dependencies are required. - If false, return only assets which are direct dependencies of the input; if true, include all indirect dependencies of the input. Defaults to true. - - The paths of all assets that the input depends on. - - - - - Given an array of pathNames, returns the list of all assets that the input depend on. - - The path to the assets for which dependencies are required. - If false, return only assets which are direct dependencies of the input; if true, include all indirect dependencies of the input. Defaults to true. - - The paths of all assets that the input depends on. - - - - - Returns the name of the AssetBundle that a given asset belongs to. - - The asset's path. - - Returns the name of the AssetBundle that a given asset belongs to. See the method description for more details. - - - - - Returns the name of the AssetBundle Variant that a given asset belongs to. - - The asset's path. - - Returns the name of the AssetBundle Variant that a given asset belongs to. See the method description for more details. - - - - - Returns all labels attached to a given asset. - - - - - - Returns the type of the main asset object at assetPath. - - Filesystem path of the asset to load. - - - - Given a path to a directory in the Assets folder, relative to the project folder, this method will return an array of all its subdirectories. - - - - - - Gets the path to the text .meta file associated with an asset. - - The path to the asset. - - The path to the .meta text file or empty string if the file does not exist. - - - - - Gets the path to the text .meta file associated with an asset. - - The path to the asset. - - The path to the .meta text file or empty string if the file does not exist. - - - - - Return all the unused assetBundle names in the asset database. - - - - - Translate a GUID to its current asset path. - - - - - - Import asset at path. - - - - - - - Import asset at path. - - - - - - - Imports package at packagePath into the current project. - - - - - - - Delegate to be called from AssetDatabase.ImportPackage callbacks. packageName is the name of the package that raised the callback. - - - - - - Delegate to be called from AssetDatabase.ImportPackage callbacks. packageName is the name of the package that raised the callback. errorMessage is the reason for the failure. - - - - - - - Determines whether the Asset is a foreign Asset. - - - - - - - Determines whether the Asset is a foreign Asset. - - - - - - - Is asset a main asset in the project window? - - - - - - - Is asset a main asset in the project window? - - - - - - - Returns true if the main asset object at assetPath is loaded in memory. - - Filesystem path of the asset to load. - - - - Query whether an asset's metadata (.meta) file is open for edit in version control. - - Object representing the asset whose metadata status you wish to query. - Returns a reason for the asset metadata not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset's metadata is considered open for edit by the selected version control system. - - - - - Query whether an asset's metadata (.meta) file is open for edit in version control. - - Object representing the asset whose metadata status you wish to query. - Returns a reason for the asset metadata not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset's metadata is considered open for edit by the selected version control system. - - - - - Query whether an asset's metadata (.meta) file is open for edit in version control. - - Object representing the asset whose metadata status you wish to query. - Returns a reason for the asset metadata not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset's metadata is considered open for edit by the selected version control system. - - - - - Query whether an asset's metadata (.meta) file is open for edit in version control. - - Object representing the asset whose metadata status you wish to query. - Returns a reason for the asset metadata not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset's metadata is considered open for edit by the selected version control system. - - - - - Determines whether the Asset is a native Asset. - - - - - - - Determines whether the Asset is a native Asset. - - - - - - - Query whether an asset file is open for edit in version control. - - Object representing the asset whose status you wish to query. - Path to the asset file or its .meta file on disk, relative to project folder. - Returns a reason for the asset not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset is considered open for edit by the selected version control system. - - - - - Query whether an asset file is open for edit in version control. - - Object representing the asset whose status you wish to query. - Path to the asset file or its .meta file on disk, relative to project folder. - Returns a reason for the asset not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset is considered open for edit by the selected version control system. - - - - - Query whether an asset file is open for edit in version control. - - Object representing the asset whose status you wish to query. - Path to the asset file or its .meta file on disk, relative to project folder. - Returns a reason for the asset not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset is considered open for edit by the selected version control system. - - - - - Query whether an asset file is open for edit in version control. - - Object representing the asset whose status you wish to query. - Path to the asset file or its .meta file on disk, relative to project folder. - Returns a reason for the asset not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset is considered open for edit by the selected version control system. - - - - - Query whether an asset file is open for edit in version control. - - Object representing the asset whose status you wish to query. - Path to the asset file or its .meta file on disk, relative to project folder. - Returns a reason for the asset not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset is considered open for edit by the selected version control system. - - - - - Query whether an asset file is open for edit in version control. - - Object representing the asset whose status you wish to query. - Path to the asset file or its .meta file on disk, relative to project folder. - Returns a reason for the asset not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset is considered open for edit by the selected version control system. - - - - - Query whether an asset file is open for edit in version control. - - Object representing the asset whose status you wish to query. - Path to the asset file or its .meta file on disk, relative to project folder. - Returns a reason for the asset not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset is considered open for edit by the selected version control system. - - - - - Query whether an asset file is open for edit in version control. - - Object representing the asset whose status you wish to query. - Path to the asset file or its .meta file on disk, relative to project folder. - Returns a reason for the asset not being open for edit. - Options for how the version control system should be queried. These options can effect the speed and accuracy of the query. - - - True if the asset is considered open for edit by the selected version control system. - - - - - Does the asset form part of another asset? - - The asset Object to query. - Instance ID of the asset Object to query. - - - - Does the asset form part of another asset? - - The asset Object to query. - Instance ID of the asset Object to query. - - - - Given a path to a folder, returns true if it exists, false otherwise. - - The path to the folder. - - Returns true if the folder exists. - - - - - Returns all sub Assets at assetPath. - - - - - - Returns an array of all Assets at assetPath. - - Filesystem path to the asset. - - - - Returns the first asset object of type type at given path assetPath. - - Path of the asset to load. - Data type of the asset. - - The asset matching the parameters. - - - - - Returns the main asset object at assetPath. - - Filesystem path of the asset to load. - - - - Move an asset file (or folder) from one folder to another. - - The path where the asset currently resides. - The path which the asset should be moved to. - - An empty string if the asset has been successfully moved, otherwise an error message. - - - - - Moves the asset at path to the trash. - - - - - - Opens the asset with associated application. - - - - - - - - Opens the asset with associated application. - - - - - - - - Opens the asset with associated application. - - - - - - - - Opens the asset with associated application. - - - - - - - - Opens the asset(s) with associated application(s). - - - - - - Import any changed assets. - - - - - - Import any changed assets. - - - - - - Calling this function will release file handles internally cached by Unity. This allows modifying asset or meta files safely thus avoiding potential file sharing IO errors. - - - - - Remove the assetBundle name from the asset database. The forceRemove flag is used to indicate if you want to remove it even it's in use. - - The assetBundle name you want to remove. - Flag to indicate if you want to remove the assetBundle name even it's in use. - - - - Removes object from its asset (See Also: AssetDatabase.AddObjectToAsset). - - - - - - Remove all the unused assetBundle names in the asset database. - - - - - Rename an asset file. - - The path where the asset currently resides. - The new name which should be given to the asset. - - An empty string, if the asset has been successfully renamed, otherwise an error message. - - - - - Writes all unsaved asset changes to disk. - - - - - Replaces that list of labels on an asset. - - - - - - - Specifies which object in the asset file should become the main object after the next import. - - The object to become the main object. - Path to the asset file. - - - - Begin Asset importing. This lets you group several asset imports together into one larger import. - - - - - Stop Asset importing. This lets you group several asset imports together into one larger import. - - - - - Warning Use the overload with a long localId parameter. Using the overload with an integer localId parameter can cause an integer overflow in localId. This can happen when the object passed to the API is part of a Prefab. - -Get the GUID and local file id from an object instance id. - - InstanceID of the object to retrieve information for. - The object to retrieve GUID and File Id for. - The GUID of the asset. - The local file identifier of this asset. - - True if the guid and file id were successfully found, false if not. - - - - - Warning Use the overload with a long localId parameter. Using the overload with an integer localId parameter can cause an integer overflow in localId. This can happen when the object passed to the API is part of a Prefab. - -Get the GUID and local file id from an object instance id. - - InstanceID of the object to retrieve information for. - The object to retrieve GUID and File Id for. - The GUID of the asset. - The local file identifier of this asset. - - True if the guid and file id were successfully found, false if not. - - - - - Warning Use the overload with a long localId parameter. Using the overload with an integer localId parameter can cause an integer overflow in localId. This can happen when the object passed to the API is part of a Prefab. - -Get the GUID and local file id from an object instance id. - - InstanceID of the object to retrieve information for. - The object to retrieve GUID and File Id for. - The GUID of the asset. - The local file identifier of this asset. - - True if the guid and file id were successfully found, false if not. - - - - - Warning Use the overload with a long localId parameter. Using the overload with an integer localId parameter can cause an integer overflow in localId. This can happen when the object passed to the API is part of a Prefab. - -Get the GUID and local file id from an object instance id. - - InstanceID of the object to retrieve information for. - The object to retrieve GUID and File Id for. - The GUID of the asset. - The local file identifier of this asset. - - True if the guid and file id were successfully found, false if not. - - - - - Checks if an asset file can be moved from one folder to another. (Without actually moving the file). - - The path where the asset currently resides. - The path which the asset should be moved to. - - An empty string if the asset can be moved, otherwise an error message. - - - - - Writes the import settings to disk. - - - - - - Result of Asset delete operation - - - - - Tells Unity that the asset was deleted by the callback. Unity will not try to delete the asset, but will delete the cached version and preview file. - - - - - Tells the internal implementation that the callback did not delete the asset. The asset will be delete by the internal implementation. - - - - - Tells Unity that the file cannot be deleted and Unity should leave it alone. - - - - - Base class from which asset importers for specific asset types derive. - - - - - Get or set the AssetBundle name. - - - - - Get or set the AssetBundle variant. - - - - - The path name of the asset for this importer. (Read Only) - - - - - The value is true when no meta file is provided with the imported asset. - - - - - Get or set any user data. - - - - - Map a sub-asset from an imported asset (such as an FBX file) to an external Asset of the same type. - - The identifier of the sub-asset. - The object to be mapped to the internal object. Can belong to another Prefab or Asset, but not the Asset that is being changed. - - - - Retrieves the asset importer for the asset at path. - - - - - - Gets a copy of the external object map used by the AssetImporter. - - - The map between a sub-asset and an external Asset. - - - - - Removes an item from the map of external objects. - - The identifier of the sub-asset. - - Returns true if an element was removed, otherwise false. - - - - - Save asset importer settings if asset importer is dirty. - - - - - Set the AssetBundle name and variant. - - AssetBundle name. - AssetBundle variant. - - - - Represents a unique identifier for a sub-asset embedded in an imported Asset (such as an FBX file). - - - - - The name of the Asset. - - - - - The type of the Asset. - - - - - Constructs a SourceAssetIdentifier. - - The the sub-asset embedded in the imported Asset. - The type of the sub-asset embedded in the imported Asset. - The name of the sub-asset embedded in the imported Asset. - - - - Constructs a SourceAssetIdentifier. - - The the sub-asset embedded in the imported Asset. - The type of the sub-asset embedded in the imported Asset. - The name of the sub-asset embedded in the imported Asset. - - - - Checks if the AssetImporter supports remapping the given asset type. - - The type of asset to check. - - Returns true if the importer supports remapping the given type. Otherwise, returns false. - - - - - AssetModificationProcessor lets you hook into saving of serialized assets and - scenes which are edited inside Unity. - - - - - Result of Asset move - - - - - Tells the internal implementation that the script moved the asset physically on disk. - - - - - Tells the internal implementation that the asset was not moved physically on disk by the script. - - - - - Tells the internal implementation that the script could not move the assets. - - - - - AssetPostprocessor lets you hook into the import pipeline and run scripts prior or after importing assets. - - - - - Reference to the asset importer. - - - - - The path name of the asset being imported. - - - - - The import context. - - - - - Override the order in which importers are processed. - - - - - Returns the version of the asset postprocessor. - - - - - Logs an import error message to the console. - - - - - - - Logs an import error message to the console. - - - - - - - Logs an import warning to the console. - - - - - - - Logs an import warning to the console. - - - - - - - Utility for fetching asset previews by instance ID of assets, See AssetPreview.GetAssetPreview. Since previews are loaded asynchronously methods are provided for requesting if all previews have been fully loaded, see AssetPreview.IsLoadingAssetPreviews. Loaded previews are stored in a cache, the size of the cache can be controlled by calling [AssetPreview.SetPreviewTextureCacheSize]. - - - - - Returns a preview texture for an asset. - - - - - - Returns a preview texture for an instanceID of an asset. - - - - - Returns the thumbnail for an object (like the ones you see in the project view). - - - - - - Returns the thumbnail for the type. - - - - - - Returns the thumbnail for the object's type. - - - - - Loading previews is asynchronous so it is useful to know if a specific asset preview is in the process of being loaded so client code e.g can repaint while waiting for the loading to finish. - - InstanceID of the assset that a preview has been requested for by: AssetPreview.GetAssetPreview(). - - - - Loading previews is asynchronous so it is useful to know if any requested previews are in the process of being loaded so client code e.g can repaint while waiting. - - - - - Set the asset preview cache to a size that can hold all visible previews on the screen at once. - - The number of previews that can be loaded into the cache before the least used previews are being unloaded. - - - - AssetSettingsProvider is a specialization of the SettingsProvider class that converts legacy settings to Unified Settings. Legacy settings include any settings that used the Inspector to modify themselves, such as the *.asset files under the ProjectSettings folder. Under the hood, AssetSettingsProvider creates an Editor for specific Assets and builds the UI for the Settings window by wrapping the Editor.OnInspectorGUI function. - -Internally we use this class to wrap our existing settings. - - - - - Editor providing UI to modify the settings. - - - - - Create an AssetSettingsProvider from an asset path. - - Path of the settings in the Settings window. Uses "/" as separator. The last token becomes the settings label if none is provided. - Path of the asset on disk. - List of keywords to compare against what the user is searching for. When the user enters values in the search box on the Settings window, SettingsProvider.HasSearchInterest tries to match those keywords to this list. - - Returns an AssetSettingsProvider that will create an Editor for this particular asset. - - - - - Create an AssetSettingsProvider from a settings object. - - Path of the settings in the Settings window. Uses "/" as separator. The last token becomes the settings label if none is provided. - Settings object to display - List of keywords to compare against what the user is searching for. When the user enters values in the search box on the Settings window, SettingsProvider.HasSearchInterest tries to match those keywords to this list. - - Returns an AssetSettingsProvider that will create an Editor for this particular asset. - - - - - Create an AssetSettingsProvider from an asset resource path. - - Path of the settings in the Settings window. Uses "/" as separator. The last token becomes the settings label if none is provided. - Path of the resource on disk. - List of keywords to compare against what the user is searching for. When the user enters values in the search box on the Settings window, SettingsProvider.HasSearchInterest tries to match those keywords to this list. - - Returns an AssetSettingsProvider that will create an Editor for this particular asset. - - - - - Creates a new AssetSettingsProvider so you can wrap legacy settings (that is, settings that previously appeared in the Inspector). - - Path of the settings in the Settings window. Uses "/" as separator. The last token becomes the settings label if none is provided. - Functor creating an Editor able to modify the settings. - List of keywords to compare against what the user is searching for. When the user enters values in the search box on the Settings window, SettingsProvider.HasSearchInterest tries to match those keywords to this list. - Functor creating or getting a settings object. - - - - Creates a new AssetSettingsProvider so you can wrap legacy settings (that is, settings that previously appeared in the Inspector). - - Path of the settings in the Settings window. Uses "/" as separator. The last token becomes the settings label if none is provided. - Functor creating an Editor able to modify the settings. - List of keywords to compare against what the user is searching for. When the user enters values in the search box on the Settings window, SettingsProvider.HasSearchInterest tries to match those keywords to this list. - Functor creating or getting a settings object. - - - - Overrides SettingsProvider.OnActivate for this AssetSettingsProvider. - - Search context in the search box on the Settings window. - Root of the UIElements tree. If you add to this root, the SettingsProvider uses UIElements instead of calling SettingsProvider.OnGUI to build the UI. If you do not add to this VisualElement, then you must use the IMGUI to build the UI. - - - - Overrides SettingsProvider.OnDeactivate for this AssetSettingsProvider. - - - - - Overrides SettingsProvider.OnFooterBarGUI for this AssetSettingsProvider. - - - - - Overrides SettingsProvider.OnGUI for this AssetSettingsProvider. - - Search context for the Settings window. Used to show or hide relevant properties. - - - - Overrides SettingsProvider.OnTitleBarGUI for this AssetSettingsProvider. This draws the button bar that contains the "add to preset" and the "help" buttons. - - - - - Antialiased curve rendering functionality used by audio tools in the editor. - - - - - Curve evaluation function that allows simultaneous evaluation of the curve y-value and a color of the curve at that point. - - Normalized x-position in the range [0; 1] at which the curve should be evaluated. - Color of the curve at the evaluated point. - - - - Curve evaluation function used to evaluate the curve y-value and at the specified point. - - Normalized x-position in the range [0; 1] at which the curve should be evaluated. - - - - Curve evaluation function that allows simultaneous evaluation of the min- and max-curves. The returned minValue and maxValue values are expected to be in the range [-1; 1] and a value of 0 corresponds to the vertical center of the rectangle that is drawn into. Values outside of this range will be clamped. Additionally the color of the curve at this point is evaluated. - - Normalized x-position in the range [0; 1] at which the min- and max-curves should be evaluated. - Color of the curve at the specified evaluation point. - Returned value of the minimum curve. Clamped to [-1; 1]. - Returned value of the maximum curve. Clamped to [-1; 1]. - - - - Renders a thin curve determined by the curve evaluation function. The solid color of the curve is set by the curveColor argument. - - Rectangle determining the size of the graph. - Curve evaluation function. - Solid fill color of the curve. The alpha-channel determines the amount of opacity. - - - - Fills the area between the curve evaluated by the AudioCurveAndColorEvaluator provided and the bottom of the rectngle with smooth gradients along the edges. - - Rectangle determining the size of the graph. - Normalized x-position in the range [0; 1] at which the curve should be evaluated. The returned value is expected to be in the range [-1; 1] and a value of 0 corresponds to the vertical center of the rectangle that is drawn into. Values outside of this range will be clamped. - Solid fill color of the curve. The alpha-channel determines the amount of opacity. - - - - Fills the area between the curve evaluated by the AudioCurveAndColorEvaluator provided and the bottom of the rectngle with smooth gradients along the edges. - - Rectangle determining the size of the graph. - Normalized x-position in the range [0; 1] at which the curve should be evaluated. The returned value is expected to be in the range [-1; 1] and a value of 0 corresponds to the vertical center of the rectangle that is drawn into. Values outside of this range will be clamped. - Solid fill color of the curve. The alpha-channel determines the amount of opacity. - - - - Fills the area between the two curves evaluated by the AudioMinMaxCurveAndColorEvaluator provided with smooth gradients along the edges. - - Rectangle determining the size of the graph. - Normalized x-position in the range [0; 1] at which the min- and max-curves should be evaluated. The returned minValue and maxValue values are expected to be in the range [-1; 1] and a value of 0 corresponds to the vertical center of the rectangle that is drawn into. Values outside of this range will be clamped. - - - - Fills the area between the curve evaluated by the AudioCurveAndColorEvaluator provided and its vertical mirror image with smooth gradients along the edges. Useful for drawing amplitude plots of audio signals. - - Rectangle determining the size of the graph. - Normalized x-position in the range [0; 1] at which the curve should be evaluated. The returned value is expected to be in the range [0; 1] and a value of 0 corresponds to the vertical center of the rectangle that is drawn into. Values outside of this range will be clamped. - - - - Audio importer lets you modify AudioClip import settings from editor scripts. - - - - - When this flag is set, the audio clip will be treated as being ambisonic. - - - - - Compression bitrate. - - - - - The default sample settings for the AudioClip importer. - - - - - Force audioclips to mono? - - - - - Corresponding to the "Load In Background" flag in the AudioClip inspector, when this flag is set, the loading of the clip will happen delayed without blocking the main thread. - - - - - Preloads audio data of the clip when the clip asset is loaded. When this flag is off, scripts have to call AudioClip.LoadAudioData() to load the data before the clip can be played. Properties like length, channels and format are available before the audio data has been loaded. - - - - - Clears the sample settings override for the given platform. - - The platform to clear the overrides for. - - Returns true if any overrides were actually cleared. - - - - - Returns whether a given build target has its sample settings currently overridden. - - The platform to query if this AudioImporter has an override for. - - Returns true if the platform is currently overriden in this AudioImporter. - - - - - Return the current override settings for the given platform. - - The platform to get the override settings for. - - The override sample settings for the given platform. - - - - - Sets the override sample settings for the given platform. - - The platform which will have the sample settings overridden. - The override settings for the given platform. - - Returns true if the settings were successfully overriden. Some setting overrides are not possible for the given platform, in which case false is returned and the settings are not registered. - - - - - This structure contains a collection of settings used to define how an AudioClip should be imported. - -This structure is used with the AudioImporter to define how the AudioClip should be imported and treated during loading within the Scene. - - - - - CompressionFormat defines the compression type that the audio file is encoded to. Different compression types have different performance and audio artifact characteristics. - - - - - LoadType defines how the imported AudioClip data should be loaded. - - - - - Audio compression quality (0-1) - -Amount of compression. The value roughly corresponds to the ratio between the resulting and the source file sizes. - - - - - Target sample rate to convert to when samplerateSetting is set to OverrideSampleRate. - - - - - Defines how the sample rate is modified (if at all) of the importer audio file. - - - - - The sample rate setting used within the AudioImporter. This defines the sample rate conversion of audio on import. - - - - - Let Unity deduce the optimal sample rate for the AudioClip being imported. The audio file will be analysed and a minimal sample rate chosen while still preserving audio quality. - - - - - Override the sample rate of the imported audio file with a custom value. - - - - - Do not change the sample rate of the imported audio file. The sample rate will be preserved for the imported AudioClip. - - - - - An exception class that represents a failed build. - - - - - Constructs a BuildFailedException object. - - A string of text describing the error that caused the build to fail. - The exception that caused the build to fail. - - - - Constructs a BuildFailedException object. - - A string of text describing the error that caused the build to fail. - The exception that caused the build to fail. - - - - Container for holding asset loading information for an AssetBundle to be built. - - - - - List of asset loading information for an AssetBundle. - - - - - Friendly AssetBundle name. - - - - - Default constructor for an empty AssetBundleInfo. - - - - - Container for holding preload information for a given serialized Asset. - - - - - Friendly name used to load the built asset. - - - - - GUID for the given asset. - - - - - List of objects that an asset contains in its source file. - - - - - List of objects that an asset references. - - - - - Default constructor for an empty AssetLoadInfo. - - - - - Struct containing settings that control the compression method of content. - - - - - Returns a BuildCompression struct set with the default values used for Lz4HC compression. - - - - - Returns a BuildCompression struct set with the default values used for LZMA compression. - - - - - Returns a BuildCompression struct set with the default values used for uncompressed. - - - - - Container for holding information about where objects will be serialized in a build. - - - - - Adds a mapping for a single Object to where it will be serialized out to the build. - - - - - - - - - Adds mappings for a set of Objects to where they will be serialized out to the build. - - - - - - - - Adds mappings for a set of Objects to where they will be serialized out to the build. - - - - - - - - Default constructor for an empty BuildReferenceMap. - - - - - Dispose the BuildReferenceMap destroying all internal state. - - - - - Returns true if the objects are equal. - - - - - - Gets the hash for the BuildReferenceMap. - - - - - Gets the hash code for the BuildReferenceMap. - - - - - ISerializable method for serialization support outside of Unity's internal serialization system. - - - - - - - Struct containing information on how to build content. - - - - - Specific build options to use when building content. - - - - - Platform group for which content will be built. - - - - - Platform target for which content will be built. - - - - - Type information to use for building content. - - - - - Caching object for the Scriptable Build Pipeline. - - - - - Default contructor. - - - - - Dispose the BuildUsageCache destroying all internal state. - - - - - Container for holding information about lighting information being used in a build. - - - - - Combines the usage data from another BuildUsageTagGlobal with this BuildUsageTagGlobal. - - - - - - - Container for holding information about how objects are being used in a build. - - - - - Default constructor for an empty BuildUsageTagSet. - - - - - Dispose the BuildUsageTagSet destroying all internal state. - - - - - Returns true if the objects are equal. - - - - - - Gets the hash for the BuildReferenceMap. - - - - - Gets the hash code for the BuildUsageTagSet. - - - The hash code of the BuildUsageTagSet. - - - - - ISerializable method for serialization support outside of Unity's internal serialization system. - - - - - - - Returns an array of ObjectIdentifiers that this BuildUsageTagSet contains usage information about. - - - - - Adds the Object usage information from another BuildUsageTagSet to this BuildUsageTagSet. - - Object usage information to be added to this BuildUsageTagSet. - - - - Enum to indicate if compression should emphasize speed or size. - - - - - Content should be compressed as fast. - - - - - Content should be compressed as fast as possible. - - - - - Content should be compressed small. - - - - - Content should be compressed as small as possible. - - - - - None. Defaults to Normal. - - - - - Content should be ballanced between size and speed. - - - - - Enum containing the types of compression supported for built content. - - - - - Chunk-based content compression. - - - - - Chunk-based content compression using the high compression variant. - - - - - Single stream content compression. - - - - - Uncompressed content. - - - - - Build options for content. - - - - - Do not include type information within the built content. - - - - - Build content with no additional options. - - - - - Low level interface for building content for Unity. - - - - - Combines resource files into a single archive and compresses them based on the passed in options. - - - - - - - - Calculates the build usage of a set of objects. - - Objects that will have their build usage calculated. - Objects that reference the Objects being calculated. - Lighting information used by the build. - The BuildUsageTagSet where the calculated usage information will be stored. - Optional cache object to use for improving performance with multiple calls to this api. - - - - Calculates the build usage of a set of objects. - - Objects that will have their build usage calculated. - Objects that reference the Objects being calculated. - Lighting information used by the build. - The BuildUsageTagSet where the calculated usage information will be stored. - Optional cache object to use for improving performance with multiple calls to this api. - - - - Returns an array of AssetBundleBuild structs that detail the current asset bundle layout set in the AssetDatabase. - - - - - Returns a list of objects referenced by an object. - - - - - - - - Returns a list of objects referenced by a set of objects. - - - - - - - - Returns a list of objects directly contained inside of an asset. - - - - - - - Gets the type of an object specified by an ObjectIdentifier. - - - - - - Gets the types of all the objects specified by ObjectIdentifiers. - - - - - - Calculates the Scene dependency information and writes a post processed Scene to disk. - - Optional cache object to use for improving performance with multiple calls to this api. - Input path of the Scene to prepare. - Settings to use for preparing the Scene. - Output usage information generated from preparing the Scene. - Output location where the post prepared Scene will be saved. - - Dependency information for the Scene. - - - - - Calculates the Scene dependency information and writes a post processed Scene to disk. - - Optional cache object to use for improving performance with multiple calls to this api. - Input path of the Scene to prepare. - Settings to use for preparing the Scene. - Output usage information generated from preparing the Scene. - Output location where the post prepared Scene will be saved. - - Dependency information for the Scene. - - - - - Writes Scene objects to a serialized file on disk. - - - - - - - - - - - - - - - Writes Scene objects to a serialized file on disk. - - - - - - - - - - - - - - - Writes Scene objects to a serialized file on disk. - - - - - - - - - - - - - - - Writes objects to a serialized file on disk. - - - - - - - - - - - - Writes objects to a serialized file on disk. - - - - - - - - - - - - Enum description of the type of file an object comes from. - - - - - Object is contained in a very old format. Currently unused. - - - - - Object is contained in the imported asset meta data located in the Library folder. - - - - - Object is contained in file not currently tracked by the AssetDatabase. - - - - - Object is contained in a standard asset file type located in the Assets folder. - - - - - Struct that identifies a specific object project wide. - - - - - The file path on disk that contains this object. (Only used for objects not known by the AssetDatabase). - - - - - Type of file that contains this object. - - - - - The specific asset that contains this object. - - - - - The index of the object inside a serialized file. - - - - - Returns true if the objects are equal. - - - - - - Gets the hash code for the ObjectIdentifier. - - - - - Returns true if the ObjectIdentifiers are the same. - - - - - - - Returns true if the first ObjectIdentifier is greater than the second ObjectIdentifier. - - - - - - - Returns true if the first ObjectIdentifier is less than the second ObjectIdentifier. - - - - - - - Returns true if the ObjectIdentifiers are different. - - - - - - - Returns a nicely formatted string for this ObjectIdentifier. - - - - - Struct containing details about how an object was serialized. - - - - - Serialized object header information. - - - - - Raw byte data of the object if it was serialized seperately from the header. - - - - - Object that was serialized. - - - - - Container for holding a list of preload objects for a Scene to be built. - - - - - List of Objects for a serialized Scene that need to be preloaded. - - - - - Default constructor for an empty PreloadInfo. - - - - - Details about a specific file written by the ContentBuildInterface.WriteSerializedFile or ContentBuildInterface.WriteSceneSerializedFile APIs. - - - - - Internal name used by the loading system for a resource file. - - - - - Path to the resource file on disk. - - - - - Bool to determine if this resource file represents serialized Unity objects (serialized file) or binary resource data. - - - - - Container for holding asset loading information for a streamed Scene AssetBundle to be built. - - - - - Friendly AssetBundle name. - - - - - List of Scene loading information for an AssetBundle. - - - - - Default constructor for an empty SceneBundleInfo. - - - - - Scene dependency information generated from the ContentBuildInterface.PrepareScene API. - - - - - Lighting information used by the Scene. - - - - - Path to the post processed version of the Scene. - - - - - List of objects referenced by the Scene. - - - - - Scene's original asset path. - - - - - Container for holding preload information for a given serialized Scene in an AssetBundle. - - - - - Friendly name used to load the built Scene from an asset bundle. - - - - - GUID for the given Scene. - - - - - Internal name used to load the built Scene from an asset bundle. - - - - - Default constructor for an empty SceneLoadInfo. - - - - - Container for holding object serialization order information for a build. - - - - - Order in which the object will be serialized to disk. - - - - - Source object to be serialzied to disk. - - - - - Default constructor for an empty SerializationInfo. - - - - - Struct containing information about where an object was serialized. - - - - - File path on disk where the object was serialized. - - - - - Byte offset for the start of the object's data. - - - - - Size of the object's data. - - - - - Container for holding information about a serialized file to be written. - - - - - Final file name on disk of the serialized file. - - - - - Internal name used by the loading system for a serialized file. - - - - - List of objects and their order contained inside a serialized file. - - - - - Default constructor for an empty WriteCommand. - - - - - Struct containing the results from the ContentBuildPipeline.WriteSerialziedFile and ContentBuildPipeline.WriteSceneSerialziedFile APIs. - - - - - Types that were included in the serialized file. - - - - - Collection of files written by the ContentBuildInterface.WriteSerializedFile or ContentBuildInterface.WriteSceneSerializedFile APIs. - - - - - Collection of objects written to the serialized file. - - - - - Implement this interface to receive a callback after the active build platform has changed. - - - - - This function is called automatically when the active build platform has changed. - - The build target before the change. - The new active build target. - - - - Implement this interface to receive a callback to filter assemblies away from the build. - - - - - Will be called after building script assemblies, but makes it possible to filter away unwanted scripts to be included. - - The current build options. - The list of assemblies that will be included. - - Returns the filtered list of assemblies that are included in the build. - - - - - Interface that provides control over callback order. - - - - - Returns the relative callback order for callbacks. Callbacks with lower values are called before ones with higher values. - - - - - Implement this interface to receive a callback just after the player scripts have been compiled. - - - - - Implement this interface to receive a callback just after the player scripts have been compiled. - - A report containing information about the build, such as its target platform and output path. - - - - Implement this interface to receive a callback after the build is complete. - - - - - Implement this function to receive a callback after the build is complete. - - - - - - - Implement this interface to receive a callback after the build is complete. - - - - - Implement this function to receive a callback after the build is complete. - - A BuildReport containing information about the build, such as the target platform and output path. - - - - Implement this interface to receive a callback before the build is started. - - - - - Implement this function to receive a callback before the build is started. - - - - - - - Implement this interface to receive a callback before the build is started. - - - - - Implement this function to receive a callback before the build is started. - - A report containing information about the build, such as its target platform and output path. - - - - Implement this interface to receive a callback before a shader is compiled. - - - - - Implement this interface to receive a callback before a shader snippet is compiled. - - Shader that is being compiled. - Details about the specific shader code being compiled. - List of variants to be compiled for the specific shader code. - - - - Implement this interface to receive a callback for each Scene during the build. - - - - - Implement this function to receive a callback for each Scene during the build. - - The current Scene being processed. - - - - Implement this interface to receive a callback for each Scene during the build. - - - - - Implement this function to receive a callback for each Scene during the build. - - The current Scene being processed. - A report containing information about the current build. When this callback is invoked for Scene loading during Editor playmode, this parameter will be null. - - - - Low level interface for building scripts for Unity. - - - - - Compiles user scripts into one or more assemblies. - - - - - - - Script compilation options. - - - - - Include assertions in the compiled scripts. By default, the assertions are only included in development builds. - - - - - Build a development version of the scripts. - - - - - Compiled the scripts without any special settings. - - - - - Struct with result information returned from the PlayerBuildInterface.CompilePlayerScripts API. - - - - - Collection of assemblies compiled. - - - - - Type information generated by the script compilation call. - - - - - Struct containing information on how to build scripts. - - - - - Platform group for which scripts will be compiled. - - - - - Specific compiler options to use when compiling scripts. - - - - - Platform group for which scripts will be compiled. - - - - - Container for holding information about script type and property data. - - - - - Dispose the TypeDB destroying all internal state. - - - - - Returns true if the objects are equal. - - - - - - Gets the hash for the BuildReferenceMap. - - - - - Gets the hash code for the TypeDB. - - - - - ISerializable method for serialization support outside of Unity's internal serialization system. - - - - - - - Contains information about a single file produced by the build process. - - - - - The absolute path of the file produced by the build process. - - - - - The role the file plays in the build output. - - - - - The total size of the file, in bytes. - - - - - The BuildReport API gives you information about the Unity build process. - - - - - An array of all the files output by the build process. - - - - - An array of all the BuildSteps that took place during the build process. - - - - - The StrippingInfo object for the build. - - - - - A BuildSummary containing overall statistics and data about the build process. - - - - - Describes the outcome of the build process. - - - - - Indicates that the build was cancelled by the user. - - - - - Indicates that the build failed. - - - - - Indicates that the build completed successfully. - - - - - Indicates that the outcome of the build is in an unknown state. - - - - - Contains information about a single step in the build process. - - - - - The nesting depth of the build step. - - - - - The total duration for this build step. - - - - - All log messages recorded during this build step, in the order of which they occurred. - - - - - The name of this build step. - - - - - Contains information about a single log message recorded during the build process. - - - - - The text content of the log message. - - - - - The LogType of the log message. - - - - - Contains overall summary information about a build. - - - - - The time the build ended. - - - - - The time the build was started. - - - - - The Application.buildGUID of the build. - - - - - The BuildOptions used for the build, as passed to BuildPipeline.BuildPlayer. - - - - - The output path for the build, as provided to BuildPipeline.BuildPlayer. - - - - - The platform that the build was created for. - - - - - The platform group the build was created for. - - - - - The outcome of the build. - - - - - The total number of errors and exceptions recorded during the build process. - - - - - The total size of the build output, in bytes. - - - - - The total time taken by the build process. - - - - - The total number of warnings recorded during the build process. - - - - - This class provides constant values for some of the common roles used by files in the build. The role of each file in the build is available in BuildFile.role. - - - - - The BuildFile.role value of the file that provides config information used in Low Integrity mode on Windows. - - - - - The BuildFile.role value of built AssetBundle files. - - - - - The BuildFile.role value of an AssetBundle manifest file, produced during the build process, that contains information about the bundle and its dependencies. - - - - - The BuildFile.role value of the file that contains configuration information for the very early stages of engine startup. - - - - - The BuildFile.role value of the file that contains built-in resources for the engine. - - - - - The BuildFile.role value of the file that contains Unity's built-in shaders, such as the Standard shader. - - - - - The BuildFile.role value of the executable that is used to capture crashes from the player. - - - - - The BuildFile.role value of files that contain information for debuggers. - - - - - The BuildFile.role value of a managed library that is present in the build due to being a dependency of a CommonRoles.managedLibrary. - - - - - The BuildFile.role value of the main Unity runtime when it is built as a separate library. - - - - - The BuildFile.role value of an executable - the file that will actually be launched on the target device. - - - - - The BuildFile.role value of the file that contains global Project Settings data for the player. - - - - - The BuildFile.role value of files that provide the managed API for Unity. - - - - - The BuildFile.role value of a managed assembly, containing compiled script code. - - - - - The BuildFile.role value of a manifest AssetBundle, which is an AssetBundle that contains information about other AssetBundles and their dependencies. - - - - - The BuildFile.role value of files that are used as configuration data by the Mono runtime. - - - - - The BuildFile.role value of files that make up the Mono runtime itself. - - - - - The BuildFile.role value of the file that contains the contents of the project's "Resources" folder, packed into a single file. - - - - - The BuildFile.role value of a file that contains the packed content of a Scene. - - - - - The BuildFile.role value of a file that contains asset objects which are shared between Scenes. Examples of asset objects are textures, models, and audio. - - - - - The BuildFile.role value of files that have been copied into the build without modification from the StreamingAssets folder in the project. - - - - - The BuildFile.role value of a file that contains streaming resource data. - - - - - The StrippingInfo object contains information about which native code modules in the engine are still present in the build, and the reasons why they are still present. - - - - - The native engine modules that were included in the build. - - - - - Returns the list of dependencies or reasons that caused the given entity to be included in the build. - - The name of an engine module, class, or other entity present in the build. - - A list of modules, classes, or other entities that caused the provided entity to be included in the build. - - - - - Asset Bundle building options. - - - - - Append the hash to the assetBundle name. - - - - - Use chunk-based LZ4 compression when creating the AssetBundle. - - - - - Includes all dependencies. - - - - - Forces inclusion of the entire asset. - - - - - Builds an asset bundle using a hash for the id of the object stored in the asset bundle. - - - - - Disables Asset Bundle LoadAsset by file name. - - - - - Disables Asset Bundle LoadAsset by file name with extension. - - - - - Do not include type information within the AssetBundle. - - - - - Do a dry run build. - - - - - Force rebuild the assetBundles. - - - - - Ignore the type tree changes when doing the incremental build check. - - - - - Build assetBundle without any special option. - - - - - Do not allow the build to succeed if any errors are reporting during it. - - - - - Don't compress the data when creating the asset bundle. - - - - - Building options. Multiple options can be combined together. - - - - - Used when building Xcode (iOS) or Eclipse (Android) projects. - - - - - Allow script debuggers to attach to the player remotely. - - - - - Run the built player. - - - - - Build a compressed asset bundle that contains streamed Scenes loadable with the UnityWebRequest class. - - - - - Only build the scripts in a Project. - - - - - Use chunk-based LZ4 compression when building the Player. - - - - - Use chunk-based LZ4 high-compression when building the Player. - - - - - Sets the Player to connect to the Editor. - - - - - Start the player with a connection to the profiler in the editor. - - - - - Build a development version of the player. - - - - - Build headless Linux standalone. - - - - - Include assertions in the build. By default, the assertions are only included in development builds. - - - - - Force full optimizations for script complilation in Development builds. - - - - - Build will include Assemblies for testing. - - - - - Perform the specified build without any special settings or extra tasks. - - - - - Will force the buildGUID to all zeros. - - - - - Show the built player. - - - - - Do not allow the build to succeed if any errors are reporting during it. - - - - - Symlink runtime libraries when generating iOS Xcode project. (Faster iteration time). - - - - - Don't compress the data when creating the asset bundle. - - - - - Copy UnityObject.js alongside Web Player so it wouldn't have to be downloaded from internet. - - - - - Lets you programmatically build players or AssetBundles which can be loaded from the web. - - - - - Is a player currently being built? - - - - - Builds an asset bundle. - - Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. - An array of assets to write into the bundle. - The filename where to write the compressed asset bundle. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform to build the bundle for. - The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle. - - - - Builds an asset bundle. - - Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. - An array of assets to write into the bundle. - The filename where to write the compressed asset bundle. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform to build the bundle for. - The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle. - - - - Builds an asset bundle. - - Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. - An array of assets to write into the bundle. - The filename where to write the compressed asset bundle. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform to build the bundle for. - The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle. - - - - Builds an asset bundle. - - Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. - An array of assets to write into the bundle. - The filename where to write the compressed asset bundle. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform to build the bundle for. - The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle. - - - - Builds an asset bundle. - - Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. - An array of assets to write into the bundle. - The filename where to write the compressed asset bundle. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform to build the bundle for. - The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle. - - - - Builds an asset bundle. - - Lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. - An array of assets to write into the bundle. - The filename where to write the compressed asset bundle. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform to build the bundle for. - The optional crc output parameter can be used to get a CRC checksum for the generated AssetBundle, which can be used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle. - - - - Builds an asset bundle, with custom names for the assets. - - A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. - An array of strings of the same size as the number of assets. -These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. - The location where the compressed asset bundle will be written to. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform where the asset bundle will be used. - An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle().) - - - - Builds an asset bundle, with custom names for the assets. - - A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. - An array of strings of the same size as the number of assets. -These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. - The location where the compressed asset bundle will be written to. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform where the asset bundle will be used. - An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle().) - - - - Builds an asset bundle, with custom names for the assets. - - A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. - An array of strings of the same size as the number of assets. -These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. - The location where the compressed asset bundle will be written to. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform where the asset bundle will be used. - An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle().) - - - - Builds an asset bundle, with custom names for the assets. - - A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. - An array of strings of the same size as the number of assets. -These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. - The location where the compressed asset bundle will be written to. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform where the asset bundle will be used. - An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle().) - - - - Builds an asset bundle, with custom names for the assets. - - A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. - An array of strings of the same size as the number of assets. -These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. - The location where the compressed asset bundle will be written to. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform where the asset bundle will be used. - An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle().) - - - - Builds an asset bundle, with custom names for the assets. - - A collection of assets to be built into the asset bundle. Asset bundles can contain any asset found in the project folder. - An array of strings of the same size as the number of assets. -These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. - The location where the compressed asset bundle will be written to. - Automatically include dependencies or always include complete assets instead of just the exact referenced objects. - The platform where the asset bundle will be used. - An optional output parameter used to get a CRC checksum for the generated AssetBundle. (Used to verify content when downloading AssetBundles using UnityWebRequestAssetBundle.GetAssetBundle().) - - - - Build all AssetBundles specified in the editor. - - Output path for the AssetBundles. - AssetBundle building options. - Chosen target build platform. - - The manifest listing all AssetBundles included in this build. - - - - - Build AssetBundles from a building map. - - Output path for the AssetBundles. - AssetBundle building map. - AssetBundle building options. - Target build platform. - - The manifest listing all AssetBundles included in this build. - - - - - Builds a player. - - Provide various options to control the behavior of BuildPipeline.BuildPlayer. - - A BuildReport giving build process information. - - - - - Builds a player. These overloads are still supported, but will be replaced. Please use BuildPlayer (BuildPlayerOptions buildPlayerOptions) instead. - - The Scenes to be included in the build. If empty, the currently open Scene will be built. Paths are relative to the project folder (AssetsMyLevelsMyScene.unity). - The path where the application will be built. - The BuildTarget to build. - Additional BuildOptions, like whether to run the built player. - - An error message if an error occurred. - - - - - Builds a player. These overloads are still supported, but will be replaced. Please use BuildPlayer (BuildPlayerOptions buildPlayerOptions) instead. - - The Scenes to be included in the build. If empty, the currently open Scene will be built. Paths are relative to the project folder (AssetsMyLevelsMyScene.unity). - The path where the application will be built. - The BuildTarget to build. - Additional BuildOptions, like whether to run the built player. - - An error message if an error occurred. - - - - - Builds one or more Scenes and all their dependencies into a compressed asset bundle. - - Pathnames of levels to include in the asset bundle. - Pathname for the output asset bundle. - Runtime platform on which the asset bundle will be used. - Output parameter to receive CRC checksum of generated assetbundle. - Build options. See BuildOptions for possible values. - - String with an error message, empty on success. - - - - - Builds one or more Scenes and all their dependencies into a compressed asset bundle. - - Pathnames of levels to include in the asset bundle. - Pathname for the output asset bundle. - Runtime platform on which the asset bundle will be used. - Output parameter to receive CRC checksum of generated assetbundle. - Build options. See BuildOptions for possible values. - - String with an error message, empty on success. - - - - - Builds one or more Scenes and all their dependencies into a compressed asset bundle. - - Pathnames of levels to include in the asset bundle. - Pathname for the output asset bundle. - Runtime platform on which the asset bundle will be used. - Output parameter to receive CRC checksum of generated assetbundle. - Build options. See BuildOptions for possible values. - - String with an error message, empty on success. - - - - - Builds one or more Scenes and all their dependencies into a compressed asset bundle. - - Pathnames of levels to include in the asset bundle. - Pathname for the output asset bundle. - Runtime platform on which the asset bundle will be used. - Output parameter to receive CRC checksum of generated assetbundle. - Build options. See BuildOptions for possible values. - - String with an error message, empty on success. - - - - - Extract the crc checksum for the given AssetBundle. - - - - - - - Extract the hash for the given AssetBundle. - - - - - - - Returns true if the specified build target is currently available in the Editor. - - build target group - build target - - - - Lets you manage cross-references and dependencies between different asset bundles and player builds. - - - - - Lets you manage cross-references and dependencies between different asset bundles and player builds. - - - - - Provide various options to control the behavior of BuildPipeline.BuildPlayer. - - - - - The path to an manifest file describing all of the asset bundles used in the build (optional). - - - - - The path where the application will be built. - - - - - Additional BuildOptions, like whether to run the built player. - - - - - The Scenes to be included in the build. If empty, the currently open Scene will be built. Paths are relative to the project folder (AssetsMyLevelsMyScene.unity). - - - - - The BuildTarget to build. - - - - - The BuildTargetGroup to build. - - - - - The default build settings window. - - - - - Exceptions used to indicate abort or failure in the callbacks registered via BuildPlayerWindow.RegisterBuildPlayerHandler and BuildPlayerWindow.RegisterGetBuildPlayerOptionsHandler. - - - - - Create a new BuildMethodException. - - Display this message as an error in the editor log. - - - - Create a new BuildMethodException. - - Display this message as an error in the editor log. - - - - Default build methods for the BuildPlayerWindow. - - - - - The built-in, default handler for executing a player build. Can be used to provide default functionality in a custom build player window. - - The options to build with. - - - - The built-in, default handler for calculating build player options. Can be used to provide default functionality in a custom build player window. - - Default options. - - The calculated BuildPlayerOptions. - - - - - Register a delegate to intercept or override the build process executed with the "Build" and "Build and Run" buttons. Registering a null value will restore default behavior, which is the equivalent of calling BuildPlayerWindow.DefaultBuildMethods.BuildPlayer. - - Delegate System.Action that takes a BuildPipeline.BuildPlayerOptions parameter. - - - - Register a delegate method to calculate BuildPlayerOptions that are passed to the build player handler. Registering a null value will restore default behavior, which is the equivalent of calling BuildPlayerWindow.DefaultBuildMethods.GetBuildPlayerOptions. - - Delegate System.Func that takes a BuildPlayerOptions parameter. The value passed into the delegate will represent default options. The return value will be passed to the default build player handler, or to a custom handler set with BuildPlayerWindow.RegisterBuildPlayerHandler. - - - - Open the build settings window. - - - - - Target build platform. - - - - - Build an iOS player. - - - - - OBSOLETE: Use iOS. Build an iOS player. - - - - - Build to Apple's tvOS platform. - - - - - Build an Android .apk standalone app. - - - - - Build to Nintendo 3DS platform. - - - - - Build a PS4 Standalone. - - - - - Build a Linux standalone. - - - - - Build a Linux 64-bit standalone. - - - - - Build a Linux universal standalone. - - - - - Build a macOS standalone (Intel 64-bit). - - - - - Build a macOS Intel 32-bit standalone. (This build target is deprecated) - - - - - Build a macOS Intel 64-bit standalone. (This build target is deprecated) - - - - - Build a Windows standalone. - - - - - Build a Windows 64-bit standalone. - - - - - Build a Nintendo Switch player. - - - - - WebGL. - - - - - Build a web player. (This build target is deprecated. Building for web player will no longer be supported in future versions of Unity.) - - - - - Build a streamed web player. - - - - - Build an Windows Store Apps player. - - - - - Build a Xbox One Standalone. - - - - - Build target group. - - - - - Apple iOS target. - - - - - OBSOLETE: Use iOS. Apple iOS target. - - - - - Apple's tvOS target. - - - - - Android target. - - - - - Facebook target. - - - - - Nintendo 3DS target. - - - - - Sony Playstation 4 target. - - - - - Mac/PC standalone target. - - - - - Nintendo Switch target. - - - - - Unknown target. - - - - - WebGL. - - - - - Mac/PC webplayer target. - - - - - Windows Store Apps target. - - - - - Microsoft Xbox One target. - - - - - Base class for Attributes that require a callback index. - - - - - Add this attribute to a method to get a notification after scripts have been reloaded. - - - - - DidReloadScripts attribute. - - Order in which separate attributes will be processed. - - - - DidReloadScripts attribute. - - Order in which separate attributes will be processed. - - - - Callback attribute for opening an asset in Unity (e.g the callback is fired when double clicking an asset in the Project Browser). - - - - - Add this attribute to a method to get a notification just after building the player. - - - - - Add this attribute to a method to get a notification just after building the Scene. - - - - - Unity Camera Editor. - - - - - Settings for the camera editor. - - - - - See ScriptableObject.OnDestroy. - - - - - See ScriptableObject.OnEnable. - - - - - See Editor.OnInspectorGUI. - - - - - See Editor.OnSceneGUI. - - - - - Contains all drawable elements of the CameraEditor. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - See SerializedObject.ApplyModifiedProperties. - - - - - Draws the default [[CameraEditor] background color widget. - - - - - Draws the default [[CameraEditor] clear flags widget. - - - - - Draws the default [[CameraEditor] clipping planes widget. - - - - - Draws the default [[CameraEditor] culling mask widget. - - - - - Draws the default [[CameraEditor] depth widget. - - - - - Draws the default [[CameraEditor] dynamic resolution widget. - - - - - Draws the default [[CameraEditor] HDR widget. - - - - - Draws the default [[CameraEditor] MSAA widget. - - - - - Draws the default [[CameraEditor] muliple display widget. - - - - - Draws the default [[CameraEditor] viewport widget. - - - - - Draws the default [[CameraEditor] occlusion culling widget. - - - - - Draws the default [[CameraEditor] projection widget. - - - - - Draws the default [[CameraEditor] rendering path widget. - - - - - Draws the default [[CameraEditor] target eye widget. - - - - - Draws the default [[CameraEditor] target texture widget. - - - - - - Draws the default [[CameraEditor] VR widget. - - - - - Exposed SerializedProperty for the inspected Camera. - - - - - Populate the settings object with data linked to the Camera SerializedObject. - - - - - See SerializedObject.Update. - - - - - Utilities for cameras. - - - - - Draw the frustrum gizmo of a camera. - - The camera to use. - - - - The aspect ratio of the game view. - - - - - Calculate the frustrum aspect ratio of a camera. - - Camera to use. - - The frustrum aspect ratio of the provided camera. - - - - - Calculate the points of the frustrum plane facing the viewer at a specific distance. - -The points array will be filled with the calculated points in the following order: left bottom, left top, right top and right bottom. - - Clip space to world space matrix. - View position in world space. - Distance from the view position of the plane. - Calculated points. (A minimum size of 4 elements is required). - - - - Draw the frustrum handles for a camera. - - The camera to use. - - - - Check whether a viewport is valid. - - Viewport to check. - - Whether the viewport is valid. - - - - - Calculate the world space position of a point in clip space. - -The z component will be used to get the point at the distance z from the viewer. - - Clip to world matrix to use. - The viewer's position in world space. - The position in clip space. - - The corresponding world space position. - - - - - Calculate the frustrum corners. - -Corners are calculated in this order: left bottom, left top, right top, right bottom. - - Camera to use. - The corners of the near plane. (A minimum size of 4 elements is required.) - The corners of the far plane. (A minimum size of 4 elements is required.) - The aspect ratio of the frustrum. - - Whether the frustrum was calculated. - - - - - Calculate the frustrum corners from the sensor physical properties, without taking gate fitting into account. -To get the actual frustum with gate fit adjustment, use CameraEditorUtils.TryGetFrustum. -This method is equivalent to CameraEditorUtils.TryGetFrustum for non-physical cameras. - -Corners are calculated in this order: left bottom, left top, right top, right bottom. - - Camera to use. - The corners of the near plane. (A minimum size of 4 elements is required.) - The corners of the far plane. (A minimum size of 4 elements is required.) - The aspect ratio of the frustrum. - - Whether the frustrum was calculated. - - - - - Attribute used to make a custom editor support multi-object editing. - - - - - Stores a curve and its name that will be used to create additionnal curves during the import process. - - - - - The animation curve. - - - - - The name of the animation curve. - - - - - AnimationClip mask options for ModelImporterClipAnimation. - - - - - Use a mask from your project to specify which transforms animation should be imported. - - - - - A mask containing all the transform in the file will be created internally. - - - - - No Mask. All the animation will be imported. - - - - - Use this class to retrieve information about the currently selected project and the current Unity ID that is logged in. - - - - - The ID of the organization that this project belongs to. (Read Only) - - - - - The name of the organization that this project belongs to. (Read Only) - - - - - A unique cloud project identifier. It is unique for every project (Read Only). - - - - - The name of the project entry in the dashboard associated with this project (Read Only). - - - - - The user ID of the currently logged-in Unity ID account (Read Only). - - - - - The user name of the currently logged in Unity ID account (Read Only). - - - - - Used as input to ColorField to configure the HDR color ranges in the ColorPicker. - - - - - Maximum allowed color component value when using the ColorPicker. - - - - - Maximum exposure value allowed in the Color Picker. - - - - - Minimum allowed color component value when using the ColorPicker. - - - - - Minimum exposure value allowed in the Color Picker. - - - - - - - Minimum brightness value allowed when using the Color Picker. - Maximum brightness value allowed when using the Color Picker. - Minimum exposure value used in the tonemapping section of the Color Picker. - Maximum exposure value used in the tonemapping section of the Color Picker. - - - - Flags for Assembly. - - - - - Selects assemblies compiled for the editor. - - - - - Selects assemblies compiled for the player. - - - - - Class that represents an assembly compiled by Unity. - - - - - Returns Assembly.assemblyReferences and Assembly.compiledAssemblyReferences combined. - -This returns all assemblies that are passed to the compiler when building this assembly,. - - - - - Assembly references used to build this assembly. - -The references are also assemblies built as part of the Unity project. - -See Also: Assembly.compiledAssemblyReferences and Assembly.allReferences. - - - - - Assembly references to pre-compiled assemblies that used to build this assembly. - -See Also: Assembly.assemblyReferences and Assembly.allReferences. - - - - - Compiler options used to compile the assembly. - - - - - The defines used to compile this assembly. - - - - - Flags for the assembly. - -See Also: AssemblyFlags. - - - - - The name of the assembly. - - - - - The full output file path of this assembly. - - - - - All the souce files used to compile this assembly. - - - - - Constructor. - - Assembly name. - Assembly output. - Assembliy source files. - Assembly defines. - Assembly references. - Compiled assembly references. - Assembly flags. - - - - Compiles scripts outside the Assets folder into a managed assembly that can be used inside the Assets folder. - - - - - Additional #define directives passed to compilation of the assembly. - - - - - Additional assembly references passed to compilation of the assembly. - - - - - Output path of the assembly to build. (Read Only) - - - - - Event that is invoked on the main thread when the assembly build finishes. - - First parameter is the output assembly path. Second parameter are the compiler messages. - - - - Event that is invoked on the main thread when the assembly build starts. - - Parameter is the output assembly path. - - - - BuildTarget for the assembly build. - - - - - BuildTargetGroup for the assembly build. - - - - - Compiler options to use when building the assembly. - - - - - Default defines used when compiling the assembly. - - - - - Default references used when compiling the assembly. - - - - - References to exclude when compiling the assembly. - - - - - Flags to control the assembly build. - - - - - Array of script paths used as input for assembly build. (Read Only) - - - - - Current status of assembly build. (Read Only) - - - - - Starts the build of the assembly. - -While building, the small progress icon in the lower right corner of Unity's main window will spin and EditorApplication.isCompiling will return true. - - - Returns true if build was started. Returns false if the build was not started due to the editor currently compiling scripts in the Assets folder. - - - - - AssemblyBuilder constructor. - - Path of the output assembly. Relative to project root. - Array of script paths to be compiled into the output assembly. Relative to project root. - - - - Flags used by AssemblyBuilder to control assembly build. - - - - - Defines whether the output assembly is an development build. - - - - - Defines whether the output assembly is an editor assembly. - - - - - None value. Default. - - - - - Status of the AssemblyBuilder build. - - - - - Indicates the AssemblyBuilder build has finished. - - - - - Indicates the AssemblyBuilder build is compiling. - - - - - Indicates the AssemblyBuilder build has not been started. - - - - - An exception throw for Assembly Definition Files errors. - - - - - File paths of the assembly definition files that caused the exception. - - - - - Constructor. - - Exception message. - File paths for assembly definition files. - - - - Contains information about a platform supported by the assembly definition files. - - - - - BuildTarget for the AssemblyDefinitionPlatform. - - - - - Display name for the platform. - - - - - Name used in assembly definition files. - - - - - Flags for Assembly. - - - - - Indicates whether this assembly is an editor only assembly. - - - - - None value. Default. - - - - - Methods and properties for script compilation pipeline. - - - - - An event that is invoked on the main thread when compilation of an assembly finishes. - - First parameter is the output assembly path. Second parameter are the compiler messages. - - - - Event that is invoked on the main thread when the assembly build starts. - - Parameter is the output assembly path. - - - - Get all script assemblies compiled by Unity filtered by AssembliesType. - - - - Array of script assemblies compiled by Unity. - - - - - Returns the assembly definition file path from an assembly name. Returns null if there is no assembly definition file for the given assembly name. - - Assembly name. - - File path of assembly definition file. - - - - - Returns the assembly definition file path for a source (script) path. Returns null if there is no assembly definition file for the given script path. - - Source (script) file path. - - File path of assembly definition file. - - - - - Returns all the platforms supported by assembly definition files. - -See Also: AssemblyDefinitionPlatform. - - - Platforms supported by assembly definition files. - - - - - Returns the assembly name for a source (script) path. Returns null if there is no assembly name for the given script path. - - Source (script) path. - - Assembly name. - - - - - Get all precompiled assembly names. - - - Precompiled assembly names. - - - - - Returns the Assembly file path from an assembly name. Returns null if there is no Precompiled Assembly name match. - - Assembly name. - - File path of precompiled assembly. - - - - - Compiler Message. - - - - - Line column for the message. - - - - - File for the message. - - - - - File line for the message. - - - - - Compiler message. - - - - - Message type. - - - - - Compiler message type. - - - - - Error message. - - - - - Warning message. - - - - - An exception throw for Precompiled Assembly errors. - - - - - File paths for Precompiled Assemblies that caused the exception. - - - - - Constructor. - - Exception message. - File paths for Precompiled Assemblies. - - - - Compiler options passed to the script compiler. - - - - - Allow 'unsafe' code when compiling scripts. - - - - - Creates ScriptCompilerOptions with default values used for script compilation. - - - - - Editor API for the Unity Services editor feature. Normally CrashReporting is enabled from the Services window, but if writing your own editor extension, this API can be used. - - - - - This Boolean field will cause the CrashReporting feature in Unity to capture exceptions that occur in the editor while running in Play mode if true, or ignore those errors if false. - - - - - This Boolean field will cause the CrashReporting feature in Unity to be enabled if true, or disabled if false. - - - - - The Performance Reporting service will keep a buffer of up to the last X log messages (Debug.Log, etc) to send along with crash reports. The default is 10 log messages, the max is 50. Set this to 0 to disable capture of logs with your crash reports. - - - - - Tells an Editor class which run-time type it's an editor for. - - - - - If true, match this editor only if all non-fallback editors do not match. Defaults to false. - - - - - Defines which object type the custom editor class can edit. - - Type that this editor can edit. - If true, child classes of inspectedType will also show this editor. Defaults to false. - - - - Defines which object type the custom editor class can edit. - - Type that this editor can edit. - If true, child classes of inspectedType will also show this editor. Defaults to false. - - - - Tells an Editor class which run-time type it's an editor for when the given RenderPipeline is activated. - - - - - Defines which object type the custom editor class can edit. - - Type that this editor can edit. - Type of RenderPipelineAsset that that should be active for this inspector to be used. - If true, child classes of inspectedType will also show this editor. Defaults to false. - - - - Defines which object type the custom editor class can edit. - - Type that this editor can edit. - Type of RenderPipelineAsset that that should be active for this inspector to be used. - If true, child classes of inspectedType will also show this editor. Defaults to false. - - - - Adds an extra preview in the Inspector for the specified type. - - - - - Tells a DefaultPreview which class it's a preview for. - - The type you want to create a custom preview for. - - - - Tells a custom PropertyDrawer or DecoratorDrawer which run-time Serializable class or PropertyAttribute it's a drawer for. - - - - - Tells a PropertyDrawer or DecoratorDrawer class which run-time class or attribute it's a drawer for. - - If the drawer is for a custom Serializable class, the type should be that class. If the drawer is for script variables with a specific PropertyAttribute, the type should be that attribute. - If true, the drawer will be used for any children of the specified class unless they define their own drawer. - - - - Tells a PropertyDrawer or DecoratorDrawer class which run-time class or attribute it's a drawer for. - - If the drawer is for a custom Serializable class, the type should be that class. If the drawer is for script variables with a specific PropertyAttribute, the type should be that attribute. - If true, the drawer will be used for any children of the specified class unless they define their own drawer. - - - - Direct3D 11 fullscreen mode. - - - - - Exclusive mode. - - - - - Fullscreen window. - - - - - Direct3D 9 fullscreen mode. - - - - - Exclusive mode. - - - - - Fullscreen window. - - - - - Texture importer lets you modify Texture2D import settings for DDS textures from editor scripts. - - - - - Is texture data readable from scripts. - - - - - Base class to derive custom decorator drawers from. - - - - - The PropertyAttribute for the decorator. (Read Only) - - - - - Override this method to determine whether the inspector GUI for your decorator can be cached. - - - Whether the inspector GUI for your decorator can be cached. - - - - - Override this method to specify how tall the GUI for this decorator is in pixels. - - - - - Override this method to make your own GUI for the decorator. -See DecoratorDrawer for an example of how to use this. - - Rectangle on the screen to use for the decorator GUI. - - - - DefaultAsset is used for assets that do not have a specific type (yet). - - - - - Default definition for the Lighting Explorer. Can be overridden completely or partially. - - - - - Constructor. - - - - - This returns all the default tabs for the Lighting Explorer. - - - Default tabs for the Lighting Explorer. - - - - - Returns objects with an Emissive material. - - - Objects with an Emissive material. - - - - - Returns column definitions for Emissives. - - - Column definitions for Emissives. - - - - - Returns column definitions for Lights. - - - Column definitions for Lights. - - - - - Returns column definitions for Light Probes. - - - Column definitions for Light Probes. - - - - - Returns Light Probes. - - - Light Probes. - - - - - Returns Lights. - - - Lights. - - - - - Returns column definitions for Reflection Probes. - - - Column definitions for Reflection Probes. - - - - - Returns Reflection Probes. - - - Reflection Probes. - - - - - Editor drag & drop operations. - - - - - Get or set ID of currently active drag and drop control. - - - - - References to Object|objects being dragged. - - - - - The file names being dragged. - - - - - The visual indication of the drag. - - - - - Accept a drag operation. - - - - - Get data associated with current drag and drop operation. - - - - - - Clears drag & drop data. - - - - - Set data associated with current drag and drop operation. - - - - - - - Start a drag operation. - - - - - - Visual indication mode for Drag & Drop operation. - - - - - Copy dragged objects. - - - - - Generic drag operation. - - - - - Link dragged objects to target. - - - - - Move dragged objects. - - - - - No indication (drag should not be performed). - - - - - Rejected drag operation. - - - - - Drawing modes for Handles.DrawCamera. - - - - - Draw objects with the albedo component only. This value has been deprecated. Please use DrawCameraMode.RealtimeAlbedo. - - - - - The camera is set to display the alpha channel of the rendering. - - - - - Draw objects with baked GI only. This value has been deprecated. Please use DrawCameraMode.BakedLightmap. - - - - - Draw objects with the baked albedo component only. - - - - - Draw objects with different colors for each baked chart (UV island). - - - - - Draw objects with the baked directionality component only. - - - - - Draw objects with the baked emission component only. - - - - - Draw objects with baked indices only. - - - - - Draw objects with the baked lightmap only. - - - - - Draw objects with visible lightmap texels highlighted. - - - - - Draw objects with baked texel validity only. - - - - - Draw objects with overlapping lightmap texels highlighted. - - - - - Draw objects with different colors for each real-time chart (UV island). - - - - - Draw with different colors for each cluster. - - - - - Draw diffuse color of Deferred Shading g-buffer. - - - - - Draw world space normal of Deferred Shading g-buffer. - - - - - Draw smoothness value of Deferred Shading g-buffer. - - - - - Draw specular color of Deferred Shading g-buffer. - - - - - Draw objects with directionality for real-time GI. This value has been deprecated. Please use DrawCameraMode.RealtimeDirectionality. - - - - - Draw objects with the emission component only. This value has been deprecated. Please use DrawCameraMode.RealtimeEmissive. - - - - - Draw objects with real-time GI only. This value has been deprecated. Please use DrawCameraMode.RealtimeIndirect. - - - - - The camera is set to show in red static lights that fall back to 'static' because more than four light volumes are overlapping. - - - - - Draw lit clusters. - - - - - The camera is set to display the texture resolution, with a red tint indicating resolution that is too high, and a blue tint indicating texture sizes that could be higher. - - - - - Draw the camera like it would be drawn in-game. This uses the clear flags of the camera. - - - - - The camera is set to display Scene overdraw, with brighter colors indicating more overdraw. - - - - - Draw objects with the real-time GI albedo component only. - - - - - Draw objects with different colors for each real-time chart (UV island). - - - - - Draw objects with the real-time GI directionality component only. - - - - - Draw objects with the real-time GI emission component only. - - - - - Draw objects with the real-time GI indirect light only. - - - - - The camera is set to draw color coded render paths. - - - - - The camera is set to draw directional light shadow map cascades. - - - - - The camera is set to display colored ShadowMasks, coloring light gizmo with the same color. - - - - - The camera is set to display SpriteMask and SpriteRenderer with SpriteRenderer.maskInteraction set. - - - - - Draw objects with different color for each GI system. - - - - - Draw the camera textured with selection wireframe and no background clearing. - - - - - Draw the camera where all objects have a wireframe overlay. and no background clearing. - - - - - The camera is set to run in texture streaming debug mode. - - - - - A custom mode defined by the user. - - - - - The camera is set to draw a physically based, albedo validated rendering. - - - - - The camera is set to draw a physically based, metal or specular validated rendering. - - - - - Draw the camera in wireframe and no background clearing. - - - - - The DrawGizmo attribute allows you to supply a gizmo renderer for any Component. - - - - - Defines when the gizmo should be invoked for drawing. - - Flags to denote when the gizmo should be drawn. - - - - Same as above. drawnGizmoType determines of what type the object we are drawing the gizmo of has to be. - - Flags to denote when the gizmo should be drawn. - Type of object for which the gizmo should be drawn. - - - - Base class to derive custom Editors from. Use this to create your own custom inspectors and editors for your objects. - - - - - An event raised while drawing the header of the Inspector window, after the default header items have been drawn. - - - - - - A SerializedObject representing the object or objects being inspected. - - - - - The object being inspected. - - - - - An array of all the object being inspected. - - - - - On return previousEditor is an editor for targetObject or targetObjects. The function either returns if the editor is already tracking the objects, or Destroys the previous editor and creates a new one. - - The object the editor is tracking. - The requested editor type. null for the default editor for the object. - The previous editor for the object. Once CreateCachedEditor returns previousEditor is an editor for the targetObject or targetObjects. - The objects the editor is tracking. - - - - - - On return previousEditor is an editor for targetObject or targetObjects. The function either returns if the editor is already tracking the objects, or Destroys the previous editor and creates a new one. - - The object the editor is tracking. - The requested editor type. null for the default editor for the object. - The previous editor for the object. Once CreateCachedEditor returns previousEditor is an editor for the targetObject or targetObjects. - The objects the editor is tracking. - - - - - - Creates a cached editor using a context object. - - - - - - - - - - Creates a cached editor using a context object. - - - - - - - - - - Make a custom editor for targetObject or targetObjects. - - All objects must be of same exact type. - - - - - - - Make a custom editor for targetObject or targetObjects. - - All objects must be of same exact type. - - - - - - - Make a custom editor for targetObject or targetObjects. - - All objects must be of same exact type. - - - - - - - Make a custom editor for targetObject or targetObjects. - - All objects must be of same exact type. - - - - - - - Make a custom editor for targetObject or targetObjects with a context object. - - - - - - - - Draw the built-in inspector. - - - - - Call this function to draw the header of the editor. - - - - - The first entry point for Preview Drawing. - - The available area to draw the preview. - - - - - Implement this method to show asset information on top of the asset preview. - - - - - Override this method if you want to change the label of the Preview area. - - - - - Override this method in subclasses if you implement OnPreviewGUI. - - - True if this component can be Previewed in its current state. - - - - - Implement this function to make a custom inspector. - - - - - Implement to create your own interactive custom preview. Interactive custom previews are used in the preview area of the inspector and the object selector. - - Rectangle in which to draw the preview. - Background image. - - - - Implement to create your own custom preview for the preview area of the inspector, primary editor headers and the object selector. - - Rectangle in which to draw the preview. - Background image. - - - - Override this method if you want to show custom controls in the preview header. - - - - - Override this method if you want to render a static preview. - - The asset to operate on. - An array of all Assets at assetPath. - Width of the created texture. - Height of the created texture. - - Generated texture or null. - - - - - Repaint any inspectors that shows this editor. - - - - - Does this edit require to be repainted constantly in its current state? - - - - - Returns the visibility setting of the "open" button in the Inspector. - - - Return true if the button should be hidden. - - - - - Override this method in subclasses to return false if you don't want default margins. - - - - - Editor API for the EditorAnalytics feature. - - - - - Returns true when EditorAnalytics is enabled. - - - - - This API is used for registering an Editor Analytics event. It is meant for internal use only and is likely to change in the future. User code should never use this API. - - Name of the event. - Event version number. - Hourly limit for this event name. - Maximum number of items in this event. - Vendor key name. - - - - This API is used for registering an Editor Analytics event. It is meant for internal use only and is likely to change in the future. User code should never use this API. - - Name of the event. - Event version number. - Hourly limit for this event name. - Maximum number of items in this event. - Vendor key name. - - - - This API is used to send an Editor Analytics event. It is meant for internal use only and is likely to change in the future. User code should never use this API. - - Name of the event. - Additional event data. - Event version number. - - - - This API is used to send an Editor Analytics event. It is meant for internal use only and is likely to change in the future. User code should never use this API. - - Name of the event. - Additional event data. - Event version number. - - - - Provides access to Editor Analytics session information. - - - - - The total time, in milliseconds, that the user interacted with the Editor since the beginning of the current session. - - - - - The length of the current session, in milliseconds. - - - - - The total time, in milliseconds, that the Editor has been in focus during the current session. - - - - - A random, unique GUID identifying the current Editor session. - - - - - The total time, in milliseconds, that the Editor has been in playmode during the current session. - - - - - The number of Editor sessions that have occurred since the current instance of the Unity Editor was installed. - - - - - A random GUID uniquely identifying an Editor installation. - - - - - Main Application class. - - - - - Path to the Unity editor contents folder. (Read Only) - - - - - Returns the path to the Unity editor application. (Read Only) - - - - - Callback raised whenever the user contex-clicks on a property in an Inspector. - - - - - The path of the Scene that the user has currently open (Will be an empty string if no Scene is currently open). (Read Only) - - - - - Delegate which is called once after all inspectors update. - - - - - Event that is raised when an object or group of objects in the hierarchy changes. - - - - - - A callback to be raised when an object in the hierarchy changes. - -Each time an object is (or a group of objects are) created, renamed, parented, unparented or destroyed this callback is raised. - - - - - - Delegate for OnGUI events for every visible list item in the HierarchyWindow. - - - - - Is editor currently compiling scripts? (Read Only) - - - - - Is editor currently paused? - - - - - Is editor currently in play mode? - - - - - Is editor either currently in play mode, or about to switch to it? (Read Only) - - - - - Is editor currently connected to Unity Remote 4 client app. - - - - - Is true if the currently open Scene in the editor contains unsaved modifications. - - - - - Returns true if the current project was created as a temporary project. - - - - - True if the Editor is currently refreshing the AssetDatabase. - - - - - Delegate for changed keyboard modifier keys. - - - - - Event that is raised whenever the Editor's pause state changes. - - - - - - Event that is raised whenever the Editor's play mode state changes. - - - - - - Event that is raised whenever the state of the project changes. - - - - - - Callback raised whenever the state of the Project window changes. - - - - - Delegate for OnGUI events for every visible list item in the ProjectWindow. - - - - - Unity raises this event when the editor application is quitting. - - - - - - Returns the scripting runtime version currently used by the Editor. - - - - - Callback raised whenever the contents of a window's search box are changed. - - - - - The time since the editor was started. (Read Only) - - - - - Delegate for generic updates. - - - - - Unity raises this event when the editor application wants to quit. - - - - - - Plays system beep sound. - - - - - Delegate to be called from EditorApplication callbacks. - - - - - Set the hierarchy sorting method as dirty. - - - - - Invokes the menu item in the specified path. - - - - - - Exit the Unity editor application. - - - - - - Delegate to be called for every visible list item in the HierarchyWindow on every OnGUI event. - - - - - - - Load the given level additively in play mode asynchronously - - - - - - Load the given level additively in play mode. - - - - - - Load the given level in play mode asynchronously. - - - - - - Load the given level in play mode. - - - - - - Prevents loading of assemblies when it is inconvenient. - - - - - Explicitly mark the current opened Scene as modified. - - - - - Create a new absolutely empty Scene. - - - - - Create a new Scene. - - - - - Open another project. - - The path of a project to open. - Arguments to pass to command line. - - - - Opens the Scene at path. - - - - - - Opens the Scene at path additively. - - - - - - Delegate to be called for every visible list item in the ProjectWindow on every OnGUI event. - - - - - - - Normally, a player loop update will occur in the editor when the Scene has been modified. This method allows you to queue a player loop update regardless of whether the Scene has been modified. - - - - - Can be used to ensure repaint of the HierarchyWindow. - - - - - Can be used to ensure repaint of the ProjectWindow. - - - - - Saves all serializable assets that have not yet been written to disk (eg. Materials). - - - - - Ask the user if they want to save the open Scene. - - - - - Save the open Scene. - - The file path to save at. If empty, the current open Scene will be overwritten, or if never saved before, a save dialog is shown. - If set to true, the Scene will be saved without changing the currentScene and without clearing the unsaved changes marker. - - True if the save succeeded, otherwise false. - - - - - Save the open Scene. - - The file path to save at. If empty, the current open Scene will be overwritten, or if never saved before, a save dialog is shown. - If set to true, the Scene will be saved without changing the currentScene and without clearing the unsaved changes marker. - - True if the save succeeded, otherwise false. - - - - - Save the open Scene. - - The file path to save at. If empty, the current open Scene will be overwritten, or if never saved before, a save dialog is shown. - If set to true, the Scene will be saved without changing the currentScene and without clearing the unsaved changes marker. - - True if the save succeeded, otherwise false. - - - - - Delegate to be called from EditorApplication contextual inspector callbacks. - - The contextual menu which is about to be shown to the user. - The property for which the contextual menu is shown. - - - - Sets the path that Unity should store the current temporary project at, when the project is closed. - - The path that the current temporary project should be relocated to when closing it. - - - - Perform a single frame step. - - - - - Must be called after LockReloadAssemblies, to reenable loading of assemblies. - - - - - This class allows you to modify the Editor for an example of how to use this class. - -See Also: EditorBuildSettingsScene, EditorBuildSettings.scenes. - - - - - A delegate called whenever EditorBuildSettings.scenes is set. - - - - - - The list of Scenes that should be included in the build. -This is the same list of Scenes that is shown in the window. You can modify this list to set up which Scenes should be included in the build. - - - - - Store a reference to a config object by name. The object must be an asset in the project, otherwise it will not be saved when the editor is restarted or scripts are reloaded. To avoid name conflicts with other packages, it is recommended that names are qualified by a namespace, i.e. "company.package.name". - - The name of the object reference in string format. This string name must be unique within your project or the overwrite parameter must be set to true. - Object reference to be stored. This object must be persisted and not null. - Boolean parameter used to specify that you want to overwrite an entry with the same name if one already exists. - - Throws an exception if the object is null, not persisted, or if there is a name conflict and the overwrite parameter is set to false. - - - - - Return a string array containing the names of all stored config object references. - - - Returns an array of strings containing the names of all stored references. If there are no references, an empty array will be returned. - - - - - Remove a config object reference by name. - - The name in string format of the config object reference to be removed. This is the name given to the object when the reference is first created. Note: This may be different than the object name as an object can be added multiple times with different names. - - Returns true if the reference was found and removed, otherwise false. - - - - - Retrieve a config object reference by name. - - The name in string format of the config object reference to be fetched. - The config object reference where the returned object will be stored. This must be an object of type Object. - - Returns true if the config object reference was found and the type matched the result parameter. Returns false if the entry is not found, the config object reference is null, or if the type requested does not match the type stored. - - - - - This class is used for entries in the Scenes list, as displayed in the window. This class contains the Scene path of a Scene and an enabled flag that indicates wether the Scene is enabled in the BuildSettings window or not. - -You can use this class in combination with EditorBuildSettings.scenes to populate the list of Scenes included in the build via script. This is useful when creating custom editor scripts to automate your build pipeline. - -See EditorBuildSettings.scenes for an example script. - - - - - Whether this Scene is enabled in the for an example of how to use this class. - -See Also: EditorBuildSettingsScene, EditorBuildSettings.scenes. - - - - - The file path of the Scene as listed in the Editor for an example of how to use this class. - -See Also: EditorBuildSettingsScene, EditorBuildSettings.scenes. - - - - - Defines how a curve is attached to an object that it controls. - - - - - The transform path of the object that is animated. - - - - - The name of the property to be animated. - - - - - The type of the property to be animated. - - - - - Creates a preconfigured binding for a curve where values should not be interpolated. - - The transform path to the object to animate. - The type of the object to animate. - The name of the property to animate on the object. - - - - Creates a preconfigured binding for a float curve. - - The transform path to the object to animate. - The type of the object to animate. - The name of the property to animate on the object. - - - - Creates a preconfigured binding for a curve that points to an Object. - - The transform path to the object to animate. - The type of the object to animate. - The name of the property to animate on the object. - - - - These work pretty much like the normal GUI functions - and also have matching implementations in EditorGUILayout. - - - - - Is the platform-dependent "action" modifier key held down? (Read Only) - - - - - The indent level of the field labels. - - - - - Makes the following controls give the appearance of editing multiple different values. - - - - - Check if any control was changed inside a block of code. - - - - - Create a group of controls that can be disabled. - - Boolean specifying if the controls inside the group should be disabled. - - - - Create a Property wrapper, useful for making regular GUI controls work with SerializedProperty. - - Rectangle on the screen to use for the control, including label if applicable. - Optional label in front of the slider. Use null to use the name from the SerializedProperty. Use GUIContent.none to not display a label. - The SerializedProperty to use for the control. - - The actual label to use for the control. - - - - - Makes Center and Extents field for entering a Bounds. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes Center and Extents field for entering a Bounds. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes Position and Size field for entering a BoundsInt. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes Position and Size field for entering a BoundsInt. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes Position and Size field for entering a BoundsInt. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Get whether a SerializedProperty's inspector GUI can be cached. - - The SerializedProperty in question. - - Whether the property's inspector GUI can be cached. - - - - - Check if any control was changed inside a block of code. - - - - - True if GUI.changed was set to true, otherwise false. - - - - - Begins a ChangeCheckScope. - - - - - Makes a field for selecting a Color. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The color to edit. - If true, the color picker should show the eyedropper control. If false, don't show it. - If true, allow the user to set an alpha value for the color. If false, hide the alpha component. - If true, treat the color as an HDR value. If false, treat it as a standard LDR value. - - - The color selected by the user. - - - - - Makes a field for selecting a Color. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The color to edit. - If true, the color picker should show the eyedropper control. If false, don't show it. - If true, allow the user to set an alpha value for the color. If false, hide the alpha component. - If true, treat the color as an HDR value. If false, treat it as a standard LDR value. - - - The color selected by the user. - - - - - Makes a field for selecting a Color. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The color to edit. - If true, the color picker should show the eyedropper control. If false, don't show it. - If true, allow the user to set an alpha value for the color. If false, hide the alpha component. - If true, treat the color as an HDR value. If false, treat it as a standard LDR value. - - - The color selected by the user. - - - - - Makes a field for selecting a Color. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The color to edit. - If true, the color picker should show the eyedropper control. If false, don't show it. - If true, allow the user to set an alpha value for the color. If false, hide the alpha component. - If true, treat the color as an HDR value. If false, treat it as a standard LDR value. - - - The color selected by the user. - - - - - Makes a field for selecting a Color. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The color to edit. - If true, the color picker should show the eyedropper control. If false, don't show it. - If true, allow the user to set an alpha value for the color. If false, hide the alpha component. - If true, treat the color as an HDR value. If false, treat it as a standard LDR value. - - - The color selected by the user. - - - - - Makes a field for editing an AnimationCurve. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - - The curve edited by the user. - - - - - Makes a field for editing an AnimationCurve. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - - The curve edited by the user. - - - - - Makes a field for editing an AnimationCurve. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - - The curve edited by the user. - - - - - Makes a field for editing an AnimationCurve. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - - The curve edited by the user. - - - - - Makes a field for editing an AnimationCurve. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - - The curve edited by the user. - - - - - Makes a field for editing an AnimationCurve. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - - The curve edited by the user. - - - - - Makes a field for editing an AnimationCurve. - - Rectangle on the screen to use for the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - Optional label to display in front of the field. Pass [[GUIContent.none] to hide the label. - - - - Makes a field for editing an AnimationCurve. - - Rectangle on the screen to use for the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - Optional label to display in front of the field. Pass [[GUIContent.none] to hide the label. - - - - Makes a delayed text field for entering doubles. - - Rectangle on the screen to use for the double field. - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the double field. - - - - - Makes a delayed text field for entering doubles. - - Rectangle on the screen to use for the double field. - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the double field. - - - - - Makes a delayed text field for entering doubles. - - Rectangle on the screen to use for the double field. - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the double field. - - - - - Makes a delayed text field for entering doubles. - - Rectangle on the screen to use for the double field. - The double property to edit. - Optional label to display in front of the double field. Pass GUIContent.none to hide label. - - - - Makes a delayed text field for entering floats. - - Rectangle on the screen to use for the float field. - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the float field. - - - - - Makes a delayed text field for entering floats. - - Rectangle on the screen to use for the float field. - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the float field. - - - - - Makes a delayed text field for entering floats. - - Rectangle on the screen to use for the float field. - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the float field. - - - - - Makes a delayed text field for entering floats. - - Rectangle on the screen to use for the float field. - The float property to edit. - Optional label to display in front of the float field. Pass GUIContent.none to hide label. - - - - Makes a delayed text field for entering integers. - - Rectangle on the screen to use for the int field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the int field. - - - - - Makes a delayed text field for entering integers. - - Rectangle on the screen to use for the int field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the int field. - - - - - Makes a delayed text field for entering integers. - - Rectangle on the screen to use for the int field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the int field. - - - - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the int field. - - Rectangle on the screen to use for the int field. - The int property to edit. - Optional label to display in front of the int field. Pass GUIContent.none to hide label. - - - - Makes a delayed text field. - - Rectangle on the screen to use for the text field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the text field. - - - - - Makes a delayed text field. - - Rectangle on the screen to use for the text field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the text field. - - - - - Makes a delayed text field. - - Rectangle on the screen to use for the text field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the text field. - - - - - Makes a delayed text field. - - Rectangle on the screen to use for the text field. - The text property to edit. - Optional label to display in front of the int field. Pass GUIContent.none to hide label. - - - - Create a group of controls that can be disabled. - - - - - Create a new DisabledGroupScope and begin the corresponding group. - - Boolean specifying if the controls inside the group should be disabled. - - - - Create a group of controls that can be disabled. - - - - - Create a new DisabledScope and begin the corresponding group. - - Boolean specifying if the controls inside the group should be disabled. - - - - Makes a text field for entering doubles. - - Rectangle on the screen to use for the double field. - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering doubles. - - Rectangle on the screen to use for the double field. - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering doubles. - - Rectangle on the screen to use for the double field. - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Draws the texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - Material to be used when drawing the texture. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. - The mip-level to sample. If negative, the texture is sampled normally. -Sets material _Mip property. - Specifies which color components of image will get written. - - - - Draws the texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - Material to be used when drawing the texture. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. - The mip-level to sample. If negative, the texture is sampled normally. -Sets material _Mip property. - Specifies which color components of image will get written. - - - - Draws the texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - Material to be used when drawing the texture. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. - The mip-level to sample. If negative, the texture is sampled normally. -Sets material _Mip property. - Specifies which color components of image will get written. - - - - Draws the texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - Material to be used when drawing the texture. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. - The mip-level to sample. If negative, the texture is sampled normally. -Sets material _Mip property. - Specifies which color components of image will get written. - - - - Draws the texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - Material to be used when drawing the texture. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. - The mip-level to sample. If negative, the texture is sampled normally. -Sets material _Mip property. - Specifies which color components of image will get written. - - - - Draws the texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - Material to be used when drawing the texture. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. - The mip-level to sample. If negative, the texture is sampled normally. -Sets material _Mip property. - Specifies which color components of image will get written. - - - - Draws a filled rectangle of color at the specified position and size within the current editor window. - - The position and size of the rectangle to draw. - The color of the rectange. - - - - Draws the alpha channel of a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. - What mip-level to sample. If negative, texture will be sampled normally. -It sets material _Mip property. - - - - Draws the alpha channel of a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. - What mip-level to sample. If negative, texture will be sampled normally. -It sets material _Mip property. - - - - Draws the alpha channel of a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. - What mip-level to sample. If negative, texture will be sampled normally. -It sets material _Mip property. - - - - Draws the alpha channel of a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. - What mip-level to sample. If negative, texture will be sampled normally. -It sets material _Mip property. - - - - Makes a button that reacts to mouse down, for displaying your own dropdown content. - - Rectangle on the screen to use for the button. - Text, image and tooltip for this button. - Whether the button should be selectable by keyboard or not. - Optional style to use. - - true when the user clicks the button. - - - - - Makes a button that reacts to mouse down, for displaying your own dropdown content. - - Rectangle on the screen to use for the button. - Text, image and tooltip for this button. - Whether the button should be selectable by keyboard or not. - Optional style to use. - - true when the user clicks the button. - - - - - Draws a label with a drop shadow. - - Where to show the label. - Text to show -@style style to use. - - - - - - Draws a label with a drop shadow. - - Where to show the label. - Text to show -@style style to use. - - - - - - Draws a label with a drop shadow. - - Where to show the label. - Text to show -@style style to use. - - - - - - Draws a label with a drop shadow. - - Where to show the label. - Text to show -@style style to use. - - - - - - Ends a change check started with BeginChangeCheck (). - - - True if GUI.changed was set to true, otherwise false. - - - - - Ends a disabled group started with BeginDisabledGroup. - - - - - Ends a Property wrapper started with BeginProperty. - - - - - Displays a menu with an option for every value of the enum type when clicked. An option for the value 0 with name "Nothing" and an option for the value ~0 (that is, all bits set) with the name "Everything" are always displayed at the top of the menu. The names for the values 0 and ~0 can be overriden by defining these values in the enum type. - - Rectangle on the screen to use for the enum flags field. - Optional label to display in front of the enum flags field. - Enum flags value (Only supports enum values for enum types with int as the underlying type). - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. An option for the value 0 with name "Nothing" and an option for the value ~0 (that is, all bits set) with the name "Everything" are always displayed at the top of the menu. The names for the values 0 and ~0 can be overriden by defining these values in the enum type. - - Rectangle on the screen to use for the enum flags field. - Optional label to display in front of the enum flags field. - Enum flags value (Only supports enum values for enum types with int as the underlying type). - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. An option for the value 0 with name "Nothing" and an option for the value ~0 (that is, all bits set) with the name "Everything" are always displayed at the top of the menu. The names for the values 0 and ~0 can be overriden by defining these values in the enum type. - - Rectangle on the screen to use for the enum flags field. - Optional label to display in front of the enum flags field. - Enum flags value (Only supports enum values for enum types with int as the underlying type). - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. An option for the value 0 with name "Nothing" and an option for the value ~0 (that is, all bits set) with the name "Everything" are always displayed at the top of the menu. The names for the values 0 and ~0 can be overriden by defining these values in the enum type. - - Rectangle on the screen to use for the enum flags field. - Optional label to display in front of the enum flags field. - Enum flags value (Only supports enum values for enum types with int as the underlying type). - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. An option for the value 0 with name "Nothing" and an option for the value ~0 (that is, all bits set) with the name "Everything" are always displayed at the top of the menu. The names for the values 0 and ~0 can be overriden by defining these values in the enum type. - - Rectangle on the screen to use for the enum flags field. - Optional label to display in front of the enum flags field. - Enum flags value (Only supports enum values for enum types with int as the underlying type). - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. An option for the value 0 with name "Nothing" and an option for the value ~0 (that is, all bits set) with the name "Everything" are always displayed at the top of the menu. The names for the values 0 and ~0 can be overriden by defining these values in the enum type. - - Rectangle on the screen to use for the enum flags field. - Optional label to display in front of the enum flags field. - Enum flags value (Only supports enum values for enum types with int as the underlying type). - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. An option for the value 0 with name "Nothing" and an option for the value ~0 (that is, all bits set) with the name "Everything" are always displayed at the top of the menu. The names for the values 0 and ~0 can be overriden by defining these values in the enum type. - - Rectangle on the screen to use for the enum flags field. - Optional label to display in front of the enum flags field. - Enum flags value (Only supports enum values for enum types with int as the underlying type). - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - This method is obsolete. Use EditorGUI.EnumFlagsField instead. - -Makes a field for enum based masks. - - Rectangle on the screen to use for this control. - Caption/label for the control. - Enum to use for the flags. - Optional GUIStyle. - - A selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - This method is obsolete. Use EditorGUI.EnumFlagsField instead. - -Makes a field for enum based masks. - - Rectangle on the screen to use for this control. - Caption/label for the control. - Enum to use for the flags. - Optional GUIStyle. - - A selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - This method is obsolete. Use EditorGUI.EnumFlagsField instead. - -Makes a field for enum based masks. - - Rectangle on the screen to use for this control. - Caption/label for the control. - Enum to use for the flags. - Optional GUIStyle. - - A selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - This method is obsolete. Use EditorGUI.EnumFlagsField instead. - -Makes a field for enum based masks. - - Rectangle on the screen to use for this control. - Caption/label for the control. - Enum to use for the flags. - Optional GUIStyle. - - A selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - This method is obsolete. Use EditorGUI.EnumFlagsField instead. - -Makes a field for enum based masks. - - Rectangle on the screen to use for this control. - Caption/label for the control. - Enum to use for the flags. - Optional GUIStyle. - - A selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - This method is obsolete. Use EditorGUI.EnumFlagsField instead. - -Makes a field for enum based masks. - - Rectangle on the screen to use for this control. - Caption/label for the control. - Enum to use for the flags. - Optional GUIStyle. - - A selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - This method is obsolete. Use EditorGUI.EnumFlagsField instead. - -Makes an enum popup selection field for a bitmask. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum options the field shows. - Optional GUIStyle. - - The enum options that has been selected by the user. - - - - - This method is obsolete. Use EditorGUI.EnumFlagsField instead. - -Makes an enum popup selection field for a bitmask. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum options the field shows. - Optional GUIStyle. - - The enum options that has been selected by the user. - - - - - This method is obsolete. Use EditorGUI.EnumFlagsField instead. - -Makes an enum popup selection field for a bitmask. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum options the field shows. - Optional GUIStyle. - - The enum options that has been selected by the user. - - - - - This method is obsolete. Use EditorGUI.EnumFlagsField instead. - -Makes an enum popup selection field for a bitmask. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum options the field shows. - Optional GUIStyle. - - The enum options that has been selected by the user. - - - - - Makes an enum popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Makes an enum popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Makes an enum popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Makes an enum popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Makes an enum popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Makes an enum popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Makes an enum popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Makes a text field for entering floats. - - Rectangle on the screen to use for the float field. - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering floats. - - Rectangle on the screen to use for the float field. - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering floats. - - Rectangle on the screen to use for the float field. - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Move keyboard focus to a named text field and begin editing of the content. - - Name set using GUI.SetNextControlName. - - - - Makes a label with a foldout arrow to the left of it. - - Rectangle on the screen to use for the arrow and label. - The shown foldout state. - The label to show. - Optional GUIStyle. - Should the label be a clickable part of the control? - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Makes a label with a foldout arrow to the left of it. - - Rectangle on the screen to use for the arrow and label. - The shown foldout state. - The label to show. - Optional GUIStyle. - Should the label be a clickable part of the control? - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Makes a label with a foldout arrow to the left of it. - - Rectangle on the screen to use for the arrow and label. - The shown foldout state. - The label to show. - Optional GUIStyle. - Should the label be a clickable part of the control? - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Makes a label with a foldout arrow to the left of it. - - Rectangle on the screen to use for the arrow and label. - The shown foldout state. - The label to show. - Optional GUIStyle. - Should the label be a clickable part of the control? - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Makes a label with a foldout arrow to the left of it. - - Rectangle on the screen to use for the arrow and label. - The shown foldout state. - The label to show. - Optional GUIStyle. - Should the label be a clickable part of the control? - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Makes a label with a foldout arrow to the left of it. - - Rectangle on the screen to use for the arrow and label. - The shown foldout state. - The label to show. - Optional GUIStyle. - Should the label be a clickable part of the control? - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Makes a label with a foldout arrow to the left of it. - - Rectangle on the screen to use for the arrow and label. - The shown foldout state. - The label to show. - Optional GUIStyle. - Should the label be a clickable part of the control? - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Makes a label with a foldout arrow to the left of it. - - Rectangle on the screen to use for the arrow and label. - The shown foldout state. - The label to show. - Optional GUIStyle. - Should the label be a clickable part of the control? - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Get the height needed for a PropertyField control. - - Height of the property area. - Descriptive text or image. - Should the returned height include the height of child properties? - - - - - Get the height needed for a PropertyField control. - - Height of the property area. - Descriptive text or image. - Should the returned height include the height of child properties? - - - - - Get the height needed for a PropertyField control. - - Height of the property area. - Descriptive text or image. - Should the returned height include the height of child properties? - - - - - Get the height needed for a PropertyField control. - - Height of the property area. - Descriptive text or image. - Should the returned height include the height of child properties? - - - - - Get the height needed for a PropertyField control. - - Height of the property area. - Descriptive text or image. - Should the returned height include the height of child properties? - - - - - Makes a field for editing a Gradient. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The gradient to edit. - Display the HDR Gradient Editor. - - The gradient edited by the user. - - - - - Makes a field for editing a Gradient. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The gradient to edit. - Display the HDR Gradient Editor. - - The gradient edited by the user. - - - - - Makes a field for editing a Gradient. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The gradient to edit. - Display the HDR Gradient Editor. - - The gradient edited by the user. - - - - - Makes a field for editing a Gradient. - - Rectangle on the screen to use for the field. - Optional label to display in front of the field. - The gradient to edit. - Display the HDR Gradient Editor. - - The gradient edited by the user. - - - - - Makes a label for some control. - - Rectangle on the screen to use in total for both the label and the control. - Rectangle on the screen to use for the label. - Label to show for the control. - The unique ID of the control. If none specified, the ID of the following control is used. - Optional GUIStyle to use for the label. - - - - Makes a label for some control. - - Rectangle on the screen to use in total for both the label and the control. - Rectangle on the screen to use for the label. - Label to show for the control. - The unique ID of the control. If none specified, the ID of the following control is used. - Optional GUIStyle to use for the label. - - - - Makes a label for some control. - - Rectangle on the screen to use in total for both the label and the control. - Rectangle on the screen to use for the label. - Label to show for the control. - The unique ID of the control. If none specified, the ID of the following control is used. - Optional GUIStyle to use for the label. - - - - Makes a help box with a message to the user. - - Rectangle on the screen to draw the help box within. - The message text. - The type of message. - - - - Scope for managing the indent level of the field labels. - - - - - Creates an IndentLevelScope and increases the EditorGUI indent level. - - The EditorGUI indent level will be increased by this amount inside the scope. - - - - Creates an IndentLevelScope and increases the EditorGUI indent level. - - The EditorGUI indent level will be increased by this amount inside the scope. - - - - Makes an inspector-window-like titlebar. - - Rectangle on the screen to use for the titlebar. - The foldout state shown with the arrow. - The object (for example a component) that the titlebar is for. - The objects that the titlebar is for. - Whether this editor should display a foldout arrow in order to toggle the display of its properties. - - The foldout state selected by the user. - - - - - Makes an inspector-window-like titlebar. - - Rectangle on the screen to use for the titlebar. - The foldout state shown with the arrow. - The object (for example a component) that the titlebar is for. - The objects that the titlebar is for. - Whether this editor should display a foldout arrow in order to toggle the display of its properties. - - The foldout state selected by the user. - - - - - Makes an inspector-window-like titlebar. - - Rectangle on the screen to use for the titlebar. - The foldout state shown with the arrow. - The object (for example a component) that the titlebar is for. - The objects that the titlebar is for. - Whether this editor should display a foldout arrow in order to toggle the display of its properties. - - The foldout state selected by the user. - - - - - Makes an inspector-window-like titlebar. - - Rectangle on the screen to use for the titlebar. - The foldout state shown with the arrow. - The object (for example a component) that the titlebar is for. - The objects that the titlebar is for. - Whether this editor should display a foldout arrow in order to toggle the display of its properties. - - The foldout state selected by the user. - - - - - Makes a text field for entering integers. - - Rectangle on the screen to use for the int field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering integers. - - Rectangle on the screen to use for the int field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering integers. - - Rectangle on the screen to use for the int field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering integers. - - Rectangle on the screen to use for the int field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering integers. - - Rectangle on the screen to use for the int field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering integers. - - Rectangle on the screen to use for the int field. - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes an integer popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. - Optional GUIStyle. - - The value of the option that has been selected by the user. - - - - - Makes an integer popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. - Optional GUIStyle. - - The value of the option that has been selected by the user. - - - - - Makes an integer popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. - Optional GUIStyle. - - The value of the option that has been selected by the user. - - - - - Makes an integer popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. - Optional GUIStyle. - - The value of the option that has been selected by the user. - - - - - Makes an integer popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. - Optional GUIStyle. - - The value of the option that has been selected by the user. - - - - - Makes an integer popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. - Optional GUIStyle. - - The value of the option that has been selected by the user. - - - - - Makes an integer popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. - Optional GUIStyle. - - The value of the option that has been selected by the user. - - - - - Makes an integer popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. - Optional GUIStyle. - - The value of the option that has been selected by the user. - - - - - - - Rectangle on the screen to use for the field. - The SerializedProperty to use for the control. - An array with the displayed options the user can choose from. - An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. - Optional label in front of the field. - - - - - - Rectangle on the screen to use for the field. - The SerializedProperty to use for the control. - An array with the displayed options the user can choose from. - An array with the values for each option. If optionValues a direct mapping of selectedValue to displayedOptions is assumed. - Optional label in front of the field. - - - - Makes a slider the user can drag to change an integer value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - The value that has been set by the user. - - - - - Makes a slider the user can drag to change an integer value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - The value that has been set by the user. - - - - - Makes a slider the user can drag to change an integer value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - The value that has been set by the user. - - - - - Makes a slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - - - Makes a slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - - - Makes a slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - - - Makes a label field. (Useful for showing read-only info.) - - Rectangle on the screen to use for the label field. - Label in front of the label field. - The label to show to the right. - Style information (color, etc) for displaying the label. - - - - Makes a label field. (Useful for showing read-only info.) - - Rectangle on the screen to use for the label field. - Label in front of the label field. - The label to show to the right. - Style information (color, etc) for displaying the label. - - - - Makes a label field. (Useful for showing read-only info.) - - Rectangle on the screen to use for the label field. - Label in front of the label field. - The label to show to the right. - Style information (color, etc) for displaying the label. - - - - Makes a label field. (Useful for showing read-only info.) - - Rectangle on the screen to use for the label field. - Label in front of the label field. - The label to show to the right. - Style information (color, etc) for displaying the label. - - - - Makes a label field. (Useful for showing read-only info.) - - Rectangle on the screen to use for the label field. - Label in front of the label field. - The label to show to the right. - Style information (color, etc) for displaying the label. - - - - Makes a label field. (Useful for showing read-only info.) - - Rectangle on the screen to use for the label field. - Label in front of the label field. - The label to show to the right. - Style information (color, etc) for displaying the label. - - - - Makes a label field. (Useful for showing read-only info.) - - Rectangle on the screen to use for the label field. - Label in front of the label field. - The label to show to the right. - Style information (color, etc) for displaying the label. - - - - Makes a label field. (Useful for showing read-only info.) - - Rectangle on the screen to use for the label field. - Label in front of the label field. - The label to show to the right. - Style information (color, etc) for displaying the label. - - - - Makes a layer selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - - The layer selected by the user. - - - - - Makes a layer selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - - The layer selected by the user. - - - - - Makes a layer selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - - The layer selected by the user. - - - - - Makes a layer selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - - The layer selected by the user. - - - - - Makes a layer selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - - The layer selected by the user. - - - - - Makes a layer selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - - The layer selected by the user. - - - - - Makes a text field for entering long integers. - - Rectangle on the screen to use for the long field. - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering long integers. - - Rectangle on the screen to use for the long field. - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering long integers. - - Rectangle on the screen to use for the long field. - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering long integers. - - Rectangle on the screen to use for the long field. - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a text field for entering long integers. - - Rectangle on the screen to use for the long field. - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - - The value entered by the user. - - - - - Makes a field for masks. - - Rectangle on the screen to use for this control. - Label for the field. - The current mask to display. - A string array containing the labels for each flag. - Optional GUIStyle. - A string array containing the labels for each flag. - - The value modified by the user. - - - - - Makes a field for masks. - - Rectangle on the screen to use for this control. - Label for the field. - The current mask to display. - A string array containing the labels for each flag. - Optional GUIStyle. - A string array containing the labels for each flag. - - The value modified by the user. - - - - - Makes a field for masks. - - Rectangle on the screen to use for this control. - Label for the field. - The current mask to display. - A string array containing the labels for each flag. - Optional GUIStyle. - A string array containing the labels for each flag. - - The value modified by the user. - - - - - Makes a field for masks. - - Rectangle on the screen to use for this control. - Label for the field. - The current mask to display. - A string array containing the labels for each flag. - Optional GUIStyle. - A string array containing the labels for each flag. - - The value modified by the user. - - - - - Makes a field for masks. - - Rectangle on the screen to use for this control. - Label for the field. - The current mask to display. - A string array containing the labels for each flag. - Optional GUIStyle. - A string array containing the labels for each flag. - - The value modified by the user. - - - - - Makes a field for masks. - - Rectangle on the screen to use for this control. - Label for the field. - The current mask to display. - A string array containing the labels for each flag. - Optional GUIStyle. - A string array containing the labels for each flag. - - The value modified by the user. - - - - - Makes a special slider the user can use to specify a range between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The lower value of the range the slider shows, passed by reference. - The upper value at the range the slider shows, passed by reference. - The limit at the left end of the slider. - The limit at the right end of the slider. - - - - Makes a special slider the user can use to specify a range between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The lower value of the range the slider shows, passed by reference. - The upper value at the range the slider shows, passed by reference. - The limit at the left end of the slider. - The limit at the right end of the slider. - - - - Makes a special slider the user can use to specify a range between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The lower value of the range the slider shows, passed by reference. - The upper value at the range the slider shows, passed by reference. - The limit at the left end of the slider. - The limit at the right end of the slider. - - - - Makes a special slider the user can use to specify a range between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The lower value of the range the slider shows, passed by reference. - The upper value at the range the slider shows, passed by reference. - The limit at the left end of the slider. - The limit at the right end of the slider. - - - - Makes a multi-control with text fields for entering multiple floats in the same line. - - Rectangle on the screen to use for the float field. - Optional label to display in front of the float field. - Array with small labels to show in front of each float field. There is room for one letter per field only. - Array with the values to edit. - - - - Makes a multi-control with text fields for entering multiple floats in the same line. - - Rectangle on the screen to use for the float field. - Optional label to display in front of the float field. - Array with small labels to show in front of each float field. There is room for one letter per field only. - Array with the values to edit. - - - - Makes a multi-control with text fields for entering multiple integers in the same line. - - Rectangle on the screen to use for the integer field. - Array with small labels to show in front of each int field. There is room for one letter per field only. - Array with the values to edit. - - - - Makes a multi-control with several property fields in the same line. - - Rectangle on the screen to use for the multi-property field. - The SerializedProperty of the first property to make a control for. - Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. - Array with small labels to show in front of each float field. There is room for one letter per field only. - - - - Makes a multi-control with several property fields in the same line. - - Rectangle on the screen to use for the multi-property field. - The SerializedProperty of the first property to make a control for. - Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. - Array with small labels to show in front of each float field. There is room for one letter per field only. - - - - Makes an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The object the field shows. - The type of the objects that can be assigned. - Allow assigning Scene objects. See Description for more info. - - The object that has been set by the user. - - - - - Makes an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The object the field shows. - The type of the objects that can be assigned. - Allow assigning Scene objects. See Description for more info. - - The object that has been set by the user. - - - - - Makes an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The object the field shows. - The type of the objects that can be assigned. - Allow assigning Scene objects. See Description for more info. - - The object that has been set by the user. - - - - - Makes an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The object the field shows. - The type of the objects that can be assigned. - Allow assigning Scene objects. See Description for more info. - - The object that has been set by the user. - - - - - Makes an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The object the field shows. - The type of the objects that can be assigned. - Allow assigning Scene objects. See Description for more info. - - The object that has been set by the user. - - - - - Makes an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The object the field shows. - The type of the objects that can be assigned. - Allow assigning Scene objects. See Description for more info. - - The object that has been set by the user. - - - - - Makes an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. - - Rectangle on the screen to use for the field. - The object reference property the field shows. - The type of the objects that can be assigned. - Optional label to display in front of the field. Pass GUIContent.none to hide the label. - - - - Makes an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. - - Rectangle on the screen to use for the field. - The object reference property the field shows. - The type of the objects that can be assigned. - Optional label to display in front of the field. Pass GUIContent.none to hide the label. - - - - Makes an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. - - Rectangle on the screen to use for the field. - The object reference property the field shows. - The type of the objects that can be assigned. - Optional label to display in front of the field. Pass GUIContent.none to hide the label. - - - - Makes an object field. You can assign objects either by drag and drop objects or by selecting an object using the Object Picker. - - Rectangle on the screen to use for the field. - The object reference property the field shows. - The type of the objects that can be assigned. - Optional label to display in front of the field. Pass GUIContent.none to hide the label. - - - - Makes a text field where the user can enter a password. - - Rectangle on the screen to use for the password field. - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - - The password entered by the user. - - - - - Makes a text field where the user can enter a password. - - Rectangle on the screen to use for the password field. - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - - The password entered by the user. - - - - - Makes a text field where the user can enter a password. - - Rectangle on the screen to use for the password field. - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - - The password entered by the user. - - - - - Makes a text field where the user can enter a password. - - Rectangle on the screen to use for the password field. - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - - The password entered by the user. - - - - - Makes a text field where the user can enter a password. - - Rectangle on the screen to use for the password field. - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - - The password entered by the user. - - - - - Makes a text field where the user can enter a password. - - Rectangle on the screen to use for the password field. - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - - The password entered by the user. - - - - - Makes a generic popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - - The index of the option that has been selected by the user. - - - - - Makes a generic popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - - The index of the option that has been selected by the user. - - - - - Makes a generic popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - - The index of the option that has been selected by the user. - - - - - Makes a generic popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - - The index of the option that has been selected by the user. - - - - - Makes a generic popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - - The index of the option that has been selected by the user. - - - - - Makes a generic popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - - The index of the option that has been selected by the user. - - - - - Makes a generic popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - - The index of the option that has been selected by the user. - - - - - Makes a generic popup selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - - The index of the option that has been selected by the user. - - - - - Makes a label in front of some control. - - Rectangle on the screen to use in total for both the label and the control. - The unique ID of the control. If none specified, the ID of the following control is used. - Label to show in front of the control. - Style to use for the label. - - Rectangle on the screen to use just for the control itself. - - - - - Makes a label in front of some control. - - Rectangle on the screen to use in total for both the label and the control. - The unique ID of the control. If none specified, the ID of the following control is used. - Label to show in front of the control. - Style to use for the label. - - Rectangle on the screen to use just for the control itself. - - - - - Makes a label in front of some control. - - Rectangle on the screen to use in total for both the label and the control. - The unique ID of the control. If none specified, the ID of the following control is used. - Label to show in front of the control. - Style to use for the label. - - Rectangle on the screen to use just for the control itself. - - - - - Makes a label in front of some control. - - Rectangle on the screen to use in total for both the label and the control. - The unique ID of the control. If none specified, the ID of the following control is used. - Label to show in front of the control. - Style to use for the label. - - Rectangle on the screen to use just for the control itself. - - - - - Makes a progress bar. - - Rectangle on the screen to use in total for both the control. - Value that is shown. - - - - - - Use this to make a field for a SerializedProperty in the Editor. - - Rectangle on the screen to use for the property field. - The SerializedProperty to make a field for. - Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. - If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). - - True if the property has children and is expanded and includeChildren was set to false; otherwise false. - - - - - Use this to make a field for a SerializedProperty in the Editor. - - Rectangle on the screen to use for the property field. - The SerializedProperty to make a field for. - Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. - If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). - - True if the property has children and is expanded and includeChildren was set to false; otherwise false. - - - - - Create a Property wrapper, useful for making regular GUI controls work with SerializedProperty. - - - - - The actual label to use for the control. - - - - - Create a new PropertyScope and begin the corresponding property. - - Rectangle on the screen to use for the control, including label if applicable. - Label in front of the slider. Use null to use the name from the SerializedProperty. Use GUIContent.none to not display a label. - The SerializedProperty to use for the control. - - - - Makes an X, Y, W, and H field for entering a Rect. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X, Y, W, and H field for entering a Rect. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X, Y, W, and H field for entering a Rect. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X, Y, W, and H for Rect using SerializedProperty (not public). - - - - - Makes an X, Y, W, and H field for entering a RectInt. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X, Y, W, and H field for entering a RectInt. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X, Y, W, and H field for entering a RectInt. - - Rectangle on the screen to use for the field. - Optional label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes a selectable label field. (Useful for showing read-only info that can be copy-pasted.) - - Rectangle on the screen to use for the label. - The text to show. - Optional GUIStyle. - - - - Makes a selectable label field. (Useful for showing read-only info that can be copy-pasted.) - - Rectangle on the screen to use for the label. - The text to show. - Optional GUIStyle. - - - - Makes a slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - The value that has been set by the user. - - - - - Makes a slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - The value that has been set by the user. - - - - - Makes a slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - The value that has been set by the user. - - - - - Makes a slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - - - Makes a slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - - - Makes a slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - - - - Makes a tag selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - - The tag selected by the user. - - - - - Makes a tag selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - - The tag selected by the user. - - - - - Makes a tag selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - - The tag selected by the user. - - - - - Makes a tag selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - - The tag selected by the user. - - - - - Makes a tag selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - - The tag selected by the user. - - - - - Makes a tag selection field. - - Rectangle on the screen to use for the field. - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - - The tag selected by the user. - - - - - Makes a text area. - - Rectangle on the screen to use for the text field. - The text to edit. - Optional GUIStyle. - - The text entered by the user. - - - - - Makes a text area. - - Rectangle on the screen to use for the text field. - The text to edit. - Optional GUIStyle. - - The text entered by the user. - - - - - Makes a text field. - - Rectangle on the screen to use for the text field. - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - - The text entered by the user. - - - - - Makes a text field. - - Rectangle on the screen to use for the text field. - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - - The text entered by the user. - - - - - Makes a text field. - - Rectangle on the screen to use for the text field. - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - - The text entered by the user. - - - - - Makes a text field. - - Rectangle on the screen to use for the text field. - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - - The text entered by the user. - - - - - Makes a text field. - - Rectangle on the screen to use for the text field. - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - - The text entered by the user. - - - - - Makes a text field. - - Rectangle on the screen to use for the text field. - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - - The text entered by the user. - - - - - Makes a toggle. - - Rectangle on the screen to use for the toggle. - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - - The selected state of the toggle. - - - - - Makes a toggle. - - Rectangle on the screen to use for the toggle. - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - - The selected state of the toggle. - - - - - Makes a toggle. - - Rectangle on the screen to use for the toggle. - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - - The selected state of the toggle. - - - - - Makes a toggle. - - Rectangle on the screen to use for the toggle. - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - - The selected state of the toggle. - - - - - Makes a toggle. - - Rectangle on the screen to use for the toggle. - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - - The selected state of the toggle. - - - - - Makes a toggle. - - Rectangle on the screen to use for the toggle. - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - - The selected state of the toggle. - - - - - Makes a toggle field where the toggle is to the left and the label immediately to the right of it. - - Rectangle on the screen to use for the toggle. - Label to display next to the toggle. - The value to edit. - Optional GUIStyle to use for the label. - - The value set by the user. - - - - - Makes a toggle field where the toggle is to the left and the label immediately to the right of it. - - Rectangle on the screen to use for the toggle. - Label to display next to the toggle. - The value to edit. - Optional GUIStyle to use for the label. - - The value set by the user. - - - - - Makes a toggle field where the toggle is to the left and the label immediately to the right of it. - - Rectangle on the screen to use for the toggle. - Label to display next to the toggle. - The value to edit. - Optional GUIStyle to use for the label. - - The value set by the user. - - - - - Makes a toggle field where the toggle is to the left and the label immediately to the right of it. - - Rectangle on the screen to use for the toggle. - Label to display next to the toggle. - The value to edit. - Optional GUIStyle to use for the label. - - The value set by the user. - - - - - Makes an X and Y field for entering a Vector2. - - Rectangle on the screen to use for the field. - Label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X and Y field for entering a Vector2. - - Rectangle on the screen to use for the field. - Label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X and Y integer field for entering a Vector2Int. - - Rectangle on the screen to use for the field. - Label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X and Y integer field for entering a Vector2Int. - - Rectangle on the screen to use for the field. - Label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X, Y, and Z field for entering a Vector3. - - Rectangle on the screen to use for the field. - Label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X, Y, and Z field for entering a Vector3. - - Rectangle on the screen to use for the field. - Label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X, Y, and Z integer field for entering a Vector3Int. - - Rectangle on the screen to use for the field. - Label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X, Y, and Z integer field for entering a Vector3Int. - - Rectangle on the screen to use for the field. - Label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Makes an X, Y, Z, and W field for entering a Vector4. - - Rectangle on the screen to use for the field. - Label to display above the field. - The value to edit. - - The value entered by the user. - - - - - Auto laid out version of EditorGUI. - - - - - Begins a group that can be be hidden/shown and the transition will be animated. - - A value between 0 and 1, 0 being hidden, and 1 being fully visible. - - If the group is visible or not. - - - - - Begin a horizontal group and get its rect back. - - Optional GUIStyle. - An optional list of layout options that specify extra layout - properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a horizontal group and get its rect back. - - Optional GUIStyle. - An optional list of layout options that specify extra layout - properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin a vertical group with a toggle to enable or disable all the controls within at once. - - Label to show above the toggled controls. - Enabled state of the toggle group. - - The enabled state selected by the user. - - - - - Begin a vertical group with a toggle to enable or disable all the controls within at once. - - Label to show above the toggled controls. - Enabled state of the toggle group. - - The enabled state selected by the user. - - - - - Begin a vertical group and get its rect back. - - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. - Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a vertical group and get its rect back. - - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. - Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a vertical group and get its rect back. - - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. - Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make Center & Extents field for entering a Bounds. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make Center & Extents field for entering a Bounds. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make Center & Extents field for entering a Bounds. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make Position & Size field for entering a BoundsInt. - - Make Position & Size field for entering a Bounds. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make Position & Size field for entering a BoundsInt. - - Make Position & Size field for entering a Bounds. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make Position & Size field for entering a BoundsInt. - - Make Position & Size field for entering a Bounds. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a field for selecting a Color. - - Optional label to display in front of the field. - The color to edit. - If true, the color picker should show the eyedropper control. If false, don't show it. - If true, allow the user to set an alpha value for the color. If false, hide the alpha component. - If true, treat the color as an HDR value. If false, treat it as a standard LDR value. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The color selected by the user. - - - - - Make a field for selecting a Color. - - Optional label to display in front of the field. - The color to edit. - If true, the color picker should show the eyedropper control. If false, don't show it. - If true, allow the user to set an alpha value for the color. If false, hide the alpha component. - If true, treat the color as an HDR value. If false, treat it as a standard LDR value. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The color selected by the user. - - - - - Make a field for selecting a Color. - - Optional label to display in front of the field. - The color to edit. - If true, the color picker should show the eyedropper control. If false, don't show it. - If true, allow the user to set an alpha value for the color. If false, hide the alpha component. - If true, treat the color as an HDR value. If false, treat it as a standard LDR value. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The color selected by the user. - - - - - Make a field for selecting a Color. - - Optional label to display in front of the field. - The color to edit. - If true, the color picker should show the eyedropper control. If false, don't show it. - If true, allow the user to set an alpha value for the color. If false, hide the alpha component. - If true, treat the color as an HDR value. If false, treat it as a standard LDR value. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The color selected by the user. - - - - - Make a field for selecting a Color. - - Optional label to display in front of the field. - The color to edit. - If true, the color picker should show the eyedropper control. If false, don't show it. - If true, allow the user to set an alpha value for the color. If false, hide the alpha component. - If true, treat the color as an HDR value. If false, treat it as a standard LDR value. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The color selected by the user. - - - - - Make a field for editing an AnimationCurve. - - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The curve edited by the user. - - - - - Make a field for editing an AnimationCurve. - - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The curve edited by the user. - - - - - Make a field for editing an AnimationCurve. - - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The curve edited by the user. - - - - - Make a field for editing an AnimationCurve. - - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The curve edited by the user. - - - - - Make a field for editing an AnimationCurve. - - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The curve edited by the user. - - - - - Make a field for editing an AnimationCurve. - - Optional label to display in front of the field. - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The curve edited by the user. - - - - - Make a field for editing an AnimationCurve. - - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Optional label to display in front of the field. Pass [[GUIContent.none] to hide the label. - - - - Make a field for editing an AnimationCurve. - - The curve to edit. - The color to show the curve with. - Optional rectangle that the curve is restrained within. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Optional label to display in front of the field. Pass [[GUIContent.none] to hide the label. - - - - Make a delayed text field for entering doubles. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> - See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, - GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the double field. - - - - - Make a delayed text field for entering doubles. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> - See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, - GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the double field. - - - - - Make a delayed text field for entering doubles. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> - See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, - GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the double field. - - - - - Make a delayed text field for entering doubles. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> - See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, - GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the double field. - - - - - Make a delayed text field for entering doubles. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> - See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, - GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the double field. - - - - - Make a delayed text field for entering doubles. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> - See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, - GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the double field. - - - - - Make a delayed text field for entering doubles. - - The double property to edit. - Optional label to display in front of the double field. Pass GUIContent.none to hide label. - - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> - See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, - GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a delayed text field for entering doubles. - - The double property to edit. - Optional label to display in front of the double field. Pass GUIContent.none to hide label. - - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> - See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, - GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a delayed text field for entering floats. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the float field. - - - - - Make a delayed text field for entering floats. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the float field. - - - - - Make a delayed text field for entering floats. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the float field. - - - - - Make a delayed text field for entering floats. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the float field. - - - - - Make a delayed text field for entering floats. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the float field. - - - - - Make a delayed text field for entering floats. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the float field. - - - - - Make a delayed text field for entering floats. - - The float property to edit. - Optional label to display in front of the float field. Pass GUIContent.none to hide label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a delayed text field for entering floats. - - The float property to edit. - Optional label to display in front of the float field. Pass GUIContent.none to hide label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a delayed text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the int field. - - - - - Make a delayed text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the int field. - - - - - Make a delayed text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the int field. - - - - - Make a delayed text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the int field. - - - - - Make a delayed text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the int field. - - - - - Make a delayed text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the int field. - - - - - Make a delayed text field for entering integers. - - The int property to edit. - Optional label to display in front of the int field. Pass GUIContent.none to hide label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a delayed text field for entering integers. - - The int property to edit. - Optional label to display in front of the int field. Pass GUIContent.none to hide label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a delayed text field. - - Optional label to display in front of the int field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the text field. - - - - - Make a delayed text field. - - Optional label to display in front of the int field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the text field. - - - - - Make a delayed text field. - - Optional label to display in front of the int field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the text field. - - - - - Make a delayed text field. - - Optional label to display in front of the int field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the text field. - - - - - Make a delayed text field. - - Optional label to display in front of the int field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the text field. - - - - - Make a delayed text field. - - Optional label to display in front of the int field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. Note that the return value will not change until the user has pressed enter or focus is moved away from the text field. - - - - - Make a delayed text field. - - The text property to edit. - Optional label to display in front of the int field. Pass GUIContent.none to hide label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a delayed text field. - - The text property to edit. - Optional label to display in front of the int field. Pass GUIContent.none to hide label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a text field for entering double values. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering double values. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering double values. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering double values. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering double values. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering double values. - - Optional label to display in front of the double field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a button that reacts to mouse down, for displaying your own dropdown content. - - Text, image and tooltip for this button. - Whether the button should be selectable by keyboard or not. - Optional style to use. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the user clicks the button. - - - - - Make a button that reacts to mouse down, for displaying your own dropdown content. - - Text, image and tooltip for this button. - Whether the button should be selectable by keyboard or not. - Optional style to use. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the user clicks the button. - - - - - Closes a group started with BeginFadeGroup. - - - - - Close a group started with BeginHorizontal. - - - - - Ends a scrollview started with a call to BeginScrollView. - - - - - Close a group started with BeginToggleGroup. - - - - - Close a group started with BeginVertical. - - - - - Displays a menu with an option for every value of the enum type when clicked. - - Optional label to display in front of the enum flags field. - Enum flags value. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. - - Optional label to display in front of the enum flags field. - Enum flags value. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. - - Optional label to display in front of the enum flags field. - Enum flags value. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. - - Optional label to display in front of the enum flags field. - Enum flags value. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. - - Optional label to display in front of the enum flags field. - Enum flags value. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. - - Optional label to display in front of the enum flags field. - Enum flags value. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. - - Optional label to display in front of the enum flags field. - Enum flags value. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - Displays a menu with an option for every value of the enum type when clicked. - - Optional label to display in front of the enum flags field. - Enum flags value. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - - The enum flags value modified by the user. This is a selection BitMask where each bit represents an Enum value index. (Note this returned value is not itself an Enum). - - - - - This method is obsolete. Use EditorGUILayout.EnumFlagsField instead. - -Make a field for enum based masks. - - Prefix label for this field. - Enum to use for the flags. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value modified by the user. - - - - - This method is obsolete. Use EditorGUILayout.EnumFlagsField instead. - -Make a field for enum based masks. - - Prefix label for this field. - Enum to use for the flags. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value modified by the user. - - - - - This method is obsolete. Use EditorGUILayout.EnumFlagsField instead. - -Make a field for enum based masks. - - Prefix label for this field. - Enum to use for the flags. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value modified by the user. - - - - - This method is obsolete. Use EditorGUILayout.EnumFlagsField instead. - -Make a field for enum based masks. - - Prefix label for this field. - Enum to use for the flags. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value modified by the user. - - - - - This method is obsolete. Use EditorGUILayout.EnumFlagsField instead. - -Make a field for enum based masks. - - Prefix label for this field. - Enum to use for the flags. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value modified by the user. - - - - - This method is obsolete. Use EditorGUILayout.EnumFlagsField instead. - -Make a field for enum based masks. - - Prefix label for this field. - Enum to use for the flags. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value modified by the user. - - - - - This method is obsolete. Use EditorGUILayout.EnumFlagsField instead. - -Make an enum popup selection field for a bitmask. - - Optional label in front of the field. - The enum options the field shows. - Optional GUIStyle. - Optional layout options. - - The enum options that has been selected by the user. - - - - - This method is obsolete. Use EditorGUILayout.EnumFlagsField instead. - -Make an enum popup selection field for a bitmask. - - Optional label in front of the field. - The enum options the field shows. - Optional GUIStyle. - Optional layout options. - - The enum options that has been selected by the user. - - - - - This method is obsolete. Use EditorGUILayout.EnumFlagsField instead. - -Make an enum popup selection field for a bitmask. - - Optional label in front of the field. - The enum options the field shows. - Optional GUIStyle. - Optional layout options. - - The enum options that has been selected by the user. - - - - - This method is obsolete. Use EditorGUILayout.EnumFlagsField instead. - -Make an enum popup selection field for a bitmask. - - Optional label in front of the field. - The enum options the field shows. - Optional GUIStyle. - Optional layout options. - - The enum options that has been selected by the user. - - - - - Make an enum popup selection field. - - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Make an enum popup selection field. - - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Make an enum popup selection field. - - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Make an enum popup selection field. - - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Make an enum popup selection field. - - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Make an enum popup selection field. - - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Make an enum popup selection field. - - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Make an enum popup selection field. - - Optional label in front of the field. - The enum option the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute. - Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise. - - The enum option that has been selected by the user. - - - - - Begins a group that can be be hidden/shown and the transition will be animated. - - - - - Whether the group is visible. - - - - - Create a new FadeGroupScope and begin the corresponding group. - - A value between 0 and 1, 0 being hidden, and 1 being fully visible. - - - - Make a text field for entering float values. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering float values. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering float values. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering float values. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering float values. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering float values. - - Optional label to display in front of the float field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a label with a foldout arrow to the left of it. - - The shown foldout state. - The label to show. - Optional GUIStyle. - Whether to toggle the foldout state when the label is clicked. - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Make a label with a foldout arrow to the left of it. - - The shown foldout state. - The label to show. - Optional GUIStyle. - Whether to toggle the foldout state when the label is clicked. - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Make a label with a foldout arrow to the left of it. - - The shown foldout state. - The label to show. - Optional GUIStyle. - Whether to toggle the foldout state when the label is clicked. - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Make a label with a foldout arrow to the left of it. - - The shown foldout state. - The label to show. - Optional GUIStyle. - Whether to toggle the foldout state when the label is clicked. - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Make a label with a foldout arrow to the left of it. - - The shown foldout state. - The label to show. - Optional GUIStyle. - Whether to toggle the foldout state when the label is clicked. - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Make a label with a foldout arrow to the left of it. - - The shown foldout state. - The label to show. - Optional GUIStyle. - Whether to toggle the foldout state when the label is clicked. - - The foldout state selected by the user. If true, you should render sub-objects. - - - - - Get a rect for an Editor control. - - Optional boolean to specify if the control has a label. Default is true. - The height in pixels of the control. Default is EditorGUIUtility.singleLineHeight. - Optional GUIStyle to use for the control. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style. -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Get a rect for an Editor control. - - Optional boolean to specify if the control has a label. Default is true. - The height in pixels of the control. Default is EditorGUIUtility.singleLineHeight. - Optional GUIStyle to use for the control. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style. -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Get a rect for an Editor control. - - Optional boolean to specify if the control has a label. Default is true. - The height in pixels of the control. Default is EditorGUIUtility.singleLineHeight. - Optional GUIStyle to use for the control. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style. -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Get a rect for an Editor control. - - Optional boolean to specify if the control has a label. Default is true. - The height in pixels of the control. Default is EditorGUIUtility.singleLineHeight. - Optional GUIStyle to use for the control. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style. -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a field for editing a Gradient. - - Optional label to display in front of the field. - The gradient to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The gradient edited by the user. - - - - - Make a field for editing a Gradient. - - Optional label to display in front of the field. - The gradient to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The gradient edited by the user. - - - - - Make a field for editing a Gradient. - - Optional label to display in front of the field. - The gradient to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The gradient edited by the user. - - - - - Make a field for editing a Gradient. - - Optional label to display in front of the field. - The gradient to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The gradient edited by the user. - - - - - Make a help box with a message to the user. - - The message text. - The type of message. - If true, the box will cover the whole width of the window; otherwise it will cover the controls part only. - - - - Make a help box with a message to the user. - - The message text. - The type of message. - If true, the box will cover the whole width of the window; otherwise it will cover the controls part only. - - - - Disposable helper class for managing BeginHorizontal / EndHorizontal. - - - - - The rect of the horizontal group. - - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an inspector-window-like titlebar. - - The foldout state shown with the arrow. - The object (for example a component) or objects that the titlebar is for. - - - The foldout state selected by the user. - - - - - Make an inspector-window-like titlebar. - - The foldout state shown with the arrow. - The object (for example a component) or objects that the titlebar is for. - - - The foldout state selected by the user. - - - - - Make a text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering integers. - - Optional label to display in front of the int field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an integer popup selection field. - - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value of the option that has been selected by the user. - - - - - Make an integer popup selection field. - - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value of the option that has been selected by the user. - - - - - Make an integer popup selection field. - - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value of the option that has been selected by the user. - - - - - Make an integer popup selection field. - - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value of the option that has been selected by the user. - - - - - Make an integer popup selection field. - - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value of the option that has been selected by the user. - - - - - Make an integer popup selection field. - - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value of the option that has been selected by the user. - - - - - Make an integer popup selection field. - - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value of the option that has been selected by the user. - - - - - Make an integer popup selection field. - - Optional label in front of the field. - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value of the option that has been selected by the user. - - - - - Make an integer popup selection field. - - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional label in front of the field. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make an integer popup selection field. - - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional label in front of the field. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make an integer popup selection field. - - The value of the option the field shows. - An array with the displayed options the user can choose from. - An array with the values for each option. - Optional label in front of the field. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a slider the user can drag to change an integer value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value that has been set by the user. - - - - - Make a slider the user can drag to change an integer value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value that has been set by the user. - - - - - Make a slider the user can drag to change an integer value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value that has been set by the user. - - - - - Make a slider the user can drag to change an integer value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a slider the user can drag to change an integer value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a slider the user can drag to change an integer value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a label field. (Useful for showing read-only info.) - - Label in front of the label field. - The label to show to the right. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a label field. (Useful for showing read-only info.) - - Label in front of the label field. - The label to show to the right. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a label field. (Useful for showing read-only info.) - - Label in front of the label field. - The label to show to the right. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a label field. (Useful for showing read-only info.) - - Label in front of the label field. - The label to show to the right. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a label field. (Useful for showing read-only info.) - - Label in front of the label field. - The label to show to the right. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a label field. (Useful for showing read-only info.) - - Label in front of the label field. - The label to show to the right. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a label field. (Useful for showing read-only info.) - - Label in front of the label field. - The label to show to the right. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a label field. (Useful for showing read-only info.) - - Label in front of the label field. - The label to show to the right. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - - Make a layer selection field. - - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The layer selected by the user. - - - - - Make a layer selection field. - - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The layer selected by the user. - - - - - Make a layer selection field. - - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The layer selected by the user. - - - - - Make a layer selection field. - - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The layer selected by the user. - - - - - Make a layer selection field. - - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The layer selected by the user. - - - - - Make a layer selection field. - - Optional label in front of the field. - The layer shown in the field. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The layer selected by the user. - - - - - Make a text field for entering long integers. - - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering long integers. - - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering long integers. - - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering long integers. - - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering long integers. - - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a text field for entering long integers. - - Optional label to display in front of the long field. - The value to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make a field for masks. - - Prefix label of the field. - The current mask to display. - A string array containing the labels for each flag. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - The value modified by the user. - - - - - Make a field for masks. - - Prefix label of the field. - The current mask to display. - A string array containing the labels for each flag. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - The value modified by the user. - - - - - Make a field for masks. - - Prefix label of the field. - The current mask to display. - A string array containing the labels for each flag. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - The value modified by the user. - - - - - Make a field for masks. - - Prefix label of the field. - The current mask to display. - A string array containing the labels for each flag. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - The value modified by the user. - - - - - Make a field for masks. - - Prefix label of the field. - The current mask to display. - A string array containing the labels for each flag. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - The value modified by the user. - - - - - Make a field for masks. - - Prefix label of the field. - The current mask to display. - A string array containing the labels for each flag. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - The value modified by the user. - - - - - Make a special slider the user can use to specify a range between a min and a max. - - Optional label in front of the slider. - The lower value of the range the slider shows, passed by reference. - The upper value at the range the slider shows, passed by reference. - The limit at the left end of the slider. - The limit at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a special slider the user can use to specify a range between a min and a max. - - Optional label in front of the slider. - The lower value of the range the slider shows, passed by reference. - The upper value at the range the slider shows, passed by reference. - The limit at the left end of the slider. - The limit at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a special slider the user can use to specify a range between a min and a max. - - Optional label in front of the slider. - The lower value of the range the slider shows, passed by reference. - The upper value at the range the slider shows, passed by reference. - The limit at the left end of the slider. - The limit at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a field to receive any object type. - - Optional label in front of the field. - The object the field shows. - The type of the objects that can be assigned. - Allow assigning Scene objects. See Description for more info. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style. -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The object that has been set by the user. - - - - - Make a field to receive any object type. - - Optional label in front of the field. - The object the field shows. - The type of the objects that can be assigned. - Allow assigning Scene objects. See Description for more info. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style. -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The object that has been set by the user. - - - - - Make a field to receive any object type. - - Optional label in front of the field. - The object the field shows. - The type of the objects that can be assigned. - Allow assigning Scene objects. See Description for more info. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style. -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The object that has been set by the user. - - - - - Make a field to receive any object type. - - The object reference property the field shows. - The type of the objects that can be assigned. - Optional label in front of the field. Pass GUIContent.none to hide the label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a field to receive any object type. - - The object reference property the field shows. - The type of the objects that can be assigned. - Optional label in front of the field. Pass GUIContent.none to hide the label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a field to receive any object type. - - The object reference property the field shows. - The type of the objects that can be assigned. - Optional label in front of the field. Pass GUIContent.none to hide the label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a field to receive any object type. - - The object reference property the field shows. - The type of the objects that can be assigned. - Optional label in front of the field. Pass GUIContent.none to hide the label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a text field where the user can enter a password. - - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The password entered by the user. - - - - - Make a text field where the user can enter a password. - - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The password entered by the user. - - - - - Make a text field where the user can enter a password. - - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The password entered by the user. - - - - - Make a text field where the user can enter a password. - - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The password entered by the user. - - - - - Make a text field where the user can enter a password. - - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The password entered by the user. - - - - - Make a text field where the user can enter a password. - - Optional label to display in front of the password field. - The password to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The password entered by the user. - - - - - Make a generic popup selection field. - - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The index of the option that has been selected by the user. - - - - - Make a generic popup selection field. - - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The index of the option that has been selected by the user. - - - - - Make a generic popup selection field. - - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The index of the option that has been selected by the user. - - - - - Make a generic popup selection field. - - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The index of the option that has been selected by the user. - - - - - Make a generic popup selection field. - - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The index of the option that has been selected by the user. - - - - - Make a generic popup selection field. - - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The index of the option that has been selected by the user. - - - - - Make a generic popup selection field. - - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The index of the option that has been selected by the user. - - - - - Make a generic popup selection field. - - Optional label in front of the field. - The index of the option the field shows. - An array with the options shown in the popup. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The index of the option that has been selected by the user. - - - - - Make a label in front of some control. - - Label to show to the left of the control. - - - - - - Make a label in front of some control. - - Label to show to the left of the control. - - - - - - Make a label in front of some control. - - Label to show to the left of the control. - - - - - - Make a label in front of some control. - - Label to show to the left of the control. - - - - - - Make a label in front of some control. - - Label to show to the left of the control. - - - - - - Make a label in front of some control. - - Label to show to the left of the control. - - - - - - Make a field for SerializedProperty. - - The SerializedProperty to make a field for. - Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. - If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - True if the property has children and is expanded and includeChildren was set to false; otherwise false. - - - - - Make a field for SerializedProperty. - - The SerializedProperty to make a field for. - Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. - If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - True if the property has children and is expanded and includeChildren was set to false; otherwise false. - - - - - Make a field for SerializedProperty. - - The SerializedProperty to make a field for. - Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. - If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - True if the property has children and is expanded and includeChildren was set to false; otherwise false. - - - - - Make a field for SerializedProperty. - - The SerializedProperty to make a field for. - Optional label to use. If not specified the label of the property itself is used. Use GUIContent.none to not display a label at all. - If true the property including children is drawn; otherwise only the control itself (such as only a foldout but nothing below it). - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - True if the property has children and is expanded and includeChildren was set to false; otherwise false. - - - - - Make an X, Y, W & H field for entering a Rect. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X, Y, W & H field for entering a Rect. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X, Y, W & H field for entering a Rect. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X, Y, W & H field for entering a RectInt. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X, Y, W & H field for entering a RectInt. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X, Y, W & H field for entering a RectInt. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Disposable helper class for managing BeginScrollView / EndScrollView. - - - - - Whether this ScrollView should handle scroll wheel events. (default: true). - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The scroll position to use. - Whether to always show the horizontal scrollbar. If false, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Whether to always show the vertical scrollbar. If false, it is only shown when the content inside the ScrollView is higher than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The scroll position to use. - Whether to always show the horizontal scrollbar. If false, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Whether to always show the vertical scrollbar. If false, it is only shown when the content inside the ScrollView is higher than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The scroll position to use. - Whether to always show the horizontal scrollbar. If false, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Whether to always show the vertical scrollbar. If false, it is only shown when the content inside the ScrollView is higher than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The scroll position to use. - Whether to always show the horizontal scrollbar. If false, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Whether to always show the vertical scrollbar. If false, it is only shown when the content inside the ScrollView is higher than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The scroll position to use. - Whether to always show the horizontal scrollbar. If false, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Whether to always show the vertical scrollbar. If false, it is only shown when the content inside the ScrollView is higher than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Make a selectable label field. (Useful for showing read-only info that can be copy-pasted.) - - The text to show. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a selectable label field. (Useful for showing read-only info that can be copy-pasted.) - - The text to show. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a slider the user can drag to change a value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value that has been set by the user. - - - - - Make a slider the user can drag to change a value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value that has been set by the user. - - - - - Make a slider the user can drag to change a value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value that has been set by the user. - - - - - Make a slider the user can drag to change a value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a slider the user can drag to change a value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a slider the user can drag to change a value between a min and a max. - - Optional label in front of the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a small space between the previous control and the following. - - - - - Make a tag selection field. - - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The tag selected by the user. - - - - - Make a tag selection field. - - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The tag selected by the user. - - - - - Make a tag selection field. - - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The tag selected by the user. - - - - - Make a tag selection field. - - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The tag selected by the user. - - - - - Make a tag selection field. - - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The tag selected by the user. - - - - - Make a tag selection field. - - Optional label in front of the field. - The tag the field shows. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The tag selected by the user. - - - - - Make a text area. - - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The text entered by the user. - - - - - Make a text area. - - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The text entered by the user. - - - - - Make a text field. - - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The text entered by the user. - - - - - Make a text field. - - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The text entered by the user. - - - - - Make a text field. - - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The text entered by the user. - - - - - Make a text field. - - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The text entered by the user. - - - - - Make a text field. - - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The text entered by the user. - - - - - Make a text field. - - Optional label to display in front of the text field. - The text to edit. - Optional GUIStyle. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The text entered by the user. - - - - - Make a toggle. - - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - An optional list of layout options that specify extra layout - properties. Any values passed in here will override settings defined by the style.<br> - -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The selected state of the toggle. - - - - - Make a toggle. - - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - An optional list of layout options that specify extra layout - properties. Any values passed in here will override settings defined by the style.<br> - -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The selected state of the toggle. - - - - - Make a toggle. - - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - An optional list of layout options that specify extra layout - properties. Any values passed in here will override settings defined by the style.<br> - -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The selected state of the toggle. - - - - - Make a toggle. - - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - An optional list of layout options that specify extra layout - properties. Any values passed in here will override settings defined by the style.<br> - -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The selected state of the toggle. - - - - - Make a toggle. - - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - An optional list of layout options that specify extra layout - properties. Any values passed in here will override settings defined by the style.<br> - -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The selected state of the toggle. - - - - - Make a toggle. - - Optional label in front of the toggle. - The shown state of the toggle. - Optional GUIStyle. - An optional list of layout options that specify extra layout - properties. Any values passed in here will override settings defined by the style.<br> - -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The selected state of the toggle. - - - - - Begin a vertical group with a toggle to enable or disable all the controls within at once. - - - - - The enabled state selected by the user. - - - - - - - Label to show above the toggled controls. - Enabled state of the toggle group. - - - - - - Label to show above the toggled controls. - Enabled state of the toggle group. - - - - Make a toggle field where the toggle is to the left and the label immediately to the right of it. - - Label to display next to the toggle. - The value to edit. - Optional GUIStyle to use for the label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a toggle field where the toggle is to the left and the label immediately to the right of it. - - Label to display next to the toggle. - The value to edit. - Optional GUIStyle to use for the label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a toggle field where the toggle is to the left and the label immediately to the right of it. - - Label to display next to the toggle. - The value to edit. - Optional GUIStyle to use for the label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a toggle field where the toggle is to the left and the label immediately to the right of it. - - Label to display next to the toggle. - The value to edit. - Optional GUIStyle to use for the label. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an X & Y field for entering a Vector2. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> - - The value entered by the user. - - - - - Make an X & Y field for entering a Vector2. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> - - The value entered by the user. - - - - - Make an X & Y integer field for entering a Vector2Int. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X & Y integer field for entering a Vector2Int. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X, Y & Z field for entering a Vector3. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout - properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X, Y & Z field for entering a Vector3. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout - properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X, Y & Z integer field for entering a Vector3Int. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X, Y & Z integer field for entering a Vector3Int. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Make an X, Y, Z & W field for entering a Vector4. - - Label to display above the field. - The value to edit. - An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The value entered by the user. - - - - - Disposable helper class for managing BeginVertical / EndVertical. - - - - - The rect of the vertical group. - - - - - Create a new VerticalScope and begin the corresponding vertical group. - - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new VerticalScope and begin the corresponding vertical group. - - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Miscellaneous helper stuff for EditorGUI. - - - - - The width of the GUI area for the current EditorWindow or other view. - - - - - Is a text field currently editing text? - - - - - The minimum width in pixels reserved for the fields of Editor GUI controls. - - - - - Is the Editor GUI is hierarchy mode? - - - - - Is the user currently using the pro skin? (Read Only) - - - - - The width in pixels reserved for labels of Editor GUI controls. - - - - - The scale of GUI points relative to screen pixels for the current view - -This value is the number of screen pixels per point of interface space. For instance, 2.0 on retina displays. Note that the value may differ from one view to the next if the views are on monitors with different UI scales. - - - - - Get the height used for a single Editor control such as a one-line EditorGUI.TextField or EditorGUI.Popup. - - - - - Get the height used by default for vertical spacing between controls. - - - - - The system copy buffer. - - - - - True if a text field currently has focused and the text in it is selected. - - - - - Get a white texture. - - - - - Is the Editor GUI currently in wide mode? - - - - - Add a custom mouse pointer to a control. - - The rectangle the control should be shown within. - The mouse cursor to use. - ID of a target control. - - - - Add a custom mouse pointer to a control. - - The rectangle the control should be shown within. - The mouse cursor to use. - ID of a target control. - - - - Creates an event that can be sent to another window. - - The command to be sent. - - - - Draw a color swatch. - - The rectangle to draw the color swatch within. - The color to draw. - - - - Draw a curve swatch. - - The rectangle to draw the color swatch within. - The curve to draw. - The curve to draw as a SerializedProperty. - The color to draw the curve with. - The color to draw the background with. - Optional parameter to specify the range of the curve which should be included in swatch. - - - - Draw a curve swatch. - - The rectangle to draw the color swatch within. - The curve to draw. - The curve to draw as a SerializedProperty. - The color to draw the curve with. - The color to draw the background with. - Optional parameter to specify the range of the curve which should be included in swatch. - - - - Draw swatch with a filled region between two SerializedProperty curves. - - - - - - - - - - - Draw swatch with a filled region between two curves. - - - - - - - - - - - Get a texture from its source filename. - - - - - - Get one of the built-in GUI skins, which can be the game view, inspector or Scene view skin as chosen by the parameter. - - - - - - Layout list of string items left to right, top to bottom in the given area. - - Area where to layout the items. - Style for the items. - Extra horizontal spacing between successive items. - Extra vertical spacing between item rows. - Strings to layout. - - List of rectangles for the passed items. - - - - - Get the size that has been set using SetIconSize. - - - - - The controlID of the currently showing object picker. - - - - - The object currently selected in the object picker. - - - - - Does a given class have per-object thumbnails? - - - - - - Fetch the GUIContent from the Unity builtin resources with the given name. - - Name of the desired icon. - Tooltip for hovering over the icon. - - - - Fetch the GUIContent from the Unity builtin resources with the given name. - - Name of the desired icon. - Tooltip for hovering over the icon. - - - - Disposable scope helper for GetIconSize / SetIconSize. - - - - - Begin an IconSizeScope. - - Size to be used for icons rendered as GUIContent within this scope. - - - - Check if any enabled camera can render to a particular display. - - Display index. - - True if a camera will render to the display. - - - - - Load a built-in resource. - - - - - - Load a required built-in resource. - - - - - - Make all EditorGUI look like regular controls. - - Width to use for prefixed labels. - Width of text entries. - - - - - - Make all EditorGUI look like regular controls. - - Width to use for prefixed labels. - Width of text entries. - - - - - - Make all EditorGUI look like regular controls. - - Width to use for prefixed labels. - Width of text entries. - - - - - - Make all EditorGUI look like simplified outline view controls. - - - - - Return a GUIContent object with the name and icon of an Object. - - - - - - - Ping an object in the Scene like clicking it in an inspector. - - The object to be pinged. - - - - - Ping an object in the Scene like clicking it in an inspector. - - The object to be pinged. - - - - - Convert a position from pixel to point space. - - A GUI position in pixel space. - - A vector representing the same position in point space. - - - - - Convert a Rect from pixel space to point space. - - A GUI rect measured in pixels. - - A rect representing the same area in points. - - - - - Convert a Rect from point space to pixel space. - - A GUI rect measured in points. - - A rect representing the same area in pixels. - - - - - Converts a position from point to pixel space. - - A GUI position in point space. - - The same position in pixel space. - - - - - Send an input event into the game. - - - - - - Render all ingame cameras. - - The device coordinates to render all game cameras into. - Show gizmos as well. - - - - - - Render all ingame cameras. - - The device coordinates to render all game cameras into. - Show gizmos as well. - - - - - - Set icons rendered as part of GUIContent to be rendered at a specific size. - - - - - - Show the object picker from code. - - The object to be selected by default. - Is selection of Scene objects allowed, or should it only show assets. - Default search filter to apply. - The id of the control to set. This is useful if you are showing more than one of these. You can get the value at a later time. - - - - Utility functions for working with JSON data and engine objects. - - - - - Overwrite data in an object by reading from its JSON representation. - - The JSON representation of the object. - The object to overwrite. - - - - Generate a JSON representation of an object. - - The object to convert to JSON form. - If true, format the output for readability. If false, format the output for minimum size. Default is false. - - The object's data in JSON format. - - - - - Generate a JSON representation of an object. - - The object to convert to JSON form. - If true, format the output for readability. If false, format the output for minimum size. Default is false. - - The object's data in JSON format. - - - - - Stores and accesses Unity editor preferences. - - - - - Removes all keys and values from the preferences. Use with caution. - - - - - Removes key and its corresponding value from the preferences. - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the float value corresponding to key if it exists in the preference file. - - Name of key to read float from. - Float value to return if the key is not in the storage. - - The float value stored in the preference file or the defaultValue id the - requested float does not exist. - - - - - Returns the float value corresponding to key if it exists in the preference file. - - Name of key to read float from. - Float value to return if the key is not in the storage. - - The float value stored in the preference file or the defaultValue id the - requested float does not exist. - - - - - Returns the value corresponding to key in the preference file if it exists. - - Name of key to read integer from. - Integer value to return if the key is not in the storage. - - The value stored in the preference file. - - - - - Returns the value corresponding to key in the preference file if it exists. - - Name of key to read integer from. - Integer value to return if the key is not in the storage. - - The value stored in the preference file. - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns true if key exists in the preferences file. - - Name of key to check for. - - The existence or not of the key. - - - - - Sets the value of the preference identified by key. - - - - - - - Sets the float value of the preference identified by key. - - Name of key to write float into. - Float value to write into the storage. - - - - Sets the value of the preference identified by key as an integer. - - Name of key to write integer to. - Value of the integer to write into the storage. - - - - Sets the value of the preference identified by key. Note that EditorPrefs does not support null strings and will store an empty string instead. - - - - - - - The editor selected render mode for Scene View selection. - - - - - The Renderer has no selection highlight or wireframe in the Editor. - - - - - The Renderer has selection highlight but no wireframe in the Editor. - - - - - The Renderer has wireframe but not selection highlight in the Editor. - - - - - Enum that selects which skin to return from EditorGUIUtility.GetBuiltinSkin. - - - - - The skin used for game views. - - - - - The skin used for inspectors. - - - - - The skin used for Scene views. - - - - - Common GUIStyles used for EditorGUI controls. - - - - - Bold font. - - - - - Style for bold label. - - - - - Style for label with small font which is centered and grey. - - - - - Style used for headings for Color fields. - - - - - Style used for headings for EditorGUI.Foldout. - - - - - Style used for headings for EditorGUI.Foldout. - - - - - Style used for background box for EditorGUI.HelpBox. - - - - - Wrap content in a vertical group with this style to get the default margins used in the Inspector. - - - - - Wrap content in a vertical group with this style to get full width margins in the Inspector. - - - - - Style used for the labelled on all EditorGUI overloads that take a prefix label. - - - - - Style for label with large font. - - - - - Style used for headings for Layer masks. - - - - - Mini Bold font. - - - - - Style for mini bold label. - - - - - Style used for a standalone small button. - - - - - Style used for the leftmost button in a horizontal button group. - - - - - Style used for the middle buttons in a horizontal group. - - - - - Style used for the rightmost button in a horizontal group. - - - - - Mini font. - - - - - Style for label with small font. - - - - - Style used for the drop-down controls. - - - - - Smaller text field. - - - - - Style used for field editors for numbers. - - - - - Style used for headings for object fields. - - - - - Style used for object fields that have a thumbnail (e.g Textures). - - - - - Style used for headings for the Select button in object fields. - - - - - Style used for EditorGUI.Popup, EditorGUI.EnumPopup,. - - - - - Style used for a radio button. - - - - - Standard font. - - - - - Style used for EditorGUI.TextArea. - - - - - Style used for EditorGUI.TextField. - - - - - Style used for headings for EditorGUI.Toggle. - - - - - Style used for headings for EditorGUILayout.BeginToggleGroup. - - - - - Toolbar background from top of windows. - - - - - Style for Button and Toggles in toolbars. - - - - - Toolbar Dropdown. - - - - - Toolbar Popup. - - - - - Toolbar text field. - - - - - Style for white bold label. - - - - - Style for white label. - - - - - Style for white large label. - - - - - Style for white mini label. - - - - - Style for word wrapped label. - - - - - Style for word wrapped mini label. - - - - - User build settings for the Editor - - - - - The currently active build target. - - - - - Triggered in response to SwitchActiveBuildTarget. - - - - - DEFINE directives for the compiler. - - - - - Enable source-level debuggers to connect. - - - - - Android platform options. - - - - - Set which build system to use for building the Android package. - - - - - ETC2 texture decompression fallback on Android devices that don't support ETC2. - - - - - Use deprecated Android SDK tools to pack application. - - - - - Set to true to build an Android App Bundle (aab file) instead of an apk. The default value is false. - - - - - Is build script only enabled. - - - - - Compress files in package. - - - - - Build data compressed with PSArc. - - - - - Start the player with a connection to the profiler. - - - - - Enables a development build. - - - - - Enables a Linux headless build. - - - - - Are array bounds actively validated? - - - - - Are divide by zero's actively validated? - - - - - Are null references actively validated? - - - - - Export Android Project for use with Android Studio/Gradle. - - - - - Force installation of package, even if error. - - - - - Force full optimizations for script complilation in Development builds. - - - - - Place the built player in the build folder. - - - - - Scheme with which the project will be run in Xcode. - - - - - Places the package on the outer edge of the disk. - - - - - Build submission materials. - - - - - PS4 Build Subtarget. - - - - - Specifies which version of PS4 hardware to target. - - - - - The currently selected build target group. - - - - - The currently selected target for a standalone build. - - - - - When building an Xbox One Streaming Install package (makepkg.exe) The layout generation code in Unity will assign each Scene and associated assets to individual chunks. Unity will mark Scene 0 as being part of the launch range, IE the set of chunks required to launch the game, you may include additional Scenes in this launch range if you desire, this specifies a range of Scenes (starting at 0) to be included in the launch set. - - - - - Symlink runtime libraries with an iOS Xcode project. - - - - - Use prebuilt JavaScript version of Unity engine. - - - - - Generate and reference C# projects from your main solution. - - - - - Enable an application to connect to a remote HoloLens device and stream holographic content. - - - - - Sets and gets target device type for the application to run on when building to Windows Store platform. - - - - - Sets and gets target UWP SDK to build Windows Store application against. - - - - - Sets and gets Visual Studio version to build Windows Store application with. - - - - - Xbox Build subtarget. - - - - - The currently selected Xbox One Deploy Drive. - - - - - The currently selected Xbox One Deploy Method. - - - - - Network shared folder path e.g. -MYCOMPUTER\SHAREDFOLDER\. - - - - - Sets the XBox to reboot and redeploy when the deployment fails. - - - - - Windows account username associated with PC share folder. - - - - - Get the current location for the build. - - - - - - Returns value for platform specifc Editor setting. - - The name of the platform. - The name of the setting. - - - - Is .NET Native enabled for specific build configuration. -More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. - - Build configuration. - - True if .NET Native is enabled for the specific build configuration. - - - - - Set a new location for the build. - - - - - - - Set platform specifc Editor setting. - - The name of the platform. - The name of the setting. - Setting value. - - - - Enables or Disables .NET Native for specific build configuration. -More information - https:msdn.microsoft.comen-uslibrary/dn584397(v=vs.110).aspx. - - Build configuration. - Is enabled? - - - - Select a new build target to be active. - - Target build platform. - Build target group. - - True if the build target was successfully switched, false otherwise (for example, if license checks fail, files are missing, or if the user has cancelled the operation via the UI). - - - - - Select a new build target to be active. - - Target build platform. - Build target group. - - True if the build target was successfully switched, false otherwise (for example, if license checks fail, files are missing, or if the user has cancelled the operation via the UI). - - - - - Select a new build target to be active during the next Editor update. - - Target build platform. - Build target group. - - True if the build target was successfully switched, false otherwise (for example, if license checks fail, files are missing, or if the user has cancelled the operation via the UI). - - - - - Editor utility functions. - - - - - True if there are any compilation error messages in the log. - - - - - Removes progress bar. - - - - - Collect all objects in the hierarchy rooted at each of the given objects. - - Array of objects where the search will start. - - Array of objects heirarchically attached to the search array. - - - - - Calculates and returns a list of all assets the assets listed in roots depend on. - - - - - - Compress a cubemap texture. - - - - - - - - Compress a cubemap texture. - - - - - - - - Compress a texture. - - - - - - - - Compress a texture. - - - - - - - - Copy all settings of a Unity Object. - - - - - - - Copy all settings of a Unity Object to a second Object if they differ. - - - - - - - Copies the serializable fields from one managed object to another. - - The object to copy data from. - The object to copy data to. - - - - Creates a game object with HideFlags and specified components. - - - - - - - - Displays or updates a progress bar that has a cancel button. - - - - - - - - Displays a modal dialog. - - The title of the message box. - The text of the message. - Label displayed on the OK dialog button. - Label displayed on the Cancel dialog button. - - - - Displays a modal dialog. - - The title of the message box. - The text of the message. - Label displayed on the OK dialog button. - Label displayed on the Cancel dialog button. - - - - Displays a modal dialog with three buttons. - - Title for dialog. - Purpose for the dialog. - Dialog function chosen. - Close dialog with no operation. - Choose alternative dialog purpose. - - The id of the chosen button. - - - - - Displays a popup menu. - - - - - - - - Displays or updates a progress bar. - - - - - - - - Saves an AudioClip or MovieTexture to a file. - - - - - - - Brings the project window to the front and focuses it. - - - - - Returns a text for a number of bytes. - - - - - - Is the object enabled (0 disabled, 1 enabled, -1 has no enabled button). - - - - - - Translates an instance ID to a reference to an object. - - - - - - Determines if an object is stored on disk. - - - - - - Human-like sorting. - - - - - - - Displays the "open file" dialog and returns the selected path name. - - - - - - - - Displays the "open file" dialog and returns the selected path name. - - Title for dialog. - Default directory. - File extensions in form { "Image files", "png,jpg,jpeg", "All files", "*" }. - - - - Displays the "open folder" dialog and returns the selected path name. - - - - - - - - Displays the "save file" dialog and returns the selected path name. - - - - - - - - - Displays the "save file" dialog in the Assets folder of the project and returns the selected path name. - - - - - - - - - Displays the "save folder" dialog and returns the selected path name. - - - - - - - - Sets this camera to allow animation of materials in the Editor. - - - - - - - Sets the global time for this camera to use when rendering. - - - - - - - Marks target object as dirty. (Only suitable for non-scene objects). - - The object to mark as dirty. - - - - Set the enabled state of the object. - - - - - - - Set the Scene View selected display mode for this Renderer. - - - - - - - Sets whether the selected Renderer's wireframe will be hidden when the GameObject it is attached to is selected. - - - - - - - Unloads assets that are not used. - - When true delete assets even if linked in scripts. - - - - Unloads assets that are not used. - - When true delete assets even if linked in scripts. - - - - Updates the global shader properties to use when rendering. - - Time to use. -1 to disable. - - - - Derive from this class to create an editor window. - - - - - Does the window automatically repaint whenever the Scene has changed? - - - - - The EditorWindow which currently has keyboard focus. (Read Only) - - - - - Is this window maximized? - - - - - The maximum size of this window. - - - - - The minimum size of this window. - - - - - The EditorWindow currently under the mouse cursor. (Read Only) - - - - - The desired position of the window in screen space. - - - - - The title of this window. - - - - - The GUIContent used for drawing the title of EditorWindows. - - - - - Checks whether MouseEnterWindow and MouseLeaveWindow events are received in the GUI in this Editor window. - - - - - Checks whether MouseMove events are received in the GUI in this Editor window. - - - - - Mark the beginning area of all popup windows. - - - - - Close the editor window. - - - - - Close a window group started with EditorWindow.BeginWindows. - - - - - Moves keyboard focus to another EditorWindow. - - - - - Focuses the first found EditorWindow of specified type if it is open. - - The type of the window. Must derive from EditorWindow. - - - - Focuses the first found EditorWindow of type T if it is open. - - The type of the window. Must derive from EditorWindow. - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type T which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type T which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type T which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type T which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type T which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type T which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type T which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - An array of EditorWindow types that the window will attempt to dock onto. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type T which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - An array of EditorWindow types that the window will attempt to dock onto. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type T which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - An array of EditorWindow types that the window will attempt to dock onto. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - The position on the screen where a newly created window will show. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - The position on the screen where a newly created window will show. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - The position on the screen where a newly created window will show. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - The position on the screen where a newly created window will show. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - The position on the screen where a newly created window will show. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - The position on the screen where a newly created window will show. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Returns the first EditorWindow of type t which is currently on the screen. - - The type of the window. Must derive from EditorWindow. - The position on the screen where a newly created window will show. - Set this to true, to create a floating utility window, false to create a normal window. - If GetWindow creates a new window, it will get this title. If this value is null, use the class name as title. - Whether to give the window focus, if it already exists. (If GetWindow creates a new window, it will always get focus). - - - - Stop showing notification message. - - - - - Make the window repaint. - - - - - Sends an Event to a window. - - - - - - Show the EditorWindow window. - - Immediately display Show. - - - - Show the EditorWindow window. - - Immediately display Show. - - - - Shows a window with dropdown behaviour and styling. - - The button from which the position of the window will be determined (see description). - The initial size of the window. - - - - Show the editor window in the auxiliary window. - - - - - Show a notification message. - - - - - - Shows an Editor window using popup-style framing. - - - - - Show the EditorWindow as a floating utility window. - - - - - Editor tools for working with persistent UnityEvents. - - - - - Adds a persistent, preset call to the listener. - - Event to modify. - Function to call. - Argument to use when invoking. - - - - Adds a persistent, preset call to the listener. - - Event to modify. - Function to call. - Argument to use when invoking. - - - - Adds a persistent, preset call to the listener. - - Event to modify. - Function to call. - Argument to use when invoking. - - - - Adds a persistent, preset call to the listener. - - Event to modify. - Function to call. - Argument to use when invoking. - - - - Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. - - Event to modify. - Function to call. - - - - Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. - - Event to modify. - Function to call. - - - - Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. - - Event to modify. - Function to call. - - - - Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. - - Event to modify. - Function to call. - - - - Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. - - Event to modify. - Function to call. - - - - Adds a persistent, call to the listener. Will be invoked with the arguments as defined by the Event and sent from the call location. - - Event to modify. - Function to call. - - - - Adds a persistent, preset call to the listener. - - Event to modify. - Function to call. - Argument to use when invoking. - - - - Adds a persistent, preset call to the listener. - - Event to modify. - Function to call. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - Argument to use when invoking. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - Argument to use when invoking. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - Argument to use when invoking. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - Argument to use when invoking. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - Argument to use when invoking. - - - - Modifies the event at the given index. - - Event to modify. - Index to modify. - Function to call. - - - - Removes the given function from the event. - - Event to modify. - Index to remove (if specified). - Function to remove (if specified). - - - - Removes the given function from the event. - - Event to modify. - Index to remove (if specified). - Function to remove (if specified). - - - - Removes the given function from the event. - - Event to modify. - Index to remove (if specified). - Function to remove (if specified). - - - - Removes the given function from the event. - - Event to modify. - Index to remove (if specified). - Function to remove (if specified). - - - - Removes the given function from the event. - - Event to modify. - Index to remove (if specified). - Function to remove (if specified). - - - - Removes the given function from the event. - - Event to modify. - Index to remove (if specified). - Function to remove (if specified). - - - - Unregisters the given listener at the specified index. - - Event to modify. - Index to unregister. - - - - Defines the import context for scripted importers during an import event. - - - - - The path of the source asset file to be imported. - - - - - The main object set on the AssetImportContext. - - - - - This indicates what platform the import event is targeting. - - - - - Adds an object to the result of the import operation. - - A unique identifier associated to this object. - The Unity Object to add to the asset. - An optional 2D texture to use as the thumbnail for this object. - - - - Adds an object to the result of the import operation. - - A unique identifier associated to this object. - The Unity Object to add to the asset. - An optional 2D texture to use as the thumbnail for this object. - - - - Creates dependency between the asset and a source asset. - - The path of the source dependency. - - - - Gets the list of objects set on the AssetImportContext. - - The list of objects to be filled by the context. - - - - Logs an error message encountered during import. - - The error message. - Optional Object that is targeted by the error. - - - - Logs a warning message encountered during import. - - The warning message. - Optional Object that is targeted by the warning. - - - - Sets the main object for import. - - The object to be set as the main object. This object must already be added with the AddObjectToAsset method. - - - - Default editor for all asset importer settings. - - - - - Should imported object be shown as a separate editor? - - - - - Determines if the asset preview is handled by the AssetEditor or the Importer DrawPreview - - - - - Saves any changes from the Editor's control into the asset's import settings object. - - - - - Implements the 'Apply' button of the inspector. - - Text to display on button. - - Returns true if the new settings were successfully applied - - - - - Implements the 'Apply' button of the inspector. - - Text to display on button. - - Returns true if the new settings were successfully applied - - - - - Add's the 'Apply' and 'Revert' buttons to the editor. - - - - - This function is called when the Editor script is started. - - - - - Determine if the import settings have been modified. - - - - - Process the 'Apply' and 'Revert' buttons. - - - Returns true if the new settings were successfully applied. - - - - - This function is called when the editor object goes out of scope. - - - - - This function is called when the object is loaded. - - - - - Reset the import settings to their last saved values. - - - - - Implements the 'Revert' button of the inspector. - - Text to display on button. - - - - Implements the 'Revert' button of the inspector. - - Text to display on button. - - - - Abstract base class for custom Asset importers. - - - - - This method must by overriden by the derived class and is called by the Asset pipeline to import files. - - This argument contains all the contextual information needed to process the import event and is also used by the custom importer to store the resulting Unity Asset. - - - - Override this method if your ScriptedImporter supports remapping specific asset types. - - The type of asset to check. - - Returns true if the importer supports remapping the given type. Otherwise, returns false. - - - - - Class attribute used to register a custom asset importer derived from ScriptedImporter with Unity's Asset import pipeline. - - - - - List of file extensions, without leading period character, that the scripted importer handles. - - - - - Gives control over ordering of asset import based on types. Positive values delay the processing of source asset files while Negative values place them earlier in the import process. - - - - - Importer version number that is used by the import layer to detect new version of the importer and trigger re-imports when such events occur, to apply latest changes made to the scripted imrpoter. - - - - - Use the ScriptedImporter attribute to register a custom importer derived from ScriptedImporter with Unity's Asset import pipeline. - -It is best practice to always increment a scripted importer's version number whenever the script is changed. This forces assets imported with lower version numbers to be re-imported. - -If the Unity Editor setting "Auto-Update" is set to enabled, editing a script outside of the editor and saving it will trigger both a re-import of the script and all assets of the corresponding type. - - A number that is used by the import pipeline to detect new versions of the importer script. Changing this number will trigger a re-import of all assets matching the listed extensions. - List of file extensions (without leading period character) that the scripted importer handles. - Single file extension (without leading period character) that the scripted importer handles. - Gives control over ordering of asset import based on types. Positive values delay the processing of source asset files while negative values place them earlier in the import process. - - - - Use the ScriptedImporter attribute to register a custom importer derived from ScriptedImporter with Unity's Asset import pipeline. - -It is best practice to always increment a scripted importer's version number whenever the script is changed. This forces assets imported with lower version numbers to be re-imported. - -If the Unity Editor setting "Auto-Update" is set to enabled, editing a script outside of the editor and saving it will trigger both a re-import of the script and all assets of the corresponding type. - - A number that is used by the import pipeline to detect new versions of the importer script. Changing this number will trigger a re-import of all assets matching the listed extensions. - List of file extensions (without leading period character) that the scripted importer handles. - Single file extension (without leading period character) that the scripted importer handles. - Gives control over ordering of asset import based on types. Positive values delay the processing of source asset files while negative values place them earlier in the import process. - - - - Use the ScriptedImporter attribute to register a custom importer derived from ScriptedImporter with Unity's Asset import pipeline. - -It is best practice to always increment a scripted importer's version number whenever the script is changed. This forces assets imported with lower version numbers to be re-imported. - -If the Unity Editor setting "Auto-Update" is set to enabled, editing a script outside of the editor and saving it will trigger both a re-import of the script and all assets of the corresponding type. - - A number that is used by the import pipeline to detect new versions of the importer script. Changing this number will trigger a re-import of all assets matching the listed extensions. - List of file extensions (without leading period character) that the scripted importer handles. - Single file extension (without leading period character) that the scripted importer handles. - Gives control over ordering of asset import based on types. Positive values delay the processing of source asset files while negative values place them earlier in the import process. - - - - Use the ScriptedImporter attribute to register a custom importer derived from ScriptedImporter with Unity's Asset import pipeline. - -It is best practice to always increment a scripted importer's version number whenever the script is changed. This forces assets imported with lower version numbers to be re-imported. - -If the Unity Editor setting "Auto-Update" is set to enabled, editing a script outside of the editor and saving it will trigger both a re-import of the script and all assets of the corresponding type. - - A number that is used by the import pipeline to detect new versions of the importer script. Changing this number will trigger a re-import of all assets matching the listed extensions. - List of file extensions (without leading period character) that the scripted importer handles. - Single file extension (without leading period character) that the scripted importer handles. - Gives control over ordering of asset import based on types. Positive values delay the processing of source asset files while negative values place them earlier in the import process. - - - - Default editor for source assets handled by Scripted Importers. - - - - - Implement this method to customize how Unity's Asset inspector is drawn for an Asset managed by a ScriptedImporter. - - - - - Original texture data information. - - - - - Determines if alpha channel is present in image data. - - - - - Determines if image has HDR data. - - - - - Height of the image data. - - - - - Width of the image data. - - - - - Struct that represents how Sprite asset should be generated when calling TextureGenerator.GenerateTexture. - - - - - Pivot value represented by SpriteAlignment. - - - - - Border value for the generated Sprite. - - - - - Name for the generated Sprite. - - - - - Sprite Asset creation uses this outline when it generates the Mesh for the Sprite. If this is not given, SpriteImportData.tesselationDetail will be used to determine the mesh detail. - - - - - Pivot value represented in Vector2. - - - - - Position and size of the Sprite in a given texture. - - - - - An identifier given to a Sprite. Use this to identify which data was used to generate that Sprite. - - - - - Controls mesh generation detail. This value will be ignored if SpriteImportData.ouline is provided. - - - - - Structure that represents the result from calling TextureGenerator.GenerateTexture. - - - - - Warnings that should be shown in Inspector after generating a Texture. - - - - - TextureGenerator.GenerateTexture reports warnings when you generate a Texture. - - - - - Sprites that are generated by TextureGenerator.GenerateTexture from TextureGenerationSettings.spriteSheetData. - - - - - This is a Texture2D generated by TextureGenerator.GenerateTexture from TextureGenerationSettings.imageData. - - - - - Thumbnail version of the generated texture. - - - - - Represents how a texture should be generated from calling TextureGenerator.GenerateTexture. - - - - - Path where the Asset will be placed. - - - - - When set to true, AssetPostprocessor hooks will be called during texture generation. - - - - - Platform settings for generating the texture. - - - - - Indicates if the Sprite generated can be used for atlas packing. - - - - - Texture format for the image data. - - - - - Sprite Asset generation data. - - - - - Tag used for Sprite packing. - - - - - Settings for generating texture. - - - - - The Constructor initializes to most common value based on the TetureImporterType you pass in. - - Texture type. - - - - Experimental utilities for generating Texture2D. - - - - - Generates Texture2D and Sprite Assets based on the settings provided. - - Settings use for generating Texture2D and Sprite. - Color buffer for generating Texture2D and Sprite. - - Result of the generation. - - - - - Experimental lightmapping features. - - - - - If enabled ignores the direct contribution from the environment lighting in baked probes. - - - - - Retrieve the custom bake results. - - The unnormalized amount of sky visibility for the input points (in xyz). The w component is the fraction of rays that strike backfaces. - - True if the results were retrieved. False if there is no data available or the results array does not match the number of points in the bake. - - - - - Set the custom bake inputs. - - The positions (xyz) of the points for which the amount of sky visibility is calculated. The w component is an offset that will be applied to the ray originating at the position. - The number of samples on the upper hemisphere used to calculate the sky visibility. - - - - This class contains methods to draw IMGUI Editor UI that relates to the Player Connection. - - - - - Display a drop-down button and menu for the user to choose and establish a connection to a Player. - - Where to draw the drop-down button. - The state for the connection that is used in the EditorWindow displaying this drop-down. Use Experimental.Networking.PlayerConnection.EditorGUIUtility.GetAttachToPlayerState to get a state in OnEnable and remeber to dispose of that state in OnDisable. - Define the GUIStyle the drop-down button should be drawn in. A default drop-down button will be drawn if no style is specified. - - - - This class contains methods to draw and automatically layout IMGUI Editor UI that relates to the Player Connection. - - - - - Display a drop-down button and menu for the user to choose and establish a connection to a Player. - - The state for the connection that is used in the EditorWindow displaying this drop-down. Use Experimental.Networking.PlayerConnection.EditorGUIUtility.GetAttachToPlayerState to get a state in OnEnable and remembe to dispose of that state in OnDisable. - Define the GUIStyle the drop-down button should be drawn in. A default drop-down button will be drawn if non is specified. - - - - Miscellaneous helper methods for Experimental.Networking.PlayerConnection.EditorGUI. - - - - - This method generates a state tracking object for establishing and displaying an Editor to Player Connection. - - The EditorWindow that will use the connection. - A callback that is fired whenever a user-initiated connection-attempt succeeds. - - The not serialized state of the connection to a Player, to be used in Experimental.Networking.PlayerConnection.EditorGUI.AttachToPlayerDropdown or Experimental.Networking.PlayerConnection.EditorGUILayout.AttachToPlayerDropdown. It knows what target is currently connected and what targets are available. - - - - - Defines the required members for a ScriptableBakedReflectionSystem implementation. - - - - - Number of stages of the baking process. - - - - - The hash of the current baked state of the ScriptableBakedReflectionSystem. - - - - - Implement this method to bake all of the loaded reflection probes. - - - True when the probe where baked, false when baking was not completed. - - - - - Cancel the running bake jobs. - - - - - Clear the state of the ScriptableBakedReflectionSystem. - - - - - Synchronize the baked data with the actual components and rendering settings. - - - - - This method is called every Editor update until the ScriptableBakedReflectionSystem indicates that the baking is complete, with handle.SetIsDone(true). (See IScriptableBakedReflectionSystemStageNotifier.SetIsDone). - - Current Scene state hash. - A handle to receive notifications about the status of the stages of the baking process. - - - - An implementation of this interface is provided while ticking an ScriptableBakedReflectionSystem. (See IScriptableBakedReflectionSystem.Tick). - - - - - Update the baking stage progress information. - - The current stage in progress. - The progress message to display. - The progress to report (between 0 and 1). - - - - Indicates that a stage is complete. - - The completed stage. - - - - Indicates whether the baking is complete. - - Whether the baking is complete. - - - - This class contains hashes that represents the Scene state. - - - - - A hash representing the state of the ambient probe. - - - - - A hash representing the state of Scene objects. - - - - - A hash representing the settings of the sky. - - - - - Empty implementation of IScriptableBakedReflectionSystem. - - - - - Number of stages of the baking process. - - - - - The hash of the current baked state of the ScriptableBakedReflectionSystem. - - - - - Implement this method to bake all of the loaded reflection probes. - - - True when the probe where baked, false when baking was not completed. - - - - - Cancel the running bake jobs. - - - - - Clear the state of ScriptableBakedReflectionSystem. - - - - - Synchronize the baked data with the actual components and rendering settings. - - - - - This method is called during the Editor update until the ScriptableBakedReflectionSystem indicates that the baking is complete, with handle.SetIsDone(true). (See IScriptableBakedReflectionSystemStageNotifier.SetIsDone). - - Current Scene state hash. - A handle to receive notifications about the status of the stages of the baking process. - - - - Global settings for the scriptable baked reflection system. - - - - - The currently active ScriptableBakedReflectionSystem, see IScriptableBakedReflectionSystem. - - - - - Experimental class that represents a Prefab stage. - - - - - The path of the Prefab Asset that is open in this Prefab stage. - - - - - The root GameObject of the loaded Prefab Asset contents. - - - - - Callback that is invoked whenever the contents of a Prefab stage has been saved. - - - - - - Callback that's invoked whenever the contents of a Prefab stage is about to be saved. - - - - - - Callback that's invoked whenever a Prefab stage is about to be opened. - - - - - - Callback that's invoked whenever a Prefab stage has been opened. - - - - - - The preview Scene used for the Prefab stage. - - - - - The Stage handle for the Prefab stage. - - - - - Clear the dirtyness flag for the Prefab stage. - - - - - Is this GameObject part of the loaded Prefab Asset contents in the Prefab stage? - - The GameObject to check. - - True if the GameObject is part of the Prefab contents. - - - - - Utility methods related to Prefab stages. - - - - - Get the current Prefab stage, or null if there is none. - - - The current Prefab stage or null. - - - - - Get the Prefab stage which contains the given GameObject. - - The GameObject to check. - - The containing Prefab stage. - - - - - Flags that toggle which brush controls are displayed when calling [IOnInspectorGUI.ShowBrushesGUI]. - - - - - Display all brush controls. - - - - - Display the brush inspector for the currently selected brush. - - - - - Display the brush opacity control. - - - - - Display the brush selection control. - - - - - Display the brush selection control, and the brush inspector for the currently selected brush. - - - - - Interface that provides parameters and utility functions for the OnInspectorGUI event in the terrain paint tools. - - - - - Instructs the Editor to repaint the tool UI and/or the scene view. - - What to repaint. - - - - Displays the default controls for the brush in the tool inspector. - - Pixel spacing for the brush GUI controls. - - - - Interface that provides parameters and utility functions for the OnPaint event of the terrain paint tools. - - - - - Read Only. Current brush size in terrain units (equivalent size to world units). - - - - - Read Only. Current brush strength. - - - - - Read Only. Current selected brush texture. - - - - - Read Only. The normalized position (between 0 and 1) on the active terrain. - - - - - Instructs the Editor to repaint the tool UI and/or the scene view. - - What to repaint. - - - - Instructs the Editor to repaint the inspector UI. - - - - - Interface that provides parameters and utility functions for the OnSceneGUI event of the terrain paint tools. - - - - - Read only. Current brush size in terrain units (equivalent size to world units). - - - - - Read only. Current brush strength. - - - - - Read only. Current selected brush texture. - - - - - Read only. True if the mouse is over a valid Terrain object; otherwise false. - - - - - Read only. The raycast result for the current mouse position. This is valid when hitValidTerrain is true. - - - - - Read only. SceneView object. - - - - - Instructs the Editor to repaint the tool UI and/or the scene view. - - What to repaint. - - - - Flags that indicate what to repaint on the Terrain tools. - - - - - Indicates to Unity to repaint the scene view. - - - - - Indicates to Unity to repaint the tool UI. - - - - - Base class for terrain painting tools. - - - - - Retrieves the description of the custom terrain tool. - - - Tool description. - - - - - Retrieves the name of the custom terrain tool. - - - Tool name. - - - - - Called when the tool is destroyed. - - - - - Called when the tool is created. - - - - - Called when the tool is activated. - - - - - Called when the tool becomes inactive. - - - - - Custom terrain tool OnInspectorGUI callback. - - Active Terrain object. - Interface used to communicate between Editor and Paint tools. - - - - Custom terrain tool paint callback. - - Active Terrain object. - Interface used to communicate between Editor and Paint tools. - - Return true to temporarily hide tree, grass, and detail layers on the terrain. - - - - - Custom terrain tool OnSceneGUI callback. - - Active Terrain object. - Interface used to communicate between Editor and Paint tools. - - - - Terrain paint utility editor helper functions. - - - - - Enum to specify whether DrawBrushPreview previews the source render texture or the destination render texture of a PaintContext. - - - - - Specifies that Experimental.TerrainAPI.TerrainPaintUtilityEditor.DrawBrushPreview uses the destination render texture of the PaintContext. - - - - - Specifies that Experimental.TerrainAPI.TerrainPaintUtilityEditor.DrawBrushPreview uses the source render texture of the PaintContext. - - - - - Draws a Terrain brush preview mesh from a heightmap PaintContext using the provided procedural material. - - PaintContext describing the heightmap from which to build the preview mesh. - Specifies Whether to build the mesh using the source or destination render texture in heightmapPC. - The brush texture to preview. - Describes the position and orientation of the brush. - Material used to render the preview. - Material pass to render. - - - - Returns the default brush preview material. This material supports procedural mesh generation for use with DrawBrushPreview. - - - Default brush preview material. - - - - - Helper function to display a default preview brush with no rotation or custom materials. - - Terrain object. - Brush texture. - Brush size. - - - - Data Provider interface that deals with Sprite Bone data. - - - - - Returns the list of SpriteBone for the corresponding Sprite ID. - - Sprite ID. - - - - Sets a new set of SpriteBone for the corresponding Sprite ID. - - Sprite ID. - - - - - Interface that defines the functionality available for classes that inherits SpriteEditorModuleBase. - - - - - Indicates that if Sprite data editing should be disabled; for example when the Editor is in Play Mode. - - - - - Indicates if ISpriteEditor should be interested in mouse move events. - - - - - The current selected Sprite rect data. - - - - - Sets current available Sprite rects. - - - - - Property that defines the window's current screen position and size. - - - - - The method will inform current active SpriteEditorModuleBase to apply or revert any data changes. - - - - - - Gets data provider that is supported by the current selected Assets's importer. - - - - - Returns a VisualElement for attaching child VisualElement onto the main view of a ISpriteEditor. - - - Root VisualElement for the main view. - - - - - The method updates ISpriteEditor.selectedSpriteRect based on current mouse down event and ISpriteEditor.spriteRects available. - - - Returns true when ISpriteEditor.selectedSpriteRect is changed. - - - - - Request to repaint the current view. - - - - - Indicates that there has been a change of data. In Sprite Editor Window, this enables the 'Apply' and 'Revert' button. - - - - - Sets a custom texture to be used by the ISpriteEditor during setup of the editing space. - - The custom preview texture. - The width dimension to render the preview texture. - The height dimension to render the preview texture. - - - - An interface that allows Sprite Editor Window to edit Sprite data for user custom importer. - - - - - The number of pixels in the sprite that correspond to one unit in world space. - - - - - SpriteImportMode to indicate how Sprite data will be imported. - - - - - The object that this data provider is acquiring its data from. - - - - - Applying any changed data. - - - - - Gets other data providers that might be supported by ISpriteEditorDataProvider.targetObject. - - - Data provider type. - - - - - Returns an array of SpriteRect representing Sprite data the provider has. - - - Array of SpriteRect. - - - - - Queries if ISpriteEditorDataProvider.targetObject supports the data provider type. - - Data provider type. - - True if supports, false otherwise. - - - - - Allows the data provider to initialize any data if needed. - - - - - Sets the data provider's current SpriteRect. - - Updated array of SpriteRect. - - - - Data Provider interface that deals with Sprite mesh data. - - - - - Returns the list of mesh edges for the corresponding Sprite ID. - - Sprite ID. - - - - Returns the list of mesh index for the corresponding Sprite ID. - - Sprite ID. - - - - Returns the list of vertex datas for the corresponding Sprite ID. - - Sprite ID. - - - - Sets a new list of edges for the corresponding Sprite ID. - - Sprite ID. - - - - - Sets a new list of indices for the corresponding Sprite ID. - - Sprite ID. - - - - - Sets a new list of vertices for the corresponding Sprite ID. - - Sprite ID. - - - - - Data provider that provides the outline data for SpriteRect. - - - - - Given a GUID, returns the outline data used for tessellating the SpriteRect. - - GUID of the SpriteRect. - - Outline data for the SpriteRect. - - - - - Given a GUID, returns the tessellation detail. Tessellation value should be between 0 to 1. - - GUID of the SpriteRect. - - The tessellation value. - - - - - Given a GUID, sets the outline data used for tessellating the SpriteRect. - - GUID of the SpriteRect. - Outline data for the SpriteRect. - - - - Given a GUID, sets the tessellation detail. Tessellation value should be between 0 to 1. - - GUID of the SpriteRect. - The tessellation value. - - - - Data provider that provides the Physics outline data for SpriteRect. - - - - - Given a GUID, returns the Physics outline data used for the SpriteRect. - - GUID of the SpriteRect. - - Physics outline data for the SpriteRect. - - - - - Given a GUID, returns the tessellation detail. Tessellation value should be between 0 to 1. - - GUID of the SpriteRect. - - The tessellation value. - - - - - Given a GUID, sets the Physics outline data used for the SpriteRect. - - GUID of the SpriteRect. - Physics outline data for the SpriteRect. - - - - Given a GUID, sets the tessellation detail. Tessellation value should be between 0 to 1. - - GUID of the SpriteRect. - The tessellation value. - - - - Data provider that provides texture data needed for Sprite Editor Window. - - - - - Texture2D that represents the preview for ITextureDataProvider.texture. - - - - - Texture2D representation of the data provider. - - - - - Readable version of ITextureProvider.texture. - - - Texture2D that is readable. - - - - - The actual width and height of the texture data. - - Out value for width. - Out value for height. - - - - Use this attribute on a class that inherits from SpriteEditorModuleBase to indicate what data provider it needs. - - - - - Use the attribute to indicate the custom data provider that SpriteEditorBaseModule needs. - - Data provider type. - - - - Sprite extension methods that are accessible in Editor only. - - - - - Gets the Sprite's GUID. - - The Sprite to query. - - GUID stored in the Sprite. - - - - - Sets a Sprite's Global Unique Identifier (GUID) for easy identification later. - - The Sprite to set. - The GUID to set for the Sprite. - - - - Base class the Sprite Editor Window custom module inherits from. - - - - - The module name to display in Sprite Editor Window. - - - - - The ISpriteEditor instance that instantiated the module. - - - - - This is called when user clicks on the Apply or Revert button in Sprite Editor Window. - - True when user wants to apply the data, false when user wants to revert. - - Return true to trigger a reimport. - - - - - Indicates if the module can be activated with the current ISpriteEditor state. - - - Return true if the module can be activated. - - - - - Implement this to draw on the Sprite Editor Window. - - - - - Implement this to draw widgets in Sprite Editor Window. - - - - - Implement this to create a custom toolbar. - - Area for drawing tool bar. - - - - This is called when the user activates the module. - - - - - This is called when user switches to another module. - - - - - A structure that contains meta data about vertices in a Sprite. - - - - - The BoneWeight of the vertex. - - - - - The position of the vertex. - - - - - This is the base class for the composite fields. - - - - - The container VisualElement for the field, this is null for the composite field. - - - - - Gives a way to update the focus index of the child elements of the composite field. - - - - - Method to change the value of the underlying data of the composite field. - - New value to assign to the composite field. - - - - UxmlTraits for the BaseCompositeField. - - - - - Constructor. - - - - - This is the base class for the popup fields. - - - - - This is the text displayed to the user for the current selection of the popup. - - - - - Provides VisualElement extension methods that implement data binding between INotivyValueChanged fields and SerializedObjects. - - - - - Binds a SerializedObject to fields in the element hierarchy. - - Root VisualElement containing IBindable fields. - Data object. - - - - Binds a property to a field and synchronizes their values. This method finds the property using the field's binding path. - - VisualElement field editing a property. - Root SerializedObject containing the bindable property. - - Returns the serialized object that owns the bound property. - - - - - Binds a property to a field and synchronizes their values. - - VisualElement field editing a property. - The SerializedProperty to bind. - - - - Disconnects all properties bound to fields in the element's hierarchy. - - Root VisualElement contaning IBindable fields. - - - - A Bounds editor field. - - - - - Instantiates a BoundsField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the BoundsField. - - - - - Constructor. - - - - - Initialize BoundsField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - A BoundsInt editor field. - - - - - Instantiates a BoundsIntField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the BoundsIntField. - - - - - Constructor. - - - - - Initializes the UxmlTraits for the BoundsIntField. - - The VisualElement to be initialized. - Bag of attributes. - CreationContext, unused. - - - - Makes a field for selecting a color. - - - - - If true, treats the color as an HDR value. If false, treats the color as a standard LDR value. - - - - - If true, allows the user to set an alpha value for the color. If false, hides the alpha component. - - - - - If true, the color picker will show the eyedropper control. If false, the color picker won't show the eyedropper control. - - - - - Constructor. - - - - - Set the value and, if different, notifies registers callbacks with a ChangeEvent<Color> - - The new value to be set. - - - - Instantiates a ColorField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ColorField. - - - - - Constructor. - - - - - Initialize ColorField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Makes a field for editing an AnimationCurve. - - - - - Optional rectangle that the curve is restrained within. If the range width or height is < 0 then CurveField computes an automatic range, which encompasses the whole curve. - - - - - The RenderMode of CurveField. The default is RenderMode.Default. - - - - - The AnimationCurve currently being exposed by the field. - - - - - Constructor. - - - - - Render mode of CurveFields - - - - - Renders the curve with the default mode. Currently Texture. - - - - - Renders the curve with an anti-aliased mesh. - - - - - Renders the curve with a generated texture, like with Unity’s Immediate Mode GUI system (IMGUI). - - - - - Sets the value of the curve and, if different from the previous value, notifies the OnValueChanged event callback with a ChangeEvent<AnimationCurve> - - The new value to be set. - - - - Instantiates a CurveField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the CurveField. - - - - - Constructor. - - - - - Speed at which the value changes for a given input device delta. - - - - - The value changes at four times the normal rate. - - - - - The value changes at the normal rate. - - - - - The value changes at one quarter of its normal rate. - - - - - Makes a text field for entering doubles. - - - - - Modify the value using a 3D delta and a speed, typically coming from an input device. - - A vector used to compute the value change. - A multiplier for the value change. - The start value. - - - - Constructor. - - Maximum number of characters the field can take. - - - - Constructor. - - Maximum number of characters the field can take. - - - - Converts the given string to a double. - - The string to convert. - - The double parsed from the string. - - - - - Instantiates a DoubleField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the DoubleField. - - - - - Constructor. - - - - - Initialize DoubleField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Converts the given double to a string. - - The double to be converted to string. - - The double as string. - - - - - Makes a dropdown for switching between enum values. - - - - - Return the text value of the currently selected enum. - - - - - Construct an EnumField. - - Initial value. Also used to detect Enum type. - - - - Initialize the EnumField with a default value. This also initializes its underlying type. - - Your typed enum value. - - - - Set the value and, if different, notifies registers callbacks with a ChangeEvent<Enum> - - The new value to be set. - - - - Instantiates an EnumField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the EnumField. - - - - - Constructor. - - - - - Initialize EnumField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Allows dragging on a numeric field's label to change the value. - - - - - Is dragging. - - - - - Start value before drag. - - - - - FieldMouseDragger's constructor. - - The field. - - - - Set drag zone. - - The drag element (like the label). - The rectangle that contains the drag zone. - - - - Set drag zone. - - The drag element (like the label). - The rectangle that contains the drag zone. - - - - Makes a text field for entering a float. - - - - - Modify the value using a 3D delta and a speed, typically coming from an input device. - - A vector used to compute the value change. - A multiplier for the value change. - The start value. - - - - Constructor. - - Maximum number of characters the field can take. - - - - Constructor. - - Maximum number of characters the field can take. - - - - Converts the given string to a float. - - The string to convert. - - The float parsed from the string. - - - - - Instantiates a FloatField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the FloatField. - - - - - Constructor. - - - - - Initialize FloatField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Converts the given float to a string. - - The float to be converted to string. - - The float as string. - - - - - Makes a field for editing an Gradient. - - - - - The Gradient currently being exposed by the field. - - - - - Constructor. - - - - - Sets the value of the gradient and, if different from the previous value, notifies the OnValueChanged event callback with a ChangeEvent<Gradient> - - The new value to be set. - - - - Instantiates a GradientField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the GradientField. - - - - - Constructor. - - - - - Helper object that attaches a visual element next to its target, regarless of their respective location in the visual tree hierarchy. - - - - - Relative alignment between the attached element and the target. - - - - - The distance between the attached element and the target. - - - - - The element that is attached to the target element. - - - - - An absolute offset added to the element position after placement. - - - - - The target element. - - - - - Attaches a visual element next to its target, regarless of their respective locations in the visual tree hierarchy. - - The element that will be positioned alongside the target. - The target element. - Relative alignment between the attached element and the target. - - - - Stop monitoring the target element and postioning the attached element. - - - - - Starts monitoring target element position changes and places the attached element accordingly. - - - - - GraphElement that enables user to dynamically define members of a Graph (such as fields/properties) grouped by sections (BlackboardSection). - - - - - Called when user clicks on the Add button of this Blackboard. - - - - - The content container of this Blackboard. - - - - - Called when user has edited the text of this BlackboardField. - - - - - Called when user has dragged and dropped a BlackboardField to a new location inside its BlackboardSection. - - - - - Indicates whether the content of this Blackboard can be vertically scrolled by user. It is false by default. - - - - - The subtitle of this Blackboard. - - - - - The title of this Blackboard. - - - - - Constructs a Blackboard. - - - - - GraphElement that represents a field of a Graph. - - - - - The highlighted state of this BlackboardField. - - - - - The icon of this BlackboardField. - - - - - The text of this BlackboardField. - - - - - The text that displays the data type of this BlackboardField. - - - - - Constructs a BlackboardField. - - The icon of this BlackboardField. - The text of this BlackboardField. - The text that displays the data type of this BlackboardField. - - - - Constructs a BlackboardField. - - The icon of this BlackboardField. - The text of this BlackboardField. - The text that displays the data type of this BlackboardField. - - - - Opens a TextField to edit the text in a BlackboardField. - - - - - Collapsible GraphElement that represents a row in a BlackboardSection. - - - - - Indicates whether the BlackboardRow is expanded. - - - - - Constructs a BlackboardRow from a VisualElement and its associated property view. The VisualElement is usually a BlackboardField. - - The item that fills the content of this BlackboardRow. - The property view related to the content of this BlackboardRow. - - - - GraphElement that represents a section of members in a Blackboard. - - - - - The content container of this BlackboardSection. - - - - - Indicates whether the header of the BlackboardSection is visible. - - - - - The title of this BlackboardSection. - - - - - Indicates whether this BlackboardSection accepts the current drop event. - - The list of selected objects. - - Returns true when rows are reordered by the user. - - - - - Constructs a BlackboardSection. - - - - - Capabilities used by Manipulators to easily determine valid actions on a GraphElement. - - - - - GraphElement will be brought to the front of its layer when it is selected. - - - - - GraphElement can be collapsed. - - - - - GraphElement can be deleted. - - - - - GraphElement can be dragged and dropped (using the Drag&Drop events). - - - - - GraphElement is movable. - - - - - GraphElement is resizable. - - - - - GraphElement is selectable. - - - - - Selects element on single click. - - - - - Constructor for ClickSelector. - - - - - Called on mouse down event. - - - - - - Called to register click event callbacks on the target element. - - - - - Called to unregister event callbacks from the target element. - - - - - Manipulator that allows mouse-dragging of one or more elements. - - - - - If true, it does not allow the dragged element to exit the parent's edges. - - - - - When elements are dragged near the edges of the Graph, panning occurs. This controls the speed for said panning. - - - - - Calculate new position of the dragged element. - - New x position. - New y position. - Element width. - Element height. - - Calculated and validated position. - - - - - ContentDragger constructor. - - - - - Called on mouse down event. - - The event. - - - - Called on mouse move event. - - The event. - - - - Called on mouse up event. - - The event. - - - - Called to register click event callbacks on the target element. - - - - - Called to unregister event callbacks from the target element. - - - - - Manipulator that allows zooming in GraphView. - - - - - Optimization option to keep the old pixel cache while zooming and only updating it when zooming is finished (based on a timer). - - - - - Max zoom level. - - - - - Min zoom level. - - - - - Reference zoom level. - - - - - Zoom step: percentage of variation between a zoom level and the next. For example, with a value of 0.15, which represents 15%, a zoom level of 200% will become 230% when zooming in. - - - - - ContentZoomer constructor. - - - - - Default max zoom level. - - - - - Default min zoom level. - - - - - Default reference zoom level. - - - - - Default zoom step. - - - - - Called to register click event callbacks on the target element. - - - - - Called to unregister event callbacks from the target element. - - - - - Port direction (in or out). - - - - - Port is an input port. - - - - - Port is an output port. - - - - - Base manipulator for mouse-dragging elements. - - - - - If true, it does not allow the dragged element to exit the parent's edges. - - - - - When elements are dragged near the edges of the Graph, panning occurs. This controls the speed for said panning. - - - - - Calculate new position of the dragged element. - - New x position. - New y position. - Element width. - Element height. - - Calculated and validated position. - - - - - Dragger constructor. - - - - - Called on mouse down event. - - The event. - - - - Called on mouse move event. - - The event. - - - - Called on mouse up event. - - The event. - - - - Called to register click event callbacks on the target element. - - - - - Called to unregister event callbacks from the target element. - - - - - The GraphView edge element. - - - - - The edge's end position while it's being created. - - - - - Default edge color. - - - - - The VisualElement child of Edge that draws the lines and does the hit detection. - - - - - Edge width. - - - - - The color of the ghost edge, which is the edge that appears snapped to a nearby port while an edge is being created. - - - - - Connected input port. - - - - - Is this edge a ghost edge, which is the edge that appears snapped to a nearby port while an edge is being created. - - - - - Connected output port. - - - - - Color of edge while selected. - - - - - Checks if point is on top of edge. - - Point position. - - True if point is on top of edge. False otherwise. - - - - - Create the EdgeControl. - - - The created EdgeControl. - - - - - Edge's constructor. - - - - - Repaint the edge element. - - - - - Draw the edge's lines. - - - - - Called when a port on the edge is changed. - - True if the input port was changed. False if the output port was changed. - - - - Called when the style was updated. - - The new style. - - - - Check if edge overlaps rectangle. - - The rectangle. - - True if edge overlaps the rectangle. - - - - - The edge's points and tangents. - - - - - Update the edge's EdgeControl. - - - False if it failed to update the control. True if it succeeded. - - - - - Manipulator for creating new edges. - - - - - Reference to the edge drag helper. - - - - - Manipulator for creating new edges. - - - - - Reference to the edge drag helper. - - - - - EdgeConnector's constructor. - - The IEdgeConnectorListener that will finalize the edges. - - - - Called on mouse down event. - - The event. - - - - Called on mouse move event. - - The event. - - - - Called on mouse up event. - - The event. - - - - Called to register click event callbacks on the target element. - - - - - Called to unregister event callbacks from the target element. - - - - - VisualElement that draws the edge lines and detects if mouse is on top of edge. - - - - - Radius of the edge's end caps. - - - - - Edge's control points. - - - - - Whether or not to draw the From Cap. - - - - - Whether or not to draw the To Cap. - - - - - Edge's color. - - - - - Edge's visible width. - - - - - Edge's From postion. - - - - - The color of the cap color at the "from" end of the edge. - - - - - Color on the edge's input. - - - - - Edge input port orientation (vertical/horizontal). - - - - - Width that will be used for mouse hit detection. - - - - - Min edge width. - - - - - Color on the edge's output. - - - - - Edge output port orientation (vertical/horizontal). - - - - - Edge's To postion. - - - - - The color of the cap color at the "to" end of the edge. - - - - - Compute the edge's control points. - - - - - Check if point is on top of edge. - - The point's position. - - True if the point is on top of the edge. - - - - - EdgeControl's constructor. - - - - - Repaint the edge. - - - - - Draw the edge lines. - - - - - Check if edge overlaps rectangle. - - The rectangle. - - True if the edge overlaps the rectangle. - - - - - Check if the edge points have changed. - - - - - Update the edge layout. - - - - - Update the edge's render points. - - - - - EdgeDragHelper's constructor. - - - - - The port the edge is being dragged from. - - - - - The edge being dragged. - - - - - Handle mouse down event. - - The event. - - True if the drag has been started. False otherwise. - - - - - Handle mouse move event. - - The event. - - - - Handle mouse up event. - - The event. - - - - Reset the state of the drag helper. - - Whether the connection was successful or not. View will not reset in this case. - - - - Edge drag helper class. - - - - - The port the edge is being dragged from. - - - - - The edge being dragged. - - - - - True if it should reset position on pan if nothing is connected. - - - - - EdgeDragHelper's constructor. - - The edge connector listener. - - - - Handle mouse down event. - - The event. - - True if the drag has been started. False otherwise. - - - - - Handle mouse move event. - - The event. - - - - Handle mouse up event. - - The event. - - - - Reset the state of the drag helper. - - Whether the connection was successful or not. View will not reset in this case. - - - - Edge manipulator used to drag edges off ports and reconnect them elsewhere. - - - - - EdgeManipulator's constructor. - - - - - Handle key down event. - - The event. - - - - Handle mouse down event. - - The event. - - - - Handle mouse move event. - - The event. - - - - Handle mouse up event. - - The event. - - - - Called to register click event callbacks on the target element. - - - - - Called to unregister event callbacks from the target element. - - - - - Freehand selection tool. - - - - - FreehandSelector constructor. - - - - - Register callbacks on target VisualElement. - - - - - Unregister callbacks on target VisualElement. - - - - - Base class for main GraphView VisualElements. - - - - - Graph element's capabilities. - - - - - Color used for the MiniMap view. - - - - - Element's layer in the graph. - - - - - True if element is currently selected. - - - - - The element's title. - - - - - Get the element's center point. - - - The center point. - - - - - Get element position. - - - The position and size rect. - - - - - See if point is over element. - - The point. - - True if over element. - - - - - Checks if the Element is automatically brought to front when selected. - - - Returns true if the GraphElement is automatically brought to front when selected. Returns false otherwise - - - - - Element is drag&droppable. - - - True if droppable. - - - - - Element is movable. - - - True if movable. - - - - - Element is resizable. - - - True if resizable. - - - - - Element is selectable. - - - True if selectable. - - - - - Element is currently selected in specific container. - - The container. - - True if selected. - - - - - Called when element is selected. - - - - - Called when element is unselected. - - - - - Reset the element to its original layer. - - - - - Select element. - - Container in which element is being selected. - True if selection is additive, false otherwise. - - - - Set element position. - - New position. - - - - Deselect element. - - Container in which element was selected. - - - - Set of extension methods useful for Scope. - - - - - Returns the scope containing the specified GraphElement. - - - - - - Main GraphView class. - - - - - Ask whether or not the serialized data can be pasted. - - - - - Main content container. - - - - - Delete selection callback. - - - - - All edges in the graph. - - - - - Element resized callback. - - - - - Callback for when GraphElements are added to the group. - - - - - Callback for when GraphElements are inserted into a StackNode. - - - - - Callback for when GraphElements are removed from the group. - - - - - Callback for when GraphElements are removed from a StackNode. - - - - - All GraphElements in the graph. - - - - - Callback for when certain changes have occured in the graph. See GraphViewChange. - - - - - Callback for when a group title is changed. - - - - - Whether or not the selection is reframable. - - - - - Max zoom level. - - - - - Min zoom level. - - - - - Callback for when the user requests to display the node creation window. - - - - - All nodes currently in the graph. - - - - - All ports currently in the graph. - - - - - Reference zoom level. - - - - - Current graph zoom level. - - - - - Zoom step. See Experimental.UIElements.GraphView.ContentZoomer._scaleStep for details. - - - - - All currently selected elements in the graph. - - - - - Callback for serializing graph elements for copy/paste and other actions. - - - - - Callback for unserializing graph elements and adding them to the graph. - - - - - The graph's viewport. This is currently just itself. - - - - - Graph's view transform. - - - - - View transform changed callback. - - - - - Number of elements in the graph above which the zoom manipulator will turn off pixel cache regeneration on each tick to avoid performance drops. - - - - - Add new GraphElement. Should use this instead of Add() for adding GraphElements. - - The element to add. - - - - Adds a new layer to the GraphView. - - the index of the new layer. - - - - Add element to selection. - - Element to add to selection. - - - - Whether or not to ask the user for certain actions like deleting selection. - - - - - Ask the user before doing certain actions like deleting selection. - - - - - Don't ask the user before doing certain actions like deleting selection. - - - - - Add menu items to the contextual menu. - - The event holding the menu to populate. - - - - Calculate the view transform based on zoom level and the size of the window or parent. - - Rectangle to fit. - Parent rectangle. - Border size. - Calculated translation. - Calculated scaling. - - - - Calculate the rectangle size and position to fit all elements in graph. - - This should be the view container. - - The calculated rectangle. - - - - - Default method for checking if serialized data can be pasted. - - Serialized graph element. - - True if it can be pasted. - - - - - Delegate for checking if serialized data can be pasted. - - Serialized graph element. - - - - Clear selection. - - - - - Remove elements from the graph view. - - Elements to remove. - - - - Delete selected elements. - - - Stop if no elements were selected. Continue otherwise. - - - - - Delegate for deleting selection. - - Name of operation for undo/redo labels. - Whether or not to ask the user. - - - - Default method for deleting selection. - - Name of operation for undo/redo labels. - Whether or not to ask the user. - - - - Element resized delegate. - - Resized element. - - - - Focus view all elements in the graph. - - - Should always be Stop. - - - - - Focus view on the next element after the one currently selected. - - The predicate used to sort the list of all existing graph element. - - Continue if no elements in graph, Stop otherwise. - - - - - Focus view on the next element after the one currently selected. - - The predicate used to sort the list of all existing graph element. - - Continue if no elements in graph, Stop otherwise. - - - - - Focus view on the graph's origin. - - - Always returns Stop. - - - - - Focus view on the previous element before the one currently selected. - - The predicate used to sort the list of all existing graph element. - - Continue if no elements in graph, Stop otherwise. - - - - - Focus view on the previous element before the one currently selected. - - The predicate used to sort the list of all existing graph element. - - Continue if no elements in graph, Stop otherwise. - - - - - Focus view on currently selected elements. - - - Continue if no elements selected, Stop otherwise. - - - - - Type of framing. - - - - - Focus view on all elements. - - - - - Focus view on origin. - - - - - Focus view on selection. - - - - - Get all ports compatible with given port. - - Start port to validate against. - Node adapter. - - List of compatible ports. - - - - - Get edge by its GUID. - - The GUID. - - The first edge with given GUID. Null if none found. - - - - - Get any element with a given GUID. - - The GUID. - - The first element with the given GUID. Null if none found. - - - - - Get node with a given GUID. - - The GUID. - - The first node with the given GUID. Null if none found. - - - - - Get port by its GUID. - - The GUID. - - The first port found with given GUID. Null if none found. - - - - - Delegate used to indicate a change in GraphView usualy done by a Manipulator. - - The change struct. - - - - Called when persistent data, such as zoom level and selection, is ready to be retrieved and restored. - - - - - Remove element from the graph. - - Element to remove. - - - - Remove element from selection. - - Element to remove from selection. - - - - Default method for serializing graph elements. - - Elements to serialize. - - Serialized data. - - - - - Delegate for serializing graph elements. - - Elements to serialize. - - - - Setup zoom properties. - - Min zoom level. - Max zoom level. - Zoom step. - Reference zoom level. - - - - Setup zoom properties. - - Min zoom level. - Max zoom level. - Zoom step. - Reference zoom level. - - - - Delegate for unserializing and pasting elements. - - Name of operation for undo/redo labels. - Serialized data. - - - - Default method for unserializing elements and pasting. - - Name of operation for undo/redo labels. - Serialized data. - - - - Update the viewport transform. - - New position. - New scale. - - - - Validate the view transform. - - - - - View transform changed (zoom) delegate. - - GraphView reference. - - - - Set of changes in the graph that can be intercepted. - - - - - Edges about to be created. - - - - - Elements about to be removed. - - - - - Elements already moved. - - - - - The delta of the last move. - - - - - Default GraphView background. - - - - - GridBackground's constructor. - - - - - Repaint the background. - - - - - Recompute styles on the background. - - New style. - - - - Allows interactive insertion of elements in a named scope. - - - - - Title of the group. - - - - - Whether an element can be added to this group. - - The element to add. - The reason that indicates why the element is not accepted. - - Returns false if the specified element is a scope or group. Otherwise returns true. - - - - - Group constructor. - - - - - Called when elements are added to this group. - - The added elements. - - - - Called when elements are removed from this group. - - The removed elements. - - - - Called when this group is renamed. - - The old name of the group. - The new name of the group. - - - - A rectangular badge, usually attached to another visual element. - - - - - Relative alignment between the badge and its target. The alignment will influence icon and tip position. - - - - - Text displayed next to the badge on mouse hover. - - - - - Distance between the badge and its target element. - - - - - Target element to which this badge is attached. - - - - - Attaches this badge to another element. - - The target element to attach this badge to. - Relative alignement of the badge. - - - - Creates an IconBadge with the "comment" visual style. - - Displayed comment message. - - The created badge. - - - - - Creates an IconBadge with the "error" visual style. - - Displayed error message. - - The created badge. - - - - - Creates a basic comment badge. - - - - - - Creates a basic comment badge. - - - - - - Detaches this badge from its target. - - - - - Droppable interface. - - - - - Check if element is droppable. - - - True if droppable. False otherwise. - - - - - Drop target interface. - - - - - Indicates if the dragged source can be dropped on the target interface. - - Selected elements. - - Returns true if the dragged source can be dropped on the target interface. Returns false otherwise. - - - - - This method is automatically called when the dragged source intersects the drop target. - - The event. - The selected elements. - The drop target. - The drag source. - - Returns event propagation. - - - - - This method is automatically called when dragging ends and the drag source is not over a valid drop target. - - - Returns event propagation. - - - - - This method is automatically called when the dragged source no longer intersects the drop target. - - The event. - The selected elements. - The drop target. - The drag source. - - Returns event propagation. - - - - - "This method is automatically called when a drag is performed." - - The event. - The selected elements. - The drop target. - The drag source. - - Returns event propagation. - - - - - This method is automatically called when the drag source is updated. - - The event. - The selected elements. - The drop target. - The drag source. - - Returns event propagation. - - - - - Used by EdgeConnector manipulator to finish the actual edge creation. Its an interface the user can override and create edges in a different way. - - - - - Called when a new edge is dropped on a port. - - Reference to the GraphView. - The edge being created. - - - - Called when edge is dropped in empty space. - - The edge being dropped. - The position in empty space the edge is dropped on. - - - - This interface describes methods to manage a search session for graph nodes. - - - - - Generates data to populate the search window. - - Contextual data initially passed the window when first created. - - Returns the list of SearchTreeEntry objects displayed in the search window. - - - - - Selects an entry in the search tree list. - - The selected entry. - Contextual data to pass to the search window when it is first created. - - - - Selectable interface. - - - - - See if point is on target. - - The point. - - True if on target. - - - - - Check if element is selectable. - - - True if selectable. False otherwise. - - - - - Check if element is selected. - - Container in which the selection is tracked. - - True if selected. False otherwise. - - - - - Check if selection overlaps rectangle. - - Rectangle to check. - - True if it overlaps. False otherwise. - - - - - Select element. - - Container in which selection is tracked. - True if selection is additive. False otherwise. - - - - Deselect element. - - Container in which selection is tracked. - - - - Selection interface. - - - - - Get the selection. - - - - - Add element to selection. - - Selectable element to add. - - - - Clear selection. - - - - - Remove element from selection. - - Selectable element to remove. - - - - MiniMap. - - - - - True if the map is pinned or achored (non-movable). False if you can drag and move it around. - - - - - Max height. - - - - - Max width. - - - - - Add menu items to the mini map contextual menu. - - The event holding the menu to populate. - - - - MiniMap's constructor. - - - - - Repaint the MiniMap. - - - - - Main GraphView node class. - - - - - Is node expanded. - - - - - Empty container used to display custom elements. After adding elements, call RefreshExpandedState in order to toggle this container visibility. - - - - - Input container used for input ports. - - - - - Main container that includes all other containers. - - - - - Outputs container, used for output ports. - - - - - Node's title element. - - - - - Title bar button container. Contains the top right buttons. - - - - - Title bar container. - - - - - Entire top area containing input and output containers. - - - - - Add menu items to the node contextual menu. - - The event holding the menu to populate. - - - - Node's constructor. - - The orientation. - - - - Node's constructor. - - The orientation. - - - - Create a new port specific to this node. - - Port's orientation. - Port's direction. - Port's type. - (obsolete). - - The new port. - - - - - Create a new port specific to this node. - - Port's orientation. - Port's direction. - Port's type. - (obsolete). - - The new port. - - - - - Called when port is remove. - - The removed port. - - - - After adding custom elements to the extensionContainer, call this method in order for them to become visible. - - - - - Refresh the layout of the ports. - - - - - Set node position. - - New position. - - - - Toggle node's collapse state. - - - - - Applies the default styling of Node. This must be explicitly called by Node subclasses that use their own uxml files. - - - - - This struct represents the context when the user initiates creating a graph node. - - - - - The index where the created node will be inserted. - - - - - Position of the click that initiated the request to create a node, in the coordinate space of the screen. - - - - - The VisualElement where the created node will be added. - - - - - Graph element orientation. - - - - - Horizontal orientation used for nodes and connections flowing to the left or right. - - - - - Vertical orientation used for nodes and connections flowing up or down. - - - - - The Pill class includes methods for creating and managing a VisualElement that resembles a capsule. The Pill class includes text, an icon, and two optional child VisualElements: one to the left of the pill, and one to the right of the pill. - - - - - Returns whether the pill is highlighted. - - - - - The icon of the pill. - - - - - The VisualElement to the left of the pill. - - - - - The VisualElement to the right of the pill. - - - - - The text of the pill. - - - - - Constructs a pill with its optional left and right child VisualElements. - - - - - - - Constructs a pill with its optional left and right child VisualElements. - - - - - - - Instantiates a Pill using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Pill. - - - - - Returns an empty enumerable, as pill elements do not have children. - - - - - Constructor. - - - - - Initialize Pill properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - GraphView Port class. - - - - - Specify how many edges a port can have connected. - - - - - Port's collapsed state. - - - - - Port's connected state. - - - - - All the port's current connections. - - - - - Port's direction. - - - - - The color of the port when disabled. - - - - - Reference to the edge connector. - - - - - Is the port highlighted. - - - - - Port's node. - - - - - Port's orientation. - - - - - Is the port cap lit or not. - - - - - The color of the port. - - - - - Port name. - - - - - Port type. - - - - - Port's source. - - - - - The name of the uss class to use to style the port. - - - - - Specify how many edges a port can have connected. - - - - - Port can have multiple connections. - - - - - Port can only have a single connection. - - - - - Connect and edge to the port. - - The edge. - - - - Creates an edge between this port and the 'other' port. - - Other port to connect to. - - Newly created edge. - - - - - Creates an edge between this port and the 'other' port. - - Other port to connect to. - - Newly created edge. - - - - - Check if point is on top of port. Used for selection and hover. - - The point. - - True if the point is over the port. - - - - - Factory method for creating a port. - - (obsolete). - Orientation. - Direction. - Multi vs. Single. - Port data type. - - The new port. - - - - - Factory method for creating a port. - - (obsolete). - Orientation. - Direction. - Multi vs. Single. - Port data type. - - The new port. - - - - - Disconnect edge from port. - - The edge to disconnect. - - - - Disconnect all edges from port. - - - - - Get the port's center. - - - The center point. - - - - - Called when an edge is dragged. - - - - - Called when an edge dragging ends. - - - - - Port source. - - - - - Port source constructor. - - - - - Rectangle selection box manipulator. - - - - - Computer the axis-aligned bound rectangle. - - Rectangle to bound. - Transform. - - The axis-aligned bound. - - - - - RectangleSelector's constructor. - - - - - Called to register click event callbacks on the target element. - - - - - Called to unregister event callbacks from the target element. - - - - - Utilities for rectangle selections. - - - - - RectUtils' constructor. - - - - - Create rectangle that encompasses two rectangles. - - Rect a. - Rect b. - - New rectangle. - - - - - Creates and returns an enlarged copy of the specified rectangle. The copy is enlarged by the specified amounts. - - The original rectangle. - The amount to inflate the rectangle towards the left. - The amount to inflate the rectangle towards the top. - The amount to inflate the rectangle towards the right. - The amount to inflate the rectangle towards the bottom. - - - - Check if a line segment overlaps a rectangle. - - Rectangle to check. - Line segment point 1. - Line segment point 2. - - True if line segment overlaps rectangle. False otherwise. - - - - - Resizer manipulator element. - - - - - Mouse button to activate the resizer. - - - - - Resizer's constructor. - - Minimum element size. - - - - Resizer's constructor. - - Minimum element size. - - - - This class allows for nodes to be grouped into a common area, or Scope. This class includes methods that automatically resize and position the Scope to encompass the group of nodes. - - - - - Enables or disables the automatic resizing and positioning of the Scope. - - - - - The list of GraphElements contained by the Scope. - - - - - The rect containing the GraphElements encompassed by the Scope. The rect is expressed in local coordinates. - - - - - Returns the header container for the Scope. Use this header container to customizer the header of the Scope. - - - - - Whether the GraphElement can be added to this scope. - - The element to add. - The reason why the specified element cannot be added to the Scope. - - Returns true if the specified element is accepted by the Scope. Returns false otherwise. - - - - - Adds a GraphElement to the Scope. - - The element to add. - - - - Adds GraphElements to the Scope. - - The elements to add. - - - - - Determines if the Scope contains the specified GraphElement. - - The element. - - Returns true if the Scope contains the specified element. Returns false otherwise. - - - - - Scope constructor. - - - - - Returns the geometry of the Scope. - - - The geometry. - - - - - Determines whether the specified point is within the selectable area of the Scope. - - The point in local coordinates. - - Returns true if the point is within the selectable area of the Scope. Returns false otherwise. - - - - - Called when GraphElements are added to the Scope. - - The added elements. - - - - Called when GraphElements are removed from the Scope. - - The removed elements. - - - - Determines whether the specified rect overlaps the Scope. - - The rect. - - Returns true when the specified rect overlaps the Scope. - - - - - Removes an element from the Scope. - - The element to remove. - - - - Removes elements from the Scope. - - The elements to remove. - - - - Removes elements from the Scope but do not send a notification. - - The elements to remove. - - - - Schedules the update of the size and position of the Scope based on its contents. - - - - - Sets the geometry of the Scope. - - The new geometry. - - - - Change the position of the scope but does not move its elements. - - - - - - Updates the size and position of the Scope based on its contents. - - - - - This class describes a search tree entry. The search window displays search tree entries in the GraphView. - - - - - The text and icon of the search entry. - - - - - The level of the entry in the search tree. - - - - - The string used for string comparison against the user filter. - - - - - A user specified object for attaching application specific data to a search tree entry. - - - - - - - The text and icon of the item. - - - - This class describes group entries in the search tree. The search tree is displayed in the search window. - - - - - - - The text and icon of the group entry. - The level of the group entry. - - - - This subclass displays a searchable menu of available graph nodes. - - - - - Opens the search window above the Graph. - - Structure of parameters that configure the search window. - Reference to the object that provides the search results. - - Returns true if the window opens successfully. Returns false otherwise. - - - - - This structure includes parameters for configuring the search window. - - - - - Requested height of the window. Set to 0.0f to use the default height. - - - - - Requested width of the window. Set to 0.0f to use the default width. - - - - - The initial mouse event position that triggered opening the window, in the coordinate space of the screen. - - - - - - - Requested height of the window. Set to 0.0f to use the default height. - Requested width of the window. Set to 0.0f to use the default width. - The initial mouse event position that triggered opening the window, in the coordinate space of the screen. - - - - Selection dragger manipulator. - - - - - SelectionDragger's constructor. - - - - - Called on mouse down event. - - The event. - - - - Called on mouse move event. - - The event. - - - - Called on mouse up event. - - The event. - - - - - Called to register click event callbacks on the target element. - - - - - Called to unregister event callbacks from the target element. - - - - - Selection drag&drop manipulator. - - - - - Mouse button used to activate the manipulator. - - - - - Clamp element being dragged to the parent's (usually the graph) edges. - - - - - When elements are dragged near the edges of the Graph, panning occurs. This controls the speed for said panning. - - - - - SelectionDropper's constructor. - - The drop event. - - - - Called on mouse down event. - - The event. - - - - Called on mouse move event. - - The event. - - - - Called on mouse up event. - - The event. - - - - Called to register click event callbacks on the target element. - - - - - Called to unregister event callbacks from the target element. - - - - - Shortcut event delegate. - - - - - Shortcut handler. - - - - - ShortcutHandler's constructor. - - Dictionary of shortcuts and their actions. - - - - Called to register click event callbacks on the target element. - - - - - Called to unregister event callbacks from the target element. - - - - - Use this class to customize StackNodes and to manage dragging GraphElements over StackNodes. - - - - - The content container of this StackNode. - - - - - Indicates if items from this stack are currently being dragged. - - - - - Use this property to customize the preview that appears when GraphElements are dragged over the StackNode. - - - - - Returns true if the StackNode supports multiselection. - - - - - Use this property to customize the header for this StackNode. - - - - - Checks whether the specified GraphElement can be added to this StackNode. - - The element to add. - The index where the element would be added. This index can be overwritten. - The maximum value of the index. - - Returns true if the specified GraphElement can be added. Returns false otherwise. - - - - - Adds the specified GraphElement to the StackNode. - - The GraphElement to add. - - - - Indicates whether this StackNode accepts the current drop event. - - "The selected GraphElements to be checked. - - Returns true if this StackNode accepts the current drop event. Returns false otherwise. - - - - - StackNode constructor. - - - - - This method is automatically called when a drag leave event occurs. - - The event. - The selected elements. - The drop target. - The drag source. - - Returns event propagation. - - - - - This method is automatically called when a drag exit event occurs. - - - Returns event propagation. - - - - - This method is automatically called when a drag leave event occurs. - - The event. - The selected elements. - The drop target. - The drag source. - - Returns event propagation. - - - - - This method is automatically called when a drop event occurs. - - The event. - The selected elements. - The drop target. - The drag source. - - Returns event propagation. - - - - - This method is automatically called when a drag updated event occurs. - - The event. - The selected elements. - The drop target. - The drag source. - - Returns event propagation. - - - - - Retrieves the insertion index in the StackNode if an item is dropped at the specified world position. - - The world position to get an index from. - - Returns the insertion index. - - - - - Inserts the specified GraphElement at the specified index in this StackNode. - - The index where the specified GraphElement will be inserted. - The GraphElement to insert. - - - - This method is automatically called when a contextual menu is about to appear on a StackNode separator. - - The event. - The index of the separator on which the menu was invoked. - - - - This method is automatically called when an element of the stack is about to be dragged out of it. - - The GraphElement that is being dragged out of the stack. - - - - This method is automatically called when the style is updated. - - The new style. - - - - Removes the specified GraphElement from this StackNode. - - The GraphElement to remove. - - - - The TokenNode class includes methods for creating and managing a Node that resembles a capsule. The TokenNode class includes a title, an icon, one input Port, and one output Port. - - - - - Returns whether the TokenNode is highlighted. - - - - - The icon of the TokenNode. - - - - - The input Port of the TokenNode. - - - - - The output Port of the TokenNode. - - - - - Constructs a TokenNode with both input and output Ports. - - - - - - - Create a VisualElement inspector from a SerializedObject. - - - - - Force the InspectorElement to generate specific types of inspectors, instead of going by the normal checks that try to find a custom inspector and if that fails generates a default inspector. - - - - - InspectorElement constructor. - - Create a SerializedObject from given obj and automatically Bind() to it. - Determine whether to use normal Inspector generation or force a specific type of inspector (ie. force the default inspector). - - - - InspectorElement constructor. - - Create a SerializedObject from given obj and automatically Bind() to it. - Determine whether to use normal Inspector generation or force a specific type of inspector (ie. force the default inspector). - - - - InspectorElement constructor. - - Create a SerializedObject from given obj and automatically Bind() to it. - Determine whether to use normal Inspector generation or force a specific type of inspector (ie. force the default inspector). - - - - Force the InspectorElement to generate specific types of inspectors, instead of going by the normal checks that try to find a custom inspector and if that fails generates a default inspector. - - - - - Force generation of the custom inspector. If no custom inspector is found only a label will be generated, saying no inspector was found. - - - - - Force generation of the default inspector, even if a custom inspector exists. - - - - - Force generation of the custom IMGUI inspector. If no custom IMGUI inspector is found only a label will be generated, saying no IMGUI inspector was found. - - - - - This is the default mode. It just means: check for a custom inspector and if none is found generate the default inspector. - - - - - Instantiates a InspectorElement using the data read from a UXML file. - - - - - Constructor. - - - - - Makes a text field for entering an integer. - - - - - Modify the value using a 3D delta and a speed, typically coming from an input device. - - A vector used to compute the value change. - A multiplier for the value change. - The start value. - - - - Constructor. - - Maximum number of characters the field can take. - - - - Constructor. - - Maximum number of characters the field can take. - - - - Converts the given string to an integer. - - The string to convert. - - The integer parsed from the string. - - - - - Instantiates an IntegerField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the IntegerField. - - - - - Constructor. - - - - - Initialize IntegerField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Converts the given integer to a string. - - The integer to be converted to string. - - The integer as string. - - - - - An interface for toolbar items that display drop-down menus. - - - - - The drop-down menu for the element. - - - - - Base interface for UIElements text value fields. - - - - - The value of the field. - - - - - Modify the value using a 3D delta and a speed, typically coming from an input device. - - A vector used to compute the value change. - A multiplier for the value change. - The start value. - - - - A LayerField editor. - - - - - Unsuported. - - - - - Unsupported. - - - - - This is the index value of the Layer currently chosen in the LayerField. - - - - - Instantiates a LayerField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the LayerField. - - - - - Constructor. - - - - - Initialize the traits. - - VisualElement that will be created and populated. - Bag of attributes where the data comes from. - Creation context, unused. - - - - Make a field for layer as masks. - - - - - Unsupported. - - - - - Unsupported. - - - - - Constructor. - - The mask to use for a first selection. - - - - Constructor. - - The mask to use for a first selection. - - - - Instantiates a LayerMaskField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the LayerMaskField. - - - - - Constructor. - - - - - Makes a text field for entering long integers. - - - - - Modify the value using a 3D delta and a speed, typically coming from an input device. - - A vector used to compute the value change. - A multiplier for the value change. - The start value. - - - - Constructor. - - Maximum number of characters the field can take. - - - - Constructor. - - Maximum number of characters the field can take. - - - - Converts the given string to a long integer. - - The string to convert. - - The long integer parsed from the string. - - - - - Instantiates a LongField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the LongField. - - - - - Constructor. - - - - - Initialize LongField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Converts the given long integer to a string. - - The long integer to be converted to string. - - The long integer as string. - - - - - Make a field for masks. - - - - - Callback that provides a string representation used to populate the popup menu. - - - - - Callback that provides a string representation used to display the selected value. - - - - - Instantiates a MaskField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the MaskField. - - - - - Constructor. - - - - - Initialize the UxmlTraits for MaskField. - - The VisualElement that will be populated. - The bag from which the attributes are taken. - The creation context, unused. - - - - Makes a field to receive any object type. - - - - - Allows Scene objects to be assigned to the field. - - - - - The type of the objects that can be assigned. - - - - - Constructor. - - - - - Set the value and, if different, notifies registers callbacks with a ChangeEvent<Object> - - The new value to be set. - - - - Instantiates an ObjectField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ObjectField. - - - - - Constructor. - - - - - Initialize ObjectField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Generic popup selection field. - - - - - Callback that provides a string representation used to populate the popup menu. - - - - - Callback that provides a string representation used to display the selected value. - - - - - The currently selected index in the popup menu. - - - - - The currently selected value in the popup menu. - - - - - Construct a PopupField. - - - - - - - - - - Construct a PopupField. - - - - - - - - - - A SerializedProperty wrapper VisualElement that, on Bind(), will generate the correct field elements with the correct bindingPaths. - - - - - Optionally overwrite the label of the generate property field. If no label is provided the string will be taken from the SerializedProperty. - - - - - PropertyField constructor. - - Providing a SerializedProperty in the construct just sets the bindingPath. You will still have to call Bind() on the PropertyField afterwards. - Optionally overwrite the property label. - - - - PropertyField constructor. - - Providing a SerializedProperty in the construct just sets the bindingPath. You will still have to call Bind() on the PropertyField afterwards. - Optionally overwrite the property label. - - - - PropertyField constructor. - - Providing a SerializedProperty in the construct just sets the bindingPath. You will still have to call Bind() on the PropertyField afterwards. - Optionally overwrite the property label. - - - - Instantiates a PropertyField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the PropertyField. - - - - - Constructor. - - - - - A Rect editor field. - - - - - Instantiates a RectField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the RectField. - - - - - Constructor. - - - - - Initialize RectField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - A RectInt editor field. - - - - - Instantiates a RectIntField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the RectIntField. - - - - - Constructor. - - - - - Initializes the UxmlTraits for the RectIntField. - - The VisualElement to be initialized. - Bags of attributes where the values come from. - Creation Context, unused. - - - - A TagField editor. - - - - - Unsupported. - - - - - Unsupported. - - - - - Name of the selected tag. - - - - - Instantiates a TagField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the TagField. - - - - - Constructor. - - - - - Initialize the UxmlTraits for the TagField. - - The VisualElement that will be created and populated. - The bag from which the attributes will be taken. - The creation context, unused. - - - - Base class for text fields. - - - - - A string containing all characters allowed by the field. - - - - - The format string for the value. - - - - - The value held by the field. - - - - - Modify the value using a 3D delta and a speed, typically coming from an input device. - - A vector used to compute the value change. - A multiplier for the value change. - The start value. - - - - Set the value and, if different, notifies registers callbacks with a ChangeEvent. - - The new value to be set. - - - - Converts the given string to a value type. - - The string to convert. - - The value parsed from the string. - - - - - UxmlTraits for the TextValueField. - - - - - Constructor. - - - - - Converts the given value to a string. - - The value to be converted to string. - - The value as a string. - - - - - A toolbar for tool windows. - - - - - Constructor. - - - - - Instantiates a Toolbar using the data read from a UXML file. - - - - - Constructor. - - - - - A button for the toolbar. - - - - - Constructor. - - The action to be called when the button is pressed. - - - - Constructor. - - The action to be called when the button is pressed. - - - - Instantiates a ToolbarButton using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ToolbarButton. - - - - - Constructor. - - - - - A toolbar spacer of flexible size. - - - - - Constructor. - - - - - Instantiates a ToolbarFlexSpacer using the data read from a UXML file. - - - - - Constructor. - - - - - A drop-down menu for the toolbar. - - - - - Constructor. - - - - - Instantiates a ToolbarMenu using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ToolbarMenu. - - - - - Constructor. - - - - - Base class for menu-like toolbar elements. - - - - - The drop-down menu to be used by the toolbar menu element. - - - - - An extension class that handles menu management for elements that are implemented with the IToolbarMenuElement interface, but are identical to DropdownMenu. - - - - - Display the menu for the element. - - The element that is part of the menu to be displayed. - - - - A drop-down menu for the toolbar. - - - - - Constructor. - - - - - Instantiates a ToolbarPopup using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ToolbarPopup. - - - - - Constructor. - - - - - The pop-up search field for the toolbar. The search field includes a menu button. - - - - - The menu used by the pop-up search field element. - - - - - Constructor. - - - - - Instantiates a ToolbarPopupSearchField using the data read from a UXML file. - - - - - Constructor. - - - - - A search field for the toolbar. - - - - - The object currently being exposed by the field. - - - - - Constructor. - - - - - Registers a callback to receive ChangeEvent events when the toolbar search field changes value. - - Callback to be notified. - - - - Unregisters this callback from receiving ChangeEvent<string> when value was changed by user input. - - The callback to unregister. - - - - This method is obsolete. Use ToolbarSearchField.value instead. - - The new value to be set. - - - - Sets the value for the toolbar search field without sending a change event. - - - - - - Instantiates a ToolbarSearchField using the data read from a UXML file. - - - - - Constructor. - - - - - A toolbar spacer of static size. - - - - - Constructor. - - - - - Instantiates a ToolbarSpacer using the data read from a UXML file. - - - - - Constructor. - - - - - A toggle for the toolbar. - - - - - Constructor. - - The action to be called when the toggle is pressed. - - - - Constructor. - - The action to be called when the toggle is pressed. - - - - Instantiates a ToolbarToggle using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ToolbarToggle. - - - - - Constructor. - - - - - Editor helper functions for UIElements. - - - - - Creates a default CursorStyle property from the given MouseCursor. - - Default editor mouse cursor. - - A cursor style property. - - - - - Attribute that can be used on an assembly to define an XML namespace prefix for a namespace. - - - - - The namespace name. - - - - - The namespace prefix. - - - - - Constructor. - - The XML/C# namespace to which a prefix will be associated. - The prefix to associate to the namespace. - - - - A Vector2 editor field. - - - - - Constructor. - - - - - Instantiates a Vector2Field using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Vector2Field. - - - - - Constructor. - - - - - Initialize Vector2Field properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - A Vector2Int editor field. - - - - - Constructor. - - - - - Instantiates a Vector2IntField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Vector2IntField. - - - - - Constructor. - - - - - Initializes the UxmlTraits for the Vector2IntField. - - VisualElement to initialize. - Bag of attributes where to get them. - Creation Context, unused. - - - - A Vector3 editor field. - - - - - Constructor. - - - - - Instantiates a Vector3Field using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Vetor3Field. - - - - - Constructor. - - - - - Initialize Vector3Field properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - A Vector3Int editor field. - - - - - Constructor. - - - - - Instantiates a Vector3IntField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Vector3IntField. - - - - - Constructor. - - - - - Initializes the UxmlTraits for the Vector3IntField. - - [[VisualElement] to initialize. - Bag of attributes where to get them. - Context Creation, unused. - - - - A Vector4 editor field. - - - - - Constructor. - - - - - Instantiates a Vector4Field using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Vector4Field. - - - - - Constructor. - - - - - Initialize Vector4Field properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - - - - - Base class to derive custom Editors from. Use this to create your own custom inspectors and editors for your objects using UIElements. - - - - - Overwrite the default UIElements inspector with your own custom VisualElement. - - - - - Base class to derive custom property drawers from. Use this to create custom UIElements drawers for your own Serializable classes or for script variables with custom PropertyAttributes. - - - - - Overwrite default UIElements property field VisualElement with your own. - - Current property. - - Custom VisualElement property drawer. - - - - - Export package option. Multiple options can be combined together using the | operator. - - - - - Default mode. Will not include dependencies or subdirectories nor include Library assets unless specifically included in the asset list. - - - - - In addition to the assets paths listed, all dependent assets will be included as well. - - - - - The exported package will include all library assets, ie. the project settings located in the Library folder of the project. - - - - - The export operation will be run asynchronously and reveal the exported package file in a file browser window after the export is finished. - - - - - Will recurse through any subdirectories listed and include all assets inside them. - - - - - Evaluates simple math expressions; supports int float and operators: + - * % ^ ( ). - - - - - Evaluates a math expression and returns the result as a float or int. - - A string containing a mathematical expression (e.g. "4 + 3"). - - The result of the evaluation (0 for invalid expressions). - - - - - Lets you do move, copy, delete operations over files or directories. - - - - - Copies a file or a directory. - - - - - - - Copies the file or directory. - - - - - - - Deletes a file or a directory given a path. - - - - - - Returns a unique path in the Temp folder within your current project. - - - - - Moves a file or a directory from a given path to another path. - - - - - - - Replaces a directory. - - - - - - - Replaces a file. - - - - - - - Font rendering mode constants for TrueTypeFontImporter. - - - - - Use hinted font rendering without anti-aliasing. This is the crispest font rendering option, and may be most readable for small font sizes. - - - - - Use Anti-Aliased Font rendering with hinting. This forces character lines to run along pixel boundaries. - - - - - Use the OS default font rendering mode. This mode is only available for dynamic fonts, as static fonts are generated at build time. - - - - - Use Anti-Aliased Font rendering. When using dynamic fonts, this is the mode which is fastest in rendering font textures. - - - - - Texture case constants for TrueTypeFontImporter. - - - - - Import basic ASCII character set. - - - - - Only import lower case ASCII character set. - - - - - Only import upper case ASCII character set. - - - - - Custom set of characters. - - - - - Render characters into font texture at runtime as needed. - - - - - Import a set of Unicode characters common for latin scripts. - - - - - Options for AssetDatabase.ForceReserializeAssets. - - - - - Specifies that AssetDatabase.ForceReserializeAssets should load, upgrade, and save the assets at the paths passed to the function, but not their accompanying .meta files. - - - - - Specifies that AssetDatabase.ForceReserializeAssets should load, upgrade, and save both the assets at the paths passed to the function, and also their accompanying .meta files. - - - - - Specifies that AssetDatabase.ForceReserializeAssets should load, upgrade, and save the .meta files for the assets at the paths passed to the function, but not the assets themselves. - - - - - GameObject utility functions. - - - - - Returns true if the passed in StaticEditorFlags are set on the GameObject specified. - - The GameObject to check. - The flags you want to check. - - Whether the GameObject's static flags match the flags specified. - - - - - You can use this method after parenting one GameObject to another to ensure the child GameObject has a unique name compared to its siblings in the hierarchy. - - The GameObject whose name you want to ensure is unique. - - - - Get the navmesh area index for the GameObject. - - GameObject to query. - - NavMesh area index. - - - - - Get the navmesh area index from the area name. - - NavMesh area name to query. - - The NavMesh area index. If there is no NavMesh area with the requested name, the return value is -1. - - - - - Get all the navmesh area names. - - - Names of all the NavMesh areas. - - - - - Get the navmesh layer for the GameObject. - - The GameObject to check. - - The navmesh layer for the GameObject specified. - - - - - Get the navmesh layer from the layer name. - - The name of the navmesh layer. - - The layer number of the navmesh layer name specified. - - - - - Get all the navmesh layer names. - - - An array of the names of all navmesh layers. - - - - - Gets the StaticEditorFlags of the GameObject specified. - - The GameObject whose flags you are interested in. - - The static editor flags of the GameObject specified. - - - - - You can use this method before instantiating a new sibling, or before parenting one GameObject to another, to ensure the new child GameObject has a unique name compared to its siblings in the hierarchy. - - Target parent for a new GameObject. Null means root level. - Requested name for a new GameObject. - - Unique name for a new GameObject. - - - - - Set the navmesh area for the gameobject. - - GameObject to modify. - NavMesh area index to set. - - - - Set the navmesh layer for the GameObject. - - The GameObject on which to set the navmesh layer. - The layer number you want to set. - - - - Sets the parent and gives the child the same layer and position. - - The GameObject that should have a new parent set. - The GameObject that the child should get as a parent and have position and layer copied from. If null, this function does nothing. - - - - Sets the static editor flags on the specified GameObject. - - The GameObject whose static editor flags you want to set. - The flags to set on the GameObject. - - - - GenericMenu lets you create custom context menus and dropdown menus. - - - - - Allow the menu to have multiple items with the same name. - - - - - Add a disabled item to the menu. - - The GUIContent to display as a disabled menu item. - - - - Add a disabled item to the menu. - - The GUIContent to display as a disabled menu item. - Specifies whether to show that the item is currently activated (i.e. a tick next to the item in the menu). - - - - Add an item to the menu. - - The GUIContent to add as a menu item. - Specifies whether to show the item is currently activated (i.e. a tick next to the item in the menu). - The function to call when the menu item is selected. - - - - Add an item to the menu. - - The GUIContent to add as a menu item. - Specifies whether to show the item is currently activated (i.e. a tick next to the item in the menu). - The function to call when the menu item is selected. - The data to pass to the function called when the item is selected. - - - - Add a seperator item to the menu. - - The path to the submenu, if adding a separator to a submenu. When adding a separator to the top level of a menu, use an empty string as the path. - - - - Show the menu at the given screen rect. - - The position at which to show the menu. - - - - Get number of items in the menu. - - - The number of items in the menu. - - - - - Callback function, called when a menu item is selected. - - - - - Callback function with user data, called when a menu item is selected. - - The data to pass through to the callback function. - - - - Show the menu under the mouse when right-clicked. - - - - - Determines how a gizmo is drawn or picked in the Unity editor. - - - - - Draw the gizmo if it is active (shown in the inspector). - - - - - Draw the gizmo if it is selected or it is a child/descendent of the selected. - - - - - Draw the gizmo if it is not selected. - - - - - Draw the gizmo if it is not selected and also no parent/ancestor is selected. - - - - - The gizmo can be picked in the editor. - - - - - Draw the gizmo if it is selected. - - - - - Enum used to specify the graphics jobs mode to use. - - - - - Legacy graphics jobs. - - - - - Native graphics jobs. - - - - - Default built-in brush for painting or erasing tiles and/or gamobjects on a grid. - - - - - Number of brush cells in the brush. - - - - - All the brush cells the brush holds. - - - - - Pivot of the brush. - - - - - Size of the brush in cells. - - - - - Erases tiles and GameObjects from given bounds within the selected layers. - - Grid to erase data from. - Target of the erase operation. By default the currently selected GameObject. - The bounds to erase data from. - - - - Box fills tiles and GameObjects into given bounds within the selected layers. - - Grid to box fill data to. - Target of the box fill operation. By default the currently selected GameObject. - The bounds to box fill data into. - - - - Brush Cell stores the data to be painted in a grid cell. - - - - - Color to tint the tile when painting. - - - - - The transform matrix of the brush cell. - - - - - Tile to be placed when painting. - - - - - Erases tiles and GameObjects in a given position within the selected layers. - - Grid used for layout. - Target of the erase operation. By default the currently selected GameObject. - The coordinates of the cell to erase data from. - - - - Flips the brush in the given axis. - - Axis to flip by. - Cell Layout for flipping. - - - - Flood fills tiles and GameObjects starting from a given position within the selected layers. - - Grid used for layout. - Target of the flood fill operation. By default the currently selected GameObject. - Starting position of the flood fill. - - - - Gets the index to the GridBrush.BrushCell based on the position of the BrushCell. - - Position of the BrushCell. - X Position of the BrushCell. - Y Position of the BrushCell. - Z Position of the BrushCell. - X Size of Brush. - Y Size of Brush. - Z Size of Brush. - - Index to the BrushCell. - - - - - Gets the index to the GridBrush.BrushCell based on the position of the BrushCell. - - Position of the BrushCell. - X Position of the BrushCell. - Y Position of the BrushCell. - Z Position of the BrushCell. - X Size of Brush. - Y Size of Brush. - Z Size of Brush. - - Index to the BrushCell. - - - - - Gets the index to the GridBrush.BrushCell based on the position of the BrushCell. - - Position of the BrushCell. - X Position of the BrushCell. - Y Position of the BrushCell. - Z Position of the BrushCell. - X Size of Brush. - Y Size of Brush. - Z Size of Brush. - - Index to the BrushCell. - - - - - Gets the index to the GridBrush.BrushCell based on the position of the BrushCell. Wraps each coordinate if it is larger than the size of the GridBrush. - - X Position of the BrushCell. - Y Position of the BrushCell. - Z Position of the BrushCell. - - Index to the BrushCell. - - - - - Initializes the content of the GridBrush. - - Size of the GridBrush. - Pivot point of the GridBrush. - - - - Initializes the content of the GridBrush. - - Size of the GridBrush. - Pivot point of the GridBrush. - - - - MoveEnd is called when user has ended the move of the area previously selected with the selection marquee. - - Grid used for layout. - Target of the move operation. By default the currently selected GameObject. - Position where the move operation has ended. - - - - MoveEnd is called when user starts moving the area previously selected with the selection marquee. - - Grid used for layout. - Target of the move operation. By default the currently selected GameObject. - Position where the move operation has started. - - - - Paints tiles and GameObjects into a given position within the selected layers. - - Grid used for layout. - Target of the paint operation. By default the currently selected GameObject. - The coordinates of the cell to paint data to. - - - - Picks tiles from selected Tilemap|tile maps and child GameObjects, given the coordinates of the cells. - - Grid to pick data from. - Target of the picking operation. By default the currently selected GameObject. - The coordinates of the cells to paint data from. - Pivot of the picking brush. - - - - Clear all data of the brush. - - - - - Rotates the brush by 90 degrees in the given direction. - - Direction to rotate by. - Cell Layout for rotating. - - - - Sets a tint color at the position in the brush. - - Position to set the color in the brush. - Tint color to set in the brush. - - - - Sets a transform matrix at the position in the brush. This matrix is used specifically for tiles on a Tilemap and not GameObjects of the brush cell. - - Position to set the transform matrix in the brush. - Transform matrix to set in the brush. - - - - Sets a Tile at the position in the brush. - - Position to set the tile in the brush. - Tile to set in the brush. - - - - Updates the size, pivot and the number of layers of the brush. - - New size of the brush. - New pivot of the brush. - - - - Editor for GridBrush. - - - - - The GridBrush that is the target for this editor. - - - - - Returns all valid targets that the brush can edit. - - - - - Does a preview of what happens when a GridBrush.BoxFill is done with the same parameters. - - Grid to box fill data to. - Target of box fill operation. By default the currently selected GameObject. - The bounds to box fill data to. - - - - Clears any preview drawn previously by the GridBrushEditor. - - - - - Does a preview of what happens when a GridBrush.FloodFill is done with the same parameters. - - Grid to paint data to. - Target of the flood fill operation. By default the currently selected GameObject. - The coordinates of the cell to flood fill data to. - - - - Callback for painting the GUI for the GridBrush in the Scene View. - - Grid that the brush is being used on. - Target of the GridBrushBase.Tool operation. By default the currently selected GameObject. - Current selected location of the brush. - Current GridBrushBase.Tool selected. - Whether brush is being used. - - - - Callback for drawing the Inspector GUI when there is an active GridSelection made in a Tilemap. - - - - - Paints preview data into a cell of a grid given the coordinates of the cell. - - Grid to paint data to. - Target of the paint operation. By default the currently selected GameObject. - The coordinates of the cell to paint data to. - - - - Callback for registering an Undo action before the GridBrushBase does the current GridBrushBase.Tool action. - - Target of the GridBrushBase.Tool operation. By default the currently selected GameObject. - Current GridBrushBase.Tool selected. - - - - Base class for Grid Brush Editor. - - - - - Returns all valid targets that the brush can edit. - - - - - Callback when the mouse cursor enters a paintable region. - - - - - Callback when the mouse cursor leaves a paintable region. - - - - - Callback for painting the inspector GUI for the GridBrush in the tilemap palette. - - - - - Callback for painting the GUI for the GridBrush in the Scene view. - - Grid that the brush is being used on. - Target of the GridBrushBase.Tool operation. By default the currently selected GameObject. - Current selected location of the brush. - Current GridBrushBase.Tool selected. - Whether is brush is being used. - - - - Callback for drawing the Inspector GUI when there is an active GridSelection made in a GridLayout. - - - - - Callback when a GridBrushBase.Tool is activated. - - Tool that is activated. - - - - Callback when a GridBrushBase.Tool is deactivated. - - Tool that is deactivated. - - - - Callback for registering an Undo action before the GridBrushBase does the current GridBrushBase.Tool action. - - Target of the GridBrushBase.Tool operation. By default the currently selected GameObject. - Current GridBrushBase.Tool selected. - - - - Use this attribute to add an option to customize the sorting of Active Targets in the Active Tilemap list of the Tile Palette window. - - - - - GridPalette stores settings for Palette assets when shown in the Palette window. - - - - - Determines the sizing of cells for a Palette. - - - - - Controls the sizing of cells for a Palette. - - - - - Automatically resizes the Palette cells by the size of Sprites in the Palette. - - - - - Size of Palette cells will be changed manually by the user. - - - - - Stores the selection made on a GridLayout. - - - - - Whether there is an active GridSelection made on a GridLayout. - - - - - The Grid of the target of the active GridSelection. - - - - - Callback for when the active GridSelection has changed. - - Callback. - - - - The cell coordinates of the active GridSelection made on the GridLayout. - - - - - The GameObject of the GridLayout where the active GridSelection was made. - - - - - Clears the active GridSelection. - - - - - Creates a new GridSelection and sets it as the active GridSelection. - - The target GameObject for the GridSelection. - The cell coordinates of selection made. - - - - Base class for PropertyDrawer and DecoratorDrawer. - - - - - Custom 3D GUI controls and drawing in the Scene view. - - - - - Color to use for handles that represent the center of something. - - - - - Colors of the handles. - - - - - Setup viewport and stuff for a current camera. - - - - - The inverse of the matrix for all handle operations. - - - - - Are handles lit? - - - - - Matrix for all handle operations. - - - - - Color to use to highlight an unselected handle currently under the mouse pointer. - - - - - Soft color to use for for general things. - - - - - Color to use for the currently active handle. - - - - - Color to use for handles that manipulates the X coordinate of something. - - - - - Color to use for handles that manipulates the Y coordinate of something. - - - - - Color to use for handles that manipulates the Z coordinate of something. - - - - - zTest of the handles. - - - - - Draw an arrow like those used by the move tool. - - The control ID for the handle. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. - - - - Begin a 2D GUI block inside the 3D handle GUI. - - - - - Make a 3D Button. - - The position to draw the button in the space of Handles.matrix. - The rotation of the button in the space of Handles.matrix. - The visual size of the handle. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - The size of the button for the purpose of detecting a click. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - The draw style of the button. - - True when the user clicks the button. - - - - - The function to use for drawing the handle e.g. Handles.RectangleCap. - - The control ID for the handle. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in world-space units. - Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. - - - - Draw a circle handle. Pass this into handle functions. - - The control ID for the handle. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. - - - - Clears the camera. - - Where in the Scene to clear. - The camera to clear. - - - - Draw a cone handle. Pass this into handle functions. - - The control ID for the handle. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. - - - - Draw a cube handle. Pass this into handle functions. - - The control ID for the handle. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. - - - - Draw a cylinder handle. Pass this into handle functions. - - The control ID for the handle. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. - - - - Make a 3D disc that can be dragged with the mouse. - - Control id of the handle. - The rotation of the disc. - The center of the disc. - The axis to rotate around. - The size of the disc in world space. - If true, only the front-facing half of the circle is draw / draggable. This is useful when you have many overlapping rotation axes (like in the default rotate tool) to avoid clutter. - The grid size to snap to. - - The new rotation value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - Make a 3D disc that can be dragged with the mouse. - - Control id of the handle. - The rotation of the disc. - The center of the disc. - The axis to rotate around. - The size of the disc in world space. - If true, only the front-facing half of the circle is draw / draggable. This is useful when you have many overlapping rotation axes (like in the default rotate tool) to avoid clutter. - The grid size to snap to. - - The new rotation value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - Draw a dot handle. Pass this into handle functions. - - The control ID for the handle. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. - - - - Draw anti-aliased convex polygon specified with point array. - - List of points describing the convex polygon. - - - - Draw anti-aliased line specified with point array and width. - - The AA texture used for rendering. - The width of the line. - List of points to build the line from. - - - - - Draw anti-aliased line specified with point array and width. - - The AA texture used for rendering. - The width of the line. - List of points to build the line from. - - - - - Draw anti-aliased line specified with point array and width. - - The AA texture used for rendering. - The width of the line. - List of points to build the line from. - - - - - Draw anti-aliased line specified with point array and width. - - The AA texture used for rendering. - The width of the line. - List of points to build the line from. - - - - - Draw anti-aliased line specified with point array and width. - - The AA texture used for rendering. - The width of the line. - List of points to build the line from. - - - - - Draw textured bezier line through start and end points with the given tangents. - - The start point of the bezier line. - The end point of the bezier line. - The start tangent of the bezier line. - The end tangent of the bezier line. - The color to use for the bezier line. - The texture to use for drawing the bezier line. - The width of the bezier line. - - - - Draws a camera inside a rectangle. - - The area to draw the camera within in GUI coordinates. - The camera to draw. - How the camera is drawn (textured, wireframe, etc). - Parameters of grid drawing (can be omitted). - - - - Draws a camera inside a rectangle. - - The area to draw the camera within in GUI coordinates. - The camera to draw. - How the camera is drawn (textured, wireframe, etc.). - - - - Draws a camera inside a rectangle. - - The area to draw the camera within in GUI coordinates. - The camera to draw. - How the camera is drawn (textured, wireframe, etc.). - - - - Draw a dotted line from p1 to p2. - - The start point. - The end point. - The size in pixels for the lengths of the line segments and the gaps between them. - - - - Draw a list of dotted line segments. - - A list of pairs of points that represent the start and end of line segments. - The size in pixels for the lengths of the line segments and the gaps between them. - - - - Draw a list of indexed dotted line segments. - - A list of points. - A list of pairs of indices to the start and end points of the line segments. - The size in pixels for the lengths of the line segments and the gaps between them. - - - - Draw the Gizmos for the given camera. - - - - - - Disposable helper struct for automatically setting and reverting Handles.color and/or Handles.matrix. - - - - - The value of Handles.color at the time this DrawingScope was created. - - - - - The value of Handles.matrix at the time this DrawingScope was created. - - - - - Create a new DrawingScope and set Handles.color and/or Handles.matrix to the specified values. - - The matrix to use for displaying Handles inside the scope block. - The color to use for displaying Handles inside the scope block. - - - - Create a new DrawingScope and set Handles.color and/or Handles.matrix to the specified values. - - The matrix to use for displaying Handles inside the scope block. - The color to use for displaying Handles inside the scope block. - - - - Create a new DrawingScope and set Handles.color and/or Handles.matrix to the specified values. - - The matrix to use for displaying Handles inside the scope block. - The color to use for displaying Handles inside the scope block. - - - - Automatically reverts Handles.color and Handles.matrix to their values prior to entering the scope, when the scope is exited. You do not need to call this method manually. - - - - - Draw a line from p1 to p2. - - - - - - - Draw a list of line segments. - - A list of pairs of points that represent the start and end of line segments. - - - - Draw a list of indexed line segments. - - A list of points. - A list of pairs of indices to the start and end points of the line segments. - - - - Draw a line going through the list of points. - - - - - - Draw a camera facing selection frame. - - - - - - - - - - Draw a circular sector (pie piece) in 3D space. - - The center of the circle. - The normal of the circle. - The direction of the point on the circumference, relative to the center, where the sector begins. - The angle of the sector, in degrees. - The radius of the circle - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - Draw a solid flat disc in 3D space. - - The center of the dics. - The normal of the disc. - The radius of the dics - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - Draw a solid outlined rectangle in 3D space. - - The 4 vertices of the rectangle in world coordinates. - The color of the rectangle's face. - The outline color of the rectangle. - - - - Draw a circular arc in 3D space. - - The center of the circle. - The normal of the circle. - The direction of the point on the circle circumference, relative to the center, where the arc begins. - The angle of the arc, in degrees. - The radius of the circle - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - Draw a wireframe box with center and size. - - - - - - - Draw the outline of a flat disc in 3D space. - - The center of the disc. - The normal of the disc. - The radius of the disc. - - - - End a 2D GUI block and get back to the 3D handle GUI. - - - - - Make an unconstrained movement handle. - - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - The snap increment on all axes. See Handles.SnapValue. - The function to call for doing the actual drawing. - The control ID for the handle. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - Make an unconstrained movement handle. - - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - The snap increment on all axes. See Handles.SnapValue. - The function to call for doing the actual drawing. - The control ID for the handle. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - TODO. - - - - - - - - - - Make an unconstrained rotation handle. - - Control id of the handle. - Orientation of the handle. - Center of the handle in 3D space. - The size of the handle. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - The new rotation value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - Make an unconstrained rotation handle. - - Control id of the handle. - Orientation of the handle. - Center of the handle in 3D space. - The size of the handle. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - The new rotation value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - Get the width and height of the main game view. - - - - - Make a text label positioned in 3D space. - - Position in 3D space as seen from the current handle camera. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - Make a text label positioned in 3D space. - - Position in 3D space as seen from the current handle camera. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - Make a text label positioned in 3D space. - - Position in 3D space as seen from the current handle camera. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - Make a text label positioned in 3D space. - - Position in 3D space as seen from the current handle camera. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - Make a text label positioned in 3D space. - - Position in 3D space as seen from the current handle camera. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - Retuns an array of points to representing the bezier curve. - - - - - - - - - - Make a position handle. - - Center of the handle in 3D space. - Orientation of the handle in 3D space. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - Make a Scene view radius handle. - - Orientation of the handle. - Center of the handle in 3D space. - Radius to modify. - Whether to omit the circular outline of the radius and only draw the point handles. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - - Make a Scene view radius handle. - - Orientation of the handle. - Center of the handle in 3D space. - Radius to modify. - Whether to omit the circular outline of the radius and only draw the point handles. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - -Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles. - - - - - Draw a rectangle handle. Pass this into handle functions. - - The control ID for the handle. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. - - - - Make a Scene view rotation handle. - - Orientation of the handle. - Center of the handle in 3D space. - - The new rotation value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - Make a Scene view scale handle. - - Scale to modify. - The position of the handle. - The rotation of the handle. - Allows you to scale the size of the handle on-scren. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - Make a directional scale slider. - - The value the user can modify. - The position of the handle in the space of Handles.matrix. - The direction of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - The snap increment. See Handles.SnapValue. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - Make a 3D handle that scales a single float. - - The value the user can modify. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - The snap increment. See Handles.SnapValue. - The function to call for doing the actual drawing. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function. - - - - - Set the current camera so all Handles and Gizmos are draw with its settings. - - - - - - - Set the current camera so all Handles and Gizmos are draw with its settings. - - - - - - - A delegate type for getting a handle's size based on its current position. - - The current position of the handle in the space of Handles.matrix. - - - - Make a 3D slider that moves along one axis. - - The position of the current point in the space of Handles.matrix. - The direction axis of the slider in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - The snap increment. See Handles.SnapValue. - The function to call for doing the actual drawing. By default it is Handles.ArrowHandleCap, but any function that has the same signature can be used. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the position value passed into the function. - - - - - Make a 3D slider that moves along one axis. - - The position of the current point in the space of Handles.matrix. - The direction axis of the slider in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - The snap increment. See Handles.SnapValue. - The function to call for doing the actual drawing. By default it is Handles.ArrowHandleCap, but any function that has the same signature can be used. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the position value passed into the function. - - - - - Make a 3D slider that moves along a plane defined by two axes. - - (optional) override the default ControlID for this Slider2D instance. - The position of the current point in the space of Handles.matrix. - (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. - The direction of the handle in the space of Handles.matrix, only used for rendering of the handle. - The first axis of the slider's plane of movement in the space of Handles.matrix. - The second axis of the slider's plane of movement in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - (float or Vector2) The snap increment along both axes, either uniform or per-axis. See Handles.SnapValue. - (default: false) render a rectangle around the handle when dragging. - The function to call for doing the actual drawing. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the position value passed into the function. - - - - - Make a 3D slider that moves along a plane defined by two axes. - - (optional) override the default ControlID for this Slider2D instance. - The position of the current point in the space of Handles.matrix. - (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. - The direction of the handle in the space of Handles.matrix, only used for rendering of the handle. - The first axis of the slider's plane of movement in the space of Handles.matrix. - The second axis of the slider's plane of movement in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - (float or Vector2) The snap increment along both axes, either uniform or per-axis. See Handles.SnapValue. - (default: false) render a rectangle around the handle when dragging. - The function to call for doing the actual drawing. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the position value passed into the function. - - - - - Make a 3D slider that moves along a plane defined by two axes. - - (optional) override the default ControlID for this Slider2D instance. - The position of the current point in the space of Handles.matrix. - (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. - The direction of the handle in the space of Handles.matrix, only used for rendering of the handle. - The first axis of the slider's plane of movement in the space of Handles.matrix. - The second axis of the slider's plane of movement in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - (float or Vector2) The snap increment along both axes, either uniform or per-axis. See Handles.SnapValue. - (default: false) render a rectangle around the handle when dragging. - The function to call for doing the actual drawing. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the position value passed into the function. - - - - - Make a 3D slider that moves along a plane defined by two axes. - - (optional) override the default ControlID for this Slider2D instance. - The position of the current point in the space of Handles.matrix. - (optional) renders the Slider2D at handlePos, but treats the Slider2D's origin as handlePos + offset. Useful for Slider2D instances that are placed/rendered relative to another object or handle. - The direction of the handle in the space of Handles.matrix, only used for rendering of the handle. - The first axis of the slider's plane of movement in the space of Handles.matrix. - The second axis of the slider's plane of movement in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - (float or Vector2) The snap increment along both axes, either uniform or per-axis. See Handles.SnapValue. - (default: false) render a rectangle around the handle when dragging. - The function to call for doing the actual drawing. - - The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the position value passed into the function. - - - - - Rounds the value val to the closest multiple of snap (snap can only be positive). - - - - - The rounded value, if snap is positive, and val otherwise. - - - - - Draw a sphere handle. Pass this into handle functions. - - The control ID for the handle. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - - - - Helper functions for Scene View style 3D GUI. - - - - - Get standard acceleration for dragging values (Read Only). - - - - - Get nice mouse delta to use for dragging a float value (Read Only). - - - - - Get nice mouse delta to use for zooming (Read Only). - - - - - Record a distance measurement from a handle. - - - - - - - Add the ID for a default control. This will be picked if nothing else is. - - - - - - Map a mouse drag onto a movement along a line in 3D space. - - The source point of the drag. - The destination point of the drag. - The 3D position the dragged object had at src ray. - 3D direction of constrained movement. - - The distance travelled along constraintDir. - - - - - Get the point on an arc (in 3D space) which is closest to the current mouse position. - - - - - - - - - - Get the point on an disc (in 3D space) which is closest to the current mouse position. - - - - - - - - Get the point on a polyline (in 3D space) which is closest to the current mouse position. - - - - - - Calculate distance between a point and a Bezier curve. - - - - - - - - - - Calculate distance between a point and a line. - - - - - - - - Distance from a point p in 2d to a line defined by two points a and b. - - - - - - - - Distance from a point p in 2d to a line segment defined by two points a and b. - - - - - - - - Pixel distance from mouse pointer to a 3D section of a disc. - - - - - - - - - - Pixel distance from mouse pointer to camera facing circle. - - - - - - - Pixel distance from mouse pointer to a 3D disc. - - - - - - - - Pixel distance from mouse pointer to line. - - - - - - - Pixel distance from mouse pointer to a polyline. - - - - - - Pixel distance from mouse pointer to a rectangle on screen. - - - - - - - - Get world space size of a manipulator handle at given position. - - The position of the handle in 3d space. - - A constant screen-size for the handle, based on the distance between from the supplied handle's position to the camera. - - - - - Converts a 2D GUI position to screen pixel coordinates. - - - - - - Convert 2D GUI position to a world space ray. - - - - - - Pick game object closest to specified position. - - Select Prefab. - Returns index into material array of the Renderer component that is closest to specified position. - - - - - Pick game object closest to specified position. - - Select Prefab. - Returns index into material array of the Renderer component that is closest to specified position. - - - - - Pick GameObjects that lie within a specified screen rectangle. - - An screen rectangle specified with pixel coordinates. - - - - - - - - - - - Returns the parameter for the projection of the point on the given line. - - - - - - - - Retrieve all camera settings. - - - - - - Project point onto a line. - - - - - - - - Store all camera settings. - - - - - - Casts ray against the Scene and report if an object lies in its path. - - - - A boxed RaycastHit, null if nothing hit it. - - - - - Repaint the current view. - - - - - Calculate a rectangle to display a 2D GUI element near a projected point in 3D space. - - The world-space position to use. - The content to make room for. - The style to use. The style's alignment. - - - - Convert a world space point to a 2D GUI position. - - Point in world space. - - - - Convert a world space point to a 2D GUI position. - - Point in world space. - - A Vector3 where the x and y values relate to the 2D GUI position. The z value is the distance in world units from the camera. - - - - - Helper class to access Unity documentation. - - - - - Open url in the default web browser. - - - - - - Get the URL for this object's documentation. - - The object to retrieve documentation for. - - The documentation URL for the object. Note that this could use the http: or file: schemas. - - - - - Is there a help page for this object? - - - - - - Show help page for this object. - - - - - - Show a help page. - - - - - - Use this class to highlight elements in the editor for use in in-editor tutorials and similar. - - - - - Is there currently an active highlight? - - - - - The rect in screenspace of the current active highlight. - - - - - The text of the current active highlight. - - - - - Is the current active highlight visible yet? - - - - - Highlights an element in the editor. - - The title of the window the element is inside. - The text to identify the element with. - Optional mode to specify how to search for the element. - - true if the requested element was found; otherwise false. - - - - - Highlights an element in the editor. - - The title of the window the element is inside. - The text to identify the element with. - Optional mode to specify how to search for the element. - - true if the requested element was found; otherwise false. - - - - - Call this method to create an identifiable rect that the Highlighter can find. - - The position to make highlightable. - The identifier text of the rect. - - - - Stops the active highlight. - - - - - Used to specify how to find a given element in the editor to highlight. - - - - - Highlights the first element found using any of the search modes. - - - - - Highlights an element containing text using the text as identifier. - - - - - Highlights an element with a given identifier text. - - - - - Highlights nothing. - - - - - Highlights an entire editor control using its label text as identifier. - - - - - Icon kind. - - - - - This icon can be used for any purpose in an application. - - - - - This icon is used for the main application icons. - - - - - This icon is used for push notifications. - - - - - This icon is used for settings. - - - - - This icon is used for Spotlight searches. (iOS only). - - - - - This icon is used by the iOS App Store. - - - - - Defines a method to add custom menu items to an Editor Window. - - - - - Adds your custom menu items to an Editor Window. - - - - - - Use IHVImageFormatImporter to modify Texture2D import settings for Textures in IHV (Independent Hardware Vendor) formats such as .DDS and .PVR from Editor scripts. - - - - - Filtering mode of the texture. - - - - - Is texture data readable from scripts. - - - - - Enable mipmap streaming for this texture. - - - - - Relative priority for this texture when reducing memory size in order to hit the memory budget. - - - - - Texture coordinate wrapping mode. - - - - - Texture U coordinate wrapping mode. - - - - - Texture V coordinate wrapping mode. - - - - - Texture W coordinate wrapping mode for Texture3D. - - - - - C++ compiler configuration used when compiling IL2CPP generated code. - - - - - Debug configuration turns off all optimizations, which makes the code quicker to build but slower to run. - - - - - Master configuration enables all possible optimizations, squeezing every bit of performance possible. For instance, on platforms that use the MSVC++ compiler, this option enables link-time code generation. Compiling code using this configuration can take significantly longer than it does using the Release configuration. Unity recommends building the shipping version of your game using the Master configuration if the increase in build time is acceptable. - - - - - Release configuration enables optimizations, so the compiled code runs faster and the binary size is smaller but it takes longer to compile. - - - - - Interface for when you extend the Lighting Explorer. Used in full overrides of the default behavior. - - - - - Returns the tabs that you have selected to display in the Lighting Explorer. - - - Tabs for the Lighting Explorer. - - - - - This is called when the Lighting Explorer OnDisable is called, or when you switch to another extension. - - - - - This is called when the Lighting Explorer OnEnable is called, or when you switch to another extension. - - - - - A class for a compound handle to edit an angle and a radius in the Scene view. - - - - - Returns or specifies the angle of the arc for the handle. - - - - - Returns or specifies the color of the angle control handle. - - - - - The Handles.CapFunction to use when displaying the angle control handle. - - - - - The Handles.SizeFunction to specify how large the angle control handle should be. - - - - - Returns or specifies the color of the arc shape. - - - - - Returns or specifies the radius of the arc for the handle. - - - - - Returns or specifies the color of the radius control handle. - - - - - The Handles.CapFunction to use when displaying the radius control handle. - - - - - The Handles.SizeFunction to specify how large the angle control handle should be. - - - - - Returns or specifies the color of the curved line along the outside of the arc. - - - - - Creates a new instance of the ArcHandle class. - - - - - A Handles.CapFunction that draws a line terminated with Handles.CylinderHandleCap. - - The control ID for the handle. - The position of the handle in the space of Handles.matrix. - The rotation of the handle in the space of Handles.matrix. - The size of the handle in the space of Handles.matrix. Use HandleUtility.GetHandleSize if you want a constant screen-space size. - Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. - - - - A Handles.SizeFunction that returns a fixed screen-space size. - - The current position of the handle in the space of Handles.matrix. - - The size to use for a handle at the specified position. - - - - - A Handles.SizeFunction that returns a fixed screen-space size. - - The current position of the handle in the space of Handles.matrix. - - The size to use for a handle at the specified position. - - - - - A function to display this instance in the current handle camera using its current configuration. - - - - - Sets angleHandleColor, wireframeColor, and fillColor to the same value, where fillColor will have the specified alpha value. radiusHandleColor will be set to Color.clear and the radius handle will be disabled. - - The color to use for the angle control handle and the fill shape. - The alpha value to use for fillColor. - - - - Sets angleHandleColor, radiusHandleColor, wireframeColor, and fillColor to the same value, where fillColor will have the specified alpha value. - - The color to use for the angle and radius control handles and the fill shape. - The alpha value to use for fillColor. - - - - A compound handle to edit a box-shaped bounding volume in the Scene view. - - - - - Returns or specifies the size of the bounding box. - - - - - Create a new instance of the BoxBoundsHandle class. - - An integer value used to generate consistent control IDs for each control handle on this instance. Avoid using the same value for all of your BoxBoundsHandle instances. - - - - Create a new instance of the BoxBoundsHandle class. - - An integer value used to generate consistent control IDs for each control handle on this instance. Avoid using the same value for all of your BoxBoundsHandle instances. - - - - Draw a wireframe box for this instance. - - - - - A compound handle to edit a capsule-shaped bounding volume in the Scene view. - - - - - Returns or specifies the height of the capsule bounding volume. - - - - - Returns or specifies the axis in the handle's space to which height maps. The radius maps to the remaining axes. - - - - - Returns or specifies the radius of the capsule bounding volume. - - - - - Create a new instance of the CapsuleBoundsHandle class. - - An integer value used to generate consistent control IDs for each control handle on this instance. Avoid using the same value for all of your CapsuleBoundsHandle instances. - - - - Create a new instance of the CapsuleBoundsHandle class. - - An integer value used to generate consistent control IDs for each control handle on this instance. Avoid using the same value for all of your CapsuleBoundsHandle instances. - - - - Draw a wireframe capsule for this instance. - - - - - An enumeration for specifying which axis on a CapsuleBoundsHandle object maps to the CapsuleBoundsHandle.height parameter. - - - - - X-axis. - - - - - Y-axis. - - - - - Z-axis. - - - - - A callback for when a control handle was dragged in the Scene. - - The handle that was dragged. - The raw Bounds for this instance's volume at the time the control handle was clicked. - The raw Bounds for this instance's volume based on the updated handle position. - - The bounds that should be applied to this instance, with any necessary modifications applied. - - - - - A class for a compound handle to edit multiaxial angular motion limits in the Scene view. - - - - - The Handles.CapFunction to use when displaying the angle control handle. - - - - - The Handles.SizeFunction to specify how large the angle control handle should be. - - - - - Returns or specifies the opacity to use when rendering fill shapes for the range of motion for each axis. Defaults to 0.1. - - - - - Returns or specifies the radius of the arc for the handle. Defaults to 1.0. - - - - - Returns or specifies the opacity to use for the curved lines along the outside of the arcs of motion. Defaults to 1.0. - - - - - Returns or specifies the color to use for the handle limiting motion around the x-axis. Defaults to Handles.xAxisColor. - - - - - Returns or specifies the maximum angular motion about the x-axis. - - - - - Returns or specifies the minimum angular motion about the x-axis. - - - - - Returns or specifies how angular motion is limited about the x-axis. Defaults to ConfigurableJointMotion.Limited. - - - - - Returns or specifies the range of valid values for angular motion about the x-axis. Defaults to [-180.0, 180.0]. - - - - - Returns or specifies the color to use for the handle limiting motion around the y-axis. Defaults to Handles.yAxisColor. - - - - - Returns or specifies the maximum angular motion about the y-axis. - - - - - Returns or specifies the minimum angular motion about the y-axis. - - - - - Returns or specifies how angular motion is limited about the y-axis. Defaults to ConfigurableJointMotion.Limited. - - - - - Returns or specifies the range of valid values for angular motion about the y-axis. Defaults to [-180.0, 180.0]. - - - - - Returns or specifies the color to use for the handle limiting motion around the z-axis. Defaults to Handles.zAxisColor. - - - - - Returns or specifies the maximum angular motion about the z-axis. - - - - - Returns or specifies the minimum angular motion about the z-axis. - - - - - Returns or specifies how angular motion is limited about the z-axis. Defaults to ConfigurableJointMotion.Limited. - - - - - Returns or specifies the range of valid values for angular motion about the z-axis. Defaults to [-180.0, 180.0]. - - - - - Creates a new instance of the JointAngularLimitHandle class. - - - - - A function to display this instance in the current handle camera using its current configuration. - - - - - The MultiColumnHeader is a general purpose class that e.g can be used with the TreeView to create multi-column tree views and list views. - - - - - Use this property to control whether sorting is enabled for all the columns. - - - - - Customizable height of the multi column header. - - - - - The index of the column that is set to be the primary sorting column. This is the column that shows the sorting arrow above the header text. - - - - - Subscribe to this event to get notified when sorting has changed. - - - - - - This is the state of the MultiColumnHeader. - - - - - Subscribe to this event to get notified when the number of visible columns has changed. - - - - - - Override this method to extend the default context menu items shown when context clicking the header area. - - Context menu shown. - - - - Override to customize the behavior when clicking a column header. - - Column clicked. - Column index clicked. - - - - Override to customize the GUI of a single column header. - - Column header data. - Rect for column header. - Column index. - - - - Constructor. - - Column header state and Column state. - - - - Default GUI methods and properties for the MultiColumnHeader class. - - - - - Margin that can be used by clients of the MultiColumnHeader to control spacing between content in multiple columns. - - - - - Default height of the header. - - - - - This height is the minium height the header can have and can only be used if sorting is disabled. - - - - - Default styles used by the MultiColumnHeader class. - - - - - Style used for rendering the background of the header. - - - - - Style used for left aligned header text. - - - - - Style used for centered header text. - - - - - Style used for right aligned header text. - - - - - Calculates a cell rect for a column and row using the visibleColumnIndex and rowRect parameters. - - - - - - - Returns the column data for a given column index. - - Column index. - - Column data. - - - - - Returns the header column Rect for a given visible column index. - - Index of a visible column. - - - - Convert from column index to visible column index. - - Column index. - - Visible column index. - - - - - Delegate used for events from the MultiColumnHeader. - - The MultiColumnHeader that dispatched this event. - - - - Check if a column is currently visible in the MultiColumnHeader. - - Column index. - - - - Check the sorting order state for a column. - - Column index. - - True if sorted ascending. - - - - - Render and handle input for the MultiColumnHeader at the given rect. - - Horizontal scroll offset. - Rect where the MultiColumnHeader is drawn in. - - - - Called when sorting changes and dispatches the sortingChanged event. - - - - - Called when the number of visible column changes and dispatches the visibleColumnsChanged event. - - - - - Requests the window which contains the MultiColumnHeader to repaint. - - - - - Resizes the column widths of the columns that have auto-resize enabled to make all the columns fit to the width of the MultiColumnHeader render rect. - - - - - Change sort direction for a given column. - - Column index. - Direction of the sorting. - - - - Sets the primary sorting column and its sorting order. - - Column to sort. - Sorting order for the column specified. - - - - Sets multiple sorting columns and the associated sorting orders. - - Column indices of the sorted columns. - Sorting order for the column indices specified. - - - - Provides the button logic for a column header and the rendering of the sorting arrow (if visible). - - Column data. - Column header rect. - Column index. - - - - Method for toggling the visibility of a column. - - Toggle visibility for this column. - - - - State used by the MultiColumnHeader. - - - - - The array of column states used by the MultiColumnHeader class. - - - - - This property controls the maximum number of columns returned by the sortedColumns property. - - - - - This property holds the index to the primary sorted column. - - - - - The array of column indices for multiple column sorting. - - - - - This is the array of currently visible column indices. - - - - - Returns the sum of all the widths of the visible columns in the visibleColumns array. - - - - - Checks if the source state can transfer its serialized data to the destination state. - - State that have serialized data to be transfered to the destination state. - Destination state. - - Returns true if the source state have the same number of columns as the destination state. - - - - - Column state. - - - - - Option to allow/disallow hiding the column from the context menu. - - - - - Option to allow the column to resize automatically when resizing the entire MultiColumnHeader. - - - - - Is sorting enabled for this column. If false, left-clicking this column header has no effect. - - - - - If this is set then it is used for the context menu for toggling visibility, if not set then the ::headerContent is used. - - - - - This is the GUIContent that will be rendered in the column header. - - - - - Alignment of the header content. - - - - - Maximum width of the column. - - - - - Minimum width of the column. - - - - - Value that controls if this column is sorted ascending or descending. - - - - - Alignment of the sorting arrow. - - - - - The width of the column. - - - - - Constructor. - - Column data. - - - - Overwrites the seralized fields from the source state to the destination state. - - State that have serialized data to be transfered to the destination state. - Destination state. - - - - Base class for a compound handle to edit a bounding volume in the Scene view. - - - - - Flags specifying which axes should display control handles. - - - - - Returns or specifies the center of the bounding volume for the handle. - - - - - Returns or specifies the color of the control handles. - - - - - An optional Handles.CapFunction to use when displaying the control handles. Defaults to Handles.DotHandleCap if no value is specified. - - - - - The Handles.SizeFunction to specify how large the midpoint control handles should be. - - - - - Returns or specifies the color of the wireframe shape. - - - - - A flag enumeration for specifying which axes on a PrimitiveBoundsHandle object should be enabled. - - - - - All axes. - - - - - No axes. - - - - - X-axis (bit 0). - - - - - Y-axis (bit 1). - - - - - Z-axis (bit 2). - - - - - Create a new instance of the PrimitiveBoundsHandle class. - - An integer value used to generate consistent control IDs for each control handle on this instance. Avoid using the same value for all of your PrimitiveBoundsHandle instances. - - - - Create a new instance of the PrimitiveBoundsHandle class. - - An integer value used to generate consistent control IDs for each control handle on this instance. Avoid using the same value for all of your PrimitiveBoundsHandle instances. - - - - A Handles.SizeFunction that returns a fixed screen-space size. - - The current position of the handle in the space of Handles.matrix. - - The size to use for a handle at the specified position. - - - - - A function to display this instance in the current handle camera using its current configuration. - - - - - Draw a wireframe shape for this instance. Subclasses must implement this method. - - - - - Gets the current size of the bounding volume for this instance. - - - The current size of the bounding volume for this instance. - - - - - An enumeration of directions the handle moves in. - - - - - This value corresponds to the handle moving in a negative direction away from PrimitiveBoundsHandle.center along the x-axis. - - - - - This value corresponds to the handle moving in a negative direction away from PrimitiveBoundsHandle.center along the y-axis. - - - - - This value corresponds to the handle moving in a negative direction away from PrimitiveBoundsHandle.center along the z-axis. - - - - - This value corresponds to the handle moving in a positive direction away from PrimitiveBoundsHandle.center along the x-axis. - - - - - This value corresponds to the handle moving in a positive direction away from PrimitiveBoundsHandle.center along the y-axis. - - - - - This value corresponds to the handle moving in a positive direction away from PrimitiveBoundsHandle.center along the z-axis. - - - - - Gets a value indicating whether the specified axis is enabled for the current instance. - - An Axes. - An integer corresponding to an axis on a Vector3. For example, 0 is x, 1 is y, and 2 is z. - - true if the specified axis is enabled; otherwise, false. - - - - - Gets a value indicating whether the specified axis is enabled for the current instance. - - An Axes. - An integer corresponding to an axis on a Vector3. For example, 0 is x, 1 is y, and 2 is z. - - true if the specified axis is enabled; otherwise, false. - - - - - A callback for when a control handle was dragged in the Scene. - - The handle that was dragged. - The raw Bounds for this instance's volume at the time the control handle was clicked. - The raw Bounds for this instance's volume based on the updated handle position. - - The bounds that should be applied to this instance, with any necessary modifications applied. - - - - - Sets handleColor and wireframeColor to the same value. - - The color to use for the control handles and the wireframe shape. - - - - Sets the current size of the bounding volume for this instance. - - A Vector3 specifying how large the bounding volume is along all of its axes. - - - - The SearchField control creates a text field for a user to input text that can be used for searching. - - - - - Changes the keyboard focus to the search field when the user presses ‘Ctrl/Cmd + F’ when set to true. It is true by default. - - - - - This event is dispatched when the focused search field detects that the down or up key is pressed and can be used to change keyboard focus to another control, such as the TreeView. - - - - - - This is the controlID used for the text field to obtain keyboard focus. - - - - - This function returns true if the search field has keyboard focus. - - - - - This function displays the search field with the default UI style and uses the GUILayout class to automatically calculate the position and size of the Rect it is rendered to. Pass an optional list to specify extra layout properties. - - Text string to display in the search field. - An optional list of layout options that specify extra layout properties. <br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The text entered in the search field. The original input string is returned instead if the search field text was not changed. - - - - - This function displays the search field with the default UI style in the given Rect. - - Rectangle to use for the search field. - Text string to display in the search field. - - The text entered in the search field. The original input string is returned instead if the search field text was not changed. - - - - - This function displays a search text field with the given Rect and UI style parameters. - - Rectangle to use for the search field. - Text string to display in the search field. - The text field style. - The cancel button style used when there is text in the search field. - The cancel button style used when there is no text in the search field. - - The text entered in the SearchField. The original input string is returned instead if the search field text was not changed. - - - - - This function displays the search field with the toolbar UI style and uses the GUILayout class to automatically calculate the position and size of the Rect it is rendered to. Pass an optional list to specify extra layout properties. - - Text string to display in the search field. - An optional list of layout options that specify extra layout properties. <br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The text entered in the search field. The original input string is returned instead if the search field text was not changed. - - - - - This function displays the search field with a toolbar style in the given Rect. - - Rectangle to use for the search field. - Text string to display in the search field. - - The text entered in the search field. The original input string is returned instead if the search field text was not changed. - - - - - This is a generic callback delegate for SearchField events and does not take any parameters. - - - - - This function changes keyboard focus to the search field so a user can start typing. - - - - - A compound handle to edit a sphere-shaped bounding volume in the Scene view. - - - - - Returns or specifies the radius of the sphere bounding volume. - - - - - Create a new instance of the SphereBoundsHandle class. - - An integer value used to generate consistent control IDs for each control handle on this instance. Avoid using the same value for all of your SphereBoundsHandle instances. - - - - Create a new instance of the SphereBoundsHandle class. - - An integer value used to generate consistent control IDs for each control handle on this instance. Avoid using the same value for all of your SphereBoundsHandle instances. - - - - Draw a wireframe sphere for this instance. - - - - - A callback for when a control handle was dragged in the Scene. - - The handle that was dragged. - The raw Bounds for this instance's volume at the time the control handle was clicked. - The raw Bounds for this instance's volume based on the updated handle position. - - The bounds that should be applied to this instance, with any necessary modifications applied. - - - - - The TreeView is an IMGUI control that lets you create tree views, list views and multi-column tables for Editor tools. - - - - - Indent used for all rows before the tree foldout arrows and content. - - - - - When using a MultiColumnHeader this value adjusts the cell rects provided for all columns except the tree foldout column. - - - - - When using a MultiColumnHeader this value should be set to the column index in which the foldout arrows should appear. - - - - - Custom vertical offset of the foldout arrow. - - - - - Value that returns how far the foldouts are indented for each increasing depth value. - - - - - Value to control the spacing before the default icon and label. Can be used e.g for placing a toggle button to the left of the content. - - - - - Register a callback to this property to override the Foldout button in the TreeView. - - - - - Width of the built-in foldout arrow. - - - - - Register a callback to this field to override how the TreeView handles selection changes in response to keys and mouse clicks. - - - - - The current search state of the TreeView. - - - - - True if the user is currently dragging one or more items in the TreeView, and false otherwise. - - - - - The TreeView is initialized by calling Reload(). Therefore returns false until Reload() is called the first time. - - - - - Get the MultiColumnHeader of the TreeView. Can be null if the TreeView was created without a MultiColumnHeader. - - - - - The hidden root item of the TreeView (it is never rendered). - - - - - The fixed height used for each row in the TreeView if GetCustomRowHeight have not been overridden. - - - - - Current search string of the TreeView. - - - - - Enable this to show alternating row background colors. - - - - - Enable this to show a border around the TreeView. - - - - - Returns true if the horizontal scroll bar is showing, otherwise false. - - - - - Returns true if the vertical scroll bar is showing, otherwise false. - - - - - The state of the TreeView (expanded state, selection, scroll etc.) - - - - - Returns the sum of the TreeView row heights, the MultiColumnHeader height (if used) and the border (if used). - - - - - The controlID used by the TreeView to obtain keyboard control focus. - - - - - The Rect the TreeView is being rendered to. - - - - - When drawing the TreeView contents, will it be enclosed within a ScrollView? - - - - - Adds the expanded rows of the full tree to the input list. Only use this method if a full tree was built in BuildRoot. - - Root of the TreeView. - Rows that will be refilled using the expanded state of TreeView. - - - - This is called after all rows have their RowGUI called. - - - - - This is called before any rows have their RowGUI called. - - - - - Shows the rename overlay for a TreeViewItem. - - Item to rename. - Delay in seconds until the rename overlay shows. - - Returns true if renaming was started. Returns false if renaming was already active. - - - - - Shows the rename overlay for a TreeViewItem. - - Item to rename. - Delay in seconds until the rename overlay shows. - - Returns true if renaming was started. Returns false if renaming was already active. - - - - - Abstract method that is required to be implemented. By default this method should create the full tree of TreeViewItems and return the root. - - - The root of the tree. This item can later be accessed by 'rootItem'. - - - - - Override this method to take control of how the rows are generated. - - Root item that was created in the BuildRoot method. - - The rows list shown in the TreeView. Can later be accessed using GetRows(). - - - - - Override this method to control which items are allowed to be parents. - - Can this item be a parent? - - - - Override this method to control whether an item can be expanded or collapsed by key or mouse. - - Can this item be expanded/collapsed. - - - - Override this method to control whether the item can be part of a multiselection. - - Can this item be part of a multiselection. - - - - Override this method to control whether the item can be renamed using a keyboard shortcut or when clicking an already selected item. - - Can this item be renamed? - - - - This function is called whenever a TreeViewItem is clicked and dragged. It returns false by default. - - - - - - Method arguments for the CanStartDrag virtual method. - - - - - Item about to be dragged. - - - - - The multi-selection about to be dragged. - - - - - Modifies the input rect so it is centered and have a height equal to EditorGUIUtility.singleLineHeight. - - Rect to be modified and centered. - - - - Collapse all expanded items in the TreeView. - - - - - This function is called automatically and handles the ExecuteCommand events for “SelectAll” and “FrameSelection”. Override this function to extend or avoid Command events. - - - - - Override this method to handle context clicks outside any items (but still in the TreeView rect). - - - - - Override this method to handle a context click on an item with ID TreeViewItem.id. - - TreeViewItem id. - - - - Creates a dummy TreeViewItem list. Useful when overriding BuildRows to prevent building a full tree of items. - - - - - The TreeView is always constructed with a state object and optionally a multi-column header object if a header is needed. - - TreeView state (expanded items, selection etc.) - Multi-column header for the TreeView. - - - - The TreeView is always constructed with a state object and optionally a multi-column header object if a header is needed. - - TreeView state (expanded items, selection etc.) - Multi-column header for the TreeView. - - - - Default GUI methods and properties for the TreeView class. - - - - - Draws a bold label that have correct text color when selected and/or focused. - - Rect to render the text in. - Label to render. - Selected state used for determining text color. - Focused state used for determining text color. - - - - Draws a bold right aligned label that have correct text color when selected and/or focused. - - Rect to render the text in. - Label to render. - Selected state used for determining text color. - Focused state used for determining text color. - - - - Draws a foldout label that have correct text color when selected and/or focused. - - Rect to render the text in. - Label to render. - Selected state used for determining text color. - Focused state used for determining text color. - - - - Draws a label that have correct text color when selected and/or focused. - - Rect to render the text in. - Label to render. - Selected state used for determining text color. - Focused state used for determining text color. - - - - Draws a right aligned label that have correct text color when selected and/or focused. - - Rect to render the text in. - Label to render. - Selected state used for determining text color. - Focused state used for determining text color. - - - - Default styles used by the TreeView class. - - - - - Background style used for alternating row background colors when enabling TreeView.showAlternatingRowBackgrounds. - - - - - Background style used for alternating row background colors when enabling TreeView.showAlternatingRowBackgrounds. - - - - - Bold label with alternative text color when selected and/or focused. - - - - - Right aligned bold label with alternative text color when selected and/or focused. - - - - - The label that is used for foldout label with alternative text color when selected and/or focused. - - - - - Left aligned label with alternative text color when selected and/or focused. - - - - - Right aligend label with alternative text color when selected and/or focused. - - - - - Override this function to extend or change the search behavior. - - Item used for matching against the search string. - The search string of the TreeView. - - True if item matches search string, otherwise false. - - - - - Callback signature used to override the TreeView foldout. See foldoutOverride. - - Rect to draw the foldout. - Current foldout state. - Toggle button style. - - Returns true if the foldout is still expanded. Otherwise, returns false. - - - - - Override this method to handle double click events on an item. - - ID of TreeViewItem that was double clicked. - - - - Method arguments for the HandleDragAndDrop virtual method. - - - - - When dragging items the current drag can have the following 3 positions relative to the items: Upon an item, Between two items or Outside items. - - - - - This index refers to the index in the children list of the parentItem where the current drag is positioned. - - - - - The parent item is set if the drag is either upon this item or between two of its children. - - - - - This value is false as long as the mouse button is down, when the mouse button is released it is true. - - - - - Enum describing the possible positions a drag can have relative to the items: upon a item, between two items or outside items. - - - - - This value is used when dragging between two items. - - - - - This value is used when dragging outside all items. - - - - - This value is used when the drag is upon a item. - - - - - Ends renaming if the rename overlay is shown. If called while the rename overlay is not being shown, this method does nothing. - - - - - Expand all collapsed items in the TreeView. - - - - - Override to get notified when items are expanded or collapsed. This is a general notification that the expanded state has changed. - - - - - Finds a TreeViewItem by an ID. - - Find the TreeViewItem with this ID. - Sets the search to start from an item. Use 'rootItem' to search the entire tree. - - This search method returns the TreeViewItem found and returns null if not found. - - - - - Useful for converting from TreeViewItem IDs to TreeViewItems using the current rows. - - TreeViewItem IDs. - - TreeViewItems. - - - - - This will reveal the item with ID id (by expanding the ancestors of that item) and will make sure it is visible in the ScrollView. - - TreeViewItem ID. - - - - This method is e.g. used for revealing items that are currently under a collapsed item. - - TreeViewItem ID. - - List of all the ancestors of a given item with ID id. - - - - - Utility for multi column setups. This method will clip the input rowRect against the column rect defined by columnIndexForTreeFoldouts to get the cell rect where the the foldout arrows appear. - - Rect for a row. - - Cell rect in a multi column setup. - - - - - Returns the horizontal content offset for an item. This is where the content should begin (after the foldout arrow). - - Item used to determine the indent. - - Indent. - - - - - Override to control individual row heights. - - Row index. - Item for given row. - - Height of row. - - - - - Returns all descendants for the item with ID id that have children. - - TreeViewItem ID. - - Descendants that have children. - - - - - Returns a list of TreeViewItem IDs that are currently expanded in the TreeView. - - - TreeViewItem IDs. - - - - - Returns the first and the last indices of the rows that are visible in the scroll view of the TreeView. - - First row visible. - Last row visible. - - - - Returns the horizontal foldout offset for an item. This is where the foldout arrow is rendered. - - Item used to determine the indent. - - Indent for the foldout arrow. - - - - - A callback which determines how TreeView handles selection changes in response to keys and mouse clicks. - - The item clicked, or selected via keyboard. - Should existing selection be kept? This is used to support dragging or right-clicking one item in a multi-selection. - Should the action key be treated like the shift key? If so, the action key also indicates a range selection. - - - - - Override this method if custom GUI handling are used in RowGUI. This method for controls where the rename overlay appears. - - Row rect for the item currently being renamed. - Row index for the item currently being renamed. - TreeViewItem that are currently being renamed. - - The rect where the rename overlay should appear. - - - - - Get the rect for a row. - - Row index. - - Row rect. - - - - - This is the list of TreeViewItems that have been built in BuildRows. - - - Rows. - - - - - Returns the list of TreeViewItem IDs that are currently selected. - - - - - Override this function to control the drag and drop behavior of the TreeView. - - Drag and drop arguments. - - - - Returns true if the TreeView and its EditorWindow have keyboard focus. - - - - - Returns true if the TreeView has a selection. - - - - - Utility method for checking if the childList is identical to the one returned by the CreateChildListForCollapsedParent method. - - Children list of a TreeViewItem. - - - - Returns true if the TreeViewItem with ID id is currently expanded. - - TreeViewItem ID. - - - - Returns true if the TreeViewItem with ID id is currently selected. - - TreeViewItem ID. - - - - Override this method to handle events when the TreeView has keyboard focus. - - - - - This is the main GUI method of the TreeView, where the TreeViewItems are processed and drawn. - - Rect where the TreeView is rendered. - - - - Refreshes the cache of custom row rects based on the heights returned by GetCustomRowHeight. - - - - - Call this to force the TreeView to reload its data. This in turn causes BuildRoot and BuildRows to be called. - - - - - Called when rename ends either by the user completing the renaming process, when the rename overlay loses focus or is closed using EndRename. - - - - - - Method arguments for the virtual method RenameEnded. - - - - - Is true if the rename is accepted. - - - - - Item with ID that are being renamed. - - - - - Name entered in the rename overlay. - - - - - The original name when starting the rename. - - - - - Request a repaint of the window that the TreeView is rendered in. - - - - - Override this method to add custom GUI content for the rows in the TreeView. - - Row data. - - - - Method arguments for the virtual method RowGUI. - - - - - This value is true only when the TreeView has keyboard focus and the TreeView's window has focus. - - - - - This value is true when the ::item is currently being renamed. - - - - - Item for the current row being handled in TreeView.RowGUI. - - - - - Label used for text rendering of the item displayName. Note this is an empty string when isRenaming == true. - - - - - Row index into the list of current rows. - - - - - Row rect for the current row being handled. - - - - - This value is true when the current row's item is part of the current selection. - - - - - If using a MultiColumnHeader for the TreeView this method can be used to get the cell rects of a row using the visible columns of the MultiColumnHeader. - - Index into the list of visible columns of the multi column header. - - Cell rect defined by the intersection between the row rect and the rect of the visible column. - - - - - If using a MultiColumnHeader for the TreeView this method can be used to convert an index from the visible columns list to a index into the actual columns in the MultiColumnHeaderState. - - This index is the index into the current visible columns. - - Column index into the columns array in MultiColumnHeaderState. - - - - - If using a MultiColumnHeader for the TreeView use this method to get the number of visible columns currently being shown in the MultiColumnHeader. - - - - - Override the method to get notified of search string changes. - - - - - - Selects all rows in the TreeView. - - - - - Override the method to get notified of selection changes. - - TreeViewItem IDs. - - - - Use this method in RowGUI to peform the logic of a mouse click. - - TreeViewItem clicked. - If true then keeps the multiselection when clicking on a item already part of the selection. If false then clears the selection before selecting the item clicked. For left button clicks this is usually false. For context clicks it is usually true so a context opereration can operate on the multiselection. - - - - Set a single TreeViewItem to be expanded or collapsed. - - TreeViewItem ID. - True expands item. False collapses item. - - True if item changed expanded state, false if item already had the expanded state. - - - - - Set the current expanded TreeViewItems of the TreeView. This will overwrite the previous expanded state. - - List of item IDs that should be expanded. - - - - Expand or collapse all items under item with id. - - TreeViewItem ID. - Expanded state: true expands, false collapses. - - - - Calling this function changes the keyboard focus to the TreeView. - - - - - Calling this function changes the keyboard focus to the TreeView and ensures an item is selected. Use this function to enable key navigation of the TreeView. - - - - - Set the selected items of the TreeView. - - TreeViewItem IDs. - Options for extra logic performed after the selection. See TreeViewSelectionOptions. - - - - Set the selected items of the TreeView. - - TreeViewItem IDs. - Options for extra logic performed after the selection. See TreeViewSelectionOptions. - - - - Utility method using the depth of the input TreeViewItem to set the correct depths for all its descendant TreeViewItems. - - TreeViewItem from which the descendentans should have their depth updated. - - - - This function is called when CanStartDrag returns true. - - - - - - Method arguments to the virtual method SetupDragAndDrop. - - - - - TreeViewItem IDs being dragged. - - - - - Utility method for initializing all the parent and children properties of the rows using the order and the depths values that have been set. - - The hidden root item. - TreeViewItems where only the depth property have been set. - - - - Override this method to handle single click events on an item. - - ID of TreeViewItem that was single clicked. - - - - Returns a list sorted in the order in which they are shown in the TreeView. - - TreeViewItem IDs. - - - - The TreeViewItem is used to build the tree representation of a tree data structure. - - - - - The list of child items of this TreeViewItem. - - - - - The depth refers to how many ancestors this item has, and corresponds to the number of horizontal ‘indents’ this item has. - - - - - Name shown for this item when rendered. - - - - - Returns true if children has any items. - - - - - If set, this icon will be rendered to the left of the displayName. The icon is rendered at 16x16 points by default. - - - - - Unique ID for an item. - - - - - The parent of this TreeViewItem. If it is null then it is considered the root of the TreeViewItem tree. - - - - - Helper method that adds the child TreeViewItem to the children list and sets the parent property on the child. - - TreeViewItem to be added to the children list. - - - - TreeViewItem constructor. - - Unique ID to identify this TreeViewItem with among all TreeViewItems of the TreeView. See Also id. - Depth of this TreeViewItem. See Also depth. - Rendered name of this TreeViewItem. See Also displayName. - - - - TreeViewItem constructor. - - Unique ID to identify this TreeViewItem with among all TreeViewItems of the TreeView. See Also id. - Depth of this TreeViewItem. See Also depth. - Rendered name of this TreeViewItem. See Also displayName. - - - - TreeViewItem constructor. - - Unique ID to identify this TreeViewItem with among all TreeViewItems of the TreeView. See Also id. - Depth of this TreeViewItem. See Also depth. - Rendered name of this TreeViewItem. See Also displayName. - - - - Enum used by the TreeView.SetSelection method. - - - - - If this flag is passed to TreeView.SetSelection then the TreeView will call the its TreeView.SelectionChanged method. - - - - - If this flag is passed to TreeView.SetSelection no extra logic is be performed after setting selection. - - - - - If this flag is passed to TreeView.SetSelection then the TreeView will make sure the last item in the input selection list is visible on screen. - - - - - The TreeViewState contains serializable state information for the TreeView. - - - - - This is the list of currently expanded TreeViewItem IDs. - - - - - The ID for the TreeViewItem that currently is being used for multi selection and key navigation. - - - - - The current scroll values of the TreeView's scroll view. - - - - - Search string state that can be used in the TreeView to filter the tree data when creating the TreeViewItems. - - - - - Selected TreeViewItem IDs. Use of the SetSelection and IsSelected API will access this state. - - - - - Asset importing options. - - - - - Default import options. - - - - - Force a full reimport but don't download the assets from the cache server. - - - - - Import all assets synchronously. - - - - - Forces asset import as uncompressed for edition facilities. - - - - - User initiated asset import. - - - - - When a folder is imported, import all its contents as well. - - - - - Allow an editor class to be initialized when Unity loads without action from the user. - - - - - Allow an editor class method to be initialized when Unity loads without action from the user. - - - - - The mode of interaction, user or automated, that an API method is called with. - - - - - Use this setting to prevent a method from showing any dialog boxes to the user, and to prevent it recording to the undo history. - - - - - Use this setting to allow a method to show dialog boxes to the user, and to allow it to record to the undo history. - - - - - Application behavior when entering background. - - - - - Custom background behavior, see iOSBackgroundMode for specific background modes. - - - - - Application should exit when entering background. - - - - - Application should suspend execution when entering background. - - - - - Background modes supported by the application corresponding to project settings in Xcode. - - - - - Audio, AirPlay and Picture in Picture. - - - - - Uses Bluetooth LE accessories. - - - - - Acts as a Bluetooth LE accessory. - - - - - External accessory communication. - - - - - Background fetch. - - - - - Location updates. - - - - - Newsstand downloads. - - - - - No background modes supported. - - - - - Remote notifications. - - - - - Voice over IP. - - - - - Build configurations for the generated Xcode project. - - - - - Build configuration set to Debug for the generated Xcode project. - - - - - Build configuration set to Release for the generated Xcode project with optimization enabled. - - - - - A device requirement description used for configuration of App Slicing. - - - - - The values of the device requirement description. - - - - - Constructs new device requirement description. - - - - - iOS launch screen settings. - - - - - Launch screen image on the iPad. - - - - - Landscape oriented launch screen image on the iPhone. - - - - - Portrait oriented launch screen image on the iPhone. - - - - - iOS launch screen settings. - - - - - Use a specified custom Interface Builder (.xib) file in Player Settings. - - - - - Use the default launch screen (dark blue background). - - - - - Use a custom launch screen image specified in the iOS Player Settings or with PlayerSettings.iOS.SetLaunchScreenImage and use its original dimensions. - - - - - Use a custom launch screen image specified in the iOS Player Settings or with PlayerSettings.iOS.SetLaunchScreenImage which will be scaled across the entire screen. - - - - - Generate the Xcode project without any custom launch screens. - - - - - Supported iOS SDK versions. - - - - - Device SDK. - - - - - Simulator SDK. - - - - - Activity Indicator on loading. - - - - - Don't Show. - - - - - Gray. - - - - - White. - - - - - White Large. - - - - - iOS status bar style. - - - - - Default. - - - - - A light status bar, intended for use on dark backgrounds. - - - - - Target iOS device. - - - - - iPad Only. - - - - - Universal : iPhone/iPod + iPad. - - - - - iPhone/iPod Only. - - - - - Supported iOS deployment versions. - - - - - iOS 4.0. - - - - - iOS 4.1. - - - - - iOS 4.2. - - - - - iOS 4.3. - - - - - iOS 5.0. - - - - - iOS 5.1. - - - - - iOS 6.0. - - - - - iOS 7.0. - - - - - iOS 7.1. - - - - - iOS 8.0. - - - - - iOS 8.1. - - - - - Unknown iOS version, managed by user. - - - - - Provides an interface to display a custom TerrainLayer UI in the Terrain Layers inspector. - - - - - Draws the custom GUI for the terrain layer. - - The TerrainLayer object. - The Terrain object on which the TerrainLayer object, specified by the terrainLayer parameter, is selected. - - Return false to have Unity draw the default TerrainLayer inspector. Otherwise draw the custom GUI and return true. - - - - - The class used to render the Light Editor when a Light is selected in the Unity Editor. - - - - - The settings helper that can be used for rendering a custom LightEditor. - - - - - See ScriptableObject.OnDestroy. - - - - - See ScriptableObject.OnEnable. - - - - - See Editor.OnInspectorGUI. - - - - - See Editor.OnSceneGUI. - - - - - Contains all drawable elements of the LightEditor. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - The light cookie texture used by the light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Is the current light an area light or not. Area lights include Rectangle and Disc lights. - - - - - Is the current light baked or mixed. - - - - - Is the light completely baked. - - - - - Is the current light mixed. - - - - - Is the light realtime? - - - - - The light being inspected. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - Exposed SerializedProperty for the inspected Light. - - - - - See SerializedObject.ApplyModifiedProperties. - - - - - Draws the default [[LightEditor] area widget. - - - - - Draws the default [[LightEditor] baked shadow angle widget. - - - - - Draws the default [[LightEditor] baked shadow radius widget. - - - - - Draws the default [[LightEditor] bounce intensity widget. - - - - - Draws the default [[LightEditor] color widget. - - - - - Draws the default [[LightEditor] cookie widget. - - - - - Draws the default [[LightEditor] cookie size widget. - - - - - Draws the default [[LightEditor] culling mask widget. - - - - - Draws the default [[LightEditor] flare widget. - - - - - Draws the default [[LightEditor] halo widget. - - - - - Draws the default [[LightEditor] intensity widget. - - - - - Draws the default [[LightEditor] lightmapping widget. - - - - - Draws the default [[LightEditor] light type widget. - - - - - Draws the default [[LightEditor] range widget. - - - - - - Draws the default [[LightEditor] render mode widget. - - - - - Draws the default [[LightEditor] runtime shadows widget. - - - - - Draws the default [[LightEditor] shadows type widget. - - - - - Draws the default [[LightEditor] spot angle widget. - - - - - Cleanup internal settings state. - - - - - Populate the settings from the referenced SerializedObject. - - - - - See SerializedObject.Update. - - - - - The lighting data asset used by the active Scene. - - - - - An attribute to mark an extension class for the Lighting Explorer. Supports only one per render pipeline. - - - - - Constructor. - - - - - - Create custom tabs for the Lighting Explorer. - - - - - Constructor. - - The title of the tab. - The objects that the tab must contain. - How the columns should look and behave. - - - - This is used when defining how a column should look and behave in the Lighting Explorer. - - - - - A delegate for comparison of properties for sorting. - - - - - - - A delegate for copying of properties. - - - - - - - Constructor. - - Depending on what LightingExplorer.DataType we use, built-in compare and draw methods will be used. If you want to fully overload this, use LightingExplorer.DataType.Custom. - Title for the column header. - Name of the property on the object you wish to use. If you use LightingExplorer.DataType.Name, choose ‘null’. - Width of the column. The minimum width is this value divided by 2. The default value is 100. - If you want to draw a property differently than the default, provide this delegate. If you use LightingExprlorer.DataType.Custom, you must override this. - If you want to sort properties differently than the default way, provide this delegate. If you use LightingExplorer.DataType.Custom, you must override this. - If you want to copy properties differently than the default way, provide this delegate. - If you depend on another Serialized property than the one in your column, use this field to specify which indices to include. The first column is index 0. - - - - Draws a checkbox, and handles comparison for sorting. - - - - - Draws a color box, and handles comparison for sorting. - - - - - No drawing or comparison for sorting. Please use the delegates in the constructor to override these. - - - - - Draws an enum field, and handles comparison for sorting. - - - - - Draws a float field, and handles comparison for sorting. - - - - - Draws an int field, and handles comparison for sorting. - - - - - Draws a name field, and handles comparison for sorting. Also implements a search field for filtering the rows. - - - - - A delegate for how to draw the property. - - The current rect for where it will be drawn in the TableView. - The property that is specified using ‘propertyName’ in the constructor. - An array of properties specified by using ‘dependencyIndicies’ in the constructor. - - - - Bake quality setting for LightmapEditorSettings. - - - - - High quality bake for final renderings. - - - - - Low quality bake for preview renderings. - - - - - Various settings for the bake. - - - - - Ambient occlusion (AO) for direct lighting. - - - - - Ambient occlusion (AO) for indirect lighting. - - - - - Beyond this distance a ray is considered to be unoccluded. - - - - - Specifies the resolution of the Baked lightmap in texels per world unit. Specifying higher resolutions can significantly increase the time it takes to bake the lightmap. The default value is one texel per world unit. The minimum value is 0.0001. - - - - - Specifies the maximum number of bounces the lightmapper computes for indirect light. The default value is one. The range is 0 to 4. - - - - - Specifies the number of samples the Progressive lightmapper uses for direct lighting calculations. The default value is 32. The minimum value is 1. - - - - - Enable baked ambient occlusion (AO). - - - - - Specifies the threshold the Progressive lightmapper uses to filter ambient occlusion stored in the lightmap when using A-Trous filter. The default value is 1. The value range is 0 to 2. - - - - - Specifies the threshold the Progressive lightmapper uses to filter direct light stored in the lightmap when using A-Trous filter. The default value is 0.5. The value range is 0 to 2. - - - - - Specifies the threshold the Progressive lightmapper uses to filter indirect light stored in the lightmap when using A-Trous filter. The default value is 2. The value range is 0 to 2. - - - - - Specifies the radius the Progressive lightmapper uses to filter for ambient occlusion in the lightmap when using Gaussian filter. The default value is 2. The value range is 0 to 5. - - - - - Specifies the radius the Progressive lightmapper uses to filter for direct light stored in the lightmap when using Gaussian filter. The default value is one. The value range is 0 to 5. - - - - - Specifies the radius the Progressive lightmapper used to filter for indirect light stored in the lightmap when using Gaussian filter. The default value is 5. The value range is 0 to 5. - - - - - Specifies the method used by the Progressive lightmapper to reduce noise in baked lightmaps. - - - - - Configure a filter kernel for the ambient occlusion target. - - - - - Configure a filter kernel for the direct light target. - - - - - Configure a filter kernel for the indirect light target. - - - - - Determines the filtering kernel for the Progressive Lightmapper. - - - - - Specifies the number of samples the Progressive lightmapper uses for indirect lighting calculations. The default value is 500. The minimum value is 10. - - - - - Determines which backend to use for baking lightmaps. - - - - - NonDirectional or CombinedDirectional lightmaps rendering mode. - - - - - This property is now obsolete. Use maxAtlasSize instead. - - - - - The maximum size of an individual lightmap texture. - - - - - This property is now obsolete. Use maxAtlasSize instead. - - - - - Indicates the Mixed mode that is used to bake the LightmapBakeType.Mixed lights, irrelevant for realtime and baked lights. - - - - - Texel separation between shapes. - - - - - Specifies whether the Progressive lightmapper should prioritize baking texels within the Scene view. The default value is true. - - - - - Lightmap resolution in texels per world unit. Defines the resolution of Realtime GI if enabled. If Baked GI is enabled, this defines the resolution used for indirect lighting. Higher resolution may take a long time to bake. - - - - - Determines how Unity will compress baked reflection cubemap. - - - - - Determines which sampling strategy to use for baking lightmaps with the Progressive Lightmapper. - - - - - Whether to use texture compression on the generated lightmaps. - - - - - The available filtering modes for the Progressive Lightmapper. - - - - - Enables the advanced filtering mode for the Progressive Lightmapper. - - - - - The filtering is configured automatically. - - - - - Turn filtering off. - - - - - The available filter kernels for the Progressive Lightmapper. - - - - - Use an A-Trous filter for a GI texture. - - - - - Use a Gaussian filter for a GI texture. - - - - - Do not filter GI texture. - - - - - Backends available for baking lighting. - - - - - Backend for baking lighting with the Enlighten radiosity middleware. - - - - - Backend for baking lighting using the CPU. Uses a progressive path tracing algorithm. - - - - - Backend for baking lighting using the GPU. Uses a progressive path tracing algorithm. - - - - - Available sampling strategies for baking lightmaps with the Progressive Lightmapper. - - - - - Auto will automatically select the sampling settings. - - - - - Fixed sampling uses a fixed number of samples per texel. This can be used when the other strategies fail to use enough samples in some areas. It will typically be slow. - - - - - A collection of parameters that impact lightmap and realtime GI computations. - - - - - The maximum number of times to supersample a texel to reduce aliasing. - - - - - The percentage of rays shot from a ray origin that must hit front faces to be considered usable. - - - - - BakedLightmapTag is an integer that affects the assignment to baked lightmaps. Objects with different values for bakedLightmapTag are guaranteed to not be assigned to the same lightmap even if the other baking parameters are the same. - - - - - The radius (in texels) of the post-processing filter that blurs baked direct lighting. - - - - - Controls the resolution at which Enlighten stores and can transfer input light. - - - - - The number of rays used for lights with an area. Allows for accurate soft shadowing. - - - - - The amount of data used for realtime GI texels. Specifies how detailed view of the Scene a texel has. Small values mean more averaged out lighting. - - - - - The number of rays to cast for computing irradiance form factors. - - - - - If enabled, the object appears transparent during GlobalIllumination lighting calculations. - - - - - Maximum size of gaps that can be ignored for GI (multiplier on pixel size). - - - - - The texel resolution per meter used for realtime lightmaps. This value is multiplied by LightmapEditorSettings.resolution. - - - - - Whether pairs of edges should be stitched together. - - - - - System tag is an integer identifier. It lets you force an object into a different Enlighten system even though all the other parameters are the same. - - - - - The maximum number of times to supersample a texel to reduce aliasing in AO. - - - - - The number of rays to cast for computing ambient occlusion. - - - - - Allows to control the lightmapping job. - - - - - Is baked GI enabled? - - - - - Boost the albedo. - - - - - Returns the current lightmapping build progress or 0 if Lightmapping.isRunning is false. - - - - - Delegate which is called when bake job is completed. - - - - - The lightmap baking workflow mode used. Iterative mode is default, but you can switch to on demand mode which bakes only when the user presses the bake button. - - - - - Scale for indirect lighting. - - - - - Returns true when the bake job is running, false otherwise (Read Only). - - - - - The lighting data asset used by the active Scene. - - - - - Is realtime GI enabled? - - - - - Delegate which is called when bake job is started. - - - - - - Starts a synchronous bake job. - - - - - Starts an asynchronous bake job. - - - - - Starts a synchronous bake job, but only bakes light probes. - - - - - Starts an asynchronous bake job, but only bakes light probes. - - - - - Bakes an array of Scenes. - - The path of the Scenes that should be baked. - - - - Starts a synchronous bake job for the probe. - - Target probe. - The location where cubemap will be saved. - - Returns true if baking was succesful. - - - - - Starts a synchronous bake job for the selected objects. - - - - - Starts an asynchronous bake job for the selected objects. - - - - - Cancels the currently running asynchronous bake job. - - - - - Deletes all lightmap assets and makes all lights behave as if they weren't baked yet. - - - - - Clears the cache used by lightmaps, reflection probes and default reflection. - - - - - Remove the lighting data asset used by the current Scene. - - - - - Force the Progressive Path Tracer to stop baking and use the computed results as they are. - - - - - Get how many chunks the terrain is divided into for GI baking. - - The terrain. - Number of chunks in terrain width. - Number of chunks in terrain length. - - - - Workflow mode for lightmap baking. Default is Iterative. - - - - - Always run lightmapping, changes to the Scene are detected automatically. - - - - - Deprecated 4.x lightmapping support. - - - - - Run lightmapping only when the user presses the bake button. - - - - - Delegate used by Lightmapping.completed callback. - - - - - Delegate used by Lightmapping.started callback. - - - - - Calculates a Delaunay Tetrahedralization of the 'positions' point set - the same way the lightmapper. - - - - - - - - LOD Utility Helpers. - - - - - Recalculate the bounding region for the given LODGroup. - - - - - - Mac fullscreen mode. - - - - - Fullscreen window. - - - - - Fullscreen window with Dock and Menu bar. - - - - - Defines how aggressively Unity strips unused managed (C#) code. - - - - - Do not strip any code. - - - - - UnityLinker will strip as much as possible. This will further reduce code size beyond what Medium can achieve. However, this additional reduction may come with tradeoffs. Possible side effects may include, managed code debugging of some methods may no longer work. You may need to maintain a custom link.xml file, and some reflection code paths may not behave the same. - - - - - Remove unreachable managed code to reduce build size and Mono/IL2CPP build times. - - - - - Run UnityLinker in a less conservative mode than Low. This will further reduce code size beyond what Low can achieve. However, this additional reduction may come with tradeoffs. Possible side effects may include, having to maintain a custom link.xml file, and some reflection code paths may not behave the same. - - - - - The Unity Material Editor. - - - - - Is the current material expanded. - - - - - Useful for indenting shader properties that need the same indent as mini texture field. - - - - - Apply initial MaterialPropertyDrawer values. - - - - - - - Apply initial MaterialPropertyDrawer values. - - - - - - - Called when the Editor is woken up. - - - - - Creates a Property wrapper, useful for making regular GUI controls work with MaterialProperty. - - Rectangle on the screen to use for the control, including label if applicable. - The MaterialProperty to use for the control. - - - - Creates a Property wrapper, useful for making regular GUI controls work with MaterialProperty. - - Rectangle on the screen to use for the control, including label if applicable. - The MaterialProperty to use for the control. - - - - Draw a property field for a color shader property. - - Label for the property. - - - - - - Draw a property field for a color shader property. - - Label for the property. - - - - - - Default handling of preview area for materials. - - - - - - - Default toolbar for material preview area. - - - - - Handles UI for one shader property ignoring any custom drawers. - - - - - - - - Handles UI for one shader property ignoring any custom drawers. - - - - - - - - Display UI for editing a material's Double Sided Global Illumination setting. -Returns true if the UI is indeed displayed i.e. the material supports the Double Sided Global Illumination setting. -+See Also: Material.doubleSidedGI. - - - True if the UI is displayed, false otherwise. - - - - - This function will draw the UI for controlling whether emission is enabled or not on a material. - - - Returns true if enabled, or false if disabled or mixed due to multi-editing. - - - - - Display UI for editing material's render queue setting. - - - - - Display UI for editing material's render queue setting within the specified rect. - - - - - - Ends a Property wrapper started with BeginAnimatedCheck. - - - - - Returns a properly set global illlumination flag based on the passed in flag and the given color. - - Emission color. - Current global illumination flag. - - The fixed up flag. - - - - - Properly sets up the globalIllumination flag on the given Material depending on the current flag's state and the material's emission property. - - The material to be fixed up. - - - - Draw a property field for a float shader property. - - Label for the property. - - - - - - Draw a property field for a float shader property. - - Label for the property. - - - - - - Calculate height needed for the property, ignoring custom drawers. - - - - - - Utility method for GUI layouting ShaderGUI. Used e.g for the rect after a left aligned Color field. - - Field Rect. - - A sub rect of the input Rect. - - - - - Utility method for GUI layouting ShaderGUI. - - Field Rect. - - A sub rect of the input Rect. - - - - - Utility method for GUI layouting ShaderGUI. - - Field Rect. - - A sub rect of the input Rect. - - - - - Get shader property information of the passed materials. - - - - - - Get information about a single shader property. - - Selected materials. - Property name. - Property index. - - - - Get information about a single shader property. - - Selected materials. - Property name. - Property index. - - - - Calculate height needed for the property. - - - - - - - Calculate height needed for the property. - - - - - - - Utility method for GUI layouting ShaderGUI. This is the rect after the label which can be used for multiple properties. The input rect can be fetched by calling: EditorGUILayout.GetControlRect. - - Line Rect. - - A sub rect of the input Rect. - - - - - Utility method for GUI layouting ShaderGUI. - - Field Rect. - - A sub rect of the input Rect. - - - - - Get the value of a given texture offset for a given texture property. - - Name of the texture property that you wish to examine the offset of. - Does the x offset have multiple values? - Does the y offset have multiple values? - - - - Returns the free rect below the label and before the large thumb object field. Is used for e.g. tiling and offset properties. - - The total rect of the texture property. - - - - Get the value of a given texture scale for a given texture property. - - Name of the texture property that you wish to examine the scale of. - Does the x scale have multiple values? - Does the y scale have multiple values? - - - - Can this component be Previewed in its current state? - - - True if this component can be Previewed in its current state. - - - - - Make a help box with a message and button. Returns true, if button was pressed. - - The message text. - The button text. - - Returns true, if button was pressed. - - - - - Determines whether the Enable Instancing checkbox is checked. - - - Returns true if Enable Instancing checkbox is checked. - - - - - Draws the UI for setting the global illumination flag of a material. - - Level of indentation for the property. - True if emission is enabled for the material, false otherwise. - - - - This function will draw the UI for the lightmap emission property. (None, Realtime, baked) - -See Also: MaterialLightmapFlags. - - - - - This function will draw the UI for the lightmap emission property. (None, Realtime, baked) - -See Also: MaterialLightmapFlags. - - - - - This function will draw the UI for the lightmap emission property. (None, Realtime, baked) - -See Also: MaterialLightmapFlags. - - - - - Called when the editor is disabled, if overridden please call the base OnDisable() to ensure that the material inspector is set up properly. - - - - - Called when the editor is enabled, if overridden please call the base OnEnable() to ensure that the material inspector is set up properly. - - - - - Implement specific MaterialEditor GUI code here. If you want to simply extend the existing editor call the base OnInspectorGUI () before doing any custom GUI code. - - - - - Custom preview for Image component. - - Rectangle in which to draw the preview. - Background image. - - - - A callback that is invoked when a Material's Shader is changed in the Inspector. - - - - - Whenever a material property is changed call this function. This will rebuild the inspector and validate the properties. - - - - - Default rendering of shader properties. - - Array of material properties. - - - - Render the standard material properties. This method will either render properties using a IShaderGUI instance if found otherwise it uses PropertiesDefaultGUI. - - - Returns true if any value was changed. - - - - - Draw a range slider for a range shader property. - - Label for the property. - The property to edit. - Position and size of the range slider control. - - - - Draw a range slider for a range shader property. - - Label for the property. - The property to edit. - Position and size of the range slider control. - - - - Call this when you change a material property. It will add an undo for the action. - - Undo Label. - - - - Display UI for editing material's render queue setting. - - - - - - Display UI for editing material's render queue setting. - - - - - - Does this edit require to be repainted constantly in its current state? - - - - - Set EditorGUIUtility.fieldWidth and labelWidth to the default values that PropertiesGUI uses. - - - - - Set the shader of the material. - - Shader to set. - Should undo be registered. - - - - - Set the shader of the material. - - Shader to set. - Should undo be registered. - - - - - Set the offset of a given texture property. - - Name of the texture property that you wish to modify the offset of. - Scale to set. - Set the x or y component of the offset (0 for x, 1 for y). - - - - Set the scale of a given texture property. - - Name of the texture property that you wish to modify the scale of. - Scale to set. - Set the x or y component of the scale (0 for x, 1 for y). - - - - Handes UI for one shader property. - - - - - - - - Handes UI for one shader property. - - - - - - - - Checks if particular property has incorrect type of texture specified by the material, displays appropriate warning and suggests the user to automatically fix the problem. - - The texture property to check and display warning for, if necessary. - - - - Draw a property field for a texture shader property. - - Label for the field. - Draw scale / offset. - - - - - - - Draw a property field for a texture shader property. - - Label for the field. - Draw scale / offset. - - - - - - - Draw a property field for a texture shader property. - - Label for the field. - Draw scale / offset. - - - - - - - Draw a property field for a texture shader property. - - Label for the field. - Draw scale / offset. - - - - - - - Draw a property field for a texture shader property. - - Label for the field. - Draw scale / offset. - - - - - - - Draw a property field for a texture shader property that only takes up a single line height. - - Rect that this control should be rendered in. - Label for the field. - - - - Returns total height used by this control. - - - - - Method for showing a texture property control with additional inlined properites. - - The label used for the texture property. - The texture property. - First optional property inlined after the texture property. - Second optional property inlined after the extraProperty1. - - Returns the Rect used. - - - - - Method for showing a texture property control with additional inlined properites. - - The label used for the texture property. - The texture property. - First optional property inlined after the texture property. - Second optional property inlined after the extraProperty1. - - Returns the Rect used. - - - - - Method for showing a texture property control with additional inlined properites. - - The label used for the texture property. - The texture property. - First optional property inlined after the texture property. - Second optional property inlined after the extraProperty1. - - Returns the Rect used. - - - - - Method for showing a compact layout of properties. - - The label used for the texture property. - The texture property. - First extra property inlined after the texture property. - Label for the second extra property (on a new line and indented). - Second property on a new line below the texture. - - Returns the Rect used. - - - - - Method for showing a texture property control with a HDR color field and its color brightness float field. - - The label used for the texture property. - The texture property. - The color property (will be treated as a HDR color). - If false then the alpha channel information will be hidden in the GUI. - - - Return the Rect used. - - - - - Method for showing a texture property control with a HDR color field and its color brightness float field. - - The label used for the texture property. - The texture property. - The color property (will be treated as a HDR color). - If false then the alpha channel information will be hidden in the GUI. - - - Return the Rect used. - - - - - Draws tiling and offset properties for a texture. - - Rect to draw this control in. - Property to draw. - If this control should be rendered under large texture property control use 'true'. If this control should be shown seperately use 'false'. - - - - Draws tiling and offset properties for a texture. - - Rect to draw this control in. - Property to draw. - If this control should be rendered under large texture property control use 'true'. If this control should be shown seperately use 'false'. - - - - TODO. - - - - - - - - TODO. - - - - - - - - Draw a property field for a vector shader property. - - Label for the field. - - - - - - Draw a property field for a vector shader property. - - Label for the field. - - - - - - Extension methods for the Material asset type in the editor. - - - - - Iterates over all the Material properties with the MaterialProperty.PropFlags.Normal flag and checks that the textures referenced by these properties are imported as TextureImporterType.NormalMap. - - The target material. - - - - Describes information and value of a single shader property. - - - - - Color value of the property. - - - - - Display name of the property (Read Only). - - - - - Flags that control how property is displayed (Read Only). - - - - - Float vaue of the property. - - - - - Does this property have multiple different values? (Read Only) - - - - - Name of the property (Read Only). - - - - - Min/max limits of a ranged float property (Read Only). - - - - - Material objects being edited by this property (Read Only). - - - - - Texture dimension (2D, Cubemap etc.) of the property (Read Only). - - - - - Texture value of the property. - - - - - Type of the property (Read Only). - - - - - Vector value of the property. - - - - - Flags that control how a MaterialProperty is displayed. - - - - - Signifies that values of this property are in gamma space and should not be gamma corrected. - - - - - Signifies that values of this property contain High Dynamic Range (HDR) data. - - - - - Do not show the property in the Inspector. - - - - - No flags are set. - - - - - Do not allow this texture property to be edited in the Inspector. - - - - - Signifies that values of this property contain Normal (normalized vector) data. - - - - - Do not show UV scale/offset fields next to a texture. - - - - - Texture value for this property will be queried from renderer's MaterialPropertyBlock, instead of from the material. This corresponds to the "[PerRendererData]" attribute in front of a property in the shader code. - - - - - Material property type. - - - - - Color property. - - - - - Float property. - - - - - Ranged float (with min/max values) property. - - - - - Texture property. - - - - - Vector property. - - - - - Base class to derive custom material property drawers from. - - - - - Apply extra initial values to the material. - - The MaterialProperty to apply values for. - - - - Override this method to specify how tall the GUI for this property is in pixels. - - The MaterialProperty to make the custom GUI for. - The label of this property. - Current material editor. - - - - Override this method to make your own GUI for the property. - - Rectangle on the screen to use for the property GUI. - The MaterialProperty to make the custom GUI for. - The label of this property. - Current material editor. - - - - Descriptor for audio track format. - - - - - Number of channels. - - - - - Dialogue language, if applicable. Can be empty. - - - - - Audio sampling rate. - - - - - Encodes images and audio samples into an audio or movie file. - - - - - Appends a frame to the file's video track. - - Texture containing the pixels to be written into the track for the current frame. - - True if the operation succeeded. False otherwise. - - - - - Appends sample frames to the specified audio track. - - Index of the track to which sample frames will be added. - Sample frames to add. Samples are expected to be interleaved. - - True if the operation succeeded. False otherwise. - - - - - Appends sample frames to the specified audio track. - - Index of the track to which sample frames will be added. - Sample frames to add. Samples are expected to be interleaved. - - True if the operation succeeded. False otherwise. - - - - - Create a new encoder with various track arrangements. - - Path fo the media file to be written. - Attributes for the file's video track, if any. - Attributes for the file's audio tracks, if any. - - - - Create a new encoder with various track arrangements. - - Path fo the media file to be written. - Attributes for the file's video track, if any. - Attributes for the file's audio tracks, if any. - - - - Create a new encoder with various track arrangements. - - Path fo the media file to be written. - Attributes for the file's video track, if any. - Attributes for the file's audio tracks, if any. - - - - Create a new encoder with various track arrangements. - - Path fo the media file to be written. - Attributes for the file's video track, if any. - Attributes for the file's audio tracks, if any. - - - - Create a new encoder with various track arrangements. - - Path fo the media file to be written. - Attributes for the file's video track, if any. - Attributes for the file's audio tracks, if any. - - - - Finishes writing all tracks and closes the file being written. - - - - - Rational number useful for expressing fractions precisely. - - - - - Fraction denominator. - - - - - Fraction numerator. - - - - - Constructs a rational number whose denominator is 1. - - Numerator. Will also become the rational value as the denominator is set to 1. - - - - Descriptor for audio track format. - - - - - VideoBitrateMode for the encoded video. - - - - - Frames per second. - - - - - Image height in pixels. - - - - - True if the track is to include the alpha channel found in the texture passed to AddFrame. False otherwise. - - - - - Image width in pixels. - - - - - A pair of from and to indices describing what thing keeps what other thing alive. - - - - - Index into a virtual list of all GC handles, followed by all native objects. - - - - - Index into a virtual list of all GC handles, followed by all native objects. - - - - - Description of a field of a managed type. - - - - - Is this field static? - - - - - Name of this field. - - - - - Offset of this field. - - - - - The typeindex into PackedMemorySnapshot.typeDescriptions of the type this field belongs to. - - - - - A dump of a piece of memory from the player that's being profiled. - - - - - The actual bytes of the memory dump. - - - - - The start address of this piece of memory. - - - - - MemorySnapshot is a profiling tool to help diagnose memory usage. - - - - - Event that will be fired when a new memory snapshot comes in through the profiler connection. Its argument will be a PackedMemorySnapshot. - - - - - - Requests a new snapshot from the currently connected target of the profiler. Memory snapshots are supported on IL2CPP and Mono .NET 3.5/4.0 scripting backends, although .NET 3.5 has been deprecated as of 2018.3. - - -NOTE: Each snapshot consists of approximately one managed object per recorded managed object. Snapshots taken from the editor will contain the objects in all previous snapshots that have not yet been garbage-collected. Therefore, repeated snapshots of the editor may grow exponentially. If you no longer need an old snapshot it is therefore advisable to null all references to it and call GC.Collect() before taking another one. - - - - - A description of a GC handle used by the virtual machine. - - - - - The address of the managed object that the GC handle is referencing. - - - - - PackedMemorySnapshot is a compact representation of a memory snapshot. - - - - - Connections is an array of from,to pairs that describe which things are keeping which other things alive. - - - - - All GC handles in use in the memorysnapshot. - - - - - Array of actual managed heap memory sections. - - - - - All native C++ objects that were loaded at time of the snapshot. - - - - - Descriptions of all the C++ unity types the profiled player knows about. - - - - - Descriptions of all the managed types that were known to the virtual machine when the snapshot was taken. - - - - - Information about the virtual machine running executing the managade code inside the player. - - - - - A description of a C++ unity type. - - - - - Name of this C++ unity type. - - - - - The index used to obtain the native C++ base class description from the PackedMemorySnapshot.nativeTypes array. - - - - - Description of a C++ unity object in memory. - - - - - The hideFlags this native object has. - - - - - InstanceId of this object. - - - - - Has this object has been marked as DontDestroyOnLoad? - - - - - Is this native object an internal Unity manager object? - - - - - Is this object persistent? (Assets are persistent, objects stored in Scenes are persistent, dynamically created objects are not) - - - - - Name of this object. - - - - - The memory address of the native C++ object. This matches the "m_CachedPtr" field of UnityEngine.Object. - - - - - The index used to obtain the native C++ type description from the PackedMemorySnapshot.nativeTypes array. - - - - - Size in bytes of this object. - - - - - Equivalent of Profiling.PackedNativeUnityEngineObject.ObjectFlags in the old memory profiler API. - - - - - Equivalent of Profiling.PackedNativeUnityEngineObject.ObjectFlags.IsDontDestroyOnLoad in the old memory profiler API. - - - - - Equivalent of Profiling.PackedNativeUnityEngineObject.ObjectFlags.IsManager in the old memory profiler API. - - - - - Equivalent of Profiling.PackedNativeUnityEngineObject.ObjectFlags.IsPersistent in the old memory profiler API. - - - - - Description of a managed type. - - - - - If this is an arrayType, this will return the rank of the array. (1 for a 1-dimensional array, 2 for a 2-dimensional array, etc) - - - - - Name of the assembly this type was loaded from. - - - - - The base type for this type, pointed to by an index into PackedMemorySnapshot.typeDescriptions. - - - - - An array containing descriptions of all fields of this type. - - - - - Is this type an array? - - - - - Is this type a value type? (if it's not a value type, it's a reference type) - - - - - Name of this type. - - - - - Size in bytes of an instance of this type. If this type is an arraytype, this describes the amount of bytes a single element in the array will take up. - - - - - The actual contents of the bytes that store this types static fields, at the point of time when the snapshot was taken. - - - - - The typeIndex of this type. This index is an index into the PackedMemorySnapshot.typeDescriptions array. - - - - - The address in memory that contains the description of this type inside the virtual machine. This can be used to match managed objects in the heap to their corresponding TypeDescription, as the first pointer of a managed object points to its type description. - - - - - Equivalent of Profiling.TypeFlags in the old memory profiler API. - - - - - Equivalent of Profiling.TypeFlags.kArray in the old memory profiler API. - - - - - Equivalent of Profiling.TypeFlags.kArrayRankMask in the old memory profiler API. - - - - - Equivalent of Profiling.TypeFlags.kValueType in the old memory profiler API. - - - - - Information about the virtual machine running executing the managed code inside the player. - - - - - Allocation granularity in bytes used by the virtual machine allocator. - - - - - Offset in bytes inside the object header of an array object where the bounds of the array is stored. - - - - - Size in bytes of the header of an array object. - - - - - Offset in bytes inside the object header of an array object where the size of the array is stored. - - - - - A version number that will change when the object layout inside the managed heap will change. - - - - - Size in bytes of the header of each managed object. - - - - - Size in bytes of a pointer. - - - - - Menu class to manipulate the menu item. - - - - - Default constructor. - - - - - Get the check status of the given menu. - - - - - - Set the check status of the given menu. - - - - - - - Used to extract the context for a MenuItem. - - - - - Context is the object that is the target of a menu command. - - - - - An integer for passing custom information to a menu item. - - - - - Creates a new MenuCommand object. - - - - - - - Creates a new MenuCommand object. - - - - - - The MenuItem attribute allows you to add menu items to the main menu and inspector context menus. - - - - - Creates a menu item and invokes the static function following it, when the menu item is selected. - - The itemName is the menu item represented like a pathname. - For example the menu item could be "GameObject/Do Something". - If isValidateFunction is true, this is a validation - function and will be called before invoking the menu function with the same itemName. - The order by which the menu items are displayed. - - - - Creates a menu item and invokes the static function following it, when the menu item is selected. - - The itemName is the menu item represented like a pathname. - For example the menu item could be "GameObject/Do Something". - If isValidateFunction is true, this is a validation - function and will be called before invoking the menu function with the same itemName. - The order by which the menu items are displayed. - - - - Creates a menu item and invokes the static function following it, when the menu item is selected. - - The itemName is the menu item represented like a pathname. - For example the menu item could be "GameObject/Do Something". - If isValidateFunction is true, this is a validation - function and will be called before invoking the menu function with the same itemName. - The order by which the menu items are displayed. - - - - Various utilities for mesh manipulation. - - - - - Returns the mesh compression setting for a Mesh. - - The mesh to get information on. - - - - Optimizes the mesh for GPU access. - - - - - - Change the mesh compression setting for a mesh. - - The mesh to set the compression mode for. - The compression mode to set. - - - - Will insert per-triangle uv2 in mesh and handle vertex splitting etc. - - - - - - - User message types. - - - - - Error message. - - - - - Info message. - - - - - Neutral message. - - - - - Warning message. - - - - - Compressed texture format for target build platform. - - - - - ASTC texture compression. - - - - - S3 texture compression. Supported on devices with NVidia Tegra, Vivante and Intel GPUs. - - - - - ETC1 texture compression (or ETC2 for textures with alpha). ETC1 is supported by all devices. ETC2 is available on devices which support OpenGL ES 3.0; on OpenGL ES 2 devices the texture is decompressed on CPU. - - - - - ETC2 texture compression. Available on devices which support OpenGL ES 3.0; on OpenGL ES 2 devices the texture is decompressed on CPU. - - - - - Don't override texture compression. - - - - - PowerVR texture compression. Available on devices with PowerVR GPU. - - - - - Model importer lets you modify import settings from editor scripts. - - - - - Add to imported meshes. - - - - - Animation compression setting. - - - - - Allowed error of animation position compression. - - - - - Allowed error of animation rotation compression. - - - - - Allowed error of animation scale compression. - - - - - Animator generation mode. - - - - - The default wrap mode for the generated animation clips. - - - - - Bake Inverse Kinematics (IK) when importing. - - - - - Animation clips to split animation into. See Also: ModelImporterClipAnimation. - - - - - Generate a list of all default animation clip based on TakeInfo. - - - - - Animation optimization setting. - - - - - Additional properties to treat as user properties. - - - - - Animation generation options. - - - - - Material generation options. - - - - - Generate secondary UV set for lightmapping. - - - - - Global scale factor for importing. - - - - - The human description that is used to generate an Avatar during the import process. - - - - - Controls how much oversampling is used when importing humanoid animations for retargeting. - - - - - Import animated custom properties from file. - - - - - Import animation from file. - - - - - Blend shape normal import options. - - - - - Controls import of BlendShapes. - - - - - Controls import of cameras. Basic properties like field of view, near plane distance and far plane distance can be animated. - - - - - Import animation constraints. - - - - - Generates the list of all imported take. - - - - - Controls import of lights. Note that because light are defined differently in DCC tools, some light types or properties may not be exported. Basic properties like color and intensity can be animated. - - - - - Import materials from file. - - - - - Vertex normal import options. - - - - - Vertex tangent import options. - - - - - Use visibility properties to enable or disable MeshRenderer components. - - - - - Format of the imported mesh index buffer data. - - - - - Is Bake Inverse Kinematics (IK) supported by this importer. - - - - - Is FileScale used when importing. - - - - - Are mesh vertices and indices accessible from script? - - - - - Is import of tangents supported by this importer. - - - - - Is useFileUnits supported for this asset. - - - - - If this is true, any quad faces that exist in the mesh data before it is imported are kept as quads instead of being split into two triangles, for the purposes of tessellation. Set this to false to disable this behavior. - - - - - Material import location options. - - - - - Material naming setting. - - - - - Existing material search setting. - - - - - Mesh compression setting. - - - - - The path of the transform used to generation the motion of the animation. - - - - - Normal generation options for ModelImporter. - - - - - Normals import mode. - - - - - Smoothing angle (in degrees) for calculating normals. - - - - - Source of smoothing information for calculation of normals. - - - - - Animation optimization setting. - - - - - Vertex optimization setting. - - - - - If true, always create an explicit Prefab root. Otherwise, if the model has a single root, it is reused as the Prefab root. - - - - - Generates the list of all imported Animations. - - - - - If set to false, the importer will not resample curves when possible. -Read more about. - -Notes: - -- Some unsupported FBX features (such as PreRotation or PostRotation on transforms) will override this setting. In these situations, animation curves will still be resampled even if the setting is disabled. For best results, avoid using PreRotation, PostRotation and GetRotationPivot. - -- This option was introduced in Version 5.3. Prior to this version, Unity's import behaviour was as if this option was always enabled. Therefore enabling the option gives the same behaviour as pre-5.3 animation import. - - - - - - Threshold for angle distortion (in degrees) when generating secondary UV. - - - - - Threshold for area distortion when generating secondary UV. - - - - - Hard angle (in degrees) for generating secondary UV. - - - - - Margin to be left between charts when packing secondary UV. - - - - - Imports the HumanDescription from the given Avatar. - - - - - Should tangents be split across UV seams. - - - - - Swap primary and secondary UV channels when importing. - - - - - Tangents import mode. - - - - - Generates the list of all imported Transforms. - - - - - Use FileScale when importing. - - - - - Detect file units and import as 1FileUnit=1UnityUnit, otherwise it will import as 1cm=1UnityUnit. - - - - - When disabled, imported material albedo colors are converted to gamma space. This property should be disabled when using linear color space in Player rendering settings. -The default value is true. - - - - - Combine vertices that share the same position in space. - - - - - Creates a mask that matches the model hierarchy, and applies it to the provided ModelImporterClipAnimation. - - Clip to which the mask will be applied. - - - - Extracts the embedded textures from a model file (such as FBX or SketchUp). - - The directory where the textures will be extracted. - - Returns true if the textures are extracted successfully, otherwise false. - - - - - Search the project for matching materials and use them instead of the internal materials. - - The name matching option. - The search type option. - - Returns true if the materials have been successfly remapped, otherwise false. - - - - - Animation compression options for ModelImporter. - - - - - Perform keyframe reduction. - - - - - Perform keyframe reduction and compression. - - - - - No animation compression. - - - - - Perform keyframe reduction and choose the best animation curve representation at runtime to reduce memory footprint (default). - - - - - Animation mode for ModelImporter. - - - - - Generate a generic animator. - - - - - Generate a human animator. - - - - - Generate a legacy animation type. - - - - - Generate no animation data. - - - - - Animation clips to split animation into. - - - - - The additive reference pose frame. - - - - - Additionnal curves that will be that will be added during the import process. - - - - - Offset to the cycle of a looping animation, if a different time in it is desired to be the start. - - - - - AnimationEvents that will be added during the import process. - - - - - First frame of the clip. - - - - - Enable to defines an additive reference pose. - - - - - Keeps the feet aligned with the root transform position. - - - - - Offset to the vertical root position. - - - - - Keeps the vertical position as it is authored in the source file. - - - - - Keeps the vertical position as it is authored in the source file. - - - - - Keeps the vertical position as it is authored in the source file. - - - - - Last frame of the clip. - - - - - Enable to make vertical root motion be baked into the movement of the bones. Disable to make vertical root motion be stored as root motion. - - - - - Enable to make horizontal root motion be baked into the movement of the bones. Disable to make horizontal root motion be stored as root motion. - - - - - Enable to make root rotation be baked into the movement of the bones. Disable to make root rotation be stored as root motion. - - - - - Is the clip a looping animation? - - - - - Enable to make the motion loop seamlessly. - - - - - Enable to make the clip loop. - - - - - Returns true when the source AvatarMask has changed. This only happens when ModelImporterClipAnimation.maskType is set to ClipAnimationMaskType.CopyFromOther -To force a reload of the mask, simply set ModelImporterClipAnimation.maskSource to the desired AvatarMask. - - - - - The AvatarMask used to mask transforms during the import process. - - - - - Define mask type. - - - - - Mirror left and right in this clip. - - - - - Clip name. - - - - - Offset in degrees to the root rotation. - - - - - Take name. - - - - - The wrap mode of the animation. - - - - - Copy the mask settings from an AvatarMask to the clip configuration. - - AvatarMask from which the mask settings will be imported. - - - - Copy the current masking settings from the clip to an AvatarMask. - - AvatarMask to which the masking values will be saved. - - - - Animation generation options for ModelImporter. These options relate to the legacy Animation system, they should only be used when ModelImporter.animationType==ModelImporterAnimationType.Legacy. - - - - - Default animation import mode (All animations are stored in the root object). - - - - - Generate animations in the objects that animate. - - - - - Generate animations in the root objects of the animation package. - - - - - Generate animations in the transform root objects. - - - - - Do not generate animations. - - - - - Material generation options for ModelImporter. - - - - - Do not generate materials. - - - - - Generate a material for each material in the source asset. - - - - - Generate a material for each texture used. - - - - - Humanoid Oversampling available multipliers. - - - - - Default Humanoid Oversampling multiplier = 1 which is equivalent to no oversampling. - - - - - Humanoid Oversampling samples at 2 times the sampling rate found in the imported file. - - - - - Humanoid Oversampling samples at 4 times the sampling rate found in the imported file. - - - - - Humanoid Oversampling samples at 8 times the sampling rate found in the imported file. - - - - - Format of the imported mesh index buffer data. - - - - - Use 16 or 32 bit index buffer depending on mesh size. - - - - - Use 16 bit index buffer. - - - - - Use 32 bit index buffer. - - - - - Material import options for ModelImporter. - - - - - Extract the materials and textures from the model. - - - - - Unity imports materials as sub-assets. - - - - - Material naming options for ModelImporter. - - - - - Use a material name of the form <materialName>.mat. - - - - - Use material names in the form <modelFileName>-<materialName>.mat. - - - - - Use material names in the form <textureName>.mat. - - - - - <textureName>.mat or <modelFileName>-<materialName>.mat material name. - - - - - Material search options for ModelImporter. - - - - - Search in all project. - - - - - Search in local Materials folder. - - - - - Recursive-up search in Materials folders. - - - - - Mesh compression options for ModelImporter. - - - - - High amount of mesh compression. - - - - - Low amount of mesh compression. - - - - - Medium amount of mesh compression. - - - - - No mesh compression (default). - - - - - Normal generation options for ModelImporter. - - - - - The normals are weighted by the vertex angle on each face. - - - - - The normals are weighted by both the face area and the vertex angle on each face. - - - - - The normals are weighted by the face area. - - - - - The normals are not weighted. - - - - - The normals are unweighted. This option uses the legacy algorithm for handling hard edges. - - - - - Normal generation options for ModelImporter. - - - - - Calculate vertex normals. - - - - - Import vertex normals from model file (default). - - - - - Do not import vertex normals. - - - - - Source of smoothing information for calculation of normals in ModelImporter. - - - - - Use the angle between adjacent faces to determine if an edge is smooth or hard. - - - - - Use smoothing groups to determine which edges are smooth and which are hard. - - - - - Do not create hard edges. - - - - - Use smoothing groups if they are present in the Model file, otherwise use angle (default). - - - - - Vertex tangent generation options for ModelImporter. - - - - - Calculate tangents with legacy algorithm. - - - - - Calculate tangents with legacy algorithm, with splits across UV charts. - - - - - Calculate tangents using MikkTSpace (default). - - - - - Import vertex tangents from model file. - - - - - Do not import vertex tangents. - - - - - Tangent space generation options for ModelImporter. - - - - - Calculate tangents. - - - - - Import normals/tangents from file. - - - - - Strip normals/tangents. - - - - - Representation of Script assets. - - - - - Returns the MonoScript object containing specified MonoBehaviour. - - The MonoBehaviour whose MonoScript should be returned. - - - - Returns the MonoScript object containing specified ScriptableObject. - - The ScriptableObject whose MonoScript should be returned. - - - - Returns the System.Type object of the class implemented by this script. - - - - - Custom mouse cursor shapes used with EditorGUIUtility.AddCursorRect. - - - - - Normal pointer arrow. - - - - - Arrow with the minus symbol next to it. - - - - - Arrow with the plus symbol next to it. - - - - - The current user defined cursor. - - - - - Cursor with an eye and stylized arrow keys for FPS navigation. - - - - - Arrow with a Link badge (for assigning pointers). - - - - - Arrow with the move symbol next to it for the sceneview. - - - - - Cursor with an eye for orbit. - - - - - Cursor with a dragging hand for pan. - - - - - Horizontal resize arrows. - - - - - Resize up-Left for window edges. - - - - - Resize up-right for window edges. - - - - - Vertical resize arrows. - - - - - Arrow with the rotate symbol next to it for the sceneview. - - - - - Arrow with the scale symbol next to it for the sceneview. - - - - - Arrow with small arrows for indicating sliding at number fields. - - - - - Left-Right resize arrows for window splitters. - - - - - Up-Down resize arrows for window splitters. - - - - - Text cursor. - - - - - Cursor with a magnifying glass for zoom. - - - - - AssetImporter for importing MovieTextures. - - - - - Duration of the Movie to be imported in seconds. - - - - - Is the movie texture storing non-color data? - - - - - Quality setting to use when importing the movie. This is a float value from 0 to 1. - - - - - Information of the connected player. - - - - - The name of the connected player. - - - - - The ID of the player connected. - - - - - Handles the connection from the Editor to the Player. - - - - - A list of the connected players. - - - - - This disconnects all of the active connections. - - - - - Initializes the EditorConnection. - - - - - Registers a callback on a certain message ID. - - The message ID that invokes the callback when received by the Editor. - Action that is executed when a message with ID messageId is received by the Editor. -The callback includes the data that is sent from the Player, and the Player's ID. -The Player ID is used to distinguish between multiple Players connected to the same Editor. - - - - Registers a callback, executed when a new Player connects to the Editor. - - Action called when a new Player connects, with the Player ID of the Player. - - - - Registers a callback on a Player when that Player disconnects. - - The Action that is called when the Player with the given Player ID disconnects. - - - - Sends data to multiple or single Player(s). - - Type ID of the message to send to the Player(s). - If set, the message will only send to the Player with this ID. - - - - - Sends data to multiple or single Player(s). - - Type ID of the message to send to the Player(s). - If set, the message will only send to the Player with this ID. - - - - - Deregisters a registered callback. - - Message ID associated with the callback that you wish to deregister. - The Action callback you wish to deregister. - - - - Use the DefaultObject to create a new UnityEngine.Object in the editor. - - - - - This is invoked every time a new Component or MonoBehaviour is added to a GameObject using the ObjectFactory. - - The callback to be added to the invocation list. - - - - Creates a new component and adds it to the specified GameObject. - - The GameObject to add the new component to. - The type of component to create and add to the GameObject. - - Returns the component that was created and added to the GameObject. - - - - - Creates a new component and adds it to the specified GameObject. - - The GameObject to add the new component to. - The type of component to create and add to the GameObject. - - Returns the component that was created and added to the GameObject. - - - - - Creates a new GameObject. - - Name of the GameObject. - The optional types to add to the GameObject when created. - - - - Create a new instance of the given type. - - The type of instance to create. - - - - Create a new instance of the given type. - - The type of instance to create. - - - - Creates a GameObject primitive. - - The type of primitive to create. - - - - Helper class for constructing displayable names for objects. - - - - - Class name of an object. - - - - - - Drag and drop title for an object. - - - - - - Inspector title for an object. - - - - - - Make a unique name using the provided name as a base. - -If the target name is in the provided list of existing names, a unique name is generated by appending the next available numerical increment. - - A list of pre-existing names. - Desired name to be used as is, or as a base. - - A name not found in the list of pre-existing names. - - - - - Make a displayable name for a variable. - - - - - - Sets the name of an Object. - - - - - - - Base Class to derive from when creating Custom Previews. - - - - - The object currently being previewed. - - - - - This is the first entry point for Preview Drawing. - - The available area to draw the preview. - - - - Implement this method to show object information on top of the object preview. - - - - - Override this method if you want to change the label of the Preview area. - - - - - Can this component be Previewed in its current state? - - - True if this component can be Previewed in its current state. - - - - - Called when the Preview gets created with the objects being previewed. - - The objects being previewed. - - - - Called to iterate through the targets, this will be used when previewing more than one target. - - - True if there is another target available. - - - - - Implement to create your own interactive custom preview. Interactive custom previews are used in the preview area of the inspector and the object selector. - - Rectangle in which to draw the preview. - Background image. - - - - Implement to create your own custom preview for the preview area of the inspector, primary editor headers and the object selector. - - Rectangle in which to draw the preview. - Background image. - - - - Override this method if you want to show custom controls in the preview header. - - - - - Called to Reset the target before iterating through them. - - - - - Identifies the author of a package. - - - - - The email address of the author (optional). - - - - - The name of the author. - - - - - The url address of the author (optional). - - - - - Utility class that allows packages to register build callbacks with the Unity Package Manager. - - - - - Register a callback object for a package. - - Object of a class that implements the IShouldIncludeInBuildCallback interface. - - - - Unity Package Manager client class. - - - - - Adds a package dependency to the project. - - The name or ID of the package to add. If only the name is specified, the latest version of the package is installed. - - An AddRequest instance, which you can use to monitor the asynchronous operation, and when complete, get the result. - - - - - Lists the packages the project depends on. - - Specifies whether or not the Package Manager requests the latest information about the project's packages from the remote Unity package registry. When offlineMode is true, the PackageManager.PackageInfo objects in the PackageCollection returned by the Package Manager contain information obtained from the local package cache, which could be out of date. - - A ListRequest instance, which you can use to monitor the asynchronous operation, and when complete, get the result. - - - - - Removes a previously added package from the project. - - The name or the ID of the package to remove from the project. If only the name is specified, the package is removed regardless of the installed version. - - A RemoveRequest instance, which you can use to monitor the status of the asynchronous operation. - - - - - Resets the list of packages installed for this project to the editor's default configuration. This operation will clear all packages added to the project and keep only the packages set for the current editor default configuration. - - - A ResetToEditorDefaultsRequest instance, which you can use to monitor the status of the asynchronous operation. - - - - - Searches the Unity package registry for the given package. - - The name or ID of the package. - - A SearchRequest instance, which you can use to monitor the asynchronous operation, and when complete, get the result. - - - - - Searches the Unity package registry for all packages compatible with the current Unity version. - - - A SearchRequest instance, which you can use to monitor the asynchronous operation, and when complete, get the result. - - - - - Structure describing dependencies to other packages in PackageInfo. - - - - - The name of the dependency. - - - - - The version of the dependency. - - - - - Structure describing the error of a package operation. - - - - - Numerical error code. - - - - - Error message or description. - - - - - Package operation Error. - - - - - Conflicting package versions were found. - - - - - Operation was not allowed. - - - - - Operation had invalid parameters. - - - - - A package required to fulfill the operation was not found. - - - - - Operation resulted in an unknown error. - - - - - Interface used by the Package Manager to request build information about packages. - - - - - The package name. - - - - - Defines the signature for the function invoked by the Package Manager to determine whether a package file should be included or excluded from a project build. - - The absolute path of the file to be included or excluded. - - Return true if the file given by path should be included in the build; otherwise, return false. - - - - - A collection of PackageInfo objects. - - - - - The error associated with the package collection. - - - - - Structure describing a Unity Package. - - - - - The asset path of the package in the AssetDatabase. - - - - - An AuthorInfo instance of the author of the package. - - - - - Category of the package. - - - - - An array of DependencyInfos listing all the packages this package directly depends on. - - - - - Detailed description of the package. - - - - - Friendly display name of the package. - - - - - The errors associated with the package. - - - - - An array of keywords associated with the package. - - - - - Unique name of the package. - - - - - Identifier of the package. - - - - - An array of DependencyInfos listing all the packages this package directly or indirectly depends to and the versions they resolved to. - - - - - The local path of the project on disk. - - - - - Source of the package contents. - - - - - The status of the package. - - - - - Version of the package. - - - - - A VersionsInfo instance containing information about the available versions of the package. - - - - - Source of packages. - - - - - The package is built-in and part of Unity. - - - - - The package is embedded in the Unity project. - - - - - The package is referenced directly by a Git URL. - - - - - The package is referenced by a local path. - - - - - The package is from a registry. - - - - - The package source is unknown. - - - - - Unity Package Manager package status. - - - - - The package and its dependencies are available on the local file system. - - - - - An error occurred while transfering the package or one of its dependencies to the local file system. - - - - - The package is being transferred into the local file system. - - - - - The package or one of its dependencies cannot be found on the local file system. - - - - - The status of the package is unknown. - - - - - Represents an asynchronous request to add a package to the project. - - - - - Represents an asynchronous request to list the packages in the project. - - - - - Represents an asynchronous request to remove a package from the project. - - - - - The package being removed by this request. - - - - - Tracks the state of an asynchronous Unity Package Manager (Upm) server operation. - - - - - The error returned by the request, if any. - - - - - Whether the request is complete. - - - - - The request status. - - - - - Tracks the state of an asynchronous Unity Package Manager (Upm) server operation that returns a non-empty response. - - - - - The response to the request. - - - - - Represents an asynchronous request to reset the project packages to the current Editor default configuration. - - - - - Represents an asynchronous request to find a package. - - - - - The package id or name used in this search operation. - - - - - Unity Package Manager operation status. - - - - - Package manager operation failed. - - - - - Package manager operation is in progress. - - - - - Package manager operation completed successfully. - - - - - Identifies the available versions of a package and which are the compatible, latest, and recommended versions. - - - - - All available versions of the package. - - - - - Versions of the package compatible with the current version of Unity. - - - - - Latest version of the package. - - - - - Latest version of the package compatible with the current version of Unity. - - - - - The recommended version of the package. If the recommended version is not available, then this property is an empty string. - - - - - Enumeration specifying the current pause state of the Editor. - -See Also: PlayModeStateChange, EditorApplication.pauseStateChanged, EditorApplication.isPaused. - - - - - Occurs as soon as the Editor is paused, which may occur during either edit mode or play mode. - - - - - Occurs as soon as the Editor is unpaused, which may occur during either edit mode or play mode. - - - - - Displays the Physics Debug Visualization options. - -The Physics Debug Visualization is only displayed if this window is visible. - -See Also: PhysicsVisualizationSettings. - - - - - This class contains the settings controlling the Physics Debug Visualization. - - - - - Alpha amount used for transparency blending. - - - - - Used to disinguish neighboring Colliders. - - - - - Shows extra options used to develop and debug the physics visualization. - - - - - Dirty marker used for refreshing the GUI. - - - - - Enables the mouse-over highlighting and mouse selection modes. - - - - - See PhysicsVisualizationSettings.FilterWorkflow. - - - - - Forcing the drawing of Colliders on top of any other geometry, regardless of depth. - - - - - Color for kinematic Rigidbodies. - - - - - Color for Rigidbodies, primarily active ones. - - - - - Should the PhysicsDebugWindow display the collision geometry. - - - - - Color for Rigidbodies that are controlled by the physics simulator, but are not currently being simulated. - - - - - Color for Colliders that do not have a Rigidbody component. - - - - - Maximum number of mesh tiles available to draw all Terrain Colliders. - - - - - Color for Colliders that are Triggers. - - - - - Controls whether the SceneView or the GameView camera is used. Not shown in the UI. - - - - - Colliders within this distance will be displayed. - - - - - Clears the highlighted Collider. - - - - - Deinitializes the physics debug visualization system and tracking of changes Colliders. - - - - - Decides whether the Workflow in the Physics Debug window should be inclusive - (<a href="PhysicsVisualizationSettings.FilterWorkflow.ShowSelectedItems.html">ShowSelectedItems<a>) or exclusive (<a href="PhysicsVisualizationSettings.FilterWorkflow.HideSelectedItems.html">HideSelectedItems<a>). - - - - - With HideSelectedItems you can hide selected filter items in order to easily discard uninteresting Collider properties thereby making overview and navigation easier. - - - - - With ShowSelectedItems and the Select None button is it easy to monitor very specific Colliders. - - - - - Should BoxColliders be shown. - - - - - - Should CapsuleColliders be shown. - - - - - - Should the given layer for the given filterWorkflow be considered by the display filter. - - - - - - - Should the mask representing the layers for the given filterWorkflow be considered by the display filter. - - - - - - Should the kinematic Rigidbodies for the given filterWorkflow be considered by the display filter. - - - - - - Should MeshColliders be shown. - - - - - - - Should any Rigidbodies for the given filterWorkflow be considered by the display filter. - - - - - - Should the sleeping Rigidbodies for the given filterWorkflow be considered by the display filter. - - - - - - Should SphereColliders be shown. - - - - - - Should the Colliders without a Rigidbody component be considered by the display filter for the given filterWorkflow. - - - - - - Should TerrainColliders be shown. - - - - - - Should the triggers for the given filterWorkflow be considered by the display filter. - - - - - - Returns true if there currently is any kind of physics object highlighted. - - - - - Initializes the physics debug visualization system. The system must be initialized for any physics objects to be visualized. It is normally initialized by the PhysicsDebugWindow. - - - - - Is a MeshCollider convex. - - - - - Corresponds to MeshCollider.convex is true. - - - - - Corresponds to MeshCollider.convex is false. - - - - - Resets the visualization options to their default state. - - - - - Should BoxColliders be shown. - - - - - - - Should CapsuleColliders be shown. - - - - - - - Should the given layer for the given filterWorkflow be considered by the display filter. - - - - - - - - Should the mask representing the layers for the given filterWorkflow be considered by the display filter. - - - - - - - Enables or disables all filtering items for the current filterWorkflow. - - - - - - - Should the kinematic Rigidbodies for the given filterWorkflow be considered by the display filter. - - - - - - - Should MeshColliders be shown. - - - - - - - - Should any Rigidbodies for the given filterWorkflow be considered by the display filter. - - - - - - - Should the sleeping Rigidbodies for the given filterWorkflow be considered by the display filter. - - - - - - - Should SphereColliders be shown. - - - - - - - Should the Colliders without a Rigidbody component be considered by the display filter for the given filterWorkflow. - - - - - - - Should TerrainColliders be shown. - - - - - - - Should the triggers for the given filterWorkflow be considered by the display filter. - - - - - - - Updates the mouse-over highlight at the given mouse position in screen space. - - - - - - Where is the tool handle placed. - - - - - The tool handle is at the graphical center of the selection. - - - - - The tool handle is on the pivot point of the active object. - - - - - How is the tool handle oriented. - - - - - The tool handle is aligned along the global axes. - - - - - The tool handle is oriented from the active object. - - - - - Icon slot container. - - - - - The height of the icon in pixels. - - - - - The PlatformIconKind is specific to the target platform. - - - - - The number of texture layers the icon slot currently contains. - - - - - The maximum number of texture layers required by the icon slot. - - - - - The minimum number of texture layers required by the icon slot. - - - - - The width of the icon in pixels. - - - - - Retrieve the texture which is currently assigned to the specified layer. - - Cannot be larger than PlatformIcon.maxLayerCount. - - - - Retrieve an array of all textures which are currently assigned to the icon slot. - - - - - Assign a texture to the specified layer. - - Cannot be larger than PlatformIcon.maxLayerCount. - - - - - Assign all available icon layers. - - Must be an array of size PlatformIcon.maxLayerCount. - - - - Icon kind wrapper. - - - - - Editor utility functions for the Playable graph and its nodes. - - - - - Event triggered whenever a PlayableGraph is being destroyed. - - - - - - Event triggered whenever a new PlayableGraph is created. - - - - - - Returns all existing PlayableGraphs. - - - - - Player Settings is where you define various parameters for the final game that you will build in Unity. Some of these values are used in the Resolution Dialog that launches when you open a standalone game. - - - - - Accelerometer update frequency. - - - - - Sets the crash behavior on .NET unhandled exception. - - - - - Is the advanced version being used? - - - - - Is auto-rotation to landscape left supported? - - - - - Is auto-rotation to landscape right supported? - - - - - Is auto-rotation to portrait supported? - - - - - Is auto-rotation to portrait upside-down supported? - - - - - If enabled, allows the user to switch between full screen and windowed mode using OS specific keyboard short cuts. - - - - - Allow 'unsafe' C# code code to be compiled for predefined assemblies. - - - - - Additional AOT compilation options. Shared by AOT platforms. - - - - - Deprecated. Use PlayerSettings.GetApiCompatibilityLevel and PlayerSettings.SetApiCompatibilityLevel instead. - - - - - The application identifier for the currently selected build target. - - - - - Pre bake collision meshes on player build. - - - - - Application bundle version shared between iOS & Android platforms. - - - - - Defines if fullscreen games should darken secondary displays. - - - - - A unique cloud project identifier. It is unique for every project (Read Only). - - - - - Set the rendering color space for the current project. - - - - - The name of your company. - - - - - Default cursor's click position in pixels from the top left corner of the cursor image. - - - - - Define how to handle fullscreen mode in Windows standalones (Direct3D 11 mode). - - - - - Define how to handle fullscreen mode in Windows standalones (Direct3D 9 mode). - - - - - The default cursor for your application. - - - - - Default screen orientation for mobiles. - - - - - If enabled, the game will default to fullscreen mode. - - - - - Default vertical dimension of stand-alone player window. - - - - - Default horizontal dimension of stand-alone player window. - - - - - Default vertical dimension of web player window. - - - - - Default horizontal dimension of web player window. - - - - - Defines the behaviour of the Resolution Dialog on product launch. - - - - - Enable 360 Stereo Capture support on the current build target. - - - - - Enables CrashReport API. - - - - - Enable frame timing statistics. - - - - - Enables internal profiler. - - - - - Enables Metal API validation in the Editor. - - - - - First level to have access to all Resources.Load assets in Streamed Web Players. - - - - - Restrict standalone players to a single concurrent running instance. - - - - - Platform agnostic setting to define fullscreen behavior. Not all platforms support all modes. - - - - - Enable GPU skinning on capable platforms. - - - - - Selects the graphics job mode to use on platforms that support both Native and Legacy graphics jobs. - - - - - Enable graphics jobs (multi threaded rendering). - - - - - The bundle identifier of the iPhone application. - - - - - Password for the key used for signing an Android application. - - - - - Password used for interacting with the Android Keystore. - - - - - Defines whether the BlendShape weight range in SkinnedMeshRenderers is clamped. - - - - - Describes the reason for access to the user's location data. - - - - - Are ObjC uncaught exceptions logged? - - - - - Define how to handle fullscreen mode in macOS standalones. - - - - - Enable Retina support for macOS. - - - - - Stops or allows audio from other applications to play in the background while your Unity application is running. - - - - - When enabled, preserves the alpha value in the framebuffer to support rendering over native UI on Android. - - - - - The name of your product. - - - - - Protect graphics memory. - - - - - Which rendering path is enabled? - - - - - Use resizable window in standalone player builds. - - - - - The image to display in the Resolution Dialog window. - - - - - If enabled, your game will continue to run after lost focus. - - - - - The scripting runtime version setting. Change this to set the version the Editor uses and restart the Editor to apply the change. - - - - - Should the builtin Unity splash screen be shown? - - - - - Should Unity support single-pass stereo rendering? - - - - - The style to use for the builtin Unity splash screen. - - - - - Returns if status bar should be hidden. Supported on iOS only; on Android, the status bar is always hidden. - - - - - Active stereo rendering path - - - - - Should player render in stereoscopic 3d on supported hardware? - - - - - Remove unused Engine code from your build (IL2CPP-only). - - - - - Deprecated. Use PlayerSettings.GetManagedStrippingLevel and PlayerSettings.SetManagedStrippingLevel instead. - - - - - Should unused Mesh components be excluded from game build? - - - - - 32-bit Display Buffer is used. - - - - - Let the OS autorotate the screen as the device orientation changes. - - - - - Should Direct3D 11 be used when available? - - - - - Switch display to HDR mode (if available). - - - - - Enable receipt validation for the Mac App Store. - - - - - Write a log file with debugging information. - - - - - Virtual Reality specific splash screen. - - - - - Enable Virtual Reality support on the current build target. - - - - - On Windows, show the application in the background if Fullscreen Windowed mode is used. - - - - - Enables Graphics.SetSRGBWrite() on Vulkan renderer. - - - - - Use software command buffers for building rendering commands on Vulkan. - - - - - Xbox 360 Avatars. - - - - - Android specific player settings. - - - - - Publish the build as a game rather than a regular application. This option affects devices running Android 5.0 Lollipop and later - - - - - Provide a build that is Android TV compatible. - - - - - Choose how content is drawn to the screen. - - - - - Create a separate APK for each CPU architecture. - - - - - Android bundle version code. - - - - - Disable Depth and Stencil Buffers. - - - - - Force internet permission flag. - - - - - Force SD card permission. - - - - - Android key alias name. - - - - - Android key alias password. - - - - - Android keystore name. - - - - - Android keystore password. - - - - - License verification flag. - - - - - Maximum aspect ratio which is supported by the application. - - - - - The minimum API level required for your application to run. - - - - - Preferred application install location. - - - - - Extends rendering layout into display cutout area, utilizing all of the available screen space. - - - - - Application should show ActivityIndicator when loading. - - - - - Android splash screen scale mode. - - - - - Start in fullscreen mode. - - - - - A set of CPU architectures for the Android build target. - - - - - Android target device. - - - - - The target API level of your application. - - - - - 24-bit Depth Buffer is used. - - - - - Use APK Expansion Files. - - - - - Enable support for Google ARCore on supported devices. - - - - - Facebook specific Player settings. - - - - - Facebook application identifier to use for this project. - - - - - Version of Facebook SDK to use for this project. - - - - - Sets a cookie which your server-side code can use to validate a user's Facebook session. - - - - - Use frictionless app requests, as described in their own documentation. - - - - - If 'true', attempts to initialize the Facebook object with valid session data. - - - - - IL2CPP build arguments. - - - - - Gets .NET API compatibility level for specified BuildTargetGroup. - - - - - - Get the application identifier for the specified platform. - - - - - - Gets the BuildTargetPlatformGroup architecture. - - - - - - Returns a list of the available Virtual Reality SDKs that are supported on a given BuildTargetGroup. - - The BuildTargetGroup to return the list for. - - List of available Virtual Reality SDKs. - - - - - Returns the default ScriptingImplementation used for the given platform group. - - The platform group to retrieve the scripting backend for. - - A ScriptingImplementation object that describes the default scripting backend used on that platform. - - - - - Get graphics APIs to be used on a build platform. - - Platform to get APIs for. - - Array of graphics APIs. - - - - - Returns the list of assigned icons for the specified platform. - - - - - - - Returns the list of assigned icons for the specified platform. - - - - - - - Returns a list of icon sizes for the specified platform. - - - - - - - Returns a list of icon sizes for the specified platform. - - - - - - - Gets compiler configuration used when compiling generated C++ code for a particular BuildTargetGroup. - - Build target group. - - Compiler configuration. - - - - - Does IL2CPP platform use incremental build? - - - - - - Returns the ManagedStrippingLevel used for the given platform group. - - The target platform group whose code stripping level you want to retrieve. - - The managed code stripping level set for the specified build target platform group. - - - - - Check if multithreaded rendering option for mobile platform is enabled. - - Mobile platform (Only iOS, tvOS and Android). - - Return true if multithreaded rendering option for targetGroup platform is enabled. - - - - - Returns the list of available icon slots for the specified platform and PlatformIconKind|kind. - - The full list of platforms that support this API and the supported icon kinds can be found in PlatformIconKind|icon kinds. - Each platform supports a different set of PlatformIconKind|icon kinds. These can be found in the specific platform namespace (for example iOSPlatformIconKind. - - - - Gets the current value of the Vuforia AR checkbox in the Player Settings for the specified buildTargetGroup. - - The BuildTargetGroup you wish to get the value for. - - True if Vuforia AR is enabled, false otherwise. - - - - - Returns the assets that will be loaded at start up in the player and be kept alive until the player terminates. - - - The assets to be preloaded. - - - - - Returns a PlayerSettings named bool property (with an optional build target it should apply to). - - Name of the property. - BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). - - The current value of the property. - - - - - Returns a PlayerSettings named int property (with an optional build target it should apply to). - - Name of the property. - BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). - - The current value of the property. - - - - - Searches for property and assigns it's value to given variable. - - Name of the property. - Variable, to which to store the value of the property, if set. - An optional build target group, to which the property applies. - - True if property was set and it's value assigned to given variable. - - - - - Searches for property and assigns it's value to given variable. - - Name of the property. - Variable, to which to store the value of the property, if set. - An optional build target group, to which the property applies. - - True if property was set and it's value assigned to given variable. - - - - - Searches for property and assigns it's value to given variable. - - Name of the property. - Variable, to which to store the value of the property, if set. - An optional build target group, to which the property applies. - - True if property was set and it's value assigned to given variable. - - - - - Returns a PlayerSettings named string property (with an optional build target it should apply to). - - Name of the property. - BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). - - The current value of the property. - - - - - Gets the scripting framework for a BuildTargetPlatformGroup. - - - - - - Get user-specified symbols for script compilation for the given build target group. - - - - - - Get stack trace logging options. - - - - - - Retrieve all icon kinds supported by the specified platform. - - - - - - Is a build platform using automatic graphics API choice? - - Platform to get the flag for. - - Should best available graphics API be used. - - - - - Get the List of Virtual Reality SDKs for a given BuildTargetGroup. - - The BuildTargetGroup to return the SDK list for. - - Ordered list of Virtual Reality SDKs. - - - - - Returns whether or not Virtual Reality Support is enabled for a given BuildTargetGroup. - - The BuildTargetGroup to return the value for. - - True if Virtual Reality Support is enabled. - - - - - Returns true if Holographic Remoting is enabled. - - - - - Returns whether or not the specified aspect ratio is enabled. - - - - - - iOS specific player settings. - - - - - Should insecure HTTP downloads be allowed? - - - - - Application behavior when entering background. - - - - - Set this property with your Apple Developer Team ID. You can find this on the Apple Developer website under <a href="https:developer.apple.comaccount#membership"> Account > Membership </a> . This sets the Team ID for the generated Xcode project, allowing developers to use the Build and Run functionality. An Apple Developer Team ID must be set here for automatic signing of your app. - - - - - Set this property to true for Xcode to attempt to automatically sign your app based on your appleDeveloperTeamID. - - - - - iOS application display name. - - - - - Supported background execution modes (when appInBackgroundBehavior is set to iOSAppInBackgroundBehavior.Custom). - - - - - The build number of the bundle - - - - - Describes the reason for access to the user's camera. - - - - - Defer system gestures until the second swipe on specific edges. - - - - - Defer system gestures until the second swipe on specific edges. - - - - - Disable Depth and Stencil Buffers. - - - - - Application should exit when suspended to background. - - - - - Should hard shadows be enforced when running on (mobile) Metal. - - - - - Specifies whether the home button should be hidden in the iOS build of this application. - - - - - A provisioning profile Universally Unique Identifier (UUID) that Xcode will use to build your iOS app in Manual Signing mode. - - - - - A ProvisioningProfileType that will be set when building an iOS Xcode project. - - - - - Describes the reason for access to the user's location data. - - - - - Describes the reason for access to the user's microphone. - - - - - Determines iPod playing behavior. - - - - - Icon is prerendered. - - - - - RequiresFullScreen maps to Apple's plist build setting UIRequiresFullScreen, which is used to opt out of being eligible to participate in Slide Over and Split View for iOS 9.0 multitasking. - - - - - Application requires persistent WiFi. - - - - - Script calling optimization. - - - - - Active iOS SDK version used for build. - - - - - Application should show ActivityIndicator when loading. - - - - - Status bar style. - - - - - Targeted device. - - - - - Deployment minimal version of iOS. - - - - - Deployment minimal version of iOS. - - - - - A provisioning profile Universally Unique Identifier (UUID) that Xcode will use to build your tvOS app in Manual Signing mode. - - - - - A ProvisioningProfileType that will be set when building a tvOS Xcode project. - - - - - Indicates whether application will use On Demand Resources (ODR) API. - - - - - Sets the mode which will be used to generate the app's launch screen Interface Builder (.xib) file for iPad. - - - - - - Sets the mode which will be used to generate the app's launch screen Interface Builder (.xib) file for iPhone. - - - - - - Sets the image to display on screen when the game launches for the specified iOS device. - - - - - - - Is multi-threaded rendering enabled? - - - - - PS4 application category. - - - - - Application. - - - - - PS4 enter button assignment. - - - - - Circle button. - - - - - Cross button. - - - - - Remote Play key assignment. - - - - - No Remote play key assignment. - - - - - Remote Play key layout configuration A. - - - - - Remote Play key layout configuration B. - - - - - Remote Play key layout configuration C. - - - - - Remote Play key layout configuration D. - - - - - Remote Play key layout configuration E. - - - - - Remote Play key layout configuration F. - - - - - Remote Play key layout configuration G. - - - - - Remote Play key layout configuration H. - - - - - IL2CPP build arguments. - - - - - - Sets .NET API compatibility level for specified BuildTargetGroup. - - - - - - - Set the application identifier for the specified platform. - - - - - - - Sets the BuildTargetPlatformGroup architecture. - - - - - - - Enables the specified aspect ratio. - - - - - - - Sets the graphics APIs used on a build platform. - - Platform to set APIs for. - Array of graphics APIs. - - - - Assign a list of icons for the specified platform. - - - - - - - - Assign a list of icons for the specified platform. - - - - - - - - Sets compiler configuration used when compiling generated C++ code for a particular BuildTargetGroup. - - Build target group. - Compiler configuration. - - - - Sets incremental build flag. - - - - - - - Sets the managed code stripping level for specified BuildTargetGroup. - - The platform build target group whose stripping level you want to set. - The desired managed code stripping level. - - - - - - Enable or disable multithreaded rendering option for mobile platform. - - Mobile platform (Only iOS, tvOS and Android). - - - - - Assign a list of icons for the specified platform and icon kind. - - Each platform supports a different set of PlatformIconKind|icon kinds. These can be found in the specific platform namespace (for example iOSPlatformIconKind). - The full list of platforms that support this API the supported kinds can be found in PlatformIconKind|icon kinds. - All available PlatformIcon slots must be retrieved with GetPlatformIcons. - - - - - Sets the value of the Vuforia AR checkbox in the Player Settings for the specified buildTargetGroup. - - The BuildTargetGroup you wish to set the value for. - True to enable Vuforia AR, false otherwise. - - - - Assigns the assets that will be loaded at start up in the player and be kept alive until the player terminates. - - - - - - Sets a PlayerSettings named bool property. - - Name of the property. - Value of the property (bool). - BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). - - - - Sets a PlayerSettings named int property. - - Name of the property. - Value of the property (int). - BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). - - - - Sets a PlayerSettings named string property. - - Name of the property. - Value of the property (string). - BuildTarget for which the property should apply (use default value BuildTargetGroup.Unknown to apply to all targets). - - - - Sets the scripting framework for a BuildTargetPlatformGroup. - - - - - - - Set user-specified symbols for script compilation for the given build target group. - - The name of the group of devices. - Symbols for this group separated by semicolons. - - - - Set stack trace logging options. -Note: calling this function will implicitly call Application.SetStackTraceLogType. - - - - - - - Should a build platform use automatic graphics API choice. - - Platform to set the flag for. - Should best available graphics API be used? - - - - Set the List of Virtual Reality SDKs for a given BuildTargetGroup. - - The BuildTargetGroup to set the SDK list for. - List of Virtual Reality SDKs. - - - - Sets whether or not Virtual Reality Support is enabled for a given BuildTargetGroup. - - The BuildTargetGroup to set the value for. - The value to set, true to enable, false to disable. - - - - Enables Holographic Remoting. - - - - - Interface to splash screen player settings. - - - - - The target zoom (from 0 to 1) for the background when it reaches the end of the SplashScreen animation's total duration. Only used when animationMode is PlayerSettings.SplashScreen.AnimationMode.Custom|AnimationMode.Custom. - - - - - The target zoom (from 0 to 1) for the logo when it reaches the end of the logo animation's total duration. Only used when animationMode is PlayerSettings.SplashScreen.AnimationMode.Custom|AnimationMode.Custom. - - - - - The type of animation applied during the splash screen. - - - - - The background Sprite that is shown in landscape mode. Also shown in portrait mode if backgroundPortrait is null. - - - - - The background color shown if no background Sprite is assigned. Default is a dark blue RGB(34.44,54). - - - - - The background Sprite that is shown in portrait mode. - - - - - Determines how the Unity logo should be drawn, if it is enabled. If no Unity logo exists in [logos] then the draw mode defaults to PlayerSettings.SplashScreen.DrawMode.UnityLogoBelow|DrawMode.UnityLogoBelow. - - - - - The collection of logos that is shown during the splash screen. Logos are drawn in ascending order, starting from index 0, followed by 1, etc etc. - - - - - In order to increase contrast between the background and the logos, an overlay color modifier is applied. The overlay opacity is the strength of this effect. Note: Reducing the value below 0.5 requires a Plus/Pro license. - - - - - Set this to true to display the Splash Screen be shown when the application is launched. Set it to false to disable the Splash Screen. Note: Disabling the Splash Screen requires a Plus/Pro license. - - - - - Set this to true to show the Unity logo during the Splash Screen. Set it to false to disable the Unity logo. Note: Disabling the Unity logo requires a Plus/Pro license. - - - - - The style to use for the Unity logo during the Splash Screen. - - - - - The type of animation applied during the Splash Screen. - - - - - Animates the Splash Screen using custom values from PlayerSettings.SplashScreen.animationBackgroundZoom and PlayerSettings.SplashScreen.animationLogoZoom. - - - - - Animates the Splash Screen with a simulated dolly effect. - - - - - No animation is applied to the Splash Screen logo or background. - - - - - Determines how the Unity logo should be drawn, if it is enabled. - - - - - The Unity logo is shown sequentially providing it exists in the PlayerSettings.SplashScreen.logos collection. - - - - - The Unity logo is drawn in the lower portion of the screen for the duration of the Splash Screen, while the PlayerSettings.SplashScreen.logos are shown in the centre. - - - - - The style to use for the Unity logo during the Splash Screen. - - - - - A dark Unity logo with a light background. - - - - - A white Unity logo with a dark background. - - - - - A single logo that is shown during the Splash Screen. Controls the Sprite that is displayed and its duration. - - - - - The total time in seconds for which the logo is shown. The minimum duration is 2 seconds. - - - - - The Sprite that is shown during this logo. If this is null, then no logo will be displayed for the duration. - - - - - The Unity logo Sprite. - - - - - Creates a new Splash Screen logo with the provided duration and logo Sprite. - - The total time in seconds that the logo will be shown. Note minimum time is 2 seconds. - The logo Sprite to display. - - The new logo. - - - - - Creates a new Splash Screen logo with the provided duration and the unity logo. - - The total time in seconds that the logo will be shown. Note minimum time is 2 seconds. - - The new logo. - - - - - tvOS specific player settings. - - - - - The build number of the bundle - - - - - Application requires extended game controller. - - - - - Active tvOS SDK version used for build. - - - - - Deployment minimal version of tvOS. - - - - - Deployment minimal version of tvOS. - - - - - Google Cardboard-specific Player Settings. - - - - - Set the requested depth format for the Depth and Stencil Buffers. Options are 16bit Depth, 24bit Depth and 24bit Depth + 8bit Stencil. - - - - - Google VR-specific Player Settings. - - - - - Foreground image for the Daydream Launcher Home Screen. - - - - - Background image for the Daydream Launcher Home Screen. - - - - - Set the requested depth format for the Depth and Stencil Buffers. Options are 16bit Depth, 24bit Depth and 24bit Depth + 8bit Stencil. - - - - - Enable Google VR Asynchronous Video Re-Projection when running in Daydream. - -NOTE: Only takes effect if set before initializing VR. - - - - - Enable Protected Memory support when running with Google VR Asynchronous Video Re-Projection (AVR). - -Protected memory support is currently an all or nothing feature. When enabled only DRM protected content can be played using AVR. Clear content will fail to play. - -NOTE: Only takes effect if set before initializing VR. - - - - - Set the highest level of head tracking required to run your application. - -Set this property to limit your application to only run on devices that support this maximum level of head tracking. On devices that support higher levels of head tracking, your application is limited to using the maximum level. - - - - - Set the lowest level of head tracking required to run your application. - -Set this property to limit your application to only run on devices that support this minimum level of head tracking. - - - - - Class used to access properties of the Oculus VR device. - - - - - Enable Oculus Dash support for the application. - - - - - Enable Low Overhead driver optimizations for Oculus. - - - - - Enable protected graphics context for Oculus. - - - - - Enable Shared Depth Buffer support with Oculus. - - - - - Enable application signing with the Android Package (APK) Signature Scheme v2. - - - - - WebGL specific player settings. - - - - - CompressionFormat defines the compression type that the WebGL resources are encoded to. - - - - - Enables automatic caching of unityweb files. - - - - - Enables generation of debug symbols file in the build output directory. - - - - - Exception support for WebGL builds. - - - - - Allows you to specify the WebGLLinkerTarget|web build format that is used when you build your project. - - - - - Memory size for WebGL builds in Megabyte. - - - - - Enables using MD5 hash of the uncompressed file contents as a filename for each file in the build. - - - - - Path to the WebGL template asset. - - - - - Windows Store Apps specific player settings. - - - - - Specify how to compile C# files when building to Windows Store Apps. - - - - - Enable/Disable independent input source feature. - - - - - Enable/Disable low latency presentation API. - - - - - Where Unity gets input from. - - - - - Sets AlphaMode on the swap chain to DXGI_ALPHA_MODE_PREMULTIPLIED. - - - - - Windows Store Apps declarations. - - - - - Set information for file type associations. - -For more information - https:msdn.microsoft.comlibrarywindowsappshh779671https:msdn.microsoft.comlibrarywindowsappshh779671. - - - - - - Registers this application to be a default handler for specified URI scheme name. - - For example: if you specify myunitygame, your application can be run from other applications via the URI scheme myunitygame:. You can also test this using the Windows "Run" dialog box (invoked with Windows + R key). - - For more information https:msdn.microsoft.comlibrarywindowsappshh779670https:msdn.microsoft.comlibrarywindowsappshh779670. - - - - - Get path for image, that will be populated to the Visual Studio solution and the package manifest. - - - - - - - Set path for image, that will be populated to the Visual Studio solution and the package manifest. - - - - - - - - Compilation overrides for C# files. - - - - - C# files are compiled using Mono compiler. - - - - - C# files are compiled using Microsoft compiler and .NET Core, you can use Windows Runtime API, but classes implemented in C# files aren't accessible from JS or Boo languages. - - - - - C# files not located in Plugins, Standard Assets, Pro Standard Assets folders are compiled using Microsoft compiler and .NET Core, all other C# files are compiled using Mono compiler. The advantage is that classes implemented in C# are accessible from JS and Boo languages. - - - - - Describes File Type Association declaration. - - - - - Localizable string that will be displayed to the user as associated file handler. - - - - - Supported file types for this association. - - - - - Various image scales, supported by Windows Store Apps. - - - - - Image types, supported by Windows Store Apps. - - - - - Where Unity takes input from (subscripbes to events). - - - - - Subscribe to CoreWindow events. - - - - - Create Independent Input Source and receive input from it. - - - - - Subscribe to SwapChainPanel events. - - - - - Describes supported file type for File Type Association declaration. - - - - - The 'Content Type' value for the file type's MIME content type. For example: 'image/jpeg'. Can also be left blank. - - - - - File type extension. For ex., .myUnityGame - - - - - Enumeration specifying a change in the Editor's play mode state. - -See Also: PauseState, EditorApplication.playModeStateChanged, EditorApplication.isPlaying. - - - - - Occurs during the next update of the Editor application if it is in edit mode and was previously in play mode. - - - - - Occurs during the next update of the Editor application if it is in play mode and was previously in edit mode. - - - - - Occurs when exiting edit mode, before the Editor is in play mode. - - - - - Occurs when exiting play mode, before the Editor is in edit mode. - - - - - Represents plugin importer. - - - - - Is plugin native or managed? Note: C++ libraries with CLR support are treated as native plugins, because Unity cannot load such libraries. You can still access them via P/Invoke. - - - - - Clear all plugin settings and set the compatability with Any Platform to true. - - - - - Constructor. - - - - - Allows you to specify a list of #define directives which controls whether your plug-in should be included. - - - - - Returns all plugin importers for all platforms. - - - - - Checks whether a plugin is flagged as being compatible with Any Platform. - - - True if the plugin is flagged as being compatible with Any Platform, otherwise returns false. - - - - - Is plugin compatible with editor. - - - - - Is plugin compatible with specified platform. - - Target platform. - - - - - Is plugin compatible with specified platform. - - Target platform. - - - - - Returns editor specific data for specified key. - - Key value for data. - - - - Is Editor excluded when Any Platform is set to true. - - - - - Is platform excluded when Any Platform set to true. - - Target platform. - - - - - Is platform excluded when Any Platform set to true. - - Target platform. - - - - - Returns all plugin importers for specfied platform. - - Target platform. - Name of the target platform. - - - - Returns all plugin importers for specfied platform. - - Target platform. - Name of the target platform. - - - - Identifies whether or not this plugin will be overridden if a plugin of the same name is placed in your project folder. - - - - - Get platform specific data. - - Target platform. - Key value for data. - - - - - Get platform specific data. - - Target platform. - Key value for data. - - - - - Delegate to be used with SetIncludeInBuildDelegate. - - - - - - Sets compatibility with Any Platform. - - Determines whether the plugin is compatible with Any Platform. - - - - Sets compatibility with any editor. - - Is plugin compatible with editor. - - - - Sets compatibility with the specified platform. - - Target platform. - Is plugin compatible with specified platform. - Target platform. - - - - Sets compatibility with the specified platform. - - Target platform. - Is plugin compatible with specified platform. - Target platform. - - - - Sets editor specific data. - - Key value for data. - Data. - - - - Exclude Editor from compatible platforms when Any Platform is set to true. - - - - - - Exclude platform from compatible platforms when Any Platform is set to true. - - Target platform. - - - - - - Exclude platform from compatible platforms when Any Platform is set to true. - - Target platform. - - - - - - Setting the delegate function to be called by ShouldIncludeInBuild. - - - - - - Sets platform specific data. - - Target platform. - Key value for data. - Data. - - - - - Sets platform specific data. - - Target platform. - Key value for data. - Data. - - - - - Identifies whether or not this plugin should be included in the current build target. - - - - - See ScriptableObject.OnEnable. - - - - - Show a popup with the given PopupWindowContent. - - The rect of the button that opens the popup. - The content to show in the popup window. - - - - Class used to implement content for a popup window. - - - - - The EditorWindow that contains the popup content. - - - - - The size of the popup window. - - - The size of the Popup window. - - - - - Callback when the popup window is closed. - - - - - Callback for drawing GUI controls for the popup window. - - The rectangle to draw the GUI inside. - - - - Callback when the popup window is opened. - - - - - Enum indicating the type of Prefab Asset, such as Regular, Model and Variant. - - - - - The object being queried is part of a Prefab instance, but because the asset it missing the actual type of Prefab can’t be determined. - - - - - The object being queried is part of a Model Prefab. - - - - - The object being queried is not part of a Prefab at all. - - - - - The object being queried is part of a regular Prefab. - - - - - The object being queried is part of a Prefab Variant. - - - - - Enum with status about whether a Prefab instance is properly connected to its asset. - - - - - The Prefab instance is connected to its Prefab Asset. - - - - - The Prefab instance is not connected to its Prefab Asset. - - - - - The Prefab instance is missing its Prefab Asset. - - - - - The object is not part of a Prefab instance. - - - - - The type of a Prefab object as returned by PrefabUtility.GetPrefabType. - - - - - The object is an instance of an imported 3D model, but the connection is broken. - - - - - The object is an instance of a user created Prefab, but the connection is broken. - - - - - The object was an instance of a Prefab, but the original Prefab could not be found. - - - - - The object is an imported 3D model asset. - - - - - The object is an instance of an imported 3D model. - - - - - The object is not a Prefab nor an instance of a Prefab. - - - - - The object is a user created Prefab asset. - - - - - The object is an instance of a user created Prefab. - - - - - Enum used to determine how a Prefab should be unpacked. - - - - - Use this to strip away all Prefab information from a Prefab instance. - - - - - Use this mode to only unpack the outermost layer of a Prefab. - - - - - Utility class for any Prefab related operations. - - - - - Called after Prefab instances in the Scene have been updated. - - - - - Applies the added component to the Prefab Asset at the given asset path. - - The interaction mode for this action. - The path of the Prefab Asset to apply to. - The added component on the Prefab instance to apply. - - - - Applies the added GameObject to the Prefab Asset at the given asset path. - - The added GameObject on the Prefab instance to apply. - The path of the Prefab Asset to apply to. - The interaction mode for this action. - - - - Applies all overridden properties on a Prefab instance component or GameObject to the Prefab Asset at the given asset path. - - The object on the Prefab instance to apply. - The path of the Prefab Asset to apply to. - The interaction mode for this action. - - - - Applies all overrides on a Prefab instance to its Prefab Asset. - - The root of the given Prefab instance. - The interaction mode for this action. - - - - Applies a single overridden property on a Prefab instance to the Prefab Asset at the given asset path. - - The SerializedProperty representing the property to apply. - The path of the Prefab Asset to apply to. - The interaction mode for this action. - - - - Removes the component from the Prefab Asset which has the component on it. - - The GameObject on the Prefab instance which the component has been removed from. - The component on the Prefab Asset corresponding to the removed component on the instance. - The interaction mode for this action. - - - - Connects the source Prefab to the game object. - - The disconnected GameObject that you want to reconnect. - The source Prefab to connect to the GameObject. - - - - Creates an empty Prefab at given path. - - The asset path to use for the new empty Prefab. - - A reference to the new Prefab Asset. - - - - - Creates a Prefab from a game object hierarchy. - - The path where the Prefab is saved. - The GameObject that you want to create a Prefab from. - - - A reference to the created Prefab. - - - - - Creates a Prefab from a game object hierarchy. - - The path where the Prefab is saved. - The GameObject that you want to create a Prefab from. - - - A reference to the created Prefab. - - - - - Deprecated. As of 2018.3 this method does nothing. - - - - - - Returns the root GameObject of the Prefab that the supplied GameObject is part of. - - The object to check. - - The Prefab root. - - - - - Returns the topmost GameObject that has the same Prefab parent as target. - - The GameObject to use in the search. - - The GameObject at the root of the Prefab. - - - - - Returns the root GameObject of the Prefab instance if that root Prefab instance is a parent of the Prefab. - - GameObject to process. - - Return the root game object of the Prefab Asset. - - - - - Returns a list of PrefabUtility.AddedComponent objects which contain information about added component overrides on the Prefab instance. - - The Prefab instance to get information about. - - List of objects with information about added components. - - - - - Returns a list of PrefabUtility.AddedGameObject objects which contain information about added GameObjects on the Prefab instance. - - The Prefab instance to get information about. - - List of objects with information about added GameObjects. - - - - - Returns the object of origin for the given object. - - The object to find the corresponding original object from. - - The corresponding object from the original source or null. - - - - - Returns the corresponding asset object of source, or null if it can't be found. - - The object to find the corresponding object from. - - The corresponding object or null. - - - - - Returns the corresponding object of the given object from a given Prefab Asset path. - - The object to find the corresponding object from. - The asset path of the Prefab Asset to get the corresponding object from. - - The corresponding object or null. - - - - - Returns the icon for the given GameObject. - - The GameObject to get an icon for. - - The icon for the GameObject. - - - - - Return the GameObject that is the root of the nearest Prefab instance the object is part of. - - The object to check. Must be a component or GameObject. - - The nearest Prefab instance root. - - - - - Returns a list of objects with information about object overrides on the Prefab instance. - - The Prefab instance to get information about. - If true, components will also be included even if they only contain overrides that are PrefabUtility.IsDefaultOverride|default overrides. False by default. - - List of objects with information about object overrides. - - - - - Returns the GameObject that is the root of the outermost Prefab instance the object is part of. - - The object to check. Must be a component or GameObject. - - The outermost Prefab instance root. - - - - - Returns the asset path of the nearest Prefab instance root the specified object is part of. - - An object in the Prefab instance to get the asset path of. - - The asset path. - - - - - Enum value indicating the type of Prefab Asset, such as Regular Prefab, Model Prefab and Prefab Variant. - - An object that is part of a Prefab Asset or Prefab instance. - - The type of Prefab. - - - - - This function will give you the PrefabInstance object for the outermost Prefab instance the provided object is part of. - - An object from the Prefab instance. - - The Prefab instance handle. - - - - - Enum value with status about whether a Prefab instance is properly connected to its asset. - - An object that is part of a Prefab instance. - - The status of the Prefab instance. - - - - - Retrieves the enclosing Prefab for any object contained within. - - An object contained within a Prefab object. - - The Prefab the object is contained in. - - - - - Returns the parent asset object of source, or null if it can't be found. - - - - - - Given an object, returns its Prefab type (None, if it's not a Prefab). - - - - - - Extract all modifications that are applied to the Prefab instance compared to the parent Prefab. - - - - - - Returns a list of objects with information about removed component overrides on the Prefab instance. - - The Prefab instance to get information about. - - List of objects with information about removed components. - - - - - Returns true if the given Prefab instance has any overrides. - - The root GameObject of the Prefab instance to check. - Set to true to consider default overrides as overrides too. - - Returns true if there are any overrides. - - - - - Instantiate an asset that is referenced by a Prefab and use it on the Prefab instance. - - - - - - Instantiates the given Prefab in a given Scene. - - Prefab Asset to instantiate. - Scene to instantiate the Prefab in. - The parent Transform to be assigned. - - The GameObject at the root of the Prefab. - - - - - Instantiates the given Prefab in a given Scene. - - Prefab Asset to instantiate. - Scene to instantiate the Prefab in. - The parent Transform to be assigned. - - The GameObject at the root of the Prefab. - - - - - Instantiates the given Prefab in a given Scene. - - Prefab Asset to instantiate. - Scene to instantiate the Prefab in. - The parent Transform to be assigned. - - The GameObject at the root of the Prefab. - - - - - Is this component added to a Prefab instance as an override? - - The component to check. - - True if the component is an added component. - - - - - Is this GameObject added as a child to a Prefab instance as an override? - - The GameObject to check. - - True if the GameObject is an added GameObject. - - - - - Is the GameObject the root of any Prefab instance? - - The GameObject to check. - - True if the GameObject is the root GameObject of any Prefab instance. - - - - - Returns true if the given modification is considered a PrefabUtility.IsDefaultOverride|default override. - - The modification for the property in question. - - True if the property is a default override. - - - - - Returns true if the given object is part of an instance where the PrefabInstance object is missing but the given object has a valid corresponding object. - - The object to check. Must be a GameObject or component. - - True if the instance is disconnected. - - - - - Is the GameObject the root of a Prefab instance, excluding nested Prefabs? - - The GameObject to check. - - True if the GameObject is an outermost Prefab instance root. - - - - - Returns true if the given object is part of any kind of Prefab. - - The object to check. Must be a component or GameObject. - - True if the object s part of a Prefab. - - - - - Is this object part of a Prefab that cannot be edited? - - The object to check. Must be a component or GameObject. - - - True if the object is part of a Prefab that cannot be edited. - - - - - Returns true if the given object is part of a Model Prefab Asset or Model Prefab instance. - - The object to check. Must be a component or GameObject. - - True if the given object is part of a Model Prefab. - - - - - Returns true if the given object is part of a Prefab instance and not part of an asset. - - The object to check. Must be a component or GameObject. - - True if the object is part of a Prefab instance that's not inside a Prefab Asset. - - - - - Returns true if the given object is part of a Prefab Asset. - - The object to check. Must be a component or GameObject. - - True is the object is part of a Prefab Asset. - - - - - Returns true if the given object is part of a Prefab instance. - - The object to check. Must be a component or GameObject. - - True if the object is part of a Prefab instance. - - - - - Is this object part of a Prefab that cannot be applied to? - - The object to check. Must be a component or GameObject. - - True if the object is part of a Prefab that cannot be applied to. - - - - - Returns true if the given object is part of a regular Prefab instance or Prefab Asset. - - The object to check. Must be a component or GameObject. - - True if the given object is part of a regular Prefab instance or Prefab Asset. - - - - - Returns true if the given object is part of a Prefab Variant Asset or Prefab Variant instance. - - The object to check. Must be a component or GameObject. - - True if the given object is part of a Prefab Variant. - - - - - Returns true if the given object is part of a Prefab instance but the source asset is missing. - - The object to check. Must be a component or GameObject. - - True if the given object is part of a Prefab instance but the source asset is missing. - - - - - Loads a Prefab Asset at a given path into an isolated Scene and returns the root GameObject of the Prefab. - - The path of the Prefab Asset to load the contents of. - - The root of the loaded contents. - - - - - Loads a Prefab Asset at a given path into a given preview Scene and returns the root GameObject of the Prefab. - - The Scene to load the contents into. - The path of the Prefab Asset to load the contents of. - - - - Force re-merging all Prefab instances of this Prefab. - - - - - - Delegate for method that is called after Prefab instances in the Scene have been updated. - - - - - - Connects the game object to the Prefab that it was last connected to. - - - - - - Causes modifications made to the Prefab instance to be recorded. - - Object to process. - - - - Replaces the targetPrefab with a copy of the game object hierarchy go. - - - - - - - - Replaces the targetPrefab with a copy of the game object hierarchy go. - - - - - - - - Resets the properties of the component or game object to the parent Prefab state. - - - - - - Removes this added component on a Prefab instance. - - The added component on the Prefab instance to revert. - The interaction mode for this action. - - - - Removes this added GameObject from a Prefab instance. - - The interaction mode for this action. - The added GameObject on the Prefab instance to revert. - - - - Reverts all overridden properties on a Prefab instance component or GameObject. - - The interaction mode for this action. - The object on the Prefab instance to revert. - - - - Reverts all overrides on a Prefab instance. - - The root of the Prefab instance. - The interaction mode for this action. - - - - - Reverts all overrides on a Prefab instance. - - The root of the Prefab instance. - The interaction mode for this action. - - - - - Revert a single property override on a Prefab instance. - - The interaction mode for this action. - The SerializedProperty representing the property to revert. - - - - Adds this removed component back on the Prefab instance. - - The removed component on the Prefab instance to revert. - The interaction mode for this action. - The GameObject on the Prefab instance which the component has been removed from. - - - - Use this function to create a Prefab Asset at the given path from the given GameObject, including any childen in the Scene without modifying the input objects. - - The GameObject to save as a Prefab Asset. - The path to save the Prefab at. - The result of the save action, either successful or unsuccessful. Use this together with the console log to get more insight into the save process. - - The root GameObject of the saved Prefab Asset, if available. - - - - - Use this function to create a Prefab Asset at the given path from the given GameObject, including any childen in the Scene without modifying the input objects. - - The GameObject to save as a Prefab Asset. - The path to save the Prefab at. - The result of the save action, either successful or unsuccessful. Use this together with the console log to get more insight into the save process. - - The root GameObject of the saved Prefab Asset, if available. - - - - - Use this function to create a Prefab Asset at the given path from the given GameObject including any childen in the Scene and at the same make the given GameObject into an instance of the new Prefab. - - The GameObject to save as a Prefab and make into a Prefab instance. - The path to save the Prefab at. - The interaction mode to use for this action. - The result of the save action, either successful or unsuccessful. Use this together with the console log to get more insight into the save process. - - The root GameObject of the saved Prefab Asset, if available. - - - - - Use this function to create a Prefab Asset at the given path from the given GameObject including any childen in the Scene and at the same make the given GameObject into an instance of the new Prefab. - - The GameObject to save as a Prefab and make into a Prefab instance. - The path to save the Prefab at. - The interaction mode to use for this action. - The result of the save action, either successful or unsuccessful. Use this together with the console log to get more insight into the save process. - - The root GameObject of the saved Prefab Asset, if available. - - - - - Use this function to save the version of an existing Prefab Asset that exists in memory back to disk. - - Any GameObject that is part of the Prefab Asset to save. - The result of the save action, either successful or unsuccessful. Use this together with the console log to get more insight into the save process. - - The root GameObject of the saved Prefab Asset. - - - - - Use this function to save the version of an existing Prefab Asset that exists in memory back to disk. - - Any GameObject that is part of the Prefab Asset to save. - The result of the save action, either successful or unsuccessful. Use this together with the console log to get more insight into the save process. - - The root GameObject of the saved Prefab Asset. - - - - - Assigns all modifications that are applied to the Prefab instance compared to the parent Prefab. - - - - - - - Releases the content from a Prefab previously loaded with LoadPrefabContents from memory. - - The root of the loaded Prefab contents. - - - - Unpacks a given Prefab instance so that it is replaced with the contents of the Prefab Asset while retaining all override values. - - The root of the Prefab instance to unpack. - Whether to unpack the outermost root or unpack completely. - The interaction mode to use for this action. - - - - This function will unpack the given Prefab instance using the behaviour specified by unpackMode. - - Root GameObject of the Prefab instance. - The unpack mode to use. - - Array of GameObjects representing roots of unpacked Prefab instances. - - - - - (Obsolete: use the SettingsProvider class instead) The PreferenceItem attribute allows you to add preferences sections to the Preferences window. - - - - - Creates a section in the Settings Window called name and invokes the static function following it for the section's GUI. - - - - - - Basic implementation of the PresetSelectorReceiver. - - - - - Applies the Preset to each target. If Preset is null, this method reverts the value of each target. - - - - - - Applies the current selection and then destroys itself. - - - - - - A Preset contains default values for an Object. - - - - - Applies this Preset to the target object. - - The target object that will be updated with the Preset serialized values. - Optional list of property names that are applied to the target. - - Returns true if the target object was successfully updated by the Preset, false otherwise. - - - - - Applies this Preset to the target object. - - The target object that will be updated with the Preset serialized values. - Optional list of property names that are applied to the target. - - Returns true if the target object was successfully updated by the Preset, false otherwise. - - - - - Returns true if this Preset can be applied to the target Object. - - - - - - Constructs a new Preset from a given Object. - - Used by the Preset to know its target type and serialized values. - - - - Determines if the target object has the same serialized values as the Preset. - - The target object to be compared against the Preset. - - Returns true when the target object has the same serialized values as the Preset. Otherwise, returns false. - - - - - Returns the current default Preset assigned to the same Object type. Returns null if there is no matching default. - - - - - - Returns the current default Preset assigned to the same Preset type. Returns null if there is no matching default. - - - - - - Returns a human readable string of this Preset's target fulltype, including namespace. - - - Fullname of the Preset's target type. - - - - - Returns a human readable string of this Preset's target type. - - - Fullname of the Preset's target type. - - - - - Returns true if this Object cannot have a default Preset. - - - - - - Returns true if this Object is not available in the Preset system. - - - - - - Returns true if this Preset cannot be set as the default. - - - - - - Returns true if the Preset type of this Preset is valid. - - - - - Returns a copy of the PropertyModification array owned by this Preset. - - - - - Remove the Preset type from having default values in the project. - - - - - - Sets the Preset as the default for its target type in the project. - - The Preset asset to set as the default. - - Returns true if the Preset is successfully set as the default, or false otherwise. - - - - - Updates this Preset's properties from the given Object's values. The given Object's type must match this Preset's type. - - Used by the Preset to get its new serialized values. - - Returns true if the Preset was updated, false otherwise. - - - - - This class implements a modal window that selects a Preset asset from the Project. - - - - - Draw a Preset button that opens the default PresetSelector using the targets array. - - The Rect where the PresetSelector icon is drawn. - List of objects to which the selected Preset is applied. - - - - Opens a modal window for selecting a Preset. - - List of objects to which the selected Preset is applied. DefaultPresetSelectorReceiver applies the Preset selection. - The selected Preset when the window is opened. Set to 'null' for no selection. - Set to true to show the 'Save current to...' button. Set to false to hide this button. - Object that identifies the type of Preset asset being selected. The modal window filters the selector view based on this object. - The PresetSelectorReceiver instance that the PresetSelector uses to send events. - - - - Opens a modal window for selecting a Preset. - - List of objects to which the selected Preset is applied. DefaultPresetSelectorReceiver applies the Preset selection. - The selected Preset when the window is opened. Set to 'null' for no selection. - Set to true to show the 'Save current to...' button. Set to false to hide this button. - Object that identifies the type of Preset asset being selected. The modal window filters the selector view based on this object. - The PresetSelectorReceiver instance that the PresetSelector uses to send events. - - - - Implement this class to control the selection change when selecting a Preset in the PresetSelector. - - - - - When a new Preset is selected in the modal window, this method is called by PresetSelector. - - This parameter is set to null when 'None' is the new selection in the PresetSelector. - - - - This method is called by the PresetSelector when the modal window is closed. - - - - - - An abstract helper class that provides methods to retrieve arrays of data elements of a generic type. - - - - - Retrieves a subset of entries in an array. - - Index to start indexing the entries. - Number of elements to retrieve. - An array to store the returned data in. - - - - Gets the number of entries in the source array. - - - Number of entries. - - - - - A class that houses data entries related to Connection data, returned by PackedMemorySnapshot.connections. - - - - - An array of indexes into the object array of GC handles referenced by the to property. - - - - - An array of GC handle objects. - - - - - Gets the number of connection entries. - - - The number of entries. - - - - - A class that houses Field Description entry data, returned by PackedMemorySnapshot.fieldDescriptions. - - - - - An array of field names. - - - - - True if this field is static; otherwise false. - - - - - An array of offset values from the start of the class for the fields referenced by the fieldDescriptionName property. - - - - - The typeIndex into PackedMemorySnapshot.typeDescriptions of the type this field belongs to. - - - - - Gets the number of field description entries. - - - The number of entries. - - - - - A class that houses GCHandle data. Returned by PackedMemorySnapshot.gcHandles. - - - - - An array of addresses for the managed objects that the GC handles are referencing. - - - - - Gets the number of GCHandle entries. - - - The number of entries. - - - - - A class that houses MemorySection data, returned by PackedMemorySnapshot.managedHeapSections and PackedMemorySnapshot.managedStacks. - - - - - An array of byte arrays that contain memory dumps. - - - - - An array of addresses of the start location in memory of the memory dumps referenced by the startAddress property. - - - - - Gets the number of managed memory section entries. - - - The number of entries. - - - - - A class that houses native allocation entry data, returned by PackedMemorySnapshot.nativeAllocations. - - - - - An array that contains addresses of native memory allocations. - - - - - The allocation site id of the allocation, used by NativeAllocationSiteEntries.id. - - - - - An array of indexes that indicate which memory region, beginning region, inside region, or end region, that the memory allocation represents. - - - - - An array that specifies, in bytes, how much of the memory in the returned native allocation is not part of your request. The overhead memory is used for allocation headers and other metadata describing the allocation. - - - - - An array specifying, in bytes, the amount of padding used to align the returned native allocation. - - - - - An array of root reference IDs for the allocation. Corresponds to entries in NativeRootReferenceEntries.id array. - - - - - An array containing the total size, in bytes, of the native allocation. - - - - - Gets the number allocation entries. - - - The number of entries. - - - - - A class that houses native allocation site entries, returned by PackedMemorySnapshot.nativeAllocationSites. - - - - - An array of callstack symbols corresponding to this allocation site, referring to NativeCallstackSymbolEntries.symbol. - - - - - An array containing allocation site IDs. - - - - - An array containing memory labels attached to allocation sites. Referenced by index into PackedMemorySnapshot.nativeMemoryLabels. - - - - - Gets the number of native allocation site entries. - - - The number of entries. - - - - - A class housing native callstack symbol data, returned by PackedMemorySnapshot.nativeCallstackSymbols. - - - - - An array of readable stack traces of the callback symbols. - - - - - An array of addresses to the callback symbols, referenced by the NativeAllocationSiteEntries.callstackSymbols property. - - - - - Gets the number of callstack symbol entries. - - - The number of entries. - - - - - A class that houses native memory label data, returned by PackedMemorySnapshot.nativeMemoryLabels. - - - - - An array containing the names of the memory labels. - - - - - Gets the number of memory label entries. - - - The number of entries. - - - - - A class housing native memory region data, returned by PackedMemorySnapshot.nativeMemoryRegions. - - - - - An array containing addresses of the memory regions. Non-leaf entries containing child memory regions are set to 0. - - - - - An array that contains the accumulated size, in bytes, including all of its children, of the memory region. - - - - - An array that contains indexes into the PackedMemorySnapshot.nativeAllocations array that identify the first allocation that the memory region contains. - - - - - An array containing the names of the memory regions. - - - - - An array that contains the number of allocations, including children, that the memory regions contain. - - - - - The parent of this memory region, referenced by index into this entry array. The root memory region contains parent index of -1. - - - - - Gets the number of memory region entries. - - - The number of entries. - - - - - A class that houses native object data, returned by PackedMemorySnapshot.nativeObjects. - - - - - An array the contains the flags attached to the native memory objects referenced in the NativeObjectEntries.nativeObjectAddress array. - - - - - The hide flags attached to this native object. - - - - - The instance id of this native object. - - - - - An array of memory addresses that point to native C++ objects. This matches the "m_CachePtr" field of a UnityEngine.Object. - - - - - An array of indexes into the PackedMemorySnapshot.nativeTypes array used to retrieve the the native C++ type description. - - - - - An array containing the names of the native objects. - - - - - An array containing the root reference ids of the native objects. Corresponds to entries in NativeRootReferenceEntries.id array. - - - - - The size in bytes of this object. - - - - - Gets the number of native object entries. - - - The number of entries. - - - - - A class that houses native root reference data, returned by PackedMemorySnapshot.rootReferences. - - - - - An array that contains the accumulated sizes of all allocations registered for the root references. - - - - - An array that contains the area names of the root references. - - - - - An array that contains the IDs of the root references. - - - - - An array containing the object names of the root references. - - - - - Gets the number of root reference entries. - - - The number of entries. - - - - - A class that houses native type entries, returned by PackedMemorySnapshot.nativeTypes. - - - - - An array of indexes into the PackedMemorySnapshot.nativeTypes array used to retrieve native C++ base class description. - - - - - An array of names of the C++ unity type. - - - - - Gets the number of native type entries. - - - The number of entries. - - - - - Flags that can be set on a Native Object. - - - - - Specifies that the object is marked as DontDestroyOnLoad. - - - - - Specifies that the object is marked as a manager. - - - - - Specifies that the object is set as persistent. - - - - - An extension class that contains member functions to ObjectFlags. - - - - - True if the object is marked as DontDestroyOnLoad; otherwise false. - - The ObjectFlags to compute from (accessible via this). - - Returns true if the object associated with this ObjectFlags is marked as DontDestroyOnLoad. - - - - - True if the object is a manager, otherwise false. - - The ObjectFlags to compute from (accessible via this). - - Returns true if the object associated with this ObjectFlags is a manager. - - - - - True if the object is marked as Persistent, otherwise false. - - The ObjectFlags to operate on (accessible via this). - - Returns true if the object associated with this ObjectFlags is marked as Persistent. - - - - - PackedMemorySnapshot is a compact representation of a memory snapshot that a player has sent through the profiler connection. - - - - - Flags corresponding to the fields present in a returned memory snapshot. - - - - - Connections is an array of from,to pairs that describe which things are keeping which other things alive. - - - - - Array of Field Descriptions, referenced by Type Description entries by array index. - - - - - Path to the memory snapshot file. - - - - - All GC handles in use in the memorysnapshot. - - - - - Array of actual managed heap memory sections. - - - - - Array of managed stacks in a memory snapshot. - - - - - Meta data that was collected during memory snapshot capture. - - - - - Array of native allocation data, captured in C++. - - - - - Array of native allocation site data, captured in C++. - - - - - Array of callstack symbols, used by native allocation site data. - - - - - Array of memory labels, used by native allocation site data. - - - - - Array of native memory regions, which houses native allocations. - - - - - All native C++ objects that were loaded at time of the snapshot. - - - - - Array of native root references, which represent ownership of native allocation data. - - - - - Descriptions of all the C++ unity types the profiled player knows about. - - - - - The time and date at which the snapshot was recorded. - - - - - An array of indexes into PackedMemorySnapshot.typeDescriptions indetifying the type this field belongs to. - - - - - The current snapshot format version. - - - - - Information about the virtual machine running executing the managed code inside the player. - - - - - Converts the specified old format MemoryProfiler.PackedMemorySnapshot object to a new PackedMemorySnapshot format object and writes it to the location and file name specified the the write path. - - The old format snapshot object. - Destination path and file name for the file containing the converted snapshot. - - True if the conversion was successful; otherwise false. - - - - - Disposes of an existing PackedMemorySnapshot object and closes the file reader. - - - - - Load memory snapshot from given file path. - - An absolute file path to load a snapshot file from. - - Memory snapshot. - - - - - Copy the memory snapshot file to the given file path. - - Source memory snapshot. - Where to create copy of memory snapshot. - - - - A class that houses type description entries, returned from PackedMemorySnapshot.typeDescriptions. - - - - - Name of the assembly this type was loaded from. - - - - - The base type for this type, pointed to by an index into PackedMemorySnapshot.typeDescriptions. - - - - - An array containing indices pointing to descriptions of all fields of this type, accessible from PackedMemorySnapshot.fieldDescriptions. - - - - - Flags set for this type description, that define whether this type is an array or a value type, and the array rank of the type. - - - - - Size in bytes of an instance of this type. If this type is an array type, this describes the amount of bytes a single element in the array will take up. - - - - - The actual contents of the bytes that store this types static fields, at the point of time when the snapshot was taken. - - - - - The name of this type. - - - - - The type index of this type. This index is an index into the PackedMemorySnapshot.typeDescriptions array. - - - - - The address in memory that contains the description of this type inside the virtual machine. This can be used to match managed objects in the heap to their corresponding TypeDescription, as the first pointer of a managed object points to its type description. - - - - - The number of type description entries. - - - The number of entries. - - - - - An enum encoding information for a type description about whether it is a value type or an array type, and the rank of the array if the type is an array. Returned by TypeDescriptionEntries.flags. - - - - - Set if this type is an array. - - - - - If TypeFlags.kArray is set, the enum masked by this value will return the rank of the array (1 for a 1-dimensional array, 2 for a 2-dimensional array, etc). - - - - - Set if this value is a value type. If not set, the type is a reference type. - - - - - An extension class that contains member functions to TypeFlags. - - - - - If the type is an array type, retrieves the array rank of the type flags. - - The TypeFlags to compute the array rank of (assessible via this). - - The array rank encoded in the Type Flags. - - - - - Returns whether the flag describes an array type. - - The TypeFlags to compute from (accessible via this). - - Returns true if the Type associated with this TypeFlags is an array. - - - - - Returns whether the type describes a value type. - - The TypeFlags to compute from (accessible via this). - - Returns true if the type associated with this TypeFlags is a value type (as opposed to a reference type). - - - - - Information about a virtual machine that provided a memory snapshot. - - - - - Allocation granularity in bytes used by the virtual machine allocator. - - - - - Offset in bytes inside the object header of an array object where the bounds of the array is stored. - - - - - Size in bytes of the header of an array object. - - - - - Offset in bytes inside the object header of an array object where the size of the array is stored. - - - - - Size in bytes of the header of each managed object. - - - - - Size in bytes of a pointer. - - - - - Base class to derive custom property drawers from. Use this to create custom drawers for your own Serializable classes or for script variables with custom PropertyAttributes. - - - - - The PropertyAttribute for the property. Not applicable for custom class drawers. (Read Only) - - - - - The reflection FieldInfo for the member this property represents. (Read Only) - - - - - Override this method to determine whether the inspector GUI for your property can be cached. - - The SerializedProperty to make the custom GUI for. - - Whether the drawer's UI can be cached. - - - - - Override this method to specify how tall the GUI for this field is in pixels. - - The SerializedProperty to make the custom GUI for. - The label of this property. - - The height in pixels. - - - - - Override this method to make your own GUI for the property. - - Rectangle on the screen to use for the property GUI. - The SerializedProperty to make the custom GUI for. - The label of this property. - - - - Defines a single modified property. - - - - - The value being applied when it is a object reference (which can not be represented as a string). - - - - - Property path of the property being modified (Matches as SerializedProperty.propertyPath). - - - - - Object that will be modified. - - - - - The value being applied. - - - - - The type of the iOS provisioning profile if manual signing is used. - - - - - The provisioning profile type will be determined automatically when building the Xcode project. - - - - - Development provisioning profiles are used to install development apps on test devices. - - - - - Distribution provisioning profiles can be used when uploading the app to the App Store or for Ad Hoc and in house distribution. - - - - - Type of build to generate. - - - - - Package build for installation on either a dev or test kit. - - - - - Build hosted on a PC, for file serving to a dev or test kit. - - - - - Editor API for the Unity Services editor feature. Normally Purchasing is enabled from the Services window, but if writing your own editor extension, this API can be used. - - - - - This Boolean field will cause the Purchasing feature in Unity to be enabled if true, or disabled if false. - - - - - Options for removing assets - - - - - Delete the asset without moving it to the trash. - - - - - The asset should be moved to trash. - - - - - Contains the custom albedo swatch data. - - - - - Color of the albedo swatch that is shown in the physically based rendering validator user interface. - - - - - The maximum luminance value used to validate the albedo for the physically based rendering albedo validator. - - - - - The minimum luminance value used to validate the albedo for the physically based rendering albedo validator. - - - - - Name of the albedo swatch to show in the physically based renderer validator user interface. - - - - - Editor-specific script interface for. - - - - - Returns an array of Rendering.AlbedoSwatchInfo. - - - - - Will return PlatformShaderSettings for given platform and shader hardware tier. - - - - - - - Returns TierSettings for the target build platform and shader hardware tier. - - - - - - - TODO. - - - - - - - Allows you to set the PlatformShaderSettings for the specified platform and shader hardware tier. - - - - - - - - Allows you to set the PlatformShaderSettings for the specified platform and shader hardware tier. - - - - - - - - TODO. - - - - - - - - Used to set up shader settings, per-platform and per-shader-hardware-tier. - - - - - Allows you to specify whether cascaded shadow maps should be used. - - - - - Allows you to specify whether Reflection Probes Blending should be enabled. - - - - - Allows you to specify whether Reflection Probes Box Projection should be used. - - - - - Allows you to select Standard Shader Quality. - - - - - Collection of data used for shader variants generation, including targeted platform data and the keyword set representing a specific shader variant. - - - - - Identifier to classify low, medium and high performance hardware. - - - - - A collection of Rendering.ShaderKeyword that represents a specific platform shader variant. - - - - - Shader compiler used to generate player data shader variants. - - - - - A collection of Rendering.ShaderKeyword that represents a specific shader variant. - - - - - Required shader features by a specific shader. - - - - - Shader compiler used to generate player data shader variants. - - - - - Compiler used with Direct3D 11 and Direct3D 12 graphics API on Windows platforms. - - - - - Compiler used with OpenGL ES 2.0 and WebGL 1.0 graphics APIs on Android, iOS, Windows and WebGL platforms. - - - - - Compiler used with OpenGL ES 3.x and WebGL 2.0 graphics APIs on Android, iOS, Windows and WebGL platforms. - - - - - Compiler used with Metal graphics API on macOS, iOS and tvOS platforms. - - - - - Provide a reasonable value for non initialized variables. - - - - - Compiler used with OpenGL core graphics API on macOS, Linux and Windows platforms. - - - - - Compiler used on PlayStation 4. - - - - - Compiler used on Nintendo Switch. - - - - - Compiler used with Vulkan graphics API on Android, Linux and Windows platforms. - - - - - Compiler used with Direct3D 11 graphics API on XBox One. - - - - - Compiler used with Direct3D 12 graphics API on XBox One. - - - - - Shader quality preset. - - - - - High quality shader preset. - - - - - Low quality shader preset. - - - - - Medium quality shader preset. - - - - - Required shader features for some particular shader. Features are bit flags. - - - - - Indicates that basic shader capability, Shader Model 2.0 level is required. - - - - - - Indicates that compute shader support is required. - - - - - - Indicates the shader requires cubemap array support. - - - - - Indicates that derivative (ddx/ddy) instructions support is required in the fragment shader. - - - - - Indicates that pixel position (SV_Position) input support is required in the fragment shader. - - - - - Indicates the shader must support framebuffer fetch, which is the ability to have in+out fragment shader color params. - - - - - Indicates that geometry shader support is required. - - - - - Indicates the shader must support SV_InstanceID shader input. - - - - - Indicates the shader must have 10 interpolators. - - - - - Indicates the shader must have 15 integers and interpolators in total. Unity bundles them together because it is extremely unlikely a GPU/API will ever exist that only has part of that. - - - - - Indicates the shader must have 32 interpolators - - - - - Indicates the shader must have multiple render targets (at least 4), as in support a fragment shader that can output up to 4 values. - - - - - Indicates the shader must have multiple render targets (at least 8), as in support a fragment shader that can output up to 4 values. - - - - - Indicates the shader requires access to MSAA texture samples. - - - - - No shader requirements. - - - - - Indicates the shader requires have random-write textures (UAVs) support. - - - - - Indicates the shader requires the support of texture sampling in a fragment shader with an explicit mipmap level. - - - - - Indicates the shader requires the support of sparse textures with sampling instructions that return residency information. - - - - - Indicates the shader requires the support of tessellation using a compute shader for control points processing. Metal graphics API requires this feature for tessellation. - - - - - Indicates the shader requires the support of tessellation using the hull and domain shader stages. - - - - - Indicates the shader requires 2D array textures. - - - - - Collection of properties about the specific shader code being compiled. - - - - - Shader. - - - - - Shader pass type for Unity's lighting pipeline. - - - - - Shader stage in the rendering the pipeline. - - - - - Identifies the stage in the rendering pipeline. - - - - - Identifier for the domain shader stage. - - - - - Identifier for the fragment shader stage. - - - - - Identifier for the geometry shader stage. - - - - - Identifier for the hull shader stage. - - - - - Identifier for the vertex shader stage. - - - - - Used to set up per-platorm per-shader-hardware-tier graphics settings. - - - - - Allows you to specify whether cascaded shadow maps should be used. - - - - - Allows you to specify whether Detail Normal Map should be sampled if assigned. - - - - - Allows you to specify whether Light Probe Proxy Volume should be used. - - - - - Setting this field to true enables HDR rendering for this tier. Setting it to false disables HDR rendering for this tier. -See Also: - - - - - The CameraHDRMode to use for this tier. - - - - - Allows you to specify whether Unity should try to use 32-bit shadow maps, where possible. - - - - - The RealtimeGICPUUsage to use for this tier. - - - - - Allows you to specify whether Reflection Probes Blending should be enabled. - - - - - Allows you to specify whether Reflection Probes Box Projection should be used. - - - - - The rendering path that should be used. - - - - - Allows you to specify whether Semitransparent Shadows should be enabled. - - - - - Allows you to select Standard Shader Quality. - - - - - Flags for the PrefabUtility.ReplacePrefab function. - - - - - Connects the passed objects to the Prefab after uploading the Prefab. - - - - - Replaces Prefabs by matching pre-existing connections to the Prefab. - - - - - Replaces the Prefab using name based lookup in the transform hierarchy. - - - - - Resolution dialog setting. - - - - - Never show the resolution dialog. - - - - - Show the resolution dialog on first launch. - - - - - Hide the resolution dialog on first launch. - - - - - SceneAsset is used to reference Scene objects in the Editor. - - - - - Class with information about a component that has been added to a Prefab instance. - - - - - The added component on the Prefab instance. - - - - - See PrefabOverride.Apply. - - - - - - See PrefabOverride.GetAssetObject. - - - - - See PrefabOverride.Revert. - - - - - Class with information about a GameObject that has been added as a child under a Prefab instance. - - - - - The added GameObject on the Prefab instance. - - - - - The sibling index of the added GameObject. - - - - - See PrefabOverride.Apply. - - - - - - See PrefabOverride.GetAssetObject. - - - - - See PrefabOverride.Revert. - - - - - Scene management in the Editor. - - - - - Subscribe to this event to get notified when the active Scene has changed in Edit mode in the Editor. - - Previous active Scene and the new active Scene. - - - - The number of loaded Scenes. - - - - - This event is called after a new Scene has been created. - - - - - - Loads this SceneAsset when you start Play Mode. - - - - - Controls whether cross-Scene references are allowed in the Editor. - - - - - The current amount of active preview Scenes. - - - - - This event is called after a Scene has been closed in the editor. - - - - - - This event is called before closing an open Scene after you have requested that the Scene is closed. - - - - - - This event is called after a Scene has been opened in the editor. - - - - - - This event is called before opening an existing Scene. - - - - - - This event is called after a Scene has been saved. - - - - - - This event is called before a Scene is saved disk after you have requested the Scene to be saved. - - - - - - Closes a preview Scene created by NewPreviewScene. - - The preview Scene to close. - - True if the Scene was successfully closed. - - - - - Close the Scene. If removeScene flag is true, the closed Scene will also be removed from EditorSceneManager. - - The Scene to be closed/removed. - Bool flag to indicate if the Scene should be removed after closing. - - Returns true if the Scene is closed/removed. - - - - - Detects cross-Scene references in a Scene. - - Scene to check for cross-Scene references. - - Was any cross-Scene references found. - - - - - Shows a save dialog if an Untitled Scene exists in the current Scene manager setup. - - Text shown in the save dialog. - - True if the Scene is saved or if there is no Untitled Scene. - - - - - Returns the current setup of the SceneManager. - - - An array of SceneSetup classes - one item for each Scene. - - - - - Is the Scene a preview Scene? - - The Scene to check. - - True if the Scene is a preview Scene. - - - - - Is this object part of a preview Scene? - - The object to check. - - True if this object is part of a preview Scene. - - - - - This method allows you to load a Scene during playmode in the editor, without requiring the Scene to be included in the Scene list. - - Path to Scene to load. - Parameters to apply to loading. See SceneManagement.LoadSceneParameters. - - Use the AsyncOperation to determine if the operation has completed. - - - - - This method allows you to load a Scene during playmode in the editor, without requiring the Scene to be included in the Scene list. - - Path to Scene to load. - Parameters used to load the Scene SceneManagement.LoadSceneParameters. - - Scene that is loading. - - - - - Mark all the loaded Scenes as modified. - - - - - Mark the specified Scene as modified. - - The Scene to be marked as modified. - - Whether the Scene was successfully marked as dirty. - - - - - Allows you to reorder the Scenes currently open in the Hierarchy window. Moves the source Scene so it comes after the destination Scene. - - The Scene to move. - The Scene which should come directly before the source Scene in the hierarchy. - - - - Allows you to reorder the Scenes currently open in the Hierarchy window. Moves the source Scene so it comes before the destination Scene. - - The Scene to move. - The Scene which should come directly after the source Scene in the hierarchy. - - - - Creates a new preview Scene. Any object added to a preview Scene will only be rendered in that Scene. - - - The new preview Scene. - - - - - Create a new Scene. - - Whether the new Scene should use the default set of GameObjects. - Whether to keep existing Scenes open. - - A reference to the new Scene. - - - - - Callbacks of this type which have been added to the newSceneCreated event are called after a new Scene has been created. - - The Scene that was created. - The setup mode used when creating the Scene. - The mode used for creating the Scene. - - - - Open a Scene in the Editor. - - The path of the Scene. This should be relative to the Project folder; for example, "AssetsMyScenesMyScene.unity". - Allows you to select how to open the specified Scene, and whether to keep existing Scenes in the Hierarchy. See SceneManagement.OpenSceneMode for more information about the options. - - A reference to the opened Scene. - - - - - Restore the setup of the SceneManager. - - In this array, at least one Scene should be loaded, and there must be one active Scene. - - - - Asks you if you want to save the modified Scene or Scenes. - - - This returns true if you chose to save the Scene or Scenes, and returns false if you pressed Cancel. - - - - - Asks whether the modfied input Scenes should be saved. - - Scenes that should be saved if they are modified. - - Your choice of whether to save or not save the Scenes. - - - - - Save all open Scenes. - - - Returns true if all open Scenes are successfully saved. - - - - - Save a Scene. - - The Scene to be saved. - The file path to save the Scene to. If the path is empty, the current open Scene is overwritten. If it has not yet been saved at all, a save dialog is shown. - If set to true, the Scene is saved without changing the current Scene, and without clearing the unsaved changes marker. - - True if the save succeeded, otherwise false. - - - - - Save a list of Scenes. - - List of Scenes that should be saved. - - True if the save succeeded. Otherwise false. - - - - - Callbacks of this type which have been added to the sceneClosed event are called immediately after the Scene has been closed. - - The Scene that was closed. - - - - Callbacks of this type which have been added to the sceneClosing event are called just before a Scene is closed. - - The Scene that is going to be closed. - Whether or not the Scene is also going to be removed from the Scene Manager after closing. If true the Scene is removed after closing. - - - - Callbacks of this type which have been added to the sceneOpened event are called after a Scene has been opened. - - The Scene that was opened. - The mode used to open the Scene. - - - - Callbacks of this type which have been added to the sceneOpening event are called just before opening a Scene. - - Path of the Scene to be opened. This is relative to the Project path. - Mode that is used when opening the Scene. - - - - Callbacks of this type which have been added to the sceneSaved event are called after a Scene has been saved. - - The Scene that was saved. - - - - Callbacks of this type which have been added to the sceneSaving event are called just before the Scene is saved. - - The Scene to be saved. - The path to which the Scene is saved. - - - - Used when creating a new Scene in the Editor. - - - - - The newly created Scene is added to the current open Scenes. - - - - - All current open Scenes are closed and the newly created Scene are opened. - - - - - Used when creating a new Scene in the Editor. - - - - - Adds default game objects to the new Scene (a light and camera). - - - - - No game objects are added to the new Scene. - - - - - Class with information about an object on a Prefab instance with overridden properties. - - - - - The object on the Prefab instance. - - - - - See PrefabOverride.Apply. - - - - - - See PrefabOverride.GetAssetObject. - - - - - See PrefabOverride.Revert. - - - - - Used when opening a Scene in the Editor to specify how a Scene should be opened. - - - - - Adds a Scene to the current open Scenes and loads it. - - - - - Adds a Scene to the current open Scenes without loading it. It will show up as 'unloaded' in the Hierarchy Window. - - - - - Closes all current open Scenes and loads a Scene. - - - - - Class with information about a given override on a Prefab instance. - - - - - Applies the override to the Prefab Asset at the given path. - - The path of the Prefab Asset to apply to. - - - - Applies the override to the Prefab Asset at the given path. - - The path of the Prefab Asset to apply to. - - - - Finds the object in the Prefab Asset at the given path which will be applied to. - - The asset path of the Prefab Asset to apply to. - - The object inside the Prefab Asset affected by the override. - - - - - Returns the asset object of the override in the outermost Prefab that the Prefab instance comes from. - - - The object inside the Prefab Asset affected by the override. - - - - - Reverts the override on the Prefab instance. - - - - - Class with information about a component that has been removed from a Prefab instance. - - - - - The components on the Prefab Asset which has been removed on the Prefab instance. - - - - - The GameObject on the Prefab instance that the component has been removed from. - - - - - See PrefabOverride.Apply. - - - - - - See PrefabOverride.GetAssetObject. - - - - - See PrefabOverride.Revert. - - - - - The setup information for a Scene in the SceneManager. This cannot be used in Play Mode. - - - - - If the Scene is active. - - - - - If the Scene is loaded. - - - - - Path of the Scene. Should be relative to the project folder. Like: "AssetsMyScenesMyScene.unity". - - - - - Struct that represents a stage handle. - - - - - Does the stage contain the given GameObject? - - The GameObject to check. - - True if the stage contains the given GameObject. - - - - - Returns the first active loaded object of the given type. - - - This returns the object that matches the specified type. It returns null if no object matches the type. - - - - - Returns a list of all active loaded objects of the given type. - - - An array of objects found matching the type specified. - - - - - Is this stage handle valid? - - - True if the stage handle is valid. - - - - - Utility methods related to stages. - - - - - Get the current stage being edited. - - - The current stage. - - - - - Get the main stage which contains all the currently open regular Scenes. - - - The main stage. - - - - - Get the stage in which the given GameObject exists. - - The GameObject to find the stage of. - - The stage of the GameObject. - - - - - Get the stage in which the given Scene exists. - - The Scene to find the stage of. - - The stage of the Scene. - - - - - Navigate the Editor to the previous stage. - - - - - Navigate the Editor to the main stage. - - - - - Is the given GameObject rendered by the given Camera? - - The GameObject to check. - The camera to check. - - True if the GameObject is rendered by the camera. - - - - - Place the given GameObject in the current stage being edited. - - The GameObject to be placed in the current stage. - - - - SceneView class. - - - - - The current draw mode for the Scene view camera. - - - - - Is the Scene view in 2D mode? - - - - - Event that is fired when the selected camera mode changes. - - - - - - Event that is fired when validating camera modes for the Scene view camera. - - - - - - Gets the current SceneViewState which can be used to modify the Scene view debug options. - - - - - Add a custom camera mode to the Scene view camera mode list. - - The name for the new mode. - The section in which the new mode will be added. This can be an existing or new section. - - A CameraMode with the provided name and section. - - - - - Describes a built in Scene view mode. - - - - - The draw mode associated with the CameraMode. - - - - - The name of the CameraMode. - - - - - The section the CameraMode belongs to. - - - - - Remove all user-defined camera modes. - - - - - Frames the given bounds in the Scene view. - - The bounds to frame in the Scene view. - - - True if the given bounds can be encompassed in the Scene view, otherwise false. - - - - - Frame the object selection in the Scene view. - - Whether the view should be locked to the selection. - - True if the selection can be encompassed in the Scene view, otherwise false. - - - - - Frame the object selection in the Scene view. - - Whether the view should be locked to the selection. - - True if the selection can be encompassed in the Scene view, otherwise false. - - - - - Returns a CameraMode corresponding to a builtin DrawCameraMode. - - The mode to look up. - - - - - Returns true if mode is enabled in the current rendering setup, including custom validators. - - A CameraMode to check. - - - - Returns true if mode is enabled in the current rendering setup, including custom validators. - - A CameraMode to check. - - - - Override this method to control whether the Scene view should change when you switch from one stage to another stage. - - - True if the Scene view automatically reacts to stage changes. - - - - - Derive from this class to create an editor wizard. - - - - - Allows you to set the text shown on the create button of the wizard. - - - - - Allows you to set the error text of the wizard. - - - - - Allows you to set the help text of the wizard. - - - - - Allows you to enable and disable the wizard create button, so that the user can not click it. - - - - - Allows you to set the text shown on the optional other button of the wizard. Leave this parameter out to leave the button out. - - - - - Creates a wizard. - - The title shown at the top of the wizard window. - - The wizard. - - - - - Creates a wizard. - - The title shown at the top of the wizard window. - The text shown on the create button. - The text shown on the optional other button. Leave this parameter out to leave the button out. - - The wizard. - - - - - Creates a wizard. - - The title shown at the top of the wizard window. - The text shown on the create button. - The text shown on the optional other button. Leave this parameter out to leave the button out. - - The wizard. - - - - - Creates a wizard. - - The title shown at the top of the wizard window. - The class implementing the wizard. It has to derive from ScriptableWizard. - The text shown on the create button. - The text shown on the optional other button. Leave this parameter out to leave the button out. - - The wizard. - - - - - Will be called for drawing contents when the ScriptableWizard needs to update its GUI. - - - Returns true if any property has been modified. - - - - - Script call optimization level. - - - - - Script method call overhead decreased at the expense of limited compatibility. - - - - - Default setting. - - - - - Represents different C# compilers that can be used to compile C# scripts. - - - - - Mono C# Compiler. - - - - - Roslyn C# Compiler. - - - - - Scripting implementation (backend). - - - - - Unity's .NET runtime. - - - - - The standard Mono 2.6 runtime. - - - - - Microsoft's .NET runtime. - - - - - Available scripting runtimes to be used by the Editor and Players. - - - - - Use the most recent version of the scripting runtime available. - - - - - Use the stable version of the scripting runtime. - - - - - Access to the selection in the editor. - - - - - Returns the current context object, as was set via SetActiveObjectWithContext. - - - - - Returns the active game object. (The one shown in the inspector). - - - - - Returns the instanceID of the actual object selection. Includes Prefabs, non-modifiable objects. - - - - - Returns the actual object selection. Includes Prefabs, non-modifiable objects. - - - - - Returns the active transform. (The one shown in the inspector). - - - - - Returns the guids of the selected assets. - - - - - Returns the actual game object selection. Includes Prefabs, non-modifiable objects. - - - - - The actual unfiltered selection from the Scene returned as instance ids instead of objects. - - - - - The actual unfiltered selection from the Scene. - - - - - Delegate callback triggered when currently active/selected item has changed. - - - - - Returns the top level selection, excluding Prefabs. - - - - - Returns whether an object is contained in the current selection. - - - - - - - Returns whether an object is contained in the current selection. - - - - - - - Returns the current selection filtered by type and mode. - - Only objects of this type will be retrieved. - Further options to refine the selection. - - - - Allows for fine grained control of the selection type using the SelectionMode bitmask. - - Options for refining the selection. - - - - Selects an object with a context. - - Object being selected (will be equal activeObject). - Context object. - - - - SelectionMode can be used to tweak the selection returned by Selection.GetTransforms. - - - - - Only return objects that are assets in the Asset directory. - - - - - Return the selection and all child transforms of the selection. - - - - - If the selection contains folders, also include all assets and subfolders within that folder in the file hierarchy. - - - - - Excludes any objects which shall not be modified. - - - - - Excludes any Prefabs from the selection. - - - - - Only return the topmost selected transform. A selected child of another selected transform will be filtered out. - - - - - Return the whole selection. - - - - - Behavior of semantic merge. - - - - - Disable use of semantic merging. - - - - - SerializedObject and SerializedProperty are classes for editing serialized fields on Object|Unity objects in a completely generic way. These classes automatically handle dirtying individual serialized fields so they will be processed by the Undo system and styled correctly for Prefab overrides when drawn in the Inspector. - - - - - The context used to store and resolve ExposedReference types. This is set by the SerializedObject constructor. - - - - - Is true when the SerializedObject has a modified property that has not been applied. - - - - - Does the serialized object represents multiple objects due to multi-object editing? (Read Only) - - - - - Defines the maximum size beyond which arrays cannot be edited when multiple objects are selected. - - - - - The inspected object (Read Only). - - - - - The inspected objects (Read Only). - - - - - Apply property modifications. - - - - - Applies property modifications without registering an undo operation. - - - - - Copies a value from a SerializedProperty to the corresponding serialized property on the serialized object. - - - - - - Copies a changed value from a SerializedProperty to the corresponding serialized property on the serialized object. - - - - - - Create SerializedObject for inspected object. - - - - - - Create SerializedObject for inspected object. - - - - - - Create SerializedObject for inspected object by specifying a context to be used to store and resolve ExposedReference types. - - - - - - - Create SerializedObject for inspected object by specifying a context to be used to store and resolve ExposedReference types. - - - - - - - Find serialized property by name. - - - - - - Get the first serialized property. - - - - - Update hasMultipleDifferentValues cache on the next Update() call. - - - - - Update serialized object's representation. - - - - - This has been made obsolete. See SerializedObject.UpdateIfRequiredOrScript instead. - - - - - Update serialized object's representation, only if the object has been modified since the last call to Update or if it is a script. - - - - - SerializedProperty and SerializedObject are classes for editing properties on objects in a completely generic way that automatically handles undo and styling UI for Prefabs. - - - - - Value of a animation curve property. - - - - - Type name of the element in an array property. (Read Only) - - - - - The number of elements in the array. If the SerializedObject contains multiple objects it will return the smallest number of elements. So it is always possible to iterate through the SerializedObject and only get properties found in all objects. - - - - - Value of a boolean property. - - - - - Value of bounds with integer values property. - - - - - Value of bounds property. - - - - - Value of a color property. - - - - - Nesting depth of the property. (Read Only) - - - - - Nice display name of the property. (Read Only) - - - - - Value of a float property as a double. - - - - - Is this property editable? (Read Only) - - - - - Display-friendly names of enumeration of an enum property. - - - - - Names of enumeration of an enum property. - - - - - Enum index of an enum property. - - - - - A reference to another Object in the Scene. This reference is resolved in the context of the SerializedObject containing the SerializedProperty. - - - - - The number of elements in the fixed buffer. (Read Only) - - - - - Value of a float property. - - - - - Does it have child properties? (Read Only) - - - - - Does this property represent multiple different values due to multi-object editing? (Read Only) - - - - - Does it have visible child properties? (Read Only) - - - - - Value of an integer property. - - - - - Is this property an array? (Read Only) - - - - - Allows you to check whether his property is a PrefabUtility.IsDefaultOverride|default override. - -Certain properties on Prefab instances are default overrides. - -See PrefabUtility.IsDefaultOverride for more information. - - - - - Is this property expanded in the inspector? - - - - - Is this property a fixed buffer? (Read Only) - - - - - Is property part of a Prefab instance? (Read Only) - - - - - Value of a integer property as a long. - - - - - Name of the property. (Read Only) - - - - - Value of an object reference property. - - - - - Allows you to check whether a property's value is overriden (i.e. different to the Prefab it belongs to). - - - - - Full path of the property. (Read Only) - - - - - Type of this property (Read Only). - - - - - Value of a quaternion property. - - - - - Value of a rectangle with integer values property. - - - - - Value of a rectangle property. - - - - - SerializedObject this property belongs to (Read Only). - - - - - Value of a string property. - - - - - Tooltip of the property. (Read Only) - - - - - Type name of the property. (Read Only) - - - - - Value of a 2D integer vector property. - - - - - Value of a 2D vector property. - - - - - Value of a 3D integer vector property. - - - - - Value of a 3D vector property. - - - - - Value of a 4D vector property. - - - - - Remove all elements from the array. - - - - - Returns a copy of the SerializedProperty iterator in its current state. This is useful if you want to keep a reference to the current property but continue with the iteration. - - - - - Count visible children of this property, including this property itself. - - - - - Count remaining visible properties. - - - - - Compares the data for two SerializedProperties. This method ignores paths and SerializedObjects. - - - - - - - Delete the element at the specified index in the array. - - - - - - Deletes the serialized property. - - - - - Duplicates the serialized property. - - - - - See if contained serialized properties are equal. - - - - - - - Retrieves the SerializedProperty at a relative path to the current property. - - - - - - Returns the element at the specified index in the array. - - - - - - Retrieves the SerializedProperty that defines the end range of this property. - - - - - - Retrieves the SerializedProperty that defines the end range of this property. - - - - - - Retrieves an iterator that allows you to iterator over the current nexting of a serialized property. - - - - - Returns the element at the specified index in the fixed buffer. - - - - - - Insert an empty element at the specified index in the array. - - - - - - Move an array element from srcIndex to dstIndex. - - - - - - - Move to next property. - - - - - - Move to next visible property. - - - - - - Move to first property of the object. - - - - - Type of a SerializedProperty. - - - - - AnimationCurve property. - - - - - Array size property. - - - - - Boolean property. - - - - - Bounds property. - - - - - Bounds with Integer values property. - - - - - Character property. - - - - - Color property. - - - - - Enumeration property. - - - - - A reference to another Object in the Scene. This is done via an ExposedReference type and resolves to a reference to an Object that exists in the context of the SerializedObject containing the SerializedProperty. - - - - - Fixed buffer size property. - - - - - Float property. - - - - - Gradient property. - - - - - Integer property. - - - - - LayerMask property. - - - - - Reference to another object. - - - - - Quaternion property. - - - - - Rectangle property. - - - - - Rectangle with Integer values property. - - - - - String property. - - - - - 2D vector property. - - - - - 2D integer vector property. - - - - - 3D vector property. - - - - - 3D integer vector property. - - - - - 4D vector property. - - - - - SessionState is a Key-Value Store intended for storing and retrieving Editor session state that should survive assembly reloading. - - - - - Erase a Boolean entry in the key-value store. - - - - - - Erase a Float entry in the key-value store. - - - - - - Erase an Integer entry in the key-value store. - - - - - - Erase an Integer array entry in the key-value store. - - - - - - Erase a String entry in the key-value store. - - - - - - Erase a Vector3 entry in the key-value store. - - - - - - Retrieve a Boolean value. - - - - - - - Retrieve a Float value. - - - - - - - Retrieve an Integer value. - - - - - - - Retrieve an Integer array. - - - - - - - Retrieve a String value. - - - - - - - Retrieve a Vector3. - - - - - - - Store a Boolean value. - - - - - - - Store a Float value. - - - - - - - Store an Integer value. - - - - - - - Store an Integer array. - - - - - - - Store a String value. - - - - - - - Store a Vector3. - - - - - - - SettingsProvider is the configuration class that specifies how a Project setting or a preference should appear in the Settings or Preferences window. - - - - - Overrides SettingsProvider.OnActivate. - - - - - Overrides SettingsProvider.OnDeactivate. - - - - - Overrides SettingsProvider.OnFooterBarGUI. - - - - - Overrides SettingsProvider.OnGUI. - - - - - Overrides SettingsProvider.HasSearchInterest. - - - - - Gets or sets the list of keywords to compare against what the user is searching for. When the user enters values in the search box on the Settings window, SettingsProvider.HasSearchInterest tries to match those keywords to this list. - - - - - Gets or sets the display name of the SettingsProvider as it appears in the Settings window. If not set, the Settings window uses last token of SettingsProvider.settingsPath instead. - - - - - Gets the Scope of the SettingsProvider. The Scope determines whether the SettingsProvider appears in the Preferences window (SettingsScope.User) or the Settings window (SettingsScope.Project). - - - - - Gets Path used to place the SettingsProvider in the tree view of the Settings window. The path should be unique among all other settings paths and should use "/" as its separator. - - - - - Overrides SettingsProvider.OnTitleBarGUI. - - - - - Creates a new SettingsProvider. - - Path of the settings in the Settings window. Uses "/" as separator. The last token becomes the settings label if none is provided. - Scope of the Settings. The Scope determines where the setting appears: in the Settings or the Preferences windows. - List of keywords to compare against what the user is searching for. When the user enters values in the search box on the Settings window, SettingsProvider.HasSearchInterest tries to match those keywords to this list. - - - - - Extract search keywords from all public static memebers in a specific Type. - - - Returns the list of keywords extracted from the static GUIContent. - - - - - Extract search keywords from the serialized properties of an Asset at a specific path. - - Path of the Asset on disk. - - Returns the list of keywords. - - - - - Extract search keywords from from the serialized properties of a SerializedObject. - - Object to extract properties from. - - Returns the list of keywords. - - - - - Checks whether the SettingsProvider should appear when the user types something in the Settings window search box. SettingsProvider tries to match the search terms (even partially) to any of the SettingsProvider.keywords. The search is case insensitive. - - Search terms that the user entered in the search box on the Settings window. - - True if the SettingsProvider matched the search term and if it should appear. - - - - - Use this function to implement a handler for when the user clicks on the Settings in the Settings window. You can fetch a settings Asset or set up UIElements UI from this function. - - Search context in the search box on the Settings window. - Root of the UIElements tree. If you add to this root, the SettingsProvider uses UIElements instead of calling SettingsProvider.OnGUI to build the UI. If you do not add to this VisualElement, then you must use the IMGUI to build the UI. - - - - Use this function to implement a handler for when the user clicks on another setting or when the Settings window closes. - - - - - Use this function to override drawing the footer for the SettingsProvider using IMGUI. - - - - - Use this function to draw the UI based on IMGUI. This assumes you haven't added any children to the rootElement passed to the OnActivate function. - - Search context for the Settings window. Used to show or hide relevant properties. - - - - Use this function to override drawing the title for the SettingsProvider using IMGUI. This allows you to add custom UI (such as a toolbar button) next to the title. AssetSettingsProvider uses this mecanism to display the "add to preset" and the "help" buttons. - - - - - Request the SettingsWindow for a repaint. - - - - - Attribute used to register a new SettingsProvider. Use this attribute to decorate a function that returns an instance of a SettingsProvider. If the function returns null, no SettingsProvider appears in the Settings window. - - - - - Creates a new SettingsProviderAttribute used to register new SettingsProvider. - - - - - Attribute used to register multiple SettingsProvider items. Use this attribute to decorate a function that returns an array of SettingsProvider instances. If the function returns null, no SettingsProvider appears in the Settings window. - - - - - Creates a SettingsProviderGroupAttribute used to register multiple SettingsProviders. - - - - - Sets the scope of a SettingsProvider. The Scope determines where it appears in the UI. For example, whether it appears with the Project settings in the Settings window, or in the Preferences window, or in both windows. - - - - - The SettingsProvider appears only in the Project Settings window. - - - - - The SettingsProvider appears only in the Preferences window. - - - - - This class provides global APIs to interact with the Settings window. - - - - - Use this function to notify the SettingsService that a SettingsProvider changed. - - - - - Open the Project Settings window with the specified settings item already selected. - - Settings paths of the item to select (for example, 'ProjectPlayer' or 'ProjectQuality'). - - Returns an instance to the Settings window. - - - - - Open the Preferences window with the specified settings item already selected. - - Settings path of the item to select (for example, 'PreferencesKeys' or 'Preferences2D'). - - Returns an instance to the Settings window. - - - - - This class describes a shader. - - - - - Returns the active subshader or null if none is currently active. - - - - - Returns the index of the active subshader or -1 if none is currently active. - - - - - Get a subshader. - - The index of the subshader. - - The associated subshader or null if none exists. - - - - - This class describes a pass of a subshader. - - - - - The name of this pass (may be empty). - - - - - The source code for this pass. - - - - - The shader attached to this data set. - - - - - This class describes a subshader. - - - - - Get a pass of a subshader. - - The index of the pass. - - The specified pass or null, if none exists. - - - - - The number of passes for this subshader. - - - - - The number of subshaders used by this shader. - - - - - Abstract class to derive from for defining custom GUI for shader properties and for extending the material preview. - - - - - This method is called when a new shader has been selected for a Material. - - The material the newShader should be assigned to. - Previous shader. - New shader to assign to the material. - - - - Find shader properties. - - Name of the material property. - The array of available properties. - If true then this method will throw an exception if a property with propertyName was not found. - - The material property found, otherwise null. - - - - - Find shader properties. - - Name of the material property. - The array of available properties. - If true then this method will throw an exception if a property with propertyName was not found. - - The material property found, otherwise null. - - - - - This method is called when the ShaderGUI is being closed. - - - - - - To define a custom shader GUI use the methods of materialEditor to render controls for the properties array. - - The MaterialEditor that are calling this OnGUI (the 'owner'). - Material properties of the current selected shader. - - - - Override for extending the rendering of the Preview area or completly replace the preview (by not calling base.OnMaterialPreviewGUI). - - The MaterialEditor that are calling this method (the 'owner'). - Preview rect. - Style for the background. - - - - Override for extending the functionality of the toolbar of the preview area or completly replace the toolbar by not calling base.OnMaterialPreviewSettingsGUI. - - The MaterialEditor that are calling this method (the 'owner'). - - - - Shader importer lets you modify shader import settings from Editor scripts. - - - - - Gets the default texture assigned to the shader importer for the shader property with given name. - - - - - - Gets the non-modifiable texture assigned to the shader importer for the shader property with given name. - - - - - - Gets the reference to the shader imported by this importer. - - - - - Sets the default textures for each texture material property. - - - - - - - Sets the non-modifiable textures for each texture material property. - - - - - - - This attribute is no longer supported. - - - - - Contains the following information about a shader: --If the shader has compilation errors. --If the shader is supported on the currently selected platform. --The name of the shader. - - - - - True if the shader has compilation errors. - - - - - The name of the shader. - - - - - True if the shader is supported on the currently selected platform. - - - - - Utility functions to assist with working with shaders from the editor. - - - - - Does the current hardware support render textues. - - - - - Clear compile time errors for the given shader. - - - - - - Returns an array of ShaderInfo of all available shaders. That includes built-in shaders. - - - ShaderInfo array of all available shaders. - - - - - Get the number of properties in Shader s. - - The shader to check against. - - - - Get the description of the shader propery at index propertyIdx of Shader s. - - The shader to check against. - The property index to use. - - - - Get the name of the shader propery at index propertyIdx of Shader s. - - The shader to check against. - The property index to use. - - - - Get the ShaderProperyType of the shader propery at index propertyIdx of Shader s. - - The shader to check against. - The property index to use. - - - - Get Limits for a range property at index propertyIdx of Shader s. - - Which value to get: 0 = default, 1 = min, 2 = max. - The shader to check against. - The property index to use. - - - - Get the shader data for a specific shader. - - The shader to get data from. - - The shader data for the provided shader. - - - - - Gets texture dimension of a shader property. - - The shader to get the property from. - The property index to use. - - Texture dimension. - - - - - Is the shader propery at index propertyIdx of Shader s hidden? - - The shader to check against. - The property index to use. - - - - Is the shader propery at index propertyIdx of Shader s a NonModifiableTextureProperty? - - The shader to check against. - The property index to use. - - - - Register a user created shader. - - - - - - Type of a given texture property. - - - - - Color Property. - - - - - Float Property. - - - - - Range Property. - - - - - Texture Property. - - - - - Vector Property. - - - - - Structure to hold camera data extracted from a SketchUp file. - - - - - Aspect ratio of the camera. - - - - - Field of view of the camera. - - - - - Indicate if the camera is using a perspective or orthogonal projection. - - - - - The position the camera is looking at. - - - - - The orthogonal projection size of the camera. This value only make sense if SketchUpImportCamera.isPerspective is false. - - - - - The position of the camera. - - - - - Up vector of the camera. - - - - - Derives from AssetImporter to handle importing of SketchUp files. - - - - - Retrieves the latitude Geo Coordinate imported from the SketchUp file. - - - - - Retrieves the longitude Geo Coordinate imported from the SketchUp file. - - - - - Retrieves the north correction value imported from the SketchUp file. - - - - - The default camera or the camera of the active Scene which the SketchUp file was saved with. - - - The default camera. - - - - - The method returns an array of SketchUpImportScene which represents SketchUp scenes. - - - Array of scenes extracted from a SketchUp file. - - - - - Structure to hold scene data extracted from a SketchUp file. - - - - - The camera data of the SketchUp scene. - - - - - The name of the SketchUp scene. - - - - - AssetImportor for importing SpeedTree model assets. - - - - - Gets and sets a default alpha test reference values. - - - - - Indicates if the cross-fade LOD transition, applied to the last mesh LOD and the billboard, should be animated. - - - - - Returns the best-possible wind quality on this asset (configured in SpeedTree modeler). - - - - - Proportion of the last 3D mesh LOD region width which is used for cross-fading to billboard tree. - - - - - Gets and sets an array of booleans to enable shadow casting for each LOD. - - - - - Gets and sets an array of booleans to enable normal mapping for each LOD. - - - - - Gets and sets an array of booleans to enable Hue variation effect for each LOD. - - - - - Enables smooth LOD transitions. - - - - - Gets and sets an array of booleans to enable Subsurface effect for each LOD (affects only SpeedTree v8 assets). - - - - - Proportion of the billboard LOD region width which is used for fading out the billboard. - - - - - Tells if there is a billboard LOD. - - - - - Tells if the SPM file has been previously imported. - - - - - Gets and sets a default Hue variation color and amount (in alpha). - - - - - Returns true if the asset is a SpeedTree v8 asset. - - - - - Gets and sets a default main color. - - - - - Returns the folder path where generated materials will be placed in. - - - - - Material import location options. - - - - - Gets and sets an array of booleans to enable shadow receiving for each LOD. - - - - - How much to scale the tree model compared to what is in the .spm file. - - - - - Gets and sets a default Shininess value. - - - - - Gets and sets a default specular color. - - - - - Gets and sets an array of booleans to enable Light Probe lighting for each LOD. - - - - - Gets and sets an array of integers of the wind qualities on each LOD. Values will be clampped by bestWindQuality internally. - - - - - Gets an array of name strings for wind quality value. - - - - - Construct a new SpeedTreeImporter object. - - - - - Generates all necessary materials under materialFolderPath. If Version Control is enabled please first check out the folder. - - - - - Gets and sets an array of floats of each LOD's screen height value. - - - - - Material import location options. - - - - - Extract the materials and textures from the model. - - - - - Unity imports materials as sub-assets. - - - - - Search the project for matching materials and use them instead of the internal materials. - - The path to search for matching materials. - - Returns true if any materials have been remapped, otherwise false. - - - - - The style of builtin splash screen to use. - - - - - Dark background with light logo and text. - - - - - White background with dark logo and text. - - - - - Texture importer modes for Sprite import. - - - - - Sprites are multiple image sections extracted from the texture. - - - - - Graphic is not a Sprite. - - - - - Sprite has it own mesh outline defined. - - - - - Sprite is a single image section extracted automatically from the texture. - - - - - Editor data used in producing a Sprite. - - - - - Edge-relative alignment of the sprite graphic. - - - - - Edge border size for a sprite (in pixels). - - - - - Name of the Sprite. - - - - - The pivot point of the Sprite, relative to its bounding rectangle. - - - - - Bounding rectangle of the sprite's graphic within the atlas image. - - - - - Sprite Packer mode for the current project. - - - - - Always maintain an up-to-date sprite atlas cache for Sprite with packing tag (legacy). - - - - - Always pack all the SpriteAtlas. - - - - - Updates the sprite atlas cache when the Player or bundles builds containing Sprite with the legacy packing tag. - - - - - Pack all the SpriteAtlas when building player/bundles. - - - - - Doesn't pack sprites. - - - - - Abstract class that is used by systems to encapsulate Sprite data representation. Currently this is used by Sprite Editor Window. - - - - - SpriteAlignment that represents the pivot value for the Sprite data. - - - - - Returns a Vector4 that represents the border of the Sprite data. - - - - - The name of the Sprite data. - - - - - Vector2 value representing the pivot for the Sprite data. - - - - - Rect value that represents the position and size of the Sprite data. - - - - - GUID to uniquely identify the SpriteRect data. This will be populated to Sprite.spriteID to identify the SpriteRect used to generate the Sprite. - - - - - Helper method to get SpriteRect.spriteID from a SerializedProperty. - - The SerializedProperty to acquire from. - - GUID for the SpriteRect. - - - - - Describes the final atlas texture. - - - - - Marks this atlas so that it contains textures that have been flagged for Alpha splitting when needed (for example ETC1 compression for textures with transparency). - - - - - Anisotropic filtering level of the atlas texture. - - - - - Desired color space of the atlas. - - - - - Quality of atlas texture compression in the range [0..100]. - - - - - Allows Sprite Packer to rotate/flip the Sprite to ensure optimal Packing. - - - - - Filtering mode of the atlas texture. - - - - - The format of the atlas texture. - - - - - Should sprite atlas textures generate mip maps? - - - - - Maximum height of the atlas texture. - - - - - Maximum width of the atlas texture. - - - - - The amount of extra padding between packed sprites. - - - - - Sprite packing policy interface. Provide a custom implementation to control which Sprites go into which atlases. - - - - - Specifies whether sequential processing of atlas tags is enabled. If enabled, sprite packing tags are processed one by one to reduce memory usage. - - - - - Return the version of your policy. Sprite Packer needs to know if atlas grouping logic changed. - - - - - Implement custom atlas grouping here. - - - - - - - - Sprite Packer helpers. - - - - - Array of Sprite atlas names found in the current atlas cache. - - - - - Name of the default Sprite Packer policy. - - - - - Sprite Packer execution mode. - - - - - Will always trigger IPackerPolicy.OnGroupAtlases. - - - - - Normal execution. Will not trigger IPackerPolicy.OnGroupAtlases unless IPackerPolicy, IPackerPolicy version or TextureImporter settings have changed. - - - - - Returns all alpha atlas textures generated for the specified atlas. - - Name of the atlas. - - - - Returns atlasing data for the specified Sprite. - - Sprite to query. - Gets set to the name of the atlas containing the specified Sprite. - Gets set to the Texture containing the specified Sprite. - - - - Returns all atlas textures generated for the specified atlas. - - Atlas name. - - - - Available Sprite Packer policies for this project. - - - - - Rebuilds the Sprite atlas cache. - - - - - - - - The active Sprite Packer policy for this project. - - - - - Current Sprite Packer job definition. - - - - - Registers a new atlas. - - - - - - - Assigns a Sprite to an already registered atlas. - - - - - - - - - Helper utilities for accessing Sprite data. - - - - - Returns the generated Sprite mesh indices. - - If Sprite is packed, it is possible to access data as if it was on the atlas texture. - - - - - Returns the generated Sprite mesh positions. - - If Sprite is packed, it is possible to access data as if it was on the atlas texture. - - - - - Returns the generated Sprite texture. If Sprite is packed, it is possible to query for both source and atlas textures. - - If Sprite is packed, it is possible to access data as if it was on the atlas texture. - - - - - Returns the generated Sprite mesh uvs. - - If Sprite is packed, it is possible to access data as if it was on the atlas texture. - - - - - Static Editor Flags. - - - - - Consider for static batching. - - - - - Considered static for lightmapping. - - - - - Considered static for navigation. - - - - - Considered static for occlusion. - - - - - Considered static for occlusion. - - - - - Auto-generate OffMeshLink. - - - - - Consider static for reflection probe. - - - - - StaticOcclusionCulling lets you perform static occlusion culling operations. - - - - - Does the Scene contain any occlusion portals that were added manually rather than automatically? - - - - - Used to check if asynchronous generation of static occlusion culling data is still running. - - - - - Returns the size in bytes that the PVS data is currently taking up in this Scene on disk. - - - - - Used to cancel asynchronous generation of static occlusion culling data. - - - - - Clears the PVS of the opened Scene. - - - - - Used to generate static occlusion culling data. - - - - - Used to compute static occlusion culling data asynchronously. - - - - - Used to visualize static occlusion culling at development time in Scene view. - - - - - If set to true, culling of geometry is enabled. - - - - - If set to true, visualization of target volumes is enabled. - - - - - If set to true, visualization of portals is enabled. - - - - - If set to true, the visualization lines of the PVS volumes will show all cells rather than cells after culling. - - - - - If set to true, visualization of view volumes is enabled. - - - - - If set to true, visualization of portals is enabled. - - - - - Options for querying the version control system status of a file. - - - - - Force a refresh of the version control system status of the file. This is slow but accurate. - -See Also: AssetDatabase.IsOpenForEdit, AssetDatabase.IsMetaFileOpenForEdit. - - - - - This option sets the status query to first use the latest valid version control system status of the file and query for a valid status asynchronously if otherwise. - - - - - This option sets the status query to first use the latest valid version control system status of the file and query for a valid status synchronously if otherwise. - - - - - Enum used to specify what stereo rendering path to use. - - - - - Single pass VR rendering ( via instanced rendering ). - - - - - Multiple pass VR rendering. - - - - - Single pass VR rendering ( via double-wide render texture ). - - - - - Managed code stripping level. - - - - - Deprecated. See ManagedStrippingLevel. - - - - - Deprecated. See ManagedStrippingLevel. - - - - - Deprecated. See ManagedStrippingLevel. - - - - - Deprecated. See ManagedStrippingLevel. - - - - - A Takeinfo object contains all the information needed to describe a take. - - - - - Start time in second. - - - - - Stop time in second. - - - - - This is the default clip name for the clip generated for this take. - - - - - Take name as define from imported file. - - - - - Sample rate of the take. - - - - - Start time in second. - - - - - Stop time in second. - - - - - A set of helper functions for using terrain layers. - - - - - Checks whether the texture is correctly imported as a normal map texture. - - The texture to check. - - True if texture is correctly imported, otherwise false. - - - - - Helper function to show the layer selection window for selecting terrain layers in inspector. - - Terrain tile. - Currently selected terrain layer index. - - Newly selected terrain layer index. - - - - - Displays the tiling settings UI. - - The terrain layer that contains the tiling settings to display. - The tile size property to display. - The tile offset property to display. - - - - Displays the tiling settings UI. - - The terrain layer that contains the tiling settings to display. - The tile size property to display. - The tile offset property to display. - - - - Checks whether the texture is a valid TerrainLayer diffuse texture. If it detects that the texture is not valid, it displays a warning message that identifies the issue. - - The texture to validate. - - - - Checks whether the texture is a valid TerrainLayer mask map texture. If it detects that the texture is not valid, it displays a warning message that identifies the issue. - - The texture to validate. - - - - Checks whether the texture is a valid TerrainLayer normal map texture. If it detects that the texture is not valid, it displays a warning message that identifies the issue. - - The texture to validate. - The return value from the CheckNormalMapTextureType method indicating whether the texture is imported as a normal map. - - - - Compression Quality. - - - - - Best compression. - - - - - Fast compression. - - - - - Normal compression (default). - - - - - Texture importer lets you modify Texture2D import settings from editor scripts. - - - - - Allows alpha splitting on relevant platforms for this texture. - - - - - If the provided alpha channel is transparency, enable this to prefilter the color to avoid filtering artifacts. - - - - - Select how the alpha of the imported texture is generated. - - - - - Returns or assigns the alpha test reference value. - - - - - ETC2 texture decompression fallback override on Android devices that don't support ETC2. - - - - - Anisotropic filtering level of the texture. - - - - - Keep texture borders the same when generating mipmaps? - - - - - Quality of Texture Compression in the range [0..100]. - - - - - Convert heightmap to normal map? - - - - - Use crunched compression when available. - - - - - Fade out mip levels to gray color? - - - - - Filtering mode of the texture. - - - - - Cubemap generation mode. - - - - - Should mip maps be generated with gamma correction? - - - - - Generate alpha channel from intensity? - - - - - Amount of bumpyness in the heightmap. - - - - - Set this to true if you want texture data to be readable from scripts. Set it to false to prevent scripts from reading texture data. - - - - - Is this texture a lightmap? - - - - - Is texture storing non-color data? - - - - - Maximum texture size. - - - - - Mip map bias of the texture. - - - - - Generate Mip Maps. - - - - - Mip level where texture is faded out completely. - - - - - Mip level where texture begins to fade out. - - - - - Mipmap filtering mode. - - - - - Enables or disables coverage-preserving alpha MIP mapping. - - - - - Is this texture a normal map? - - - - - Normal map filtering mode. - - - - - Scaling mode for non power of two textures. - - - - - Returns true if this TextureImporter is setup for Sprite packing. - - - - - Border sizes of the generated sprites. - - - - - Selects Single or Manual import mode for Sprite textures. - - - - - Selects the Sprite packing tag. - - - - - The point in the Sprite object's coordinate space where the graphic is located. - - - - - The number of pixels in the sprite that correspond to one unit in world space. - - - - - Scale factor for mapping pixels in the graphic to units in world space. - - - - - Array representing the sections of the atlas corresponding to individual sprite graphics. - - - - - Is texture storing color data? - - - - - Enable mipmap streaming for this texture. - - - - - Relative priority for this texture when reducing memory size in order to hit the memory budget. - - - - - Compression of imported texture. - - - - - Format of imported texture. - - - - - Shape of imported texture. - - - - - Which type of texture are we dealing with here. - - - - - Texture coordinate wrapping mode. - - - - - Texture U coordinate wrapping mode. - - - - - Texture V coordinate wrapping mode. - - - - - Texture W coordinate wrapping mode for Texture3D. - - - - - Clear specific target platform settings. - - The platform whose settings are to be cleared (see below). - - - - Does textures source image have alpha channel. - - - - - Does textures source image have RGB channels. - - - - - Getter for the flag that allows Alpha splitting on the imported texture when needed (for example ETC1 compression for textures with transparency). - - - True if the importer allows alpha split on the imported texture, False otherwise. - - - - - Returns the TextureImporterFormat that would be automatically chosen for this platform. - - - - Format chosen by the system for the provided platform, TextureImporterFormat.Automatic if the platform does not exist. - - - - - Get the default platform specific texture settings. - - - A TextureImporterPlatformSettings structure containing the default platform parameters. - - - - - Get platform specific texture settings. - - The platform for which settings are required (see options below). - Maximum texture width/height in pixels. - Format of the texture for the given platform. - Value from 0..100, equivalent to the standard JPEG quality setting. - Status of the ETC1 and alpha split flag. - - True if the platform override was found, false if no override was found. - - - - - Get platform specific texture settings. - - The platform whose settings are required (see below). - Maximum texture width/height in pixels. - Format of the texture. - Value from 0..100, equivalent to the standard JPEG quality setting. - - True if the platform override was found, false if no override was found. - - - - - Get platform specific texture settings. - - The platform whose settings are required (see below). - Maximum texture width/height in pixels. - Format of the texture. - - True if the platform override was found, false if no override was found. - - - - - Get platform specific texture settings. - - The platform whose settings are required (see below). - - A TextureImporterPlatformSettings structure containing the platform parameters. - - - - - Reads the active texture output instructions of this TextureImporter. - - - - - Read texture settings into TextureImporterSettings class. - - - - - - Setter for the flag that allows Alpha splitting on the imported texture when needed (for example ETC1 compression for textures with transparency). - - - - - - Set specific target platform settings. - - The platforms whose settings are to be changed (see below). - Maximum texture width/height in pixels. - Data format for the texture. - Value from 0..100, with 0, 50 and 100 being respectively Fast, Normal, Best quality options in the texture importer UI. For Crunch texture formats, this roughly corresponds to JPEG quality levels. - Allows splitting of imported texture into RGB+A so that ETC1 compression can be applied (Android only, and works only on textures that are a part of some atlas). - - - - Set specific target platform settings. - - The platforms whose settings are to be changed (see below). - Maximum texture width/height in pixels. - Data format for the texture. - Value from 0..100, with 0, 50 and 100 being respectively Fast, Normal, Best quality options in the texture importer UI. For Crunch texture formats, this roughly corresponds to JPEG quality levels. - Allows splitting of imported texture into RGB+A so that ETC1 compression can be applied (Android only, and works only on textures that are a part of some atlas). - - - - Set specific target platform settings. - - Structure containing the platform settings. - - - - Set texture importers settings from TextureImporterSettings class. - - - - - - Select how the alpha of the imported texture is generated. - - - - - Generate Alpha from image gray scale. - - - - - Use Alpha from the input texture if one is provided. - - - - - No Alpha will be used. - - - - - Select the kind of compression you want for your texture. - - - - - Texture will be compressed using a standard format depending on the platform (DXT, ASTC, ...). - - - - - Texture will be compressed using a high quality format depending on the platform and availability (BC7, ASTC4x4, ...). - - - - - Texture will be compressed using a low quality but high performance, high compression format depending on the platform and availability (2bpp PVRTC, ASTC8x8, ...). - - - - - Texture will not be compressed. - - - - - Defines Cubemap convolution mode. - - - - - Diffuse convolution (aka irradiance Cubemap). - - - - - No convolution needed. This Cubemap texture represents mirror reflection or Skybox. - - - - - Specular convolution (aka Prefiltered Environment Map). - - - - - Imported texture format for TextureImporter. - - - - - TextureFormat.Alpha8 texture format. - - - - - TextureFormat.ARGB4444 texture format. - - - - - TextureFormat.ARGB32 texture format. - - - - - ASTC compressed RGB texture format, 10x10 block size. - - - - - ASTC compressed RGB texture format, 12x12 block size. - - - - - ASTC compressed RGB texture format, 4x4 block size. - - - - - ASTC compressed RGB texture format, 5x5 block size. - - - - - ASTC compressed RGB texture format, 6x6 block size. - - - - - ASTC compressed RGB texture format, 8x8 block size. - - - - - ASTC compressed RGBA texture format, 10x10 block size. - - - - - ASTC compressed RGBA texture format, 12x12 block size. - - - - - ASTC compressed RGBA texture format, 4x4 block size. - - - - - ASTC compressed RGBA texture format, 5x5 block size. - - - - - ASTC compressed RGBA texture format, 6x6 block size. - - - - - ASTC compressed RGBA texture format, 8x8 block size. - - - - - Choose texture format automatically based on the texture parameters. - - - - - Choose a 16 bit format automatically. - - - - - Choose a compressed format automatically. - - - - - Choose a compressed HDR format automatically. - - - - - Choose a crunched format automatically. - - - - - Choose an HDR format automatically. - - - - - Choose a Truecolor format automatically. - - - - - TextureFormat.BC4 compressed texture format. - - - - - TextureFormat.BC5 compressed texture format. - - - - - TextureFormat.BC6H compressed HDR texture format. - - - - - TextureFormat.BC7 compressed texture format. - - - - - TextureFormat.DXT1 compressed texture format. - - - - - DXT1 compressed texture format using Crunch compression for smaller storage sizes. - - - - - TextureFormat.DXT5 compressed texture format. - - - - - DXT5 compressed texture format using Crunch compression for smaller storage sizes. - - - - - ETC2EAC compressed 4 bits pixel unsigned R texture format. - - - - - ETC2EAC compressed 4 bits pixel signed R texture format. - - - - - ETC2EAC compressed 8 bits pixel unsigned RG texture format. - - - - - ETC2EAC compressed 4 bits pixel signed RG texture format. - - - - - ETC (GLES2.0) 4 bits/pixel compressed RGB texture format. - - - - - ETC (Nintendo 3DS) 4 bits/pixel compressed RGB texture format. - - - - - ETC_RGB4 compressed texture format using Crunch compression for smaller storage sizes. - - - - - ETC (Nintendo 3DS) 8 bits/pixel compressed RGBA texture format. - - - - - ETC2 compressed 4 bits / pixel RGB texture format. - - - - - ETC2 compressed 4 bits / pixel RGB + 1-bit alpha texture format. - - - - - ETC2 compressed 8 bits / pixel RGBA texture format. - - - - - ETC2_RGBA8 compressed color with alpha channel texture format using Crunch compression for smaller storage sizes. - - - - - PowerVR/iOS TextureFormat.PVRTC_RGB2 compressed texture format. - - - - - PowerVR/iOS TextureFormat.PVRTC_RGB4 compressed texture format. - - - - - PowerVR/iOS TextureFormat.PVRTC_RGBA2 compressed texture format. - - - - - PowerVR/iOS TextureFormat.PVRTC_RGBA4 compressed texture format. - - - - - TextureFormat.R16 texture format. - - - - - TextureFormat.R8 texture format. - - - - - TextureFormat.RFloat floating point texture format. - - - - - TextureFormat.RG16 texture format. - - - - - TextureFormat.RGB565 texture format. - - - - - TextureFormat.RGB24 texture format. - - - - - TextureFormat.RGB9e5Float packed unsigned floating point texture format with shared exponent. - - - - - TextureFormat.RGBA4444 texture format. - - - - - TextureFormat.RGBA32 texture format. - - - - - TextureFormat.RGBAFloat floating point RGBA texture format. - - - - - TextureFormat.RGBAHalf half-precision floating point texture format. - - - - - TextureFormat.RGFloat floating point texture format. - - - - - TextureFormat.RGHalf half-precision floating point texture format. - - - - - TextureFormat.RHalf half-precision floating point texture format. - - - - - Cubemap generation mode for TextureImporter. - - - - - Automatically determine type of cubemap generation from the source image. - - - - - Generate cubemap from cylindrical texture. - - - - - Generate cubemap from vertical or horizontal cross texture. - - - - - Do not generate cubemap (default). - - - - - Generate cubemap from spheremap texture. - - - - - Mip map filter for TextureImporter. - - - - - Box mipmap filter. - - - - - Kaiser mipmap filter. - - - - - Normal map filtering mode for TextureImporter. - - - - - Sobel normal map filter. - - - - - Standard normal map filter. - - - - - Scaling mode for non power of two textures in TextureImporter. - - - - - Keep non power of two textures as is. - - - - - Scale to larger power of two. - - - - - Scale to nearest power of two. - - - - - Scale to smaller power of two. - - - - - Stores platform specifics settings of a TextureImporter. - - - - - Allows Alpha splitting on the imported texture when needed (for example ETC1 compression for textures with transparency). - - - - - Override for ETC2 decompression fallback on Android devices that don't support ETC2. - - - - - Quality of texture compression in the range [0..100]. - - - - - Use crunch compression when available. - - - - - Format of imported texture. - - - - - Maximum texture size. - - - - - Name of the build target. - - - - - Set to true in order to override the Default platform parameters by those provided in the TextureImporterPlatformSettings structure. - - - - - For Texture to be scaled down choose resize algorithm. ( Applyed only when Texture dimension is bigger than Max Size ). - - - - - Compression of imported texture. - - - - - Copy parameters into another TextureImporterPlatformSettings object. - - TextureImporterPlatformSettings object to copy settings to. - - - - RGBM encoding mode for HDR textures in TextureImporter. - - - - - Do RGBM encoding when source data is HDR in TextureImporter. - - - - - Source texture is already RGBM encoded in TextureImporter. - - - - - Do not perform RGBM encoding in TextureImporter. - - - - - Do RGBM encoding in TextureImporter. - - - - - Stores settings of a TextureImporter. - - - - - If the provided alpha channel is transparency, enable this to dilate the color to avoid filtering artifacts on the edges. - - - - - Select how the alpha of the imported texture is generated. - - - - - Returns or assigns the alpha test reference value. - - - - - Anisotropic filtering level of the texture. - - - - - Enable this to avoid colors seeping out to the edge of the lower Mip levels. Used for light cookies. - - - - - Convert heightmap to normal map? - - - - - Convolution mode. - - - - - Defines how fast Phong exponent wears off in mip maps. Higher value will apply less blur to high resolution mip maps. - - - - - Defines how many different Phong exponents to store in mip maps. Higher value will give better transition between glossy and rough reflections, but will need higher texture resolution. - - - - - Fade out mip levels to gray color? - - - - - Filtering mode of the texture. - - - - - Cubemap generation mode. - - - - - Generate alpha channel from intensity? - - - - - Amount of bumpyness in the heightmap. - - - - - Mip map bias of the texture. - - - - - Generate mip maps for the texture? - - - - - Mip level where texture is faded out to gray completely. - - - - - Mip level where texture begins to fade out to gray. - - - - - Mipmap filtering mode. - - - - - Enables or disables coverage-preserving alpha MIP mapping. - - - - - Normal map filtering mode. - - - - - Scaling mode for non power of two textures. - - - - - Is texture data readable from scripts. - - - - - RGBM encoding mode for HDR textures in TextureImporter. - - - - - Color or Alpha component TextureImporterType|Single Channel Textures uses. - - - - - Edge-relative alignment of the sprite graphic. - - - - - Border sizes of the generated sprites. - - - - - The number of blank pixels to leave between the edge of the graphic and the mesh. - - - - - Generates a default physics shape for a Sprite if a physics shape has not been set by the user. - - - - - Sprite texture import mode. - - - - - Pivot point of the Sprite relative to its graphic's rectangle. - - - - - The number of pixels in the sprite that correspond to one unit in world space. - - - - - Scale factor between pixels in the sprite graphic and world space units. - - - - - The tessellation detail to be used for generating the mesh for the associated sprite if the SpriteMode is set to Single. For Multiple sprites, use the SpriteEditor to specify the value per sprite. -Valid values are in the range [0-1], with higher values generating a tighter mesh. A default of -1 will allow Unity to determine the value automatically. - - - - - Is texture storing color data? - - - - - Enable mipmap streaming for this texture. - - - - - Relative priority for this texture when reducing memory size in order to hit the memory budget. - - - - - Shape of imported texture. - - - - - Which type of texture are we dealing with here. - - - - - Texture coordinate wrapping mode. - - - - - Texture U coordinate wrapping mode. - - - - - Texture V coordinate wrapping mode. - - - - - Texture W coordinate wrapping mode for Texture3D. - - - - - Configure parameters to import a texture for a purpose of type, as described TextureImporterType|here. - - Texture type. See TextureImporterType. - If false, change only specific properties. Exactly which, depends on type. - - - - Copy parameters into another TextureImporterSettings object. - - TextureImporterSettings object to copy settings to. - - - - Test texture importer settings for equality. - - - - - - - Select the kind of shape of your texture. - - - - - Texture is 2D. - - - - - Texture is a Cubemap. - - - - - Selects which Color/Alpha channel TextureImporterType|Single Channel Textures uses. - - - - - Use the Alpha channel. - - - - - Use the red Color channel. - - - - - Select this to set basic parameters depending on the purpose of your texture. - - - - - This sets up your texture with the basic parameters used for the Cookies of your lights. - - - - - Use this if your texture is going to be used as a cursor. - - - - - This is the most common setting used for all the textures in general. - - - - - Use this if your texture is going to be used on any HUD/GUI Controls. - - - - - This is the most common setting used for all the textures in general. - - - - - This sets up your texture with the parameters used by the lightmap. - - - - - Select this to turn the color channels into a format suitable for real-time normal mapping. - - - - - Use this for texture containing a single channel. - - - - - Select this if you will be using your texture for Sprite graphics. - - - - - For Texture to be scaled down choose resize algorithm. ( Applyed only when Texture dimension is bigger than Max Size ). - - - - - Might provide better result than Mitchell for some noise textures preserving more sharp details. - - - - - Default high quality resize algorithm. - - - - - Which tool is active in the editor. - - - - - The move tool is active. - - - - - No tool is active. Set this to implement your own in-inspector toolbar (like the terrain editor does). - - - - - The rect tool is active. - - - - - The rotate tool is active. - - - - - The scale tool is active. - - - - - The transform tool is active. - - - - - The view tool is active - Use Tools.viewTool to find out which view tool we're talking about. - - - - - Class used to manipulate the tools used in Unity's Scene View. - - - - - The tool that is currently selected for the Scene View. - - - - - The position of the tool handle in world space. - - - - - The rectangle used for the rect tool. - - - - - The rotation of the rect tool handle in world space. - - - - - The rotation of the tool handle in world space. - - - - - Hides the Tools(Move, Rotate, Resize) on the Scene view. - - - - - Are we in Center or Pivot mode. - - - - - What's the rotation of the tool handle. - - - - - Is the rect handle in blueprint mode? - - - - - The option that is currently active for the View tool in the Scene view. - - - - - Which layers are visible in the Scene view. - - - - - Editor Transform Utility Class. - - - - - Returns the rotation of a transform as it is shown in the Transform Inspector window. - - Transform to get the rotation from. - - Rotation as it is shown in the Transform Inspector window. - - - - - Sets the rotation of a transform as it would be set by the Transform Inspector window. - - Transform to set the rotation on. - Rotation as it would be set by the Transform Inspector window. - - - - AssetImporter for importing Fonts. - - - - - Calculation mode for determining font's ascent. - - - - - Border pixels added to character images for padding. This is useful if you want to render text using a shader which needs to render outside of the character area (like an outline shader). - - - - - Spacing between character images in the generated texture in pixels. This is useful if you want to render text using a shader which samples pixels outside of the character area (like an outline shader). - - - - - A custom set of characters to be included in the Font Texture. - - - - - An array of font names, to be used when includeFontData is set to false. - - - - - References to other fonts to be used looking for fallbacks. - - - - - Font rendering mode to use for this font. - - - - - Font size to use for importing the characters. - - - - - Use this to adjust which characters should be imported. - - - - - The internal font name of the TTF file. - - - - - If this is enabled, the actual font will be embedded into the asset for Dynamic fonts. - - - - - Set this property to true if you want to round the internal advance width of the font to the nearest integer. - - - - - Create an editable copy of the font asset at path. - - - - - - Supported tvOS SDK versions. - - - - - Device SDK. - - - - - Simulator SDK. - - - - - Supported tvOS deployment versions. - - - - - Target tvOS 9.0. - - - - - Target tvOS 9.1. - - - - - Unknown tvOS version, managed by user. - - - - - Method extensions for SpriteAtlas in Editor. - - - - - Add an array of Assets to the packable objects list. - - Array of Object to be packed into the atlas. - - - - - Return all the current packed packables in the atlas. - - - - - - Current SpriteAtlasPackingSettings to use when packing this SpriteAtlas. - - - - - - Returns the platform settings of the build target you specify. - - The name of the build target. - - - - - Current SpriteAtlasTextureSettings of the packed texture generated by this SpriteAtlas. - - - - - - Remove objects from the atlas's packable objects list. - - Object in the array you wish to remove. - - - - - Define if this sprite atlas's packed texture is included in the build with the Sprite after packing is done. - - - - - - - Sets whether this Sprite Atlas is a variant or not. - - - - - - - Set an atlas to be the master atlas. - - - - - - - Set the SpriteAtlasPackingSettings to use when packing this SpriteAtlas - - - - - - - Set the platform specific settings. - - - - - - - Set the SpriteAtlasTextureSettings for the packed texture generated by this SpriteAtlas. - - - - - - - Set the value used to downscale the master's texture. - - Recommended value is [0.1 ~ 0.99]. - - - - - Settings to use during the packing process for this SpriteAtlas. - - - - - Block offset to use while packing. - - - - - Determines if rotating a sprite is possible during packing. - - - - - Determines if sprites should be packed tightly during packing. - - - - - Value to add boundary (padding) to sprites when packing into the atlas. - - - - - Texture settings for the packed texture generated by SpriteAtlas. - - - - - Packed texture's Anisotropic filtering level. - - - - - Filter mode of the packed texture. - - - - - Set whether mipmaps should be generated for the packed texture. - - - - - Readable state of the packed texture. - - - - - Checks if the packed texture uses sRGB read/write conversions (Read Only). - - - - - Utility methods to pack atlases in the Project. - - - - - Pack all the SpriteAtlas Assets in the Project for the particular BuildTarget. - - - - - - - Pack all the provided SpriteAtlas for the particular BuildTarget. - - - - - - - - Default mobile device orientation. - - - - - Auto Rotation Enabled. - - - - - Landscape : counter-clockwise from Portrait. - - - - - Landscape: clockwise from Portrait. - - - - - Portrait. - - - - - Portrait upside down. - - - - - Lets you register undo operations on specific objects you are about to perform changes on. - - - - - Callback that is triggered after an undo or redo was executed. - - - - - Invoked before the Undo system performs a flush. - - - - - Adds a component to the game object and registers an undo operation for this action. - - The game object you want to add the component to. - The type of component you want to add. - - The newly added component. - - - - - Generic version. - - The game object you want to add the component to. - - The newly added component. - - - - - Removes all undo and redo operations from respectively the undo and redo stacks. - - - - - Removes all Undo operation for the identifier object registered using Undo.RegisterCompleteObjectUndo from the undo stack. - - - - - - Collapses all undo operation up to group index together into one step. - - - - - - Destroys the object and records an undo operation so that it can be recreated. - - The object that will be destroyed. - - - - Ensure objects recorded using RecordObject or ::ref:RecordObjects are registered as an undoable action. In most cases there is no reason to invoke FlushUndoRecordObjects since it's automatically done right after mouse-up and certain other events that conventionally marks the end of an action. - - - - - Unity automatically groups undo operations by the current group index. - - - - - Get the name that will be shown in the UI for the current undo group. - - - Name of the current group or an empty string if the current group is empty. - - - - - Unity automatically groups undo operations by the current group index. - - - - - Move a GameObject from its current Scene to a new Scene. -It is required that the GameObject is at the root of its current Scene. - - GameObject to move. - Scene to move the GameObject into. - Name of the undo action. - - - - Perform an Redo operation. - - - - - Perform an Undo operation. - - - - - Records any changes done on the object after the RecordObject function. - - The reference to the object that you will be modifying. - The title of the action to appear in the undo history (i.e. visible in the undo menu). - - - - Records multiple undoable objects in a single call. This is the same as calling Undo.RecordObject multiple times. - - - - - - - Stores a copy of the object states on the undo stack. - - The object whose state changes need to be undone. - The name of the undo operation. - - - - This is equivalent to calling the first overload mutiple times, save for the fact that only one undo operation will be generated for this one. - - An array of objects whose state changes need to be undone. - The name of the undo operation. - - - - Register an undo operations for a newly created object. - - The object that was created. - The name of the action to undo. Think "Undo ...." in the main menu. - - - - Copy the states of a hierarchy of objects onto the undo stack. - - The object used to determine a hierarchy of objects whose state changes need to be undone. - The name of the undo operation. - - - - This overload is deprecated. Use Undo.RegisterFullObjectHierarchyUndo(Object, string) instead. - - - - - - Performs all undo operations up to the group index without storing a redo operation in the process. - - - - - - Performs the last undo operation but does not record a redo operation. - - - - - Set the name of the current undo group. - - New name of the current undo group. - - - - Sets the parent of transform to the new parent and records an undo operation. - - The Transform component whose parent is to be changed. - The parent Transform to be assigned. - The name of this action, to be stored in the Undo history buffer. - - - - Delegate used for undoRedoPerformed. - - - - - Delegate used for willFlushUndoRecord. - - - - - See Also: Undo.postprocessModifications. - - - - - The UnityEditor assembly implements the editor-specific APIs in Unity. It cannot be referenced by runtime code compiled into players. - - - - - Unwrapping settings. - - - - - Maximum allowed angle distortion (0..1). - - - - - Maximum allowed area distortion (0..1). - - - - - This angle (in degrees) or greater between triangles will cause seam to be created. - - - - - How much uv-islands will be padded. - - - - - Will set default values for params. - - - - - - This class holds everything you may need in regard to uv-unwrapping. - - - - - Will generate per-triangle uv (3 UVs for each triangle) with default settings. - - The source mesh to generate UVs for. - - The list of UVs generated. - - - - - Will generate per-triangle uv (3 UVs for each triangle) with provided settings. - - The source mesh to generate UVs for. - Allows you to specify custom parameters to control the unwrapping. - - The list of UVs generated. - - - - - Will auto generate uv2 with default settings for provided mesh, and fill them in. - - - - - - Will auto generate uv2 with provided settings for provided mesh, and fill them in. - - - - - - - This class containes information about the version control state of an asset. - - - - - Gets the full name of the asset including extension. - - - - - Returns true if the asset is a folder. - - - - - Returns true if the asset file exists and is in the current project. - - - - - Returns true if the instance of the Asset class actually refers to a .meta file. - - - - - Returns true if the asset is locked by the version control system. - - - - - Get the name of the asset. - - - - - Gets the path of the asset. - - - - - Returns true is the asset is read only. - - - - - Gets the version control state of the asset. - - - - - Opens the assets in an associated editor. - - - - - Returns true if the version control state of the assets is one of the input states. - - Array of states to test for. - - - - Returns true if the version control state of the asset exactly matches the input state. - - State to check for. - - - - Loads the asset to memory. - - - - - Describes the various version control states an asset can have. - - - - - The asset was locally added to version control. - - - - - Remotely this asset was added to version control. - - - - - The asset has been checked out on the local machine. - - - - - The asset has been checked out on a remote machine. - - - - - There is a conflict with the asset that needs to be resolved. - - - - - The asset has been deleted locally. - - - - - The asset has been deleted on a remote machine. - - - - - The asset is not under version control. - - - - - The asset is locked by the local machine. - - - - - The asset is locked by a remote machine. - - - - - This instance of the class actaully refers to a .meta file. - - - - - The asset exists in version control but is missing on the local machine. - - - - - The asset has been moved locally. - - - - - The asset has been moved on a remote machine. - - - - - The version control state is unknown. - - - - - A newer version of the asset is available on the version control server. - - - - - The asset is read only. - - - - - The asset is up to date. - - - - - The state of the asset is currently being queried from the version control server. - - - - - A list of version control information about assets. - - - - - Based on the current list and the states a new list is returned which only contains the assets with the requested states. - - Whether or not folders should be included. - Which states to filter by. - - - - Create an optimised list of assets by removing children of folders in the same list. - - - - - Count the list of assets by given a set of states. - - Whether or not to include folders. - Which states to include in the count. - - - - Wrapper around a changeset description and ID. - - - - - The ID of the default changeset. - - - - - Description of a changeset. - - - - - Version control specific ID of a changeset. - - - - - Simply a list of changetsets. - - - - - What to checkout when starting the Checkout task through the version control Provider. - - - - - Checkout the asset only. - - - - - Checkout both asset and .meta file. - - - - - Checkout. - - - - - Checkout .meta file only. - - - - - Different actions a version control task can do upon completion. - - - - - Refresh windows upon task completion. - - - - - Update the content of a pending changeset with the result of the task upon completion. - - - - - Update the pending changesets with the result of the task upon completion. - - - - - Show or update the checkout failure window. - - - - - Refreshes the incoming and pensing changes window upon task completion. - - - - - Update incoming changes window with the result of the task upon completion. - - - - - Refresh the submit window with the result of the task upon completion. - - - - - Update the list of pending changes when a task completes. - - - - - This class describes the. - - - - - Descrition of the configuration field. - - - - - This is true if the configuration field is a password field. - - - - - This is true if the configuration field is required for the version control plugin to function correctly. - - - - - Label that is displayed next to the configuration field in the editor. - - - - - Name of the configuration field. - - - - - Mode of the file. - - - - - Binary file. - - - - - No mode set. - - - - - Text file. - - - - - Which method to use when merging. - - - - - Merge all changes. - - - - - Merge non-conflicting changes. - - - - - Don't merge any changes. - - - - - Messages from the version control system. - - - - - The message text. - - - - - The severity of the message. - - - - - Severity of a version control message. - - - - - Error message. - - - - - Informational message. - - - - - Verbose message. - - - - - Warning message. - - - - - Write the message to the console. - - - - - Represent the connection state of the version control provider. - - - - - Connection to the version control server could not be established. - - - - - Connection to the version control server has been established. - - - - - The version control provider is currently trying to connect to the version control server. - - - - - The plugin class describes a version control plugin and which configuratin options it has. - - - - - Configuration fields of the plugin. - - - - - This class provides acces to the version control API. - - - - - Gets the currently executing task. - - - - - Returns true if the version control provider is enabled and a valid Unity Pro License was found. - - - - - Returns true if a version control plugin has been selected and configured correctly. - - - - - Returns the reason for the version control provider being offline (if it is offline). - - - - - Returns the OnlineState of the version control provider. - - - - - This is true if a network connection is required by the currently selected version control plugin to perform any action. - - - - - Adds an assets or list of assets to version control. - - List of assets to add to version control system. - Set this true if adding should be done recursively into subfolders. - Single asset to add to version control system. - - - - Adds an assets or list of assets to version control. - - List of assets to add to version control system. - Set this true if adding should be done recursively into subfolders. - Single asset to add to version control system. - - - - Given a list of assets this function returns true if Add is a valid task to perform. - - List of assets to test. - - - - Given a changeset only containing the changeset ID, this will start a task for quering the description of the changeset. - - Changeset to query description of. - - - - Move an asset or list of assets from their current changeset to a new changeset. - - List of asset to move to changeset. - Changeset to move asset to. - Asset to move to changeset. - ChangesetID to move asset to. - - - - Move an asset or list of assets from their current changeset to a new changeset. - - List of asset to move to changeset. - Changeset to move asset to. - Asset to move to changeset. - ChangesetID to move asset to. - - - - Move an asset or list of assets from their current changeset to a new changeset. - - List of asset to move to changeset. - Changeset to move asset to. - Asset to move to changeset. - ChangesetID to move asset to. - - - - Move an asset or list of assets from their current changeset to a new changeset. - - List of asset to move to changeset. - Changeset to move asset to. - Asset to move to changeset. - ChangesetID to move asset to. - - - - Get a list of pending changesets owned by the current user. - - - - - Retrieves the list of assets belonging to a changeset. - - Changeset to query for assets. - ChangesetID to query for assets. - - - - Retrieves the list of assets belonging to a changeset. - - Changeset to query for assets. - ChangesetID to query for assets. - - - - Checkout an asset or list of asset from the version control system. - - List of assets to checkout. - Tell the Provider to checkout the asset, the .meta file or both. - Asset to checkout. - - - - Checkout an asset or list of asset from the version control system. - - List of assets to checkout. - Tell the Provider to checkout the asset, the .meta file or both. - Asset to checkout. - - - - Checkout an asset or list of asset from the version control system. - - List of assets to checkout. - Tell the Provider to checkout the asset, the .meta file or both. - Asset to checkout. - - - - Checkout an asset or list of asset from the version control system. - - List of assets to checkout. - Tell the Provider to checkout the asset, the .meta file or both. - Asset to checkout. - - - - Checkout an asset or list of asset from the version control system. - - List of assets to checkout. - Tell the Provider to checkout the asset, the .meta file or both. - Asset to checkout. - - - - Checkout an asset or list of asset from the version control system. - - List of assets to checkout. - Tell the Provider to checkout the asset, the .meta file or both. - Asset to checkout. - - - - Given an asset or a list of assets this function returns true if Checkout is a valid task to perform. - - List of assets. - Single asset. - - - - Given an asset or a list of assets this function returns true if Checkout is a valid task to perform. - - List of assets. - Single asset. - - - - This will invalidate the cached state information for all assets. - - - - - This will statt a task for deleting an asset or assets both from disk and from version control system. - - Project path of asset. - List of assets to delete. - Asset to delete. - - - - This will statt a task for deleting an asset or assets both from disk and from version control system. - - Project path of asset. - List of assets to delete. - Asset to delete. - - - - This will statt a task for deleting an asset or assets both from disk and from version control system. - - Project path of asset. - List of assets to delete. - Asset to delete. - - - - Starts a task that will attempt to delete the given changeset. - - List of changetsets. - - - - Test if deleting a changeset is a valid task to perform. - - Changeset to test. - - - - Starts a task for showing a diff of the given assest versus their head revision. - - List of assets. - Whether or not to include .meta. - - - - Return true is starting a Diff task is a valid operation. - - List of assets. - - - - Returns the configuration fields for the currently active version control plugin. - - - - - Gets the currently user selected verson control plugin. - - - - - Returns version control information about an asset. - - GUID of asset. - - - - Returns version control information about an asset. - - Path to asset. - - - - Return version control information about the currently selected assets. - - - - - Start a task for getting the latest version of an asset from the version control server. - - List of assets to update. - Asset to update. - - - - Start a task for getting the latest version of an asset from the version control server. - - List of assets to update. - Asset to update. - - - - Returns true if getting the latest version of an asset is a valid operation. - - List of assets to test. - Asset to test. - - - - Returns true if getting the latest version of an asset is a valid operation. - - List of assets to test. - Asset to test. - - - - Start a task for quering the version control server for incoming changes. - - - - - Given an incoming changeset this will start a task to query the version control server for which assets are part of the changeset. - - Incoming changeset. - Incoming changesetid. - - - - Given an incoming changeset this will start a task to query the version control server for which assets are part of the changeset. - - Incoming changeset. - Incoming changesetid. - - - - Returns true if an asset can be edited. - - Asset to test. - - - - Attempt to lock an asset for exclusive editing. - - List of assets to lock/unlock. - True to lock assets, false to unlock assets. - Asset to lock/unlock. - - - - Attempt to lock an asset for exclusive editing. - - List of assets to lock/unlock. - True to lock assets, false to unlock assets. - Asset to lock/unlock. - - - - Return true if the task can be executed. - - List of assets to test. - Asset to test. - - - - Return true if the task can be executed. - - List of assets to test. - Asset to test. - - - - This method will initiate a merge task handle merging of the conflicting assets. - - The list of conflicting assets to be merged. - How to merge the assets. - - - - Uses the version control plugin to move an asset from one path to another. - - Path to source asset. - Path to destination. - - - - Start a task that will resolve conflicting assets in version control. - - The list of asset to mark as resolved. - How the assets should be resolved. - - - - Tests if any of the assets in the list is resolvable. - - The list of asset to be resolved. - - - - Reverts the specified assets by undoing any changes done since last time you synced. - - The list of assets to be reverted. - How to revert the assets. - The asset to be reverted. - - - - Reverts the specified assets by undoing any changes done since last time you synced. - - The list of assets to be reverted. - How to revert the assets. - The asset to be reverted. - - - - Return true if Revert is a valid task to perform. - - List of assets to test. - Revert mode to test for. - Asset to test. - - - - Return true if Revert is a valid task to perform. - - List of assets to test. - Revert mode to test for. - Asset to test. - - - - Start a task that will fetch the most recent status from revision control system. - - The assets fetch new state for. - The asset path to fetch new state for. - If any assets specified are folders this flag will get status for all descendants of the folder as well. - - - - Start a task that will fetch the most recent status from revision control system. - - The assets fetch new state for. - The asset path to fetch new state for. - If any assets specified are folders this flag will get status for all descendants of the folder as well. - - - - Start a task that will fetch the most recent status from revision control system. - - The assets fetch new state for. - The asset path to fetch new state for. - If any assets specified are folders this flag will get status for all descendants of the folder as well. - - - - Start a task that will fetch the most recent status from revision control system. - - The assets fetch new state for. - The asset path to fetch new state for. - If any assets specified are folders this flag will get status for all descendants of the folder as well. - - - - Start a task that will fetch the most recent status from revision control system. - - The assets fetch new state for. - The asset path to fetch new state for. - If any assets specified are folders this flag will get status for all descendants of the folder as well. - - - - Start a task that will fetch the most recent status from revision control system. - - The assets fetch new state for. - The asset path to fetch new state for. - If any assets specified are folders this flag will get status for all descendants of the folder as well. - - - - Start a task that will fetch the most recent status from revision control system. - - The assets fetch new state for. - The asset path to fetch new state for. - If any assets specified are folders this flag will get status for all descendants of the folder as well. - - - - Start a task that will fetch the most recent status from revision control system. - - The assets fetch new state for. - The asset path to fetch new state for. - If any assets specified are folders this flag will get status for all descendants of the folder as well. - - - - Start a task that submits the assets to version control. - - The changeset to submit. - The list of assets to submit. - The description of the changeset. - If true then only save the changeset to be submitted later. - - - - Returns true if submitting the assets is a valid operation. - - The changeset to submit. - The asset to submit. - - - - Returns true if locking the assets is a valid operation. - - The assets to lock. - The asset to lock. - - - - Returns true if locking the assets is a valid operation. - - The assets to lock. - The asset to lock. - - - - Start a task that sends the version control settings to the version control system. - - - - - How assets should be resolved. - - - - - Use merged version. - - - - - Use "mine" (local version). - - - - - Use "theirs" (other/remote version). - - - - - Defines the behaviour of the version control revert methods. - - - - - Revert files but keep locally changed ones. - - - - - Use the version control regular revert approach. - - - - - Revert only unchanged files. - - - - - The status of an operation returned by the VCS. - - - - - Files conflicted. - - - - - An error was returned. - - - - - Submission worked. - - - - - Files were unable to be added. - - - - - A UnityEditor.VersionControl.Task is created almost everytime UnityEditor.VersionControl.Provider is ask to perform an action. - - - - - The result of some types of tasks. - - - - - List of changesets returned by some tasks. - - - - - A short description of the current task. - - - - - May contain messages from the version control plugins. - - - - - Progress of current task in precent. - - - - - Some task return result codes, these are stored here. - - - - - Total time spent in task since the task was started. - - - - - Get whether or not the task was completed succesfully. - - - - - Will contain the result of the Provider.ChangeSetDescription task. - - - - - Upon completion of a task a completion task will be performed if it is set. - - Which completion action to perform. - - - - A blocking wait for the task to complete. - - - - - Use these enum flags to specify which elements of a vertex to compress. - - - - - Color compression enabled. - - - - - Vertex compression disabled. - - - - - Normal compression enabled. - - - - - Position compression enabled. - - - - - Tangent compression enabled. - - - - - Texture coordinate 0 compression enabled. - - - - - Texture coordinate 1 compression enabled. - - - - - Texture coordinate 2 compression enabled. - - - - - Texture coordinate 3 compression enabled. - - - - - Bit rate after the clip is transcoded. - - - - - High value, possibly exceeding typical internet connection capabilities. - - - - - Low value, safe for slower internet connections or clips where visual quality is not critical. - - - - - Typical bit rate supported by internet connections. - - - - - VideoClipImporter lets you modify Video.VideoClip import settings from Editor scripts. - - - - - Default values for the platform-specific import settings. - - - - - Images are deinterlaced during transcode. This tells the importer how to interpret fields in the source, if any. - - - - - Apply a horizontal flip during import. - - - - - Apply a vertical flip during import. - - - - - Number of frames in the clip. - - - - - Frame rate of the clip. - - - - - Import audio tracks from source file. - - - - - Whether the preview is currently playing. - - - - - Whether to keep the alpha from the source into the transcoded clip. - - - - - Used in legacy import mode. Same as MovieImport.linearTexture. - - - - - Size in bytes of the file once imported. - - - - - Denominator of the pixel aspect ratio (num:den). - - - - - Numerator of the pixel aspect ratio (num:den). - - - - - Used in legacy import mode. Same as MovieImport.quality. - - - - - Number of audio tracks in the source file. - - - - - Size in bytes of the file before importing. - - - - - True if the source file has a channel for per-pixel transparency. - - - - - Returns true if transcoding was skipped during import, false otherwise. (Read Only) - -When VideoImporterTargetSettings.enableTranscoding is set to true, the resulting transcoding operation done at import time may be quite long, up to many hours depending on source resolution and content duration. An option to skip this process is offered in the asset import progress bar. When skipped, the transcoding instead provides a non-transcoded verision of the asset. However, the importer settings stay intact so this property can be inspected to detect the incoherence with the generated artifact. - -Re-importing without stopping the transcode process, or with transcode turned off, causes this property to become false. - - - - - True to import a MovieTexture (deprecated), false for a VideoClip (preferred). - - - - - Clear the platform-specific import settings for the specified platform, causing them to go back to the default settings. - - Platform name. - - - - Performs a value comparison with another VideoClipImporter. - - The importer to compare with. - - Returns true if the settings for both VideoClipImporters match. Returns false otherwise. - - - - - Returns a texture with the transcoded clip's current frame. -Returns frame 0 when not playing, and frame at current time when playing. - - - Texture containing the current frame. - - - - - Get the resulting height of the resize operation for the specified resize mode. - - Mode for which the height is queried. - - Height for the specified resize mode. - - - - - Get the full name of the resize operation for the specified resize mode. - - Mode for which the width is queried. - - Name for the specified resize mode. - - - - - Get the resulting width of the resize operation for the specified resize mode. - - Mode for which the width is queried. - - Width for the specified resize mode. - - - - - Number of audio channels in the specified source track. - - Index of the audio track to query. - - Number of channels. - - - - - Sample rate of the specified audio track. - - Index of the audio track to query. - - Sample rate in Hertz. - - - - - Returns the platform-specific import settings for the specified platform. - - Platform name. - - The platform-specific import settings. Throws an exception if the platform is unknown. - - - - - Starts preview playback. - - - - - Sets the platform-specific import settings for the specified platform. - - Platform name. - The new platform-specific import settings. - - - - Stops preview playback. - - - - - Video codec to use when importing video clips. - - - - - Choose the codec that supports hardware decoding on the target platform. - - - - - Encode video with the H.264 codec. - - - - - Encode video using the vp8 codec. - - - - - Describes how the fields in the image, if any, should be interpreted. - - - - - First field is in the even lines. - - - - - First field is in the odd lines. - - - - - Clip is not interlaced. - - - - - Methods to compensate for aspect ratio discrepancies between the source resolution and the wanted encoding size. - - - - - Perform no operation. - - - - - Stretch the source to fill the target resolution without preserving the aspect ratio. - - - - - Importer settings that can have platform-specific values. - - - - - How the aspect ratio discrepancies, if any, will be handled if the chosen import resolution has a different ratio than the source. - - - - - Bit rate type for the transcoded clip. - - - - - Codec that the resulting VideoClip will use. - - - - - Height of the transcoded clip when the resizeMode is set to custom. - - - - - Width of the transcoded clip when the resizeMode is set to custom. - - - - - Controls whether the movie file will be transcoded during import. When transcoding is not enabled, the file will be imported in its original format. - - - - - How to resize the images when going into the imported clip. - - - - - Controls an internal image resize, resulting in blurrier images but smaller image dimensions and file size. - - - - - Constructs an object with all members initialized with the default value inherent to their type. - - - - - How the video clip's images will be resized during transcoding. - - - - - Resulting size will be driven by VideoClipImporter.customWidth and VideoClipImporter.customHeight. - - - - - Half width and height. - - - - - Same width and height as the source. - - - - - Quarter width and height. - - - - - Fit source in a 1024x1024 rectangle. - - - - - Fit source in a 256x256 rectangle. - - - - - Fit source in a 512x512 rectangle. - - - - - 3/4 width and height. - - - - - Controls the imported clip's internal resize to save space at the cost of blurrier images. - - - - - No resize performed. - - - - - Scales width and height by 1/2. - - - - - Scales width and height by 3/4. - - - - - Enum for Tools.viewTool. - - - - - The FPS tool is selected. - - - - - View tool is not selected. - - - - - The orbit tool is selected. - - - - - The pan tool is selected. - - - - - The zoom tool is selected. - - - - - An enum containing different compression types. - - - - - WebGL resources are stored using Brotli compression. - - - - - WebGL resources are uncompressed. - - - - - WebGL resources are stored using Gzip compression. - - - - - Options for Exception support in WebGL. - - - - - Enable throw support. - - - - - Enable exception support for all exceptions, without stack trace information. - - - - - Enable exception support for all exceptions, including stack trace information. - - - - - Disable exception support. - - - - - The build format options available when building to WebGL. - - - - - Only asm.js output will be generated. - - - - - Both asm.js and WebAssembly output will be generated. The WebAssembly version of the generated content will be used if supported by the browser, otherwise, the asm.js version will be used. - - - - - Only WebAssembly output will be generated. This will require a browser with WebAssembly support to run the generated content. - - - - - Build configurations for Windows Store Visual Studio solutions. - - - - - Debug configuation. -No optimizations, profiler code enabled. - - - - - Master configuation. -Optimizations enabled, profiler code disabled. This configuration is used when submitting the application to Windows Store. - - - - - Release configuration. -Optimization enabled, profiler code enabled. - - - - - Target device type for a Windows Store application to run on. - - - - - The application targets all devices that run Windows Store applications. - - - - - The application targets HoloLens. - - - - - Application targets mobile devices. - - - - - Application targets PCs. - - - - - Target Xbox build type. - - - - - Debug player (for building with source code). - - - - - Development player. - - - - - Master player (submission-proof). - - - - - Resolution dialog setting. - - - - - Devices that support 6 Degrees of Freedom head tracking. - - - - - Devices that support 3 Degrees of Freedom head tracking. - - - - diff --git a/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEngine.dll b/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEngine.dll deleted file mode 100644 index 75761d7..0000000 Binary files a/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEngine.dll and /dev/null differ diff --git a/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEngine.xml b/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEngine.xml deleted file mode 100644 index 89df47b..0000000 --- a/packages/Unity3D.SDK.2018.4.11.1/lib/UnityEngine.xml +++ /dev/null @@ -1,88792 +0,0 @@ - - - - - UnityEngine - - - - Structure describing acceleration status of the device. - - - - - Value of acceleration. - - - - - Amount of time passed since last accelerometer measurement. - - - - - A class containing methods to assist with accessibility for users with different vision capabilities. - - - - - Gets a palette of colors that should be distinguishable for normal vision, deuteranopia, protanopia, and tritanopia. - - An array of colors to populate with a palette. - Minimum allowable perceived luminance from 0 to 1. A value of 0.2 or greater is recommended for dark backgrounds. - Maximum allowable perceived luminance from 0 to 1. A value of 0.8 or less is recommended for light backgrounds. - - The number of unambiguous colors in the palette. - - - - - The AddComponentMenu attribute allows you to place a script anywhere in the "Component" menu, instead of just the "Component->Scripts" menu. - - - - - The order of the component in the component menu (lower is higher to the top). - - - - - Add an item in the Component menu. - - The path to the component. - Where in the component menu to add the new item. - - - - Add an item in the Component menu. - - The path to the component. - Where in the component menu to add the new item. - - - - Enum mask of possible shader channel properties that can also be included when the Canvas mesh is created. - - - - - No additional shader parameters are needed. - - - - - Include the normals on the mesh vertices. - - - - - Include the Tangent on the mesh vertices. - - - - - Include UV1 on the mesh vertices. - - - - - Include UV2 on the mesh vertices. - - - - - Include UV3 on the mesh vertices. - - - - - Singleton class to access the baked NavMesh. - - - - - Describes how far in the future the agents predict collisions for avoidance. - - - - - Set a function to be called before the NavMesh is updated during the frame update execution. - - - - - The maximum amount of nodes processed each frame in the asynchronous pathfinding process. - - - - - Adds a link to the NavMesh. The link is described by the NavMeshLinkData struct. - - Describing the properties of the link. - - Representing the added link. - - - - - Adds a link to the NavMesh. The link is described by the NavMeshLinkData struct. - - Describing the properties of the link. - Translate the link to this position. - Rotate the link to this orientation. - - Representing the added link. - - - - - Adds the specified NavMeshData to the game. - - Contains the data for the navmesh. - - Representing the added navmesh. - - - - - Adds the specified NavMeshData to the game. - - Contains the data for the navmesh. - Translate the navmesh to this position. - Rotate the navmesh to this orientation. - - Representing the added navmesh. - - - - - Area mask constant that includes all NavMesh areas. - - - - - Calculate a path between two points and store the resulting path. - - The initial position of the path requested. - The final position of the path requested. - A bitfield mask specifying which NavMesh areas can be passed when calculating a path. - The resulting path. - - True if a either a complete or partial path is found and false otherwise. - - - - - Calculates a path between two positions mapped to the NavMesh, subject to the constraints and costs defined by the filter argument. - - The initial position of the path requested. - The final position of the path requested. - A filter specifying the cost of NavMesh areas that can be passed when calculating a path. - The resulting path. - - True if a either a complete or partial path is found and false otherwise. - - - - - Calculates triangulation of the current navmesh. - - - - - Creates and returns a new entry of NavMesh build settings available for runtime NavMesh building. - - - The created settings. - - - - - Locate the closest NavMesh edge from a point on the NavMesh. - - The origin of the distance query. - Holds the properties of the resulting location. - A bitfield mask specifying which NavMesh areas can be passed when finding the nearest edge. - - True if a nearest edge is found. - - - - - Locate the closest NavMesh edge from a point on the NavMesh, subject to the constraints of the filter argument. - - The origin of the distance query. - Holds the properties of the resulting location. - A filter specifying which NavMesh areas can be passed when finding the nearest edge. - - True if a nearest edge is found. - - - - - Gets the cost for path finding over geometry of the area type. - - Index of the area to get. - - - - Returns the area index for a named NavMesh area type. - - Name of the area to look up. - - Index if the specified are, or -1 if no area found. - - - - - Gets the cost for traversing over geometry of the layer type on all agents. - - - - - - Returns the layer index for a named layer. - - - - - - Returns an existing entry of NavMesh build settings. - - The ID to look for. - - The settings found. - - - - - Returns an existing entry of NavMesh build settings by its ordered index. - - The index to retrieve from. - - The found settings. - - - - - Returns the number of registered NavMesh build settings. - - - The number of registered entries. - - - - - Returns the name associated with the NavMesh build settings matching the provided agent type ID. - - The ID to look for. - - The name associated with the ID found. - - - - - A delegate which can be used to register callback methods to be invoked before the NavMesh system updates. - - - - - Trace a line between two points on the NavMesh. - - The origin of the ray. - The end of the ray. - Holds the properties of the ray cast resulting location. - A bitfield mask specifying which NavMesh areas can be passed when tracing the ray. - - True if the ray is terminated before reaching target position. Otherwise returns false. - - - - - Traces a line between two positions on the NavMesh, subject to the constraints defined by the filter argument. - - The origin of the ray. - The end of the ray. - Holds the properties of the ray cast resulting location. - A filter specifying which NavMesh areas can be passed when tracing the ray. - - True if the ray is terminated before reaching target position. Otherwise returns false. - - - - - Removes all NavMesh surfaces and links from the game. - - - - - Removes a link from the NavMesh. - - The instance of a link to remove. - - - - Removes the specified NavMeshDataInstance from the game, making it unavailable for agents and queries. - - The instance of a NavMesh to remove. - - - - Removes the build settings matching the agent type ID. - - The ID of the entry to remove. - - - - Finds the closest point on NavMesh within specified range. - - The origin of the sample query. - Holds the properties of the resulting location. - Sample within this distance from sourcePosition. - A mask specifying which NavMesh areas are allowed when finding the nearest point. - - True if a nearest point is found. - - - - - Samples the position closest to sourcePosition - on any NavMesh built for the agent type specified by the filter. - - The origin of the sample query. - Holds the properties of the resulting location. - Sample within this distance from sourcePosition. - A filter specifying which NavMesh areas are allowed when finding the nearest point. - - True if a nearest point is found. - - - - - Sets the cost for finding path over geometry of the area type on all agents. - - Index of the area to set. - New cost. - - - - Sets the cost for traversing over geometry of the layer type on all agents. - - - - - - - Navigation mesh agent. - - - - - The maximum acceleration of an agent as it follows a path, given in units / sec^2. - - - - - The type ID for the agent. - - - - - Maximum turning speed in (deg/s) while following a path. - - - - - Specifies which NavMesh areas are passable. Changing areaMask will make the path stale (see isPathStale). - - - - - Should the agent brake automatically to avoid overshooting the destination point? - - - - - Should the agent attempt to acquire a new path if the existing path becomes invalid? - - - - - Should the agent move across OffMeshLinks automatically? - - - - - The avoidance priority level. - - - - - The relative vertical displacement of the owning GameObject. - - - - - The current OffMeshLinkData. - - - - - The desired velocity of the agent including any potential contribution from avoidance. (Read Only) - - - - - Gets or attempts to set the destination of the agent in world-space units. - - - - - Does the agent currently have a path? (Read Only) - - - - - The height of the agent for purposes of passing under obstacles, etc. - - - - - Is the agent currently bound to the navmesh? (Read Only) - - - - - Is the agent currently positioned on an OffMeshLink? (Read Only) - - - - - Is the current path stale. (Read Only) - - - - - This property holds the stop or resume condition of the NavMesh agent. - - - - - Returns the owning object of the NavMesh the agent is currently placed on (Read Only). - - - - - The next OffMeshLinkData on the current path. - - - - - Gets or sets the simulation position of the navmesh agent. - - - - - The level of quality of avoidance. - - - - - Property to get and set the current path. - - - - - Is a path in the process of being computed but not yet ready? (Read Only) - - - - - The status of the current path (complete, partial or invalid). - - - - - The avoidance radius for the agent. - - - - - The distance between the agent's position and the destination on the current path. (Read Only) - - - - - Maximum movement speed when following a path. - - - - - Get the current steering target along the path. (Read Only) - - - - - Stop within this distance from the target position. - - - - - Gets or sets whether the transform position is synchronized with the simulated agent position. The default value is true. - - - - - Should the agent update the transform orientation? - - - - - Allows you to specify whether the agent should be aligned to the up-axis of the NavMesh or link that it is placed on. - - - - - Access the current velocity of the NavMeshAgent component, or set a velocity to control the agent manually. - - - - - Specifies which NavMesh layers are passable (bitfield). Changing walkableMask will make the path stale (see isPathStale). - - - - - Enables or disables the current off-mesh link. - - Is the link activated? - - - - Calculate a path to a specified point and store the resulting path. - - The final position of the path requested. - The resulting path. - - True if a path is found. - - - - - Completes the movement on the current OffMeshLink. - - - - - Locate the closest NavMesh edge. - - Holds the properties of the resulting location. - - True if a nearest edge is found. - - - - - Gets the cost for path calculation when crossing area of a particular type. - - Area Index. - - Current cost for specified area index. - - - - - Gets the cost for crossing ground of a particular type. - - Layer index. - - Current cost of specified layer. - - - - - Apply relative movement to current position. - - The relative movement vector. - - - - Trace a straight path towards a target postion in the NavMesh without moving the agent. - - The desired end position of movement. - Properties of the obstacle detected by the ray (if any). - - True if there is an obstacle between the agent and the target position, otherwise false. - - - - - Clears the current path. - - - - - Resumes the movement along the current path after a pause. - - - - - Sample a position along the current path. - - A bitfield mask specifying which NavMesh areas can be passed when tracing the path. - Terminate scanning the path at this distance. - Holds the properties of the resulting location. - - True if terminated before reaching the position at maxDistance, false otherwise. - - - - - Sets the cost for traversing over areas of the area type. - - Area cost. - New cost for the specified area index. - - - - Sets or updates the destination thus triggering the calculation for a new path. - - The target point to navigate to. - - True if the destination was requested successfully, otherwise false. - - - - - Sets the cost for traversing over geometry of the layer type. - - Layer index. - New cost for the specified layer. - - - - Assign a new path to this agent. - - New path to follow. - - True if the path is succesfully assigned. - - - - - Stop movement of this agent along its current path. - - - - - Warps agent to the provided position. - - New position to warp the agent to. - - True if agent is successfully warped, otherwise false. - - - - - Bitmask used for operating with debug data from the NavMesh build process. - - - - - All debug data from the NavMesh build process is taken into consideration. - - - - - The triangles of all the geometry that is used as a base for computing the new NavMesh. - - - - - No debug data from the NavMesh build process is taken into consideration. - - - - - Meshes of convex polygons constructed within the unified contours of adjacent regions. - - - - - The triangulated meshes with height details that better approximate the source geometry. - - - - - The contours that follow precisely the edges of each surface region. - - - - - The segmentation of the traversable surfaces into smaller areas necessary for producing simple polygons. - - - - - Contours bounding each of the surface regions, described through fewer vertices and straighter edges compared to RawContours. - - - - - The voxels produced by rasterizing the source geometry into walkable and unwalkable areas. - - - - - Specify which of the temporary data generated while building the NavMesh should be retained in memory after the process has completed. - - - - - Specify which types of debug data to collect when building the NavMesh. - - - - - Navigation mesh builder interface. - - - - - Builds a NavMesh data object from the provided input sources. (UnityEngine) - - Settings for the bake process, see NavMeshBuildSettings. - List of input geometry used for baking, they describe the surfaces to walk on or obstacles to avoid. - Bounding box relative to position and rotation which describes the volume where the NavMesh should be built. Empty bounds is treated as no bounds, i.e. the NavMesh will cover all the inputs. - Center of the NavMeshData. This specifies the origin for the NavMesh tiles (See Also: NavMeshBuildSettings.tileSize). - Orientation of the NavMeshData, you can use this to generate NavMesh with an arbitrary up-vector – e.g. for walkable vertical surfaces. - - Returns a newly built NavMeshData, or null if the NavMeshData was empty or an error occurred. -The newly built NavMeshData, or null if the NavMeshData was empty or an error occurred. - - - - - Cancel Navmesh construction. (UnityEditor) See Also: NavMeshBuilder.BuildNavMeshAsync - - - - - Cancels an asynchronous update of the specified NavMesh data. (UnityEngine) See Also: NavMeshBuilder.UpdateNavMeshDataAsync. - - The data associated with asynchronous updating. - - - - Collects renderers or physics colliders, and terrains within a volume. (UnityEngine) - - The queried objects must overlap these bounds to be included in the results. - Specifies which layers are included in the query. - Which type of geometry to collect - e.g. physics colliders. - Area type to assign to results, unless modified by NavMeshMarkup. - List of markups which allows finer control over how objects are collected. - List where results are stored, the list is cleared at the beginning of the call. - - - - Collects renderers or physics colliders, and terrains within a transform hierarchy. (UnityEngine) - - If not null, consider only root and its children in the query; if null, includes everything loaded. - Specifies which layers are included in the query. - Which type of geometry to collect - e.g. physics colliders. - Area type to assign to results, unless modified by NavMeshMarkup. - List of markups which allows finer control over how objects are collected. - List where results are stored, the list is cleared at the beginning of the call. - - - - Incrementally updates the NavMeshData based on the sources. (UnityEngine) - - The NavMeshData to update. - The build settings which is used to update the NavMeshData. The build settings is also hashed along with the data, so changing settings will cause a full rebuild. - List of input geometry used for baking, they describe the surfaces to walk on or obstacles to avoid. - Bounding box relative to position and rotation which describes the volume where the NavMesh should be built. Empty bounds is treated as no-bounds, that is, the NavMesh will cover all the inputs. - - Returns true if the update was successful. - - - - - Asynchronously and incrementally updates the NavMeshData based on the sources. (UnityEngine) - - The NavMeshData to update. - The build settings which is used to update the NavMeshData. The build settings is also hashed along with the data, so changing settings will likely to cause full rebuild. - List of input geometry used for baking, they describe the surfaces to walk on or obstacles to avoid. - Bounding box relative to position and rotation which describes to volume where the NavMesh should be built. Empty bounds is treated as no-bounds, that is, the NavMesh will cover all the inputs. - - Can be used to check the progress of the update. - - - - - The NavMesh build markup allows you to control how certain objects are treated during the NavMesh build process, specifically when collecting sources for building. - - - - - The area type to use when override area is enabled. - - - - - Use this to specify whether the GameObject and its children should be ignored. - - - - - Use this to specify whether the area type of the GameObject and its children should be overridden by the area type specified in this struct. - - - - - Use this to specify which GameObject (including the GameObject’s children) the markup should be applied to. - - - - - The NavMeshBuildSettings struct allows you to specify a collection of settings which describe the dimensions and limitations of a particular agent type. - - - - - The maximum vertical step size an agent can take. - - - - - The height of the agent for baking in world units. - - - - - The radius of the agent for baking in world units. - - - - - The maximum slope angle which is walkable (angle in degrees). - - - - - The agent type ID the NavMesh will be baked for. - - - - - Options for collecting debug data during the build process. - - - - - The approximate minimum area of individual NavMesh regions. - - - - - Enables overriding the default tile size. See Also: tileSize. - - - - - Enables overriding the default voxel size. See Also: voxelSize. - - - - - Sets the tile size in voxel units. - - - - - Sets the voxel size in world length units. - - - - - Validates the properties of NavMeshBuildSettings. - - Describes the volume to build NavMesh for. - - The list of violated constraints. - - - - - The input to the NavMesh builder is a list of NavMesh build sources. - - - - - Describes the area type of the NavMesh surface for this object. - - - - - Points to the owning component - if available, otherwise null. - - - - - The type of the shape this source describes. See Also: NavMeshBuildSourceShape. - - - - - Describes the dimensions of the shape. - - - - - Describes the object referenced for Mesh and Terrain types of input sources. - - - - - Describes the local to world transformation matrix of the build source. That is, position and orientation and scale of the shape. - - - - - Used with NavMeshBuildSource to define the shape for building NavMesh. - - - - - Describes a box primitive for use with NavMeshBuildSource. - - - - - Describes a capsule primitive for use with NavMeshBuildSource. - - - - - Describes a Mesh source for use with NavMeshBuildSource. - - - - - Describes a ModifierBox source for use with NavMeshBuildSource. - - - - - Describes a sphere primitive for use with NavMeshBuildSource. - - - - - Describes a TerrainData source for use with NavMeshBuildSource. - - - - - Used for specifying the type of geometry to collect. Used with NavMeshBuilder.CollectSources. - - - - - Collect geometry from the 3D physics collision representation. - - - - - Collect meshes form the rendered geometry. - - - - - Contains and represents NavMesh data. - - - - - Gets or sets the world space position of the NavMesh data. - - - - - Gets or sets the orientation of the NavMesh data. - - - - - Returns the bounding volume of the input geometry used to build this NavMesh (Read Only). - - - - - Constructs a new object for representing a NavMesh for the default agent type. - - - - - Constructs a new object representing a NavMesh for the specified agent type. - - The agent type ID to create a NavMesh for. - - - - The instance is returned when adding NavMesh data. - - - - - Get or set the owning Object. - - - - - True if the NavMesh data is added to the navigation system - otherwise false (Read Only). - - - - - Removes this instance from the NavMesh system. - - - - - Result information for NavMesh queries. - - - - - Distance to the point of hit. - - - - - Flag set when hit. - - - - - Mask specifying NavMesh area at point of hit. - - - - - Normal at the point of hit. - - - - - Position of hit. - - - - - Used for runtime manipulation of links connecting polygons of the NavMesh. - - - - - Specifies which agent type this link is available for. - - - - - Area type of the link. - - - - - If true, the link can be traversed in both directions, otherwise only from start to end position. - - - - - If positive, overrides the pathfinder cost to traverse the link. - - - - - End position of the link. - - - - - Start position of the link. - - - - - If positive, the link will be rectangle aligned along the line from start to end. - - - - - An instance representing a link available for pathfinding. - - - - - Get or set the owning Object. - - - - - True if the NavMesh link is added to the navigation system - otherwise false (Read Only). - - - - - Removes this instance from the game. - - - - - An obstacle for NavMeshAgents to avoid. - - - - - Should this obstacle be carved when it is constantly moving? - - - - - Should this obstacle make a cut-out in the navmesh. - - - - - Threshold distance for updating a moving carved hole (when carving is enabled). - - - - - Time to wait until obstacle is treated as stationary (when carving and carveOnlyStationary are enabled). - - - - - The center of the obstacle, measured in the object's local space. - - - - - Height of the obstacle's cylinder shape. - - - - - Radius of the obstacle's capsule shape. - - - - - The shape of the obstacle. - - - - - The size of the obstacle, measured in the object's local space. - - - - - Velocity at which the obstacle moves around the NavMesh. - - - - - Shape of the obstacle. - - - - - Box shaped obstacle. - - - - - Capsule shaped obstacle. - - - - - A path as calculated by the navigation system. - - - - - Corner points of the path. (Read Only) - - - - - Status of the path. (Read Only) - - - - - Erase all corner points from path. - - - - - NavMeshPath constructor. - - - - - Calculate the corners for the path. - - Array to store path corners. - - The number of corners along the path - including start and end points. - - - - - Status of path. - - - - - The path terminates at the destination. - - - - - The path is invalid. - - - - - The path cannot reach the destination. - - - - - Specifies which agent type and areas to consider when searching the NavMesh. - - - - - The agent type ID, specifying which navigation meshes to consider for the query functions. - - - - - A bitmask representing the traversable area types. - - - - - Returns the area cost multiplier for the given area type for this filter. - - Index to retreive the cost for. - - The cost multiplier for the supplied area index. - - - - - Sets the pathfinding cost multiplier for this filter for a given area type. - - The area index to set the cost for. - The cost for the supplied area index. - - - - Contains data describing a triangulation of a navmesh. - - - - - NavMesh area indices for the navmesh triangulation. - - - - - Triangle indices for the navmesh triangulation. - - - - - NavMeshLayer values for the navmesh triangulation. - - - - - Vertices for the navmesh triangulation. - - - - - Level of obstacle avoidance. - - - - - Good avoidance. High performance impact. - - - - - Enable highest precision. Highest performance impact. - - - - - Enable simple avoidance. Low performance impact. - - - - - Medium avoidance. Medium performance impact. - - - - - Disable avoidance. - - - - - Link allowing movement outside the planar navigation mesh. - - - - - Is link active. - - - - - NavMesh area index for this OffMeshLink component. - - - - - Automatically update endpoints. - - - - - Can link be traversed in both directions. - - - - - Modify pathfinding cost for the link. - - - - - The transform representing link end position. - - - - - NavMeshLayer for this OffMeshLink component. - - - - - Is link occupied. (Read Only) - - - - - The transform representing link start position. - - - - - Explicitly update the link endpoints. - - - - - State of OffMeshLink. - - - - - Is link active (Read Only). - - - - - Link end world position (Read Only). - - - - - Link type specifier (Read Only). - - - - - The OffMeshLink if the link type is a manually placed Offmeshlink (Read Only). - - - - - Link start world position (Read Only). - - - - - Is link valid (Read Only). - - - - - Link type specifier. - - - - - Vertical drop. - - - - - Horizontal jump. - - - - - Manually specified type of link. - - - - - Unity Analytics provides insight into your game users e.g. DAU, MAU. - - - - - Controls whether the sending of device stats at runtime is enabled. - - - - - Controls whether the Analytics service is enabled at runtime. - - - - - Reports whether Unity is set to initialize Analytics on startup. - - - - - Controls whether to limit user tracking at runtime. - - - - - Reports whether the player has opted out of data collection. - - - - - Custom Events (optional). - - Name of custom event. Name cannot include the prefix "unity." - This is a reserved keyword. - Additional parameters sent to Unity Analytics at the time the custom event was triggered. Dictionary key cannot include the prefix "unity." - This is a reserved keyword. - - - - Custom Events (optional). - - - - - - Custom Events (optional). - - - - - - - Attempts to flush immediately all queued analytics events to the network and filesystem cache if possible (optional). - - - - - This API is used for registering a Runtime Analytics event. It is meant for internal use only and is likely to change in the future. User code should never use this API. - - Name of the event. - Hourly limit for this event name. - Maximum number of items in this event. - Vendor key name. - Optional event name prefix value. - Event version number. - - - - This API is used for registering a Runtime Analytics event. It is meant for internal use only and is likely to change in the future. User code should never use this API. - - Name of the event. - Hourly limit for this event name. - Maximum number of items in this event. - Vendor key name. - Optional event name prefix value. - Event version number. - - - - Resume Analytics initialization. - - - - - This API is used to send a Runtime Analytics event. It is meant for internal use only and is likely to change in the future. User code should never use this API. - - Name of the event. - Event version number. - Optional event name prefix value. - Additional event data. - - - - User Demographics (optional). - - Birth year of user. Must be 4-digit year format, only. - - - - User Demographics (optional). - - Gender of user can be "Female", "Male", or "Unknown". - - - - User Demographics (optional). - - User id. - - - - Tracking Monetization (optional). - - The id of the purchased item. - The price of the item. - Abbreviation of the currency used for the transaction. For example “USD” (United States Dollars). See http:en.wikipedia.orgwikiISO_4217 for a standardized list of currency abbreviations. - Receipt data (iOS) receipt ID (android) for in-app purchases to verify purchases with Apple iTunes / Google Play. Use null in the absence of receipts. - Android receipt signature. If using native Android use the INAPP_DATA_SIGNATURE string containing the signature of the purchase data that was signed with the private key of the developer. The data signature uses the RSASSA-PKCS1-v1_5 scheme. Pass in null in absence of a signature. - Set to true when using UnityIAP. - - - - Tracking Monetization (optional). - - The id of the purchased item. - The price of the item. - Abbreviation of the currency used for the transaction. For example “USD” (United States Dollars). See http:en.wikipedia.orgwikiISO_4217 for a standardized list of currency abbreviations. - Receipt data (iOS) receipt ID (android) for in-app purchases to verify purchases with Apple iTunes / Google Play. Use null in the absence of receipts. - Android receipt signature. If using native Android use the INAPP_DATA_SIGNATURE string containing the signature of the purchase data that was signed with the private key of the developer. The data signature uses the RSASSA-PKCS1-v1_5 scheme. Pass in null in absence of a signature. - Set to true when using UnityIAP. - - - - Tracking Monetization (optional). - - The id of the purchased item. - The price of the item. - Abbreviation of the currency used for the transaction. For example “USD” (United States Dollars). See http:en.wikipedia.orgwikiISO_4217 for a standardized list of currency abbreviations. - Receipt data (iOS) receipt ID (android) for in-app purchases to verify purchases with Apple iTunes / Google Play. Use null in the absence of receipts. - Android receipt signature. If using native Android use the INAPP_DATA_SIGNATURE string containing the signature of the purchase data that was signed with the private key of the developer. The data signature uses the RSASSA-PKCS1-v1_5 scheme. Pass in null in absence of a signature. - Set to true when using UnityIAP. - - - - Analytics API result. - - - - - Analytics API result: Analytics is disabled. - - - - - Analytics API result: Invalid argument value. - - - - - Analytics API result: Analytics not initialized. - - - - - Analytics API result: Success. - - - - - Analytics API result: Argument size limit. - - - - - Analytics API result: Too many parameters. - - - - - Analytics API result: Too many requests. - - - - - Analytics API result: This platform doesn't support Analytics. - - - - - Provides access to the Analytics session information for the current game instance. - - - - - The number of sessions played since the app was installed. - - - - - The time elapsed, in milliseconds, since the beginning of the current game session. - - - - - Reports whether the current session is the first session since the player installed the game or application. - - - - - A random, unique GUID identifying the current game or app session. - - - - - The current state of the session. - - - - - Dispatched when the Analytics session state changes. - - - - - - A random GUID uniquely identifying sessions played on the same instance of your game or app. - - - - - Dispatched when the Analytics session state changes. - - Current session state. - Current session id. - Length of the current session in milliseconds. - True, if the sessionId has changed; otherwise false. - - - - Session tracking states. - - - - - Session tracking has paused. - - - - - Session tracking has resumed. - - - - - Session tracking has started. - - - - - Session tracking has stopped. - - - - - User Demographics: Gender of a user. - - - - - User Demographics: Female Gender of a user. - - - - - User Demographics: Male Gender of a user. - - - - - User Demographics: Unknown Gender of a user. - - - - - Unity Performace provides insight into your game performace. - - - - - Controls whether the Performance Reporting service is enabled at runtime. - - - - - Time taken to initialize graphics in microseconds, measured from application startup. - - - - - Parent class for all joints that have anchor points. - - - - - The joint's anchor point on the object that has the joint component. - - - - - Should the connectedAnchor be calculated automatically? - - - - - The joint's anchor point on the second object (ie, the one which doesn't have the joint component). - - - - - Structure describing a permission that requires user authorization. - - - - - Used when requesting permission or checking if permission has been granted to use the camera. - - - - - Used when requesting permission or checking if permission has been granted to use the users location with coarse granularity. - - - - - Used when requesting permission or checking if permission has been granted to read from external storage such as a SD card. - - - - - Used when requesting permission or checking if permission has been granted to write to external storage such as a SD card. - - - - - Used when requesting permission or checking if permission has been granted to use the users location with high precision. - - - - - Check if the user has granted access to a device resource or information that requires authorization. - - A string representing the permission to request. For permissions which Unity has not predefined you may also manually provide the constant value obtained from the Android documentation here: https:developer.android.comguidetopicspermissionsoverview#permission-groups such as "android.permission.READ_CONTACTS". - - Whether the requested permission has been granted. - - - - - Used when requesting permission or checking if permission has been granted to use the microphone. - - - - - Request that the user grant access to a device resource or information that requires authorization. - - A string that describes the permission to request. For permissions which Unity has not predefined you may also manually provide the constant value obtained from the Android documentation here: https:developer.android.comguidetopicspermissionsoverview#permission-groups such as "android.permission.READ_CONTACTS". - - - - ActivityIndicator Style (Android Specific). - - - - - Do not show ActivityIndicator. - - - - - Large Inversed (android.R.attr.progressBarStyleLargeInverse). - - - - - Small Inversed (android.R.attr.progressBarStyleSmallInverse). - - - - - Large (android.R.attr.progressBarStyleLarge). - - - - - Small (android.R.attr.progressBarStyleSmall). - - - - - AndroidInput provides support for off-screen touch input, such as a touchpad. - - - - - Property indicating whether the system provides secondary touch input. - - - - - Property indicating the height of the secondary touchpad. - - - - - Property indicating the width of the secondary touchpad. - - - - - Number of secondary touches. Guaranteed not to change throughout the frame. (Read Only). - - - - - Returns object representing status of a specific touch on a secondary touchpad (Does not allocate temporary variables). - - - - - - AndroidJavaClass is the Unity representation of a generic instance of java.lang.Class. - - - - - Construct an AndroidJavaClass from the class name. - - Specifies the Java class name (e.g. <tt>java.lang.String</tt>). - - - - AndroidJavaObject is the Unity representation of a generic instance of java.lang.Object. - - - - - Calls a Java method on an object (non-static). - - Specifies which method to call. - An array of parameters passed to the method. - - - - Call a Java method on an object. - - Specifies which method to call. - An array of parameters passed to the method. - - - - Call a static Java method on a class. - - Specifies which method to call. - An array of parameters passed to the method. - - - - Call a static Java method on a class. - - Specifies which method to call. - An array of parameters passed to the method. - - - - Construct an AndroidJavaObject based on the name of the class. - - Specifies the Java class name (e.g. "<tt>java.lang.String<tt>" or "<tt>javalangString<tt>"). - An array of parameters passed to the constructor. - - - - IDisposable callback. - - - - - Get the value of a field in an object (non-static). - - The name of the field (e.g. int counter; would have fieldName = "counter"). - - - - Retrieves the raw <tt>jclass</tt> pointer to the Java class. - -Note: Using raw JNI functions requires advanced knowledge of the Android Java Native Interface (JNI). Please take note. - - - - - Retrieves the raw <tt>jobject</tt> pointer to the Java object. - -Note: Using raw JNI functions requires advanced knowledge of the Android Java Native Interface (JNI). Please take note. - - - - - Get the value of a static field in an object type. - - The name of the field (e.g. <i>int counter;</i> would have fieldName = "counter"). - - - - Set the value of a field in an object (non-static). - - The name of the field (e.g. int counter; would have fieldName = "counter"). - The value to assign to the field. It has to match the field type. - - - - Set the value of a static field in an object type. - - The name of the field (e.g. int counter; would have fieldName = "counter"). - The value to assign to the field. It has to match the field type. - - - - This class can be used to implement any java interface. Any java vm method invocation matching the interface on the proxy object will automatically be passed to the c# implementation. - - - - - The equivalent of the java.lang.Object equals() method. - - - - Returns true when the objects are equal and false if otherwise. - - - - - The equivalent of the java.lang.Object hashCode() method. - - - Returns the hash code of the java proxy object. - - - - - Java interface implemented by the proxy. - - - - - The equivalent of the java.lang.Object toString() method. - - - Returns C# class name + " <c# proxy java object>". - - - - - - - Java interface to be implemented by the proxy. - - - - - - Java interface to be implemented by the proxy. - - - - Called by the java vm whenever a method is invoked on the java proxy interface. You can override this to run special code on method invokation, or you can leave the implementation as is, and leave the default behavior which is to look for c# methods matching the signature of the java method. - - Name of the invoked java method. - Arguments passed from the java vm - converted into AndroidJavaObject, AndroidJavaClass or a primitive. - Arguments passed from the java vm - all objects are represented by AndroidJavaObject, int for instance is represented by a java.lang.Integer object. - - - - Called by the java vm whenever a method is invoked on the java proxy interface. You can override this to run special code on method invokation, or you can leave the implementation as is, and leave the default behavior which is to look for c# methods matching the signature of the java method. - - Name of the invoked java method. - Arguments passed from the java vm - converted into AndroidJavaObject, AndroidJavaClass or a primitive. - Arguments passed from the java vm - all objects are represented by AndroidJavaObject, int for instance is represented by a java.lang.Integer object. - - - - AndroidJavaRunnable is the Unity representation of a java.lang.Runnable object. - - - - - 'Raw' JNI interface to Android Dalvik (Java) VM from Mono (CS/JS). - -Note: Using raw JNI functions requires advanced knowledge of the Android Java Native Interface (JNI). Please take note. - - - - - Allocates a new Java object without invoking any of the constructors for the object. - - - - - - Attaches the current thread to a Java (Dalvik) VM. - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Deletes the global reference pointed to by <tt>obj</tt>. - - - - - - Deletes the local reference pointed to by <tt>obj</tt>. - - - - - - Detaches the current thread from a Java (Dalvik) VM. - - - - - Ensures that at least a given number of local references can be created in the current thread. - - - - - - Clears any exception that is currently being thrown. - - - - - Prints an exception and a backtrace of the stack to the <tt>logcat</tt> - - - - - Determines if an exception is being thrown. - - - - - Raises a fatal error and does not expect the VM to recover. This function does not return. - - - - - - This function loads a locally-defined class. - - - - - - Convert a Java array of <tt>boolean</tt> to a managed array of System.Boolean. - - - - - - Convert a Java array of <tt>byte</tt> to a managed array of System.Byte. - - - - - - Convert a Java array of <tt>char</tt> to a managed array of System.Char. - - - - - - Convert a Java array of <tt>double</tt> to a managed array of System.Double. - - - - - - Convert a Java array of <tt>float</tt> to a managed array of System.Single. - - - - - - Convert a Java array of <tt>int</tt> to a managed array of System.Int32. - - - - - - Convert a Java array of <tt>long</tt> to a managed array of System.Int64. - - - - - - Convert a Java array of <tt>java.lang.Object</tt> to a managed array of System.IntPtr, representing Java objects. - - - - - - Converts a <tt>java.lang.reflect.Field</tt> to a field ID. - - - - - - Converts a <tt>java.lang.reflect.Method<tt> or <tt>java.lang.reflect.Constructor<tt> object to a method ID. - - - - - - Convert a Java array of <tt>short</tt> to a managed array of System.Int16. - - - - - - Returns the number of elements in the array. - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the field ID for an instance (nonstatic) field of a class. - - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the method ID for an instance (nonstatic) method of a class or interface. - - - - - - - - Returns an element of an <tt>Object</tt> array. - - - - - - - Returns the class of an object. - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - Returns the field ID for a static field of a class. - - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - Returns the method ID for a static method of a class. - - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns a managed string object representing the string in modified UTF-8 encoding. - - - - - - Returns the length in bytes of the modified UTF-8 representation of a string. - - - - - - If <tt>clazz<tt> represents any class other than the class <tt>Object<tt>, then this function returns the object that represents the superclass of the class specified by <tt>clazz</tt>. - - - - - - Returns the version of the native method interface. - - - - - Determines whether an object of <tt>clazz1<tt> can be safely cast to <tt>clazz2<tt>. - - - - - - - Tests whether an object is an instance of a class. - - - - - - - Tests whether two references refer to the same Java object. - - - - - - - Construct a new primitive array object. - - - - - - Construct a new primitive array object. - - - - - - Construct a new primitive array object. - - - - - - Construct a new primitive array object. - - - - - - Construct a new primitive array object. - - - - - - Creates a new global reference to the object referred to by the <tt>obj</tt> argument. - - - - - - Construct a new primitive array object. - - - - - - Creates a new local reference that refers to the same object as <tt>obj</tt>. - - - - - - Construct a new primitive array object. - - - - - - Constructs a new Java object. The method ID indicates which constructor method to invoke. This ID must be obtained by calling GetMethodID() with <init> as the method name and void (V) as the return type. - - - - - - - - Constructs a new array holding objects in class <tt>clazz<tt>. All elements are initially set to <tt>obj<tt>. - - - - - - - - Construct a new primitive array object. - - - - - - Constructs a new <tt>java.lang.String</tt> object from an array of characters in modified UTF-8 encoding. - - - - - - Pops off the current local reference frame, frees all the local references, and returns a local reference in the previous local reference frame for the given <tt>result</tt> object. - - - - - - Creates a new local reference frame, in which at least a given number of local references can be created. - - - - - - Sets the value of one element in a primitive array. - - The array of native booleans. - Index of the array element to set. - The value to set - for 'true' use 1, for 'false' use 0. - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets an element of an <tt>Object</tt> array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Causes a <tt>java.lang.Throwable</tt> object to be thrown. - - - - - - Constructs an exception object from the specified class with the <tt>message</tt> specified by message and causes that exception to be thrown. - - - - - - - Convert a managed array of System.Boolean to a Java array of <tt>boolean</tt>. - - - - - - Convert a managed array of System.Byte to a Java array of <tt>byte</tt>. - - - - - - Convert a managed array of System.Char to a Java array of <tt>char</tt>. - - - - - - Convert a managed array of System.Double to a Java array of <tt>double</tt>. - - - - - - Convert a managed array of System.Single to a Java array of <tt>float</tt>. - - - - - - Convert a managed array of System.Int32 to a Java array of <tt>int</tt>. - - - - - - Convert a managed array of System.Int64 to a Java array of <tt>long</tt>. - - - - - - Convert a managed array of System.IntPtr, representing Java objects, to a Java array of <tt>java.lang.Object</tt>. - - - - - - Converts a field ID derived from cls to a <tt>java.lang.reflect.Field</tt> object. - - - - - - - - Converts a method ID derived from clazz to a <tt>java.lang.reflect.Method<tt> or <tt>java.lang.reflect.Constructor<tt> object. - - - - - - - - Convert a managed array of System.Int16 to a Java array of <tt>short</tt>. - - - - - - Helper interface for JNI interaction; signature creation and method lookups. - -Note: Using raw JNI functions requires advanced knowledge of the Android Java Native Interface (JNI). Please take note. - - - - - Set debug to true to log calls through the AndroidJNIHelper. - - - - - Creates a managed array from a Java array. - - Java array object to be converted into a managed array. - - - - Creates a Java array from a managed array. - - Managed array to be converted into a Java array object. - - - - Creates a java proxy object which connects to the supplied proxy implementation. - - An implementatinon of a java interface in c#. - - - - Creates a UnityJavaRunnable object (implements java.lang.Runnable). - - A delegate representing the java.lang.Runnable. - - - - - Creates the parameter array to be used as argument list when invoking Java code through CallMethod() in AndroidJNI. - - An array of objects that should be converted to Call parameters. - - - - Deletes any local jni references previously allocated by CreateJNIArgArray(). - - The array of arguments used as a parameter to CreateJNIArgArray(). - The array returned by CreateJNIArgArray(). - - - - Scans a particular Java class for a constructor method matching a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Constructor method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - - - - Scans a particular Java class for a constructor method matching a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Constructor method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - - - - Get a JNI method ID for a constructor based on calling arguments. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Array with parameters to be passed to the constructor when invoked. - - - - - Scans a particular Java class for a field matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the field as declared in Java. - Field signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static fields; <tt>false<tt> for instance (nonstatic) fields. - - - - Scans a particular Java class for a field matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the field as declared in Java. - Field signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static fields; <tt>false<tt> for instance (nonstatic) fields. - - - - Scans a particular Java class for a field matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the field as declared in Java. - Field signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static fields; <tt>false<tt> for instance (nonstatic) fields. - - - - Get a JNI field ID based on type detection. Generic parameter represents the field type. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the field as declared in Java. - Set to <tt>true<tt> for static fields; <tt>false<tt> for instance (nonstatic) fields. - - - - - Scans a particular Java class for a method matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the method as declared in Java. - Method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static methods; <tt>false<tt> for instance (nonstatic) methods. - - - - Scans a particular Java class for a method matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the method as declared in Java. - Method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static methods; <tt>false<tt> for instance (nonstatic) methods. - - - - Scans a particular Java class for a method matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the method as declared in Java. - Method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static methods; <tt>false<tt> for instance (nonstatic) methods. - - - - Get a JNI method ID based on calling arguments. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the method as declared in Java. - Array with parameters to be passed to the method when invoked. - Set to <tt>true<tt> for static methods; <tt>false<tt> for instance (nonstatic) methods. - - - - - Get a JNI method ID based on calling arguments. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the method as declared in Java. - Array with parameters to be passed to the method when invoked. - Set to <tt>true<tt> for static methods; <tt>false<tt> for instance (nonstatic) methods. - - - - - Creates the JNI signature string for particular object type. - - Object for which a signature is to be produced. - - - - Creates the JNI signature string for an object parameter list. - - Array of object for which a signature is to be produced. - - - - Creates the JNI signature string for an object parameter list. - - Array of object for which a signature is to be produced. - - - - The animation component is used to play back animations. - - - - - When turned on, Unity might stop animating if it thinks that the results of the animation won't be visible to the user. - - - - - When turned on, animations will be executed in the physics loop. This is only useful in conjunction with kinematic rigidbodies. - - - - - The default animation. - - - - - Controls culling of this Animation component. - - - - - Is an animation currently being played? - - - - - AABB of this Animation animation component in local space. - - - - - Should the default animation clip (the Animation.clip property) automatically start playing on startup? - - - - - How should time beyond the playback range of the clip be treated? - - - - - Adds a clip to the animation with name newName. - - - - - - - Adds clip to the only play between firstFrame and lastFrame. The new clip will also be added to the animation with name newName. - - Should an extra frame be inserted at the end that matches the first frame? Turn this on if you are making a looping animation. - - - - - - - - Adds clip to the only play between firstFrame and lastFrame. The new clip will also be added to the animation with name newName. - - Should an extra frame be inserted at the end that matches the first frame? Turn this on if you are making a looping animation. - - - - - - - - Blends the animation named animation towards targetWeight over the next time seconds. - - - - - - - - Blends the animation named animation towards targetWeight over the next time seconds. - - - - - - - - Blends the animation named animation towards targetWeight over the next time seconds. - - - - - - - - Fades the animation with name animation in over a period of time seconds and fades other animations out. - - - - - - - - Fades the animation with name animation in over a period of time seconds and fades other animations out. - - - - - - - - Fades the animation with name animation in over a period of time seconds and fades other animations out. - - - - - - - - Cross fades an animation after previous animations has finished playing. - - - - - - - - - Cross fades an animation after previous animations has finished playing. - - - - - - - - - Cross fades an animation after previous animations has finished playing. - - - - - - - - - Cross fades an animation after previous animations has finished playing. - - - - - - - - - Get the number of clips currently assigned to this animation. - - - - - Is the animation named name playing? - - - - - - Plays an animation without blending. - - - - - - - Plays an animation without blending. - - - - - - - Plays an animation without blending. - - - - - - - Plays an animation without blending. - - - - - - - Plays an animation after previous animations has finished playing. - - - - - - - - Plays an animation after previous animations has finished playing. - - - - - - - - Plays an animation after previous animations has finished playing. - - - - - - - - Remove clip from the animation list. - - - - - - Remove clip from the animation list. - - - - - - Rewinds the animation named name. - - - - - - Rewinds all animations. - - - - - Samples animations at the current state. - - - - - Stops all playing animations that were started with this Animation. - - - - - Stops an animation named name. - - - - - - Returns the animation state named name. - - - - - Used by Animation.Play function. - - - - - Animations will be added. - - - - - Animations will be blended. - - - - - Stores keyframe based animations. - - - - - Returns true if the animation clip has no curves and no events. - - - - - Animation Events for this animation clip. - - - - - Frame rate at which keyframes are sampled. (Read Only) - - - - - Returns true if the Animation has animation on the root transform. - - - - - Returns true if the AnimationClip has root motion curves. - - - - - Returns true if the AnimationClip has editor curves for its root motion. - - - - - Returns true if the AnimationClip has root Curves. - - - - - Returns true if the animation contains curve that drives a humanoid rig. - - - - - Set to true if the AnimationClip will be used with the Legacy Animation component ( instead of the Animator ). - - - - - Animation length in seconds. (Read Only) - - - - - AABB of this Animation Clip in local space of Animation component that it is attached too. - - - - - Sets the default wrap mode used in the animation state. - - - - - Adds an animation event to the clip. - - AnimationEvent to add. - - - - Clears all curves from the clip. - - - - - Creates a new animation clip. - - - - - Realigns quaternion keys to ensure shortest interpolation paths. - - - - - Samples an animation at a given time for any animated properties. - - The animated game object. - The time to sample an animation. - - - - Assigns the curve to animate a specific property. - - Path to the game object this curve applies to. The relativePath - is formatted similar to a pathname, e.g. "rootspineleftArm". If relativePath - is empty it refers to the game object the animation clip is attached to. - The class type of the component that is animated. - The name or path to the property being animated. - The animation curve. - - - - This class defines a pair of clips used by AnimatorOverrideController. - - - - - The original clip from the controller. - - - - - The override animation clip. - - - - - This enum controlls culling of Animation component. - - - - - Animation culling is disabled - object is animated even when offscreen. - - - - - Animation is disabled when renderers are not visible. - - - - - Store a collection of Keyframes that can be evaluated over time. - - - - - All keys defined in the animation curve. - - - - - The number of keys in the curve. (Read Only) - - - - - The behaviour of the animation after the last keyframe. - - - - - The behaviour of the animation before the first keyframe. - - - - - Add a new key to the curve. - - The time at which to add the key (horizontal axis in the curve graph). - The value for the key (vertical axis in the curve graph). - - The index of the added key, or -1 if the key could not be added. - - - - - Add a new key to the curve. - - The key to add to the curve. - - The index of the added key, or -1 if the key could not be added. - - - - - Creates a constant "curve" starting at timeStart, ending at timeEnd and with the value value. - - The start time for the constant curve. - The start time for the constant curve. - The value for the constant curve. - - The constant curve created from the specified values. - - - - - Creates an animation curve from an arbitrary number of keyframes. - - An array of Keyframes used to define the curve. - - - - Creates an empty animation curve. - - - - - Creates an ease-in and out curve starting at timeStart, valueStart and ending at timeEnd, valueEnd. - - The start time for the ease curve. - The start value for the ease curve. - The end time for the ease curve. - The end value for the ease curve. - - The ease-in and out curve generated from the specified values. - - - - - Evaluate the curve at time. - - The time within the curve you want to evaluate (the horizontal axis in the curve graph). - - The value of the curve, at the point in time specified. - - - - - A straight Line starting at timeStart, valueStart and ending at timeEnd, valueEnd. - - The start time for the linear curve. - The start value for the linear curve. - The end time for the linear curve. - The end value for the linear curve. - - The linear curve created from the specified values. - - - - - Removes the keyframe at index and inserts key. - - The index of the key to move. - The key (with its new time) to insert. - - The index of the keyframe after moving it. - - - - - Removes a key. - - The index of the key to remove. - - - - Smooth the in and out tangents of the keyframe at index. - - The index of the keyframe to be smoothed. - The smoothing weight to apply to the keyframe's tangents. - - - - Retrieves the key at index. (Read Only) - - - - - AnimationEvent lets you call a script function similar to SendMessage as part of playing back an animation. - - - - - The animation state that fired this event (Read Only). - - - - - The animator clip info related to this event (Read Only). - - - - - The animator state info related to this event (Read Only). - - - - - Float parameter that is stored in the event and will be sent to the function. - - - - - The name of the function that will be called. - - - - - Int parameter that is stored in the event and will be sent to the function. - - - - - Returns true if this Animation event has been fired by an Animator component. - - - - - Returns true if this Animation event has been fired by an Animation component. - - - - - Function call options. - - - - - Object reference parameter that is stored in the event and will be sent to the function. - - - - - String parameter that is stored in the event and will be sent to the function. - - - - - The time at which the event will be fired off. - - - - - Creates a new animation event. - - - - - Information about what animation clips is played and its weight. - - - - - Animation clip that is played. - - - - - The weight of the animation clip. - - - - - Constrains the orientation of an object relative to the position of one or more source objects, such that the object is facing the average position of the sources. - - - - - The axis towards which the constrained object orients. - - - - - Activates or deactivates the constraint. - - - - - Locks the offset and rotation at rest. - - - - - The rotation used when the sources have a total weight of 0. - - - - - The axes affected by the AimConstraint. - - - - - Represents an offset from the constrained orientation. - - - - - The number of sources set on the component (read-only). - - - - - The up vector. - - - - - The weight of the constraint component. - - - - - The world up object, used to calculate the world up vector when the world up Type is AimConstraint.WorldUpType.ObjectUp or AimConstraint.WorldUpType.ObjectRotationUp. - - - - - The type of the world up vector. - - - - - The world up Vector used when the world up type is AimConstraint.WorldUpType.Vector or AimConstraint.WorldUpType.ObjectRotationUp. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - Specifies how the world up vector used by the aim constraint is defined. - - - - - Neither defines nor uses a world up vector. - - - - - Uses and defines the world up vector as relative to the local space of the object. - - - - - Uses and defines the world up vector as a vector from the constrained object, in the direction of the up object. - - - - - Uses and defines the world up vector as the Unity Scene up vector (the Y axis). - - - - - Uses and defines the world up vector as a vector specified by the user. - - - - - A Playable that controls an AnimationClip. - - - - - Creates an AnimationClipPlayable in the PlayableGraph. - - The PlayableGraph object that will own the AnimationClipPlayable. - The AnimationClip that will be added in the PlayableGraph. - - A AnimationClipPlayable linked to the PlayableGraph. - - - - - Returns the AnimationClip stored in the AnimationClipPlayable. - - - - - Returns the state of the ApplyFootIK flag. - - - - - Returns the state of the ApplyPlayableIK flag. - - - - - Sets the value of the ApplyFootIK flag. - - The new value of the ApplyFootIK flag. - - - - Requests OnAnimatorIK to be called on the animated GameObject. - - - - - - An implementation of IPlayable that controls an animation layer mixer. - - - - - Creates an AnimationLayerMixerPlayable in the PlayableGraph. - - The PlayableGraph that will contain the new AnimationLayerMixerPlayable. - The number of layers. - - A new AnimationLayerMixerPlayable linked to the PlayableGraph. - - - - - Returns true if the layer is additive, false otherwise. - - The layer index. - - True if the layer is additive, false otherwise. - - - - - Returns an invalid AnimationLayerMixerPlayable. - - - - - Specifies whether a layer is additive or not. Additive layers blend with previous layers. - - The layer index. - Whether the layer is additive or not. Set to true for an additive blend, or false for a regular blend. - - - - Sets the mask for the current layer. - - The layer index. - The AvatarMask used to create the new LayerMask. - - - - An implementation of IPlayable that controls an animation mixer. - - - - - Creates an AnimationMixerPlayable in the PlayableGraph. - - The PlayableGraph that will contain the new AnimationMixerPlayable. - The number of inputs that the mixer will update. - True to force a weight normalization of the inputs. - - A new AnimationMixerPlayable linked to the PlayableGraph. - - - - - Returns an invalid AnimationMixerPlayable. - - - - - A PlayableBinding that contains information representing an AnimationPlayableOutput. - - - - - Creates a PlayableBinding that contains information representing an AnimationPlayableOutput. - - The name of the AnimationPlayableOutput. - A reference to a UnityEngine.Object that acts as a key for this binding. - - Returns a PlayableBinding that contains information that is used to create an AnimationPlayableOutput. - - - - - A IPlayableOutput implementation that connects the PlayableGraph to an Animator in the Scene. - - - - - Creates an AnimationPlayableOutput in the PlayableGraph. - - The PlayableGraph that will contain the AnimationPlayableOutput. - The name of the output. - The Animator that will process the PlayableGraph. - - A new AnimationPlayableOutput attached to the PlayableGraph. - - - - - Returns the Animator that plays the animation graph. - - - The targeted Animator. - - - - - Sets the Animator that plays the animation graph. - - The targeted Animator. - - - - An implementation of IPlayable that controls an animation RuntimeAnimatorController. - - - - - Creates an AnimatorControllerPlayable in the PlayableGraph. - - The PlayableGraph object that will own the AnimatorControllerPlayable. - The RuntimeAnimatorController that will be added in the graph. - - A AnimatorControllerPlayable. - - - - - Returns an invalid AnimatorControllerPlayable. - - - - - Represents the axes used in 3D space. - - - - - Represents the case when no axis is specified. - - - - - Represents the X axis. - - - - - Represents the Y axis. - - - - - Represents the Z axis. - - - - - Represents a source for the constraint. - - - - - The transform component of the source object. - - - - - The weight of the source in the evaluation of the constraint. - - - - - The common interface for constraint components. - - - - - Activate or deactivate the constraint. - - - - - Lock or unlock the offset and position at rest. - - - - - Gets the number of sources currently set on the component. - - - - - The weight of the constraint component. - - - - - Add a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - - Constrains the orientation of an object relative to the position of one or more source objects, such that the object is facing the average position of the sources. - The LookAtConstraint is a simplified Animations.AimConstraint typically used with a Camera. - - - - - - Activates or deactivates the constraint. - - - - - Locks the offset and rotation at rest. - - - - - The rotation angle along the z axis of the object. The constraint uses this property to calculate the world up vector when Animations.LookAtConstraint.UseUpObject is false. - - - - - The rotation used when the sources have a total weight of 0. - - - - - Represents an offset from the constrained orientation. - - - - - The number of sources set on the component (Read Only). - - - - - Determines how the up vector is calculated. - - - - - The weight of the constraint component. - - - - - The world up object, used to calculate the world up vector when Animations.LookAtConstraint.UseUpObject is true. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - Returns the source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - Constrains the orientation and translation of an object to one or more source objects. The constrained object behaves as if it is in the hierarchy of the sources. - - - - - Activates or deactivates the constraint. - - - - - Locks the offsets and position (translation and rotation) at rest. - - - - - The rotation used when the sources have a total weight of 0. - - - - - The rotation axes affected by the ParentConstraint. - - - - - The rotation offsets from the constrained orientation. - - - - - The number of sources set on the component (read-only). - - - - - The position of the object in local space, used when the sources have a total weight of 0. - - - - - The translation axes affected by the ParentConstraint. - - - - - The translation offsets from the constrained orientation. - - - - - The weight of the constraint component. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets the rotation offset associated with a source by index. - - The index of the constraint source. - - The rotation offset, as Euler angles. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources filled by the component. - - - - Gets the rotation offset associated with a source by index. - - The index of the constraint source. - - The translation offset. - - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets the rotation offset associated with a source by index. - - The index of the constraint source. - The new rotation offset. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - Sets the translation offset associated with a source by index. - - The index of the constraint source. - The new translation offset. - - - - Constrains the position of an object relative to the position of one or more source objects. - - - - - Activates or deactivates the constraint. - - - - - Locks the offset and position at rest. - - - - - The number of sources set on the component (read-only). - - - - - The translation used when the sources have a total weight of 0. - - - - - The axes affected by the PositionConstraint. - - - - - The offset from the constrained position. - - - - - The weight of the constraint component. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - Constrains the rotation of an object relative to the rotation of one or more source objects. - - - - - Activates or deactivates the constraint. - - - - - Locks the offset and rotation at rest. - - - - - The rotation used when the sources have a total weight of 0. - - - - - The axes affected by the RotationConstraint. - - - - - The offset from the constrained rotation. - - - - - The number of sources set on the component (read-only). - - - - - The weight of the constraint component. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - Constrains the scale of an object relative to the scale of one or more source objects. - - - - - Activates or deactivates the constraint. - - - - - Locks the offset and scale at rest. - - - - - The scale used when the sources have a total weight of 0. - - - - - The offset from the constrained scale. - - - - - The axes affected by the ScaleConstraint. - - - - - The number of sources set on the component (read-only). - - - - - The weight of the constraint component. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - The AnimationState gives full control over animation blending. - - - - - Which blend mode should be used? - - - - - The clip that is being played by this animation state. - - - - - Enables / disables the animation. - - - - - The length of the animation clip in seconds. - - - - - The name of the animation. - - - - - The normalized playback speed. - - - - - The normalized time of the animation. - - - - - The playback speed of the animation. 1 is normal playback speed. - - - - - The current time of the animation. - - - - - The weight of animation. - - - - - Wrapping mode of the animation. - - - - - Adds a transform which should be animated. This allows you to reduce the number of animations you have to create. - - The transform to animate. - Whether to also animate all children of the specified transform. - - - - Adds a transform which should be animated. This allows you to reduce the number of animations you have to create. - - The transform to animate. - Whether to also animate all children of the specified transform. - - - - Removes a transform which should be animated. - - - - - - Interface to control the Mecanim animation system. - - - - - Gets the avatar angular velocity for the last evaluated frame. - - - - - When turned on, animations will be executed in the physics loop. This is only useful in conjunction with kinematic rigidbodies. - - - - - Should root motion be applied? - - - - - Gets/Sets the current Avatar. - - - - - The position of the body center of mass. - - - - - The rotation of the body center of mass. - - - - - Controls culling of this Animator component. - - - - - Gets the avatar delta position for the last evaluated frame. - - - - - Gets the avatar delta rotation for the last evaluated frame. - - - - - Blends pivot point between body center of mass and feet pivot. - - - - - Sets whether the Animator sends events of type AnimationEvent. - - - - - The current gravity weight based on current animations that are played. - - - - - Returns true if Animator has any playables assigned to it. - - - - - Returns true if the current rig has root motion. - - - - - Returns true if the object has a transform hierarchy. - - - - - Returns the scale of the current Avatar for a humanoid rig, (1 by default if the rig is generic). - - - - - Returns true if the current rig is humanoid, false if it is generic. - - - - - Returns whether the animator is initialized successfully. - - - - - If automatic matching is active. - - - - - Returns true if the current rig is optimizable with AnimatorUtility.OptimizeTransformHierarchy. - - - - - Controls the behaviour of the Animator component when a GameObject is disabled. - - - - - Returns the number of layers in the controller. - - - - - Additional layers affects the center of mass. - - - - - Get left foot bottom height. - - - - - When linearVelocityBlending is set to true, the root motion velocity and angular velocity will be blended linearly. - - - - - Returns the number of parameters in the controller. - - - - - The AnimatorControllerParameter list used by the animator. (Read Only) - - - - - Get the current position of the pivot. - - - - - Gets the pivot weight. - - - - - The PlayableGraph created by the Animator. - - - - - Sets the playback position in the recording buffer. - - - - - Gets the mode of the Animator recorder. - - - - - Start time of the first frame of the buffer relative to the frame at which StartRecording was called. - - - - - End time of the recorded clip relative to when StartRecording was called. - - - - - Get right foot bottom height. - - - - - The root position, the position of the game object. - - - - - The root rotation, the rotation of the game object. - - - - - The runtime representation of AnimatorController that controls the Animator. - - - - - The playback speed of the Animator. 1 is normal playback speed. - - - - - Automatic stabilization of feet during transition and blending. - - - - - Returns the position of the target specified by SetTarget. - - - - - Returns the rotation of the target specified by SetTarget. - - - - - Specifies the update mode of the Animator. - - - - - Gets the avatar velocity for the last evaluated frame. - - - - - Apply the default Root Motion. - - - - - Creates a crossfade from the current state to any other state using normalized times. - - The name of the state. - The hash name of the state. - The duration of the transition (normalized). - The layer where the crossfade occurs. - The time of the state (normalized). - The time of the transition (normalized). - - - - Creates a crossfade from the current state to any other state using normalized times. - - The name of the state. - The hash name of the state. - The duration of the transition (normalized). - The layer where the crossfade occurs. - The time of the state (normalized). - The time of the transition (normalized). - - - - Creates a crossfade from the current state to any other state using times in seconds. - - The name of the state. - The hash name of the state. - The duration of the transition (in seconds). - The layer where the crossfade occurs. - The time of the state (in seconds). - The time of the transition (normalized). - - - - Creates a crossfade from the current state to any other state using times in seconds. - - The name of the state. - The hash name of the state. - The duration of the transition (in seconds). - The layer where the crossfade occurs. - The time of the state (in seconds). - The time of the transition (normalized). - - - - Returns an AnimatorTransitionInfo with the informations on the current transition. - - The layer's index. - - An AnimatorTransitionInfo with the informations on the current transition. - - - - - Returns the first StateMachineBehaviour that matches type T or is derived from T. Returns null if none are found. - - - - - Returns all StateMachineBehaviour that match type T or are derived from T. Returns null if none are found. - - - - - Returns Transform mapped to this human bone id. - - The human bone that is queried, see enum HumanBodyBones for a list of possible values. - - - - Returns the value of the given boolean parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Returns the value of the given boolean parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Gets the list of AnimatorClipInfo currently played by the current state. - - The layer's index. - - - - Returns an array of all the AnimatorClipInfo in the current state of the given layer. - - The layer index. - - An array of all the AnimatorClipInfo in the current state. - - - - - Fills clips with the list of all the AnimatorClipInfo in the current state of the given layer. - - The layer index. - The list of AnimatorClipInfo to fill. - - - - Returns the number of AnimatorClipInfo in the current state. - - The layer index. - - The number of AnimatorClipInfo in the current state. - - - - - Returns an AnimatorStateInfo with the information on the current state. - - The layer index. - - An AnimatorStateInfo with the information on the current state. - - - - - Returns the value of the given float parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Returns the value of the given float parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Gets the position of an IK hint. - - The AvatarIKHint that is queried. - - Return the current position of this IK hint in world space. - - - - - Gets the translative weight of an IK Hint (0 = at the original animation before IK, 1 = at the hint). - - The AvatarIKHint that is queried. - - Return translative weight. - - - - - Gets the position of an IK goal. - - The AvatarIKGoal that is queried. - - Return the current position of this IK goal in world space. - - - - - Gets the translative weight of an IK goal (0 = at the original animation before IK, 1 = at the goal). - - The AvatarIKGoal that is queried. - - - - Gets the rotation of an IK goal. - - The AvatarIKGoal that is is queried. - - - - Gets the rotational weight of an IK goal (0 = rotation before IK, 1 = rotation at the IK goal). - - The AvatarIKGoal that is queried. - - - - Returns the value of the given integer parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Returns the value of the given integer parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Returns the index of the layer with the given name. - - The layer name. - - The layer index. - - - - - Returns the layer name. - - The layer index. - - The layer name. - - - - - Returns the weight of the layer at the specified index. - - The layer index. - - The layer weight. - - - - - Gets the list of AnimatorClipInfo currently played by the next state. - - The layer's index. - - - - Returns an array of all the AnimatorClipInfo in the next state of the given layer. - - The layer index. - - An array of all the AnimatorClipInfo in the next state. - - - - - Fills clips with the list of all the AnimatorClipInfo in the next state of the given layer. - - The layer index. - The list of AnimatorClipInfo to fill. - - - - Returns the number of AnimatorClipInfo in the next state. - - The layer index. - - The number of AnimatorClipInfo in the next state. - - - - - Returns an AnimatorStateInfo with the information on the next state. - - The layer index. - - An AnimatorStateInfo with the information on the next state. - - - - - See AnimatorController.parameters. - - - - - - Gets the value of a quaternion parameter. - - The name of the parameter. - - - - Gets the value of a quaternion parameter. - - The id of the parameter. The id is generated using Animator::StringToHash. - - - - Gets the value of a vector parameter. - - The name of the parameter. - - - - Gets the value of a vector parameter. - - The id of the parameter. The id is generated using Animator::StringToHash. - - - - Returns true if the state exists in this layer, false otherwise. - - The layer index. - The state ID. - - True if the state exists in this layer, false otherwise. - - - - - Interrupts the automatic target matching. - - - - - - Interrupts the automatic target matching. - - - - - - Returns true if the transform is controlled by the Animator\. - - The transform that is queried. - - - - Returns true if there is a transition on the given layer, false otherwise. - - The layer index. - - True if there is a transition on the given layer, false otherwise. - - - - - Returns true if the parameter is controlled by a curve, false otherwise. - - The parameter name. - The parameter ID. - - True if the parameter is controlled by a curve, false otherwise. - - - - - Returns true if the parameter is controlled by a curve, false otherwise. - - The parameter name. - The parameter ID. - - True if the parameter is controlled by a curve, false otherwise. - - - - - Automatically adjust the GameObject position and rotation. - - The position we want the body part to reach. - The rotation in which we want the body part to be. - The body part that is involved in the match. - Structure that contains weights for matching position and rotation. - Start time within the animation clip (0 - beginning of clip, 1 - end of clip). - End time within the animation clip (0 - beginning of clip, 1 - end of clip), values greater than 1 can be set to trigger a match after a certain number of loops. Ex: 2.3 means at 30% of 2nd loop. - - - - Plays a state. - - The state name. - The state hash name. If stateNameHash is 0, it changes the current state time. - The layer index. If layer is -1, it plays the first state with the given state name or hash. - The time offset between zero and one. - - - - Plays a state. - - The state name. - The state hash name. If stateNameHash is 0, it changes the current state time. - The layer index. If layer is -1, it plays the first state with the given state name or hash. - The time offset between zero and one. - - - - Plays a state. - - The state name. - The state hash name. If stateNameHash is 0, it changes the current state time. - The layer index. If layer is -1, it plays the first state with the given state name or hash. - The time offset (in seconds). - - - - Plays a state. - - The state name. - The state hash name. If stateNameHash is 0, it changes the current state time. - The layer index. If layer is -1, it plays the first state with the given state name or hash. - The time offset (in seconds). - - - - Rebind all the animated properties and mesh data with the Animator. - - - - - Resets the value of the given trigger parameter. - - The parameter name. - The parameter ID. - - - - Resets the value of the given trigger parameter. - - The parameter name. - The parameter ID. - - - - Sets local rotation of a human bone during a IK pass. - - The human bone Id. - The local rotation. - - - - Sets the value of the given boolean parameter. - - The parameter name. - The parameter ID. - The new parameter value. - - - - Sets the value of the given boolean parameter. - - The parameter name. - The parameter ID. - The new parameter value. - - - - Send float values to the Animator to affect transitions. - - The parameter name. - The parameter ID. - The new parameter value. - The damper total time. - The delta time to give to the damper. - - - - Send float values to the Animator to affect transitions. - - The parameter name. - The parameter ID. - The new parameter value. - The damper total time. - The delta time to give to the damper. - - - - Send float values to the Animator to affect transitions. - - The parameter name. - The parameter ID. - The new parameter value. - The damper total time. - The delta time to give to the damper. - - - - Send float values to the Animator to affect transitions. - - The parameter name. - The parameter ID. - The new parameter value. - The damper total time. - The delta time to give to the damper. - - - - Sets the position of an IK hint. - - The AvatarIKHint that is set. - The position in world space. - - - - Sets the translative weight of an IK hint (0 = at the original animation before IK, 1 = at the hint). - - The AvatarIKHint that is set. - The translative weight. - - - - Sets the position of an IK goal. - - The AvatarIKGoal that is set. - The position in world space. - - - - Sets the translative weight of an IK goal (0 = at the original animation before IK, 1 = at the goal). - - The AvatarIKGoal that is set. - The translative weight. - - - - Sets the rotation of an IK goal. - - The AvatarIKGoal that is set. - The rotation in world space. - - - - Sets the rotational weight of an IK goal (0 = rotation before IK, 1 = rotation at the IK goal). - - The AvatarIKGoal that is set. - The rotational weight. - - - - Sets the value of the given integer parameter. - - The parameter name. - The parameter ID. - The new parameter value. - - - - Sets the value of the given integer parameter. - - The parameter name. - The parameter ID. - The new parameter value. - - - - Sets the weight of the layer at the given index. - - The layer index. - The new layer weight. - - - - Sets the look at position. - - The position to lookAt. - - - - Set look at weights. - - (0-1) the global weight of the LookAt, multiplier for other parameters. - (0-1) determines how much the body is involved in the LookAt. - (0-1) determines how much the head is involved in the LookAt. - (0-1) determines how much the eyes are involved in the LookAt. - (0-1) 0.0 means the character is completely unrestrained in motion, 1.0 means he's completely clamped (look at becomes impossible), and 0.5 means he'll be able to move on half of the possible range (180 degrees). - - - - Set look at weights. - - (0-1) the global weight of the LookAt, multiplier for other parameters. - (0-1) determines how much the body is involved in the LookAt. - (0-1) determines how much the head is involved in the LookAt. - (0-1) determines how much the eyes are involved in the LookAt. - (0-1) 0.0 means the character is completely unrestrained in motion, 1.0 means he's completely clamped (look at becomes impossible), and 0.5 means he'll be able to move on half of the possible range (180 degrees). - - - - Set look at weights. - - (0-1) the global weight of the LookAt, multiplier for other parameters. - (0-1) determines how much the body is involved in the LookAt. - (0-1) determines how much the head is involved in the LookAt. - (0-1) determines how much the eyes are involved in the LookAt. - (0-1) 0.0 means the character is completely unrestrained in motion, 1.0 means he's completely clamped (look at becomes impossible), and 0.5 means he'll be able to move on half of the possible range (180 degrees). - - - - Set look at weights. - - (0-1) the global weight of the LookAt, multiplier for other parameters. - (0-1) determines how much the body is involved in the LookAt. - (0-1) determines how much the head is involved in the LookAt. - (0-1) determines how much the eyes are involved in the LookAt. - (0-1) 0.0 means the character is completely unrestrained in motion, 1.0 means he's completely clamped (look at becomes impossible), and 0.5 means he'll be able to move on half of the possible range (180 degrees). - - - - Set look at weights. - - (0-1) the global weight of the LookAt, multiplier for other parameters. - (0-1) determines how much the body is involved in the LookAt. - (0-1) determines how much the head is involved in the LookAt. - (0-1) determines how much the eyes are involved in the LookAt. - (0-1) 0.0 means the character is completely unrestrained in motion, 1.0 means he's completely clamped (look at becomes impossible), and 0.5 means he'll be able to move on half of the possible range (180 degrees). - - - - Sets the value of a quaternion parameter. - - The name of the parameter. - The new value for the parameter. - - - - Sets the value of a quaternion parameter. - - Of the parameter. The id is generated using Animator::StringToHash. - The new value for the parameter. - - - - Sets an AvatarTarget and a targetNormalizedTime for the current state. - - The avatar body part that is queried. - The current state Time that is queried. - - - - Sets the value of the given trigger parameter. - - The parameter name. - The parameter ID. - - - - Sets the value of the given trigger parameter. - - The parameter name. - The parameter ID. - - - - Sets the value of a vector parameter. - - The name of the parameter. - The new value for the parameter. - - - - Sets the value of a vector parameter. - - The id of the parameter. The id is generated using Animator::StringToHash. - The new value for the parameter. - - - - Sets the animator in playback mode. - - - - - Sets the animator in recording mode, and allocates a circular buffer of size frameCount. - - The number of frames (updates) that will be recorded. If frameCount is 0, the recording will continue until the user calls StopRecording. The maximum value for frameCount is 10000. - - - - Stops the animator playback mode. When playback stops, the avatar resumes getting control from game logic. - - - - - Stops animator record mode. - - - - - Generates an parameter id from a string. - - The string to convert to Id. - - - - Evaluates the animator based on deltaTime. - - The time delta. - - - - Forces a write of the default values stored in the animator. - - - - - Information about clip being played and blended by the Animator. - - - - - Returns the animation clip played by the Animator. - - - - - Returns the blending weight used by the Animator to blend this clip. - - - - - Used to communicate between scripting and the controller. Some parameters can be set in scripting and used by the controller, while other parameters are based on Custom Curves in Animation Clips and can be sampled using the scripting API. - - - - - The default bool value for the parameter. - - - - - The default float value for the parameter. - - - - - The default int value for the parameter. - - - - - The name of the parameter. - - - - - Returns the hash of the parameter based on its name. - - - - - The type of the parameter. - - - - - The type of the parameter. - - - - - Boolean type parameter. - - - - - Float type parameter. - - - - - Int type parameter. - - - - - Trigger type parameter. - - - - - Culling mode for the Animator. - - - - - Always animate the entire character. Object is animated even when offscreen. - - - - - Animation is completely disabled when renderers are not visible. - - - - - Retarget, IK and write of Transforms are disabled when renderers are not visible. - - - - - Interface to control Animator Override Controller. - - - - - Returns the list of orignal Animation Clip from the controller and their override Animation Clip. - - - - - Returns the count of overrides. - - - - - The Runtime Animator Controller that the Animator Override Controller overrides. - - - - - Applies the list of overrides on this Animator Override Controller. - - Overrides list to apply. - - - - Creates an empty Animator Override Controller. - - - - - Creates an Animator Override Controller that overrides controller. - - Runtime Animator Controller to override. - - - - Gets the list of Animation Clip overrides currently defined in this Animator Override Controller. - - Array to receive results. - - - - Returns either the overriding Animation Clip if set or the original Animation Clip named name. - - - - - Returns either the overriding Animation Clip if set or the original Animation Clip named name. - - - - - The mode of the Animator's recorder. - - - - - The Animator recorder is offline. - - - - - The Animator recorder is in Playback. - - - - - The Animator recorder is in Record. - - - - - Information about the current or next state. - - - - - The full path hash for this state. - - - - - Current duration of the state. - - - - - Is the state looping. - - - - - The hashed name of the State. - - - - - Normalized time of the State. - - - - - The hash is generated using Animator.StringToHash. The hash does not include the name of the parent layer. - - - - - The playback speed of the animation. 1 is the normal playback speed. - - - - - The speed multiplier for this state. - - - - - The Tag of the State. - - - - - Does name match the name of the active state in the statemachine? - - - - - - Does tag match the tag of the active state in the statemachine. - - - - - - Information about the current transition. - - - - - Returns true if the transition is from an AnyState node, or from Animator.CrossFade. - - - - - Duration of the transition. - - - - - The unit of the transition duration. - - - - - The hash name of the Transition. - - - - - The simplified name of the Transition. - - - - - Normalized time of the Transition. - - - - - The user-specified name of the Transition. - - - - - Does name match the name of the active Transition. - - - - - - Does userName match the name of the active Transition. - - - - - - The update mode of the Animator. - - - - - Updates the animator during the physic loop in order to have the animation system synchronized with the physics engine. - - - - - Normal update of the animator. - - - - - Animator updates independently of Time.timeScale. - - - - - Various utilities for animator manipulation. - - - - - This function will recreate all transform hierarchy under GameObject. - - GameObject to Deoptimize. - - - - This function will remove all transform hierarchy under GameObject, the animator will write directly transform matrices into the skin mesh matrices saving alot of CPU cycles. - - GameObject to Optimize. - List of transform name to expose. - - - - Anisotropic filtering mode. - - - - - Disable anisotropic filtering for all textures. - - - - - Enable anisotropic filtering, as set for each texture. - - - - - Enable anisotropic filtering for all textures. - - - - - ReplayKit is only available on certain iPhone, iPad and iPod Touch devices running iOS 9.0 or later. - - - - - A Boolean that indicates whether ReplayKit broadcasting API is available (true means available) (Read Only). -Check the value of this property before making ReplayKit broadcasting API calls. On iOS versions prior to iOS 10, this property will have a value of false. - - - - - A string property that contains an URL used to redirect the user to an on-going or completed broadcast (Read Only). - - - - - Camera enabled status, true, if camera enabled, false otherwise. - - - - - Boolean property that indicates whether a broadcast is currently in progress (Read Only). - - - - - A boolean that indicates whether ReplayKit is making a recording (where True means a recording is in progress). (Read Only) - - - - - A string value of the last error incurred by the ReplayKit: Either 'Failed to get Screen Recorder' or 'No recording available'. (Read Only) - - - - - Microphone enabled status, true, if microhone enabled, false otherwise. - - - - - A boolean value that indicates that a new recording is available for preview (where True means available). (Read Only) - - - - - A boolean that indicates whether the ReplayKit API is available (where True means available). (Read Only) - - - - - Function called at the completion of broadcast startup. - - This parameter will be true if the broadcast started successfully and false in the event of an error. - In the event of failure to start a broadcast, this parameter contains the associated error message. - - - - Discard the current recording. - - - A boolean value of True if the recording was discarded successfully or False if an error occurred. - - - - - Hide the camera preview view. - - - - - Preview the current recording - - - A boolean value of True if the video preview window opened successfully or False if an error occurred. - - - - - Shows camera preview at coordinates posX and posY. - - - - - - - Initiates and starts a new broadcast -When StartBroadcast is called, user is presented with a broadcast provider selection screen, and then a broadcast setup screen. Once it is finished, a broadcast will be started, and the callback will be invoked. -It will also be invoked in case of any error. - - - A callback for getting the status of broadcast initiation. - Enable or disable the microphone while broadcasting. Enabling the microphone allows you to include user commentary while broadcasting. The default value is false. - Enable or disable the camera while broadcasting. Enabling camera allows you to include user camera footage while broadcasting. The default value is false. To actually include camera footage in your broadcast, you also have to call ShowCameraPreviewAt as well to position the preview view. - - - - Start a new recording. - - Enable or disable the microphone while making a recording. Enabling the microphone allows you to include user commentary while recording. The default value is false. - Enable or disable the camera while making a recording. Enabling camera allows you to include user camera footage while recording. The default value is false. To actually include camera footage in your recording, you also have to call ShowCameraPreviewAt as well to position the preview view. - - A boolean value of True if recording started successfully or False if an error occurred. - - - - - Stops current broadcast. -Will terminate currently on-going broadcast. If no broadcast is in progress, does nothing. - - - - - Stop the current recording. - - - A boolean value of True if recording stopped successfully or False if an error occurred. - - - - - Access to application run-time data. - - - - - The URL of the document (what is shown in a browser's address bar) for WebGL (Read Only). - - - - - Priority of background loading thread. - - - - - Returns a GUID for this build (Read Only). - - - - - A unique cloud project identifier. It is unique for every project (Read Only). - - - - - Return application company name (Read Only). - - - - - Returns the path to the console log file, or an empty string if the current platform does not support log files. - - - - - Contains the path to the game data folder (Read Only). - - - - - Delegate method used to register for when focus is either gained or lost. - -The passed in value is the new focus state of the application. In the editor, this corresponds to whether the game view has focus (regardless of whether the editor is in play mode or not). -This is called at the same time as MonoBehaviour.OnApplicationFocus. - - - - - - Returns false if application is altered in any way after it was built. - - - - - Returns true if application integrity can be confirmed. - - - - - Returns application identifier at runtime. On Apple platforms this is the 'bundleIdentifier' saved in the info.plist file, on Android it's the 'package' from the AndroidManifest.xml. - - - - - Returns the name of the store or package that installed the application (Read Only). - - - - - Returns application install mode (Read Only). - - - - - Returns the type of Internet reachability currently possible on the device. - - - - - Returns true when Unity is launched with the -batchmode flag from the command line (Read Only). - - - - - Is the current Runtime platform a known console platform. - - - - - Are we running inside the Unity editor? (Read Only) - - - - - Whether the player currently has focus. Read-only. - - - - - Is some level being loaded? (Read Only) (Obsolete). - - - - - Is the current Runtime platform a known mobile platform. - - - - - Returns true when called in any kind of built Player, or when called in the Editor in Play Mode (Read Only). - - - - - Checks whether splash screen is being shown. - - - - - The total number of levels available (Read Only). - - - - - Note: This is now obsolete. Use SceneManager.GetActiveScene instead. (Read Only). - - - - - The name of the level that was last loaded (Read Only). - - - - - Event that is fired if a log message is received. - - - - - - Event that is fired if a log message is received. - - - - - - This event occurs when an iOS or Android device notifies of low memory while the app is running in the foreground. You can release non-critical assets from memory (such as, textures or audio clips) in response to this in order to avoid the app being terminated. You can also load smaller versions of such assets. Furthermore, you should serialize any transient data to permanent storage to avoid data loss if the app is terminated. - -This event corresponds to the following callbacks on the different platforms: - -- iOS: [UIApplicationDelegate applicationDidReceiveMemoryWarning] - -- Android: onLowMemory() and onTrimMemory(level == TRIM_MEMORY_RUNNING_CRITICAL) - -Here is an example of handling the callback: - - - - - - Delegate method used to register for "Just Before Render" input updates for VR devices. - - - - - - Contains the path to a persistent data directory (Read Only). - - - - - Returns the platform the game is running on (Read Only). - - - - - Returns application product name (Read Only). - - - - - Unity raises this event when the player application is qutting. - - - - - - Should the player be running when the application is in the background? - - - - - Returns application running in sandbox (Read Only). - - - - - Obsolete. Use Application.SetStackTraceLogType. - - - - - How many bytes have we downloaded from the main unity web stream (Read Only). - - - - - The path to the StreamingAssets folder (Read Only). - - - - - The language the user's operating system is running in. - - - - - Instructs game to try to render at a specified frame rate. - - - - - Contains the path to a temporary data / cache directory (Read Only). - - - - - The version of the Unity runtime used to play the content. - - - - - Returns application version number (Read Only). - - - - - Unity raises this event when the player application wants to quit. - - - - - - Indicates whether Unity's webplayer security model is enabled. - - - - - Delegate method for fetching advertising ID. - - Advertising ID. - Indicates whether user has chosen to limit ad tracking. - Error message. - - - - Cancels quitting the application. This is useful for showing a splash screen at the end of a game. - - - - - Can the streamed level be loaded? - - - - - - Can the streamed level be loaded? - - - - - - Captures a screenshot at path filename as a PNG file. - - Pathname to save the screenshot file to. - Factor by which to increase resolution. - - - - Captures a screenshot at path filename as a PNG file. - - Pathname to save the screenshot file to. - Factor by which to increase resolution. - - - - Calls a function in the web page that contains the WebGL Player. - - Name of the function to call. - Array of arguments passed in the call. - - - - Execution of a script function in the contained web page. - - The Javascript function to call. - - - - Returns an array of feature tags in use for this build. - - - - - Get stack trace logging options. The default value is StackTraceLogType.ScriptOnly. - - - - - - How far has the download progressed? [0...1]. - - - - - - How far has the download progressed? [0...1]. - - - - - - Is Unity activated with the Pro license? - - - - - Check if the user has authorized use of the webcam or microphone in the Web Player. - - - - - - Returns true if the given object is part of the playing world either in any kind of built Player or in Play Mode. - - The object to test. - - True if the object is part of the playing world. - - - - - Note: This is now obsolete. Use SceneManager.LoadScene instead. - - The level to load. - The name of the level to load. - - - - Note: This is now obsolete. Use SceneManager.LoadScene instead. - - The level to load. - The name of the level to load. - - - - Loads a level additively. - - - - - - - Loads a level additively. - - - - - - - Loads the level additively and asynchronously in the background. - - - - - - - Loads the level additively and asynchronously in the background. - - - - - - - Loads the level asynchronously in the background. - - - - - - - Loads the level asynchronously in the background. - - - - - - - Use this delegate type with Application.logMessageReceived or Application.logMessageReceivedThreaded to monitor what gets logged. - - - - - - - - This is the delegate function when a mobile device notifies of low memory. - - - - - Opens the url in a browser. - - - - - - Quits the player application. - - An optional exit code to return when the player application terminates on Windows, Mac and Linux. Defaults to 0. - - - - Request advertising ID for iOS, Android and Windows Store. - - Delegate method. - - Returns true if successful, or false for platforms which do not support Advertising Identifiers. In this case, the delegate method is not invoked. - - - - - Request authorization to use the webcam or microphone on iOS. - - - - - - Set an array of feature tags for this build. - - - - - - Set stack trace logging options. The default value is StackTraceLogType.ScriptOnly. - - - - - - - Unloads the Unity runtime. - - - - - Unloads all GameObject associated with the given Scene. Note that assets are currently not unloaded, in order to free up asset memory call Resources.UnloadAllUnusedAssets. - - Index of the Scene in the PlayerSettings to unload. - Name of the Scene to Unload. - - Return true if the Scene is unloaded. - - - - - Unloads all GameObject associated with the given Scene. Note that assets are currently not unloaded, in order to free up asset memory call Resources.UnloadAllUnusedAssets. - - Index of the Scene in the PlayerSettings to unload. - Name of the Scene to Unload. - - Return true if the Scene is unloaded. - - - - - Application installation mode (Read Only). - - - - - Application installed via ad hoc distribution. - - - - - Application installed via developer build. - - - - - Application running in editor. - - - - - Application installed via enterprise distribution. - - - - - Application installed via online store. - - - - - Application install mode unknown. - - - - - Application sandbox type. - - - - - Application not running in a sandbox. - - - - - Application is running in broken sandbox. - - - - - Application is running in a sandbox. - - - - - Application sandbox type is unknown. - - - - - Applies forces within an area. - - - - - The angular drag to apply to rigid-bodies. - - - - - The linear drag to apply to rigid-bodies. - - - - - The angle of the force to be applied. - - - - - The magnitude of the force to be applied. - - - - - The target for where the effector applies any force. - - - - - The variation of the magnitude of the force to be applied. - - - - - Should the forceAngle use global space? - - - - - Enumeration of all the muscles in an arm. - - - - - The arm down-up muscle. - - - - - The arm front-back muscle. - - - - - The arm roll in-out muscle. - - - - - The forearm close-open muscle. - - - - - The forearm roll in-out muscle. - - - - - The hand down-up muscle. - - - - - The hand in-out muscle. - - - - - The last value of the ArmDof enum. - - - - - The shoulder down-up muscle. - - - - - The shoulder front-back muscle. - - - - - Assembly level attribute. Any classes in an assembly with this attribute will be considered to be Editor Classes. - - - - - Constructor. - - - - - The Assert class contains assertion methods for setting invariants in the code. - - - - - Whether Unity should throw an exception on a failure. - - - - - Assert the values are approximately equal. - - Tolerance of approximation. - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - - - - Assert the values are approximately equal. - - Tolerance of approximation. - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - - - - Assert the values are approximately equal. - - Tolerance of approximation. - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - - - - Assert the values are approximately equal. - - Tolerance of approximation. - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Asserts that the values are approximately not equal. - - Tolerance of approximation. - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - - - - Asserts that the values are approximately not equal. - - Tolerance of approximation. - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - - - - Asserts that the values are approximately not equal. - - Tolerance of approximation. - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - - - - Asserts that the values are approximately not equal. - - Tolerance of approximation. - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Assert that the values are not equal. - - The assumed Assert value. - The exact Assert value. - The string used to describe the Assert. - Method to compare expected and actual arguments have the same value. - - - - Return true when the condition is false. Otherwise return false. - - true or false. - The string used to describe the result of the Assert. - - - - Return true when the condition is false. Otherwise return false. - - true or false. - The string used to describe the result of the Assert. - - - - Assert that the value is not null. - - The Object or type being checked for. - The string used to describe the Assert. - - - - Assert that the value is not null. - - The Object or type being checked for. - The string used to describe the Assert. - - - - Assert that the value is not null. - - The Object or type being checked for. - The string used to describe the Assert. - - - - Assert the value is null. - - The Object or type being checked for. - The string used to describe the Assert. - - - - Assert the value is null. - - The Object or type being checked for. - The string used to describe the Assert. - - - - Assert the value is null. - - The Object or type being checked for. - The string used to describe the Assert. - - - - Asserts that the condition is true. - - The string used to describe the Assert. - true or false. - - - - Asserts that the condition is true. - - The string used to describe the Assert. - true or false. - - - - An exception that is thrown on a failure. Assertions.Assert._raiseExceptions needs to be set to true. - - - - - A float comparer used by Assertions.Assert performing approximate comparison. - - - - - Default epsilon used by the comparer. - - - - - Default instance of a comparer class with deafult error epsilon and absolute error check. - - - - - Performs equality check with absolute error check. - - Expected value. - Actual value. - Comparison error. - - Result of the comparison. - - - - - Performs equality check with relative error check. - - Expected value. - Actual value. - Comparison error. - - Result of the comparison. - - - - - Creates an instance of the comparer. - - Should a relative check be used when comparing values? By default, an absolute check will be used. - Allowed comparison error. By default, the FloatComparer.kEpsilon is used. - - - - Creates an instance of the comparer. - - Should a relative check be used when comparing values? By default, an absolute check will be used. - Allowed comparison error. By default, the FloatComparer.kEpsilon is used. - - - - Creates an instance of the comparer. - - Should a relative check be used when comparing values? By default, an absolute check will be used. - Allowed comparison error. By default, the FloatComparer.kEpsilon is used. - - - - Creates an instance of the comparer. - - Should a relative check be used when comparing values? By default, an absolute check will be used. - Allowed comparison error. By default, the FloatComparer.kEpsilon is used. - - - - An extension class that serves as a wrapper for the Assert class. - - - - - An extension method for Assertions.Assert.AreApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreEqual. - - - - - - - - An extension method for Assertions.Assert.AreEqual. - - - - - - - - An extension method for Assertions.Assert.IsFalse. - - - - - - - An extension method for Assertions.Assert.IsFalse. - - - - - - - An extension method for Assertions.Assert.IsNull. - - - - - - - An extension method for Assertions.Assert.IsNull. - - - - - - - An extension method for Assertions.Assert.IsTrue. - - - - - - - An extension method for Assertions.Assert.IsTrue. - - - - - - - An extension method for Assertions.Assert.AreNotApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreNotApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreNotApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreNotApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreNotEqual. - - - - - - - - An extension method for Assertions.Assert.AreNotEqual. - - - - - - - - An extension method for Assertions.Assert.AreNotNull. - - - - - - - An extension method for Assertions.Assert.AreNotNull. - - - - - - - AssetBundles let you stream additional assets via the UnityWebRequest class and instantiate them at runtime. AssetBundles are created via BuildPipeline.BuildAssetBundle. - - - - - Return true if the AssetBundle is a streamed Scene AssetBundle. - - - - - Check if an AssetBundle contains a specific object. - - - - - - Loads an asset bundle from a disk. - - Path of the file on disk - -See Also: UnityWebRequestAssetBundle.GetAssetBundle, DownloadHandlerAssetBundle. - - - - Asynchronously create an AssetBundle from a memory region. - - - - - - Synchronously create an AssetBundle from a memory region. - - Array of bytes with the AssetBundle data. - - - - Return all asset names in the AssetBundle. - - - - - To use when you need to get a list of all the currently loaded Asset Bundles. - - - Returns IEnumerable<AssetBundle> of all currently loaded Asset Bundles. - - - - - Return all the Scene asset paths (paths to *.unity assets) in the AssetBundle. - - - - - Loads all assets contained in the asset bundle that inherit from type. - - - - - - Loads all assets contained in the asset bundle. - - - - - Loads all assets contained in the asset bundle that inherit from type T. - - - - - Loads all assets contained in the asset bundle asynchronously. - - - - - Loads all assets contained in the asset bundle that inherit from T asynchronously. - - - - - Loads all assets contained in the asset bundle that inherit from type asynchronously. - - - - - - Loads asset with name from the bundle. - - - - - - Loads asset with name of a given type from the bundle. - - - - - - - Loads asset with name of type T from the bundle. - - - - - - Asynchronously loads asset with name from the bundle. - - - - - - Asynchronously loads asset with name of a given T from the bundle. - - - - - - Asynchronously loads asset with name of a given type from the bundle. - - - - - - - Loads asset and sub assets with name from the bundle. - - - - - - Loads asset and sub assets with name of a given type from the bundle. - - - - - - - Loads asset and sub assets with name of type T from the bundle. - - - - - - Loads asset with sub assets with name from the bundle asynchronously. - - - - - - Loads asset with sub assets with name of type T from the bundle asynchronously. - - - - - - Loads asset with sub assets with name of a given type from the bundle asynchronously. - - - - - - - Synchronously loads an AssetBundle from a file on disk. - - Path of the file on disk. - An optional CRC-32 checksum of the uncompressed content. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. - An optional byte offset. This value specifies where to start reading the AssetBundle from. - - Loaded AssetBundle object or null if failed. - - - - - Synchronously loads an AssetBundle from a file on disk. - - Path of the file on disk. - An optional CRC-32 checksum of the uncompressed content. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. - An optional byte offset. This value specifies where to start reading the AssetBundle from. - - Loaded AssetBundle object or null if failed. - - - - - Asynchronously loads an AssetBundle from a file on disk. - - Path of the file on disk. - An optional CRC-32 checksum of the uncompressed content. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. - An optional byte offset. This value specifies where to start reading the AssetBundle from. - - Asynchronous create request for an AssetBundle. Use AssetBundleCreateRequest.assetBundle property to get an AssetBundle once it is loaded. - - - - - Synchronously create an AssetBundle from a memory region. - - Array of bytes with the AssetBundle data. - An optional CRC-32 checksum of the uncompressed content. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. - - Loaded AssetBundle object or null if failed. - - - - - Asynchronously create an AssetBundle from a memory region. - - Array of bytes with the AssetBundle data. - An optional CRC-32 checksum of the uncompressed content. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. - - Asynchronous create request for an AssetBundle. Use AssetBundleCreateRequest.assetBundle property to get an AssetBundle once it is loaded. - - - - - Synchronously loads an AssetBundle from a managed Stream. - - The managed Stream object. Unity calls Read(), Seek() and the Length property on this object to load the AssetBundle data. - An optional CRC-32 checksum of the uncompressed content. - You can use this to override the size of the read buffer Unity uses while loading data. The default size is 32KB. - - The loaded AssetBundle object or null when the object fails to load. - - - - - Asynchronously loads an AssetBundle from a managed Stream. - - The managed Stream object. Unity calls Read(), Seek() and the Length property on this object to load the AssetBundle data. - An optional CRC-32 checksum of the uncompressed content. - You can use this to override the size of the read buffer Unity uses while loading data. The default size is 32KB. - - Asynchronous create request for an AssetBundle. Use AssetBundleCreateRequest.assetBundle property to get an AssetBundle once it is loaded. - - - - - Asynchronously recompress a downloaded/stored AssetBundle from one BuildCompression to another. - - Path to the AssetBundle to recompress. - Path to the recompressed AssetBundle to be generated. Can be the same as inputPath. - The compression method, level and blocksize to use during recompression. Only some BuildCompression types are supported (see note). - CRC of the AssetBundle to test against. Testing this requires additional file reading and computation. Pass in 0 to skip this check. - The priority at which the recompression operation should run. This sets thread priority during the operation and does not effect the order in which operations are performed. Recompression operations run on a background worker thread. - - - - Unloads all assets in the bundle. - - - - - - Unloads all currently loaded Asset Bundles. - - Determines whether the current instances of objects loaded from Asset Bundles will also be unloaded. - - - - Asynchronous create request for an AssetBundle. - - - - - Asset object being loaded (Read Only). - - - - - The result of an Asset Bundle Load or Recompress Operation. - - - - - The Asset Bundle is already loaded. - - - - - The operation was cancelled. - - - - - The Asset Bundle was not successfully cached. - - - - - Failed to decompress the Asset Bundle. - - - - - The target path given for the Recompression operation could not be deleted for swap with recompressed bundle file. - - - - - Failed to read the Asset Bundle file. - - - - - Failed to write to the file system. - - - - - The Asset Bundle does not contain any serialized data. It may be empty, or corrupt. - - - - - The AssetBundle is incompatible with this version of Unity. - - - - - The decompressed Asset data did not match the precomputed CRC. This may suggest that the AssetBundle did not download correctly. - - - - - This does not appear to be a valid Asset Bundle. - - - - - The target path given for the Recompression operation exists but is not an Archive container. - - - - - The target path given for the Recompression operation is an Archive that is currently loaded. - - - - - The operation completed successfully. - - - - - Manifest for all the AssetBundles in the build. - - - - - Get all the AssetBundles in the manifest. - - - An array of asset bundle names. - - - - - Get all the AssetBundles with variant in the manifest. - - - An array of asset bundle names. - - - - - Get all the dependent AssetBundles for the given AssetBundle. - - Name of the asset bundle. - - - - Get the hash for the given AssetBundle. - - Name of the asset bundle. - - The 128-bit hash for the asset bundle. - - - - - Get the direct dependent AssetBundles for the given AssetBundle. - - Name of the asset bundle. - - Array of asset bundle names this asset bundle depends on. - - - - - Asynchronous AssetBundle recompression from one compression method and level to another. - - - - - A string describing the recompression operation result (Read Only). - - - - - Path of the AssetBundle being recompressed (Read Only). - - - - - Path of the resulting recompressed AssetBundle (Read Only). - - - - - Result of the recompression operation. - - - - - True if the recompress operation is complete and was successful, otherwise false (Read Only). - - - - - Asynchronous load request from an AssetBundle. - - - - - Asset objects with sub assets being loaded. (Read Only) - - - - - Asset object being loaded (Read Only). - - - - - Asynchronous operation coroutine. - - - - - Allow Scenes to be activated as soon as it is ready. - - - - - Event that is invoked upon operation completion. An event handler that is registered in the same frame as the call that creates it will be invoked next frame, even if the operation is able to complete synchronously. If a handler is registered after the operation has completed and has already invoked the complete event, the handler will be called synchronously. - - Action<AsyncOperation> handler - function signature for completion event handler. - - - - Has the operation finished? (Read Only) - - - - - Priority lets you tweak in which order async operation calls will be performed. - - - - - What's the operation's progress. (Read Only) - - - - - An implementation of IPlayable that controls an AudioClip. - - - - - Creates an AudioClipPlayable in the PlayableGraph. - - The PlayableGraph that will contain the new AnimationLayerMixerPlayable. - The AudioClip that will be added in the PlayableGraph. - True if the clip should loop, false otherwise. - - A AudioClipPlayable linked to the PlayableGraph. - - - - - AudioMixer asset. - - - - - Routing target. - - - - - How time should progress for this AudioMixer. Used during Snapshot transitions. - - - - - Resets an exposed parameter to its initial value. - - Exposed parameter. - - Returns false if the parameter was not found or could not be set. - - - - - Connected groups in the mixer form a path from the mixer's master group to the leaves. This path has the format "Master GroupChild of Master GroupGrandchild of Master Group", so to find the grandchild group in this example, a valid search string would be for instance "randchi" which would return exactly one group while "hild" or "oup/" would return 2 different groups. - - Sub-string of the paths to be matched. - - Groups in the mixer whose paths match the specified search path. - - - - - The name must be an exact match. - - Name of snapshot object to be returned. - - The snapshot identified by the name. - - - - - Returns the value of the exposed parameter specified. If the parameter doesn't exist the function returns false. Prior to calling SetFloat and after ClearFloat has been called on this parameter the value returned will be that of the current snapshot or snapshot transition. - - Name of exposed parameter. - Return value of exposed parameter. - - Returns false if the exposed parameter specified doesn't exist. - - - - - Sets the value of the exposed parameter specified. When a parameter is exposed, it is not controlled by mixer snapshots and can therefore only be changed via this function. - - Name of exposed parameter. - New value of exposed parameter. - - Returns false if the exposed parameter was not found or snapshots are currently being edited. - - - - - Transitions to a weighted mixture of the snapshots specified. This can be used for games that specify the game state as a continuum between states or for interpolating snapshots from a triangulated map location. - - The set of snapshots to be mixed. - The mix weights for the snapshots specified. - Relative time after which the mixture should be reached from any current state. - - - - Object representing a group in the mixer. - - - - - An implementation of IPlayable that controls an audio mixer. - - - - - Object representing a snapshot in the mixer. - - - - - Performs an interpolated transition towards this snapshot over the time interval specified. - - Relative time after which this snapshot should be reached from any current state. - - - - The mode in which an AudioMixer should update its time. - - - - - Update the AudioMixer with scaled game time. - - - - - Update the AudioMixer with unscaled realtime. - - - - - A PlayableBinding that contains information representing an AudioPlayableOutput. - - - - - Creates a PlayableBinding that contains information representing an AudioPlayableOutput. - - A reference to a UnityEngine.Object that acts as a key for this binding. - The name of the AudioPlayableOutput. - - Returns a PlayableBinding that contains information that is used to create an AudioPlayableOutput. - - - - - A IPlayableOutput implementation that will be used to play audio. - - - - - Creates an AudioPlayableOutput in the PlayableGraph. - - The PlayableGraph that will contain the AnimationPlayableOutput. - The name of the output. - The AudioSource that will play the AudioPlayableOutput source Playable. - - A new AudioPlayableOutput attached to the PlayableGraph. - - - - - Gets the state of output playback when seeking. - - - Returns true if the output plays when seeking. Returns false otherwise. - - - - - Returns an invalid AudioPlayableOutput. - - - - - Controls whether the output should play when seeking. - - Set to true to play the output when seeking. Set to false to disable audio scrubbing on this output. Default is true. - - - - The Audio Chorus Filter takes an Audio Clip and processes it creating a chorus effect. - - - - - Chorus delay in ms. 0.1 to 100.0. Default = 40.0 ms. - - - - - Chorus modulation depth. 0.0 to 1.0. Default = 0.03. - - - - - Volume of original signal to pass to output. 0.0 to 1.0. Default = 0.5. - - - - - Chorus feedback. Controls how much of the wet signal gets fed back into the chorus buffer. 0.0 to 1.0. Default = 0.0. - - - - - Chorus modulation rate in hz. 0.0 to 20.0. Default = 0.8 hz. - - - - - Volume of 1st chorus tap. 0.0 to 1.0. Default = 0.5. - - - - - Volume of 2nd chorus tap. This tap is 90 degrees out of phase of the first tap. 0.0 to 1.0. Default = 0.5. - - - - - Volume of 3rd chorus tap. This tap is 90 degrees out of phase of the second tap. 0.0 to 1.0. Default = 0.5. - - - - - A container for audio data. - - - - - Returns true if this audio clip is ambisonic (read-only). - - - - - The number of channels in the audio clip. (Read Only) - - - - - The sample frequency of the clip in Hertz. (Read Only) - - - - - Returns true if the AudioClip is ready to play (read-only). - - - - - The length of the audio clip in seconds. (Read Only) - - - - - Corresponding to the "Load In Background" flag in the inspector, when this flag is set, the loading will happen delayed without blocking the main thread. - - - - - Returns the current load state of the audio data associated with an AudioClip. - - - - - The load type of the clip (read-only). - - - - - Preloads audio data of the clip when the clip asset is loaded. When this flag is off, scripts have to call AudioClip.LoadAudioData() to load the data before the clip can be played. Properties like length, channels and format are available before the audio data has been loaded. - - - - - The length of the audio clip in samples. (Read Only) - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Fills an array with sample data from the clip. - - - - - - - Loads the audio data of a clip. Clips that have "Preload Audio Data" set will load the audio data automatically. - - - Returns true if loading succeeded. - - - - - Delegate called each time AudioClip reads data. - - Array of floats containing data read from the clip. - - - - Delegate called each time AudioClip changes read position. - - New position in the audio clip. - - - - Set sample data in a clip. - - - - - - - Unloads the audio data associated with the clip. This works only for AudioClips that are based on actual sound file assets. - - - Returns false if unloading failed. - - - - - Determines how the audio clip is loaded in. - - - - - The audio data of the clip will be kept in memory in compressed form. - - - - - The audio data is decompressed when the audio clip is loaded. - - - - - Streams audio data from disk. - - - - - An enum containing different compression types. - - - - - AAC Audio Compression. - - - - - Adaptive differential pulse-code modulation. - - - - - Sony proprietary hardware format. - - - - - Nintendo ADPCM audio compression format. - - - - - Sony proprietory hardware codec. - - - - - MPEG Audio Layer III. - - - - - Uncompressed pulse-code modulation. - - - - - Sony proprietary hardware format. - - - - - Vorbis compression format. - - - - - Xbox One proprietary hardware format. - - - - - Specifies the current properties or desired properties to be set for the audio system. - - - - - The length of the DSP buffer in samples determining the latency of sounds by the audio output device. - - - - - The current maximum number of simultaneously audible sounds in the game. - - - - - The maximum number of managed sounds in the game. Beyond this limit sounds will simply stop playing. - - - - - The current sample rate of the audio output device used. - - - - - The current speaker mode used by the audio output device. - - - - - Value describing the current load state of the audio data associated with an AudioClip. - - - - - Value returned by AudioClip.loadState for an AudioClip that has failed loading its audio data. - - - - - Value returned by AudioClip.loadState for an AudioClip that has succeeded loading its audio data. - - - - - Value returned by AudioClip.loadState for an AudioClip that is currently loading audio data. - - - - - Value returned by AudioClip.loadState for an AudioClip that has no audio data loaded and where loading has not been initiated yet. - - - - - The Audio Distortion Filter distorts the sound from an AudioSource or sounds reaching the AudioListener. - - - - - Distortion value. 0.0 to 1.0. Default = 0.5. - - - - - The Audio Echo Filter repeats a sound after a given Delay, attenuating the repetitions based on the Decay Ratio. - - - - - Echo decay per delay. 0 to 1. 1.0 = No decay, 0.0 = total decay (i.e. simple 1 line delay). Default = 0.5. - - - - - Echo delay in ms. 10 to 5000. Default = 500. - - - - - Volume of original signal to pass to output. 0.0 to 1.0. Default = 1.0. - - - - - Volume of echo signal to pass to output. 0.0 to 1.0. Default = 1.0. - - - - - The Audio High Pass Filter passes high frequencies of an AudioSource, and cuts off signals with frequencies lower than the Cutoff Frequency. - - - - - Highpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0. - - - - - Determines how much the filter's self-resonance isdampened. - - - - - Representation of a listener in 3D space. - - - - - The paused state of the audio system. - - - - - This lets you set whether the Audio Listener should be updated in the fixed or dynamic update. - - - - - Controls the game sound volume (0.0 to 1.0). - - - - - Provides a block of the listener (master)'s output data. - - The array to populate with audio samples. Its length must be a power of 2. - The channel to sample from. - - - - Deprecated Version. Returns a block of the listener (master)'s output data. - - - - - - - Provides a block of the listener (master)'s spectrum data. - - The array to populate with audio samples. Its length must be a power of 2. - The channel to sample from. - The FFTWindow type to use when sampling. - - - - Deprecated Version. Returns a block of the listener (master)'s spectrum data. - - Number of values (the length of the samples array). Must be a power of 2. Min = 64. Max = 8192. - The channel to sample from. - The FFTWindow type to use when sampling. - - - - The Audio Low Pass Filter passes low frequencies of an AudioSource or all sounds reaching an AudioListener, while removing frequencies higher than the Cutoff Frequency. - - - - - Returns or sets the current custom frequency cutoff curve. - - - - - Lowpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0. - - - - - Determines how much the filter's self-resonance is dampened. - - - - - Allow recording the main output of the game or specific groups in the AudioMixer. - - - - - Returns the number of samples available since the last time AudioRenderer.Render was called. This is dependent on the frame capture rate. - - - Number of samples available since last recorded frame. - - - - - Performs the recording of the main output as well as any optional mixer groups that have been registered via AudioRenderer.AddMixerGroupSink. - - The buffer to write the sample data to. - - True if the recording succeeded. - - - - - Enters audio recording mode. After this Unity will output silence until AudioRenderer.Stop is called. - - - True if the engine was switched into output recording mode. False if it is already recording. - - - - - Exits audio recording mode. After this audio output will be audible again. - - - True if the engine was recording when this function was called. - - - - - The Audio Reverb Filter takes an Audio Clip and distorts it to create a custom reverb effect. - - - - - Decay HF Ratio : High-frequency to low-frequency decay time ratio. Ranges from 0.1 to 2.0. Default is 0.5. - - - - - Reverberation decay time at low-frequencies in seconds. Ranges from 0.1 to 20.0. Default is 1.0. - - - - - Reverberation density (modal density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. - - - - - Reverberation diffusion (echo density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. - - - - - Mix level of dry signal in output in millibels (mB). Ranges from -10000.0 to 0.0. Default is 0. - - - - - Reference high frequency in hertz (Hz). Ranges from 1000.0 to 20000.0. Default is 5000.0. - - - - - Reference low-frequency in hertz (Hz). Ranges from 20.0 to 1000.0. Default is 250.0. - - - - - Late reverberation level relative to room effect in millibels (mB). Ranges from -10000.0 to 2000.0. Default is 0.0. - - - - - Early reflections level relative to room effect in millibels (mB). Ranges from -10000.0 to 1000.0. Default is -10000.0. - - - - - Late reverberation delay time relative to first reflection in seconds. Ranges from 0.0 to 0.1. Default is 0.04. - - - - - Late reverberation level relative to room effect in millibels (mB). Ranges from -10000.0 to 2000.0. Default is 0.0. - - - - - Set/Get reverb preset properties. - - - - - Room effect level at low frequencies in millibels (mB). Ranges from -10000.0 to 0.0. Default is 0.0. - - - - - Room effect high-frequency level re. low frequency level in millibels (mB). Ranges from -10000.0 to 0.0. Default is 0.0. - - - - - Room effect low-frequency level in millibels (mB). Ranges from -10000.0 to 0.0. Default is 0.0. - - - - - Reverb presets used by the Reverb Zone class and the audio reverb filter. - - - - - Alley preset. - - - - - Arena preset. - - - - - Auditorium preset. - - - - - Bathroom preset. - - - - - Carpeted hallway preset. - - - - - Cave preset. - - - - - City preset. - - - - - Concert hall preset. - - - - - Dizzy preset. - - - - - Drugged preset. - - - - - Forest preset. - - - - - Generic preset. - - - - - Hallway preset. - - - - - Hangar preset. - - - - - Livingroom preset. - - - - - Mountains preset. - - - - - No reverb preset selected. - - - - - Padded cell preset. - - - - - Parking Lot preset. - - - - - Plain preset. - - - - - Psychotic preset. - - - - - Quarry preset. - - - - - Room preset. - - - - - Sewer pipe preset. - - - - - Stone corridor preset. - - - - - Stoneroom preset. - - - - - Underwater presset. - - - - - User defined preset. - - - - - Reverb Zones are used when you want to create location based ambient effects in the Scene. - - - - - High-frequency to mid-frequency decay time ratio. - - - - - Reverberation decay time at mid frequencies. - - - - - Value that controls the modal density in the late reverberation decay. - - - - - Value that controls the echo density in the late reverberation decay. - - - - - The distance from the centerpoint that the reverb will not have any effect. Default = 15.0. - - - - - The distance from the centerpoint that the reverb will have full effect at. Default = 10.0. - - - - - Early reflections level relative to room effect. - - - - - Initial reflection delay time. - - - - - Late reverberation level relative to room effect. - - - - - Late reverberation delay time relative to initial reflection. - - - - - Set/Get reverb preset properties. - - - - - Room effect level (at mid frequencies). - - - - - Relative room effect level at high frequencies. - - - - - Relative room effect level at low frequencies. - - - - - Like rolloffscale in global settings, but for reverb room size effect. - - - - - Reference high frequency (hz). - - - - - Reference low frequency (hz). - - - - - Rolloff modes that a 3D sound can have in an audio source. - - - - - Use this when you want to use a custom rolloff. - - - - - Use this mode when you want to lower the volume of your sound over the distance. - - - - - Use this mode when you want a real-world rolloff. - - - - - Controls the global audio settings from script. - - - - - Returns the speaker mode capability of the current audio driver. (Read Only) - - - - - Returns the current time of the audio system. - - - - - Get the mixer's current output rate. - - - - - Gets the current speaker mode. Default is 2 channel stereo. - - - - - A delegate called whenever the global audio settings are changed, either by AudioSettings.Reset or by an external device change such as the OS control panel changing the sample rate or because the default output device was changed, for example when plugging in an HDMI monitor or a USB headset. - - True if the change was caused by an device change. - - - - Returns the current configuration of the audio device and system. The values in the struct may then be modified and reapplied via AudioSettings.Reset. - - - The new configuration to be applied. - - - - - Get the mixer's buffer size in samples. - - Is the length of each buffer in the ringbuffer. - Is number of buffers. - - - - Returns the name of the spatializer selected on the currently-running platform. - - - The spatializer plugin name. - - - - - Returns an array with the names of all the available spatializer plugins. - - - An array of spatializer names. - - - - - A delegate called whenever the global audio settings are changed, either by AudioSettings.Reset or by an external factor such as the OS control panel changing the sample rate or because the default output device was changed, for example when plugging in an HDMI monitor or a USB headset. - - True if the change was caused by an device change. - - - - Performs a change of the device configuration. In response to this the AudioSettings.OnAudioConfigurationChanged delegate is invoked with the argument deviceWasChanged=false. It cannot be guaranteed that the exact settings specified can be used, but the an attempt is made to use the closest match supported by the system. - - The new configuration to be used. - - True if all settings could be successfully applied. - - - - - Sets the spatializer plugin for all platform groups. If a null or empty string is passed in, the existing spatializer plugin will be cleared. - - The spatializer plugin name. - - - - A representation of audio sources in 3D. - - - - - Bypass effects (Applied from filter components or global listener filters). - - - - - When set global effects on the AudioListener will not be applied to the audio signal generated by the AudioSource. Does not apply if the AudioSource is playing into a mixer group. - - - - - When set doesn't route the signal from an AudioSource into the global reverb associated with reverb zones. - - - - - The default AudioClip to play. - - - - - Sets the Doppler scale for this AudioSource. - - - - - Allows AudioSource to play even though AudioListener.pause is set to true. This is useful for the menu element sounds or background music in pause menus. - - - - - This makes the audio source not take into account the volume of the audio listener. - - - - - Is the clip playing right now (Read Only)? - - - - - True if all sounds played by the AudioSource (main sound started by Play() or playOnAwake as well as one-shots) are culled by the audio system. - - - - - Is the audio clip looping? - - - - - (Logarithmic rolloff) MaxDistance is the distance a sound stops attenuating at. - - - - - Within the Min distance the AudioSource will cease to grow louder in volume. - - - - - Un- / Mutes the AudioSource. Mute sets the volume=0, Un-Mute restore the original volume. - - - - - The target group to which the AudioSource should route its signal. - - - - - Pan has been deprecated. Use panStereo instead. - - - - - PanLevel has been deprecated. Use spatialBlend instead. - - - - - Pans a playing sound in a stereo way (left or right). This only applies to sounds that are Mono or Stereo. - - - - - The pitch of the audio source. - - - - - If set to true, the audio source will automatically start playing on awake. - - - - - Sets the priority of the AudioSource. - - - - - The amount by which the signal from the AudioSource will be mixed into the global reverb associated with the Reverb Zones. - - - - - Sets/Gets how the AudioSource attenuates over distance. - - - - - Sets how much this AudioSource is affected by 3D spatialisation calculations (attenuation, doppler etc). 0.0 makes the sound full 2D, 1.0 makes it full 3D. - - - - - Enables or disables spatialization. - - - - - Determines if the spatializer effect is inserted before or after the effect filters. - - - - - Sets the spread angle (in degrees) of a 3d stereo or multichannel sound in speaker space. - - - - - Playback position in seconds. - - - - - Playback position in PCM samples. - - - - - Whether the Audio Source should be updated in the fixed or dynamic update. - - - - - The volume of the audio source (0.0 to 1.0). - - - - - Reads a user-defined parameter of a custom ambisonic decoder effect that is attached to an AudioSource. - - Zero-based index of user-defined parameter to be read. - Return value of the user-defined parameter that is read. - - True, if the parameter could be read. - - - - - Get the current custom curve for the given AudioSourceCurveType. - - The curve type to get. - - The custom AnimationCurve corresponding to the given curve type. - - - - - Provides a block of the currently playing source's output data. - - The array to populate with audio samples. Its length must be a power of 2. - The channel to sample from. - - - - Deprecated Version. Returns a block of the currently playing source's output data. - - - - - - - Reads a user-defined parameter of a custom spatializer effect that is attached to an AudioSource. - - Zero-based index of user-defined parameter to be read. - Return value of the user-defined parameter that is read. - - True, if the parameter could be read. - - - - - Provides a block of the currently playing audio source's spectrum data. - - The array to populate with audio samples. Its length must be a power of 2. - The channel to sample from. - The FFTWindow type to use when sampling. - - - - Deprecated Version. Returns a block of the currently playing source's spectrum data. - - The number of samples to retrieve. Must be a power of 2. - The channel to sample from. - The FFTWindow type to use when sampling. - - - - Pauses playing the clip. - - - - - Plays the clip. - - Deprecated. Delay in number of samples, assuming a 44100Hz sample rate (meaning that Play(44100) will delay the playing by exactly 1 sec). - - - - Plays the clip. - - Deprecated. Delay in number of samples, assuming a 44100Hz sample rate (meaning that Play(44100) will delay the playing by exactly 1 sec). - - - - Plays an AudioClip at a given position in world space. - - Audio data to play. - Position in world space from which sound originates. - Playback volume. - - - - Plays an AudioClip at a given position in world space. - - Audio data to play. - Position in world space from which sound originates. - Playback volume. - - - - Plays the clip with a delay specified in seconds. Users are advised to use this function instead of the old Play(delay) function that took a delay specified in samples relative to a reference rate of 44.1 kHz as an argument. - - Delay time specified in seconds. - - - - Plays an AudioClip, and scales the AudioSource volume by volumeScale. - - The clip being played. - The scale of the volume (0-1). - - - - Plays an AudioClip, and scales the AudioSource volume by volumeScale. - - The clip being played. - The scale of the volume (0-1). - - - - Plays the clip at a specific time on the absolute time-line that AudioSettings.dspTime reads from. - - Time in seconds on the absolute time-line that AudioSettings.dspTime refers to for when the sound should start playing. - - - - Sets a user-defined parameter of a custom ambisonic decoder effect that is attached to an AudioSource. - - Zero-based index of user-defined parameter to be set. - New value of the user-defined parameter. - - True, if the parameter could be set. - - - - - Set the custom curve for the given AudioSourceCurveType. - - The curve type that should be set. - The curve that should be applied to the given curve type. - - - - Changes the time at which a sound that has already been scheduled to play will end. Notice that depending on the timing not all rescheduling requests can be fulfilled. - - Time in seconds. - - - - Changes the time at which a sound that has already been scheduled to play will start. - - Time in seconds. - - - - Sets a user-defined parameter of a custom spatializer effect that is attached to an AudioSource. - - Zero-based index of user-defined parameter to be set. - New value of the user-defined parameter. - - True, if the parameter could be set. - - - - - Stops playing the clip. - - - - - Unpause the paused playback of this AudioSource. - - - - - This defines the curve type of the different custom curves that can be queried and set within the AudioSource. - - - - - Custom Volume Rolloff. - - - - - Reverb Zone Mix. - - - - - The Spatial Blend. - - - - - The 3D Spread. - - - - - These are speaker types defined for use with AudioSettings.speakerMode. - - - - - Channel count is set to 6. 5.1 speaker setup. This includes front left, front right, center, rear left, rear right and a subwoofer. - - - - - Channel count is set to 8. 7.1 speaker setup. This includes front left, front right, center, rear left, rear right, side left, side right and a subwoofer. - - - - - Channel count is set to 1. The speakers are monaural. - - - - - Channel count is set to 2. Stereo output, but data is encoded in a way that is picked up by a Prologic/Prologic2 decoder and split into a 5.1 speaker setup. - - - - - Channel count is set to 4. 4 speaker setup. This includes front left, front right, rear left, rear right. - - - - - Channel count is unaffected. - - - - - Channel count is set to 2. The speakers are stereo. This is the editor default. - - - - - Channel count is set to 5. 5 speaker setup. This includes front left, front right, center, rear left, rear right. - - - - - Type of the imported(native) data. - - - - - Acc - not supported. - - - - - Aiff. - - - - - iPhone hardware decoder, supports AAC, ALAC and MP3. Extracodecdata is a pointer to an FMOD_AUDIOQUEUE_EXTRACODECDATA structure. - - - - - Impulse tracker. - - - - - Protracker / Fasttracker MOD. - - - - - MP2/MP3 MPEG. - - - - - Ogg vorbis. - - - - - ScreamTracker 3. - - - - - 3rd party / unknown plugin format. - - - - - VAG. - - - - - Microsoft WAV. - - - - - FastTracker 2 XM. - - - - - Xbox360 XMA. - - - - - Describes when an AudioSource or AudioListener is updated. - - - - - Updates the source or listener in the MonoBehaviour.FixedUpdate loop if it is attached to a Rigidbody, dynamic MonoBehaviour.Update otherwise. - - - - - Updates the source or listener in the dynamic MonoBehaviour.Update loop. - - - - - Updates the source or listener in the MonoBehaviour.FixedUpdate loop. - - - - - Avatar definition. - - - - - Return true if this avatar is a valid human avatar. - - - - - Return true if this avatar is a valid mecanim avatar. It can be a generic avatar or a human avatar. - - - - - Class to build avatars from user scripts. - - - - - Create a new generic avatar. - - Root object of your transform hierarchy. - Transform name of the root motion transform. If empty no root motion is defined and you must take care of avatar movement yourself. - - - - Create a humanoid avatar. - - Root object of your transform hierachy. It must be the top most gameobject when you create the avatar. - Humanoid description of the avatar. - - Returns the Avatar, you must always always check the avatar is valid before using it with Avatar.isValid. - - - - - IK Goal. - - - - - The left foot. - - - - - The left hand. - - - - - The right foot. - - - - - The right hand. - - - - - IK Hint. - - - - - The left elbow IK hint. - - - - - The left knee IK hint. - - - - - The right elbow IK hint. - - - - - The right knee IK hint. - - - - - AvatarMask is used to mask out humanoid body parts and transforms. - - - - - The number of humanoid body parts. - - - - - Number of transforms. - - - - - Adds a transform path into the AvatarMask. - - The transform to add into the AvatarMask. - Whether to also add all children of the specified transform. - - - - Creates a new AvatarMask. - - - - - Returns true if the humanoid body part at the given index is active. - - The index of the humanoid body part. - - - - Returns true if the transform at the given index is active. - - The index of the transform. - - - - Returns the path of the transform at the given index. - - The index of the transform. - - - - Removes a transform path from the AvatarMask. - - The Transform that should be removed from the AvatarMask. - Whether to also remove all children of the specified transform. - - - - Sets the humanoid body part at the given index to active or not. - - The index of the humanoid body part. - Active or not. - - - - Sets the tranform at the given index to active or not. - - The index of the transform. - Active or not. - - - - Sets the path of the transform at the given index. - - The index of the transform. - The path of the transform. - - - - Avatar body part. - - - - - The Body. - - - - - The Head. - - - - - Total number of body parts. - - - - - The Left Arm. - - - - - Left Fingers. - - - - - Left Foot IK. - - - - - Left Hand IK. - - - - - The Left Leg. - - - - - The Right Arm. - - - - - Right Fingers. - - - - - Right Foot IK. - - - - - Right Hand IK. - - - - - The Right Leg. - - - - - The Root. - - - - - Target. - - - - - The body, center of mass. - - - - - The left foot. - - - - - The left hand. - - - - - The right foot. - - - - - The right hand. - - - - - The root, the position of the game object. - - - - - Enumeration for SystemInfo.batteryStatus which represents the current status of the device's battery. - - - - - Device is plugged in and charging. - - - - - Device is unplugged and discharging. - - - - - Device is plugged in and the battery is full. - - - - - Device is plugged in, but is not charging. - - - - - The device's battery status cannot be determined. If battery status is not available on your target platform, SystemInfo.batteryStatus will return this value. - - - - - Use this BeforeRenderOrderAttribute when you need to specify a custom callback order for Application.onBeforeRender. - - - - - The order, lowest to highest, that the Application.onBeforeRender event recievers will be called in. - - - - - When applied to methods, specifies the order called during Application.onBeforeRender events. - - The sorting order, sorted lowest to highest. - - - - Behaviours are Components that can be enabled or disabled. - - - - - Enabled Behaviours are Updated, disabled Behaviours are not. - - - - - Has the Behaviour had active and enabled called? - - - - - BillboardAsset describes how a billboard is rendered. - - - - - Height of the billboard that is below ground. - - - - - Height of the billboard. - - - - - Number of pre-rendered images that can be switched when the billboard is viewed from different angles. - - - - - Number of indices in the billboard mesh. - - - - - The material used for rendering. - - - - - Number of vertices in the billboard mesh. - - - - - Width of the billboard. - - - - - Constructs a new BillboardAsset. - - - - - Get the array of billboard image texture coordinate data. - - The list that receives the array. - - - - Get the array of billboard image texture coordinate data. - - The list that receives the array. - - - - Get the indices of the billboard mesh. - - The list that receives the array. - - - - Get the indices of the billboard mesh. - - The list that receives the array. - - - - Get the vertices of the billboard mesh. - - The list that receives the array. - - - - Get the vertices of the billboard mesh. - - The list that receives the array. - - - - Set the array of billboard image texture coordinate data. - - The array of data to set. - - - - Set the array of billboard image texture coordinate data. - - The array of data to set. - - - - Set the indices of the billboard mesh. - - The array of data to set. - - - - Set the indices of the billboard mesh. - - The array of data to set. - - - - Set the vertices of the billboard mesh. - - The array of data to set. - - - - Set the vertices of the billboard mesh. - - The array of data to set. - - - - Renders a billboard from a BillboardAsset. - - - - - The BillboardAsset to render. - - - - - Constructor. - - - - - The BitStream class represents seralized variables, packed into a stream. - - - - - Is the BitStream currently being read? (Read Only) - - - - - Is the BitStream currently being written? (Read Only) - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Blend weights. - - - - - Four bones affect each vertex. - - - - - One bone affects each vertex. - - - - - Two bones affect each vertex. - - - - - Enumeration of all the muscles in the body. - - - - - The chest front-back muscle. - - - - - The chest left-right muscle. - - - - - The chest roll left-right muscle. - - - - - The last value of the BodyDof enum. - - - - - The spine front-back muscle. - - - - - The spine left-right muscle. - - - - - The spine roll left-right muscle. - - - - - The upper chest front-back muscle. - - - - - The upper chest left-right muscle. - - - - - The upper chest roll left-right muscle. - - - - - Skinning bone weights of a vertex in the mesh. - - - - - Index of first bone. - - - - - Index of second bone. - - - - - Index of third bone. - - - - - Index of fourth bone. - - - - - Skinning weight for first bone. - - - - - Skinning weight for second bone. - - - - - Skinning weight for third bone. - - - - - Skinning weight for fourth bone. - - - - - Describes a single bounding sphere for use by a CullingGroup. - - - - - The position of the center of the BoundingSphere. - - - - - The radius of the BoundingSphere. - - - - - Initializes a BoundingSphere. - - The center of the sphere. - The radius of the sphere. - A four-component vector containing the position (packed into the XYZ components) and radius (packed into the W component). - - - - Initializes a BoundingSphere. - - The center of the sphere. - The radius of the sphere. - A four-component vector containing the position (packed into the XYZ components) and radius (packed into the W component). - - - - Represents an axis aligned bounding box. - - - - - The center of the bounding box. - - - - - The extents of the Bounding Box. This is always half of the size of the Bounds. - - - - - The maximal point of the box. This is always equal to center+extents. - - - - - The minimal point of the box. This is always equal to center-extents. - - - - - The total size of the box. This is always twice as large as the extents. - - - - - The closest point on the bounding box. - - Arbitrary point. - - The point on the bounding box or inside the bounding box. - - - - - Is point contained in the bounding box? - - - - - - Creates a new Bounds. - - The location of the origin of the Bounds. - The dimensions of the Bounds. - - - - Grows the Bounds to include the point. - - - - - - Grow the bounds to encapsulate the bounds. - - - - - - Expand the bounds by increasing its size by amount along each side. - - - - - - Expand the bounds by increasing its size by amount along each side. - - - - - - Does ray intersect this bounding box? - - - - - - Does ray intersect this bounding box? - - - - - - - Does another bounding box intersect with this bounding box? - - - - - - Sets the bounds to the min and max value of the box. - - - - - - - The smallest squared distance between the point and this bounding box. - - - - - - Returns a nicely formatted string for the bounds. - - - - - - Returns a nicely formatted string for the bounds. - - - - - - Represents an axis aligned bounding box with all values as integers. - - - - - A BoundsInt.PositionCollection that contains all positions within the BoundsInt. - - - - - The center of the bounding box. - - - - - The maximal point of the box. - - - - - The minimal point of the box. - - - - - The position of the bounding box. - - - - - The total size of the box. - - - - - X value of the minimal point of the box. - - - - - The maximal x point of the box. - - - - - The minimal x point of the box. - - - - - Y value of the minimal point of the box. - - - - - The maximal y point of the box. - - - - - The minimal y point of the box. - - - - - Z value of the minimal point of the box. - - - - - The maximal z point of the box. - - - - - The minimal z point of the box. - - - - - Clamps the position and size of this bounding box to the given bounds. - - Bounds to clamp to. - - - - Is point contained in the bounding box? - - Point to check. - Whether the max limits are included in the check. - - Is point contained in the bounding box? - - - - - Is point contained in the bounding box? - - Point to check. - Whether the max limits are included in the check. - - Is point contained in the bounding box? - - - - - An iterator that allows you to iterate over all positions within the BoundsInt. - - - - - Current position of the enumerator. - - - - - Returns this as an iterator that allows you to iterate over all positions within the BoundsInt. - - - This BoundsInt.PositionEnumerator. - - - - - Moves the enumerator to the next position. - - - Whether the enumerator has successfully moved to the next position. - - - - - Resets this enumerator to its starting state. - - - - - Sets the bounds to the min and max value of the box. - - - - - - - Returns a nicely formatted string for the bounds. - - - - - Use this struct to set up a box cast command to be performed asynchronously during a job. - - - - - Center of the box. - - - - - The direction in which to sweep the box. - - - - - The maximum distance of the sweep. - - - - - Half the size of the box in each dimension. - - - - - A LayerMask that is used to selectively ignore Colliders when casting a box. - - - - - Rotation of the box. - - - - - Creates a BoxcastCommand. - - Center of the box. - Half the size of the box in each dimension. - Rotation of the box. - The direction in which to sweep the box. - The maximum length of the cast. - A that is used to selectively ignore colliders when casting a box. - - - - - Schedules a batch of boxcasts to be performed in a job. - - A NativeArray of the BoxcastCommand to perform. - A NativeArray of RaycastHit where the result of commands are stored. - The minimum number of jobs which should be performed in a single job. - A JobHandle of a job that must be completed before performing the box casts. - - Returns a JobHandle of the job that will perform the box casts. - - - - - A box-shaped primitive collider. - - - - - The center of the box, measured in the object's local space. - - - - - The size of the box, measured in the object's local space. - - - - - Collider for 2D physics representing an axis-aligned rectangle. - - - - - Determines whether the BoxCollider2D's shape is automatically updated based on a SpriteRenderer's tiling properties. - - - - - The center point of the collider in local space. - - - - - Controls the radius of all edges created by the collider. - - - - - The width and height of the rectangle. - - - - - Contains information about compression methods, compression levels and block sizes that are supported by Asset Bundle compression at build time and recompression at runtime. - - - - - LZ4HC "Chunk Based" Compression. - - - - - LZ4 Compression for runtime recompression. - - - - - LZMA Compression. - - - - - Uncompressed Asset Bundle. - - - - - Uncompressed Asset Bundle. - - - - - Applies forces to simulate buoyancy, fluid-flow and fluid drag. - - - - - A force applied to slow angular movement of any Collider2D in contact with the effector. - - - - - The density of the fluid used to calculate the buoyancy forces. - - - - - The angle of the force used to similate fluid flow. - - - - - The magnitude of the force used to similate fluid flow. - - - - - The random variation of the force used to similate fluid flow. - - - - - A force applied to slow linear movement of any Collider2D in contact with the effector. - - - - - Defines an arbitrary horizontal line that represents the fluid surface level. - - - - - Data structure for cache. Please refer to See Also:Caching.AddCache for more information. - - - - - The number of seconds that an AssetBundle may remain unused in the cache before it is automatically deleted. - - - - - Returns the index of the cache in the cache list. - - - - - Allows you to specify the total number of bytes that can be allocated for the cache. - - - - - Returns the path of the cache. - - - - - Returns true if the cache is readonly. - - - - - Returns true if the cache is ready. - - - - - Returns the number of currently unused bytes in the cache. - - - - - Returns the used disk space in bytes. - - - - - Returns true if the cache is valid. - - - - - Removes all cached content in the cache that has been cached by the current application. - - The number of seconds that AssetBundles may remain unused in the cache. - - Returns True when cache clearing succeeded. - - - - - Removes all cached content in the cache that has been cached by the current application. - - The number of seconds that AssetBundles may remain unused in the cache. - - Returns True when cache clearing succeeded. - - - - - Data structure for downloading AssetBundles to a customized cache path. See Also:UnityWebRequestAssetBundle.GetAssetBundle for more information. - - - - - Hash128 which is used as the version of the AssetBundle. - - - - - AssetBundle name which is used as the customized cache path. - - - - - The Caching class lets you manage cached AssetBundles, downloaded using UnityWebRequestAssetBundle.GetAssetBundle(). - - - - - Returns the cache count in the cache list. - - - - - Controls compression of cache data. Enabled by default. - - - - - Gets or sets the current cache in which AssetBundles should be cached. - - - - - Returns the default cache which is added by Unity internally. - - - - - Returns true if Caching system is ready for use. - - - - - Add a cache with the given path. - - Path to the cache folder. - - - - Removes all the cached versions of the given AssetBundle from the cache. - - The AssetBundle name. - - Returns true when cache clearing succeeded. - - - - - Removes all AssetBundle content that has been cached by the current application. - - The number of seconds that AssetBundles may remain unused in the cache. - - True when cache clearing succeeded, false if cache was in use. - - - - - Removes all AssetBundle content that has been cached by the current application. - - The number of seconds that AssetBundles may remain unused in the cache. - - True when cache clearing succeeded, false if cache was in use. - - - - - Removes the given version of the AssetBundle. - - The AssetBundle name. - Version needs to be cleaned. - - Returns true when cache clearing succeeded. Can return false if any cached bundle is in use. - - - - - Removes all the cached versions of the AssetBundle from the cache, except for the specified version. - - The AssetBundle name. - Version needs to be kept. - - Returns true when cache clearing succeeded. - - - - - Returns all paths of the cache in the cache list. - - List of all the cache paths. - - - - Returns the Cache at the given position in the cache list. - - Index of the cache to get. - - A reference to the Cache at the index specified. - - - - - Returns the Cache that has the given cache path. - - The cache path. - - A reference to the Cache with the given path. - - - - - Returns all cached versions of the given AssetBundle. - - The AssetBundle name. - List of all the cached version. - - - - Checks if an AssetBundle is cached. - - Url The filename of the AssetBundle. Domain and path information are stripped from this string automatically. - Version The version number of the AssetBundle to check for. Negative values are not allowed. - - - - True if an AssetBundle matching the url and version parameters has previously been loaded using UnityWebRequestAssetBundle.GetAssetBundle() and is currently stored in the cache. Returns false if the AssetBundle is not in cache, either because it has been flushed from the cache or was never loaded using the Caching API. - - - - - Bumps the timestamp of a cached file to be the current time. - - - - - - - Moves the source Cache after the destination Cache in the cache list. - - The Cache to move. - The Cache which should come before the source Cache in the cache list. - - - - Moves the source Cache before the destination Cache in the cache list. - - The Cache to move. - The Cache which should come after the source Cache in the cache list. - - - - Removes the Cache from cache list. - - The Cache to be removed. - - Returns true if the Cache is removed. - - - - - A Camera is a device through which the player views the world. - - - - - Gets the temporary RenderTexture target for this Camera. - - - - - The rendering path that is currently being used (Read Only). - - - - - Returns all enabled cameras in the Scene. - - - - - The number of cameras in the current Scene. - - - - - Dynamic Resolution Scaling. - - - - - High dynamic range rendering. - - - - - MSAA rendering. - - - - - Determines whether the stereo view matrices are suitable to allow for a single pass cull. - - - - - The aspect ratio (width divided by height). - - - - - The color with which the screen will be cleared. - - - - - Matrix that transforms from camera space to world space (Read Only). - - - - - Identifies what kind of camera this is. - - - - - How the camera clears the background. - - - - - Should the camera clear the stencil buffer after the deferred light pass? - - - - - Number of command buffers set up on this camera (Read Only). - - - - - This is used to render parts of the Scene selectively. - - - - - Sets a custom matrix for the camera to use for all culling queries. - - - - - The camera we are currently rendering with, for low-level render control only (Read Only). - - - - - Camera's depth in the camera rendering order. - - - - - How and if camera generates a depth texture. - - - - - Mask to select which layers can trigger events on the camera. - - - - - The far clipping plane distance. - - - - - The field of view of the camera in degrees. - - - - - The camera focal length, expressed in millimeters. To use this property, enable UsePhysicalProperties. - - - - - Should camera rendering be forced into a RenderTexture. - - - - - There are two gates for a camera, the sensor gate and the resolution gate. The physical camera sensor gate is defined by the sensorSize property, the resolution gate is defined by the render target area. - - - - - High dynamic range rendering. - - - - - Per-layer culling distances. - - - - - How to perform per-layer culling for a Camera. - - - - - The lens offset of the camera. The lens shift is relative to the sensor size. For example, a lens shift of 0.5 offsets the sensor by half its horizontal size. - - - - - The first enabled camera tagged "MainCamera" (Read Only). - - - - - The near clipping plane distance. - - - - - Get or set the raw projection matrix with no camera offset (no jittering). - - - - - Event that is fired after any camera finishes rendering. - - - - - Event that is fired before any camera starts culling. - - - - - Event that is fired before any camera starts rendering. - - - - - Opaque object sorting mode. - - - - - Is the camera orthographic (true) or perspective (false)? - - - - - Camera's half-size when in orthographic mode. - - - - - How tall is the camera in pixels (not accounting for dynamic resolution scaling) (Read Only). - - - - - Where on the screen is the camera rendered in pixel coordinates. - - - - - How wide is the camera in pixels (not accounting for dynamic resolution scaling) (Read Only). - - - - - Get the view projection matrix used on the last frame. - - - - - Set a custom projection matrix. - - - - - Where on the screen is the camera rendered in normalized coordinates. - - - - - The rendering path that should be used, if possible. - - - - - How tall is the camera in pixels (accounting for dynamic resolution scaling) (Read Only). - - - - - How wide is the camera in pixels (accounting for dynamic resolution scaling) (Read Only). - - - - - If not null, the camera will only render the contents of the specified Scene. - - - - - The size of the camera sensor, expressed in millimeters. - - - - - Returns the eye that is currently rendering. -If called when stereo is not enabled it will return Camera.MonoOrStereoscopicEye.Mono. - -If called during a camera rendering callback such as OnRenderImage it will return the currently rendering eye. - -If called outside of a rendering callback and stereo is enabled, it will return the default eye which is Camera.MonoOrStereoscopicEye.Left. - - - - - Distance to a point where virtual eyes converge. - - - - - Stereoscopic rendering. - - - - - Render only once and use resulting image for both eyes. - - - - - The distance between the virtual eyes. Use this to query or set the current eye separation. Note that most VR devices provide this value, in which case setting the value will have no effect. - - - - - Defines which eye of a VR display the Camera renders into. - - - - - Set the target display for this Camera. - - - - - Destination render texture. - - - - - An axis that describes the direction along which the distances of objects are measured for the purpose of sorting. - - - - - Transparent object sorting mode. - - - - - Should the jittered matrix be used for transparency rendering? - - - - - Whether or not the Camera will use occlusion culling during rendering. - - - - - Enable [UsePhysicalProperties] to use physical camera properties to compute the field of view and the frustum. - - - - - Get the world-space speed of the camera (Read Only). - - - - - Matrix that transforms from world to camera space. - - - - - Add a command buffer to be executed at a specified place. - - When to execute the command buffer during rendering. - The buffer to execute. - - - - Adds a command buffer to the GPU's async compute queues and executes that command buffer when graphics processing reaches a given point. - - The point during the graphics processing at which this command buffer should commence on the GPU. - The buffer to execute. - The desired async compute queue type to execute the buffer on. - - - - Given viewport coordinates, calculates the view space vectors pointing to the four frustum corners at the specified camera depth. - - Normalized viewport coordinates to use for the frustum calculation. - Z-depth from the camera origin at which the corners will be calculated. - Camera eye projection matrix to use. - Output array for the frustum corner vectors. Cannot be null and length must be >= 4. - - - - Calculates and returns oblique near-plane projection matrix. - - Vector4 that describes a clip plane. - - Oblique near-plane projection matrix. - - - - - - Calculates the projection matrix from focal length, sensor size, lens shift, near plane distance, far plane distance, and Gate fit parameters. - To calculate the projection matrix without taking Gate fit into account, use Camera.GateFitMode.None . See Also: Camera.GateFitParameters - - - The calculated matrix. - Focal length in millimeters. - Sensor dimensions in Millimeters. - Lens offset relative to the sensor size. - Near plane distance. - Far plane distance. - Gate fit parameters to use. See Camera.GateFitParameters. - - - - Delegate type for camera callbacks. - - - - - - Makes this camera's settings match other camera. - - Copy camera settings to the other camera. - - - - Sets the non-jittered projection matrix, sourced from the VR SDK. - - Specifies the stereoscopic eye whose non-jittered projection matrix will be sourced from the VR SDK. - - - - Converts focal length to field of view. - - Focal length in millimeters. - Sensor size in millimeters. Use the sensor height to get the vertical field of view. Use the sensor width to get the horizontal field of view. - - field of view in degrees. - - - - - Converts field of view to focal length. Use either sensor height and vertical field of view or sensor width and horizontal field of view. - - field of view in degrees. - Sensor size in millimeters. - - Focal length in millimeters. - - - - - Enum used to specify how the sensor gate (sensor frame) defined by Camera.sensorSize fits into the resolution gate (render frame). - - - - - - Automatically selects a horizontal or vertical fit so that the sensor gate fits completely inside the resolution gate. - - - - - - - Fit the resolution gate horizontally within the sensor gate. - - - - - - - Stretch the sensor gate to fit exactly into the resolution gate. - - - - - - - Automatically selects a horizontal or vertical fit so that the render frame fits completely inside the resolution gate. - - - - - - - Fit the resolution gate vertically within the sensor gate. - - - - - - Wrapper for gate fit parameters - - - - - Aspect ratio of the resolution gate. - - - - - GateFitMode to use. See Camera.GateFitMode. - - - - - Wrapper for gate fit parameters. - - - - - - - Fills an array of Camera with the current cameras in the Scene, without allocating a new array. - - An array to be filled up with cameras currently in the Scene. - - - - Get command buffers to be executed at a specified place. - - When to execute the command buffer during rendering. - - Array of command buffers. - - - - - Gets the non-jittered projection matrix of a specific left or right stereoscopic eye. - - Specifies the stereoscopic eye whose non-jittered projection matrix needs to be returned. - - The non-jittered projection matrix of the specified stereoscopic eye. - - - - - Gets the projection matrix of a specific left or right stereoscopic eye. - - Specifies the stereoscopic eye whose projection matrix needs to be returned. - - The projection matrix of the specified stereoscopic eye. - - - - - Gets the left or right view matrix of a specific stereoscopic eye. - - Specifies the stereoscopic eye whose view matrix needs to be returned. - - The view matrix of the specified stereoscopic eye. - - - - - A Camera eye corresponding to the left or right human eye for stereoscopic rendering, or neither for non-stereoscopic rendering. - -A single Camera can render both left and right views in a single frame. Therefore, this enum describes which eye the Camera is currently rendering when returned by Camera.stereoActiveEye during a rendering callback (such as Camera.OnRenderImage), or which eye to act on when passed into a function. - -The default value is Camera.MonoOrStereoscopicEye.Left, so Camera.MonoOrStereoscopicEye.Left may be returned by some methods or properties when called outside of rendering if stereoscopic rendering is enabled. - - - - - Camera eye corresponding to stereoscopic rendering of the left eye. - - - - - Camera eye corresponding to non-stereoscopic rendering. - - - - - Camera eye corresponding to stereoscopic rendering of the right eye. - - - - - Remove all command buffers set on this camera. - - - - - Remove command buffer from execution at a specified place. - - When to execute the command buffer during rendering. - The buffer to execute. - - - - Remove command buffers from execution at a specified place. - - When to execute the command buffer during rendering. - - - - Render the camera manually. - - - - - Render into a static cubemap from this camera. - - The cube map to render to. - A bitmask which determines which of the six faces are rendered to. - - False if rendering fails, else true. - - - - - Render into a cubemap from this camera. - - A bitfield indicating which cubemap faces should be rendered into. - The texture to render to. - - False if rendering fails, else true. - - - - - Render one side of a stereoscopic 360-degree image into a cubemap from this camera. - - The texture to render to. - A bitfield indicating which cubemap faces should be rendered into. Set to the integer value 63 to render all faces. - A Camera eye corresponding to the left or right eye for stereoscopic rendering, or neither for non-stereoscopic rendering. - - False if rendering fails, else true. - - - - - Render the camera with shader replacement. - - - - - - - Revert all camera parameters to default. - - - - - Revert the aspect ratio to the screen's aspect ratio. - - - - - Make culling queries reflect the camera's built in parameters. - - - - - Reset to the default field of view. - - - - - Make the projection reflect normal camera's parameters. - - - - - Remove shader replacement from camera. - - - - - Reset the camera to using the Unity computed projection matrices for all stereoscopic eyes. - - - - - Reset the camera to using the Unity computed view matrices for all stereoscopic eyes. - - - - - Resets this Camera's transparency sort settings to the default. Default transparency settings are taken from GraphicsSettings instead of directly from this Camera. - - - - - Make the rendering position reflect the camera's position in the Scene. - - - - - Returns a ray going from camera through a screen point. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Returns a ray going from camera through a screen point. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Transforms position from screen space into viewport space. - - - - - - Transforms position from screen space into world space. - - - - - - Make the camera render with shader replacement. - - - - - - - Sets custom projection matrices for both the left and right stereoscopic eyes. - - Projection matrix for the stereoscopic left eye. - Projection matrix for the stereoscopic right eye. - - - - Sets a custom projection matrix for a specific stereoscopic eye. - - Specifies the stereoscopic eye whose projection matrix needs to be set. - The matrix to be set. - - - - Set custom view matrices for both eyes. - - View matrix for the stereo left eye. - View matrix for the stereo right eye. - - - - Sets a custom view matrix for a specific stereoscopic eye. - - Specifies the stereoscopic view matrix to set. - The matrix to be set. - - - - Sets the Camera to render to the chosen buffers of one or more RenderTextures. - - The RenderBuffer(s) to which color information will be rendered. - The RenderBuffer to which depth information will be rendered. - - - - Sets the Camera to render to the chosen buffers of one or more RenderTextures. - - The RenderBuffer(s) to which color information will be rendered. - The RenderBuffer to which depth information will be rendered. - - - - Enum used to specify either the left or the right eye of a stereoscopic camera. - - - - - Specifies the target to be the left eye. - - - - - Specifies the target to be the right eye. - - - - - Returns a ray going from camera through a viewport point. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Returns a ray going from camera through a viewport point. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Transforms position from viewport space into screen space. - - - - - - Transforms position from viewport space into world space. - - The 3d vector in Viewport space. - - The 3d vector in World space. - - - - - Transforms position from world space into screen space. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Transforms position from world space into screen space. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Transforms position from world space into viewport space. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Transforms position from world space into viewport space. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Values for Camera.clearFlags, determining what to clear when rendering a Camera. - - - - - Clear only the depth buffer. - - - - - Don't clear anything. - - - - - Clear with the skybox. - - - - - Clear with a background color. - - - - - Describes different types of camera. - - - - - Used to indicate a regular in-game camera. - - - - - Used to indicate a camera that is used for rendering previews in the Editor. - - - - - Used to indicate a camera that is used for rendering reflection probes. - - - - - Used to indicate that a camera is used for rendering the Scene View in the Editor. - - - - - Used to indicate that a camera is used for rendering VR (in edit mode) in the Editor. - - - - - Element that can be used for screen rendering. - - - - - Get or set the mask of additional shader channels to be used when creating the Canvas mesh. - - - - - Cached calculated value based upon SortingLayerID. - - - - - Is this the root Canvas? - - - - - The normalized grid size that the canvas will split the renderable area into. - - - - - Allows for nested canvases to override pixelPerfect settings inherited from parent canvases. - - - - - Override the sorting of canvas. - - - - - Force elements in the canvas to be aligned with pixels. Only applies with renderMode is Screen Space. - - - - - Get the render rect for the Canvas. - - - - - How far away from the camera is the Canvas generated. - - - - - The number of pixels per unit that is considered the default. - - - - - Is the Canvas in World or Overlay mode? - - - - - The render order in which the canvas is being emitted to the Scene. (Read Only) - - - - - Returns the Canvas closest to root, by checking through each parent and returning the last canvas found. If no other canvas is found then the canvas will return itself. - - - - - Used to scale the entire canvas, while still making it fit the screen. Only applies with renderMode is Screen Space. - - - - - The normalized grid size that the canvas will split the renderable area into. - - - - - Unique ID of the Canvas' sorting layer. - - - - - Name of the Canvas' sorting layer. - - - - - Canvas' order within a sorting layer. - - - - - For Overlay mode, display index on which the UI canvas will appear. - - - - - Event that is called just before Canvas rendering happens. - - - - - - Camera used for sizing the Canvas when in Screen Space - Camera. Also used as the Camera that events will be sent through for a World Space [[Canvas]. - - - - - Force all canvases to update their content. - - - - - Returns the default material that can be used for rendering normal elements on the Canvas. - - - - - Returns the default material that can be used for rendering text elements on the Canvas. - - - - - Gets or generates the ETC1 Material. - - - The generated ETC1 Material from the Canvas. - - - - - A Canvas placable element that can be used to modify children Alpha, Raycasting, Enabled state. - - - - - Set the alpha of the group. - - - - - Does this group block raycasting (allow collision). - - - - - Should the group ignore parent groups? - - - - - Is the group interactable (are the elements beneath the group enabled). - - - - - Returns true if the Group allows raycasts. - - - - - - - A component that will render to the screen after all normal rendering has completed when attached to a Canvas. Designed for GUI application. - - - - - Depth of the renderer relative to the root canvas. - - - - - Indicates whether geometry emitted by this renderer is ignored. - - - - - Indicates whether geometry emitted by this renderer can be ignored when the vertex color alpha is close to zero for every vertex of the mesh. - - - - - True if any change has occured that would invalidate the positions of generated geometry. - - - - - Enable 'render stack' pop draw call. - - - - - True if rect clipping has been enabled on this renderer. -See Also: CanvasRenderer.EnableRectClipping, CanvasRenderer.DisableRectClipping. - - - - - Is the UIRenderer a mask component. - - - - - The number of materials usable by this renderer. - - - - - (Editor Only) Event that gets fired whenever the data in the CanvasRenderer gets invalidated and needs to be rebuilt. - - - - - - The number of materials usable by this renderer. Used internally for masking. - - - - - Depth of the renderer realative to the parent canvas. - - - - - Take the Vertex steam and split it corrisponding arrays (positions, colors, uv0s, uv1s, normals and tangents). - - The UIVertex list to split. - The destination list for the verts positions. - The destination list for the verts colors. - The destination list for the verts uv0s. - The destination list for the verts uv1s. - The destination list for the verts normals. - The destination list for the verts tangents. - - - - Remove all cached vertices. - - - - - Convert a set of vertex components into a stream of UIVertex. - - - - - - - - - - - - - Disables rectangle clipping for this CanvasRenderer. - - - - - Enables rect clipping on the CanvasRendered. Geometry outside of the specified rect will be clipped (not rendered). - - - - - - Get the current alpha of the renderer. - - - - - Get the current color of the renderer. - - - - - Get the final inherited alpha calculated by including all the parent alphas from included parent CanvasGroups. - - - The calculated inherited alpha. - - - - - Gets the current Material assigned to the CanvasRenderer. - - The material index to retrieve (0 if this parameter is omitted). - - Result. - - - - - Gets the current Material assigned to the CanvasRenderer. - - The material index to retrieve (0 if this parameter is omitted). - - Result. - - - - - Gets the current Material assigned to the CanvasRenderer. Used internally for masking. - - - - - - Set the alpha of the renderer. Will be multiplied with the UIVertex alpha and the Canvas alpha. - - Alpha. - - - - The Alpha Texture that will be passed to the Shader under the _AlphaTex property. - - The Texture to be passed. - - - - Set the color of the renderer. Will be multiplied with the UIVertex color and the Canvas color. - - Renderer multiply color. - - - - Set the material for the canvas renderer. If a texture is specified then it will be used as the 'MainTex' instead of the material's 'MainTex'. -See Also: CanvasRenderer.SetMaterialCount, CanvasRenderer.SetTexture. - - Material for rendering. - Material texture overide. - Material index. - - - - Set the material for the canvas renderer. If a texture is specified then it will be used as the 'MainTex' instead of the material's 'MainTex'. -See Also: CanvasRenderer.SetMaterialCount, CanvasRenderer.SetTexture. - - Material for rendering. - Material texture overide. - Material index. - - - - Sets the Mesh used by this renderer. - - - - - - Set the material for the canvas renderer. Used internally for masking. - - - - - - - Sets the texture used by this renderer's material. - - - - - - Set the vertices for the UIRenderer. - - Array of vertices to set. - Number of vertices to set. - - - - Set the vertices for the UIRenderer. - - Array of vertices to set. - Number of vertices to set. - - - - Given a list of UIVertex, split the stream into it's component types. - - - - - - - - - - - - - Use this struct to set up a capsule cast command that is performed asynchronously during a job. - - - - - The direction of the capsule cast. - - - - - The maximum distance the capsule cast checks for collision. - - - - - A LayerMask that selectively ignores Colliders when casting a capsule. - - - - - The center of the sphere at the start of the capsule. - - - - - The center of the sphere at the end of the capsule. - - - - - The radius of the capsule. - - - - - Creates a CapsulecastCommand. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The direction of the capsule cast - The maximum length of the sweep. - The LayerMask that selectively ignores Colliders when casting a capsule. - - - - Schedules a batch of capsule casts which are performed in a job. - - A NaviveArray of CapsulecastCommands to perform. - A NavtiveArray of RaycastHit where the result of commands are stored. - The minimum number of jobs which should be performed in a single job. - A jobHandle of a job that must be completed before performing capsule casts. - - Returns a JobHandle of the job that will performs the capsule casts. - - - - - A capsule-shaped primitive collider. - - - - - The center of the capsule, measured in the object's local space. - - - - - The direction of the capsule. - - - - - The height of the capsule measured in the object's local space. - - - - - The radius of the sphere, measured in the object's local space. - - - - - A capsule-shaped primitive collider. - - - - - The direction that the capsule sides can extend. - - - - - The width and height of the capsule area. - - - - - The direction that the capsule sides can extend. - - - - - The capsule sides extend horizontally. - - - - - The capsule sides extend vertically. - - - - - A CharacterController allows you to easily do movement constrained by collisions without having to deal with a rigidbody. - - - - - The center of the character's capsule relative to the transform's position. - - - - - What part of the capsule collided with the environment during the last CharacterController.Move call. - - - - - Determines whether other rigidbodies or character controllers collide with this character controller (by default this is always enabled). - - - - - Enables or disables overlap recovery. - Enables or disables overlap recovery. Used to depenetrate character controllers from static objects when an overlap is detected. - - - - - The height of the character's capsule. - - - - - Was the CharacterController touching the ground during the last move? - - - - - Gets or sets the minimum move distance of the character controller. - - - - - The radius of the character's capsule. - - - - - The character's collision skin width. - - - - - The character controllers slope limit in degrees. - - - - - The character controllers step offset in meters. - - - - - The current relative velocity of the Character (see notes). - - - - - A more complex move function taking absolute movement deltas. - - - - - - Moves the character with speed. - - - - - - Specification for how to render a character from the font texture. See Font.characterInfo. - - - - - The horizontal distance, rounded to the nearest integer, from the origin of this character to the origin of the next character. - - - - - The horizontal distance from the origin of this glyph to the begining of the glyph image. - - - - - Is the character flipped? - - - - - The height of the glyph image. - - - - - The width of the glyph image. - - - - - Unicode value of the character. - - - - - The maximum extend of the glyph image in the x-axis. - - - - - The maximum extend of the glyph image in the y-axis. - - - - - The minium extend of the glyph image in the x-axis. - - - - - The minimum extend of the glyph image in the y-axis. - - - - - The size of the character or 0 if it is the default font size. - - - - - The style of the character. - - - - - UV coordinates for the character in the texture. - - - - - The uv coordinate matching the bottom left of the glyph image in the font texture. - - - - - The uv coordinate matching the bottom right of the glyph image in the font texture. - - - - - The uv coordinate matching the top left of the glyph image in the font texture. - - - - - The uv coordinate matching the top right of the glyph image in the font texture. - - - - - Screen coordinates for the character in generated text meshes. - - - - - How far to advance between the beginning of this charcater and the next. - - - - - Character Joints are mainly used for Ragdoll effects. - - - - - Brings violated constraints back into alignment even when the solver fails. - - - - - The upper limit around the primary axis of the character joint. - - - - - The lower limit around the primary axis of the character joint. - - - - - Set the angular tolerance threshold (in degrees) for projection. - - - - - Set the linear tolerance threshold for projection. - - - - - The angular limit of rotation (in degrees) around the primary axis of the character joint. - - - - - The angular limit of rotation (in degrees) around the primary axis of the character joint. - - - - - The secondary axis around which the joint can rotate. - - - - - The configuration of the spring attached to the swing limits of the joint. - - - - - The configuration of the spring attached to the twist limits of the joint. - - - - - Collider for 2D physics representing an circle. - - - - - The center point of the collider in local space. - - - - - Radius of the circle. - - - - - The Cloth class provides an interface to cloth simulation physics. - - - - - Bending stiffness of the cloth. - - - - - An array of CapsuleColliders which this Cloth instance should collide with. - - - - - Number of cloth solver iterations per second. - - - - - The cloth skinning coefficients used to set up how the cloth interacts with the skinned mesh. - - - - - How much to increase mass of colliding particles. - - - - - Damp cloth motion. - - - - - Enable continuous collision to improve collision stability. - - - - - Is this cloth enabled? - - - - - A constant, external acceleration applied to the cloth. - - - - - The friction of the cloth when colliding with the character. - - - - - The current normals of the cloth object. - - - - - A random, external acceleration applied to the cloth. - - - - - Minimum distance at which two cloth particles repel each other (default: 0.0). - - - - - Self-collision stiffness defines how strong the separating impulse should be for colliding particles. - - - - - Cloth's sleep threshold. - - - - - An array of ClothSphereColliderPairs which this Cloth instance should collide with. - - - - - Sets the stiffness frequency parameter. - - - - - Stretching stiffness of the cloth. - - - - - Should gravity affect the cloth simulation? - - - - - Use Tether Anchors. - - - - - Add one virtual particle per triangle to improve collision stability. - - - - - The current vertex positions of the cloth object. - - - - - How much world-space acceleration of the character will affect cloth vertices. - - - - - How much world-space movement of the character will affect cloth vertices. - - - - - Clear the pending transform changes from affecting the cloth simulation. - - - - - Get list of particles to be used for self and inter collision. - - List to be populated with cloth particle indices that are used for self and/or inter collision. - - - - Get list of indices to be used when generating virtual particles. - - List to be populated with virtual particle indices. - - - - Get weights to be used when generating virtual particles for cloth. - - List to populate with virtual particle weights. - - - - Fade the cloth simulation in or out. - - Fading enabled or not. - - - - - This allows you to set the cloth indices used for self and inter collision. - - List of cloth particles indices to use for cloth self and/or inter collision. - - - - Set indices to use when generating virtual particles. - - List of cloth particle indices to use when generating virtual particles. - - - - Sets weights to be used when generating virtual particles for cloth. - - List of weights to be used when setting virutal particles for cloth. - - - - The ClothSkinningCoefficient struct is used to set up how a Cloth component is allowed to move with respect to the SkinnedMeshRenderer it is attached to. - - - - - Definition of a sphere a vertex is not allowed to enter. This allows collision against the animated cloth. - - - - - Distance a vertex is allowed to travel from the skinned mesh vertex position. - - - - - A pair of SphereColliders used to define shapes for Cloth objects to collide against. - - - - - The first SphereCollider of a ClothSphereColliderPair. - - - - - The second SphereCollider of a ClothSphereColliderPair. - - - - - Creates a ClothSphereColliderPair. If only one SphereCollider is given, the ClothSphereColliderPair will define a simple sphere. If two SphereColliders are given, the ClothSphereColliderPair defines a conic capsule shape, composed of the two spheres and the cone connecting the two. - - The first SphereCollider of a ClothSphereColliderPair. - The second SphereCollider of a ClothSphereColliderPair. - - - - Creates a ClothSphereColliderPair. If only one SphereCollider is given, the ClothSphereColliderPair will define a simple sphere. If two SphereColliders are given, the ClothSphereColliderPair defines a conic capsule shape, composed of the two spheres and the cone connecting the two. - - The first SphereCollider of a ClothSphereColliderPair. - The second SphereCollider of a ClothSphereColliderPair. - - - - Interface for reading and writing inputs in a Unity Cluster. - - - - - Add a new VRPN input entry. - - Name of the input entry. This has to be unique. - Device name registered to VRPN server. - URL to the vrpn server. - Index of the Input entry, refer to vrpn.cfg if unsure. - Type of the input. - - True if the operation succeed. - - - - - Check the connection status of the device to the VRPN server it connected to. - - Name of the input entry. - - - - Edit an input entry which added via ClusterInput.AddInput. - - Name of the input entry. This has to be unique. - Device name registered to VRPN server. - URL to the vrpn server. - Index of the Input entry, refer to vrpn.cfg if unsure. - Type of the ClusterInputType as follow. - - - - Returns the axis value as a continous float. - - Name of input to poll.c. - - - - Returns the binary value of a button. - - Name of input to poll. - - - - Return the position of a tracker as a Vector3. - - Name of input to poll. - - - - Returns the rotation of a tracker as a Quaternion. - - Name of input to poll. - - - - Sets the axis value for this input. Only works for input typed Custom. - - Name of input to modify. - Value to set. - - - - Sets the button value for this input. Only works for input typed Custom. - - Name of input to modify. - Value to set. - - - - Sets the tracker position for this input. Only works for input typed Custom. - - Name of input to modify. - Value to set. - - - - Sets the tracker rotation for this input. Only works for input typed Custom. - - Name of input to modify. - Value to set. - - - - Values to determine the type of input value to be expect from one entry of ClusterInput. - - - - - Device is an analog axis that provides continuous value represented by a float. - - - - - Device that return a binary result of pressed or not pressed. - - - - - A user customized input. - - - - - Device that provide position and orientation values. - - - - - A helper class that contains static method to inquire status of Unity Cluster. - - - - - Check whether the current instance is disconnected from the cluster network. - - - - - Check whether the current instance is a master node in the cluster network. - - - - - To acquire or set the node index of the current machine from the cluster network. - - - - - A base class of all colliders. - - - - - The rigidbody the collider is attached to. - - - - - The world space bounding volume of the collider (Read Only). - - - - - Contact offset value of this collider. - - - - - Enabled Colliders will collide with other Colliders, disabled Colliders won't. - - - - - Is the collider a trigger? - - - - - The material used by the collider. - - - - - The shared physic material of this collider. - - - - - Returns a point on the collider that is closest to a given location. - - Location you want to find the closest point to. - - The point on the collider that is closest to the specified location. - - - - - The closest point to the bounding box of the attached collider. - - - - - - Casts a Ray that ignores all Colliders except this one. - - The starting point and direction of the ray. - If true is returned, hitInfo will contain more information about where the collider was hit. - The max length of the ray. - - True when the ray intersects the collider, otherwise false. - - - - - Parent class for collider types used with 2D gameplay. - - - - - The Rigidbody2D attached to the Collider2D. - - - - - Get the bounciness used by the collider. - - - - - The world space bounding area of the collider. - - - - - Get the CompositeCollider2D that is available to be attached to the collider. - - - - - The density of the collider used to calculate its mass (when auto mass is enabled). - - - - - Get the friction used by the collider. - - - - - Is this collider configured as a trigger? - - - - - The local offset of the collider geometry. - - - - - The number of separate shaped regions in the collider. - - - - - The PhysicsMaterial2D that is applied to this collider. - - - - - Sets whether the Collider will be used or not used by a CompositeCollider2D. - - - - - Whether the collider is used by an attached effector or not. - - - - - Casts the collider shape into the Scene starting at the collider position ignoring the collider itself. - - Vector representing the direction to cast the shape. - Array to receive results. - Maximum distance over which to cast the shape. - Should colliders attached to the same Rigidbody2D (known as sibling colliders) be ignored? - - The number of results returned. - - - - - Casts the collider shape into the Scene starting at the collider position ignoring the collider itself. - - Vector representing the direction to cast the shape. - Filter results defined by the contact filter. - Array to receive results. - Maximum distance over which to cast the shape. - Should colliders attached to the same Rigidbody2D (known as sibling colliders) be ignored? - - The number of results returned. - - - - - Calculates the minimum separation of this collider against another collider. - - A collider used to calculate the minimum separation against this collider. - - The minimum separation of collider and this collider. - - - - - Retrieves all contact points for this collider. - - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with this collider. - - An array of Collider2D used to receive the results. - - Returns the number of contacts placed in the colliders array. - - - - - Retrieves all contact points for this collider, with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with this collider, with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of Collider2D used to receive the results. - - Returns the number of collidersplaced in the colliders array. - - - - - Check whether this collider is touching the collider or not. - - The collider to check if it is touching this collider. - - Whether this collider is touching the collider or not. - - - - - Check whether this collider is touching the collider or not with the results filtered by the ContactFilter2D. - - The collider to check if it is touching this collider. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether this collider is touching the collider or not. - - - - - Check whether this collider is touching other colliders or not with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether this collider is touching the collider or not. - - - - - Checks whether this collider is touching any colliders on the specified layerMask or not. - - Any colliders on any of these layers count as touching. - - Whether this collider is touching any collider on the specified layerMask or not. - - - - - Get a list of all colliders that overlap this collider. - - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Check if a collider overlaps a point in space. - - A point in world space. - - Does point overlap the collider? - - - - - Casts a ray into the Scene starting at the collider position ignoring the collider itself. - - Vector representing the direction of the ray. - Array to receive results. - Maximum distance over which to cast the ray. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - Filter results defined by the contact filter. - - The number of results returned. - - - - - Casts a ray into the Scene starting at the collider position ignoring the collider itself. - - Vector representing the direction of the ray. - Array to receive results. - Maximum distance over which to cast the ray. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - Filter results defined by the contact filter. - - The number of results returned. - - - - - Represents the separation or overlap of two Collider2D. - - - - - Gets the distance between two colliders. - - - - - Gets whether the distance represents an overlap or not. - - - - - Gets whether the distance is valid or not. - - - - - A normalized vector that points from pointB to pointA. - - - - - A point on a Collider2D that is a specific distance away from pointB. - - - - - A point on a Collider2D that is a specific distance away from pointA. - - - - - Describes a collision. - - - - - The Collider we hit (Read Only). - - - - - Gets the number of contacts for this collision. - - - - - The contact points generated by the physics engine. You should avoid using this as it produces memory garbage. Use GetContact or GetContacts instead. - - - - - The GameObject whose collider you are colliding with. (Read Only). - - - - - The total impulse applied to this contact pair to resolve the collision. - - - - - The relative linear velocity of the two colliding objects (Read Only). - - - - - The Rigidbody we hit (Read Only). This is null if the object we hit is a collider with no rigidbody attached. - - - - - The Transform of the object we hit (Read Only). - - - - - Gets the contact point at the specified index. - - The index of the contact to retrieve. - - The contact at the specified index. - - - - - Retrieves all contact points for this collision. - - An array of ContactPoint used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Collision details returned by 2D physics callback functions. - - - - - The incoming Collider2D involved in the collision with the otherCollider. - - - - - Gets the number of contacts for this collision. - - - - - The specific points of contact with the incoming Collider2D. You should avoid using this as it produces memory garbage. Use GetContact or GetContacts instead. - - - - - Indicates whether the collision response or reaction is enabled or disabled. - - - - - The incoming GameObject involved in the collision. - - - - - The other Collider2D involved in the collision with the collider. - - - - - The other Rigidbody2D involved in the collision with the rigidbody. - - - - - The relative linear velocity of the two colliding objects (Read Only). - - - - - The incoming Rigidbody2D involved in the collision with the otherRigidbody. - - - - - The Transform of the incoming object involved in the collision. - - - - - Gets the contact point at the specified index. - - The index of the contact to retrieve. - - The contact at the specified index. - - - - - Retrieves all contact points for contacts between collider and otherCollider. - - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - The collision detection mode constants used for Rigidbody.collisionDetectionMode. - - - - - Continuous collision detection is on for colliding with static mesh geometry. - - - - - Continuous collision detection is on for colliding with static and dynamic geometry. - - - - - Speculative continuous collision detection is on for static and dynamic geometries - - - - - Continuous collision detection is off for this Rigidbody. - - - - - Controls how collisions are detected when a Rigidbody2D moves. - - - - - Ensures that all collisions are detected when a Rigidbody2D moves. - - - - - When a Rigidbody2D moves, only collisions at the new position are detected. - - - - - This mode is obsolete. You should use Discrete mode. - - - - - CollisionFlags is a bitmask returned by CharacterController.Move. - - - - - CollisionFlags is a bitmask returned by CharacterController.Move. - - - - - CollisionFlags is a bitmask returned by CharacterController.Move. - - - - - CollisionFlags is a bitmask returned by CharacterController.Move. - - - - - CollisionFlags is a bitmask returned by CharacterController.Move. - - - - - Representation of RGBA colors. - - - - - Alpha component of the color (0 is transparent, 1 is opaque). - - - - - Blue component of the color. - - - - - Solid black. RGBA is (0, 0, 0, 1). - - - - - Solid blue. RGBA is (0, 0, 1, 1). - - - - - Completely transparent. RGBA is (0, 0, 0, 0). - - - - - Cyan. RGBA is (0, 1, 1, 1). - - - - - Green component of the color. - - - - - A version of the color that has had the gamma curve applied. - - - - - Gray. RGBA is (0.5, 0.5, 0.5, 1). - - - - - The grayscale value of the color. (Read Only) - - - - - Solid green. RGBA is (0, 1, 0, 1). - - - - - English spelling for gray. RGBA is the same (0.5, 0.5, 0.5, 1). - - - - - A linear value of an sRGB color. - - - - - Magenta. RGBA is (1, 0, 1, 1). - - - - - Returns the maximum color component value: Max(r,g,b). - - - - - Red component of the color. - - - - - Solid red. RGBA is (1, 0, 0, 1). - - - - - Solid white. RGBA is (1, 1, 1, 1). - - - - - Yellow. RGBA is (1, 0.92, 0.016, 1), but the color is nice to look at! - - - - - Constructs a new Color with given r,g,b,a components. - - Red component. - Green component. - Blue component. - Alpha component. - - - - Constructs a new Color with given r,g,b components and sets a to 1. - - Red component. - Green component. - Blue component. - - - - Creates an RGB colour from HSV input. - - Hue [0..1]. - Saturation [0..1]. - Brightness value [0..1]. - Output HDR colours. If true, the returned colour will not be clamped to [0..1]. - - An opaque colour with HSV matching the input. - - - - - Creates an RGB colour from HSV input. - - Hue [0..1]. - Saturation [0..1]. - Brightness value [0..1]. - Output HDR colours. If true, the returned colour will not be clamped to [0..1]. - - An opaque colour with HSV matching the input. - - - - - Colors can be implicitly converted to and from Vector4. - - - - - - Colors can be implicitly converted to and from Vector4. - - - - - - Linearly interpolates between colors a and b by t. - - Color a. - Color b. - Float for combining a and b. - - - - Linearly interpolates between colors a and b by t. - - - - - - - - Divides color a by the float b. Each color component is scaled separately. - - - - - - - Subtracts color b from color a. Each component is subtracted separately. - - - - - - - Multiplies two colors together. Each component is multiplied separately. - - - - - - - Multiplies color a by the float b. Each color component is scaled separately. - - - - - - - Multiplies color a by the float b. Each color component is scaled separately. - - - - - - - Adds two colors together. Each component is added separately. - - - - - - - Calculates the hue, saturation and value of an RGB input color. - - An input color. - Output variable for hue. - Output variable for saturation. - Output variable for value. - - - - Access the r, g, b,a components using [0], [1], [2], [3] respectively. - - - - - Returns a nicely formatted string of this color. - - - - - - Returns a nicely formatted string of this color. - - - - - - Representation of RGBA colors in 32 bit format. - - - - - Alpha component of the color. - - - - - Blue component of the color. - - - - - Green component of the color. - - - - - Red component of the color. - - - - - Constructs a new Color32 with given r, g, b, a components. - - - - - - - - - Color32 can be implicitly converted to and from Color. - - - - - - Color32 can be implicitly converted to and from Color. - - - - - - Linearly interpolates between colors a and b by t. - - - - - - - - Linearly interpolates between colors a and b by t. - - - - - - - - Returns a nicely formatted string of this color. - - - - - - Returns a nicely formatted string of this color. - - - - - - Represents a color gamut. - - - - - sRGB color gamut. - - - - - Display-P3 color gamut. - - - - - DolbyHDR high dynamic range color gamut. - - - - - HDR10 high dynamic range color gamut. - - - - - Rec. 2020 color gamut. - - - - - Rec. 709 color gamut. - - - - - Color space for player settings. - - - - - Gamma color space. - - - - - Linear color space. - - - - - Uninitialized color space. - - - - - Attribute used to configure the usage of the ColorField and Color Picker for a color. - - - - - If set to true the Color is treated as a HDR color. - - - - - Maximum allowed HDR color component value when using the HDR Color Picker. - - - - - Maximum exposure value allowed in the HDR Color Picker. - - - - - Minimum allowed HDR color component value when using the Color Picker. - - - - - Minimum exposure value allowed in the HDR Color Picker. - - - - - If false then the alpha bar is hidden in the ColorField and the alpha value is not shown in the Color Picker. - - - - - Attribute for Color fields. Used for configuring the GUI for the color. - - If false then the alpha channel info is hidden both in the ColorField and in the Color Picker. - Set to true if the color should be treated as a HDR color (default value: false). - Minimum allowed HDR color component value when using the HDR Color Picker (default value: 0). - Maximum allowed HDR color component value when using the HDR Color Picker (default value: 8). - Minimum exposure value allowed in the HDR Color Picker (default value: 1/8 = 0.125). - Maximum exposure value allowed in the HDR Color Picker (default value: 3). - - - - Attribute for Color fields. Used for configuring the GUI for the color. - - If false then the alpha channel info is hidden both in the ColorField and in the Color Picker. - Set to true if the color should be treated as a HDR color (default value: false). - Minimum allowed HDR color component value when using the HDR Color Picker (default value: 0). - Maximum allowed HDR color component value when using the HDR Color Picker (default value: 8). - Minimum exposure value allowed in the HDR Color Picker (default value: 1/8 = 0.125). - Maximum exposure value allowed in the HDR Color Picker (default value: 3). - - - - Attribute for Color fields. Used for configuring the GUI for the color. - - If false then the alpha channel info is hidden both in the ColorField and in the Color Picker. - Set to true if the color should be treated as a HDR color (default value: false). - Minimum allowed HDR color component value when using the HDR Color Picker (default value: 0). - Maximum allowed HDR color component value when using the HDR Color Picker (default value: 8). - Minimum exposure value allowed in the HDR Color Picker (default value: 1/8 = 0.125). - Maximum exposure value allowed in the HDR Color Picker (default value: 3). - - - - A collection of common color functions. - - - - - Returns the color as a hexadecimal string in the format "RRGGBB". - - The color to be converted. - - Hexadecimal string representing the color. - - - - - Returns the color as a hexadecimal string in the format "RRGGBBAA". - - The color to be converted. - - Hexadecimal string representing the color. - - - - - Attempts to convert a html color string. - - Case insensitive html string to be converted into a color. - The converted color. - - True if the string was successfully converted else false. - - - - - Struct used to describe meshes to be combined using Mesh.CombineMeshes. - - - - - The baked lightmap UV scale and offset applied to the Mesh. - - - - - Mesh to combine. - - - - - The realtime lightmap UV scale and offset applied to the Mesh. - - - - - Sub-Mesh index of the Mesh. - - - - - Matrix to transform the Mesh with before combining. - - - - - Interface into compass functionality. - - - - - Used to enable or disable compass. Note, that if you want Input.compass.trueHeading property to contain a valid value, you must also enable location updates by calling Input.location.Start(). - - - - - Accuracy of heading reading in degrees. - - - - - The heading in degrees relative to the magnetic North Pole. (Read Only) - - - - - The raw geomagnetic data measured in microteslas. (Read Only) - - - - - Timestamp (in seconds since 1970) when the heading was last time updated. (Read Only) - - - - - The heading in degrees relative to the geographic North Pole. (Read Only) - - - - - Base class for everything attached to GameObjects. - - - - - The Animation attached to this GameObject. (Null if there is none attached). - - - - - The AudioSource attached to this GameObject. (Null if there is none attached). - - - - - The Camera attached to this GameObject. (Null if there is none attached). - - - - - The Collider attached to this GameObject. (Null if there is none attached). - - - - - The Collider2D component attached to the object. - - - - - The ConstantForce attached to this GameObject. (Null if there is none attached). - - - - - The game object this component is attached to. A component is always attached to a game object. - - - - - The GUIText attached to this GameObject. (Null if there is none attached). - - - - - The GUITexture attached to this GameObject (Read Only). (null if there is none attached). - - - - - The HingeJoint attached to this GameObject. (Null if there is none attached). - - - - - The Light attached to this GameObject. (Null if there is none attached). - - - - - The NetworkView attached to this GameObject (Read Only). (null if there is none attached). - - - - - The ParticleSystem attached to this GameObject. (Null if there is none attached). - - - - - The Renderer attached to this GameObject. (Null if there is none attached). - - - - - The Rigidbody attached to this GameObject. (Null if there is none attached). - - - - - The Rigidbody2D that is attached to the Component's GameObject. - - - - - The tag of this game object. - - - - - The Transform attached to this GameObject. - - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - Name of the method to call. - Optional parameter to pass to the method (can be any value). - Should an error be raised if the method does not exist for a given target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - Name of the method to call. - Optional parameter to pass to the method (can be any value). - Should an error be raised if the method does not exist for a given target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - Name of the method to call. - Optional parameter to pass to the method (can be any value). - Should an error be raised if the method does not exist for a given target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - Name of the method to call. - Optional parameter to pass to the method (can be any value). - Should an error be raised if the method does not exist for a given target object? - - - - Is this game object tagged with tag ? - - The tag to compare. - - - - Returns the component of Type type if the game object has one attached, null if it doesn't. - - The type of Component to retrieve. - - - - Generic version. See the page for more details. - - - - - Returns the component with name type if the game object has one attached, null if it doesn't. - - - - - - Returns the component of Type type in the GameObject or any of its children using depth first search. - - The type of Component to retrieve. - - A component of the matching type, if found. - - - - - Generic version. See the page for more details. - - - - A component of the matching type, if found. - - - - - Returns the component of Type type in the GameObject or any of its parents. - - The type of Component to retrieve. - - A component of the matching type, if found. - - - - - Generic version. See the page for more details. - - - A component of the matching type, if found. - - - - - Returns all components of Type type in the GameObject. - - The type of Component to retrieve. - - - - Generic version. See the page for more details. - - - - - Returns all components of Type type in the GameObject or any of its children. - - The type of Component to retrieve. - Should Components on inactive GameObjects be included in the found set? includeInactive decides which children of the GameObject will be searched. The GameObject that you call GetComponentsInChildren on is always searched regardless. - - - - Returns all components of Type type in the GameObject or any of its children. - - The type of Component to retrieve. - Should Components on inactive GameObjects be included in the found set? includeInactive decides which children of the GameObject will be searched. The GameObject that you call GetComponentsInChildren on is always searched regardless. - - - - Generic version. See the page for more details. - - Should Components on inactive GameObjects be included in the found set? includeInactive decides which children of the GameObject will be searched. The GameObject that you call GetComponentsInChildren on is always searched regardless. - - A list of all found components matching the specified type. - - - - - Generic version. See the page for more details. - - - A list of all found components matching the specified type. - - - - - Returns all components of Type type in the GameObject or any of its parents. - - The type of Component to retrieve. - Should inactive Components be included in the found set? - - - - Generic version. See the page for more details. - - Should inactive Components be included in the found set? - - - - Generic version. See the page for more details. - - Should inactive Components be included in the found set? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - Name of the method to call. - Optional parameter for the method. - Should an error be raised if the target object doesn't implement the method for the message? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - Name of the method to call. - Optional parameter for the method. - Should an error be raised if the target object doesn't implement the method for the message? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - Name of the method to call. - Optional parameter for the method. - Should an error be raised if the target object doesn't implement the method for the message? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - Name of the method to call. - Optional parameter for the method. - Should an error be raised if the target object doesn't implement the method for the message? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - Name of method to call. - Optional parameter value for the method. - Should an error be raised if the method does not exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - Name of method to call. - Optional parameter value for the method. - Should an error be raised if the method does not exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - Name of method to call. - Optional parameter value for the method. - Should an error be raised if the method does not exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - Name of method to call. - Optional parameter value for the method. - Should an error be raised if the method does not exist on the target object? - - - - A Collider that can merge other Colliders together. - - - - - Controls the radius of all edges created by the Collider. - - - - - Specifies when to generate the Composite Collider geometry. - - - - - Specifies the type of geometry the Composite Collider should generate. - - - - - The number of paths in the Collider. - - - - - Gets the total number of points in all the paths within the Collider. - - - - - Controls the minimum distance allowed between generated vertices. - - - - - Regenerates the Composite Collider geometry. - - - - - Specifies when to generate the Composite Collider geometry. - - - - - Sets the Composite Collider geometry to not automatically update when a Collider used by the Composite Collider changes. - - - - - Sets the Composite Collider geometry to update synchronously immediately when a Collider used by the Composite Collider changes. - - - - - Specifies the type of geometry the Composite Collider generates. - - - - - Sets the Composite Collider to generate closed outlines for the merged Collider geometry consisting of only edges. - - - - - Sets the Composite Collider to generate closed outlines for the merged Collider geometry consisting of convex polygon shapes. - - - - - Gets a path from the Collider by its index. - - The index of the path from 0 to pathCount. - An ordered array of the vertices or points in the selected path. - - Returns the number of points placed in the points array. - - - - - Gets the number of points in the specified path from the Collider by its index. - - The index of the path from 0 to pathCount. - - Returns the number of points in the path specified by index. - - - - - Compression Levels relate to how much time should be spent compressing Assets into an Asset Bundle. - - - - - No compression. - - - - - Compression Method for Asset Bundles. - - - - - LZ4 compression results in larger compressed files than LZMA, but does not require the entire bundle to be decompressed before use. - - - - - LZ4HC is a high compression variant of LZ4. LZ4HC compression results in larger compressed files than LZMA, but does not require the entire bundle to be decompressed before use. - - - - - LZMA compression results in smaller compressed Asset Bundles but they must be entirely decompressed before use. - - - - - Uncompressed Asset Bundles are larger than compressed Asset Bundles, but they are the fastest to access once downloaded. - - - - - GPU data buffer, mostly for use with compute shaders. - - - - - Number of elements in the buffer (Read Only). - - - - - Size of one element in the buffer (Read Only). - - - - - Copy counter value of append/consume buffer into another buffer. - - Append/consume buffer to copy the counter from. - A buffer to copy the counter to. - Target byte offset in dst. - - - - Create a Compute Buffer. - - Number of elements in the buffer. - Size of one element in the buffer. Has to match size of buffer type in the shader. See for cross-platform compatibility information. - Type of the buffer, default is ComputeBufferType.Default (structured buffer). - - - - Create a Compute Buffer. - - Number of elements in the buffer. - Size of one element in the buffer. Has to match size of buffer type in the shader. See for cross-platform compatibility information. - Type of the buffer, default is ComputeBufferType.Default (structured buffer). - - - - Read data values from the buffer into an array. The array can only use <a href="https:docs.microsoft.comen-usdotnetframeworkinteropblittable-and-non-blittable-types">blittable<a> types. - - An array to receive the data. - - - - Partial read of data values from the buffer into an array. - - An array to receive the data. - The first element index in data where retrieved elements are copied. - The first element index of the compute buffer from which elements are read. - The number of elements to retrieve. - - - - Retrieve a native (underlying graphics API) pointer to the buffer. - - - Pointer to the underlying graphics API buffer. - - - - - Returns true if this compute buffer is valid and false otherwise. - - - - - Release a Compute Buffer. - - - - - Sets counter value of append/consume buffer. - - Value of the append/consume counter. - - - - Set the buffer with values from an array. - - Array of values to fill the buffer. - - - - Partial copy of data values from an array into the buffer. - - Array of values to fill the buffer. - The first element index in data to copy to the compute buffer. - The first element index in compute buffer to receive the data. - The number of elements to copy. - - - - ComputeBuffer type. - - - - - Append-consume ComputeBuffer type. - - - - - ComputeBuffer with a counter. - - - - - Default ComputeBuffer type (structured buffer). - - - - - ComputeBuffer used for Graphics.DrawProceduralIndirect, ComputeShader.DispatchIndirect or Graphics.DrawMeshInstancedIndirect arguments. - - - - - Raw ComputeBuffer type (byte address buffer). - - - - - Compute Shader asset. - - - - - Execute a compute shader. - - Which kernel to execute. A single compute shader asset can have multiple kernel entry points. - Number of work groups in the X dimension. - Number of work groups in the Y dimension. - Number of work groups in the Z dimension. - - - - Execute a compute shader. - - Which kernel to execute. A single compute shader asset can have multiple kernel entry points. - Buffer with dispatch arguments. - The byte offset into the buffer, where the draw arguments start. - - - - Find ComputeShader kernel index. - - Name of kernel function. - - The Kernel index, or logs a "FindKernel failed" error message if the kernel is not found. - - - - - Get kernel thread group sizes. - - Which kernel to query. A single compute shader asset can have multiple kernel entry points. - Thread group size in the X dimension. - Thread group size in the Y dimension. - Thread group size in the Z dimension. - - - - Checks whether a shader contains a given kernel. - - The name of the kernel to look for. - - True if the kernel is found, false otherwise. - - - - - Set a bool parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a bool parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Sets an input or output compute buffer. - - For which kernel the buffer is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Buffer to set. - - - - Sets an input or output compute buffer. - - For which kernel the buffer is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Buffer to set. - - - - Set a float parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a float parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set multiple consecutive float parameters at once. - - Array variable name in the shader code. - Property name ID, use Shader.PropertyToID to get it. - Value array to set. - - - - Set multiple consecutive float parameters at once. - - Array variable name in the shader code. - Property name ID, use Shader.PropertyToID to get it. - Value array to set. - - - - Set an integer parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set an integer parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set multiple consecutive integer parameters at once. - - Array variable name in the shader code. - Property name ID, use Shader.PropertyToID to get it. - Value array to set. - - - - Set multiple consecutive integer parameters at once. - - Array variable name in the shader code. - Property name ID, use Shader.PropertyToID to get it. - Value array to set. - - - - Set a Matrix parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a Matrix parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a Matrix array parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a Matrix array parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a texture parameter. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Texture to set. - Optional mipmap level of the read-write texture. - - - - Set a texture parameter. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Texture to set. - Optional mipmap level of the read-write texture. - - - - Set a texture parameter. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Texture to set. - Optional mipmap level of the read-write texture. - - - - Set a texture parameter. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Texture to set. - Optional mipmap level of the read-write texture. - - - - Set a texture parameter from a global texture property. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Global texture property to assign to shader. - Property name ID, use Shader.PropertyToID to get it. - - - - Set a texture parameter from a global texture property. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Global texture property to assign to shader. - Property name ID, use Shader.PropertyToID to get it. - - - - Set a vector parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a vector parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a vector array parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a vector array parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - The configurable joint is an extremely flexible joint giving you complete control over rotation and linear motion. - - - - - Definition of how the joint's rotation will behave around its local X axis. Only used if Rotation Drive Mode is Swing & Twist. - - - - - The configuration of the spring attached to the angular X limit of the joint. - - - - - Allow rotation around the X axis to be Free, completely Locked, or Limited according to Low and High Angular XLimit. - - - - - Boundary defining rotation restriction, based on delta from original rotation. - - - - - Allow rotation around the Y axis to be Free, completely Locked, or Limited according to Angular YLimit. - - - - - Definition of how the joint's rotation will behave around its local Y and Z axes. Only used if Rotation Drive Mode is Swing & Twist. - - - - - The configuration of the spring attached to the angular Y and angular Z limits of the joint. - - - - - Boundary defining rotation restriction, based on delta from original rotation. - - - - - Allow rotation around the Z axis to be Free, completely Locked, or Limited according to Angular ZLimit. - - - - - If enabled, all Target values will be calculated in world space instead of the object's local space. - - - - - Boundary defining upper rotation restriction, based on delta from original rotation. - - - - - Boundary defining movement restriction, based on distance from the joint's origin. - - - - - The configuration of the spring attached to the linear limit of the joint. - - - - - Boundary defining lower rotation restriction, based on delta from original rotation. - - - - - Set the angular tolerance threshold (in degrees) for projection. - -If the joint deviates by more than this angle around its locked angular degrees of freedom, -the solver will move the bodies to close the angle. - -Setting a very small tolerance may result in simulation jitter or other artifacts. - -Sometimes it is not possible to project (for example when the joints form a cycle). - - - - - Set the linear tolerance threshold for projection. - -If the joint separates by more than this distance along its locked degrees of freedom, the solver -will move the bodies to close the distance. - -Setting a very small tolerance may result in simulation jitter or other artifacts. - -Sometimes it is not possible to project (for example when the joints form a cycle). - - - - - Brings violated constraints back into alignment even when the solver fails. Projection is not a physical process and does not preserve momentum or respect collision geometry. It is best avoided if practical, but can be useful in improving simulation quality where joint separation results in unacceptable artifacts. - - - - - Control the object's rotation with either X & YZ or Slerp Drive by itself. - - - - - The joint's secondary axis. - - - - - Definition of how the joint's rotation will behave around all local axes. Only used if Rotation Drive Mode is Slerp Only. - - - - - If enabled, the two connected rigidbodies will be swapped, as if the joint was attached to the other body. - - - - - This is a Vector3. It defines the desired angular velocity that the joint should rotate into. - - - - - The desired position that the joint should move into. - - - - - This is a Quaternion. It defines the desired rotation that the joint should rotate into. - - - - - The desired velocity that the joint should move along. - - - - - Definition of how the joint's movement will behave along its local X axis. - - - - - Allow movement along the X axis to be Free, completely Locked, or Limited according to Linear Limit. - - - - - Definition of how the joint's movement will behave along its local Y axis. - - - - - Allow movement along the Y axis to be Free, completely Locked, or Limited according to Linear Limit. - - - - - Definition of how the joint's movement will behave along its local Z axis. - - - - - Allow movement along the Z axis to be Free, completely Locked, or Limited according to Linear Limit. - - - - - Constrains movement for a ConfigurableJoint along the 6 axes. - - - - - Motion along the axis will be completely free and completely unconstrained. - - - - - Motion along the axis will be limited by the respective limit. - - - - - Motion along the axis will be locked. - - - - - The various test results the connection tester may return with. - - - - - A force applied constantly. - - - - - The force applied to the rigidbody every frame. - - - - - The force - relative to the rigid bodies coordinate system - applied every frame. - - - - - The torque - relative to the rigid bodies coordinate system - applied every frame. - - - - - The torque applied to the rigidbody every frame. - - - - - Applies both linear and angular (torque) forces continuously to the rigidbody each physics update. - - - - - The linear force applied to the rigidbody each physics update. - - - - - The linear force, relative to the rigid-body coordinate system, applied each physics update. - - - - - The torque applied to the rigidbody each physics update. - - - - - A set of parameters for filtering contact results. - - - - - Given the current state of the contact filter, determine whether it would filter anything. - - - - - Sets the contact filter to filter the results that only include Collider2D on the layers defined by the layer mask. - - - - - Sets the contact filter to filter the results to only include Collider2D with a Z coordinate (depth) less than this value. - - - - - Sets the contact filter to filter the results to only include contacts with collision normal angles that are less than this angle. - - - - - Sets the contact filter to filter the results to only include Collider2D with a Z coordinate (depth) greater than this value. - - - - - Sets the contact filter to filter the results to only include contacts with collision normal angles that are greater than this angle. - - - - - Sets the contact filter to filter the results by depth using minDepth and maxDepth. - - - - - Sets the contact filter to filter results by layer mask. - - - - - Sets the contact filter to filter the results by the collision's normal angle using minNormalAngle and maxNormalAngle. - - - - - Sets the contact filter to filter within the minDepth and maxDepth range, or outside that range. - - - - - Sets the contact filter to filter within the minNormalAngle and maxNormalAngle range, or outside that range. - - - - - Sets to filter contact results based on trigger collider involvement. - - - - - Turns off depth filtering by setting useDepth to false. The associated values of minDepth and maxDepth are not changed. - - - - - Turns off layer mask filtering by setting useLayerMask to false. The associated value of layerMask is not changed. - - - - - Turns off normal angle filtering by setting useNormalAngle to false. The associated values of minNormalAngle and maxNormalAngle are not changed. - - - - - Checks if the Transform for obj is within the depth range to be filtered. - - The GameObject used to check the z-position (depth) of Transform.position. - - Returns true when obj is excluded by the filter and false if otherwise. - - - - - Checks if the GameObject.layer for obj is included in the layerMask to be filtered. - - The GameObject used to check the GameObject.layer. - - Returns true when obj is excluded by the filter and false if otherwise. - - - - - Checks if the angle of normal is within the normal angle range to be filtered. - - The normal used to calculate an angle. - - Returns true when normal is excluded by the filter and false if otherwise. - - - - - Checks if the angle is within the normal angle range to be filtered. - - The angle used for comparison in the filter. - - Returns true when angle is excluded by the filter and false if otherwise. - - - - - Checks if the collider is a trigger and should be filtered by the useTriggers to be filtered. - - The Collider2D used to check for a trigger. - - Returns true when collider is excluded by the filter and false if otherwise. - - - - - Sets the contact filter to not filter any ContactPoint2D. - - - A copy of the contact filter set to not filter any ContactPoint2D. - - - - - Sets the minDepth and maxDepth filter properties and turns on depth filtering by setting useDepth to true. - - The value used to set minDepth. - The value used to set maxDepth. - - - - Sets the layerMask filter property using the layerMask parameter provided and also enables layer mask filtering by setting useLayerMask to true. - - The value used to set the layerMask. - - - - Sets the minNormalAngle and maxNormalAngle filter properties and turns on normal angle filtering by setting useNormalAngle to true. - - The value used to set the minNormalAngle. - The value used to set the maxNormalAngle. - - - - Describes a contact point where the collision occurs. - - - - - Normal of the contact point. - - - - - The other collider in contact at the point. - - - - - The point of contact. - - - - - The distance between the colliders at the contact point. - - - - - The first collider in contact at the point. - - - - - Details about a specific point of contact involved in a 2D physics collision. - - - - - The incoming Collider2D involved in the collision with the otherCollider. - - - - - Indicates whether the collision response or reaction is enabled or disabled. - - - - - Surface normal at the contact point. - - - - - Gets the impulse force applied at the contact point along the ContactPoint2D.normal. - - - - - The other Collider2D involved in the collision with the collider. - - - - - The other Rigidbody2D involved in the collision with the rigidbody. - - - - - The point of contact between the two colliders in world space. - - - - - Gets the relative velocity of the two colliders at the contact point (Read Only). - - - - - The incoming Rigidbody2D involved in the collision with the otherRigidbody. - - - - - Gets the distance between the colliders at the contact point. - - - - - Gets the impulse force applied at the contact point which is perpendicular to the ContactPoint2D.normal. - - - - - The ContextMenu attribute allows you to add commands to the context menu. - - - - - Adds the function to the context menu of the component. - - The name of the context menu item. - Whether this is a validate function (defaults to false). - Priority used to override the ordering of the menu items (defaults to 1000000). The lower the number the earlier in the menu it will appear. - - - - Adds the function to the context menu of the component. - - The name of the context menu item. - Whether this is a validate function (defaults to false). - Priority used to override the ordering of the menu items (defaults to 1000000). The lower the number the earlier in the menu it will appear. - - - - Adds the function to the context menu of the component. - - The name of the context menu item. - Whether this is a validate function (defaults to false). - Priority used to override the ordering of the menu items (defaults to 1000000). The lower the number the earlier in the menu it will appear. - - - - Use this attribute to add a context menu to a field that calls a named method. - - - - - The name of the function that should be called. - - - - - The name of the context menu item. - - - - - Use this attribute to add a context menu to a field that calls a named method. - - The name of the context menu item. - The name of the function that should be called. - - - - ControllerColliderHit is used by CharacterController.OnControllerColliderHit to give detailed information about the collision and how to deal with it. - - - - - The collider that was hit by the controller. - - - - - The controller that hit the collider. - - - - - The game object that was hit by the controller. - - - - - The direction the CharacterController was moving in when the collision occured. - - - - - How far the character has travelled until it hit the collider. - - - - - The normal of the surface we collided with in world space. - - - - - The impact point in world space. - - - - - The rigidbody that was hit by the controller. - - - - - The transform that was hit by the controller. - - - - - MonoBehaviour.StartCoroutine returns a Coroutine. Instances of this class are only used to reference these coroutines, and do not hold any exposed properties or functions. - - - - - Holds data for a single application crash event and provides access to all gathered crash reports. - - - - - Returns last crash report, or null if no reports are available. - - - - - Returns all currently available reports in a new array. - - - - - Crash report data as formatted text. - - - - - Time, when the crash occured. - - - - - Remove report from available reports list. - - - - - Remove all reports from available reports list. - - - - - Engine API for CrashReporting Service. - - - - - This Boolean field will cause CrashReportHandler to capture exceptions when set to true. By default enable capture exceptions is true. - - - - - The Performance Reporting service will keep a buffer of up to the last X log messages (Debug.Log, etc) to send along with crash reports. The default is 10 log messages, the max is 50. Set this to 0 to disable capture of logs with your crash reports. - - - - - Get a custom crash report metadata field that has been set. - - - - Value that was previously set for the key, or null if no value was found. - - - - - Set a custom metadata key-value pair to be included with crash reports. - - - - - - - Mark a ScriptableObject-derived type to be automatically listed in the Assets/Create submenu, so that instances of the type can be easily created and stored in the project as ".asset" files. - - - - - The default file name used by newly created instances of this type. - - - - - The display name for this type shown in the Assets/Create menu. - - - - - The position of the menu item within the Assets/Create menu. - - - - - Class for handling cube maps, Use this to create or modify existing. - - - - - The format of the pixel data in the texture (Read Only). - - - - - How many mipmap levels are in this texture (Read Only). - - - - - Actually apply all previous SetPixel and SetPixels changes. - - When set to true, mipmap levels are recalculated. - When set to true, system memory copy of a texture is released. - - - - Creates a Unity cubemap out of externally created native cubemap object. - - The width and height of each face of the cubemap should be the same. - Format of underlying cubemap object. - Does the cubemap have mipmaps? - Native cubemap texture object. - - - - - Create a new empty cubemap texture. - - Width/height of a cube face in pixels. - Pixel data format to be used for the Cubemap. - Should mipmaps be created? - - - - - - - Returns pixel color at coordinates (face, x, y). - - - - - - - - Returns pixel colors of a cubemap face. - - The face from which pixel data is taken. - Mipmap level for the chosen face. - - - - Sets pixel color at coordinates (face, x, y). - - - - - - - - - Sets pixel colors of a cubemap face. - - Pixel data for the Cubemap face. - The face to which the new data should be applied. - The mipmap level for the face. - - - - Performs smoothing of near edge regions. - - Pixel distance at edges over which to apply smoothing. - - - - Class for handling Cubemap arrays. - - - - - Number of cubemaps in the array (Read Only). - - - - - Texture format (Read Only). - - - - - Actually apply all previous SetPixels changes. - - When set to true, mipmap levels are recalculated. - When set to true, system memory copy of a texture is released. - - - - Create a new cubemap array. - - Cubemap face size in pixels. - Number of elements in the cubemap array. - Format of the pixel data. - Should mipmaps be created? - Does the texture contain non-color data (i.e. don't do any color space conversions when sampling)? Default is false. - - - - - - - Create a new cubemap array. - - Cubemap face size in pixels. - Number of elements in the cubemap array. - Format of the pixel data. - Should mipmaps be created? - Does the texture contain non-color data (i.e. don't do any color space conversions when sampling)? Default is false. - - - - - - - Returns pixel colors of a single array slice/face. - - Cubemap face to read pixels from. - Array slice to read pixels from. - Mipmap level to read pixels from. - - Array of pixel colors. - - - - - Returns pixel colors of a single array slice/face. - - Cubemap face to read pixels from. - Array slice to read pixels from. - Mipmap level to read pixels from. - - Array of pixel colors in low precision (8 bits/channel) format. - - - - - Set pixel colors for a single array slice/face. - - An array of pixel colors. - Cubemap face to set pixels for. - Array element index to set pixels for. - Mipmap level to set pixels for. - - - - Set pixel colors for a single array slice/face. - - An array of pixel colors in low precision (8 bits/channel) format. - Cubemap face to set pixels for. - Array element index to set pixels for. - Mipmap level to set pixels for. - - - - Cubemap face. - - - - - Left facing side (-x). - - - - - Downward facing side (-y). - - - - - Backward facing side (-z). - - - - - Right facing side (+x). - - - - - Upwards facing side (+y). - - - - - Forward facing side (+z). - - - - - Cubemap face is unknown or unspecified. - - - - - Describes a set of bounding spheres that should have their visibility and distances maintained. - - - - - Pauses culling group execution. - - - - - Sets the callback that will be called when a sphere's visibility and/or distance state has changed. - - - - - Locks the CullingGroup to a specific camera. - - - - - Create a CullingGroup. - - - - - Clean up all memory used by the CullingGroup immediately. - - - - - Erase a given bounding sphere by moving the final sphere on top of it. - - The index of the entry to erase. - - - - Erase a given entry in an arbitrary array by copying the final entry on top of it, then decrementing the number of entries used by one. - - The index of the entry to erase. - An array of entries. - The number of entries in the array that are actually used. - - - - Get the current distance band index of a given sphere. - - The index of the sphere. - - The sphere's current distance band index. - - - - - Returns true if the bounding sphere at index is currently visible from any of the contributing cameras. - - The index of the bounding sphere. - - True if the sphere is visible; false if it is invisible. - - - - - Retrieve the indices of spheres that have particular visibility and/or distance states. - - True if only visible spheres should be retrieved; false if only invisible spheres should be retrieved. - The distance band that retrieved spheres must be in. - An array that will be filled with the retrieved sphere indices. - The index of the sphere to begin searching at. - - The number of sphere indices found and written into the result array. - - - - - Retrieve the indices of spheres that have particular visibility and/or distance states. - - True if only visible spheres should be retrieved; false if only invisible spheres should be retrieved. - The distance band that retrieved spheres must be in. - An array that will be filled with the retrieved sphere indices. - The index of the sphere to begin searching at. - - The number of sphere indices found and written into the result array. - - - - - Retrieve the indices of spheres that have particular visibility and/or distance states. - - True if only visible spheres should be retrieved; false if only invisible spheres should be retrieved. - The distance band that retrieved spheres must be in. - An array that will be filled with the retrieved sphere indices. - The index of the sphere to begin searching at. - - The number of sphere indices found and written into the result array. - - - - - Set bounding distances for 'distance bands' the group should compute, as well as options for how spheres falling into each distance band should be treated. - - An array of bounding distances. The distances should be sorted in increasing order. - An array of CullingDistanceBehaviour settings. The array should be the same length as the array provided to the distances parameter. It can also be omitted or passed as null, in which case all distances will be given CullingDistanceBehaviour.Normal behaviour. - - - - Sets the number of bounding spheres in the bounding spheres array that are actually being used. - - The number of bounding spheres being used. - - - - Sets the array of bounding sphere definitions that the CullingGroup should compute culling for. - - The BoundingSpheres to cull. - - - - Set the reference point from which distance bands are measured. - - A fixed point to measure the distance from. - A transform to measure the distance from. The transform's position will be automatically tracked. - - - - Set the reference point from which distance bands are measured. - - A fixed point to measure the distance from. - A transform to measure the distance from. The transform's position will be automatically tracked. - - - - This delegate is used for recieving a callback when a sphere's distance or visibility state has changed. - - A CullingGroupEvent that provides information about the sphere that has changed. - - - - Provides information about the current and previous states of one sphere in a CullingGroup. - - - - - The current distance band index of the sphere, after the most recent culling pass. - - - - - Did this sphere change from being visible to being invisible in the most recent culling pass? - - - - - Did this sphere change from being invisible to being visible in the most recent culling pass? - - - - - The index of the sphere that has changed. - - - - - Was the sphere considered visible by the most recent culling pass? - - - - - The distance band index of the sphere before the most recent culling pass. - - - - - Was the sphere visible before the most recent culling pass? - - - - - Cursor API for setting the cursor (mouse pointer). - - - - - Determines whether the hardware pointer is locked to the center of the view, constrained to the window, or not constrained at all. - - - - - Determines whether the hardware pointer is visible or not. - - - - - Sets the mouse cursor to the given texture. - - - - - Specify a custom cursor that you wish to use as a cursor. - - The texture to use for the cursor. To use a texture, you must first import it with `Read/Write`enabled. Alternatively, you can use the default cursor import setting. If you created your cursor texture from code, it must be in RGBA32 format, have alphaIsTransparency enabled, and have no mip chain. To use the default cursor, set the texture to `Null`. - The offset from the top left of the texture to use as the target point (must be within the bounds of the cursor). - Allow this cursor to render as a hardware cursor on supported platforms, or force software cursor. - - - - How the cursor should behave. - - - - - Confine cursor to the game window. - - - - - Lock cursor to the center of the game window. - - - - - Cursor behavior is unmodified. - - - - - Determines whether the mouse cursor is rendered using software rendering or, on supported platforms, hardware rendering. - - - - - Use hardware cursors on supported platforms. - - - - - Force the use of software cursors. - - - - - Attribute to define the class as a grid brush and to make it available in the palette window. - - - - - If set to true, brush will replace Unity built-in brush as the default brush in palette window. - -Only one class at any one time should set defaultBrush to true. - - - - - Name of the default instance of this brush. - - - - - Hide all asset instances of this brush in the tile palette window. - - - - - Hide the default instance of brush in the tile palette window. - - - - - Attribute to define the class as a grid brush and to make it available in the palette window. - - If set to true, brush will replace Unity built-in brush as the default brush in palette window. - Name of the default instance of this brush. - Hide all asset instances of this brush in the tile palette window. - Hide the default instance of brush in the tile palette window. - - - - - Attribute to define the class as a grid brush and to make it available in the palette window. - - If set to true, brush will replace Unity built-in brush as the default brush in palette window. - Name of the default instance of this brush. - Hide all asset instances of this brush in the tile palette window. - Hide the default instance of brush in the tile palette window. - - - - - Custom Render Textures are an extension to Render Textures, enabling you to render directly to the Texture using a Shader. - - - - - Bitfield that allows to enable or disable update on each of the cubemap faces. Order from least significant bit is +X, -X, +Y, -Y, +Z, -Z. - - - - - If true, the Custom Render Texture is double buffered so that you can access it during its own update. otherwise the Custom Render Texture will be not be double buffered. - - - - - Color with which the Custom Render Texture is initialized. This parameter will be ignored if an initializationMaterial is set. - - - - - Material with which the Custom Render Texture is initialized. Initialization texture and color are ignored if this parameter is set. - - - - - Specify how the texture should be initialized. - - - - - Specify if the texture should be initialized with a Texture and a Color or a Material. - - - - - Texture with which the Custom Render Texture is initialized (multiplied by the initialization color). This parameter will be ignored if an initializationMaterial is set. - - - - - Material with which the content of the Custom Render Texture is updated. - - - - - Shader Pass used to update the Custom Render Texture. - - - - - Specify how the texture should be updated. - - - - - Space in which the update zones are expressed (Normalized or Pixel space). - - - - - If true, Update zones will wrap around the border of the Custom Render Texture. Otherwise, Update zones will be clamped at the border of the Custom Render Texture. - - - - - Clear all Update Zones. - - - - - Create a new Custom Render Texture. - - - - - - - - - Create a new Custom Render Texture. - - - - - - - - - Create a new Custom Render Texture. - - - - - - - - - Returns the list of Update Zones. - - Output list of Update Zones. - - - - Triggers an initialization of the Custom Render Texture. - - - - - Setup the list of Update Zones for the Custom Render Texture. - - - - - - Triggers the update of the Custom Render Texture. - - Number of upate pass to perform. - - - - Specify the source of a Custom Render Texture initialization. - - - - - Custom Render Texture is initalized with a Material. - - - - - Custom Render Texture is initialized by a Texture multiplied by a Color. - - - - - Frequency of update or initialization of a Custom Render Texture. - - - - - Initialization/Update will only occur when triggered by the script. - - - - - Initialization/Update will occur once at load time and then can be triggered again by script. - - - - - Initialization/Update will occur at every frame. - - - - - Structure describing an Update Zone. - - - - - If true, and if the texture is double buffered, a request is made to swap the buffers before the next update. Otherwise, the buffers will not be swapped. - - - - - Shader Pass used to update the Custom Render Texture for this Update Zone. - - - - - Rotation of the Update Zone. - - - - - Position of the center of the Update Zone within the Custom Render Texture. - - - - - Size of the Update Zone. - - - - - Space in which coordinates are provided for Update Zones. - - - - - Coordinates are normalized. (0, 0) is top left and (1, 1) is bottom right. - - - - - Coordinates are expressed in pixels. (0, 0) is top left (width, height) is bottom right. - - - - - Base class for custom yield instructions to suspend coroutines. - - - - - Indicates if coroutine should be kept suspended. - - - - - Class containing methods to ease debugging while developing a game. - - - - - Reports whether the development console is visible. The development console cannot be made to appear using: - - - - - In the Build Settings dialog there is a check box called "Development Build". - - - - - Get default debug logger. - - - - - Assert a condition and logs an error message to the Unity console on failure. - - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. - - - - Assert a condition and logs an error message to the Unity console on failure. - - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. - - - - Assert a condition and logs an error message to the Unity console on failure. - - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. - - - - Assert a condition and logs an error message to the Unity console on failure. - - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. - - - - Assert a condition and logs a formatted error message to the Unity console on failure. - - Condition you expect to be true. - A composite format string. - Format arguments. - Object to which the message applies. - - - - Assert a condition and logs a formatted error message to the Unity console on failure. - - Condition you expect to be true. - A composite format string. - Format arguments. - Object to which the message applies. - - - - Pauses the editor. - - - - - Clears errors from the developer console. - - - - - Draws a line between specified start and end points. - - Point in world space where the line should start. - Point in world space where the line should end. - Color of the line. - How long the line should be visible for. - Should the line be obscured by objects closer to the camera? - - - - Draws a line between specified start and end points. - - Point in world space where the line should start. - Point in world space where the line should end. - Color of the line. - How long the line should be visible for. - Should the line be obscured by objects closer to the camera? - - - - Draws a line between specified start and end points. - - Point in world space where the line should start. - Point in world space where the line should end. - Color of the line. - How long the line should be visible for. - Should the line be obscured by objects closer to the camera? - - - - Draws a line between specified start and end points. - - Point in world space where the line should start. - Point in world space where the line should end. - Color of the line. - How long the line should be visible for. - Should the line be obscured by objects closer to the camera? - - - - Draws a line from start to start + dir in world coordinates. - - Point in world space where the ray should start. - Direction and length of the ray. - Color of the drawn line. - How long the line will be visible for (in seconds). - Should the line be obscured by other objects closer to the camera? - - - - Draws a line from start to start + dir in world coordinates. - - Point in world space where the ray should start. - Direction and length of the ray. - Color of the drawn line. - How long the line will be visible for (in seconds). - Should the line be obscured by other objects closer to the camera? - - - - Draws a line from start to start + dir in world coordinates. - - Point in world space where the ray should start. - Direction and length of the ray. - Color of the drawn line. - How long the line will be visible for (in seconds). - Should the line be obscured by other objects closer to the camera? - - - - Draws a line from start to start + dir in world coordinates. - - Point in world space where the ray should start. - Direction and length of the ray. - Color of the drawn line. - How long the line will be visible for (in seconds). - Should the line be obscured by other objects closer to the camera? - - - - Log a message to the Unity Console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Log a message to the Unity Console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Debug.Log that logs an assertion message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Debug.Log that logs an assertion message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs a formatted assertion message to the Unity console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - Logs a formatted assertion message to the Unity console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - A variant of Debug.Log that logs an error message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Debug.Log that logs an error message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs a formatted error message to the Unity console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - Logs a formatted error message to the Unity console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - A variant of Debug.Log that logs an error message to the console. - - Object to which the message applies. - Runtime Exception. - - - - A variant of Debug.Log that logs an error message to the console. - - Object to which the message applies. - Runtime Exception. - - - - Logs a formatted message to the Unity Console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - Logs a formatted message to the Unity Console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - A variant of Debug.Log that logs a warning message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Debug.Log that logs a warning message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs a formatted warning message to the Unity Console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - Logs a formatted warning message to the Unity Console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - Attribute used to make a float, int, or string variable in a script be delayed. - - - - - Attribute used to make a float, int, or string variable in a script be delayed. - - - - - Depth texture generation mode for Camera. - - - - - Generate a depth texture. - - - - - Generate a depth + normals texture. - - - - - Specifies whether motion vectors should be rendered (if possible). - - - - - Do not generate depth texture (Default). - - - - - Detail prototype used by the Terrain GameObject. - - - - - Bend factor of the detailPrototype. - - - - - Color when the DetailPrototypes are "dry". - - - - - Color when the DetailPrototypes are "healthy". - - - - - Maximum height of the grass billboards (if render mode is GrassBillboard). - - - - - Maximum width of the grass billboards (if render mode is GrassBillboard). - - - - - Minimum height of the grass billboards (if render mode is GrassBillboard). - - - - - Minimum width of the grass billboards (if render mode is GrassBillboard). - - - - - How spread out is the noise for the DetailPrototype. - - - - - GameObject used by the DetailPrototype. - - - - - Texture used by the DetailPrototype. - - - - - Render mode for the DetailPrototype. - - - - - Render mode for detail prototypes. - - - - - The detail prototype will use the grass shader. - - - - - The detail prototype will be rendered as billboards that are always facing the camera. - - - - - Will show the prototype using diffuse shading. - - - - - Describes physical orientation of the device as determined by the OS. - - - - - The device is held parallel to the ground with the screen facing downwards. - - - - - The device is held parallel to the ground with the screen facing upwards. - - - - - The device is in landscape mode, with the device held upright and the home button on the right side. - - - - - The device is in landscape mode, with the device held upright and the home button on the left side. - - - - - The device is in portrait mode, with the device held upright and the home button at the bottom. - - - - - The device is in portrait mode but upside down, with the device held upright and the home button at the top. - - - - - The orientation of the device cannot be determined. - - - - - Enumeration for SystemInfo.deviceType, denotes a coarse grouping of kinds of devices. - - - - - A stationary gaming console. - - - - - Desktop or laptop computer. - - - - - A handheld device like mobile phone or a tablet. - - - - - Device type is unknown. You should never see this in practice. - - - - - Specifies the category of crash to cause when calling ForceCrash(). - - - - - Cause a crash by calling the abort() function. - - - - - Cause a crash by performing an invalid memory access. - -The invalid memory access is performed on each platform as follows: - - - - - Cause a crash using Unity's native fatal error implementation. - - - - - Cause a crash by calling a pure virtual function to raise an exception. - - - - - A utility class that you can use for diagnostic purposes. - - - - - Manually causes an application crash in the specified category. - - - - - - Manually causes an assert that outputs the specified message to the log and registers an error. - - - - - - Manually causes a native error that outputs the specified message to the log and registers an error. - - - - - - Manually causes a warning that outputs the specified message to the log and registers an error. - - - - - - Prevents MonoBehaviour of same type (or subtype) to be added more than once to a GameObject. - - - - - Provides access to a display / screen for rendering operations. - - - - - Gets the state of the display and returns true if the display is active and false if otherwise. - - - - - Color RenderBuffer. - - - - - Depth RenderBuffer. - - - - - The list of currently connected Displays. Contains at least one (main) display. - - - - - Main Display. - - - - - Vertical resolution that the display is rendering at. - - - - - Horizontal resolution that the display is rendering at. - - - - - Vertical native display resolution. - - - - - Horizontal native display resolution. - - - - - Activate an external display. Eg. Secondary Monitors connected to the System. - - - - - This overloaded function available for Windows allows specifying desired Window Width, Height and Refresh Rate. - - Desired Width of the Window (for Windows only. On Linux and Mac uses Screen Width). - Desired Height of the Window (for Windows only. On Linux and Mac uses Screen Height). - Desired Refresh Rate. - - - - Query relative mouse coordinates. - - Mouse Input Position as Coordinates. - - - - Set rendering size and position on screen (Windows only). - - Change Window Width (Windows Only). - Change Window Height (Windows Only). - Change Window Position X (Windows Only). - Change Window Position Y (Windows Only). - - - - Sets rendering resolution for the display. - - Rendering width in pixels. - Rendering height in pixels. - - - - Joint that keeps two Rigidbody2D objects a fixed distance apart. - - - - - Should the distance be calculated automatically? - - - - - The distance separating the two ends of the joint. - - - - - Whether to maintain a maximum distance only or not. If not then the absolute distance will be maintained instead. - - - - - A component can be designed to drive a RectTransform. The DrivenRectTransformTracker struct is used to specify which RectTransforms it is driving. - - - - - Add a RectTransform to be driven. - - The object to drive properties. - The RectTransform to be driven. - The properties to be driven. - - - - Clear the list of RectTransforms being driven. - - - - - Resume recording undo of driven RectTransforms. - - - - - Stop recording undo actions from driven RectTransforms. - - - - - An enumeration of transform properties that can be driven on a RectTransform by an object. - - - - - Selects all driven properties. - - - - - Selects driven property RectTransform.anchoredPosition. - - - - - Selects driven property RectTransform.anchoredPosition3D. - - - - - Selects driven property RectTransform.anchoredPosition.x. - - - - - Selects driven property RectTransform.anchoredPosition.y. - - - - - Selects driven property RectTransform.anchoredPosition3D.z. - - - - - Selects driven property combining AnchorMaxX and AnchorMaxY. - - - - - Selects driven property RectTransform.anchorMax.x. - - - - - Selects driven property RectTransform.anchorMax.y. - - - - - Selects driven property combining AnchorMinX and AnchorMinY. - - - - - Selects driven property RectTransform.anchorMin.x. - - - - - Selects driven property RectTransform.anchorMin.y. - - - - - Selects driven property combining AnchorMinX, AnchorMinY, AnchorMaxX and AnchorMaxY. - - - - - Deselects all driven properties. - - - - - Selects driven property combining PivotX and PivotY. - - - - - Selects driven property RectTransform.pivot.x. - - - - - Selects driven property RectTransform.pivot.y. - - - - - Selects driven property Transform.localRotation. - - - - - Selects driven property combining ScaleX, ScaleY && ScaleZ. - - - - - Selects driven property Transform.localScale.x. - - - - - Selects driven property Transform.localScale.y. - - - - - Selects driven property Transform.localScale.z. - - - - - Selects driven property combining SizeDeltaX and SizeDeltaY. - - - - - Selects driven property RectTransform.sizeDelta.x. - - - - - Selects driven property RectTransform.sizeDelta.y. - - - - - Status of the menu item. - - - - - The item is displayed with a checkmark. - - - - - The item is disabled and is not be selectable by the user. - - - - - The item is not displayed. - - - - - The item is displayed normally. - - - - - Describe the unit of a duration. - - - - - A fixed duration is a duration expressed in seconds. - - - - - A normalized duration is a duration expressed in percentage. - - - - - Allows to control the dynamic Global Illumination. - - - - - Allows for scaling the contribution coming from realtime & baked lightmaps. - -Note: this value can be set in the Lighting Window UI and it is serialized, that is not the case for other properties in this class. - - - - - Is precomputed realtime Global Illumination output converged? - - - - - The number of milliseconds that can be spent on material updates. - - - - - When enabled, new dynamic Global Illumination output is shown in each frame. - - - - - Threshold for limiting updates of realtime GI. The unit of measurement is "percentage intensity change". - - - - - Allows to set an emissive color for a given renderer quickly, without the need to render the emissive input for the entire system. - - The Renderer that should get a new color. - The emissive Color. - - - - Allows overriding the distant environment lighting for Realtime GI, without changing the Skybox Material. - - Array of float values to be used for Realtime GI environment lighting. - - - - Schedules an update of the environment texture. - - - - - Schedules an update of the albedo and emissive textures of a system that contains the renderer or the terrain. - - The Renderer to use when searching for a system to update. - The Terrain to use when searching for systems to update. - - - - Schedules an update of the albedo and emissive textures of a system that contains the renderer or the terrain. - - The Renderer to use when searching for a system to update. - The Terrain to use when searching for systems to update. - - - - Schedules an update of the albedo and emissive textures of a system that contains the renderer or the terrain. - - The Renderer to use when searching for a system to update. - The Terrain to use when searching for systems to update. - - - - Collider for 2D physics representing an arbitrary set of connected edges (lines) defined by its vertices. - - - - - Gets the number of edges. - - - - - Controls the radius of all edges created by the collider. - - - - - Gets the number of points. - - - - - Get or set the points defining multiple continuous edges. - - - - - Reset to a single edge consisting of two points. - - - - - A base class for all 2D effectors. - - - - - The mask used to select specific layers allowed to interact with the effector. - - - - - Should the collider-mask be used or the global collision matrix? - - - - - The mode used to apply Effector2D forces. - - - - - The force is applied at a constant rate. - - - - - The force is applied inverse-linear relative to a point. - - - - - The force is applied inverse-squared relative to a point. - - - - - Selects the source and/or target to be used by an Effector2D. - - - - - The source/target is defined by the Collider2D. - - - - - The source/target is defined by the Rigidbody2D. - - - - - A UnityGUI event. - - - - - Is Alt/Option key held down? (Read Only) - - - - - Which mouse button was pressed. - - - - - Is Caps Lock on? (Read Only) - - - - - The character typed. - - - - - How many consecutive mouse clicks have we received. - - - - - Is Command/Windows key held down? (Read Only) - - - - - The name of an ExecuteCommand or ValidateCommand Event. - - - - - Is Control key held down? (Read Only) - - - - - The current event that's being processed right now. - - - - - The relative movement of the mouse compared to last event. - - - - - Index of display that the event belongs to. - - - - - Is the current keypress a function key? (Read Only) - - - - - Is this event a keyboard event? (Read Only) - - - - - Is this event a mouse event? (Read Only) - - - - - The raw key code for keyboard events. - - - - - Which modifier keys are held down. - - - - - The mouse position. - - - - - Is the current keypress on the numeric keyboard? (Read Only) - - - - - Is Shift held down? (Read Only) - - - - - The type of event. - - - - - Returns the current number of events that are stored in the event queue. - - - Current number of events currently in the event queue. - - - - - Get a filtered event type for a given control ID. - - The ID of the control you are querying from. - - - - Create a keyboard event. - - - - - - Get the next queued [Event] from the event system. - - Next Event. - - - - Use this event. - - - - - Types of modifier key that can be active during a keystroke event. - - - - - Alt key. - - - - - Caps lock key. - - - - - Command key (Mac). - - - - - Control key. - - - - - Function key. - - - - - No modifier key pressed during a keystroke event. - - - - - Num lock key. - - - - - Shift key. - - - - - THe mode that a listener is operating in. - - - - - The listener will bind to one argument bool functions. - - - - - The listener will use the function binding specified by the even. - - - - - The listener will bind to one argument float functions. - - - - - The listener will bind to one argument int functions. - - - - - The listener will bind to one argument Object functions. - - - - - The listener will bind to one argument string functions. - - - - - The listener will bind to zero argument functions. - - - - - Zero argument delegate used by UnityEvents. - - - - - One argument delegate used by UnityEvents. - - - - - - Two argument delegate used by UnityEvents. - - - - - - - Three argument delegate used by UnityEvents. - - - - - - - - Four argument delegate used by UnityEvents. - - - - - - - - - A zero argument persistent callback that can be saved with the Scene. - - - - - Add a non persistent listener to the UnityEvent. - - Callback function. - - - - Constructor. - - - - - Invoke all registered callbacks (runtime and persistent). - - - - - Remove a non persistent listener from the UnityEvent. - - Callback function. - - - - One argument version of UnityEvent. - - - - - Two argument version of UnityEvent. - - - - - Three argument version of UnityEvent. - - - - - Four argument version of UnityEvent. - - - - - Abstract base class for UnityEvents. - - - - - Get the number of registered persistent listeners. - - - - - Get the target method name of the listener at index index. - - Index of the listener to query. - - - - Get the target component of the listener at index index. - - Index of the listener to query. - - - - Given an object, function name, and a list of argument types; find the method that matches. - - Object to search for the method. - Function name to search for. - Argument types for the function. - - - - Remove all non-persisent (ie created from script) listeners from the event. - - - - - Modify the execution state of a persistent listener. - - Index of the listener to query. - State to set. - - - - Controls the scope of UnityEvent callbacks. - - - - - Callback is always issued. - - - - - Callback is not issued. - - - - - Callback is only issued in the Runtime and Editor playmode. - - - - - Types of UnityGUI input and processing events. - - - - - An event that is called when the mouse is clicked. - - - - - An event that is called when the mouse is clicked and dragged. - - - - - An event that is called when the mouse is no longer being clicked. - - - - - User has right-clicked (or control-clicked on the mac). - - - - - Editor only: drag & drop operation exited. - - - - - Editor only: drag & drop operation performed. - - - - - Editor only: drag & drop operation updated. - - - - - Execute a special command (eg. copy & paste). - - - - - Event should be ignored. - - - - - A keyboard key was pressed. - - - - - A keyboard key was released. - - - - - A layout event. - - - - - Mouse button was pressed. - - - - - Mouse was dragged. - - - - - Mouse entered a window (Editor views only). - - - - - Mouse left a window (Editor views only). - - - - - Mouse was moved (Editor views only). - - - - - Mouse button was released. - - - - - A repaint event. One is sent every frame. - - - - - The scroll wheel was moved. - - - - - Already processed event. - - - - - Validates a special command (e.g. copy & paste). - - - - - Add this attribute to a class to prevent the class and its inherited classes from being created with ObjectFactory methods. - - - - - Default constructor. - - - - - Add this attribute to a class to prevent creating a Preset from the instances of the class. - - - - - Makes instances of a script always execute, both as part of Play Mode and when editing. - - - - - Makes all instances of a script execute in Edit Mode. - - - - - An exception that will prevent all subsequent immediate mode GUI functions from evaluating for the remainder of the GUI loop. - - - - - A world position that is guaranteed to be on the surface of the NavMesh. - - - - - Unique identifier for the node in the NavMesh to which the world position has been mapped. - - - - - A world position that sits precisely on the surface of the NavMesh or along its links. - - - - - The types of nodes in the navigation data. - - - - - Type of node in the NavMesh representing one surface polygon. - - - - - Type of node in the NavMesh representing a point-to-point connection between two positions on the NavMesh surface. - - - - - Object used for doing navigation operations in a NavMeshWorld. - - - - - Initiates a pathfinding operation between two locations on the NavMesh. - - Array of custom cost values for all of the 32 possible area types. Each value must be at least 1.0f. This parameter is optional and defaults to the area costs configured in the project settings. See Also: NavMesh.GetAreaCost. - Bitmask with values of 1 set at the indices for areas that can be traversed, and values of 0 for areas that are not traversable. This parameter is optional and defaults to NavMesh.AllAreas, if omitted. See Also:. - The start location on the NavMesh for the path. - The location on the NavMesh where the path ends. - - InProgress if the operation was successful and the query is ready to search for a path. - -Failure if the query's NavMeshWorld or any of the received parameters are no longer valid. - - - - - Returns a valid NavMeshLocation for a position and a polygon provided by the user. - - World position of the NavMeshLocation to be created. - Valid identifier for the NavMesh node. - - Object containing the desired position and NavMesh node. - - - - - Creates the NavMeshQuery object and allocates memory to store NavMesh node information, if required. - - NavMeshWorld object used as an entry point to the collection of NavMesh objects. This object that can be used by query operations. - Label indicating the desired life time of the object. (Known issue: Currently allocator has no effect). - The number of nodes that can be temporarily stored in the query during search operations. This value defaults to 0 if no other value is specified. - - - - Destroys the NavMeshQuery and deallocates all memory used by it. - - - - - Obtains the number of nodes in the path that has been computed during a successful NavMeshQuery.UpdateFindPath operation. - - A reference to an int which will be set to the number of NavMesh nodes in the found path. - - Success when the number of nodes in the path was retrieved correctly. - -PartialPath when a path was found but it falls short of the desired end location. - -Failure when the path size can not be evaluated because the preceding call to UpdateFindPath was not successful. - - - - - Returns the identifier of the agent type the NavMesh was baked for or for which the link has been configured. - - Identifier of a node from a NavMesh surface or link. - - Agent type identifier. - - - - - Copies into the provided array the list of NavMesh nodes that form the path found by the NavMeshQuery operation. - - Data array to be filled with the sequence of NavMesh nodes that comprises the found path. - - Number of path nodes successfully copied into the provided array. - - - - - Returns whether the NavMesh node is a polygon or a link. - - Identifier of a node from a NavMesh surface or link. - - Ground when the node is a polygon on a NavMesh surface. - -OffMeshConnection when the node is a. - - - - - Obtains the end points of the line segment common to two adjacent NavMesh nodes. - - First NavMesh node. - Second NavMesh node. - One of the world points for the resulting separation edge which must be passed through when traversing between the two specified nodes. This point is the left side of the edge when traversing from the first node to the second. - One of the world points for the resulting separation edge which must be passed through when traversing between the two specified nodes. This point is the right side of the edge when traversing from the first node to the second. - - True if a connection exists between the two NavMesh nodes. -False if no connection exists between the two NavMesh nodes. - - - - - Returns true if the node referenced by the specified PolygonId is active in the NavMesh. - - Identifier of the NavMesh node to be checked. - - - - Returns true if the node referenced by the PolygonId contained in the NavMeshLocation is active in the NavMesh. - - Location on the NavMesh to be checked. Same as checking location.polygon directly. - - - - Finds the closest point and PolygonId on the NavMesh for a given world position. - - World position for which the closest point on the NavMesh needs to be found. - Maximum distance, from the specified position, expanding along all three axes, within which NavMesh surfaces are searched. - Identifier for the agent type whose NavMesh surfaces should be selected for this operation. The Humanoid agent type exists for all NavMeshes and has an ID of 0. Other agent types can be defined manually through the Editor. A separate NavMesh surface needs to be baked for each agent type. - Bitmask used to represent areas of the NavMesh that should (value of 1) or shouldn't (values of 0) be sampled. This parameter is optional and defaults to NavMesh.AllAreas if unspecified. See Also:. - - An object with position and valid PolygonId - when a point on the NavMesh has been found. - -An invalid object - when no NavMesh surface with the desired features has been found within the search area. See Also: NavMeshQuery.IsValid. - - - - - Translates a NavMesh location to another position without losing contact with the surface. - - Position to be moved across the NavMesh surface. - World position you require the agent to move to. - Bitmask with values of 1 set at the indices corresponding to areas that can be traversed, and with values of 0 for areas that should not be traversed. This parameter can be omitted, in which case it defaults to NavMesh.AllAreas. See Also:. - - A new location on the NavMesh placed as closely as possible to the specified target position. - -The start location is returned when that start is inside an area which is not allowed by the areaMask. - - - - - Translates a series of NavMesh locations to other positions without losing contact with the surface. - - Array of positions to be moved across the NavMesh surface. At the end of the method call this array contains the resulting locations. - World positions to be used as movement targets by the agent. - Filters for the areas which can be traversed during the movement to each of the locations. - - - - Translates a series of NavMesh locations to other positions without losing contact with the surface, given one common area filter for all of them. - - Array of positions to be moved across the NavMesh surface. At the end of the method call this array contains the resulting locations. - World positions you want the agent to reach when moving to each of the locations. - Filters for the areas which can be traversed during the movement to each of the locations. - - - - Returns the transformation matrix of the NavMesh surface that contains the specified NavMesh node (Read Only). - - NavMesh node for which its owner's transform must be determined. - - Transformation matrix for the surface owning the specified polygon. - -Matrix4x4.identity when the NavMesh node is a. - - - - - Returns the inverse transformation matrix of the NavMesh surface that contains the specified NavMesh node (Read Only). - - NavMesh node for which its owner's inverse transform must be determined. - - Inverse transformation matrix of the surface owning the specified polygon. - -Matrix4x4.identity when the NavMesh node is a. - - - - - Trace a line between two points on the NavMesh. - - Holds the properties of the raycast resulting location. - The start location of the ray on the NavMesh. start.polygon must be of the type NavMeshPolyTypes.Ground. - The desired end of the ray, in world coordinates. - Bitmask that correlates index positions with area types. The index goes from 0 to 31. In each relevant index position, you have to set the value to either 1 or 0. 1 indicates area types that the ray can pass through. 0 indicates area types that block the ray. This parameter is optional. If you leave out this parameter, it defaults to NavMesh.AllAreas. To learn more, see:. - Array of custom cost values for all of the 32 possible area types. They act as multipliers to the distance reported by the ray when crossing various areas. This parameter is optional. If you omit it, it defaults to the area costs that you configured in the Project settings. To learn more, see NavMesh.GetAreaCost. - - Success if the ray can be correctly traced using the provided arguments. - -Failure if the start location is not valid in the query's NavMeshWorld, or if it is inside an area not permitted by the areaMask argument, or when it is on a. - - - - - Trace a line between two points on the NavMesh, and return the list of polygons through which it passed. - - Holds the properties of the raycast resulting location. - A buffer that will be filled with the sequence of polygons through which the ray passes. - The reported number of polygons through which the ray has passed, all stored in the path buffer. It will not be greater than path.Length. - The start location of the ray on the NavMesh. start.polygon must be of the type NavMeshPolyTypes.Ground. - The desired end of the ray, in world coordinates. - A bitfield that specifies which NavMesh areas can be traversed when the ray is traced. This parameter is optional. If you do not fill out this parameter, it defaults to NavMesh.AllAreas. - Cost multipliers that affect the distance reported by the ray over different area types. This parameter is optional. If you omit it, it defaults to the area costs that you configured in the Project settings. - - Success if the ray can be correctly traced using the provided arguments. - -Failure if the start location is not valid in the query's NavMeshWorld, or if it is inside an area not permitted by the areaMask argument, or when it is on a. - -BufferTooSmall is part of the returned flags when the provided path buffer is not large enough to hold all the polygons that the ray passed through. - - - - - Continues a path search that is in progress. - - Maximum number of nodes to be traversed by the search algorithm during this call. - Outputs the actual number of nodes that have been traversed during this call. - - InProgress if the search needs to continue further by calling UpdateFindPath again. - -Success if the search is completed and a path has been found or not. - -Failure if the search for the desired position could not be completed because the NavMesh has changed significantly since the search was initiated. - -Additionally the returned value can contain the OutOfNodes flag when the pathNodePoolSize parameter for the NavMeshQuery initialization was not large enough to accommodate the search space. - - - - - Assembles together a collection of NavMesh surfaces and links that are used as a whole for performing navigation operations. - - - - - Tells the NavMesh world to halt any changes until the specified job is completed. - - The job that needs to be completed before the NavMesh world can be modified in any way. - - - - Returns a reference to the single NavMeshWorld that can currently exist and be used in Unity. - - - - - Returns true if the NavMeshWorld has been properly initialized. - - - - - Bit flags representing the resulting state of NavMeshQuery operations. - - - - - The node buffer of the query was too small to store all results. - - - - - The operation has failed. - - - - - The operation is in progress. - - - - - A parameter did not contain valid information, useful for carring out the NavMesh query. - - - - - Operation ran out of memory. - - - - - Query ran out of node stack space during a search. - - - - - Query did not reach the end location, returning best guess. - - - - - Bitmask that has 0 set for the Success, Failure and InProgress bits and 1 set for all the other flags. - - - - - The operation was successful. - - - - - Data in the NavMesh cannot be recognized and used. - - - - - Data in the NavMesh world has a wrong version. - - - - - Represents a compact identifier for the data of a NavMesh node. - - - - - Returns true if two PolygonId objects refer to the same NavMesh node. - - - - - - - Returns true if two PolygonId objects refer to the same NavMesh node. - - - - - - - Returns the hash code for use in collections. - - - - - Returns true if the PolygonId has been created empty and has never pointed to any node in the NavMesh. - - - - - Returns true if two PolygonId objects refer to the same NavMesh node or if they are both null. - - - - - - - Returns true if two PolygonId objects refer to different NavMesh nodes or if only one of them is null. - - - - - - - The humanoid stream of animation data passed from one Playable to another. - - - - - The position of the body center of mass relative to the root. - - - - - The rotation of the body center of mass relative to the root. - - - - - The position of the body center of mass in world space. - - - - - The rotation of the body center of mass in world space. - - - - - The scale of the Avatar. (Read Only) - - - - - Returns true if the stream is valid; false otherwise. (Read Only) - - - - - The left foot height from the floor. (Read Only) - - - - - The left foot velocity from the last evaluated frame. (Read Only) - - - - - The right foot height from the floor. (Read Only) - - - - - The right foot velocity from the last evaluated frame. (Read Only) - - - - - Returns the position of this IK goal relative to the root. - - The AvatarIKGoal that is queried. - - The position of this IK goal. - - - - - Returns the rotation of this IK goal relative to the root. - - The AvatarIKGoal that is queried. - - The rotation of this IK goal. - - - - - Returns the position of this IK goal in world space. - - The AvatarIKGoal that is queried. - - The position of this IK goal. - - - - - Returns the position of this IK goal in world space computed from the stream current pose. - - The AvatarIKGoal that is queried. - - The position of this IK goal. - - - - - Returns the rotation of this IK goal in world space. - - The AvatarIKGoal that is queried. - - The rotation of this IK goal. - - - - - Returns the rotation of this IK goal in world space computed from the stream current pose. - - The AvatarIKGoal that is queried. - - The rotation of this IK goal. - - - - - Returns the position weight of the IK goal. - - The AvatarIKGoal that is queried. - - The position weight of the IK goal. - - - - - Returns the rotation weight of the IK goal. - - The AvatarIKGoal that is queried. - - The rotation weight of the IK goal. - - - - - Returns the position of this IK Hint in world space. - - The AvatarIKHint that is queried. - - The position of this IK Hint. - - - - - Returns the position weight of the IK Hint. - - The AvatarIKHint that is queried. - - The position weight of the IK Hint. - - - - - Returns the muscle value. - - The Muscle that is queried. - - The muscle value. - - - - - Reset the current pose to the stance pose (T Pose). - - - - - Sets the position of this IK goal relative to the root. - - The AvatarIKGoal that is queried. - The position of this IK goal. - - - - Sets the rotation of this IK goal relative to the root. - - The AvatarIKGoal that is queried. - The rotation of this IK goal. - - - - Sets the position of this IK goal in world space. - - The AvatarIKGoal that is queried. - The position of this IK goal. - - - - Sets the rotation of this IK goal in world space. - - The AvatarIKGoal that is queried. - The rotation of this IK goal. - - - - Sets the position weight of the IK goal. - - The AvatarIKGoal that is queried. - The position weight of the IK goal. - - - - Sets the rotation weight of the IK goal. - - The AvatarIKGoal that is queried. - The rotation weight of the IK goal. - - - - Sets the position of this IK hint in world space. - - The AvatarIKHint that is queried. - The position of this IK hint. - - - - Sets the position weight of the IK Hint. - - The AvatarIKHint that is queried. - The position weight of the IK Hint. - - - - Sets the LookAt body weight. - - The LookAt body weight. - - - - Sets the LookAt clamp weight. - - The LookAt clamp weight. - - - - Sets the LookAt eyes weight. - - The LookAt eyes weight. - - - - Sets the LookAt head weight. - - The LookAt head weight. - - - - Sets the look at position in world space. - - The look at position. - - - - Sets the muscle value. - - The Muscle that is queried. - The muscle value. - - - - Execute the IK solver. - - - - - A Playable that can run a custom, multi-threaded animation job. - - - - - Creates an AnimationScriptPlayable in the PlayableGraph. - - The PlayableGraph object that will own the AnimationScriptPlayable. - The IAnimationJob to execute when processing the playable. - The number of inputs on the playable. - - - A new AnimationScriptPlayable linked to the PlayableGraph. - - - - - Gets the job data contained in the playable. - - - Returns the IAnimationJob data contained in the playable. - - - - - Returns whether the playable inputs will be processed or not. - - - true if the inputs will be processed; false otherwise. - - - - - Sets a new job data in the playable. - - The new IAnimationJob data to set in the playable. - - - - Sets the new value for processing the inputs or not. - - The new value for processing the inputs or not. - - - - The stream of animation data passed from one Playable to another. - - - - - Gets or sets the avatar angular velocity for the evaluated frame. - - - - - Gets the delta time for the evaluated frame. (Read Only) - - - - - Gets the number of input streams. (Read Only) - - - - - Returns true if the stream is from a humanoid avatar; false otherwise. (Read Only) - - - - - Returns true if the stream is valid; false otherwise. (Read Only) - - - - - Gets the root motion position for the evaluated frame. (Read Only) - - - - - Gets the root motion rotation for the evaluated frame. (Read Only) - - - - - Gets or sets the avatar velocity for the evaluated frame. - - - - - Gets the same stream, but as an AnimationHumanStream. - - - Returns the same stream, but as an AnimationHumanStream. - - - - - Gets the AnimationStream of the playable input at index. - - The input index. - - Returns the AnimationStream of the playable input at index. Returns an invalid stream if the input is not an animation Playable. - - - - - Static class providing extension methods for Animator and the animation C# jobs. - - - - - Create a PropertySceneHandle representing the new binding on the Component property of a Transform in the Scene. - - The Animator instance the method is called on. - The Transform to target. - The Component type. - The property to bind. - isObjectReference need to be set to true if the property to bind does access an Object like SpriteRenderer.sprite. - - The PropertySceneHandle representing the new binding. - - - - - Create a PropertySceneHandle representing the new binding on the Component property of a Transform in the Scene. - - The Animator instance the method is called on. - The Transform to target. - The Component type. - The property to bind. - isObjectReference need to be set to true if the property to bind does access an Object like SpriteRenderer.sprite. - - The PropertySceneHandle representing the new binding. - - - - - Create a TransformSceneHandle representing the new binding between the Animator and a Transform in the Scene. - - The Animator instance the method is called on. - The Transform to bind. - - The TransformSceneHandle representing the new binding. - - - - - Create a PropertyStreamHandle representing the new binding on the Component property of a Transform already bound to the Animator. - - The Animator instance the method is called on. - The Transform to target. - The Component type. - The property to bind. - isObjectReference need to be set to true if the property to bind does animate an Object like SpriteRenderer.sprite. - - The PropertyStreamHandle representing the new binding. - - - - - Create a PropertyStreamHandle representing the new binding on the Component property of a Transform already bound to the Animator. - - The Animator instance the method is called on. - The Transform to target. - The Component type. - The property to bind. - isObjectReference need to be set to true if the property to bind does animate an Object like SpriteRenderer.sprite. - - The PropertyStreamHandle representing the new binding. - - - - - Create a TransformStreamHandle representing the new binding between the Animator and a Transform already bound to the Animator. - - The Animator instance the method is called on. - The Transform to bind. - - The TransformStreamHandle representing the new binding. - - - - - Close a stream that has been opened using OpenAnimationStream. - - The Animator instance the method is called on. - The stream to close. - - - - Open a new stream on the Animator. - - The Animator instance the method is called on. - The new stream. - - Whether or not the stream have been opened. - - - - - Newly created handles are always resolved lazily on the next access when the jobs are run. To avoid a cpu spike while evaluating the jobs you can manually resolve all handles from the main thread. - - The Animator instance the method is called on. - - - - Newly created handles are always resolved lazily on the next access when the jobs are run. To avoid a cpu spike while evaluating the jobs you can manually resolve all handles from the main thread. - - The Animator instance the method is called on. - - - - The interface defining an animation job to use with an IAnimationJobPlayable. - - - - - Defines what to do when processing the animation. - - The animation stream to work on. - - - - Defines what to do when processing the root motion. - - The animation stream to work on. - - - - The interface defining an animation playable that uses IAnimationJob. - - - - - Gets the job data contained in the playable. - - - Returns the IAnimationJob data contained in the playable. - - - - - Sets a new job data in the playable. - - The new IAnimationJob data to set in the playable. - - - - Handle for a muscle in the AnimationHumanStream. - - - - - The muscle human sub-part. (Read Only) - - - - - The muscle human part. (Read Only) - - - - - The total number of DoF parts in a humanoid. (Read Only) - - - - - The name of the muscle. (Read Only) - - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - Fills the array with all the possible muscle handles on a humanoid. - - An array of MuscleHandle. - - - - Handle for a Component property on an object in the Scene. - - - - - Gets the boolean property value from an object in the Scene. - - The AnimationStream managing this handle. - - The boolean property value. - - - - - Gets the float property value from an object in the Scene. - - The AnimationStream managing this handle. - - The float property value. - - - - - Gets the integer property value from an object in the Scene. - - The AnimationStream managing this handle. - - The integer property value. - - - - - Returns whether or not the handle is resolved. - - The AnimationStream managing this handle. - - Returns true if the handle is resolved, false otherwise. - - - - - Returns whether or not the handle is valid. - - The AnimationStream managing this handle. - - Whether or not the handle is valid. - - - - - Resolves the handle. - - The AnimationStream managing this handle. - - - - Sets the boolean property value to an object in the Scene. - - The AnimationStream managing this handle. - The new boolean property value. - - - - Sets the float property value to an object in the Scene. - - The AnimationStream managing this handle. - The new float property value. - - - - Sets the integer property value to an object in the Scene. - - The AnimationStream managing this handle. - The new integer property value. - - - - Handle for a Component property on an object in the AnimationStream. - - - - - Gets the boolean property value from a stream. - - The AnimationStream holding the animated values. - - The boolean property value. - - - - - Gets the float property value from a stream. - - The AnimationStream holding the animated values. - - The float property value. - - - - - Gets the integer property value from a stream. - - The AnimationStream holding the animated values. - - The integer property value. - - - - - Returns whether or not the handle is resolved. - - The AnimationStream holding the animated values. - - Returns true if the handle is resolved, false otherwise. - - - - - Returns whether or not the handle is valid. - - The AnimationStream holding the animated values. - - Whether or not the handle is valid. - - - - - Resolves the handle. - - The AnimationStream holding the animated values. - - - - Sets the boolean property value into a stream. - - The AnimationStream holding the animated values. - The new boolean property value. - - - - Sets the float property value into a stream. - - The AnimationStream holding the animated values. - The new float property value. - - - - Sets the integer property value into a stream. - - The AnimationStream holding the animated values. - The new integer property value. - - - - Position, rotation and scale of an object in the Scene. - - - - - Gets the position of the transform relative to the parent. - - The AnimationStream that manage this handle. - - The position of the transform relative to the parent. - - - - - Gets the rotation of the transform relative to the parent. - - The AnimationStream that manage this handle. - - The rotation of the transform relative to the parent. - - - - - Gets the scale of the transform relative to the parent. - - The AnimationStream that manage this handle. - - The scale of the transform relative to the parent. - - - - - Gets the position of the transform in world space. - - The AnimationStream that manage this handle. - - The position of the transform in world space. - - - - - Gets the rotation of the transform in world space. - - The AnimationStream that manage this handle. - - The rotation of the transform in world space. - - - - - Returns whether this is a valid handle. - - The AnimationStream that manage this handle. - - Whether this is a valid handle. - - - - - Sets the position of the transform relative to the parent. - - The AnimationStream that manage this handle. - The position of the transform relative to the parent. - - - - Sets the rotation of the transform relative to the parent. - - The AnimationStream that manage this handle. - The rotation of the transform relative to the parent. - - - - Sets the scale of the transform relative to the parent. - - The AnimationStream that manage this handle. - The scale of the transform relative to the parent. - - - - Sets the position of the transform in world space. - - The AnimationStream that manage this handle. - The position of the transform in world space. - - - - Sets the rotation of the transform in world space. - - The AnimationStream that manage this handle. - The rotation of the transform in world space. - - - - Position, rotation and scale of an object in the AnimationStream. - - - - - Gets the position of the transform relative to the parent. - - The AnimationStream that hold the animated values. - - The position of the transform relative to the parent. - - - - - Gets the rotation of the transform relative to the parent. - - The AnimationStream that hold the animated values. - - The rotation of the transform relative to the parent. - - - - - Gets the scale of the transform relative to the parent. - - The AnimationStream that hold the animated values. - - The scale of the transform relative to the parent. - - - - - Gets the position of the transform in world space. - - The AnimationStream that hold the animated values. - - The position of the transform in world space. - - - - - Gets the rotation of the transform in world space. - - The AnimationStream that hold the animated values. - - The rotation of the transform in world space. - - - - - Returns whether this handle is resolved. - - The AnimationStream that hold the animated values. - - Returns true if the handle is resolved, false otherwise. - - - - - Returns whether this is a valid handle. - - The AnimationStream that hold the animated values. - - Whether this is a valid handle. - - - - - Bind this handle with an animated values from the AnimationStream. - - The AnimationStream that hold the animated values. - - - - Sets the position of the transform relative to the parent. - - The AnimationStream that hold the animated values. - The position of the transform relative to the parent. - - - - Sets the rotation of the transform relative to the parent. - - The AnimationStream that hold the animated values. - The rotation of the transform relative to the parent. - - - - Sets the scale of the transform relative to the parent. - - The scale of the transform relative to the parent. - The AnimationStream that hold the animated values. - - - - Sets the position of the transform in world space. - - The position of the transform in world space. - The AnimationStream that hold the animated values. - - - - Sets the rotation of the transform in world space. - - The AnimationStream that hold the animated values. - The rotation of the transform in world space. - - - - Provides access to the audio samples generated by Unity objects such as VideoPlayer. - - - - - Number of sample frames available for consuming with Experimental.Audio.AudioSampleProvider.ConsumeSampleFrames. - - - - - The number of audio channels per sample frame. - - - - - Pointer to the native function that provides access to audio sample frames. - - - - - Enables the Experimental.Audio.AudioSampleProvider.sampleFramesAvailable events. - - - - - If true, buffers produced by ConsumeSampleFrames will get padded when silence if there are less available than asked for. Otherwise, the extra sample frames in the buffer will be left unchanged. - - - - - Number of sample frames that can still be written to by the sample producer before overflowing. - - - - - Then the free sample count falls below this threshold, the Experimental.Audio.AudioSampleProvider.sampleFramesAvailable event and associated native is emitted. - - - - - Unique identifier for this instance. - - - - - The maximum number of sample frames that can be accumulated inside the internal buffer before an overflow event is emitted. - - - - - Object where this provider came from. - - - - - Invoked when the number of available sample frames goes beyond the threshold set with Experimental.Audio.AudioSampleProvider.freeSampleFrameCountLowThreshold. - - Number of available sample frames. - - - - Invoked when the number of available sample frames goes beyond the maximum that fits in the internal buffer. - - The number of sample frames that were dropped due to the overflow. - - - - The expected playback rate for the sample frames produced by this class. - - - - - Index of the track in the object that created this provider. - - - - - True if the object is valid. - - - - - Clear the native handler set with Experimental.Audio.AudioSampleProvider.SetSampleFramesAvailableNativeHandler. - - - - - Clear the native handler set with Experimental.Audio.AudioSampleProvider.SetSampleFramesOverflowNativeHandler. - - - - - Consume sample frames from the internal buffer. - - Buffer where the consumed samples will be transferred. - - How many sample frames were written into the buffer passed in. - - - - - Type that represents the native function pointer for consuming sample frames. - - Id of the provider. See Experimental.Audio.AudioSampleProvider.id. - Pointer to the sample frames buffer to fill. The actual C type is float*. - Number of sample frames that can be written into interleavedSampleFrames. - - - - Release internal resources. Inherited from IDisposable. - - - - - Type that represents the native function pointer for handling sample frame events. - - User data specified when the handler was set. The actual C type is void*. - Id of the provider. See Experimental.Audio.AudioSampleProvider.id. - Number of sample frames available or overflowed, depending on event type. - - - - Delegate for sample frame events. - - Provider emitting the event. - How many sample frames are available, or were dropped, depending on the event. - - - - Set the native event handler for events emitted when the number of available sample frames crosses the threshold. - - Pointer to the function to invoke when the event is emitted. - User data to be passed to the handler when invoked. The actual C type is void*. - - - - Set the native event handler for events emitted when the internal sample frame buffer overflows. - - Pointer to the function to invoke when the event is emitted. - User data to be passed to the handler when invoked. The actual C type is void*. - - - - A helper structure used to initialize a LightDataGI structure as a directional light. - - - - - The direct light color. - - - - - The direction of the light. - - - - - The indirect light color. - - - - - The light's instanceID. - - - - - The lightmode. - - - - - The penumbra width for soft shadows in radians. - - - - - True if the light casts shadows, otherwise False. - - - - - A helper structure used to initialize a LightDataGI structure as a disc light. - - - - - The direct light color. - - - - - The indirect light color. - - - - - The light's instanceID. - - - - - The lightmode. - - - - - The light's orientation. - - - - - The light's position. - - - - - The radius of the disc light. - - - - - The light's range. - - - - - True if the light casts shadows, otherwise False. - - - - - Available falloff models for baking. - - - - - Inverse squared distance falloff model. - - - - - Inverse squared distance falloff model (without smooth range attenuation). - - - - - Quadratic falloff model. - - - - - Linear falloff model. - - - - - Falloff model is undefined. - - - - - The interop structure to pass light information to the light baking backends. There are helper structures for Directional, Point, Spot and Rectangle lights to correctly initialize this structure. - - - - - The color of the light. - - - - - The cone angle for spot lights. - - - - - The falloff model to use for baking point and spot lights. - - - - - The indirect color of the light. - - - - - The inner cone angle for spot lights. - - - - - The light's instanceID. - - - - - The lightmap mode for the light. - - - - - The orientation of the light. - - - - - The position of the light. - - - - - The range of the light. Unused for directional lights. - - - - - Set to 1 for shadow casting lights, 0 otherwise. - - - - - The light's sphere radius for point and spot lights, or the width for rectangle lights. - - - - - The height for rectangle lights. - - - - - The type of the light. - - - - - Initialize the struct with the parameters from the given light type. - - - - - - Initialize the struct with the parameters from the given light type. - - - - - - Initialize the struct with the parameters from the given light type. - - - - - - Initialize the struct with the parameters from the given light type. - - - - - - Initialize a light so that the baking backends ignore it. - - - - - - Utility class for converting Unity Lights to light types recognized by the baking backends. - - - - - Extracts informations from Lights. - - The lights baketype. - - Returns the light's light mode. - - - - - Extract type specific information from Lights. - - The input light. - Extracts directional light information. - Extracts point light information. - Extracts spot light information. - Extracts rectangle light information. - - - - Extract type specific information from Lights. - - The input light. - Extracts directional light information. - Extracts point light information. - Extracts spot light information. - Extracts rectangle light information. - - - - Extract type specific information from Lights. - - The input light. - Extracts directional light information. - Extracts point light information. - Extracts spot light information. - Extracts rectangle light information. - - - - Extract type specific information from Lights. - - The input light. - Extracts directional light information. - Extracts point light information. - Extracts spot light information. - Extracts rectangle light information. - - - - Extracts the indirect color from a light. - - - - - - Extracts the inner cone angle of spot lights. - - - - - - Interface to the light baking backends. - - - - - Get the currently set conversion delegate. - - - Returns the currently set conversion delegate. - - - - - Delegate called when converting lights into a form that the baking backends understand. - - The list of lights to be converted. - The output generated by the delegate function. Lights that should be skipped must be added to the output, initialized with InitNoBake on the LightDataGI structure. - - - - Resets the light conversion delegate to Unity's default conversion function. - - - - - Set a delegate that converts a list of lights to a list of LightDataGI structures that are passed to the baking backends. Must be reset by calling ResetDelegate again. - - - - - - The lightmode. A light can be realtime, mixed, baked or unknown. Unknown lights will be ignored by the baking backends. - - - - - The light is fully baked and has no realtime component. - - - - - The light is mixed. Mixed lights are interpreted based on the global light mode setting in the lighting window. - - - - - The light is realtime. No contribution will be baked in lightmaps or light probes. - - - - - The light should be ignored by the baking backends. - - - - - The light type. - - - - - An infinite directional light. - - - - - A light shaped like a disc emitting light into the hemisphere that it is facing. - - - - - A point light emitting light in all directions. - - - - - A light shaped like a rectangle emitting light into the hemisphere that it is facing. - - - - - A spot light emitting light in a direction with a cone shaped opening angle. - - - - - Contains normalized linear color values for red, green, blue in the range of 0 to 1, and an additional intensity value. - - - - - The blue color value in the range of 0.0 to 1.0. - - - - - The green color value in the range of 0.0 to 1.0. - - - - - The intensity value used to scale the red, green and blue values. - - - - - The red color value in the range of 0.0 to 1.0. - - - - - Returns a black color. - - - Returns a black color. - - - - - Converts a Light's color value to a normalized linear color value, automatically handling gamma conversion if necessary. - - Light color. - Light intensity. - - Returns the normalized linear color value. - - - - - A helper structure used to initialize a LightDataGI structure as a point light. - - - - - The direct light color. - - - - - The falloff model to use for baking the point light. - - - - - The indirect light color. - - - - - The light's instanceID. - - - - - The lightmode. - - - - - The light's position. - - - - - The light's range. - - - - - True if the light casts shadows, otherwise False. - - - - - The light's sphere radius, influencing soft shadows. - - - - - A helper structure used to initialize a LightDataGI structure as a rectangle light. - - - - - The direct light color. - - - - - The height of the rectangle light. - - - - - The indirect light color. - - - - - The light's instanceID. - - - - - The lightmode. - - - - - The light's orientation. - - - - - The light's position. - - - - - The light's range. - - - - - True if the light casts shadows, otherwise False. - - - - - The width of the rectangle light. - - - - - A helper structure used to initialize a LightDataGI structure as a spot light. - - - - - The direct light color. - - - - - The outer angle for the spot light. - - - - - The falloff model to use for baking the spot light. - - - - - The indirect light color. - - - - - The inner angle for the spot light. - - - - - The light's instanceID. - - - - - The lightmode. - - - - - The light's orientation. - - - - - The light's position. - - - - - The light's range. - - - - - True if the light casts shadows, otherwise False. - - - - - The light's sphere radius, influencing soft shadows. - - - - - An IntegratedSubsystem is initialized from an IntegratedSubsystemDescriptor for a given Subsystem (Example, Input, Environment, Display, etc.) and provides an interface to interact with that given IntegratedSubsystem until it is Destroyed. After an IntegratedSubsystem is created it can be Started or Stopped to turn on and off functionality (and preserve performance). The base type for IntegratedSubsystem only exposes this functionality; this class is designed to be a base class for derived classes that expose more functionality specific to a given IntegratedSubsystem. - - Note: initializing a second IntegratedSubsystem from the same IntegratedSubsystemDescriptor will return a reference to the existing IntegratedSubsystem as only one IntegratedSubsystem is currently allowed for a single IntegratedSubsystem provider. - - - - - - Destroys this instance of a subsystem. - - - - - Starts an instance of a subsystem. - - - - - Stops an instance of a subsystem. - - - - - Information about a subsystem that can be queried before creating a subsystem instance. - - - - - A unique string that identifies the subsystem that this Descriptor can create. - - - - - Interface implemented by both Subsystem and IntegratedSubsystem which provides control over the state of either. - - - - - - Destroys this instance of a subsystem. - - - - - Starts an instance of a subsystem. - - - - - Stops an instance of a subsystem. - - - - - A subsystem descriptor is metadata about a subsystem which can be inspected before loading / initializing a subsystem. - - - - - - The class representing the player loop in Unity. - - - - - Returns the default update order of all engine systems in Unity. - - - - - Set a new custom update order of all engine systems in Unity. - - - - - The representation of a single system being updated by the player loop in Unity. - - - - - The loop condition for a native engine system. To get a valid value for this, you must copy it from one of the PlayerLoopSystems returned by PlayerLoop.GetDefaultPlayerLoop. - - - - - A list of sub systems which run as part of this item in the player loop. - - - - - This property is used to identify which native system this belongs to, or to get the name of the managed system to show in the profiler. - - - - - A managed delegate. You can set this to create a new C# entrypoint in the player loop. - - - - - A native engine system. To get a valid value for this, you must copy it from one of the PlayerLoopSystems returned by PlayerLoop.GetDefaultPlayerLoop. - - - - - The type of the connected target. - - - - - The connected target is an Editor. - - - - - No target is connected, this is only possible in a Player. - - - - - The connected target is a Player. - - - - - The state of an Editor-to-Player or Editor-to-Editor connection to be used in Experimental.Networking.PlayerConnection.EditorGUI.AttachToPlayerDropdown or Experimental.Networking.PlayerConnection.EditorGUILayout.AttachToPlayerDropdown. - - - - - Supplies the type of the established connection, as in whether the target is a Player or an Editor. - - - - - The name of the connected target. - - - - - An implementation of IPlayable that produces a Camera texture. - - - - - Creates a CameraPlayable in the PlayableGraph. - - The PlayableGraph object that will own the CameraPlayable. - Camera used to produce a texture in the PlayableGraph. - - A CameraPlayable linked to the PlayableGraph. - - - - - An implementation of IPlayable that allows application of a Material shader to one or many texture inputs to produce a texture output. - - - - - Creates a MaterialEffectPlayable in the PlayableGraph. - - The PlayableGraph object that will own the MaterialEffectPlayable. - Material used to modify linked texture playable inputs. - Shader pass index.(Note: -1 for all passes). - - A MaterialEffectPlayable linked to the PlayableGraph. - - - - - An implementation of IPlayable that allows mixing two textures. - - - - - Creates a TextureMixerPlayable in the PlayableGraph. - - The PlayableGraph object that will own the TextureMixerPlayable. - - A TextureMixerPlayable linked to the PlayableGraph. - - - - - A PlayableBinding that contains information representing a TexturePlayableOutput. - - - - - Creates a PlayableBinding that contains information representing a TexturePlayableOutput. - - A reference to a UnityEngine.Object that acts as a key for this binding. - The name of the TexturePlayableOutput. - - Returns a PlayableBinding that contains information that is used to create a TexturePlayableOutput. - - - - - An IPlayableOutput implementation that will be used to manipulate textures. - - - - - Returns an invalid TexturePlayableOutput. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Values for the blend state. - - - - - Turns on alpha-to-coverage. - - - - - Blend state for render target 0. - - - - - Blend state for render target 1. - - - - - Blend state for render target 2. - - - - - Blend state for render target 3. - - - - - Blend state for render target 4. - - - - - Blend state for render target 5. - - - - - Blend state for render target 6. - - - - - Blend state for render target 7. - - - - - Determines whether each render target uses a separate blend state. - - - - - Creates a new blend state with the specified values. - - Determines whether each render target uses a separate blend state. - Turns on alpha-to-coverage. - - - - Default values for the blend state. - - - - - Camera related properties in CullingParameters. - - - - - Get a camera culling plane. - - Plane index (up to 5). - - Camera culling plane. - - - - - Get a shadow culling plane. - - Plane index (up to 5). - - Shadow culling plane. - - - - - Set a camera culling plane. - - Plane index (up to 5). - Camera culling plane. - - - - Set a shadow culling plane. - - Plane index (up to 5). - Shadow culling plane. - - - - Core Camera related properties in CullingParameters. - - - - - Culling results (visible objects, lights, reflection probes). - - - - - Array of visible lights. - - - - - Off screen lights that still effect visible Scene vertices. - - - - - Array of visible reflection probes. - - - - - Visible renderers. - - - - - Calculates the view and projection matrices and shadow split data for a directional light. - - The index into the active light array. - The cascade index. - The number of cascades. - The cascade ratios. - The resolution of the shadowmap. - The near plane offset for the light. - The computed view matrix. - The computed projection matrix. - The computed cascade data. - - If false, the shadow map for this cascade does not need to be rendered this frame. - - - - - Calculates the view and projection matrices and shadow split data for a point light. - - The index into the active light array. - The cubemap face to be rendered. - The amount by which to increase the camera FOV above 90 degrees. - The computed view matrix. - The computed projection matrix. - The computed split data. - - If false, the shadow map for this light and cubemap face does not need to be rendered this frame. - - - - - Calculates the view and projection matrices and shadow split data for a spot light. - - The index into the active light array. - The computed view matrix. - The computed projection matrix. - The computed split data. - - If false, the shadow map for this light does not need to be rendered this frame. - - - - - Perform culling for a Camera. - - Camera to cull for. - Render loop the culling results will be used with. - Culling results. - - Flag indicating whether culling succeeded. - - - - - Perform culling with custom CullingParameters. - - Parameters for culling. - Render loop the culling results will be used with. - - Culling results. - - - - - Fills a compute buffer with per-object light indices. - - The compute buffer object to fill. - - - - Get culling parameters for a camera. - - Camera to get parameters for. - Resultant culling parameters. - Generate single-pass stereo aware culling parameters. - - Flag indicating whether culling parameters are valid. - - - - - Get culling parameters for a camera. - - Camera to get parameters for. - Resultant culling parameters. - Generate single-pass stereo aware culling parameters. - - Flag indicating whether culling parameters are valid. - - - - - If a RenderPipeline sorts or otherwise modifies the VisibleLight list, an index remap will be necessary to properly make use of per-object light lists. - - - Array of indices that map from VisibleLight indices to internal per-object light list indices. - - - - - Gets the number of per-object light indices. - - - The number of per-object light indices. - - - - - Returns the bounding box that encapsulates the visible shadow casters. Can be used to, for instance, dynamically adjust cascade ranges. - - The index of the shadow-casting light. - The bounds to be computed. - - True if the light affects at least one shadow casting object in the Scene. - - - - - If a RenderPipeline sorts or otherwise modifies the VisibleLight list, an index remap will be necessary to properly make use of per-object light lists. -If an element of the array is set to -1, the light corresponding to that element will be disabled. - - Array with light indices that map from VisibleLight to internal per-object light lists. - - - - Values for the depth state. - - - - - How should depth testing be performed. - - - - - Controls whether pixels from this object are written to the depth buffer. - - - - - Creates a new depth state with the given values. - - Controls whether pixels from this object are written to the depth buffer. - How should depth testing be performed. - - - - Default values for the depth state. - - - - - Flags controlling RenderLoop.DrawRenderers. - - - - - When set, enables dynamic batching. - - - - - When set, enables GPU instancing. - - - - - No flags are set. - - - - - Settings for ScriptableRenderContext.DrawRenderers. - - - - - Other flags controlling object rendering. - - - - - The maxiumum number of passes that can be rendered in 1 DrawRenderers call. - - - - - What kind of per-object data to setup during rendering. - - - - - How to sort objects during rendering. - - - - - Create a draw settings struct. - - Camera to use. Camera's transparency sort mode is used to determine whether to use orthographic or distance based sorting. - Shader pass to use. - - - - Set the Material to use for all drawers that would render in this group. - - Override material. - Pass to use in the material. - - - - Set the shader passes that this draw call can render. - - Index of the shader pass to use. - Name of the shader pass. - - - - Type of sorting to use while rendering. - - - - - Sort objects based on distance along a custom axis. - - - - - Orthographic sorting mode. - - - - - Perspective sorting mode. - - - - - This struct describes the methods to sort objects during rendering. - - - - - Used to calculate distance to objects, by comparing the positions of objects to this axis. - - - - - Used to calculate the distance to objects. - - - - - What kind of sorting to do while rendering. - - - - - Type of sorting to use while rendering. - - - - - Should orthographic sorting be used? - - - - - Used to calculate the distance to objects. - - - - - Settings for ScriptableRenderContext.DrawShadows. - - - - - Culling results to use. - - - - - The index of the shadow-casting light to be rendered. - - - - - The split data. - - - - - Create a shadow settings object. - - The cull results for this light. - The light index. - - - - Filter settings for ScriptableRenderContext.DrawRenderers. - - - - - Set to true to exclude objects that are currently in motion from rendering. The default value is false. - - - - - Only render objects in the given layer mask. - - - - - The rendering layer mask to use when filtering available renderers for drawing. - - - - - Render objects whose material render queue in inside this range. - - - - - - - Specifies whether the values of the struct should be initialized. - - - - Describes a subset of objects to be rendered. - -See Also: ScriptableRenderContext.DrawRenderers. - - - - - Use this format usages to figure out the capabilities of specific GraphicsFormat - - - - - To blend on a rendertexture. - - - - - To sample textures with a linear filter - - - - - To perform resource load and store on a texture - - - - - To create and render to a MSAA 2X rendertexture. - - - - - To create and render to a MSAA 4X rendertexture. - - - - - To create and render to a MSAA 8X rendertexture. - - - - - To create and render to a rendertexture. - - - - - To create and sample textures. - - - - - Use this format to create either Textures or RenderTextures from scripts. - - - - - A four-component, 64-bit packed unsigned normalized format that has a 10-bit A component in bits 30..39, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are gamma encoded and their values range from -0.5271 to 1.66894. The alpha component is clamped to either 0.0 or 1.0 on sampling, rendering, and writing operations. - - - - - A four-component, 64-bit packed unsigned normalized format that has a 10-bit A component in bits 30..39, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are linearly encoded and their values range from -0.752941 to 1.25098 (pre-expansion). The alpha component is clamped to either 0.0 or 1.0 on sampling, rendering, and writing operations. - - - - - A four-component, 16-bit packed unsigned normalized format that has a 1-bit A component in bit 15, a 5-bit R component in bits 10..14, a 5-bit G component in bits 5..9, and a 5-bit B component in bits 0..4. - - - - - A four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. - - - - - A four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. - - - - - A four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. - - - - - A four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are gamma encoded and their values range from -0.5271 to 1.66894. The alpha component is clamped to either 0.0 or 1.0 on sampling, rendering, and writing operations. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are linearly encoded and their values range from -0.752941 to 1.25098 (pre-expansion). The alpha component is clamped to either 0.0 or 1.0 on sampling, rendering, and writing operations. - - - - - A three-component, 32-bit packed unsigned floating-point format that has a 10-bit B component in bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component in bits 0..10. - - - - - A four-component, 16-bit packed unsigned normalized format that has a 4-bit B component in bits 12..15, a 4-bit G component in bits 8..11, a 4-bit R component in bits 4..7, and a 4-bit A component in bits 0..3. - - - - - A four-component, 16-bit packed unsigned normalized format that has a 5-bit B component in bits 11..15, a 5-bit G component in bits 6..10, a 5-bit R component in bits 1..5, and a 1-bit A component in bit 0. - - - - - A three-component, 16-bit packed unsigned normalized format that has a 5-bit B component in bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit R component in bits 0..4. - - - - - A three-component, 24-bit signed integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2. - - - - - A three-component, 24-bit signed normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2. - - - - - A three-component, 24-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB nonlinear encoding in byte 2. - - - - - A three-component, 24-bit unsigned integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2 - - - - - A three-component, 24-bit unsigned normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2. - - - - - A four-component, 32-bit signed integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit signed normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned normalized format that has an 8-bit B component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, an 8-bit R component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3. - - - - - A one-component, 16-bit unsigned normalized format that has a single 16-bit depth component. - - - - - A two-component, 32-bit format that has 24 unsigned normalized bits in the depth component and, optionally: 8 bits that are unused. - - - - - A two-component, 32-bit packed format that has 8 unsigned integer bits in the stencil component, and 24 unsigned normalized bits in the depth component. - - - - - A one-component, 32-bit signed floating-point format that has 32-bits in the depth component. - - - - - A two-component format that has 32 signed float bits in the depth component and 8 unsigned integer bits in the stencil component. There are optionally: 24-bits that are unused. - - - - - A three-component, 32-bit packed unsigned floating-point format that has a 5-bit shared exponent in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G component mantissa in bits 9..17, and a 9-bit R component mantissa in bits 0..8. - - - - - The format is not specified. - - - - - A one-component, block-compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of signed normalized red texel data. - - - - - A one-component, block-compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized red texel data. - - - - - A one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of signed normalized red texel data. - - - - - A one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized red texel data. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are gamma encoded and their values range from -0.5271 to 1.66894. The alpha component is clamped to either 0.0 or 1.0 on sampling, rendering, and writing operations. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are linearly encoded and their values range from -0.752941 to 1.25098 (pre-expansion). - - - - - A one-component, 16-bit signed floating-point format that has a single 16-bit R component. - - - - - A one-component, 16-bit signed integer format that has a single 16-bit R component. - - - - - A one-component, 16-bit signed normalized format that has a single 16-bit R component. - - - - - A one-component, 16-bit unsigned integer format that has a single 16-bit R component. - - - - - A one-component, 16-bit unsigned normalized format that has a single 16-bit R component. - - - - - A two-component, 32-bit signed floating-point format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. - - - - - A two-component, 32-bit signed integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. - - - - - A two-component, 32-bit signed normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. - - - - - A two-component, 32-bit unsigned integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. - - - - - A two-component, 32-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. - - - - - A three-component, 48-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. - - - - - A three-component, 48-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. - - - - - A three-component, 48-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. - - - - - A three-component, 48-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. - - - - - A three-component, 48-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. - - - - - A four-component, 64-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. - - - - - A four-component, 64-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. - - - - - A four-component, 64-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. - - - - - A four-component, 64-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. - - - - - A four-component, 64-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. - - - - - A one-component, 32-bit signed floating-point format that has a single 32-bit R component. - - - - - A one-component, 32-bit signed integer format that has a single 32-bit R component. - - - - - A one-component, 32-bit unsigned integer format that has a single 32-bit R component. - - - - - A two-component, 64-bit signed floating-point format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7. - - - - - A two-component, 64-bit signed integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7. - - - - - A two-component, 64-bit unsigned integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7. - - - - - A three-component, 96-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11. - - - - - A three-component, 96-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11. - - - - - A three-component, 96-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11. - - - - - A four-component, 128-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15. - - - - - A four-component, 128-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15. - - - - - A four-component, 128-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15. - - - - - A four-component, 16-bit packed unsigned normalized format that has a 4-bit R component in bits 12..15, a 4-bit G component in bits 8..11, a 4-bit B component in bits 4..7, and a 4-bit A component in bits 0..3. - - - - - A four-component, 16-bit packed unsigned normalized format that has a 5-bit R component in bits 11..15, a 5-bit G component in bits 6..10, a 5-bit B component in bits 1..5, and a 1-bit A component in bit 0. - - - - - A three-component, 16-bit packed unsigned normalized format that has a 5-bit R component in bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit B component in bits 0..4. - - - - - A one-component, 8-bit signed integer format that has a single 8-bit R component. - - - - - A one-component, 8-bit signed normalized format that has a single 8-bit R component. - - - - - A one-component, 8-bit unsigned normalized format that has a single 8-bit R component stored with sRGB nonlinear encoding. - - - - - A one-component, 8-bit unsigned integer format that has a single 8-bit R component. - - - - - A one-component, 8-bit unsigned normalized format that has a single 8-bit R component. - - - - - A two-component, 16-bit signed integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1. - - - - - A two-component, 16-bit signed normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding in byte 1. - - - - - A two-component, 16-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding in byte 1. - - - - - A two-component, 16-bit unsigned integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1. - - - - - A two-component, 16-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding in byte 1. - - - - - A three-component, 24-bit signed integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2. - - - - - A three-component, 24-bit signed normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2. - - - - - A three-component, 24-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB nonlinear encoding in byte 2. - - - - - A three-component, 24-bit unsigned integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2. - - - - - A three-component, 24-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2. - - - - - A four-component, 32-bit signed integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit signed normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, an 8-bit B component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3. - - - - - A two-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. - - - - - A two-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. - - - - - A two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. - - - - - A two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. - - - - - A four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit of alpha. - - - - - A four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha. - - - - - A three-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of signed floating-point RGB texel data. - - - - - A three-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned floating-point RGB texel data. - - - - - A three-component, ETC compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque. - - - - - A three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque. - - - - - A three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque. - - - - - A three-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 8×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque. - - - - - A three-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 8×4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque. - - - - - A three-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque. - - - - - A three-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×10 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×10 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12×12 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12×12 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5×5 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6×6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6×6 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 8×8 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 8×8 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data. - - - - - A three-component, block-compressed format. Each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has a 1 bit alpha channel. - - - - - A three-component, block-compressed format. Each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has a 1 bit alpha channel. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values. - - - - - A four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding applied. - - - - - A four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values. - - - - - A four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 8×4 rectangle of unsigned normalized RGBA texel data with the first 32 bits encoding alpha values followed by 32 bits encoding RGB values with sRGB nonlinear encoding applied. - - - - - A four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 8×4 rectangle of unsigned normalized RGBA texel data with the first 32 bits encoding alpha values followed by 32 bits encoding RGB values. - - - - - A four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 32 bits encoding alpha values followed by 32 bits encoding RGB values with sRGB nonlinear encoding applied. - - - - - A four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 32 bits encoding alpha values followed by 32 bits encoding RGB values. - - - - - A one-component, 8-bit unsigned integer format that has 8-bits in the stencil component. - - - - - Defines a series of commands and settings that describes how Unity renders a frame. - - - - - When the IRenderPipeline is invalid or destroyed this returns true. - - - - - Defines custom rendering for this RenderPipeline. - - Structure that holds the rendering commands for this loop. - Cameras to render. - - - - An asset that produces a specific IRenderPipeline. - - - - - Create a IRenderPipeline specific to this asset. - - - Created pipeline. - - - - - Override this method to destroy RenderPipeline cached state. - - - - - The render index for the terrain brush in the editor. - - - Queue index. - - - - - Defines the required members for a Runtime Reflection Systems. - - - - - Update the reflection probes. - - - Whether a reflection probe was updated. - - - - - LODGroup culling parameters. - - - - - Rendering view height in pixels. - - - - - Camera position. - - - - - Camera's field of view. - - - - - Indicates whether camera is orthographic. - - - - - Orhographic camera size. - - - - - Values for the raster state. - - - - - Controls which sides of polygons should be culled (not drawn). - - - - - Enable clipping based on depth. - - - - - Scales the maximum Z slope. - - - - - Scales the minimum resolvable depth buffer value. - - - - - Creates a new raster state with the given values. - - Controls which sides of polygons should be culled (not drawn). - Scales the minimum resolvable depth buffer value. - Scales the maximum Z slope. - - - - - Default values for the raster state. - - - - - Visible reflection probes sorting options. - - - - - Sort probes by importance. - - - - - Sort probes by importance, then by size. - - - - - Do not sort reflection probes. - - - - - Sort probes from largest to smallest. - - - - - What kind of per-object data to setup during rendering. - - - - - Do not setup any particular per-object data besides the transformation matrix. - - - - - Setup per-object lightmaps. - - - - - Setup per-object light probe SH data. - - - - - Setup per-object light probe proxy volume data. - - - - - Setup per-object motion vectors. - - - - - Setup per-object occlusion probe data. - - - - - Setup per-object occlusion probe proxy volume data (occlusion in alpha channels). - - - - - Setup per-object reflection probe data. - - - - - Setup per-object shadowmask. - - - - - Setup per-object light indices. - - - - - Object encapsulating the duration of a single renderpass that contains one or more subpasses. - -The RenderPass object provides a new way to switch rendertargets in the context of a Scriptable Rendering Pipeline. As opposed to the SetRenderTargets function, the RenderPass object specifies a clear beginning and an end for the rendering, alongside explicit load/store actions on the rendering surfaces. - -The RenderPass object also allows running multiple subpasses within the same renderpass, where the pixel shaders have a read access to the current pixel value within the renderpass. This allows for efficient implementation of various rendering methods on tile-based GPUs, such as deferred rendering. - -RenderPasses are natively implemented on Metal (iOS) and Vulkan, but the API is fully functional on all rendering backends via emulation (using legacy SetRenderTargets calls and reading the current pixel values via texel fetches). - -A quick example on how to use the RenderPass API within the Scriptable Render Pipeline to implement deferred rendering: - -The RenderPass mechanism has the following limitations: -- All attachments must have the same resolution and MSAA sample count -- The rendering results of previous subpasses are only available within the same screen-space pixel - coordinate via the UNITY_READ_FRAMEBUFFER_INPUT(x) macro in the shader; the attachments cannot be bound - as textures or otherwise accessed until the renderpass has ended -- iOS Metal does not allow reading from the Z-Buffer, so an additional render target is needed to work around that -- The maximum amount of attachments allowed per RenderPass is currently 8 + depth, but note that various GPUs may - have stricter limits. - - - - - Read only: array of RenderPassAttachment objects currently bound into this RenderPass. - - - - - Read only: The ScriptableRenderContext object this RenderPass was created for. - - - - - Read only: The depth/stencil attachment used in this RenderPass, or null if none. - - - - - Read only: The height of the RenderPass surfaces in pixels. - - - - - Read only: MSAA sample count for this RenderPass. - - - - - Read only: The width of the RenderPass surfaces in pixels. - - - - - Create a RenderPass and start it within the ScriptableRenderContext. - - The ScriptableRenderContext object currently being rendered. - The width of the RenderPass surfaces in pixels. - The height of the RenderPass surfaces in pixels. - MSAA sample count; set to 1 to disable antialiasing. - Array of color attachments to use within this RenderPass. - The attachment to be used as the depthstencil buffer for this RenderPass, or null to disable depthstencil. - - - - End the RenderPass. - - - - - This class encapsulates a single subpass within a RenderPass. RenderPasses can never be standalone, they must always contain at least one SubPass. See Also: RenderPass. - - - - - Create a subpass and start it. - - The RenderPass object this subpass is part of. - Array of attachments to be used as the color render targets in this subpass. All attachments in this array must also be declared in the RenderPass constructor. - Array of attachments to be used as input attachments in this subpass. All attachments in this array must also be declared in the RenderPass constructor. - If true, the depth attachment is read-only in this subpass. Some renderers require this in order to be able to use the depth attachment as input. - - - - End the subpass. - - - - - A declaration of a single color or depth rendering surface to be attached into a RenderPass. - - - - - The currently assigned clear color for this attachment. Default is black. - - - - - Currently assigned depth clear value for this attachment. Default value is 1.0. - - - - - Currently assigned stencil clear value for this attachment. Default is 0. - - - - - The RenderTextureFormat of this attachment. - - - - - The load action to be used on this attachment when the RenderPass starts. - - - - - The store action to use with this attachment when the RenderPass ends. Only used when either BindSurface or BindResolveSurface has been called. - - - - - When the renderpass that uses this attachment ends, resolve the MSAA surface into the given target. - - The target surface to receive the MSAA-resolved pixels. - - - - Binds this RenderPassAttachment to the given target surface. - - The surface to use as the backing storage for this RenderPassAttachment. - Whether to read in the existing contents of the surface when the RenderPass starts. - Whether to store the rendering results of the attachment when the RenderPass ends. - - - - When the RenderPass starts, clear this attachment into the color or depth/stencil values given (depending on the format of this attachment). Changes loadAction to RenderBufferLoadAction.Clear. - - Color clear value. Ignored on depth/stencil attachments. - Depth clear value. Ignored on color surfaces. - Stencil clear value. Ignored on color or depth-only surfaces. - - - - Create a RenderPassAttachment to be used with RenderPass. - - The format of this attachment. - - - - Defines a series of commands and settings that describes how Unity renders a frame. - - - - - Call that should be issued by an SRP when the SRP begins to render a Camera so that other systems can inject per camera render logic. - - - - - - Call that should be issued by an SRP when the SRP begins to render so that other systems can inject 'pre render' logic. - - - - - - When the IRenderPipeline is invalid or destroyed this returns true. - - - - - Call the delegate used during SRP rendering before a single camera starts rendering. - - - - - - Call the delegate used during SRP rendering before a render begins. - - - - - - Dispose the Renderpipeline destroying all internal state. - - - - - Defines custom rendering for this RenderPipeline. - - - - - - - An asset that produces a specific IRenderPipeline. - - - - - Returns the list of current IRenderPipeline's created by the asset. - - - Enumerable of created pipelines. - - - - - Create a IRenderPipeline specific to this asset. - - - Created pipeline. - - - - - Destroys all cached data and created IRenderLoop's. - - - - - Retrieves the default Autodesk Interactive masked Shader for this pipeline. - - - Returns the default shader. - - - - - Retrieves the default Autodesk Interactive Shader for this pipeline. - - - Returns the default shader. - - - - - Retrieves the default Autodesk Interactive transparent Shader for this pipeline. - - - Returns the default shader. - - - - - Return the default 2D Material for this pipeline. - - - Default material. - - - - - Return the default Line Material for this pipeline. - - - Default material. - - - - - Return the default Material for this pipeline. - - - Default material. - - - - - Return the default particle Material for this pipeline. - - - Default material. - - - - - Return the default Shader for this pipeline. - - - Default shader. - - - - - Return the default Terrain Material for this pipeline. - - - Default material. - - - - - Return the default UI ETC1 Material for this pipeline. - - - Default material. - - - - - Return the default UI Material for this pipeline. - - - Default material. - - - - - Return the default UI overdraw Material for this pipeline. - - - Default material. - - - - - Returns the list of names used to display Rendering Layer Mask UI for this pipeline. - - - Array of 32 Rendering Layer Mask names. - - - - - The render index for the terrain brush in the editor. - - - Queue index. - - - - - Create a IRenderPipeline specific to this asset. - - - Created pipeline. - - - - - Default implementation of OnDisable for RenderPipelineAsset. See ScriptableObject.OnDisable - - - - - Default implementation of OnValidate for RenderPipelineAsset. See MonoBehaviour.OnValidate - - - - - Render Pipeline manager. - - - - - Returns the instance of the currently used Render Pipeline. - - - - - Describes a material render queue range. - - - - - A range that includes all objects. - - - - - Inclusive upper bound for the range. - - - - - Inclusive lower bound for the range. - - - - - A range that includes only opaque objects. - - - - - A range that includes only transparent objects. - - - - - A set of values used to override the render state. Note that it is not enough to set e.g. blendState, but that mask must also include RenderStateMask.Blend for the override to occur. - - - - - Specifies the new blend state. - - - - - Specifies the new depth state. - - - - - Specifies which parts of the render state that is overriden. - - - - - Specifies the new raster state. - - - - - The value to be compared against and/or the value to be written to the buffer based on the stencil state. - - - - - Specifies the new stencil state. - - - - - Creates a new render state block with the specified mask. - - Specifies which parts of the render state that is overriden. - - - - Maps a RenderType to a specific render state override. - - - - - Specifices the RenderType to override the render state for. - - - - - Specifies the values to override the render state with. - - - - - Creates a new render state mapping with the specified values. - - Specifices the RenderType to override the render state for. - Specifies the values to override the render state with. - - - - Creates a new render state mapping with the specified values. - - Specifices the RenderType to override the render state for. - Specifies the values to override the render state with. - - - - Specifies which parts of the render state that is overriden. - - - - - When set, the blend state is overridden. - - - - - When set, the depth state is overridden. - - - - - When set, all render states are overridden. - - - - - No render states are overridden. - - - - - When set, the raster state is overridden. - - - - - When set, the stencil state and reference value is overridden. - - - - - Values for the blend state. - - - - - Operation used for blending the alpha (A) channel. - - - - - Operation used for blending the color (RGB) channel. - - - - - Blend factor used for the alpha (A) channel of the destination. - - - - - Blend factor used for the color (RGB) channel of the destination. - - - - - Blend factor used for the alpha (A) channel of the source. - - - - - Blend factor used for the color (RGB) channel of the source. - - - - - Specifies which color components will get written into the target framebuffer. - - - - - Creates a new blend state with the given values. - - Specifies which color components will get written into the target framebuffer. - Blend factor used for the color (RGB) channel of the source. - Blend factor used for the color (RGB) channel of the destination. - Blend factor used for the alpha (A) channel of the source. - Blend factor used for the alpha (A) channel of the destination. - Operation used for blending the color (RGB) channel. - Operation used for blending the alpha (A) channel. - - - - Default values for the blend state. - - - - - Parameters controlling culling process in CullResults. - - - - - This parameter determines query distance for occlusion culling. The accurateOcclusionThreshold controls the distance where the level of detail (LOD) changes. - -The default value of this parameter is -1, and any value less than 0 has the same effect. Default values result in automatic calculation of the LOD. - -When you use occlusion culling, the occlusion data of the world varies in level of detail. In the occlusion data, there are tiles of various sizes. Each tile contains a cells-and-portals graph. In each cell, visibility is the same. This means that any two points are visible within the cell. Portals are the openings between the cells, which determine the visibility between them. - -The tiles are in a k-d tree. The tree contains different sized tiles, where each tile represents a level of detail. When you query a small tile, you get accurate culling results at the price of query time. - -During the culling, the tile size varies with the distance from the camera. This gives finer detail closer to the camera, and coarser detail at further distance. - -The higher the value is, the higher the accuracy is far away form the camera. High values can have a negative impact on performance. - - - - - Camera Properties used for culling. - - - - - Culling Flags for the culling. - - - - - CullingMask used for culling. - - - - - CullingMatrix used for culling. - - - - - Number of culling planes to use. - - - - - The projection matrix generated for single-pass stereo culling. - - - - - Distance between the virtual eyes. - - - - - The view matrix generated for single-pass stereo culling. - - - - - Is the cull orthographic. - - - - - Layers to cull. - - - - - LODParameters for culling. - - - - - Position for the origin of th cull. - - - - - Reflection Probe Sort options for the cull. - - - - - Scene Mask to use for the cull. - - - - - Shadow distance to use for the cull. - - - - - Fetch the culling plane at the given index. - - - - - - Get the distance for the culling of a specific layer. - - - - - - Set the culling plane at a given index. - - - - - - - Set the distance for the culling of a specific layer. - - - - - - - Defines state and drawing commands used in a custom render pipelines. - - - - - Draw subset of visible objects. - - Specifies parts of the render state to override. - Specifies parts of the render state to override for specific render types. - Specifies which set of visible objects to draw. - Specifies how to draw the objects. - Specifies how the renderers should be further filtered. - - - - Draw subset of visible objects. - - Specifies parts of the render state to override. - Specifies parts of the render state to override for specific render types. - Specifies which set of visible objects to draw. - Specifies how to draw the objects. - Specifies how the renderers should be further filtered. - - - - Draw subset of visible objects. - - Specifies parts of the render state to override. - Specifies parts of the render state to override for specific render types. - Specifies which set of visible objects to draw. - Specifies how to draw the objects. - Specifies how the renderers should be further filtered. - - - - Draw shadow casters for a single light. - - Specifies which set of shadow casters to draw, and how to draw them. - - - - Draw skybox. - - Camera to draw the skybox for. - - - - Emit UI geometry into the Scene view for rendering. - - Camera to emit the geometry for. - - - - Execute a custom graphics command buffer. - - Command buffer to execute. - - - - Executes a command buffer on an async compute queue with the queue selected based on the ComputeQueueType parameter passed. - -It is required that all of the commands within the command buffer be of a type suitable for execution on the async compute queues. If the buffer contains any commands that are not appropriate then an error will be logged and displayed in the editor window. Specifically the following commands are permitted in a CommandBuffer intended for async execution: - -CommandBuffer.BeginSample - -CommandBuffer.CopyCounterValue - -CommandBuffer.CopyTexture - -CommandBuffer.CreateGPUFence - -CommandBuffer.DispatchCompute - -CommandBuffer.EndSample - -CommandBuffer.IssuePluginEvent - -CommandBuffer.SetComputeBufferParam - -CommandBuffer.SetComputeFloatParam - -CommandBuffer.SetComputeFloatParams - -CommandBuffer.SetComputeTextureParam - -CommandBuffer.SetComputeVectorParam - -CommandBuffer.WaitOnGPUFence - -All of the commands within the buffer are guaranteed to be executed on the same queue. If the target platform does not support async compute queues then the work is dispatched on the graphics queue. - - The CommandBuffer to be executed. - Describes the desired async compute queue the supplied CommandBuffer should be executed on. - - - - Setup camera specific global shader variables. - - Camera to setup shader variables for. - Set up the stereo shader variables and state. - - - - Setup camera specific global shader variables. - - Camera to setup shader variables for. - Set up the stereo shader variables and state. - - - - Fine-grain control to begin stereo rendering on the scriptable render context. - - Camera to enable stereo rendering on. - - - - Indicate completion of stereo rendering on a single frame. - - Camera to indicate completion of stereo rendering. - - - - Stop stereo rendering on the scriptable render context. - - Camera to disable stereo rendering on. - - - - Submit rendering loop for execution. - - - - - Empty implementation of IScriptableRuntimeReflectionSystem. - - - - - Update the reflection probes. - - - Whether a reflection probe was updated. - - - - - Global settings for the scriptable runtime reflection system. - - - - - The current scriptable runtime reflection system instance. - - - - - Shader pass name identifier. - - - - - Create shader pass name identifier. - - Pass name. - - - - Describes the culling information for a given shadow split (e.g. directional cascade). - - - - - The number of culling planes. - - - - - The culling sphere. The first three components of the vector describe the sphere center, and the last component specifies the radius. - - - - - Gets a culling plane. - - The culling plane index. - - The culling plane. - - - - - Sets a culling plane. - - The index of the culling plane to set. - The culling plane. - - - - How to sort objects during rendering. - - - - - Sort objects back to front. - - - - - Sort renderers taking canvas order into account. - - - - - Typical sorting for opaque objects. - - - - - Typical sorting for transparencies. - - - - - Do not sort objects. - - - - - Sort objects to reduce draw state changes. - - - - - Sort objects in rough front-to-back buckets. - - - - - Sorts objects by renderer priority. - - - - - Sort by material render queue. - - - - - Sort by renderer sorting layer. - - - - - Values for the stencil state. - - - - - The function used to compare the reference value to the current contents of the buffer. - - - - - The function used to compare the reference value to the current contents of the buffer for back-facing geometry. - - - - - The function used to compare the reference value to the current contents of the buffer for front-facing geometry. - - - - - Controls whether the stencil buffer is enabled. - - - - - What to do with the contents of the buffer if the stencil test fails. - - - - - What to do with the contents of the buffer if the stencil test fails for back-facing geometry. - - - - - What to do with the contents of the buffer if the stencil test fails for front-facing geometry. - - - - - What to do with the contents of the buffer if the stencil test (and the depth test) passes. - - - - - What to do with the contents of the buffer if the stencil test (and the depth test) passes for back-facing geometry. - - - - - What to do with the contents of the buffer if the stencil test (and the depth test) passes for front-facing geometry. - - - - - An 8 bit mask as an 0–255 integer, used when comparing the reference value with the contents of the buffer. - - - - - An 8 bit mask as an 0–255 integer, used when writing to the buffer. - - - - - What to do with the contents of the buffer if the stencil test passes, but the depth test fails. - - - - - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for back-facing geometry. - - - - - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for front-facing geometry. - - - - - Creates a new stencil state with the given values. - - An 8 bit mask as an 0–255 integer, used when comparing the reference value with the contents of the buffer. - An 8 bit mask as an 0–255 integer, used when writing to the buffer. - Controls whether the stencil buffer is enabled. - The function used to compare the reference value to the current contents of the buffer for front-facing geometry. - What to do with the contents of the buffer if the stencil test (and the depth test) passes for front-facing geometry. - What to do with the contents of the buffer if the stencil test fails for front-facing geometry. - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for front-facing geometry. - The function used to compare the reference value to the current contents of the buffer for back-facing geometry. - What to do with the contents of the buffer if the stencil test (and the depth test) passes for back-facing geometry. - What to do with the contents of the buffer if the stencil test fails for back-facing geometry. - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for back-facing geometry. - The function used to compare the reference value to the current contents of the buffer. - What to do with the contents of the buffer if the stencil test (and the depth test) passes. - What to do with the contents of the buffer if the stencil test fails. - What to do with the contents of the buffer if the stencil test passes, but the depth test. - - - - Creates a new stencil state with the given values. - - An 8 bit mask as an 0–255 integer, used when comparing the reference value with the contents of the buffer. - An 8 bit mask as an 0–255 integer, used when writing to the buffer. - Controls whether the stencil buffer is enabled. - The function used to compare the reference value to the current contents of the buffer for front-facing geometry. - What to do with the contents of the buffer if the stencil test (and the depth test) passes for front-facing geometry. - What to do with the contents of the buffer if the stencil test fails for front-facing geometry. - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for front-facing geometry. - The function used to compare the reference value to the current contents of the buffer for back-facing geometry. - What to do with the contents of the buffer if the stencil test (and the depth test) passes for back-facing geometry. - What to do with the contents of the buffer if the stencil test fails for back-facing geometry. - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for back-facing geometry. - The function used to compare the reference value to the current contents of the buffer. - What to do with the contents of the buffer if the stencil test (and the depth test) passes. - What to do with the contents of the buffer if the stencil test fails. - What to do with the contents of the buffer if the stencil test passes, but the depth test. - - - - Default values for the stencil state. - - - - - Describes the rendering features supported by a given render pipeline. - - - - - Get / Set a SupportedRenderingFeatures. - - - - - This is the fallback mode if the mode the user had previously selected is no longer available. See SupportedRenderingFeatures.supportedMixedLightingModes. - - - - - Flags for supported reflection probes. - - - - - Determines if the renderer will override the Environment Lighting and will no longer need the built-in UI for it. - - - - - Determines if the renderer will override the fog settings in the Lighting Panel and will no longer need the built-in UI for it. - - - - - Determines if the renderer will override halo and flare settings in the Lighting Panel and will no longer need the built-in UI for it. - - - - - Are light probe proxy volumes supported? - - - - - Are motion vectors supported? - - - - - Can renderers support receiving shadows? - - - - - Are reflection probes supported? - - - - - Determines if the renderer supports renderer priority sorting. - - - - - What baking types are supported. The unsupported ones will be hidden from the UI. See LightmapBakeType. - - - - - Specifies what modes are supported. Has to be at least one. See LightmapsMode. - - - - - Specifies what LightmapMixedBakeMode that are supported. Please define a SupportedRenderingFeatures.defaultMixedLightingMode in case multiple modes are supported. - - - - - Same as MixedLightingMode for baking, but is used to determine what is supported by the pipeline. - - - - - Same as MixedLightingMode.IndirectOnly but determines if it is supported by the pipeline. - - - - - No mode is supported. - - - - - Determines what is supported by the rendering pipeline. This enum is similar to MixedLightingMode. - - - - - Same as MixedLightingMode.Subtractive but determines if it is supported by the pipeline. - - - - - Supported modes for ReflectionProbes. - - - - - Default reflection probe support. - - - - - Rotated reflection probes are supported. - - - - - Holds data of a visible light. - - - - - Light color multiplied by intensity. - - - - - Light flags, see VisibleLightFlags. - - - - - Accessor to Light component. - - - - - Light type. - - - - - Light transformation matrix. - - - - - Light range. - - - - - Light's influence rectangle on screen. - - - - - Spot light angle. - - - - - Flags for VisibleLight. - - - - - Light intersects far clipping plane. - - - - - Light intersects near clipping plane. - - - - - No flags are set. - - - - - Holds data of a visible reflection probe. - - - - - Probe blending distance. - - - - - Probe bounding box. - - - - - Should probe use box projection. - - - - - Probe projection center. - - - - - Shader data for probe HDR texture decoding. - - - - - Probe importance. - - - - - Probe transformation matrix. - - - - - Accessor to ReflectionProbe component. - - - - - Probe texture. - - - - - Experimental render settings features. - - - - - If enabled, ambient trilight will be sampled using the old radiance sampling method. - - - - - A Subsystem is initialized from a SubsystemDescriptor for a given Subsystem (Example, Input, Environment, Display, etc.) and provides an interface to interact with that given Subsystem until it is Destroyed. After a Subsystem is created it can be Started or Stopped to turn on and off functionality (and preserve performance). The base type for Subsystem only exposes this functionality; this class is designed to be a base class for derived classes that expose more functionality specific to a given Subsystem. - - Note: initializing a second Subsystem from the same SubsystemDescriptor will return a reference to the existing Subsystem as only one Subsystem is currently allowed for a single Subsystem provider. - - - - - - Destroys this instance of a subsystem. - - - - - Starts an instance of a subsystem. - - - - - Stops an instance of a subsystem. - - - - - Information about a subsystem that can be queried before creating a subsystem instance. - - - - - A unique string that identifies the subsystem that this Descriptor can create. - - - - - The System.Type of the subsystem implementation associated with this descriptor. - - - - - Gives access to subsystems which provide additional functionality through plugins. - - - - - Returns active Subsystems of a specific instance type. - - Active instances. - - - - Returns a list of SubsystemDescriptors which describe additional functionality that can be enabled. - - Subsystem specific descriptors. - - - - Represents a linear 2D transformation between brush UV space and a target XY space (typically this is a Terrain-local object space.) - - - - - (Read Only) Brush UV origin, in XY space. - - - - - (Read Only) Brush U vector, in XY space. - - - - - (Read Only) Brush V vector, in XY space. - - - - - (Read Only) Target XY origin, in Brush UV space. - - - - - (Read Only) Target X vector, in Brush UV space. - - - - - (Read Only) Target Y vector, in Brush UV space. - - - - - Creates a BrushTransform. - - Origin of the brush, in target XY space. - Brush U vector, in target XY space. - Brush V vector, in target XY space. - - - - Applies the transform to convert a Brush UV coordinate to the target XY space. - - Brush UV coordinate to transform. - - Target XY coordinate. - - - - - Creates an axis-aligned BrushTransform from a rectangle. - - Brush rectangle, in target XY coordinates. - - BrushTransform describing the brush. - - - - - Get the axis-aligned bounding rectangle of the brush, in target XY space. - - - Bounding rectangle in target XY space. - - - - - Applies the transform to convert a target XY coordinate to Brush UV space. - - Point in target XY space. - - Point transformed to Brush UV space. - - - - - The context for a paint operation that may span multiple connected Terrains. - - - - - (Read Only) RenderTexture that an edit operation writes to modify the data. - - - - - (Read Only) The value of RenderTexture.active at the time CreateRenderTargets is called. - - - - - (Read Only) The Terrain used to build the PaintContext. - - - - - (Read Only) The pixel rectangle that this PaintContext represents. - - - - - (Read Only) The size of a PaintContext pixel in terrain units (as defined by originTerrain.) - - - - - (Read Only) Render target that stores the original data from the Terrains. - - - - - (Read Only) The height of the target terrain texture. This is the resolution for a single Terrain. - - - - - (Read Only) The width of the target terrain texture. This is the resolution for a single Terrain. - - - - - (Read Only) The number of Terrains in this PaintContext. - - - - - Flushes the delayed actions created by PaintContext heightmap and alphamap modifications. - - - - - Releases the allocated resources of this PaintContext. - - When true, indicates that this function restores RenderTexture.active - - - - Constructs a PaintContext that you can use to edit a texture on a Terrain, in the region defined by boundsInTerrainSpace and extraBorderPixels. - - Terrain that defines terrain space for this PaintContext. - Terrain space bounds to edit in the target terrain texture. - Width of the target terrain texture (per Terrain). - Height of the target terrain texture (per Terrain). - Number of extra border pixels required. - - - - - - Creates the sourceRenderTexture and destinationRenderTexture. - - Render Texture format. - - - - Creates a new PaintContext, to edit a target texture on a Terrain, in a region defined by pixelRect. - - Terrain that defines terrain space for this PaintContext. - Pixel rectangle to edit in the target terrain texture. - Width of the target terrain texture (per Terrain). - Height of the target terrain texture (per Terrain). - - - - Gathers the alphamap information into sourceRenderTexture. - - TerrainLayer used for painting. - Set to true to specify that the inputLayer is added to the terrain if it does not already exist. Set to false to specify that terrain layers are not added to the terrain. - - - - Gathers the heightmap information into sourceRenderTexture. - - - - - Gathers the normal information into sourceRenderTexture. - - - - - Retrieves the clipped pixel rectangle for a Terrain, relative to the PaintContext render textures. - - Index of the Terrain. - - Returns the clipped pixel rectangle. - - - - - Retrieves the clipped pixel rectangle for a Terrain. - - Index of the Terrain. - - Returns the clipped pixel rectangle. - - - - - Retrieves a Terrain from the PaintContext. - - Index of the terrain. - - Returns the Terrain object. - - - - - Applies an edited alphamap PaintContext by copying modifications back to the source Terrains. - - Unique name used for the undo stack. - - - - Applies an edited heightmap PaintContext by copying modifications back to the source Terrains. - - Unique name used for the undo stack. - - - - A set of utility functions for custom terrain paint tools. - - - - - Helper function to set up a PaintContext for modifying the heightmap of one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and heightmap resolution. - The region in terrain space to edit. - Number of extra border pixels required. - - PaintContext containing the combined heightmap data for the specified region. - - - - - Helper function to set up a PaintContext for modifying the heightmap of one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and heightmap resolution. - The region in terrain space to edit. - Number of extra border pixels required. - - PaintContext containing the combined heightmap data for the specified region. - - - - - Helper function to set up a PaintContext for modifying the alphamap of one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and alphamap resolution. - Selects the alphamap to paint. - The region in terrain space to edit. - Number of extra border pixels required. - - PaintContext containing the combined alphamap data for the specified region. - - - - - Helper function to set up a PaintContext for modifying the alphamap of one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and alphamap resolution. - Selects the alphamap to paint. - The region in terrain space to edit. - Number of extra border pixels required. - - PaintContext containing the combined alphamap data for the specified region. - - - - - Builds a Scale & Offset transform to convert between one PaintContext's UV space and another PaintContext's UV space. - - Source PaintContext. - Destination PaintContext. - ScaleOffset transform. - - - - Enumeration of the render passes in the built-in paint material. - - - - - Built-in render pass for painting the splatmap texture. - - - - - Built-in render pass for raising and lowering terrain height. - - - - - Built-in render pass for setting terrain height. - - - - - Built-in render pass for smoothing the terrain height. - - - - - Built-in render pass for stamping heights on the terrain. - - - - - Creates a BrushTransform from the input parameters. - - Reference terrain, defines terrain UV and object space. - Center point of the brush, in terrain UV space (0-1 across the terrain tile). - Size of the brush, in terrain space. - Brush rotation in degrees (clockwise). - - Transform from terrain space to Brush UVs. - - - - - Helper function to set up a PaintContext that collects mesh normal data from one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and heightmap resolution. - The region in terrain space from which to collect normals. - Number of extra border pixels required. - - PaintContext containing the combined normalmap data for the specified region. - - - - - Helper function to set up a PaintContext that collects mesh normal data from one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and heightmap resolution. - The region in terrain space from which to collect normals. - Number of extra border pixels required. - - PaintContext containing the combined normalmap data for the specified region. - - - - - Helper function for completing a heightmap modification. - - The heightmap paint context to complete. - Unique name used for the undo stack. - - - - Helper function for completing a texture alphamap modification. - - The texture paint context to complete. - Unique name used for the undo stack. - - - - Finds the index of a TerrainLayer in a Terrain tile. - - Terrain tile. - Terrain layer to search for. - - Returns the index of the terrain layer if it exists or -1 if it doesn't exist. - - - - - Returns the default material for blitting operations. - - - Built in "Hidden/BlitCopy" material. - - - - - Returns the built-in in paint material used by the built-in tools. - - - Built-in terrain paint material. - - - - - Returns the default copy terrain layer material. - - - Built in "HiddenTerrainTerrainLayerUtils" material. - - - - - Returns the alphamap texture at mapIndex. - - Terrain tile. - Index to retrieve. - - Alphamap texture at mapIndex. - - - - - Releases the allocated resources of the specified PaintContext. - - The PaintContext containing the resources to release. - - - - Sets up all of the material properties used by functions in TerrainTool.cginc. - - PaintContext describing the area we are editing, and the terrain space. - BrushTransform from terrain space to Brush UVs. - Material to populate with transform properties. - - - - Provides a set of utility functions that are used by the terrain tools. - - - - - Automatically connects neighboring terrains. - - - - - Type for mapping Terrain.groupingID coordinates to TerrainMap. - - - - - Type for mapping 2D (X,Y) coordinates to a Terrain object. - - - - - Indicates the error status of the TerrainMap. - - - - - Mapping from TileCoord to Terrain. - - - - - Creates a TerrainMap. - - Defines the grid origin and size, as well as group id if no filter is specified. - Origin of the grid. - Size of the grid. Typically takes the terrain size.x and size.z. - Filter to be applied when populating the map. See Also: TerrainFilter. If null, the filter will fall back to matching terrains in the same group as the origin. - Validate the terrain map. Default is true. - - The resulting terrain map. Can return null when no terrains pass the filter. - - - - - Creates a TerrainMap. - - Defines the grid origin and size, as well as group id if no filter is specified. - Origin of the grid. - Size of the grid. Typically takes the terrain size.x and size.z. - Filter to be applied when populating the map. See Also: TerrainFilter. If null, the filter will fall back to matching terrains in the same group as the origin. - Validate the terrain map. Default is true. - - The resulting terrain map. Can return null when no terrains pass the filter. - - - - - Retrieves the Terrain object corresponding to the tile coordinates (tileX,tileZ). - - Tile X coordinate. - Tile Z coordinate. - - Returns a valid Terrain object if successful, null otherwise. - - - - - Describes the information about the edge and how to tessellate it. - - - - - The maximum angle to be considered within this range. - - - - - The render order of the edges that belong in this range. - - - - - The list of Sprites that are associated with this range. - - - - - The minimum angle to be considered within this range. - - - - - A collection of APIs that facilitate pixel perfect rendering of sprite-based renderers. - - - - - To achieve a pixel perfect render, Sprites must be displaced to discrete positions at render time. This value defines the minimum distance between these positions. This doesn’t affect the GameObject's transform position. - - - - - Data that describes the important points of the shape. - - - - - The position of the left tangent in local space. - - - - - The various modes of the tangent handles. They could be continuous or broken. - - - - - The position of this point in the object's local space. - - - - - The position of the right tangent point in the local space. - - - - - A struct that holds a rich set of information that describes the bind pose of this Sprite. - - - - - The length of the bone. This is important for the leaf bones to describe their length without needing another bone as the terminal bone. - - - - - The name of the bone. This is useful when recreating bone hierarchy at editor or runtime. You can also use this as a way of resolving the bone path when a Sprite is bound to a more complex or richer hierarchy. - - - - - The ID of the parent of this bone. - - - - - The position in local space of this bone. - - - - - The rotation of this bone in local space. - - - - - A list of methods designed for reading and writing to the rich internal data of a Sprite. - - - - - Returns an array of BindPoses. - - The sprite to retrieve the bind pose from. - - A list of bind poses for this sprite. There is no need to dispose the returned NativeArray. - - - - - Returns a list of SpriteBone in this Sprite. - - The sprite to get the list of SpriteBone from. - - An array of SpriteBone that belongs to this Sprite. - - - - - Returns a list of BoneWeight that corresponds to each and every vertice in this Sprite. - - The Sprite to get the BoneWeights from. - - The list of BoneWeight. The length should equal the number of vertices. There is no need to call dispose on this NativeArray. - - - - - Returns a list of indices. This is the same as Sprite.triangle. - - - - A read-only list of indices indicating how the triangles are formed between the vertices. The array is marked as undisposable. - - - - - Retrieves a strided accessor to the internal vertex attributes. - - - - - A read-only list of. - - - - - Returns the number of vertices in this Sprite. - - - - - - Checks if a specific channel exists for this Sprite. - - - - - True if the channel exists. - - - - - Sets the bind poses for this Sprite. - - The list of bind poses for this Sprite. The array must be disposed of by the caller. - - - - - Sets the SpriteBones for this Sprite. - - - - - - - Sets the BoneWeight for this Sprite. The length of the input array must match the number of vertices. - - The list of BoneWeight for this Sprite. The array must be disposed of by the caller. - - - - - Set the indices for this Sprite. This is the same as Sprite.triangle. - - The list of indices for this Sprite. The array must be disposed of by the caller. - - - - - Sets a specific channel of the VertexAttribute. - - The list of values for this specific VertexAttribute channel. The array must be disposed of by the caller. - - - - - - Sets the vertex count. This resizes the internal buffer. It also preserves any configurations of VertexAttributes. - - - - - - - A list of methods that allow the caller to override what the SpriteRenderer renders. - - - - - Stop using the deformable buffer to render the Sprite and use the original mesh instead. - - - - - - Returns an array of vertices to be deformed by the caller. - - - - - - Provides the JobHandle that updates the deform buffer to the SpriteRenderer. - - - - - - - Additional data about the shape's control point. This is useful during tessellation of the shape. - - - - - The threshold of the angle that decides if it should be tessellated as a curve or a corner. - - - - - The radius of the curve to be tessellated. - - - - - True will indicate that this point should be tessellated as a corner or a continuous line otherwise. - - - - - The height of the tessellated edge. - - - - - The Sprite to be used for a particular edge. - - - - - Input parameters for the SpriteShape tessellator. - - - - - If enabled, the tessellator will adapt the size of the quads based on the height of the edge. - - - - - The threshold of the angle that indicates whether it is a corner or not. - - - - - The threshold of the angle that decides if it should be tessellated as a curve or a corner. - - - - - The radius of the curve to be tessellated. - - - - - The local displacement of the Sprite when tessellated. - - - - - If true, the Shape will be tessellated as a closed form. - - - - - The scale to be used to calculate the UVs of the fill texture. - - - - - The texture to be used for the fill of the SpriteShape. - - - - - If enabled the tessellator will consider creating corners based on the various input parameters. - - - - - The tessellation quality of the input Spline that determines the complexity of the mesh. - - - - - The borders to be used for calculating the uv of the edges based on the border info found in Sprites. - - - - - The world space transform of the game object used for calculating the UVs of the fill texture. - - - - - Renders SpriteShapes defined through the SpriteShapeUtility.GenerateSpriteShape API. - - - - - A static class that helps tessellate a SpriteShape mesh. - - - - - Generate a mesh based on input parameters. - - The output mesh. - Input parameters for the SpriteShape tessellator. - A list of control points that describes the shape. - Additional data about the shape's control point. This is useful during tessellation of the shape. - The list of Sprites that could be used for the edges. - The list of Sprites that could be used for the corners. - A parameter that determins how to tessellate each of the edge. - - - - Generate a mesh based on input parameters. - - SpriteShapeRenderer to which the generated geometry is fed to. - Input parameters for the SpriteShape tessellator. - A list of control points that describes the shape. - Additional data about the shape's control point. This is useful during tessellation of the shape. - The list of Sprites that could be used for the edges. - The list of Sprites that could be used for the corners. - A parameter that determins how to tessellate each of the edge. - - - - Event sent after an element is added to an element that is a descendent of a panel. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Abstract base class for controls. - - - - - The value associated with the field. - - - - - Allow to set a value without being of the change, if any. - - New Value to set. - - - - UxmlTraits for the BaseField. - - - - - Enumerator to get the child elements of the UxmlTraits of BaseField. - - - - - Constructor. - - - - - This is a base class for the Slider fields. - - - - - This is the actual property to contain the direction of the slider. - - - - - This is the maximum value that the slider encodes. - - - - - This is the minimum value that the slider encodes. - - - - - This is a generic page size used to change the value when clicking in the slider. - - - - - This is the range from the minimum value to the maximum value of the slider. - - - - - The actual value of the slider. - - - - - Method used to adjust the dragelement. Mainly used in a scroller. - - The factor used to adjust the drag element, where a value > 1 will make it invisible. - - - - Element that can be bound to a property. - - - - - Binding object that will be updated. - - - - - Path of the target property to be bound. - - - - - Constructor. - - - - - Instantiates a BindableElement using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the BindableElement. - - - - - Constructor. - - - - - Initialize EnumField properties using values from the attribute bag. - - - - - - - - Event sent immediately after an element has lost focus. This event trickles down, it does not bubble up, and it cannot be cancelled. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Styled visual element to match the IMGUI Box Style. - - - - - Instantiates a Box using the data read from a UXML file. - - - - - Constructor. - - - - - A clickable button. - - - - - Clickable MouseManipulator for this Button. - - - - - Constructs a Button. - - Action triggered when the button is clicked. - - - - Constructs a Button. - - Action triggered when the button is clicked. - - - - Instantiates a Button using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the UI.Button. - - - - - Constructor. - - - - - Interface for classes capable of having callbacks to handle events. - - - - - Handle an event, most often by executing the callbacks associated with the event. - - The event to handle. - - - - Return true if event handlers for the event propagation BubbleUp phase have been attached on this object. - - - True if object has event handlers for the BubbleUp phase. - - - - - Returns true if event handlers, for the event propagation TrickleDown phase, are attached to this object. - - - True if object has event handlers for the TrickleDown phase. - - - - - Adds an event handler to the instance. If the event handler has already been registered for the same phase (either TrickleDown or BubbleUp) then this method has no effect. - - The event handler to add. - By default, this callback is called during the BubbleUp phase. Pass TrickleDown.TrickleDown to call this callback during the TrickleDown phase. - Data to pass to the callback. - - - - Adds an event handler to the instance. If the event handler has already been registered for the same phase (either TrickleDown or BubbleUp) then this method has no effect. - - The event handler to add. - By default, this callback is called during the BubbleUp phase. Pass TrickleDown.TrickleDown to call this callback during the TrickleDown phase. - Data to pass to the callback. - - - - Sends an event to the event handler. - - The event to send. - - - - Remove callback from the instance. - - The callback to remove. - Set this parameter to true to remove the callback from the TrickleDown phase. Set this parameter to false to remove the callback from the BubbleUp phase. - - - - Remove callback from the instance. - - The callback to remove. - Set this parameter to true to remove the callback from the TrickleDown phase. Set this parameter to false to remove the callback from the BubbleUp phase. - - - - Sends an event when a value in a field changes. - - - - - The new value. - - - - - The value before the change occured. - - - - - Constructor. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The previous value. - The new value. - - Returns an initialized event. - - - - - Sets the event to its initial state. - - - - - Enum which describes the various types of changes that can occur on a VisualElement. - - - - - All change types have been flagged. - - - - - Persistence key or parent has changed on the current VisualElement. - - - - - Persistence key or parent has changed on some child of the current VisualElement. - - - - - Base class for command events. - - - - - Name of the command. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The command name. - An IMGUI command event. - - Returns an initialized event. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The command name. - An IMGUI command event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - The event sent when clicking the right mouse button. - - - - - Constructor. - - - - - Use this class to display a contextual menu. - - - - - Displays the contextual menu. - - The event that triggered the display of the menu. - The element for which the menu is displayed. - - - - Checks if the event triggers the display of the contextual menu. This method also displays the menu. - - The element for which the menu is displayed. - The event to inspect. - - - - Manipulator that displays a contextual menu when the user clicks the right mouse button or presses the menu key on the keyboard. - - - - - Constructor. - - - - - - Register the event callbacks on the manipulator target. - - - - - Unregister the event callbacks from the manipulator target. - - - - - The event sent when a contextual menu requires menu items. - - - - - The menu to populate. - - - - - The event that triggered the ContextualMenuPopulateEvent. - - - - - Constructor. - - - - - Retrieves an event from the event pool. Use this method to retrieve a mouse event and initialize the event, instead of creating a new mouse event. Events obtained from this method should be released back to the pool using Dispose(). - - The event that triggered the display of the contextual menu. - The menu to populate. - The element that triggered the display of the contextual menu. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - This class is used during UXML template instantiation. - - - - - Script interface for VisualElement cursor style property IStyle.cursor. - - - - - The offset from the top left of the texture to use as the target point (must be within the bounds of the cursor). - - - - - The texture to use for the cursor style. To use a texture as a cursor, import the texture with "Read/Write enabled" in the texture importer (or using the "Cursor" defaults). - - - - - Event sent just before an element is detach from its parent, if the parent is the descendant of a panel. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Base class for drag and drop events. - - - - - Use the DragEnterEvent class to manage events that occur when dragging enters an element or one of its descendants. The DragEnterEvent is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid renewing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - The event sent to a dragged element when the drag and drop process ends. - - - - - Constructor. - - - - - Resets the event members to their initial values. - - - - - Use the DragLeaveEvent class to manage events sent when dragging leaves an element or one of its descendants. The DragLeaveEvent is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid renewing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - The event sent to an element when another element is dragged and dropped on the element. - - - - - Constructor. - - - - - The event sent when the element being dragged enters a possible drop target. - - - - - Constructor. - - - - - A drop-down menu. - - - - - Add an item that will execute an action in the drop-down menu. The item is added at the end of the current item list. - - Name of the item. This name will be displayed in the drop-down menu. - Callback to execute when the user selects this item in the menu. - Callback to execute to determine the status of the item. - An object that will be stored in the userData property of the MenuAction item. - - - - Add a separator line in the menu. The separator is added at the end of the current item list. - - The submenu path where the separator will be added. Path components are delimited by forward slashes ('/'). - - - - Add a separator line in the menu. The separator is added at the end of the current item list. - - The submenu path where the separator will be added. Path components are delimited by forward slashes ('/'). - - - - Constructor. - - - - - A class holding information about the event that triggered the display of the drop-down menu. - - - - - If the triggering event was a mouse event, this property is the mouse position. The position is expressed using the coordinate system of the element that received the mouse event. Otherwise this property is zero. - - - - - If modifier keys (Alt, Control, Shift, Windows/Command) were pressed to trigger the display of the dropdown menu, this property lists the modifier keys. - - - - - If the triggering event was a mouse event, this property is the mouse position expressed using the global coordinate system. Otherwise this property is zero. - - - - - Constructor. - - - - - - Add an item that will execute an action in the drop-down menu. The item is added at the end of the specified index in the list. - - Name of the item. This name will be displayed in the drop-down menu. - Callback to execute when the user selects this item in the menu. - Callback to execute to determine the status of the item. - Index where the item should be inserted. - An object that will be stored in the userData property of the MenuAction item. This object is accessible through the action callback. - - - - Add a separator line in the menu. The separator is added at the end of the specified index in the list. - - Index where the separator should be inserted. - The submenu path where the separator is added. Path components are delimited by forward slashes ('/'). - - - - A menu action item. - - - - - Provides information on the event that triggered the drop-down menu. - - - - - The name of the item. The name can be prefixed by its submenu path. Path components are delimited by forward slashes ('/'). - - - - - The status of the item. - - - - - The userData object stored by the constructor. - - - - - Status callback that always returns StatusFlags.Disabled. - - Unused parameter. - - Always return StatusFlags.Disabled. - - - - - Status callback that always returns StatusFlags.Enabled. - - Unused parameter. - - Always return StatusFlags.Enabled. - - - - - Constructor. - - The path and name of the menu item. Use the path, delimited by forward slashes ('/'), to place the menu item within a submenu. - Action to be executed when the menu item is selected. - Function called to determine if the menu item is enabled. - An object that will be stored in the userData property. - - - - Execute the callback associated with this item. - - - - - Update the status flag of this item by calling the item status callback. - - Information about the event that triggered the display of the drop-down menu, such as the mouse position or the key pressed. - - - - An item in a drop-down menu. - - - - - Get the list of menu items. - - - The list of items in the menu. - - - - - Update the status of all items by calling their status callback and remove the separators in excess. This is called just before displaying the menu. - - - - - - Remove the menu item at index. - - The index of the item to remove. - - - - A separator menu item. - - - - - The submenu path where the separator will be added. Path components are delimited by forward slashes ('/'). - - - - - Constructor. - - The path for the submenu. Path components are delimited by forward slashes ('/'). - - - - The base class for all UIElements events. - - - - - Whether this event type bubbles up in the event propagation path. - - - - - The current target of the event. The current target is the element in the propagation path for which event handlers are currently being executed. - - - - - Whether the event is being dispatched to a visual element. An event cannot be redispatched while it being dispatched. If you need to recursively dispatch an event, it is recommended that you use a copy of the event. - - - - - Flags for the event. - - - - - The IMGUIEvent at the source of this event. The source can be null since not all events are generated by IMGUI. - - - - - Return true if the default actions should not be executed for this event. - - - - - Whether StopImmediatePropagation() was called for this event. - - - - - Whether StopPropagation() was called for this event. - - - - - The original mouse position of the IMGUI event, before it is transformed to the current target local coordinates. - - - - - Whether the event is allocated from a pool of events. - - - - - The current propagation phase. - - - - - The target visual element that received this event. Unlike currentTarget, this target does not change when the event is sent to other elements along the propagation path. - - - - - The time when the event was created. - - - - - Whether this event is sent down the event propagation path during the TrickleDown phase. - - - - - Implementation of IDisposable. - - - - - Retrieves the type id for this event instance. - - - The type ID. - - - - - Resets all event members to their initial values. - - - - - Whether the default actions are prevented from being executed for this event. - - - - - Registers an event class to the event type system. - - - The type ID. - - - - - Immediately stops the propagation of the event. The event is not sent to other elements along the propagation path. This method prevents other event handlers from executing on the current target. - - - - - Stops propagating this event. The event is not sent to other elements along the propagation path. This method does not prevent other event handlers from executing on the current target. - - - - - Generic base class for events, implementing event pooling and automatic registration to the event type system. - - - - - Implementation of IDispose. - - - - - Retrieves the type id for this event instance. - - - The type ID. - - - - - Gets an event from the event pool. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - - Returns an initialized event. - - - - - Resets all event members to their initial values. - - - - - Gets the type id for the event class. - - - The event class type id. - - - - - Dispatches events to a IPanel. - - - - - Gates control when the dispatcher processes events. - - - - - Constructor. - - The dispatcher controlled by this gate. - - - - Implementation of IDisposable.Dispose. Opens the gate. If all gates are open, events in the queue are processed. - - - - - The event sent when an element should execute a command. - - - - - Constructor. - - - - - Use this structure to set the IStyle.Flex shorthand property which sets the IStyle.flexGrow, IStyle.flexShrink, and IStyle.flexBasis properties. - - - - - The value for the IStyle.flexBasis property. - - - - - The value for the IStyle.flexBasis property. - - - - - The value for the IStyle.flexBasis property. - - - - - Constructor. - - - - - - - - Base class for objects that can get the focus. - - - - - Return true if the element can be focused. - - - - - Return the focus controller for this element. - - - - - An integer used to sort focusables in the focus ring. A negative value means that the element can not be focused. - - - - - Tell the element to release the focus. - - - - - Attempt to give the focus to this element. - - - - - Base class for defining in which direction the focus moves in a focus ring. - - - - - Last value for the direction defined by this class. - - - - - The null direction. This is usually used when the focus stays on the same element. - - - - - Focus came from an unspecified direction, for example after a mouse down. - - - - - The underlying integer value for this direction. - - - - - - Class in charge of managing the focus inside a Panel. - - - - - The currently focused element. - - - - - Constructor. - - - - - Ask the controller to change the focus according to the event. The focus controller will use its focus ring to choose the next element to be focused. - - - - - - Event sent immediately after an element has gained focus. This event trickles down, it does not bubble up, and it cannot be cancelled. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Base class for focus related events. - - - - - Direction of the focus change. - - - - - For FocusOut and Blur events, contains the element that gains the focus. For FocusIn and Focus events, contains the element that loses the focus. - - - - - Gets an event from the event pool and initializes the event with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The event target. - The related target. - The direction of the focus change. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Event sent immediately before an element gains focus. This event trickles down and bubbles up. This event cannot be cancelled. - - - - - Constructor. - - - - - Resets the event members to their initial values. - - - - - Event sent immediately before an element loses focus. This event trickles down and bubbles up. This event cannot be cancelled. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - Collapsable section of UI. - - - - - Contains the collapse state. True if the Foldout is open and the contents are visible. False if it's collapsed. - - - - - Instantiates a Foldout using the data read from a UXML file. - - - - - Constructor. - - - - - Event sent after layout calculations, when the position or the dimension of an element changes. This event cannot be cancelled, it does not trickle down, and it does not bubble up. - - - - - The new dimensions of the element. - - - - - The old dimensions of the element. - - - - - Constructor. - - - - - Gets an event from the event pool and initializes the event with the specified values. Use this method instead of instancing new events. Use Dispose() to release events back to the event pool. - - The old dimensions of the element. - The new dimensions of the element. - - Returns an initialized event. - - - - - Resets the event values to their initial values. - - - - - Interface for all bindable fields. - - - - - Binding object that will be updated. - - - - - Path of the target property to be bound. - - - - - Base interface for Binding objects. - - - - - Called at regular intervals to synchronize bound properties to their IBindable counterparts. Called before the Update() method. - - - - - Disconnects the field from its bound property - - - - - Called at regular intervals to synchronize bound properties to their IBindable counterparts. - - - - - Extensions methods to provide additional IBindable functionality. - - - - - Checks if a IBindable is bound to a property. - - This Bindable object. - - Returns true if this IBindable is bound to a property. - - - - - Base interface for ChangeEvent. - - - - - Interface for Command events. - - - - - Name of the command. - - - - - Interface for drag and drop events. - - - - - Interface for class capable of handling events. - - - - - Handle an event. - - The event to handle. - - - - Return true if event handlers for the event propagation BubbleUp phase have been attached on this object. - - - True if object has event handlers for the BubbleUp phase. - - - - - Returns true if event handlers, for the event propagation TrickleDown phase, are attached to this object. - - - Returns true if the object already has event handlers for the TrickleDown phase. - - - - - Sends an event to the event handler. - - The event to send. - - - - Interface for focus events. - - - - - Direction of the focus change. - - - - - Related target. See implementation for specific meaning. - - - - - Interface for classes implementing focus rings. - - - - - Get the direction of the focus change for the given event. For example, when the Tab key is pressed, focus should be given to the element to the right. - - - - - - - Get the next element in the given direction. - - - - - - - Interface for keyboard events. - - - - - Returns true if the platform specific action key is pressed. This key is Command on macOS and Control otherwise. - - - - - Return true if the Alt key is pressed. - - - - - The character. - - - - - Return true if the Windows/Command key is pressed. - - - - - Return true if the Control key is pressed. - - - - - The key code. - - - - - Flag set holding the pressed modifier keys (Alt, Control, Shift, Windows/Command). - - - - - Return true if the Shift key is pressed. - - - - - A VisualElement representing a source texture. - - - - - The source texture of the Image element. - - - - - The source rectangle inside the texture relative to the top left corner. - - - - - The base texture coordinates of the Image relative to the bottom left corner. - - - - - Instantiates an Image using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Image. - - - - - Returns an empty enumerable, as images generally do not have children. - - - - - Constructor. - - - - - An interface for Manipulator classes. - - - - - The element that handles the interaction. - - - - - Element that draws IMGUI content. - - - - - Indicate whether this element can be focused. - - - - - Indicate the type of context this element is associated with. See ContextType. - - - - - Construct an element used to draw IMGUI elements. - - The function called when drawing is in-progress. - - - - Construct an element used to draw IMGUI elements. - - The function called when drawing is in-progress. - - - - This method is called whenever a Repaint is required from the VisualElement. - - - - - - This method is called as part of the IEventHandler interface. - - EventBase representing the event to be handled. - - - - Marks layout as dirty to trigger a redraw. - - - - - Instantiates an IMGUIContainer using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the IMGUIContainer. - - - - - Returns an empty enumerable, as IMGUIContainer cannot have VisualElement children. - - - - - Constructor. - - - - - Class used to send a IMGUI event that has no equivalent UIElements event. - - - - - Constructor. Use GetPooled() to get an event from a pool of reusable events. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The IMGUI event used to initialize the event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Interface for mouse capture events. - - - - - Interface for mouse events. - - - - - Returns true if the platform specific action key is pressed. This key is Command on macOS and Control otherwise. - - - - - Return true if the Alt key is pressed. - - - - - Integer representing the pressed mouse button: 0 is left, 1 is right, 2 is center. - - - - - Number of clicks. - - - - - Return true if the Windows/Command key is pressed. - - - - - Return true if the Control key is pressed. - - - - - The mouse position in the current target coordinate system. - - - - - Flag set holding the pressed modifier keys (Alt, Control, Shift, Windows/Command). - - - - - Mouse position difference between the last mouse event and this one. - - - - - The mouse position in the panel coordinate system. - - - - - Return true if the Shift key is pressed. - - - - - Interface for controls that hold a value and can notify when it is changed by user input. - - - - - The Value held by the control. - - - - - Registers this callback to receive ChangeEvent<T> when value is changed by user input. - - - - - - Unregisters this callback from receiving ChangeEvent<T> when value is changed by user input. - - - - - - Set the value and, if different, notifies registers callbacks with a ChangeEvent<T> - - The new value to be set. - - - - Set the value and, even if different, does not notify registers callbacks with a ChangeEvent<T> - - The new value to be set. - - - - Sends an event when text from a TextField changes. - - - - - The new text. - - - - - The text before the change occured. - - - - - Constructor. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The new text. - The text before the change occured. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Interface for classes implementing UI panels. - - - - - Return the focus controller for this panel. - - - - - Interface for panel change events. - - - - - A reference to a scheduled action. - - - - - A scheduler allows you to register actions to be executed at a later point. - - - - - Add this item to the list of scheduled tasks. - - The item to register. - - - - Schedule this action to be executed later. The item will be automatically unscheduled after it has ran for the amount of time specified with the durationMs parameter. - - Action to be executed. - The minimum delay in milliseconds before executing the action. - The minimum interval in milliseconds between each execution. - The total duration in milliseconds where this item will be active. - - Internal reference to the scheduled action. - - - - - Schedule this action to be executed later. After the execution, the item will be automatically unscheduled. - - Action to be executed. - The minimum delay in milliseconds before executing the action. - - Internal reference to the scheduled action. - - - - - Schedule this action to be executed later. Item will be unscheduled when condition is met. - - Action to be executed. - The minimum delay in milliseconds before executing the action. - The minimum interval in milliseconds bettwen each execution. - When condition returns true, the item will be unscheduled. - - Internal reference to the scheduled action. - - - - - Manually unschedules a previously scheduled action. - - The item to be removed from this scheduler. - - - - This interface provides access to a VisualElement style data. - - - - - Alignment of the whole area of children on the cross axis if they span over multiple lines in this container. - - - - - Alignment of children on the cross axis of this container. - - - - - Similar to align-items, but only for this specific element. - - - - - Background color to paint in the element's box. - - - - - Background image to paint in the element's box. - - - - - Background image scaling in the element's box. - - - - - Space reserved for the bottom edge of the border during the layout phase. - - - - - This is the radius of the bottom-left corner when a rounded rectangle is drawn in the element's box. - - - - - This is the radius of the bottom-right corner when a rounded rectangle is drawn in the element's box. - - - - - Space reserved for the bottom edge of the border during the layout phase. - - - - - Color of the border to paint inside the element's box. - - - - - Space reserved for the left edge of the border during the layout phase. - - - - - Space reserved for the left edge of the border during the layout phase. - - - - - This is the radius of every corner when a rounded rectangle is drawn in the element's box. - - - - - Space reserved for the right edge of the border during the layout phase. - - - - - Space reserved for the right edge of the border during the layout phase. - - - - - Space reserved for the top edge of the border during the layout phase. - - - - - This is the radius of the top-left corner when a rounded rectangle is drawn in the element's box. - - - - - This is the radius of the top-right corner when a rounded rectangle is drawn in the element's box. - - - - - Space reserved for the top edge of the border during the layout phase. - - - - - Color to use when drawing the text of an element. - - - - - Mouse cursor to display when the mouse pointer is over an element. - - - - - Ration of this element in its parent during the layout phase. - - - - - Initial main size of a flex item, on the main flex axis. The final layout mught be smaller or larger, according to the flex shrinking and growing determined by the flex property. - - - - - Direction of the main axis to layout children in a container. - - - - - Specifies how much the item will grow relative to the rest of the flexible items inside the same container. - - - - - Specifies how the item will shrink relative to the rest of the flexible items inside the same container. - - - - - Placement of children over multiple lines if not enough space is available in this container. - - - - - Font to draw the element's text. - - - - - Font size to draw the element's text. - - - - - Font style and weight (normal, bold, italic) to draw the element's text. - - - - - Fixed height of an element for the layout. - - - - - Justification of children on the main axis of this container. - - - - - Space reserved for the bottom edge of the margin during the layout phase. - - - - - Space reserved for the left edge of the margin during the layout phase. - - - - - Space reserved for the right edge of the margin during the layout phase. - - - - - Space reserved for the top edge of the margin during the layout phase. - - - - - Maximum height for an element, when it is flexible or measures its own size. - - - - - Maximum width for an element, when it is flexible or measures its own size. - - - - - Minimum height for an element, when it is flexible or measures its own size. - - - - - Minimum height for an element, when it is flexible or measures its own size. - - - - - Space reserved for the bottom edge of the padding during the layout phase. - - - - - Space reserved for the left edge of the padding during the layout phase. - - - - - Space reserved for the right edge of the padding during the layout phase. - - - - - Space reserved for the top edge of the padding during the layout phase. - - - - - Bottom distance from the element's box during layout. - - - - - Left distance from the element's box during layout. - - - - - Right distance from the element's box during layout. - - - - - Top distance from the element's box during layout. - - - - - Element's positioning in its parent container. - - - - - Size of the 9-slice's bottom edge when painting an element's background image. - - - - - Size of the 9-slice's left edge when painting an element's background image. - - - - - Size of the 9-slice's right edge when painting an element's background image. - - - - - Size of the 9-slice's top edge when painting an element's background image. - - - - - Clipping if the text does not fit in the element's box. - - - - - Horizontal and vertical text alignment in the element's box. - - - - - Specifies whether or not an element is visible. - - - - - Fixed width of an element for the layout. - - - - - Word wrapping over multiple lines if not enough space is available to draw the text of an element. - - - - - This interface provides access to a VisualElement transform data. - - - - - Transformation matrix calculated from the position, rotation and scale of the transform (Read Only). - - - - - The position of the VisualElement's transform. - - - - - The rotation of the VisualElement's transform stored as a Quaternion. - - - - - The scale of the VisualElement's transform. - - - - - Interface allowing access to this elements datawatch. - - - - - Starts watching an object. When watched, all changes on an object will trigger the callback to be invoked. - - The object to watch. - Callback. - - A reference to this datawatch request. Disposing it will ensure any native resources will also be released. - - - - - Unregisters a previously watched request. - - The registered request. - - - - An internal reference to a data watch request. - - - - - This type allows UXML attribute value retrieval during the VisualElement instantiation. An instance will be provided to the factory method - see UXMLFactoryAttribute. - - - - - Get the value of an attribute as a string. - - Attribute name. - The attribute value or null if not found. - - True if the attribute was found, false otherwise. - - - - - Interface for UXML factories. While it is not strictly required, concrete factories should derive from the generic class UxmlFactory. - - - - - Must return true if the UXML element attributes are not restricted to the values enumerated by uxmlAttributesDescription. - - - - - The type of element for which this element type can substitute for. - - - - - The UXML namespace for the type returned by substituteForTypeName. - - - - - The fully qualified XML name for the type returned by substituteForTypeName. - - - - - Describes the UXML attributes expected by the element. The attributes enumerated here will appear in the UXML schema. - - - - - Describes the types of element that can appear as children of this element in a UXML file. - - - - - The name of the UXML element read by the factory. - - - - - The namespace of the UXML element read by the factory. - - - - - The fully qualified name of the UXML element read by the factory. - - - - - Returns true if the factory accepts the content of the attribute bag. - - The attribute bag. - - True if the factory accepts the content of the attribute bag. False otherwise. - - - - - Instanciate and initialize an object of type T0. - - A bag of name-value pairs, one for each attribute of the UXML element. This can be used to initialize the properties of the created object. - When the element is created as part of a template instance inserted in another document, this contains information about the insertion point. - - The created object. - - - - - Represents a scheduled task created with a VisualElement's schedule interface. - - - - - Returns the VisualElement this object is associated with. - - - - - Will be true when this item is scheduled. Note that an item's callback will only be executed when it's VisualElement is attached to a panel. - - - - - Repeats this action after a specified time. - - Minimum amount of time in milliseconds between each action execution. - - This ScheduledItem. - - - - - Cancels any previously scheduled execution of this item and re-schedules the item. - - Minimum time in milliseconds before this item will be executed. - - - - After specified duration, the item will be automatically unscheduled. - - The total duration in milliseconds where this item will be active. - - This ScheduledItem. - - - - - Removes this item from its VisualElement's scheduler. - - - - - If not already active, will schedule this item on its VisualElement's scheduler. - - - - - Adds a delay to the first invokation. - - The minimum number of milliseconds after activation where this item's action will be executed. - - This ScheduledItem. - - - - - Item will be unscheduled automatically when specified condition is met. - - When condition returns true, the item will be unscheduled. - - This ScheduledItem. - - - - - A scheduler allows you to register actions to be executed at a later point. - - - - - Schedule this action to be executed later. - - The action to be executed. - The action to be executed. - - Reference to the scheduled action. - - - - - Schedule this action to be executed later. - - The action to be executed. - The action to be executed. - - Reference to the scheduled action. - - - - - Base class for keyboard events. - - - - - Returns true if the platform specific action key is pressed. This key is Command on macOS and Control otherwise. - - - - - Returns true if the Alt key is pressed. - - - - - The character. - - - - - Returns true if the Windows/Command key is pressed. - - - - - Returns true if the Control key is pressed. - - - - - The key code. - - - - - Flags holding the pressed modifier keys (Alt, Control, Shift, Windows/Command). - - - - - Returns true if the Shift key is pressed. - - - - - Gets a keyboard event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The character for this event. - The keyCode for this event. - Event modifier keys that are active for this event. - A keyboard IMGUI event. - - Returns an initialized event. - - - - - Gets a keyboard event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The character for this event. - The keyCode for this event. - Event modifier keys that are active for this event. - A keyboard IMGUI event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Event sent when a key is pressed on the keyboard. This event trickles down and bubbles up. This event is cancellable. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Event sent when a key is released on the keyboard. This event trickles down and bubbles up. This event is cancellable. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Provides an Element displaying text. - - - - - Constructs a label. - - The text to be displayed. - - - - Constructs a label. - - The text to be displayed. - - - - Instantiates a Label using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Label. - - - - - Constructor. - - - - - A vertically scrollable area that only creates visual elements for visible items while allowing the binding of many more items. As the user scrolls, visual elements are recycled and re-bound to new data items. - - - - - Callback for binding a data item to the visual element. - - - - - ListView requires all visual elements to have the same height so that it can calculate a sensible scroller size. This property must be set for the list view to function. - - - - - The items data source. This property must be set for the list view to function. - - - - - Callback for constructing the VisualElement that will serve as the template for each recycled and re-bound element in the list. This property must be set for the list view to function. - - - - - Callback for when an item is chosen (double-click). This is different from just a selection. - - The chosen item. - - - - Callback for a selection change. - - List of selected items. - - - - Currently selected item index in the items source. If multiple items are selected, this will return the first selected item's index. - - - - - The currently selected item from the items source. If multiple items are selected, this will return the first selected item. - - - - - Controls the selection state, whether: selections are disabled, there is only one selectable item, or if there are multiple selectable items. - - - - - Clear, recreate all visible visual elements, and rebind all items. This should be called whenever the items source changes. - - - - - Scroll to a specific visual element. - - Element to scroll to. - - - - Scroll so that a specific item index from the items source is visible. - - Item index to scroll to. - - - - Instantiates a ListView using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ListView. - - - - - Returns an empty enumerable, as list views generally do not have children. - - - - - Constructor. - - - - - Initialize ListView properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Base class for objects that define user interaction with a VisualElement. Most often manipulators hold state for complex interactions, for example interactions that require a mouse down, mouse move mouse up sequence. - - - - - The element that handles the interaction. - - - - - Register event callbacks on the target visual element. - - - - - Unregister event callbacks on the target visual element. - - - - - Used by manipulators to match events against their requirements. - - - - - The button that activates the manipulation. - - - - - Number of mouse clicks required to activate the manipulator. - - - - - Any modifier keys (ie. ctrl, alt, ...) that are needed to activate the manipulation. - - - - - Returns true if the current mouse event satisfies the activation requirements. - - The mouse event. - - True if the event matches the requirements. - - - - - A min/max slider containing a representation of a range. - - - - - This is the high limit of the slider. - - - - - This is the low limit of the slider. - - - - - This is the high value of the range represented on the slider. - - - - - This is the low value of the range represented on the slider. - - - - - Returns the range of the low/high limits of the slider. - - - - - This is the value of the slider. This is a Vector2 where the x is the lower bound and the y is the higher bound. - - - - - Constructor. - - The minimum value in the range to be represented. - The maximum value in the range to be represented. - The minimum value of the slider limit. - The maximum value of the slider limit. - This is the sldier direction, for now, only Horizontal is supported. - - - - Constructor. - - The minimum value in the range to be represented. - The maximum value in the range to be represented. - The minimum value of the slider limit. - The maximum value of the slider limit. - This is the sldier direction, for now, only Horizontal is supported. - - - - Instantiates a MinMaxSlider using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the MinMaxSlider. - - - - - Constructor. - - - - - Initialize MinMaxSlider properties using values from the attribute bag. - - The element to initialize. - The bag of attributes. - Creation Context, unused. - - - - Class that manages capturing mouse events. - - - - - Assigns an event handler to capture mouse events. - - The event handler that captures mouse events. - - - - Checks if the event handler is capturing the mouse. - - Event handler to check. - - True if the handler captures the mouse. - - - - - Checks if there is a handler capturing the mouse. - - - Returns true if a handler is capturing the mouse, false otherwise. - - - - - Stops an event handler from capturing the mouse. - - The event handler to stop capturing the mouse. If this handler is not assigned to capturing the mouse, nothing happens. - - - - Stops an event handler from capturing the mouse. - - The event handler to stop capturing the mouse. If this handler is not assigned to capturing the mouse, nothing happens. - - - - Event sent after a handler starts capturing the mouse. - - - - - Constructor. - - - - - Event sent when the handler capturing the mouse changes. - - - - - In the case of a MouseCaptureEvent, this property is the IEventHandler that loses the capture. In the case of a MouseCaptureOutEvent, this property is the IEventHandler that gains the capture. - - - - - Retrieves an event from the event pool. Use this method to retrieve a mouse event and initialize the event, instead of creating a new mouse event. Events obtained from this method should be released back to the pool using Dispose(). - - The handler taking or releasing the mouse capture. - The related target. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Event sent before a handler stops capturing the mouse. - - - - - Constructor. - - - - - Mouse down event. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Event sent when the mouse pointer enters an element or one of its descendent elements. The event is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - Event sent when the mouse pointer enters a window. The event is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - The base class for mouse events. - - - - - Returns true if the platform specific action key is pressed. This key is Command on macOS and Control otherwise. - - - - - Returns true if the Alt key is pressed. - - - - - Integer representing the pressed mouse button: 0 is left, 1 is right, 2 is center. - - - - - Number of clicks. - - - - - Returns true if the Windows/Command key is pressed. - - - - - Returns true if the Control key is pressed. - - - - - The current target of the event. The current target is the element in the propagation path for which event handlers are currently being executed. - - - - - The mouse position in the current target coordinate system. - - - - - Flags holding the pressed modifier keys (Alt, Control, Shift, Windows/Command). - - - - - The difference of the mouse position between the previous mouse event and the current mouse event. - - - - - The mouse position in the screen coordinate system. - - - - - Returns true if the Shift key is pressed. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - A mouse IMGUI event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Event sent when the mouse pointer exits an element and all its descendent elements. The event is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - Event sent when the mouse pointer exits a window. The event is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - Mouse move event. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Event sent when the mouse pointer exits an element. The event trickles down, it bubbles up, and it is cancellable. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Event sent when the mouse pointer enters an element. The event trickles down, it bubbles up, and it is cancellable. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Mouse up event. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Abstract base class for events notifying of a panel change. - - - - - In the case of AttachToPanelEvent, the panel to which the event target element is now attached. In the case of DetachFromPanelEvent, the panel to which the event target element will be attached. - - - - - In the case of AttachToPanelEvent, the panel to which the event target element was attached. In the case of DetachFromPanelEvent, the panel from which the event target element is detached. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - Sets the originPanel property of the event. - Sets the destinationPanel property of the event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Styled visual element that matches the EditorGUILayout.Popup IMGUI element. - - - - - Instantiates a PopupWindow using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the PopupWindow. - - - - - Returns an empty enumerable, as popup windows generally do not have children. - - - - - Constructor. - - - - - The propagation phases of an event. - - - - - The event is being sent to the event target. - - - - - The event is being sent to the event target parent element up to the root element. - - - - - The event is being sent to the target element for it to execute its default actions for this event. Event handlers do not get the events in this phase. Instead, ExecuteDefaultAction is called on the target. - - - - - The event is not being propagated. - - - - - The event is being sent from the root element to the target parent element. - - - - - A button that executes an action repeatedly while it is pressed. - - - - - Constructor. - - The action to execute when the button is pressed. - The initial delay before the action is executed for the first time. - The interval between each execution of the action. - - - - Constructor. - - The action to execute when the button is pressed. - The initial delay before the action is executed for the first time. - The interval between each execution of the action. - - - - Set the action that should be executed when the button is pressed. - - The action to execute. - The initial delay before the action is executed for the first time. - The interval between each execution of the action. - - - - Instantiates a RepeatButton using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the RepeatButton. - - - - - Constructor. - - - - - Initialize RepeatButton properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - A vertical or horizontal scrollbar. - - - - - Direction of this scrollbar. - - - - - Top or right scroll button. - - - - - Maximum value. - - - - - Bottom or left scroll button. - - - - - Minimum value. - - - - - The slider used by this scroller. - - - - - Value that defines the slider position. It lies between lowValue and highValue. - - - - - Event sent when the slider value has changed. - - - - - - Updates the slider element size as a ratio of the total range. A value greater than 1 disables the Scroller. - - Slider size ratio. - - - - Constructor for this element. - - The minimum value represented by lowValue. - The maximum value represented by highValue. - The event method that is called when the value changes. - The slider direction. See SliderDirection. - - - - Constructor for this element. - - The minimum value represented by lowValue. - The maximum value represented by highValue. - The event method that is called when the value changes. - The slider direction. See SliderDirection. - - - - Changes the value according to the current slider pageSize. - - The factor that applies to the scroll down action. Set to 1 to scroll down by 1 page. Set to a value greater than 1 to scroll down by over a page. - - - - Changes the value according to the current slider pageSize. - - The factor that applies to the scroll down action. Set to 1 to scroll down by 1 page. Set to a value greater than 1 to scroll down by over a page. - - - - Changes the value according to the current slider pageSize. - - The factor that applies to the scroll up action. Set to 1 to scroll up by 1 page. Set to a value greater than 1 to scroll up by over a page. - - - - Changes the value according to the current slider pageSize. - - The factor that applies to the scroll up action. Set to 1 to scroll up by 1 page. Set to a value greater than 1 to scroll up by over a page. - - - - Instantiates a Scroller using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Scroller. - - - - - Returns an empty enumerable, as scrollers do not have children. - - - - - Constructor. - - - - - Initialize Scroller properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - For internal use only. The button used by the Scroller. - - - - - Clickable manipulator. - - - - - Constructor. - - The method called when a click event occurs. - Sets a delay for when the event begins. The delay is only applied if the specified value is greater than 0. - Determines the time delta between event repetitions. The interval is only applied if the specified value is greater than 0. - - - - Constructor. - - The method called when a click event occurs. - Sets a delay for when the event begins. The delay is only applied if the specified value is greater than 0. - Determines the time delta between event repetitions. The interval is only applied if the specified value is greater than 0. - - - - Instantiates a ScrollerButton using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ScrollerButton. - - - - - Returns an empty enumerable, as buttons generally do not have children. - - - - - Constructor. - - - - - Initialize ScrollerButton properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Displays its contents inside a scrollable frame. - - - - - Contains the full content that could be partially visible. - - - - - Obsolete. Use contentContainer instead. - - - - - Represents the visible area of contentContainer. - - - - - This property is controlling the scrolling speed of the horizontal scroller. - - - - - Horizontal scrollbar. - - - - - Whether the view contents fit the horizontal area. - - - - - Whether the view contents fit the vertical area. - - - - - The current scrolling position. - - - - - Whether the horizontal scroller is visible. - - - - - Whether the vertical scroller is visible. - - - - - Indicates whether the content of ScrollView should fill the width of its viewport. The default value is false. - - - - - This property is controlling the scrolling speed of the vertical scroller. - - - - - Vertical Scrollbar. - - - - - Constructor. - - - - - Scroll to a specific child element. - - The child to scroll to. - - - - Replaces the contentContainer with this element. The previous contents container will be removed the hierarchy - - The element to display in this ScrollView - - - - Instantiates a ScrollView using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ScrollView. - - - - - Constructor. - - - - - Initialize ScrollView properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Controls how many items can be selected at once. - - - - - Multiple items are selectable at once. - - - - - Selections are disabled. - - - - - Only one item is selectable. - - - - - Experimental.UIElements.Slider is a controller allowing the selection of a value from a range (min, max, value). - - - - - Instantiates a Slider using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Slider. - - - - - Returns an empty enumerable, as sliders generally do not have children. - - - - - Constructor. - - - - - Initialize Slider properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - This is the direction of the Slider and SliderInt. - - - - - An horizontal slider is made with a SliderDirection Horizontal. - - - - - An vertical slider is made with a SliderDirection Vertical. - - - - - A slider containing Integer discrete values. - - - - - The value to add or remove to the SliderInt.value when it is clicked. - - - - - Constructors for the SliderInt. - - This is the low value of the slider. - This is the high value of the slider. - This is the slider direction, horizontal or vertical. - This is the number of values to change when the slider is clicked. - - - - Constructors for the SliderInt. - - This is the low value of the slider. - This is the high value of the slider. - This is the slider direction, horizontal or vertical. - This is the number of values to change when the slider is clicked. - - - - Instantiates a SliderInt using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the SliderInt. - - - - - Returns an empty enumerable, as sliders generally do not have children. - - - - - Constructor. - - - - - Initialize SliderInt properties using values from the attribute bag. - - The object to initialize. - The bag of attributes. - The creation context; unused. - - - - This enumeration contains values to control how an element is aligned in its parent during the layout phase. - - - - - Default value (currently FlexStart). - - - - - Items are centered on the cross axis. - - - - - Items are aligned at the end on the cross axis. - - - - - Items are aligned at the beginning on the cross axis. - - - - - Stretches items on the cross axis. - - - - - This enumeration defines values used to control in which direction a container will place its children during layout. - - - - - Vertical layout. - - - - - Vertical layout in reverse order. - - - - - Horizontal layout. - - - - - Horizontal layout in reverse order. - - - - - This enumeration contains values to control how children are justified during layout. - - - - - Items are centered. - - - - - Items are justified towards the end of the layout direction. - - - - - Items are justified towards the beginning of the main axis. - - - - - Items are evenly distributed in the line with extra space on each end of the line. - - - - - Items are evenly distributed in the line; first item is at the beginning of the line, last item is at the end. - - - - - This enumeration contains values to control how an element is positioned in its parent container. - - - - - The element is positioned in relation to its parent box and does not contribute to the layout anymore. - - - - - The element is positioned in relation to its default box as calculated by layout. - - - - - This enumeration contains values to specify whether or not an element is visible. - - - - - The picking and rendering of this element is skipped. It still takes space in the layout. - - - - - The element is drawn normally (default). - - - - - This enumeration contains values to control how elements are placed in a container if not enough space is available. - - - - - All elements are placed on the same line. - - - - - Elements are placed over multiple lines. - - - - - Elements are placed over multiple lines with new lines occuring in the reverse order set in the container. - - - - - This interface exposes methods to read custom style properties applied from USS files to visual elements. - - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - This generic structure encodes a value type that can come from USS or be specified programmatically. - - - - - This represents the default value for a StyleValue<T> of the according generic type. - - - - - The actual value of the StyleValue<T>. - - - - - Creates a StyleValue of the according generic type directly from a value. - - Value to be used as inline style. - - The result StyleValue<T> - - - - - This constructor can be used to specified an alternate default value but it is recommended to use StyleValue<T>.nil. - - Default starting value. - - - - Utility function to be used when reading custom styles values and provide a default value in one step. - - Default value to be returned if no value is set. - - The value to be used for the custom style. - - - - - Template Container. - - - - - Instantiates and clones a TemplateContainer using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the TemplateContainer. - - - - - Returns an empty enumerable, as template instance do not have children. - - - - - Constructor. - - - - - Initialize TemplateContainer properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Abstract base class for VisualElement containing text. - - - - - The text associated with the element. - - - - - Computes the size needed to display a text string based on element style values such as font, font-size, word-wrap, and so on. - - The text to measure. - Suggested width. Can be zero. - Width restrictions. - Suggested height. - Height restrictions. - - Returns the horizontal and vertical size needed to display the text string. - - - - - Instantiates a TextElement using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the TextElement. - - - - - Enumerator to get the child elements of the UxmlTraits of TextElement. - - - - - Constructor. - - - - - Initializer for the UxmlTraits for the TextElement. - - VisualElement to initialize. - Bag of attributes where to get the value from. - Creation Context, not used. - - - - A textfield is a rectangular area where the user can edit a string. - - - - - Set this to true to mask the characters and false if otherwise. - - - - - Set this to true to allow multiple lines in the textfield and false if otherwise. - - - - - The string currently being exposed by the field. - - - - - Creates a new textfield. - - The maximum number of characters this textfield can hold. If 0, there is no limit. - Set this to true to allow multiple lines in the textfield and false if otherwise. - Set this to true to mask the characters and false if otherwise. - The character used for masking in a password field. - - - - Creates a new textfield. - - The maximum number of characters this textfield can hold. If 0, there is no limit. - Set this to true to allow multiple lines in the textfield and false if otherwise. - Set this to true to mask the characters and false if otherwise. - The character used for masking in a password field. - - - - Called when the persistent data is accessible and/or when the data or persistence key have changed (VisualElement is properly parented). - - - - - Selects text in the textfield between cursorIndex and selectionIndex. - - The caret and selection start position. - The selection end position. - - - - Instantiates a TextField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the TextField. - - - - - Constructor. - - - - - Initialize TextField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Abstract base class used for all text-based fields. - - - - - Color of the cursor. - - - - - The current cursor position index in the text input field. - - - - - Controls whether double clicking selects the word under the mouse pointer or not. - - - - - If set to true, the value property is not updated until either the user presses Enter or the text field loses focus. - - - - - Returns true if the field is used to edit a password. - - - - - The character used for masking in a password field. - - - - - Maximum number of characters for the field. - - - - - The current selection position index in the text input field. - - - - - Background color of selected text. - - - - - Controls whether triple clicking selects the entire line under the mouse pointer or not. - - - - - Add menu items to the text field contextual menu. - - The event holding the menu to populate. - - - - Constructor. - - Maximum number of characters for the field. - The character used for masking in a password field. - - - - Selects all the text. - - - - - UxmlTraits for the TextInputFieldBase. - - - - - Constructor. - - - - - Initialize TextInputFieldBase properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - This is the Toggle field. - - - - - Optional text after the toggle. - - - - - (Obsolete) Sets the event callback for this toggle button. Use OnValueChanged() instead. - - The action to be called when this Toggle is clicked. - - - - Instantiates a Toggle using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Toggle. - - - - - Constructor. - - - - - Initialize Toggle properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Event sent to find the first element that displays a tooltip. - - - - - Rectangle of the hovered element in the panel coordinate system. - - - - - Text to display inside the tooltip box. - - - - - Resets the event members to their initial values. - - - - - Use this enum to specify during which phases the event handler is executed. - - - - - The event handler should be executed during the AtTarget and BubbleUp phases. - - - - - The event handler should be executed during the TrickleDown and AtTarget phases. - - - - - UQuery is a set of extension methods allowing you to select individual or collection of visualElements inside a complex hierarchy. - - - - - Utility Object that contructs a set of selection rules to be ran on a root visual element. - - - - - Selects all elements that are active. - - - A QueryBuilder with the selection rules. - - - - - Convenience overload, shorthand for Build().AtIndex(). - - - - - - Compiles the selection rules into a QueryState object. - - - - - Selects all elements that are checked. - - - - - Selects all direct child elements of elements matching the previous rules. - - - - - - - - Selects all direct child elements of elements matching the previous rules. - - - - - - - - Selects all elements with the given class. Not to be confused with Type (see OfType<>()). - - - - - - Initializes a QueryBuilder. - - The root element on which to condfuct the search query. - - - - Selects all elements that are descendants of currently matching ancestors. - - - - - - - - Selects all elements that are descendants of currently matching ancestors. - - - - - - - - Selects all elements that are enabled. - - - - - Convenience overload, shorthand for Build().First(). - - - The first element matching all the criteria, or null if none was found. - - - - - Selects all elements that are enabled. - - - - - Convenience overload, shorthand for Build().ForEach(). - - The function to be invoked with each matching element. - - - - Convenience overload, shorthand for Build().ForEach(). - - The function to be invoked with each matching element. - Each return value will be added to this list. - - - - Convenience overload, shorthand for Build().ForEach(). - - The function to be invoked with each matching element. - - Returns a list of all the results of the function calls. - - - - - Selects all elements that are hovered. - - - - - Convenience overload, shorthand for Build().Last(). - - - The last element matching all the criteria, or null if none was found. - - - - - Selects element with this name. - - - - - - Selects all elements that are not active. - - - - - Selects all elements that npot checked. - - - - - Selects all elements that are not enabled. - - - - - Selects all elements that don't currently own the focus. - - - - - Selects all elements that are not hovered. - - - - - Selects all elements that are not selected. - - - - - Selects all elements that are not visible. - - - - - Selects all elements of the specified Type (eg: Label, Button, ScrollView, etc). - - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Selects all elements of the specified Type (eg: Label, Button, ScrollView, etc). - - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Selects all elements that are selected. - - - - - Convenience method. shorthand for Build().ToList. - - - Returns a list containing elements satisfying selection rules. - - - - - Convenience method. Shorthand gor Build().ToList(). - - Adds all elements satisfying selection rules to the list. - - - - Selects all elements that are visible. - - - - - Selects all elements satifying the predicate. - - Predicate that must return true for selected elements. - - QueryBuilder configured with the associated selection rules. - - - - - Query object containing all the selection rules. Can be saved and rerun later without re-allocating memory. - - - - - Selects the n th element matching all the criteria, or null if not enough elements were found. - - The index of the matched element. - - The match element at the specified index. - - - - - The first element matching all the criteria, or null if none was found. - - - The first element matching all the criteria, or null if none was found. - - - - - Invokes function on all elements matching the query. - - The action to be invoked with each matching element. - - - - Invokes function on all elements matching the query. - - Each return value will be added to this list. - The function to be invoked with each matching element. - - - - Invokes function on all elements matching the query. Overloaded for convenience. - - The function to be invoked with each matching element. - - Returns a list of all the results of the function calls. - - - - - The last element matching all the criteria, or null if none was found. - - - The last element matching all the criteria, or null if none was found. - - - - - Creates a new QueryState with the same selection rules, applied on another VisualElement. - - The element on which to apply the selection rules. - - A new QueryState with the same selection rules, applied on this element. - - - - - Returns a list containing elements satisfying selection rules. - - - Returns a list containing elements satisfying selection rules. - - - - - Adds all elements satisfying selection rules to the list. - - Adds all elements satisfying selection rules to the list. - - - - UQuery is a set of extension methods allowing you to select individual or collection of visualElements inside a complex hierarchy. - - - - - Convenience overload, shorthand for Query<T>.Build().First(). - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - The first element matching all the criteria, or null if none was found. - - - - - Convenience overload, shorthand for Query<T>.Build().First(). - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - The first element matching all the criteria, or null if none was found. - - - - - Initializes a QueryBuilder with the specified selection rules. - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Initializes a QueryBuilder with the specified selection rules. - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Initializes a QueryBuilder with the specified selection rules. Template parameter specifies the type of elements the selector applies to (ie: Label, Button, etc). - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Initializes a QueryBuilder with the specified selection rules. Template parameter specifies the type of elements the selector applies to (ie: Label, Button, etc). - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Initializes an empty QueryBuilder on a specified root element. - - Root VisualElement on which the selector will be applied. - - An empty QueryBuilder on a specified root element. - - - - - Base class for describing an XML attribute. - - - - - The default value for the attribute, as a string. - - - - - The attribute name. - - - - - A list of obsolete names for this attribute. - - - - - Restrictions on the possible values of the attribute. - - - - - Attribute type. - - - - - Attribute namespace. - - - - - Whether the attribute is optional, required or prohibited. - - - - - Get the attribute value from the attribute bag. - - A bag containg attributes and their values as strings. - The context in which the values are retrieved. - A function to convert a string value to type T. - The value to return if the attribute is not found in the bag. - - The attribute value from the bag, or defaultValue if the attribute is not found. - - - - - An enum to describe attribute use. - - - - - There is no restriction on the use of this attribute with the element. - - - - - The attribute is optional for the element. - - - - - The attribute should not appear for the element. - - - - - The attribute must appear in the element tag. - - - - - Describes a XML bool attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describe an allowed child element for an element. - - - - - The name of the allowed child element. - - - - - The namespace name of the allowed child element. - - - - - Constructor. - - - - - - Describes a XML attribute representing a Color as a string. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describes a XML double attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describes a XML attribute representing an enum as a string. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Restricts the value of an attribute to be taken from a list of values. - - - - - The list of values the attribute can take. - - - - - Constructor. - - - - - Indicates whether the current UxmlEnumeration object is equal to another object of the same type. - - The object to compare with. - - True if the otheer object is equal to this one. - - - - - UxmlFactory specialization for classes that derive from VisualElement and that shares its traits, VisualElementTraits. - - - - - Constructor. - - - - - Generic base class for UXML factories, which instantiate a VisualElement using the data read from a UXML file. - - - - - Returns UxmlTraits.canHaveAnyAttribute (where UxmlTraits is the argument for T1). - - - - - Returns an empty string if T0 is not VisualElement; otherwise, returns "VisualElement". - - - - - Returns the namespace for substituteForTypeName. - - - - - Returns the fully qualified name for substituteForTypeName. - - - - - Returns an empty enumerable. - - - - - Returns an empty enumerable. - - - - - Returns the type name of T0. - - - - - Returns the namespace name of T0. - - - - - Returns the typefully qualified name of T0. - - - - - Returns true. - - The attribute bag. - - Always true. - - - - - Instantiate an object of type T0 and initialize it by calling T1 UxmlTraits.Init method. - - A bag of name-value pairs, one for each attribute of the UXML element. This can be used to initialize the properties of the created object. - When the element is created as part of a template instance inserted in another document, this contains information about the insertion point. - - The created element. - - - - - Returns the Type of the objects created by this factory. - - - - - If implemented by your factory, this function will be called to instantiate an object of type T0. Otherwise, the default constructor of T0 will be used. - - A bag of name-value pairs, one for each attribute of the UXML element. This can be used to initialize the properties of the created object. - When the element is created as part of a template instance inserted in another document, this contains information about the insertion point. - - The created element. - - - - - Describes a XML float attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describes a XML int attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describes a XML long attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Factory for the root UXML element. - - - - - Returns the empty string, as the root element can not appear anywhere else bit at the root of the document. - - - - - Returns the empty string, as the root element can not appear anywhere else bit at the root of the document. - - - - - Returns the empty string, as the root element can not appear anywhere else bit at the root of the document. - - - - - Returns "UXML". - - - - - Returns the qualified name for this element. - - - - - Returns null. - - - - - - - Constructor. - - - - - UxmlTraits for the UXML root element. - - - - - Returns an enumerable containing UxmlChildElementDescription(typeof(VisualElement)), since the root element can contain VisualElements. - - - - - Constructor. - - - - - Describes a XML string attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describes a VisualElement derived class for the parsing of UXML files and the generation of UXML schema definition. - - - - - Must return true if the UXML element attributes are not restricted to the values enumerated by UxmlTraits.uxmlAttributesDescription. - - - - - Describes the UXML attributes expected by the element. The attributes enumerated here will appear in the UXML schema. - - - - - Describes the types of element that can appear as children of this element in a UXML file. - - - - - Initialize a VisualElement instance with values from the UXML element attributes. - - The VisualElement to initialize. - A bag of name-value pairs, one for each attribute of the UXML element. - When the element is created as part of a template instance inserted in another document, this contains information about the insertion point. - - - - Base class to restricts the value of an attribute. - - - - - Indicates whether the current UxmlTypeRestriction object is equal to another object of the same type. - - The object to compare with. - - True if the otheer object is equal to this one. - - - - - Restricts the value of an attribute to be within the specified bounds. - - - - - True if the bounds exclude max. - - - - - True if the bounds exclude min. - - - - - The maximum value for the attribute. - - - - - The minimum value for the attribute. - - - - - Constructor. - - - - - Indicates whether the current UxmlValueBounds object is equal to another object of the same type. - - The object to compare with. - - True if the otheer object is equal to this one. - - - - - Restricts the value of an attribute to match a regular expression. - - - - - The regular expression that should be matched by the value. - - - - - Constructor. - - - - - Indicates whether the current UxmlValueMatches object is equal to another object of the same type. - - The object to compare with. - - True if the otheer object is equal to this one. - - - - - The event sent to probe which elements accepts a command. - - - - - Constructor. - - - - - Obsolete. Use VisualElement instead. - - - - - Obsolete. VisualContainer.AddChild will be removed. Use VisualElement.Add or VisualElement.shadow.Add instead. - - - - - - VisualContainer.ClearChildren will be removed. Use VisualElement.Clear or VisualElement.shadow.Clear instead. - - - - - Obsolete. Use VisualElement instead. - - - - - Obsolete. VisualContainer.GetChildAt will be removed. Use VisualElement.ElementAt or VisualElement.shadow.ElementAt instead. - - - - - - Obsolete. VisualContainer.InsertChild will be removed. Use VisualElement.Insert or VisualElement.shadow.Insert instead. - - - - - - - Obsolete. VisualContainer.RemoveChild will be removed. Use VisualElement.Remove or VisualElement.shadow.Remove instead. - - - - - - Obsolete. VisualContainer.RemoveChildAt will be removed. Use VisualElement.RemoveAt or VisualElement.shadow.RemoveAt instead. - - - - - - Instantiates a VisualElement using the data read from a UXML file. - - - - - Returns the VisualElement type name. - - - - - Returns the VisualElement type namespace. - - - - - Returns the VisualElement qualified name. - - - - - Returns VisualContainer type name. - - - - - Returns VisualContainer namespace name. - - - - - Returns VisualContainer full name. - - - - - Constructor. - - - - - Base class for objects that are part of the UIElements visual tree. - - - - - Number of child elements in this object's contentContainer - - - - - - Should this element clip painting to its boundaries. - - - - - child elements are added to this element, usually this - - - - - - Access to this element data watch interface. - - - - - The default focus index for newly created elements. - - - - - Returns true if the VisualElement is enabled in its own hierarchy. - - - - - Returns true if the VisualElement is enabled locally. - - - - - Used for view data persistence (ie. tree expanded states, scroll position, zoom level). - - - - - Retrieves this VisualElement's IVisualElementScheduler - - - - - Access to this element physical hierarchy - - - - - - Reference to the style object of this element. - - - - - Text to display inside an information box after the user hovers the element for a small amount of time. - - - - - This property can be used to associate application-specific user data with this VisualElement. - - - - - Add an element to this element's contentContainer - - - - - - Adds this stylesheet file to this element list of applied styles - - - - - - Checks if any of the ChangeTypes have been marked dirty. - - The ChangeType(s) to check. - - True if at least one of the checked ChangeTypes have been marked dirty. - - - - - Brings this element to the end of its parent children list. The element will be visually in front of any overlapping sibling elements. - - - - - Returns the elements from its contentContainer - - - - - Remove all child elements from this element's contentContainer - - - - - Options to select clipping strategy. - - - - - Enables clipping and renders contents to a cache texture. - - - - - Will enable clipping. This VisualElement and its children's content will be limited to this element's bounds. - - - - - Will disable clipping and let children VisualElements paint outside its bounds. - - - - - Returns true if the element is a direct child of this VisualElement - - - - - - Retrieves the child element at position - - - - - - Enables or disables the class with the given name. - - The name of the class to enable or disable. - A boolean flag that adds or removes the class name from the class list. If true, EnableInClassList adds the class name to the class list. If false, EnableInClassList removes the class name from the class list. - - - - Searchs up the hierachy of this VisualElement and retrieves stored userData, if any is found. - - - - - Finds the lowest commont ancestor between two VisualElements inside the VisualTree hierarchy - - - - - - Allows to iterate into this elements children - - - - - Walks up the hierarchy, starting from this element's parent, and returns the first VisualElement of this type - - - - - Walks up the hierarchy, starting from this element, and returns the first VisualElement of this type - - - - - Combine this VisualElement's VisualElement.persistenceKey with those of its parents to create a more unique key for use with VisualElement.GetOrCreatePersistentData. - - - Full hierarchical persistence key. - - - - - Takes a reference to an existing persisted object and a key and returns the object either filled with the persisted state or as-is. - - An existing object to be persisted, or null to create a new object. If no persisted state is found, a non-null object will be returned as-is. - The key for the current VisualElement to be used with the persistence store on the EditorWindow. - - The same object being passed in (or a new one if null was passed in), but possibly with its persistent state restored. - - - - - Takes a reference to an existing persisted object and a key and returns the object either filled with the persisted state or as-is. - - An existing object to be persisted, or null to create a new object. If no persisted state is found, a non-null object will be returned as-is. - The key for the current VisualElement to be used with the persistence store on the EditorWindow. - - The same object being passed in (or a new one if null was passed in), but possibly with its persistent state restored. - - - - - Checks if this stylesheet file is in this element list of applied styles - - - - - Hierarchy is a sctuct allowing access to the shadow hierarchy of visual elements - - - - - Number of child elements in this object's contentContainer - - - - - - Access the physical parent of this element in the hierarchy - - - - - - Add an element to this element's contentContainer - - - - - - Returns the elements from its contentContainer - - - - - Remove all child elements from this element's contentContainer - - - - - Retrieves the child element at position - - - - - - Retrieves the index of the specified VisualElement in the Hierarchy. - - The element to return the index for. - - Returns the index of the element, or -1 if the element is not found. - - - - - Insert an element into this element's contentContainer - - - - - Removes this child from the hierarchy - - - - - - Remove the child element located at this position from this element's contentContainer - - - - - - Reorders child elements from this VisualElement contentContainer. - - Sorting criteria. - - - - Access to this element physical hierarchy - - - - - - Retrieves the child index of the specified VisualElement. - - The child to return the index for. - - Returns the index of the child, or -1 if the child is not found. - - - - - Insert an element into this element's contentContainer - - - - - Triggers a repaint of the VisualElement on the next frame. - - - - - The modes available to measure VisualElement sizes. - - - - - At Most. The element should give its preferred width/height but no more than the value passed. - - - - - The element should give the width/height that is passed in and derive the opposite site from this value (for example, calculate text size from a fixed width). - - - - - The element should give its preferred width/height without any constraint. - - - - - Called when the persistent data is accessible and/or when the data or persistence key have changed (VisualElement is properly parented). - - - - - Callback when the styles of an object have changed. - - - - - - Overwrite object from the persistent data store. - - The key for the current VisualElement to be used with the persistence store on the EditorWindow. - Object to overwrite. - - - - Places this element right before the sibling element in their parent children list. If the element and the sibling position overlap, the element will be visually behind of its sibling. - - The sibling element. - - - - Places this element right after the sibling element in their parent children list. If the element and the sibling position overlap, the element will be visually in front of its sibling. - - The sibling element. - - - - Removes this child from the hierarchy - - - - - - Remove the child element located at this position from this element's contentContainer - - - - - - Removes this element from its parent hierarchy - - - - - Removes this stylesheet file from this element list of applied styles - - - - - - Write persistence data to file. - - - - - Sends an event to the event handler. - - The event to send. - - - - Sends this element to the beginning of its parent children list. The element will be visually behind any overlapping sibling elements. - - - - - Changes whether the current VisualElement is enabled or not. When disabled, a VisualElement does not receive most events. - - New enabled state. - - - - Reorders child elements from this VisualElement contentContainer. - - Sorting criteria. - - - - Access to this element physical hierarchy - - - - - - Toggles between adding and removing the given class name from the class list. - - The class name to add or remove from the class list. - - - - Instantiates a VisualElement using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the VisualElement. - - - - - Returns an enumerable containing UxmlChildElementDescription(typeof(VisualElement)), since VisualElements can contain other VisualElements. - - - - - Constructor. - - - - - Initialize VisualElement properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - VisualElementExtensions is a set of extension methods useful for VisualElement. - - - - - Add a manipulator associated to a VisualElement. - - VisualElement associated to the manipulator. - Manipulator to be added to the VisualElement. - - - - Remove a manipulator associated to a VisualElement. - - VisualElement associated to the manipulator. - Manipulator to be removed from the VisualElement. - - - - The given VisualElement's left and right edges will be aligned with the corresponding edges of the parent element. - - - - - - Define focus change directions for the VisualElementFocusRing. - - - - - Last value for the direction defined by this class. - - - - - The focus is moving to the left. - - - - - The focus is moving to the right. - - - - - Implementation of a linear focus ring. Elements are sorted according to their focusIndex. - - - - - The focus order for elements having 0 has a focusIndex. - - - - - Constructor. - - The root of the element tree for which we want to build a focus ring. - Default ordering of the elements in the ring. - - - - Ordering of elements in the focus ring. - - - - - Order elements using a depth-first pre-order traversal of the element tree. - - - - - Order elements according to their position, first by X, then by Y. - - - - - Order elements according to their position, first by Y, then by X. - - - - - Get the direction of the focus change for the given event. For example, when the Tab key is pressed, focus should be given to the element to the right in the focus ring. - - - - - - - Get the next element in the given direction. - - - - - - - Instances of this class hold a tree of `VisualElementAsset`s. It is created from an UXML file, and each `VisualElementAsset` represents a UXML node inside this file. A `VisualTreeAsset` can be Cloned to yield a tree of `VisualElement`s. - - - - - Build a tree of VisualElements from the asset. - - A mapping of slot names to the VisualElements at their root. - Path of the target property to be bound to the cloned tree root. - - The root of the tree of VisualElements that was just cloned. - - - - - Build a tree of VisualElements from the asset. - - A mapping of slot names to the VisualElements at their root. - Path of the target property to be bound to the cloned tree root. - - The root of the tree of VisualElements that was just cloned. - - - - - Build a tree of VisualElements from the asset. - - A VisualElement that will act as the root of the cloned tree. - A mapping of slot names to the VisualElements at their root. - - - - Constructor. - - - - - Mouse wheel event. - - - - - The amount of scrolling applied with the mouse wheel. - - - - - Constructor. Use GetPooled() to get an event from a pool of reusable events. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - A wheel IMGUI event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - The class VFXEventAttribute handles properties transmitted to a system with a Experimental.VFX.VisualEffect.SendEvent. - - - - - Copy stored values from another event attribute. - - The source event attribute. - - - - Copy constructor. - - Source event attribute. - - - - Gets a named stored boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored boolean value (or false if Experimental.VFX.VFXEventAttribute.HasBool returns false). - - - - - Gets a named stored boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored boolean value (or false if Experimental.VFX.VFXEventAttribute.HasBool returns false). - - - - - Gets a named stored float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored float (or 0.0f if Experimental.VFX.VFXEventAttribute.HasFloat returns false). - - - - - Gets a named stored float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored float (or 0.0f if Experimental.VFX.VFXEventAttribute.HasFloat returns false). - - - - - Gets a named stored integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored integer value (or 0 if Experimental.VFX.VFXEventAttribute.HasInt returns false). - - - - - Gets a named stored integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored integer value (or 0 if Experimental.VFX.VFXEventAttribute.HasInt returns false). - - - - - Gets a named stored Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Matrix4x4 (or Matrix4x4.identity if Experimental.VFX.VFXEventAttribute.HasMatrix4x4 returns false). - - - - - Gets a named stored Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Matrix4x4 (or Matrix4x4.identity if Experimental.VFX.VFXEventAttribute.HasMatrix4x4 returns false). - - - - - Gets a named stored unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored unsigned integer value (or 0 if Experimental.VFX.VFXEventAttribute.HasUint returns false). - - - - - Gets a named stored unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored unsigned integer value (or 0 if Experimental.VFX.VFXEventAttribute.HasUint returns false). - - - - - Gets a named stored Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector2 (or Vector2.zero if Experimental.VFX.VFXEventAttribute.HasVector2 returns false). - - - - - Gets a named stored Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector2 (or Vector2.zero if Experimental.VFX.VFXEventAttribute.HasVector2 returns false). - - - - - Gets a named stored Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector3 (or Vector3.zero if Experimental.VFX.VFXEventAttribute.HasVector3 returns false). - - - - - Gets a named stored Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector3 (or Vector3.zero if Experimental.VFX.VFXEventAttribute.HasVector3 returns false). - - - - - Gets a named stored Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector4 (or Vector4.zero if Experimental.VFX.VFXEventAttribute.HasVector4 returns false). - - - - - Gets a named stored Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector4 (or Vector4.zero if Experimental.VFX.VFXEventAttribute.HasVector4 returns false). - - - - - Returns true if event attribute stores this named boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Sets a named boolean value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new boolean value. - - - - Sets a named boolean value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new boolean value. - - - - Sets a named float value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new float value. - - - - Sets a named float value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new float value. - - - - Sets a named integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new integer value. - - - - Sets a named integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new integer value. - - - - Sets a named Matrix4x4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Matrix4x4 value. - - - - Sets a named Matrix4x4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Matrix4x4 value. - - - - Sets a named unsigned integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new unsigned integer value. - - - - Sets a named unsigned integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new unsigned integer value. - - - - Sets a named Vector2 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector2 value. - - - - Sets a named Vector2 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector2 value. - - - - Sets a named Vector3 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector3 value. - - - - Sets a named Vector3 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector3 value. - - - - Sets a named Vector4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector4 value. - - - - Sets a named Vector4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector4 value. - - - - This class is a wrapper to the set of expression values. - - - - - Returns a an animation curve that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a an animation curve that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a boolean that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a boolean that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a float that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a float that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a gradient that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a gradient that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns an integer that corresponds to the bound named expression. IF this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns an integer that corresponds to the bound named expression. IF this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Matrix4 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Matrix4 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a mesh that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a mesh that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a texture that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a texture that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns an unsigned integer that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns an unsigned integer that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector2 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector2 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector3 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector3 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector4 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector4 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - The VFX Manager lets you set a number of properties that control VisualEffect behavior within your game. - - - - - The fixed interval in which the frame rate updates. The tick rate is in seconds. - - - - - The maximum allowed delta time for an update interval. This limit affects fixedDeltaTime and deltaTime. The tick rate is in seconds. - - - - - This abstract class provides a way to implement custom spawner block in C#. - - - - - This method is invoked when Play is triggered on parent spawner system. - - The spawner state. - The values of expression (input properties for a spawner block). - The visual effect. - - - - This method is invoked when stop is triggered on parent spawner system. - - The spawner state. - The values of expression (input properties for a spawner block). - The visual effect. - - - - This method is invoked when update is triggered on parent spawner system. - - The spawner state. - The values of expression (input properties for a spawner block). - The visual effect. - - - - The spawn state of a Spawn system. - - - - - The current delta time. - - - - - The current playing state. - - - - - The current Spawn count. - - - - - The accumulated delta time since the last Play event. - - - - - Gets the modifiable current event attribute (Read Only). - - - - - The visual effect class that references an Experimental.VFX.VisualEffectAsset instance within the Scene. - - - - - Returns the sum of all alive particles within the visual effect. - - - - - Is this visual effect culled (not visible) from any camera ? (Read Only) - - - - - The paused state of visual effect. - - - - - A multiplier applied to the delta time when updating the VisualEffect. The default value is 1.0f. - - - - - Controls whether the visual effect generates a new random number to seed the random number generator for each call to Experimental.VFX.VisualEffect.Play function. - - - - - The initial seed used used for internal random number generator. - - - - - The visual effect asset used by the visual effect. - - - - - If Experimental.VFX.VisualEffect._pause is true, the method processes the next visual effect update for exactly one frame with the current delta time. - - - - - Create a new event attribute class. - - - - - The visual effect constructor. - - - - - Gets a named exposed animation curve. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed animation curve value (or empty animation curve if Experimental.VFX.VisualEffect.HasAnimationCurve returns false). - - - - - Gets a named exposed animation curve. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed animation curve value (or empty animation curve if Experimental.VFX.VisualEffect.HasAnimationCurve returns false). - - - - - Get a named exposed boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed boolean value (or false if Experimental.VFX.VisualEffect.HasBool returns false). - - - - - Get a named exposed boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed boolean value (or false if Experimental.VFX.VisualEffect.HasBool returns false). - - - - - Gets a named exposed float (o. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed float value (or 0.0f if Experimental.VFX.VisualEffect.HasFloat returns false). - - - - - Gets a named exposed float (o. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed float value (or 0.0f if Experimental.VFX.VisualEffect.HasFloat returns false). - - - - - Gets a named exposed gradient. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed gradient value (or empty gradient if Experimental.VFX.VisualEffect.HasGradient returns false). - - - - - Gets a named exposed gradient. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed gradient value (or empty gradient if Experimental.VFX.VisualEffect.HasGradient returns false). - - - - - Get named exposed integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed integer value (or 0 if Experimental.VFX.VisualEffect.HasInt returns false). - - - - - Get named exposed integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed integer value (or 0 if Experimental.VFX.VisualEffect.HasInt returns false). - - - - - Gets named exposed Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Matrix4x4 value (or Matrix4x4.zero if Experimental.VFX.VisualEffect.HasMatrix4x4 returns false). - - - - - Gets named exposed Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Matrix4x4 value (or Matrix4x4.zero if Experimental.VFX.VisualEffect.HasMatrix4x4 returns false). - - - - - Gets named exposed mesh. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed mesh value (or null if Experimental.VFX.VisualEffect.HasMesh returns false). - - - - - Gets named exposed mesh. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed mesh value (or null if Experimental.VFX.VisualEffect.HasMesh returns false). - - - - - Gets named exposed texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed texture value (or null if Experimental.VFX.VisualEffect.HasTexture returns false). - - - - - Gets named exposed texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed texture value (or null if Experimental.VFX.VisualEffect.HasTexture returns false). - - - - - Get expected texture dimension for a named exposed texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get expected texture dimension for a named exposed texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get named exposed unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed unsigned integer value (or 0 if Experimental.VFX.VisualEffect.HasUInt returns false). - - - - - Get named exposed unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed unsigned integer value (or 0 if Experimental.VFX.VisualEffect.HasUInt returns false). - - - - - Gets named exposed Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector2 value (or Vector2.zero if Experimental.VFX.VisualEffect.HasVector2 returns false). - - - - - Gets named exposed Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector2 value (or Vector2.zero if Experimental.VFX.VisualEffect.HasVector2 returns false). - - - - - Gets named exposed Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector3 value (or Vector3.zero if Experimental.VFX.VisualEffect.HasVector3 returns false). - - - - - Gets named exposed Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector3 value (or Vector3.zero if Experimental.VFX.VisualEffect.HasVector3 returns false). - - - - - Gets named exposed Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector4 value (or Vector4.zero if Experimental.VFX.VisualEffect.HasVector4 returns false). - - - - - Gets named exposed Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector4 value (or Vector4.zero if Experimental.VFX.VisualEffect.HasVector4 returns false). - - - - - Returns true if visual effect can override this named animation curve. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named animation curve. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override the boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override the boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named gradient. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named gradient. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named mesh. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named mesh. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Sends a stop event to all Spawn systems. If Experimental.VFX.VisualEffect._resetSeedOnPlay is true, this methods recomputes a new random seed for the random value generator and resets internal total time to zero. - - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Sends a stop event to all Spawn systems. If Experimental.VFX.VisualEffect._resetSeedOnPlay is true, this methods recomputes a new random seed for the random value generator and resets internal total time to zero. - - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Reintialize visual effect. - - - - - Sets the overridden state to false, and restores the default value that is specified in the visual effect Asset. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Sets the overridden state to false, and restores the default value that is specified in the visual effect Asset. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Send a custom named event. - - The name of the event. - The name ID of the event retrieved by Shader.PropertyToID. - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Send a custom named event. - - The name of the event. - The name ID of the event retrieved by Shader.PropertyToID. - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Send a custom named event. - - The name of the event. - The name ID of the event retrieved by Shader.PropertyToID. - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Send a custom named event. - - The name of the event. - The name ID of the event retrieved by Shader.PropertyToID. - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Sets a named animation curve value. - - The name ID of the property retrieved by Shader.PropertyToID. - The new animation curve. - The name of the property. - - - - Sets a named animation curve value. - - The name ID of the property retrieved by Shader.PropertyToID. - The new animation curve. - The name of the property. - - - - Sets the value for a named boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new boolean value. - - - - Sets the value for a named boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new boolean value. - - - - Sets the value for a named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new float value. - - - - Sets the value for a named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new float value. - - - - Sets a named gradient value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new gradient value. - - - - Sets a named gradient value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new gradient value. - - - - Sets the value for a named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new integer value. - - - - Sets the value for a named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new integer value. - - - - Sets a named Matrix4x4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Matrix4x4 value. - - - - Sets a named Matrix4x4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Matrix4x4 value. - - - - Sets a named mesh value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new mesh value. - - - - Sets a named mesh value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new mesh value. - - - - Sets a named texture value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new texture value. - - - - Sets a named texture value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new texture value. - - - - Sets the value for a named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new unsigned integer value. - - - - Sets the value for a named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new unsigned integer value. - - - - Sets the value for a named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector2 value. - - - - Sets the value for a named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector2 value. - - - - Sets the value for a named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector3 value. - - - - Sets the value for a named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector3 value. - - - - Sets a named Vector4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector4 value. - - - - Sets a named Vector4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector4 value. - - - - Send a stop event to all Spawn systems. - - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Send a stop event to all Spawn systems. - - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - This class contains a graph of the elements needed to describe a visual effect. These include: the visual effects system, generated shaders, and compiled data. - - - - - The visual effect Asset constructor. - - - - - An implementation of IPlayable that controls playback of a VideoClip. - - - - - Creates a VideoClipPlayable in the PlayableGraph. - - The PlayableGraph object that will own the VideoClipPlayable. - Indicates if VideoClip loops when it reaches the end. - VideoClip used to produce textures in the PlayableGraph. - - A VideoClipPlayable linked to the PlayableGraph. - - - - - Extension methods for the Video.VideoPlayer class. - - - - - Return the Experimental.Audio.AudioSampleProvider for the specified track, used to receive audio samples during playback. - - The "this" pointer for the extension method. - The audio track index for which the sample provider is queried. - - The sample provider for the specified track. - - - - - Structure describing a bounded plane representing a real-world surface. - - - - - The alignment of the plane, e.g., horizontal or vertical. - - - - - Center point of the plane in device space. - - - - - Outputs four points, in device space, representing the four corners of the plane. The corners are in clockwise order. - - The vertex of the first corner. - The vertex of the second corner. - The vertex of the third corner. - The vertex of the fourth corner. - - - - Current height of the plane. - - - - - A session-unique identifier for the plane. - - - - - Normal vector of the plane in device space. - - - - - Returns the infinite Plane associated with this BoundedPlane. - - - - - Pose of the plane in device space. - - - - - Current size of the plane. - - - - - A session-unique identifier for the BoundedPlane that subsumed this plane. - - - - - Try to retrieve a list of positions in device space describing current plane boundary. - - A list of vertices representing the boundary. - - True if the plane exists (i.e., is still being tracked), otherwise false. - - - - - Current width of the plane. - - - - - Structure containing data passed during Frame Received Event. - - - - - Reference to the XRCameraSubsystem associated with this event. - - - - - The state of a tracked mesh since the last query. - - - - - The mesh has been added since the last call to XRMeshSubsystem.TryGetMeshInfos. - - - - - The mesh has been removed since the last call to XRMeshSubsystem.TryGetMeshInfos. - - - - - The mesh has not changed since the last call to XRMeshSubsystem.TryGetMeshInfos. - - - - - The mesh has been updated since the last call to XRMeshSubsystem.TryGetMeshInfos. - - - - - Contains event information related to a generated mesh. - - - - - The MeshVertexAttributes that were written to the MeshGenerationResult.Mesh. - - - - - If the generation was successful, data has been written to this Mesh. - - - - - If the generation was successful, physics data has been written to this MeshCollider. - - - - - The TrackableId of the tracked mesh that was generated. - - - - - The MeshGenerationStatus of the mesh generation task. - - - - - The status of a XRMeshSubsystem.GenerateMeshAsync. - - - - - The mesh generation was canceled. - - - - - The XRMeshSubsystem was already generating the requested mesh. - - - - - The mesh generation failed because the mesh does not exist. - - - - - The mesh generation was successful. - - - - - The mesh generation failed for unknown reasons. - - - - - Contains state information related to a tracked mesh. - - - - - The change state (e.g., Added, Removed) of the tracked mesh. - - - - - The TrackableId of the tracked mesh. - - - - - A hint that can be used to determine when this mesh should be processed. - - - - - A set of vertex attributes. - - - - - Vertex normals - - - - - No vertex attributes - - - - - Vertex normals - - - - - Vertex tangents - - - - - Vertex UVs - - - - - Contains data supplied to a XRPlaneSubsystem.PlaneAdded event. - - - - - The BoundedPlane that was added. - - - - - A reference to the PlaneSubsystem object from which the event originated. - - - - - Describes current plane alignment in mixed reality space. - - - - - Plane has horizontal alignment. - - - - - Plane is not alligned along cardinal (X, Y or Z) axis. - - - - - Plane has vertical alignment. - - - - - Contains data supplied to a XRPlaneSubsystem.PlaneRemoved event. - - - - - The BoundedPlane that was removed. - - - - - A reference to the XRPlaneSubsystem object from which the event originated. - - - - - Contains data supplied to a XRPlaneSubsystem.PlaneUpdated event. - - - - - The BoundedPlane that was updated. - - - - - A reference to the XRPlaneSubsystem object from which the event originated. - - - - - Contains data supplied to a XRDepth.PointCloudUpdated event. - - - - - A reference to the XRDepthSubsystem object from which the event originated. - - - - - Describes the transform data of a real-world point. - - - - - ID for the reference point that is unique across the session. - - - - - The pose (position and rotation) of the reference point. Respond to changes in this pose to correct for changes in the device's understanding of where this point is in the real world. - - - - - The TrackingState of the reference point. - - - - - Data to be passed to the user when the device corrects its understanding of the world enough that the ReferencePoint's position or rotation has changed. - - - - - The previous Pose of the ReferencePoint, prior to this event. - - - - - The previous TrackingState of the ReferencePoint, prior to this event. - - - - - The reference point that has the value of its position, rotation, or both changed enough through the device correcting its understanding of where this point should be located in device space. - - - - - Structure defining Tracking State Changed event arguments passed when tracking state changes. - - - - - New Tracking State. - - - - - Reference to the XRSessionSubsystem object associated with the event. - - - - - A session-unique identifier for trackables in the environment, e.g., planes and feature points. - - - - - Represents an invalid id. - - - - - Generates a nicely formatted version of the id. - - - A string unique to this id - - - - - A trackable is feature in the physical environment that a device is able to track, such as a plane. - - - - - All trackables (planes and point cloud) - - - - - A feature point. - - - - - No trackable. - - - - - An estimated plane. - - - - - Any of the plane types. - - - - - Within the BoundedPlane.Size of a BoundedPlane - - - - - The infinite plane of a BoundedPlane - - - - - The boundary of a BoundedPlane - - - - - Current tracking state of the device. - - - - - Tracking is currently working. - - - - - Tracking is not available. - - - - - Tracking state is unknown. - - - - - Provides access to a device's camera. - - - - - Set current Camera component within the app to be used by this XRCameraInstance. - - - - - Event raised when a new camera frame is received. - - - - - - Fills the provided texturesOut with the texture(s) associated with the XRCameraSubsystem. - - A List of Texture2D to be filled. Passing null will throw an ArgumentNullException. - - - - The frame during which the camera subsystem was last successfully updated. - - - - - True if the XRCameraSubsystem should try to provide light estimation. - - - - - Set current Material to be used while rendering to the render target. - - - - - Provides brightness for the whole image as an average of all pixels' brightness. - - An estimated average brightness for the environment. - - Returns true if average brigthness was provided. - - - - - Provides color temperature for the whole image as an average of all pixels' color temperature. - - An estimated color temperature. - - Return true if succesful. - - - - - Provides display matrix defining how texture is being rendered on the screen. - - - - - - Provides projection matrix used by camera subsystem. - - - - - - Provides shader name used by Camera subsystem to render texture. - - - - - - Provides timestamp. - - - - - - Class providing information about XRCameraSubsystem registration. - - - - - Specifies if current subsystem is allowed to provide average brightness. - - - - - Specifies if current subsystem is allowed to provide average camera temperature. - - - - - Specifies if current subsystem is allowed to provide display matrix. - - - - - Specifies if current subsystem is allowed to provide projection matrix. - - - - - Specifies if current subsystem is allowed to provide timestamp. - - - - - Provides access to depth data of the physical environment, such as a point cloud. - - - - - Retrieves the confidence values for each point in the point cloud. - - A list of floats containing all confidence values for the point cloud. - - - - Retrieves the point cloud points. - - A list of Vector3s containing all points in the point cloud. - - - - The frame during which the point cloud was last updated. - - - - - Raised once during each frame in which the point cloud is updated. - - - - - - Class providing information about XRDepthSubsystem registration. - - - - - When true, XRDepthSubsystem will provide list of feature points detected so far. - - - - - An XRDisplaySubsystem controls rendering to a head tracked display. - - - - - Class providing information about XRDisplaySubsystem registration. - - - - - XRInputSubsystem -Instance is used to enable and disable the inputs coming from a specific plugin. - - - - - Information about an Input subsystem. - - - - - When true, will suppress legacy support for Daydream, Oculus, OpenVR, and Windows MR built directly into the Unity runtime from generating input. This is useful when adding an XRInputSubsystem that supports these devices. - - - - - Allows external systems to provide dynamic meshes to Unity. - - - - - Request that the mesh with TrackableId meshId gets generated. onMeshGenerationComplete is called when generation is complete. - - The TrackableId of the mesh you wish to generate. - The Mesh to write the results into. - (Optional) The MeshCollider to populate with physics data. This may be null. - The vertex attributes you'd like to use. - The delegate to invoke when the generation completes. - - - - Get information about every mesh tracked by the system. - - A List of MeshInfos to be filled. Passing null will throw an ArgumentNullException. - - True if the List was populated. - - - - - Information about an XRMeshSubsystem. - - - - - Provides methods, events, and properties that provides information about planes detected in the environment. - - - - - Get all the BoundedPlanes currently tracked by the system. - - A list of BoundedPlanes containing all planes currently tracked by the system. - - - - The frame during which the planes were last updated. - - - - - Raised for each BoundedPlane that has been added in the current frame. - - - - - - Raised for each BoundedPlane that has been removed in the current frame. - - - - - - Raised for each plane that has been updated in the current frame. - - - - - - Get a BoundedPlane by TrackableId - - The session-unique TrackableId of the plane to get. - The BoundedPlane with the supplied planeId - - True if the BoundedPlane with planeId exists, false otherwise. - - - - - Try to retrieve a list of positions in device space describing the current plane boundary. - - The session-unique TrackableId of the plane. - A list of vertices representing the plane's boundary. - - True if the plane exists (i.e., is still being tracked), otherwise false. - - - - - Class providing information about XRPlaneSubsystem registration. - - - - - Structure describing the result of a XRRaycastSubsystem.Raycast hit. - - - - - The distance, in meters, from the screen to the hit's XRRaycastSubsystemHit.Position. - - - - - The TrackableType(s) that were hit. - - - - - The position and rotation of the hit result in device space where the ray hit the trackable. - - - - - The TrackableId of the trackable that was hit by the raycast. - - - - - Provides methods and properties that allow for querying portions of the physical environment that are near a provided specified ray. These trackables include planes and depth data. - - - - - Casts a ray from a screen point against selected trackables (e.g., planes and feature points). - - The screen point from which to cast. - The resulting list of XRRaycastHit. - An optional mask of TrackableType to raycast against. - - - - Casts a ray using ray against selected trackables (e.g., planes and feature points). - - The Ray to use. - The XRDepthSubsystem to raycast against. May be null. - The XRPlaneSubsystem to raycast against. May be null. - The resulting list of XRRaycastHit. - An optional mask of TrackableType to raycast against. - When raycasting against feature points, cast a cone with this angle. - - - - Class providing information about XRRaycastSubsystem registration. - - - - - Provides methods and properties that allow for querying, creating, and removing of reference points. These reference points are cues to the XRSessionSubsystem that indicate areas of interest in the environment which helps assure that tracking of these points remains accurate. - - - - - Retrieves all ReferencePoints added by calls to XRReferencePointSubsystem.TryAddReferencePoint. - - A list of ReferencePoints containing all reference points. - - - - The frame during which the reference points were last updated. - - - - - Raised each frame for each ReferencePoint that had the values of its position, rotation, or both changed enough by the device correcting its understanding of where the point should be located in Unity space. - - - - - - Attempt to add a ReferencePoint that gets tracked by the device. - - Current position, in device space, of a point you want the device to track. - Current rotation, in device space, of a point you want the device to track. - If this method returns true, this is filled out with the ID (unique to the session) of the point. - - If the ReferencePoint was added successfully, this method returns true. Otherwise, it returns false. - - - - - Attempt to add a ReferencePoint that gets tracked by the device. - - Current pose, in device space, of a point you want the device to track. - If this method returns true, this is filled out with the ID (unique to the session) of the point. - - If the ReferencePoint was added successfully, this method returns true. Otherwise, it returns false. - - - - - Attempt to retrieve a ReferencePoint. - - The ID of the ReferencePoint that TryAddReferencePoint filled out when you added this point. - The ReferencePoint to be filled out that matches the ID passed in. - - If the ReferencePoint was found and filled out successfully, this method returns true. Otherwise, it return false. - - - - - Attempt to remove a ReferencePoint getting tracked by the device. - - ID of the ReferencePoint you wish to remove so the device no longer tries to track it. - - If the ReferencePoint was removed successfully, this method returns true. Otherwise, it returns false. - - - - - Class providing information about XRReferencePointSubsystem registration. - - - - - A collection of methods and properties used to interact with and configure an XR session. - - - - - The frame during which the tracking state was last updated. - - - - - Get current tracking status of the device. - - - - - Raised when the TrackingState changes. - - - - - - Class providing information about XRSessionSubsystem registration. - - - - - Object that is used to resolve references to an ExposedReference field. - - - - - Creates a type whos value is resolvable at runtime. - - - - - The default value, in case the value cannot be resolved. - - - - - The name of the ExposedReference. - - - - - Gets the value of the reference by resolving it given the ExposedPropertyResolver context object. - - The ExposedPropertyResolver context object. - - The resolved reference value. - - - - - Spectrum analysis windowing types. - - - - - W[n] = 0.42 - (0.5 * COS(nN) ) + (0.08 * COS(2.0 * nN) ). - - - - - W[n] = 0.35875 - (0.48829 * COS(1.0 * nN)) + (0.14128 * COS(2.0 * nN)) - (0.01168 * COS(3.0 * n/N)). - - - - - W[n] = 0.54 - (0.46 * COS(n/N) ). - - - - - W[n] = 0.5 * (1.0 - COS(n/N) ). - - - - - W[n] = 1.0. - - - - - W[n] = TRI(2n/N). - - - - - Filtering mode for textures. Corresponds to the settings in a. - - - - - Bilinear filtering - texture samples are averaged. - - - - - Point filtering - texture pixels become blocky up close. - - - - - Trilinear filtering - texture samples are averaged and also blended between mipmap levels. - - - - - Enumeration of all the muscles in a finger. - - - - - The distal close-open muscle. - - - - - The intermediate close-open muscle. - - - - - The last value of the FingerDof enum. - - - - - The proximal down-up muscle. - - - - - The proximal in-out muscle. - - - - - The Fixed joint groups together 2 rigidbodies, making them stick together in their bound position. - - - - - Connects two Rigidbody2D together at their anchor points using a configurable spring. - - - - - The amount by which the spring force is reduced in proportion to the movement speed. - - - - - The frequency at which the spring oscillates around the distance between the objects. - - - - - The angle referenced between the two bodies used as the constraint for the joint. - - - - - A flare asset. Read more about flares in the. - - - - - FlareLayer component. - - - - - Used by GUIUtility.GetControlID to inform the IMGUI system if a given control can get keyboard focus. This allows the IMGUI system to give focus appropriately when a user presses tab for cycling between controls. - - - - - This control can receive keyboard focus. - - - - - This control can not receive keyboard focus. - - - - - Fog mode to use. - - - - - Exponential fog. - - - - - Exponential squared fog (default). - - - - - Linear fog. - - - - - Script interface for. - - - - - The ascent of the font. - - - - - Access an array of all characters contained in the font texture. - - - - - Is the font a dynamic font. - - - - - The default size of the font. - - - - - The line height of the font. - - - - - The material used for the font display. - - - - - Set a function to be called when the dynamic font texture is rebuilt. - - - - - - Creates a Font object which lets you render a font installed on the user machine. - - The name of the OS font to use for this font object. - The default character size of the generated font. - Am array of names of OS fonts to use for this font object. When rendering characters using this font object, the first font which is installed on the machine, which contains the requested character will be used. - - The generate Font object. - - - - - Creates a Font object which lets you render a font installed on the user machine. - - The name of the OS font to use for this font object. - The default character size of the generated font. - Am array of names of OS fonts to use for this font object. When rendering characters using this font object, the first font which is installed on the machine, which contains the requested character will be used. - - The generate Font object. - - - - - Create a new Font. - - The name of the created Font object. - - - - Create a new Font. - - The name of the created Font object. - - - - Get rendering info for a specific character. - - The character you need rendering information for. - Returns the CharacterInfo struct with the rendering information for the character (if available). - The size of the character (default value of zero will use font default size). - The style of the character. - - - - Get rendering info for a specific character. - - The character you need rendering information for. - Returns the CharacterInfo struct with the rendering information for the character (if available). - The size of the character (default value of zero will use font default size). - The style of the character. - - - - Get rendering info for a specific character. - - The character you need rendering information for. - Returns the CharacterInfo struct with the rendering information for the character (if available). - The size of the character (default value of zero will use font default size). - The style of the character. - - - - Returns the maximum number of verts that the text generator may return for a given string. - - Input string. - - - - Get names of fonts installed on the machine. - - - An array of the names of all fonts installed on the machine. - - - - - Get the paths of OS installed fonts. - - - An array of the pathes of all fonts installed on the machine. - - - - - Does this font have a specific character? - - The character to check for. - - Whether or not the font has the character specified. - - - - - Request characters to be added to the font texture (dynamic fonts only). - - The characters which are needed to be in the font texture. - The size of the requested characters (the default value of zero will use the font's default size). - The style of the requested characters. - - - - Font Style applied to GUI Texts, Text Meshes or GUIStyles. - - - - - Bold style applied to your texts. - - - - - Bold and Italic styles applied to your texts. - - - - - Italic style applied to your texts. - - - - - No special style is applied. - - - - - Use ForceMode to specify how to apply a force using Rigidbody.AddForce. - - - - - Add a continuous acceleration to the rigidbody, ignoring its mass. - - - - - Add a continuous force to the rigidbody, using its mass. - - - - - Add an instant force impulse to the rigidbody, using its mass. - - - - - Add an instant velocity change to the rigidbody, ignoring its mass. - - - - - Option for how to apply a force using Rigidbody2D.AddForce. - - - - - Add a force to the Rigidbody2D, using its mass. - - - - - Add an instant force impulse to the rigidbody2D, using its mass. - - - - - Struct containing basic FrameTimings and accompanying relevant data. - - - - - The CPU time for a given frame, in ms. - - - - - This is the CPU clock time at the point GPU finished rendering the frame and interrupted the CPU. - - - - - This is the CPU clock time at the point Present was called for the current frame. - - - - - The GPU time for a given frame, in ms. - - - - - This was the height scale factor of the Dynamic Resolution system(if used) for the given frame and the linked frame timings. - - - - - This was the vsync mode for the given frame and the linked frame timings. - - - - - This was the width scale factor of the Dynamic Resolution system(if used) for the given frame and the linked frame timings. - - - - - The FrameTimingManager allows the user to capture and access FrameTiming data for multple frames. - - - - - This function triggers the FrameTimingManager to capture a snapshot of FrameTiming's data, that can then be accessed by the user. - - - - - This returns the frequency of CPU timer on the current platform, used to interpret timing results. If the platform does not support returning this value it will return 0. - - - CPU timer frequency for current platform. - - - - - This returns the frequency of GPU timer on the current platform, used to interpret timing results. If the platform does not support returning this value it will return 0. - - - GPU timer frequency for current platform. - - - - - Allows the user to access the currently captured FrameTimings. - - User supplies a desired number of frames they would like FrameTimings for. This should be equal to or less than the maximum FrameTimings the platform can capture. - An array of FrameTiming structs that is passed in by the user and will be filled with data as requested. It is the users job to make sure the array that is passed is large enough to hold the requested number of FrameTimings. - - Returns the number of FrameTimings it actually was able to get. This will always be equal to or less than the requested numFrames depending on availability of captured FrameTimings. - - - - - This returns the number of vsyncs per second on the current platform, used to interpret timing results. If the platform does not support returning this value it will return 0. - - - Number of vsyncs per second of the current platform. - - - - - Applies both force and torque to reduce both the linear and angular velocities to zero. - - - - - The maximum force that can be generated when trying to maintain the friction joint constraint. - - - - - The maximum torque that can be generated when trying to maintain the friction joint constraint. - - - - - This struct contains the view space coordinates of the near projection plane. - - - - - Position in view space of the bottom side of the near projection plane. - - - - - Position in view space of the left side of the near projection plane. - - - - - Position in view space of the right side of the near projection plane. - - - - - Position in view space of the top side of the near projection plane. - - - - - Z distance from the origin of view space to the far projection plane. - - - - - Z distance from the origin of view space to the near projection plane. - - - - - Platform agnostic fullscreen mode. Not all platforms support all modes. - - - - - Exclusive Mode. - - - - - Fullscreen window. - - - - - Maximized window. - - - - - Windowed. - - - - - Describes options for displaying movie playback controls. - - - - - Do not display any controls, but cancel movie playback if input occurs. - - - - - Display the standard controls for controlling movie playback. - - - - - Do not display any controls. - - - - - Display minimal set of controls controlling movie playback. - - - - - Describes scaling modes for displaying movies. - - - - - Scale the movie until the movie fills the entire screen. - - - - - Scale the movie until one dimension fits on the screen exactly. - - - - - Scale the movie until both dimensions fit the screen exactly. - - - - - Do not scale the movie. - - - - - Base class for all entities in Unity Scenes. - - - - - Defines whether the GameObject is active in the Scene. - - - - - The local active state of this GameObject. (Read Only) - - - - - The Animation attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The AudioSource attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Camera attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Collider attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Collider2D component attached to this object. - - - - - The ConstantForce attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The GUIText attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The GUITexture attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The HingeJoint attached to this GameObject (Read Only). (Null if there is none attached). - - - - - Editor only API that specifies if a game object is static. - - - - - The layer the game object is in. - - - - - The Light attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The NetworkView attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The ParticleSystem attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Renderer attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Rigidbody attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Rigidbody2D component attached to this GameObject. (Read Only) - - - - - Scene that the GameObject is part of. - - - - - The tag of this game object. - - - - - The Transform attached to this GameObject. - - - - - Adds a component class named className to the game object. - - - - - - Adds a component class of type componentType to the game object. C# Users can use a generic version. - - - - - - Generic version. See the page for more details. - - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - - - - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - - - - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - - - - - - - - - - - - - - Is this game object tagged with tag ? - - The tag to compare. - - - - Creates a game object with a primitive mesh renderer and appropriate collider. - - The type of primitive object to create. - - - - Creates a new game object, named name. - - The name that the GameObject is created with. - A list of Components to add to the GameObject on creation. - - - - Creates a new game object, named name. - - The name that the GameObject is created with. - A list of Components to add to the GameObject on creation. - - - - Creates a new game object, named name. - - The name that the GameObject is created with. - A list of Components to add to the GameObject on creation. - - - - Finds a GameObject by name and returns it. - - - - - - Returns a list of active GameObjects tagged tag. Returns empty array if no GameObject was found. - - The name of the tag to search GameObjects for. - - - - Returns one active GameObject tagged tag. Returns null if no GameObject was found. - - The tag to search for. - - - - Returns the component of Type type if the game object has one attached, null if it doesn't. - - The type of Component to retrieve. - - - - Generic version. See the page for more details. - - - - - Returns the component with name type if the game object has one attached, null if it doesn't. - - The type of Component to retrieve. - - - - Returns the component of Type type in the GameObject or any of its children using depth first search. - - The type of Component to retrieve. - - - A component of the matching type, if found. - - - - - Returns the component of Type type in the GameObject or any of its children using depth first search. - - The type of Component to retrieve. - - - A component of the matching type, if found. - - - - - Generic version. See the page for more details. - - - - A component of the matching type, if found. - - - - - Generic version. See the page for more details. - - - - A component of the matching type, if found. - - - - - Returns the component of Type type in the GameObject or any of its parents. - - Type of component to find. - - - - Returns the component <T> in the GameObject or any of its parents. - - - - - Returns all components of Type type in the GameObject. - - The type of Component to retrieve. - - - - Generic version. See the page for more details. - - - - - Returns all components of Type type in the GameObject into List results. Note that results is of type Component, not the type of the component retrieved. - - The type of Component to retrieve. - List to receive the results. - - - - Returns all components of Type type in the GameObject into List results. - - List of type T to receive the results. - - - - Returns all components of Type type in the GameObject or any of its children. - - The type of Component to retrieve. - Should Components on inactive GameObjects be included in the found set? - - - - Returns all components of Type type in the GameObject or any of its children. - - The type of Component to retrieve. - Should Components on inactive GameObjects be included in the found set? - - - - Generic version. See the page for more details. - - Should inactive GameObjects be included in the found set? - - A list of all found components matching the specified type. - - - - - Generic version. See the page for more details. - - Should inactive GameObjects be included in the found set? - - A list of all found components matching the specified type. - - - - - Return all found Components into List results. - - List to receive found Components. - Should inactive GameObjects be included in the found set? - - - - Return all found Components into List results. - - List to receive found Components. - Should inactive GameObjects be included in the found set? - - - - Returns all components of Type type in the GameObject or any of its parents. - - The type of Component to retrieve. - Should inactive Components be included in the found set? - - - - Generic version. See the page for more details. - - Should inactive Components be included in the found set? - - - - Generic version. See the page for more details. - - Should inactive Components be included in the found set? - - - - Find Components in GameObject or parents, and return them in List results. - - Should inactive Components be included in the found set? - List holding the found Components. - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - - - - - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - - - - - - - - ActivatesDeactivates the GameObject, depending on the given true or false/ value. - - Activate or deactivate the object, where true activates the GameObject and false deactivates the GameObject. - - - - Utility class for common geometric functions. - - - - - Calculates the bounding box from the given array of positions and the transformation matrix. - - An array that stores the location of 3d positions. - A matrix that changes the position, rotation and size of the bounds calculation. - - Calculates the axis-aligned bounding box. - - - - - Calculates frustum planes. - - The camera with the view frustum that you want to calculate planes from. - - The planes that form the camera's view frustum. - - - - - Calculates frustum planes. - - The camera with the view frustum that you want to calculate planes from. - An array of 6 Planes that will be overwritten with the calculated plane values. - - - - Calculates frustum planes. - - A matrix that transforms from world space to projection space, from which the planes will be calculated. - - The planes that enclose the projection space described by the matrix. - - - - - Calculates frustum planes. - - A matrix that transforms from world space to projection space, from which the planes will be calculated. - An array of 6 Planes that will be overwritten with the calculated plane values. - - - - Returns true if bounds are inside the plane array. - - - - - - - Creates a plane from a given list of vertices. Works for concave polygons and polygons that have multiple aligned vertices. - - An array of vertex positions that define the shape of a polygon. - If successful, a valid plane that goes through all the vertices. - - Returns true on success, false if the algorithm failed to create a plane from the given vertices. - - - - - Gizmos are used to give visual debugging or setup aids in the Scene view. - - - - - Sets the color for the gizmos that will be drawn next. - - - - - Sets the Matrix4x4 that the Unity Editor uses to draw Gizmos. - - - - - Draw a solid box with center and size. - - - - - - - Draw a camera frustum using the currently set Gizmos.matrix for it's location and rotation. - - The apex of the truncated pyramid. - Vertical field of view (ie, the angle at the apex in degrees). - Distance of the frustum's far plane. - Distance of the frustum's near plane. - Width/height ratio. - - - - Draw a texture in the Scene. - - The size and position of the texture on the "screen" defined by the XY plane. - The texture to be displayed. - An optional material to apply the texture. - Inset from the rectangle's left edge. - Inset from the rectangle's right edge. - Inset from the rectangle's top edge. - Inset from the rectangle's bottom edge. - - - - Draw a texture in the Scene. - - The size and position of the texture on the "screen" defined by the XY plane. - The texture to be displayed. - An optional material to apply the texture. - Inset from the rectangle's left edge. - Inset from the rectangle's right edge. - Inset from the rectangle's top edge. - Inset from the rectangle's bottom edge. - - - - Draw a texture in the Scene. - - The size and position of the texture on the "screen" defined by the XY plane. - The texture to be displayed. - An optional material to apply the texture. - Inset from the rectangle's left edge. - Inset from the rectangle's right edge. - Inset from the rectangle's top edge. - Inset from the rectangle's bottom edge. - - - - Draw a texture in the Scene. - - The size and position of the texture on the "screen" defined by the XY plane. - The texture to be displayed. - An optional material to apply the texture. - Inset from the rectangle's left edge. - Inset from the rectangle's right edge. - Inset from the rectangle's top edge. - Inset from the rectangle's bottom edge. - - - - Draw an icon at a position in the Scene view. - - - - - - - - Draw an icon at a position in the Scene view. - - - - - - - - Draws a line starting at from towards to. - - - - - - - Draws a mesh. - - Mesh to draw as a gizmo. - Position (default is zero). - Rotation (default is no rotation). - Scale (default is no scale). - Submesh to draw (default is -1, which draws whole mesh). - - - - Draws a mesh. - - Mesh to draw as a gizmo. - Position (default is zero). - Rotation (default is no rotation). - Scale (default is no scale). - Submesh to draw (default is -1, which draws whole mesh). - - - - Draws a ray starting at from to from + direction. - - - - - - - - Draws a ray starting at from to from + direction. - - - - - - - - Draws a solid sphere with center and radius. - - - - - - - Draw a wireframe box with center and size. - - - - - - - Draws a wireframe mesh. - - Mesh to draw as a gizmo. - Position (default is zero). - Rotation (default is no rotation). - Scale (default is no scale). - Submesh to draw (default is -1, which draws whole mesh). - - - - Draws a wireframe mesh. - - Mesh to draw as a gizmo. - Position (default is zero). - Rotation (default is no rotation). - Scale (default is no scale). - Submesh to draw (default is -1, which draws whole mesh). - - - - Draws a wireframe sphere with center and radius. - - - - - - - Low-level graphics library. - - - - - Select whether to invert the backface culling (true) or not (false). - - - - - The current modelview matrix. - - - - - Controls whether Linear-to-sRGB color conversion is performed while rendering. - - - - - Should rendering be done in wireframe? - - - - - Begin drawing 3D primitives. - - Primitives to draw: can be TRIANGLES, TRIANGLE_STRIP, QUADS or LINES. - - - - Clear the current render buffer. - - Should the depth buffer be cleared? - Should the color buffer be cleared? - The color to clear with, used only if clearColor is true. - The depth to clear Z buffer with, used only if clearDepth is true. - - - - Clear the current render buffer with camera's skybox. - - Should the depth buffer be cleared? - Camera to get projection parameters and skybox from. - - - - Sets current vertex color. - - - - - - End drawing 3D primitives. - - - - - Sends queued-up commands in the driver's command buffer to the GPU. - - - - - Compute GPU projection matrix from camera's projection matrix. - - Source projection matrix. - Will this projection be used for rendering into a RenderTexture? - - Adjusted projection matrix for the current graphics API. - - - - - Invalidate the internally cached render state. - - - - - Send a user-defined event to a native code plugin. - - User defined id to send to the callback. - Native code callback to queue for Unity's renderer to invoke. - - - - Send a user-defined event to a native code plugin. - - User defined id to send to the callback. - Native code callback to queue for Unity's renderer to invoke. - - - - Mode for Begin: draw line strip. - - - - - Mode for Begin: draw lines. - - - - - Load the identity matrix to the current modelview matrix. - - - - - Helper function to set up an ortho perspective transform. - - - - - Setup a matrix for pixel-correct rendering. - - - - - Setup a matrix for pixel-correct rendering. - - - - - - - - - Load an arbitrary matrix to the current projection matrix. - - - - - - Sets current texture coordinate (v.x,v.y,v.z) to the actual texture unit. - - - - - - - Sets current texture coordinate (x,y) for the actual texture unit. - - - - - - - - Sets current texture coordinate (x,y,z) to the actual texture unit. - - - - - - - - - Sets the current modelview matrix to the one specified. - - - - - - Restores both projection and modelview matrices off the top of the matrix stack. - - - - - Saves both projection and modelview matrices to the matrix stack. - - - - - Mode for Begin: draw quads. - - - - - Resolves the render target for subsequent operations sampling from it. - - - - - Sets current texture coordinate (v.x,v.y,v.z) for all texture units. - - - - - - Sets current texture coordinate (x,y) for all texture units. - - - - - - - Sets current texture coordinate (x,y,z) for all texture units. - - - - - - - - Mode for Begin: draw triangle strip. - - - - - Mode for Begin: draw triangles. - - - - - Submit a vertex. - - - - - - Submit a vertex. - - - - - - - - Set the rendering viewport. - - - - - - Gradient used for animating colors. - - - - - All alpha keys defined in the gradient. - - - - - All color keys defined in the gradient. - - - - - Control how the gradient is evaluated. - - - - - Create a new Gradient object. - - - - - Calculate color at a given time. - - Time of the key (0 - 1). - - - - Setup Gradient with an array of color keys and alpha keys. - - Color keys of the gradient (maximum 8 color keys). - Alpha keys of the gradient (maximum 8 alpha keys). - - - - Alpha key used by Gradient. - - - - - Alpha channel of key. - - - - - Time of the key (0 - 1). - - - - - Gradient alpha key. - - Alpha of key (0 - 1). - Time of the key (0 - 1). - - - - Color key used by Gradient. - - - - - Color of key. - - - - - Time of the key (0 - 1). - - - - - Gradient color key. - - Color of key. - Time of the key (0 - 1). - - - - - Select how gradients will be evaluated. - - - - - Find the 2 keys adjacent to the requested evaluation time, and linearly interpolate between them to obtain a blended color. - - - - - Return a fixed color, by finding the first key whose time value is greater than the requested evaluation time. - - - - - Attribute used to configure the usage of the GradientField and Gradient Editor for a gradient. - - - - - If set to true the Gradient uses HDR colors. - - - - - Attribute for Gradient fields. Used for configuring the GUI for the Gradient Editor. - - Set to true if the colors should be treated as HDR colors (default value: false). - - - - Raw interface to Unity's drawing functions. - - - - - Currently active color buffer (Read Only). - - - - - Returns the currently active color gamut. - - - - - Currently active depth/stencil buffer (Read Only). - - - - - Graphics Tier classification for current device. -Changing this value affects any subsequently loaded shaders. Initially this value is auto-detected from the hardware in use. - - - - - Copies source texture into destination render texture with a shader. - - Source texture. - The destination RenderTexture. Set this to null to blit directly to screen. See description for more information. - Material to use. Material's shader could do some post-processing effect, for example. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - Offset applied to the source texture coordinate. - Scale applied to the source texture coordinate. - - - - Copies source texture into destination render texture with a shader. - - Source texture. - The destination RenderTexture. Set this to null to blit directly to screen. See description for more information. - Material to use. Material's shader could do some post-processing effect, for example. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - Offset applied to the source texture coordinate. - Scale applied to the source texture coordinate. - - - - Copies source texture into destination render texture with a shader. - - Source texture. - The destination RenderTexture. Set this to null to blit directly to screen. See description for more information. - Material to use. Material's shader could do some post-processing effect, for example. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - Offset applied to the source texture coordinate. - Scale applied to the source texture coordinate. - - - - Copies source texture into destination render texture with a shader. - - Source texture. - The destination RenderTexture. Set this to null to blit directly to screen. See description for more information. - Material to use. Material's shader could do some post-processing effect, for example. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - Offset applied to the source texture coordinate. - Scale applied to the source texture coordinate. - - - - Copies source texture into destination, for multi-tap shader. - - Source texture. - Destination RenderTexture, or null to blit directly to screen. - Material to use for copying. Material's shader should do some post-processing effect. - Variable number of filtering offsets. Offsets are given in pixels. - - - - Clear random write targets for level pixel shaders. - - - - - This function provides an efficient way to convert between textures of different formats and dimensions. -The destination texture format should be uncompressed and correspond to a supported RenderTextureFormat. - - Source texture. - Destination texture. - Source element (e.g. cubemap face). Set this to 0 for 2d source textures. - Destination element (e.g. cubemap face or texture array element). - - True if the call succeeded. - - - - - This function provides an efficient way to convert between textures of different formats and dimensions. -The destination texture format should be uncompressed and correspond to a supported RenderTextureFormat. - - Source texture. - Destination texture. - Source element (e.g. cubemap face). Set this to 0 for 2d source textures. - Destination element (e.g. cubemap face or texture array element). - - True if the call succeeded. - - - - - Copy texture contents. - - Source texture. - Destination texture. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Copy texture contents. - - Source texture. - Destination texture. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Copy texture contents. - - Source texture. - Destination texture. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Creates a GPUFence which will be passed after the last Blit, Clear, Draw, Dispatch or Texture Copy command prior to this call has been completed on the GPU. - - On some platforms there is a significant gap between the vertex processing completing and the pixel processing begining for a given draw call. This parameter allows for the fence to be passed after either the vertex or pixel processing for the proceeding draw has completed. If a compute shader dispatch was the last task submitted then this parameter is ignored. - - Returns a new GPUFence. - - - - - Draw a mesh. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). - Material to use. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be rendered in the given camera only. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - Determines whether the mesh can cast shadows. - Determines whether the mesh can receive shadows. - Should the mesh use light probes? - If used, the mesh will use this Transform's position to sample light probes and find the matching reflection probe. - LightProbeUsage for the mesh. - - - - - Draw a mesh. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). - Material to use. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be rendered in the given camera only. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - Determines whether the mesh can cast shadows. - Determines whether the mesh can receive shadows. - Should the mesh use light probes? - If used, the mesh will use this Transform's position to sample light probes and find the matching reflection probe. - LightProbeUsage for the mesh. - - - - - Draw a mesh. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). - Material to use. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be rendered in the given camera only. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - Determines whether the mesh can cast shadows. - Determines whether the mesh can receive shadows. - Should the mesh use light probes? - If used, the mesh will use this Transform's position to sample light probes and find the matching reflection probe. - LightProbeUsage for the mesh. - - - - - Draw a mesh. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). - Material to use. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be rendered in the given camera only. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - Determines whether the mesh can cast shadows. - Determines whether the mesh can receive shadows. - Should the mesh use light probes? - If used, the mesh will use this Transform's position to sample light probes and find the matching reflection probe. - LightProbeUsage for the mesh. - - - - - Draw a mesh. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). - Material to use. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be rendered in the given camera only. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - Determines whether the mesh can cast shadows. - Determines whether the mesh can receive shadows. - Should the mesh use light probes? - If used, the mesh will use this Transform's position to sample light probes and find the matching reflection probe. - LightProbeUsage for the mesh. - - - - - Draw the same mesh multiple times using GPU instancing. - - The Mesh to draw. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Material to use. - The array of object transformation matrices. - The number of instances to be drawn. - Additional material properties to apply. See MaterialPropertyBlock. - Should the meshes cast shadows? - Should the meshes receive shadows? - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be drawn in the given camera only. - LightProbeUsage for the instances. - - - - - Draw the same mesh multiple times using GPU instancing. - - The Mesh to draw. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Material to use. - The array of object transformation matrices. - The number of instances to be drawn. - Additional material properties to apply. See MaterialPropertyBlock. - Should the meshes cast shadows? - Should the meshes receive shadows? - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be drawn in the given camera only. - LightProbeUsage for the instances. - - - - - Draw the same mesh multiple times using GPU instancing. - - The Mesh to draw. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Material to use. - The bounding volume surrounding the instances you intend to draw. - The GPU buffer containing the arguments for how many instances of this mesh to draw. - The byte offset into the buffer, where the draw arguments start. - Additional material properties to apply. See MaterialPropertyBlock. - Determines whether the mesh can cast shadows. - Determines whether the mesh can receive shadows. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be drawn in the given camera only. - LightProbeUsage for the instances. - - - - - Draw a mesh immediately. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). Note that the mesh will not be displayed correctly if matrix has negative scale. - Subset of the mesh to draw. - - - - Draw a mesh immediately. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). Note that the mesh will not be displayed correctly if matrix has negative scale. - Subset of the mesh to draw. - - - - Draw a mesh immediately. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). Note that the mesh will not be displayed correctly if matrix has negative scale. - Subset of the mesh to draw. - - - - Draw a mesh immediately. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). Note that the mesh will not be displayed correctly if matrix has negative scale. - Subset of the mesh to draw. - - - - Draws a fully procedural geometry on the GPU. - - - - - - - - Draws a fully procedural geometry on the GPU. - - Topology of the procedural geometry. - Buffer with draw arguments. - Byte offset where in the buffer the draw arguments are. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Execute a command buffer. - - The buffer to execute. - - - - Executes a command buffer on an async compute queue with the queue selected based on the ComputeQueueType parameter passed. - -It is required that all of the commands within the command buffer be of a type suitable for execution on the async compute queues. If the buffer contains any commands that are not appropriate then an error will be logged and displayed in the editor window. Specifically the following commands are permitted in a CommandBuffer intended for async execution: - -CommandBuffer.BeginSample - -CommandBuffer.CopyCounterValue - -CommandBuffer.CopyTexture - -CommandBuffer.CreateGPUFence - -CommandBuffer.DispatchCompute - -CommandBuffer.EndSample - -CommandBuffer.IssuePluginEvent - -CommandBuffer.SetComputeBufferParam - -CommandBuffer.SetComputeFloatParam - -CommandBuffer.SetComputeFloatParams - -CommandBuffer.SetComputeTextureParam - -CommandBuffer.SetComputeVectorParam - -CommandBuffer.WaitOnGPUFence - -All of the commands within the buffer are guaranteed to be executed on the same queue. If the target platform does not support async compute queues then the work is dispatched on the graphics queue. - - The CommandBuffer to be executed. - Describes the desired async compute queue the suuplied CommandBuffer should be executed on. - - - - Set random write target for level pixel shaders. - - Index of the random write target in the shader. - RenderTexture to set as write target. - Whether to leave the append/consume counter value unchanged. - - - - Set random write target for level pixel shaders. - - Index of the random write target in the shader. - RenderTexture to set as write target. - Whether to leave the append/consume counter value unchanged. - - - - Sets current render target. - - RenderTexture to set as active render target. - Mipmap level to render into (use 0 if not mipmapped). - Cubemap face to render into (use Unknown if not a cubemap). - Depth slice to render into (use 0 if not a 3D or 2DArray render target). - Color buffer to render into. - Depth buffer to render into. - Color buffers to render into (for multiple render target effects). - Full render target setup information. - - - - Sets current render target. - - RenderTexture to set as active render target. - Mipmap level to render into (use 0 if not mipmapped). - Cubemap face to render into (use Unknown if not a cubemap). - Depth slice to render into (use 0 if not a 3D or 2DArray render target). - Color buffer to render into. - Depth buffer to render into. - Color buffers to render into (for multiple render target effects). - Full render target setup information. - - - - Sets current render target. - - RenderTexture to set as active render target. - Mipmap level to render into (use 0 if not mipmapped). - Cubemap face to render into (use Unknown if not a cubemap). - Depth slice to render into (use 0 if not a 3D or 2DArray render target). - Color buffer to render into. - Depth buffer to render into. - Color buffers to render into (for multiple render target effects). - Full render target setup information. - - - - Sets current render target. - - RenderTexture to set as active render target. - Mipmap level to render into (use 0 if not mipmapped). - Cubemap face to render into (use Unknown if not a cubemap). - Depth slice to render into (use 0 if not a 3D or 2DArray render target). - Color buffer to render into. - Depth buffer to render into. - Color buffers to render into (for multiple render target effects). - Full render target setup information. - - - - Instructs the GPU's processing of the graphics queue to wait until the given GPUFence is passed. - - The GPUFence that the GPU will be instructed to wait upon before proceeding with its processing of the graphics queue. - On some platforms there is a significant gap between the vertex processing completing and the pixel processing begining for a given draw call. This parameter allows for requested wait to be before the next items vertex or pixel processing begins. If a compute shader dispatch is the next item to be submitted then this parameter is ignored. - - - - Grid is the base class for plotting a layout of uniformly spaced points and lines. - - - - - The size of the gap between each cell in the Grid. - - - - - The layout of the cells in the Grid. - - - - - The size of each cell in the Grid. - - - - - The cell swizzle for the Grid. - - - - - Get the logical center coordinate of a grid cell in local space. - - Grid cell position. - - Center of the cell transformed into local space coordinates. - - - - - Get the logical center coordinate of a grid cell in world space. - - Grid cell position. - - Center of the cell transformed into world space coordinates. - - - - - Does the inverse swizzle of the given position for given swizzle order. - - Determines the rearrangement order for the inverse swizzle. - Position to inverse swizzle. - - The inversed swizzled position. - - - - - Swizzles the given position with the given swizzle order. - - Determines the rearrangement order for the swizzle. - Position to swizzle. - - The swizzled position. - - - - - Base class for authoring data on a grid with grid painting tools like paint, erase, pick, select and fill. - - - - - Erases data on a grid within the given bounds. - - Grid used for layout. - Target of the erase operation. By default the currently selected GameObject. - The bounds to erase data from. - - - - Box fills tiles and GameObjects into given bounds within the selected layers. - - Grid used for layout. - Target of box fill operation. By default the currently selected GameObject. - The bounds to box fill data to. - - - - Changes the Z position of the GridBrushBase. - - Modify the Z position of GridBrushBase by this value. - - - - Erases data on a grid within the given bounds. - - Grid used for layout. - Target of the erase operation. By default the currently selected GameObject. - The coordinates of the cell to erase data from. - - - - - Flips the grid brush in the given FlipAxis. - - Axis to flip by. - CellLayout for flipping. - - - - Axis to flip tiles in the GridBrushBase by. - - - - - Flip the brush in the X Axis. - - - - - Flip the brush in the Y Axis. - - - - - Flood fills data onto a grid given the starting coordinates of the cell. - - Grid used for layout. - Targets of flood fill operation. By default the currently selected GameObject. - Starting position of the flood fill. - - - - Move is called when user moves the area previously selected with the selection marquee. - - Grid used for layout. - Target of the move operation. By default the currently selected GameObject. - Source bounds of the move. - Target bounds of the move. - - - - - MoveEnd is called when user has ended the move of the area previously selected with the selection marquee. - - Layers affected by the move operation. - Target of the move operation. By default the currently selected GameObject. - Grid used for layout. - - - - - MoveEnd is called when user starts moving the area previously selected with the selection marquee. - - Grid used for layout. - Target of the move operation. By default the currently selected GameObject. - Position where the move operation has started. - - - - - Paints data into a grid within the given bounds. - - Grid used for layout. - Target of the paint operation. By default the currently selected GameObject. - The coordinates of the cell to paint data to. - - - - - Picks data from a grid given the coordinates of the cells. - - Grid used for layout. - Target of the paint operation. By default the currently selected GameObject. - The coordinates of the cells to paint data from. - Pivot of the picking brush. - - - - - Resets Z position changes of the GridBrushBase. - - - - - Rotates all tiles on the grid brush with the given RotationDirection. - - Direction to rotate by. - CellLayout for rotating. - - - - Rotate tiles in the GridBrushBase in this direction. - - - - - Rotates tiles clockwise. - - - - - Rotates tiles counter-clockwise. - - - - - Select an area of a grid. - - Grid used for layout. - Targets of paint operation. By default the currently selected GameObject. - Area to get selected. - - - - - Tool mode for the GridBrushBase. - - - - - Box Fill. - - - - - Erase. - - - - - Flood Fill. - - - - - Move. - - - - - Paint. - - - - - Pick. - - - - - Select. - - - - - An abstract class that defines a grid layout. - - - - - The size of the gap between each cell in the layout. - - - - - The layout of the cells. - - - - - The size of each cell in the layout. - - - - - The cell swizzle for the layout. - - - - - The layout of the GridLayout. - - - - - Hexagonal layout for cells in the GridLayout. - - - - - Isometric layout for cells in the GridLayout. - - - - - Isometric layout for cells in the GridLayout where any Z cell value set will be added as a Y value. - - - - - Rectangular layout for cells in the GridLayout. - - - - - Swizzles cell positions to other positions. - - - - - Keeps the cell positions at XYZ. - - - - - Swizzles the cell positions from XYZ to XZY. - - - - - Swizzles the cell positions from XYZ to YXZ. - - - - - Swizzles the cell positions from XYZ to YZX. - - - - - Swizzles the cell positions from XYZ to ZXY. - - - - - Swizzles the cell positions from XYZ to ZYX. - - - - - Converts a cell position to local position space. - - Cell position to convert. - - Local position of the cell position. - - - - - Converts an interpolated cell position in floats to local position space. - - Interpolated cell position to convert. - - Local position of the cell position. - - - - - Converts a cell position to world position space. - - Cell position to convert. - - World position of the cell position. - - - - - Returns the local bounds for a cell at the location. - - Location of the cell. - - Local bounds of cell at the location. - - - - - Returns the local bounds for the groups of cells at the location. - - Origin of the group of cells. - Size of the group of cells. - - Local bounds of the group of cells at the location. - - - - - Get the default center coordinate of a cell for the set layout of the Grid. - - - Cell Center coordinate. - - - - - Converts a local position to cell position. - - Local Position to convert. - - Cell position of the local position. - - - - - Converts a local position to cell position. - - Local Position to convert. - - Interpolated cell position of the local position. - - - - - Converts a local position to world position. - - Local Position to convert. - - World position of the local position. - - - - - Converts a world position to cell position. - - World Position to convert. - - Cell position of the world position. - - - - - Converts a world position to local position. - - World Position to convert. - - Local position of the world position. - - - - - The GUI class is the interface for Unity's GUI with manual positioning. - - - - - Global tinting color for all background elements rendered by the GUI. - - - - - Returns true if any controls changed the value of the input data. - - - - - Global tinting color for the GUI. - - - - - Tinting color for all text rendered by the GUI. - - - - - The sorting depth of the currently executing GUI behaviour. - - - - - Is the GUI enabled? - - - - - The GUI transform matrix. - - - - - The global skin to use. - - - - - The tooltip of the control the mouse is currently over, or which has keyboard focus. (Read Only). - - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a scrolling view inside your GUI. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when viewRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when viewRect is taller than position. - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin a scrolling view inside your GUI. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when viewRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when viewRect is taller than position. - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin a scrolling view inside your GUI. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when viewRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when viewRect is taller than position. - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin a scrolling view inside your GUI. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when viewRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when viewRect is taller than position. - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Bring a specific window to back of the floating windows. - - The identifier used when you created the window in the Window call. - - - - Bring a specific window to front of the floating windows. - - The identifier used when you created the window in the Window call. - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a window draggable. - - The part of the window that can be dragged. This is clipped to the actual window. - - - - If you want to have the entire window background to act as a drag area, use the version of DragWindow that takes no parameters and put it at the end of the window function. - - - - - Draw a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - - - - Draw a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - - - - Draw a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - - - - Draw a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - - - - Draws a border with rounded corners within a rectangle. The texture is used to pattern the border. Note that this method only works on shader model 2.5 and above. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - A tint color to apply on the texture. - The width of the border. If 0, the full texture is drawn. - The width of the borders (left, top, right and bottom). If Vector4.zero, the full texture is drawn. - The radius for rounded corners. If 0, corners will not be rounded. - The radiuses for rounded corners (top-left, top-right, bottom-right and bottom-left). If Vector4.zero, corners will not be rounded. - - - - Draws a border with rounded corners within a rectangle. The texture is used to pattern the border. Note that this method only works on shader model 2.5 and above. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - A tint color to apply on the texture. - The width of the border. If 0, the full texture is drawn. - The width of the borders (left, top, right and bottom). If Vector4.zero, the full texture is drawn. - The radius for rounded corners. If 0, corners will not be rounded. - The radiuses for rounded corners (top-left, top-right, bottom-right and bottom-left). If Vector4.zero, corners will not be rounded. - - - - Draw a texture within a rectangle with the given texture coordinates. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to alpha blend the image on to the display (the default). If false, the picture is drawn on to the display. - - - - Draw a texture within a rectangle with the given texture coordinates. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to alpha blend the image on to the display (the default). If false, the picture is drawn on to the display. - - - - End a group. - - - - - Ends a scrollview started with a call to BeginScrollView. - - - - - - Ends a scrollview started with a call to BeginScrollView. - - - - - - Move keyboard focus to a named control. - - Name set using SetNextControlName. - - - - Make a window become the active window. - - The identifier used when you created the window in the Window call. - - - - Get the name of named control that has focus. - - - - - Disposable helper class for managing BeginGroup / EndGroup. - - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Make a horizontal scrollbar. Scrollbars are what you use to scroll through a document. Most likely, you want to use scrollViews instead. - - Rectangle on the screen to use for the scrollbar. - The position between min and max. - How much can we see? - The value at the left end of the scrollbar. - The value at the right end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - Make a horizontal scrollbar. Scrollbars are what you use to scroll through a document. Most likely, you want to use scrollViews instead. - - Rectangle on the screen to use for the scrollbar. - The position between min and max. - How much can we see? - The value at the left end of the scrollbar. - The value at the right end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - A horizontal slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - - The value that has been set by the user. - - - - - A horizontal slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - - The value that has been set by the user. - - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Make a text field where the user can enter a password. - - Rectangle on the screen to use for the text field. - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited password. - - - - - Make a text field where the user can enter a password. - - Rectangle on the screen to use for the text field. - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited password. - - - - - Make a text field where the user can enter a password. - - Rectangle on the screen to use for the text field. - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited password. - - - - - Make a text field where the user can enter a password. - - Rectangle on the screen to use for the text field. - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited password. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Scrolls all enclosing scrollviews so they try to make position visible. - - - - - - Disposable helper class for managing BeginScrollView / EndScrollView. - - - - - Whether this ScrollView should handle scroll wheel events. (default: true). - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when clientRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when clientRect is taller than position. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when clientRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when clientRect is taller than position. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when clientRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when clientRect is taller than position. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when clientRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when clientRect is taller than position. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Set the name of the next control. - - - - - - Make a Multi-line text area where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - - The edited string. - - - - - Make a Multi-line text area where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - - The edited string. - - - - - Make a Multi-line text area where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - - The edited string. - - - - - Make a Multi-line text area where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited string. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Determines how toolbar button size is calculated. - - - - - The width of each toolbar button is calculated based on the width of its content. - - - - - Calculates the button size by dividing the available width by the number of buttons. The minimum size is the maximum content width. - - - - - Remove focus from all windows. - - - - - Make a vertical scrollbar. Scrollbars are what you use to scroll through a document. Most likely, you want to use scrollViews instead. - - Rectangle on the screen to use for the scrollbar. - The position between min and max. - How much can we see? - The value at the top of the scrollbar. - The value at the bottom of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - Make a vertical scrollbar. Scrollbars are what you use to scroll through a document. Most likely, you want to use scrollViews instead. - - Rectangle on the screen to use for the scrollbar. - The position between min and max. - How much can we see? - The value at the top of the scrollbar. - The value at the bottom of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - A vertical slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the top end of the slider. - The value at the bottom end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - - The value that has been set by the user. - - - - - A vertical slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the top end of the slider. - The value at the bottom end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - - The value that has been set by the user. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Callback to draw GUI within a window (used with GUI.Window). - - - - - - The contents of a GUI element. - - - - - The icon image contained. - - - - - Shorthand for empty content. - - - - - The text contained. - - - - - The tooltip of this element. - - - - - Constructor for GUIContent in all shapes and sizes. - - - - - Build a GUIContent object containing only text. - - - - - - Build a GUIContent object containing only an image. - - - - - - Build a GUIContent object containing both text and an image. - - - - - - - Build a GUIContent containing some text. When the user hovers the mouse over it, the global GUI.tooltip is set to the tooltip. - - - - - - - Build a GUIContent containing an image. When the user hovers the mouse over it, the global GUI.tooltip is set to the tooltip. - - - - - - - Build a GUIContent that contains both text, an image and has a tooltip defined. When the user hovers the mouse over it, the global GUI.tooltip is set to the tooltip. - - - - - - - - Build a GUIContent as a copy of another GUIContent. - - - - - - Base class for images & text strings displayed in a GUI. - - - - - Returns bounding rectangle of GUIElement in screen coordinates. - - - - - - Returns bounding rectangle of GUIElement in screen coordinates. - - - - - - Is a point on screen inside the element? - - - - - - - Is a point on screen inside the element? - - - - - - - Component added to a camera to make it render 2D GUI elements. - - - - - Get the GUI element at a specific screen position. - - - - - - The GUILayout class is the interface for Unity gui with automatic layout. - - - - - Disposable helper class for managing BeginArea / EndArea. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a Horizontal control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a Horizontal control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a Horizontal control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a Horizontal control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a Horizontal control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin a vertical control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a vertical control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a vertical control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a vertical control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a vertical control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Close a GUILayout block started with BeginArea. - - - - - Close a group started with BeginHorizontal. - - - - - End a scroll view begun with a call to BeginScrollView. - - - - - Close a group started with BeginVertical. - - - - - Option passed to a control to allow or disallow vertical expansion. - - - - - - Option passed to a control to allow or disallow horizontal expansion. - - - - - - Insert a flexible space element. - - - - - Option passed to a control to give it an absolute height. - - - - - - Disposable helper class for managing BeginHorizontal / EndHorizontal. - - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a horizontal scrollbar. - - The position between min and max. - How much can we see? - The value at the left end of the scrollbar. - The value at the right end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - Make a horizontal scrollbar. - - The position between min and max. - How much can we see? - The value at the left end of the scrollbar. - The value at the right end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - A horizontal slider the user can drag to change a value between a min and a max. - - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The value that has been set by the user. - - - - - A horizontal slider the user can drag to change a value between a min and a max. - - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The value that has been set by the user. - - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Option passed to a control to specify a maximum height. - - - - - - Option passed to a control to specify a maximum width. - - - - - - Option passed to a control to specify a minimum height. - - - - - - Option passed to a control to specify a minimum width. - - - - - - - Make a text field where the user can enter a password. - - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - - The edited password. - - - - - Make a text field where the user can enter a password. - - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - - The edited password. - - - - - Make a text field where the user can enter a password. - - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - - The edited password. - - - - - Make a text field where the user can enter a password. - - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - - The edited password. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Disposable helper class for managing BeginScrollView / EndScrollView. - - - - - Whether this ScrollView should handle scroll wheel events. (default: true). - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Insert a space in the current layout group. - - - - - - Make a multi-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.&amp;lt;br&amp;gt; -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a multi-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.&amp;lt;br&amp;gt; -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a multi-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.&amp;lt;br&amp;gt; -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a multi-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.&amp;lt;br&amp;gt; -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Disposable helper class for managing BeginVertical / EndVertical. - - - - - Create a new VerticalScope and begin the corresponding vertical group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new VerticalScope and begin the corresponding vertical group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new VerticalScope and begin the corresponding vertical group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new VerticalScope and begin the corresponding vertical group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new VerticalScope and begin the corresponding vertical group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a vertical scrollbar. - - The position between min and max. - How much can we see? - The value at the top end of the scrollbar. - The value at the bottom end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - Make a vertical scrollbar. - - The position between min and max. - How much can we see? - The value at the top end of the scrollbar. - The value at the bottom end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - A vertical slider the user can drag to change a value between a min and a max. - - The value the slider shows. This determines the position of the draggable thumb. - The value at the top end of the slider. - The value at the bottom end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - - - The value that has been set by the user. - - - - - A vertical slider the user can drag to change a value between a min and a max. - - The value the slider shows. This determines the position of the draggable thumb. - The value at the top end of the slider. - The value at the bottom end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - - - The value that has been set by the user. - - - - - Option passed to a control to give it an absolute width. - - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Class internally used to pass layout options into GUILayout functions. You don't use these directly, but construct them with the layouting functions in the GUILayout class. - - - - - Utility functions for implementing and extending the GUILayout class. - - - - - Reserve layout space for a rectangle with a specific aspect ratio. - - The aspect ratio of the element (width / height). - An optional style. If specified, the style's padding value will be added to the sizes of the returned rectangle & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rect for the control. - - - - - Reserve layout space for a rectangle with a specific aspect ratio. - - The aspect ratio of the element (width / height). - An optional style. If specified, the style's padding value will be added to the sizes of the returned rectangle & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rect for the control. - - - - - Reserve layout space for a rectangle with a specific aspect ratio. - - The aspect ratio of the element (width / height). - An optional style. If specified, the style's padding value will be added to the sizes of the returned rectangle & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rect for the control. - - - - - Reserve layout space for a rectangle with a specific aspect ratio. - - The aspect ratio of the element (width / height). - An optional style. If specified, the style's padding value will be added to the sizes of the returned rectangle & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rect for the control. - - - - - Get the rectangle last used by GUILayout for a control. - - - The last used rectangle. - - - - - Reserve layout space for a rectangle for displaying some contents with a specific style. - - The content to make room for displaying. - The GUIStyle to layout for. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle that is large enough to contain content when rendered in style. - - - - - Reserve layout space for a rectangle for displaying some contents with a specific style. - - The content to make room for displaying. - The GUIStyle to layout for. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle that is large enough to contain content when rendered in style. - - - - - Reserve layout space for a rectangle with a fixed content area. - - The width of the area you want. - The height of the area you want. - An optional GUIStyle to layout for. If specified, the style's padding value will be added to your sizes & its margin value will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectanlge to put your control in. - - - - - Reserve layout space for a rectangle with a fixed content area. - - The width of the area you want. - The height of the area you want. - An optional GUIStyle to layout for. If specified, the style's padding value will be added to your sizes & its margin value will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectanlge to put your control in. - - - - - Reserve layout space for a rectangle with a fixed content area. - - The width of the area you want. - The height of the area you want. - An optional GUIStyle to layout for. If specified, the style's padding value will be added to your sizes & its margin value will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectanlge to put your control in. - - - - - Reserve layout space for a rectangle with a fixed content area. - - The width of the area you want. - The height of the area you want. - An optional GUIStyle to layout for. If specified, the style's padding value will be added to your sizes & its margin value will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectanlge to put your control in. - - - - - Reserve layout space for a flexible rect. - - The minimum width of the area passed back. - The maximum width of the area passed back. - The minimum width of the area passed back. - The maximum width of the area passed back. - An optional style. If specified, the style's padding value will be added to the sizes requested & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle with size between minWidth & maxWidth on both axes. - - - - - Reserve layout space for a flexible rect. - - The minimum width of the area passed back. - The maximum width of the area passed back. - The minimum width of the area passed back. - The maximum width of the area passed back. - An optional style. If specified, the style's padding value will be added to the sizes requested & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle with size between minWidth & maxWidth on both axes. - - - - - Reserve layout space for a flexible rect. - - The minimum width of the area passed back. - The maximum width of the area passed back. - The minimum width of the area passed back. - The maximum width of the area passed back. - An optional style. If specified, the style's padding value will be added to the sizes requested & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle with size between minWidth & maxWidth on both axes. - - - - - Reserve layout space for a flexible rect. - - The minimum width of the area passed back. - The maximum width of the area passed back. - The minimum width of the area passed back. - The maximum width of the area passed back. - An optional style. If specified, the style's padding value will be added to the sizes requested & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle with size between minWidth & maxWidth on both axes. - - - - - General settings for how the GUI behaves. - - - - - The color of the cursor in text fields. - - - - - The speed of text field cursor flashes. - - - - - Should double-clicking select words in text fields. - - - - - The color of the selection rect in text fields. - - - - - Should triple-clicking select whole text in text fields. - - - - - Defines how GUI looks and behaves. - - - - - Style used by default for GUI.Box controls. - - - - - Style used by default for GUI.Button controls. - - - - - Array of GUI styles for specific needs. - - - - - The default font to use for all styles. - - - - - Style used by default for the background part of GUI.HorizontalScrollbar controls. - - - - - Style used by default for the left button on GUI.HorizontalScrollbar controls. - - - - - Style used by default for the right button on GUI.HorizontalScrollbar controls. - - - - - Style used by default for the thumb that is dragged in GUI.HorizontalScrollbar controls. - - - - - Style used by default for the background part of GUI.HorizontalSlider controls. - - - - - Style used by default for the thumb that is dragged in GUI.HorizontalSlider controls. - - - - - Style used by default for GUI.Label controls. - - - - - Style used by default for the background of ScrollView controls (see GUI.BeginScrollView). - - - - - Generic settings for how controls should behave with this skin. - - - - - Style used by default for GUI.TextArea controls. - - - - - Style used by default for GUI.TextField controls. - - - - - Style used by default for GUI.Toggle controls. - - - - - Style used by default for the background part of GUI.VerticalScrollbar controls. - - - - - Style used by default for the down button on GUI.VerticalScrollbar controls. - - - - - Style used by default for the thumb that is dragged in GUI.VerticalScrollbar controls. - - - - - Style used by default for the up button on GUI.VerticalScrollbar controls. - - - - - Style used by default for the background part of GUI.VerticalSlider controls. - - - - - Style used by default for the thumb that is dragged in GUI.VerticalSlider controls. - - - - - Style used by default for Window controls (SA GUI.Window). - - - - - Try to search for a GUIStyle. This functions returns NULL and does not give an error. - - - - - - Get a named GUIStyle. - - - - - - Styling information for GUI elements. - - - - - Rendering settings for when the control is pressed down. - - - - - Text alignment. - - - - - The borders of all background images. - - - - - What to do when the contents to be rendered is too large to fit within the area given. - - - - - Pixel offset to apply to the content of this GUIstyle. - - - - - If non-0, any GUI elements rendered with this style will have the height specified here. - - - - - If non-0, any GUI elements rendered with this style will have the width specified here. - - - - - Rendering settings for when the element has keyboard focus. - - - - - The font to use for rendering. If null, the default font for the current GUISkin is used instead. - - - - - The font size to use (for dynamic fonts). - - - - - The font style to use (for dynamic fonts). - - - - - Rendering settings for when the mouse is hovering over the control. - - - - - How image and text of the GUIContent is combined. - - - - - The height of one line of text with this style, measured in pixels. (Read Only) - - - - - The margins between elements rendered in this style and any other GUI elements. - - - - - The name of this GUIStyle. Used for getting them based on name. - - - - - Shortcut for an empty GUIStyle. - - - - - Rendering settings for when the component is displayed normally. - - - - - Rendering settings for when the element is turned on and pressed down. - - - - - Rendering settings for when the element has keyboard and is turned on. - - - - - Rendering settings for when the control is turned on and the mouse is hovering it. - - - - - Rendering settings for when the control is turned on. - - - - - Extra space to be added to the background image. - - - - - Space from the edge of GUIStyle to the start of the contents. - - - - - Enable HTML-style tags for Text Formatting Markup. - - - - - Can GUI elements of this style be stretched vertically for better layout? - - - - - Can GUI elements of this style be stretched horizontally for better layouting? - - - - - Should the text be wordwrapped? - - - - - How tall this element will be when rendered with content and a specific width. - - - - - - - Calculate the minimum and maximum widths for this style rendered with content. - - - - - - - - Calculate the size of an element formatted with this style, and a given space to content. - - - - - - Calculate the size of some content if it is rendered with this style. - - - - - - Constructor for empty GUIStyle. - - - - - Constructs GUIStyle identical to given other GUIStyle. - - - - - - Draw this GUIStyle on to the screen, internal version. - - - - - - - - - - Draw the GUIStyle with a text string inside. - - - - - - - - - - - Draw the GUIStyle with an image inside. If the image is too large to fit within the content area of the style it is scaled down. - - - - - - - - - - - Draw the GUIStyle with text and an image inside. If the image is too large to fit within the content area of the style it is scaled down. - - - - - - - - - - - - Draw the GUIStyle with text and an image inside. If the image is too large to fit within the content area of the style it is scaled down. - - - - - - - - - - - - Draw the GUIStyle with text and an image inside. If the image is too large to fit within the content area of the style it is scaled down. - - - - - - - - - - - - Draw this GUIStyle with selected content. - - - - - - - - - Draw this GUIStyle with selected content. - - - - - - - - - - Get the pixel position of a given string index. - - - - - - - - Get the cursor position (indexing into contents.text) when the user clicked at cursorPixelPosition. - - - - - - - - Get a named GUI style from the current skin. - - - - - - Specialized values for the given states used by GUIStyle objects. - - - - - The background image used by GUI elements in this given state. - - - - - Background images used by this state when on a high-resolution screen. It should either be left empty, or contain a single image that is exactly twice the resolution of background. This is only used by the editor. The field is not copied to player data, and is not accessible from player code. - - - - - The text color used by GUI elements in this state. - - - - - Allows to control for which display the OnGUI is called. - - - - - Default constructor initializes the attribute for OnGUI to be called for all available displays. - - Display index. - Display index. - Display index list. - - - - Default constructor initializes the attribute for OnGUI to be called for all available displays. - - Display index. - Display index. - Display index list. - - - - Default constructor initializes the attribute for OnGUI to be called for all available displays. - - Display index. - Display index. - Display index list. - - - - Default constructor initializes the attribute for OnGUI to be called for all available displays. - - Display index. - Display index. - Display index list. - - - - A text string displayed in a GUI. - - - - - The alignment of the text. - - - - - The anchor of the text. - - - - - The color used to render the text. - - - - - The font used for the text. - - - - - The font size to use (for dynamic fonts). - - - - - The font style to use (for dynamic fonts). - - - - - The line spacing multiplier. - - - - - The Material to use for rendering. - - - - - The pixel offset of the text. - - - - - Enable HTML-style tags for Text Formatting Markup. - - - - - The tab width multiplier. - - - - - The text to display. - - - - - A texture image used in a 2D GUI. - - - - - The border defines the number of pixels from the edge that are not affected by scale. - - - - - The color of the GUI texture. - - - - - Pixel inset used for pixel adjustments for size and position. - - - - - The texture used for drawing. - - - - - Utility class for making new GUI controls. - - - - - A global property, which is true if a ModalWindow is being displayed, false otherwise. - - - - - The controlID of the current hot control. - - - - - The controlID of the control that has keyboard focus. - - - - - Get access to the system-wide clipboard. - - - - - Align a local space rectangle to the pixel grid. - - The local space rectangle that needs to be processed. - Width, in pixel units, of the axis-aligned bounding box that encompasses the aligned points. - Height, in pixel units, of the axis-aligned bounding box that encompasses the aligned points. - - - The aligned rectangle in local space. - - - - - Align a local space rectangle to the pixel grid. - - The local space rectangle that needs to be processed. - Width, in pixel units, of the axis-aligned bounding box that encompasses the aligned points. - Height, in pixel units, of the axis-aligned bounding box that encompasses the aligned points. - - - The aligned rectangle in local space. - - - - - Puts the GUI in a state that will prevent all subsequent immediate mode GUI functions from evaluating for the remainder of the GUI loop by throwing an ExitGUIException. - - - - - Get a unique ID for a control. - - - - - - - Get a unique ID for a control. - - - - - - - Get a unique ID for a control, using an integer as a hint to help ensure correct matching of IDs to controls. - - - - - - - - - Get a unique ID for a control, using an integer as a hint to help ensure correct matching of IDs to controls. - - - - - - - - - Get a unique ID for a control, using a the label content as a hint to help ensure correct matching of IDs to controls. - - - - - - - - Get a unique ID for a control, using a the label content as a hint to help ensure correct matching of IDs to controls. - - - - - - - - Get a state object from a controlID. - - - - - - - Convert a point from GUI position to screen space. - - - - - - Get an existing state object from a controlID. - - - - - - - Helper function to rotate the GUI around a point. - - - - - - - Helper function to scale the GUI around a point. - - - - - - - Convert a point from screen space to GUI position. - - - - - - Interface into the Gyroscope. - - - - - Returns the attitude (ie, orientation in space) of the device. - - - - - Sets or retrieves the enabled status of this gyroscope. - - - - - Returns the gravity acceleration vector expressed in the device's reference frame. - - - - - Returns rotation rate as measured by the device's gyroscope. - - - - - Returns unbiased rotation rate as measured by the device's gyroscope. - - - - - Sets or retrieves gyroscope interval in seconds. - - - - - Returns the acceleration that the user is giving to the device. - - - - - Interface into functionality unique to handheld devices. - - - - - Determines whether or not a 32-bit display buffer will be used. - - - - - Gets the current activity indicator style. - - - - - Plays a full-screen movie. - - Filesystem path to the movie file. - Background color. - How the playback controls are to be displayed. - How the movie is to be scaled to fit the screen. - - - - Plays a full-screen movie. - - Filesystem path to the movie file. - Background color. - How the playback controls are to be displayed. - How the movie is to be scaled to fit the screen. - - - - Plays a full-screen movie. - - Filesystem path to the movie file. - Background color. - How the playback controls are to be displayed. - How the movie is to be scaled to fit the screen. - - - - Plays a full-screen movie. - - Filesystem path to the movie file. - Background color. - How the playback controls are to be displayed. - How the movie is to be scaled to fit the screen. - - - - Sets the desired activity indicator style. - - - - - - Sets the desired activity indicator style. - - - - - - Starts os activity indicator. - - - - - Stops os activity indicator. - - - - - Triggers device vibration. - - - - - Represent the hash value. - - - - - Get if the hash value is valid or not. (Read Only) - - - - - Compute a hash of the input string. - - - - - - Construct the Hash128. - - - - - - - - - Convert the input string to Hash128. - - - - - - Convert Hash128 to string. - - - - - Utilities to compute hashes with unsafe code. - - - - - Compute a 128 bit hash based on a data. - - Pointer to the data to hash. - The number of bytes to hash. - A pointer to store the low 64 bits of the computed hash. - A pointer to store the high 64 bits of the computed hash. - A pointer to the Hash128 to updated with the computed hash. - - - - Compute a 128 bit hash based on a data. - - Pointer to the data to hash. - The number of bytes to hash. - A pointer to store the low 64 bits of the computed hash. - A pointer to store the high 64 bits of the computed hash. - A pointer to the Hash128 to updated with the computed hash. - - - - Utilities to compute hashes. - - - - - Append inHash in outHash. - - Hash to append. - Hash that will be updated. - - - - Compute a 128 bit hash based on a value. the type of the value must be a value type. - - A reference to the value to hash. - A reference to the Hash128 to updated with the computed hash. - - - - Compute a Hash128 of a Matrix4x4. - - The Matrix4x4 to hash. - The computed hash. - - - - Compute a Hash128 of a Vector3. - - The Vector3 to hash. - The computed hash. - - - - Enumeration of all the muscles in the head. - - - - - The head front-back muscle. - - - - - The head left-right muscle. - - - - - The head roll left-right muscle. - - - - - The jaw down-up muscle. - - - - - The jaw left-right muscle. - - - - - The last value of the HeadDof enum. - - - - - The left eye down-up muscle. - - - - - The left eye in-out muscle. - - - - - The neck front-back muscle. - - - - - The neck left-right muscle. - - - - - The neck roll left-right muscle. - - - - - The right eye down-up muscle. - - - - - The right eye in-out muscle. - - - - - Use this PropertyAttribute to add a header above some fields in the Inspector. - - - - - The header text. - - - - - Add a header above some fields in the Inspector. - - The header text. - - - - Provide a custom documentation URL for a class. - - - - - Initialize the HelpURL attribute with a documentation url. - - The custom documentation URL for this class. - - - - The documentation URL specified for this class. - - - - - Bit mask that controls object destruction, saving and visibility in inspectors. - - - - - The object will not be saved to the Scene. It will not be destroyed when a new Scene is loaded. It is a shortcut for HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor | HideFlags.DontUnloadUnusedAsset. - - - - - The object will not be saved when building a player. - - - - - The object will not be saved to the Scene in the editor. - - - - - The object will not be unloaded by Resources.UnloadUnusedAssets. - - - - - The GameObject is not shown in the Hierarchy, not saved to to Scenes, and not unloaded by Resources.UnloadUnusedAssets. - - - - - The object will not appear in the hierarchy. - - - - - It is not possible to view it in the inspector. - - - - - A normal, visible object. This is the default. - - - - - The object is not be editable in the inspector. - - - - - Makes a variable not show up in the inspector but be serialized. - - - - - The HingeJoint groups together 2 rigid bodies, constraining them to move like connected by a hinge. - - - - - The current angle in degrees of the joint relative to its rest position. (Read Only) - - - - - Limit of angular rotation (in degrees) on the hinge joint. - - - - - The motor will apply a force up to a maximum force to achieve the target velocity in degrees per second. - - - - - The spring attempts to reach a target angle by adding spring and damping forces. - - - - - Enables the joint's limits. Disabled by default. - - - - - Enables the joint's motor. Disabled by default. - - - - - Enables the joint's spring. Disabled by default. - - - - - The angular velocity of the joint in degrees per second. (Read Only) - - - - - Joint that allows a Rigidbody2D object to rotate around a point in space or a point on another object. - - - - - The current joint angle (in degrees) with respect to the reference angle. - - - - - The current joint speed. - - - - - Limit of angular rotation (in degrees) on the joint. - - - - - Gets the state of the joint limit. - - - - - Parameters for the motor force applied to the joint. - - - - - The angle (in degrees) referenced between the two bodies used as the constraint for the joint. - - - - - Should limits be placed on the range of rotation? - - - - - Should the joint be rotated automatically by a motor torque? - - - - - Gets the motor torque of the joint given the specified timestep. - - The time to calculate the motor torque for. - - - - Wrapping modes for text that reaches the horizontal boundary. - - - - - Text can exceed the horizontal boundary. - - - - - Text will word-wrap when reaching the horizontal boundary. - - - - - This is the data structure for holding individual host information. - - - - - A miscellaneous comment (can hold data). - - - - - Currently connected players. - - - - - The name of the game (like John Doe's Game). - - - - - The type of the game (like "MyUniqueGameType"). - - - - - The GUID of the host, needed when connecting with NAT punchthrough. - - - - - Server IP address. - - - - - Does the server require a password? - - - - - Maximum players limit. - - - - - Server port. - - - - - Does this server require NAT punchthrough? - - - - - Human Body Bones. - - - - - This is the Chest bone. - - - - - This is the Head bone. - - - - - This is the Hips bone. - - - - - This is the Jaw bone. - - - - - This is the Last bone index delimiter. - - - - - This is the Left Eye bone. - - - - - This is the Left Ankle bone. - - - - - This is the Left Wrist bone. - - - - - This is the left index 3rd phalange. - - - - - This is the left index 2nd phalange. - - - - - This is the left index 1st phalange. - - - - - This is the left little 3rd phalange. - - - - - This is the left little 2nd phalange. - - - - - This is the left little 1st phalange. - - - - - This is the Left Elbow bone. - - - - - This is the Left Knee bone. - - - - - This is the left middle 3rd phalange. - - - - - This is the left middle 2nd phalange. - - - - - This is the left middle 1st phalange. - - - - - This is the left ring 3rd phalange. - - - - - This is the left ring 2nd phalange. - - - - - This is the left ring 1st phalange. - - - - - This is the Left Shoulder bone. - - - - - This is the left thumb 3rd phalange. - - - - - This is the left thumb 2nd phalange. - - - - - This is the left thumb 1st phalange. - - - - - This is the Left Toes bone. - - - - - This is the Left Upper Arm bone. - - - - - This is the Left Upper Leg bone. - - - - - This is the Neck bone. - - - - - This is the Right Eye bone. - - - - - This is the Right Ankle bone. - - - - - This is the Right Wrist bone. - - - - - This is the right index 3rd phalange. - - - - - This is the right index 2nd phalange. - - - - - This is the right index 1st phalange. - - - - - This is the right little 3rd phalange. - - - - - This is the right little 2nd phalange. - - - - - This is the right little 1st phalange. - - - - - This is the Right Elbow bone. - - - - - This is the Right Knee bone. - - - - - This is the right middle 3rd phalange. - - - - - This is the right middle 2nd phalange. - - - - - This is the right middle 1st phalange. - - - - - This is the right ring 3rd phalange. - - - - - This is the right ring 2nd phalange. - - - - - This is the right ring 1st phalange. - - - - - This is the Right Shoulder bone. - - - - - This is the right thumb 3rd phalange. - - - - - This is the right thumb 2nd phalange. - - - - - This is the right thumb 1st phalange. - - - - - This is the Right Toes bone. - - - - - This is the Right Upper Arm bone. - - - - - This is the Right Upper Leg bone. - - - - - This is the first Spine bone. - - - - - This is the Upper Chest bone. - - - - - The mapping between a bone in the model and the conceptual bone in the Mecanim human anatomy. - - - - - The name of the bone to which the Mecanim human bone is mapped. - - - - - The name of the Mecanim human bone to which the bone from the model is mapped. - - - - - The rotation limits that define the muscle for this bone. - - - - - Class that holds humanoid avatar parameters to pass to the AvatarBuilder.BuildHumanAvatar function. - - - - - Amount by which the arm's length is allowed to stretch when using IK. - - - - - Modification to the minimum distance between the feet of a humanoid model. - - - - - True for any human that has a translation Degree of Freedom (DoF). It is set to false by default. - - - - - Mapping between Mecanim bone names and bone names in the rig. - - - - - Amount by which the leg's length is allowed to stretch when using IK. - - - - - Defines how the lower arm's roll/twisting is distributed between the elbow and wrist joints. - - - - - Defines how the lower leg's roll/twisting is distributed between the knee and ankle. - - - - - List of bone Transforms to include in the model. - - - - - Defines how the upper arm's roll/twisting is distributed between the shoulder and elbow joints. - - - - - Defines how the upper leg's roll/twisting is distributed between the thigh and knee joints. - - - - - This class stores the rotation limits that define the muscle for a single human bone. - - - - - Length of the bone to which the limit is applied. - - - - - The default orientation of a bone when no muscle action is applied. - - - - - The maximum rotation away from the initial value that this muscle can apply. - - - - - The maximum negative rotation away from the initial value that this muscle can apply. - - - - - Should this limit use the default values? - - - - - Enumeration of all the parts in a human. - - - - - The human body part. - - - - - The human head part. - - - - - The human left arm part. - - - - - The human left index finger part. - - - - - The human left leg part. - - - - - The human left little finger part. - - - - - The human left middle finger part. - - - - - The human left ring finger part. - - - - - The human left thumb finger part. - - - - - The human right arm part. - - - - - The human right index finger part. - - - - - The human right leg part. - - - - - The human right little finger part. - - - - - The human right middle finger part. - - - - - The human right ring finger part. - - - - - The human right thumb finger part. - - - - - Retargetable humanoid pose. - - - - - The human body position for that pose. - - - - - The human body orientation for that pose. - - - - - The array of muscle values for that pose. - - - - - A handler that lets you read or write a HumanPose from or to a humanoid avatar skeleton hierarchy. - - - - - Creates a human pose handler from an avatar and a root transform. - - The avatar that defines the humanoid rig on skeleton hierarchy with root as the top most parent. - The top most node of the skeleton hierarchy defined in humanoid avatar. - - - - Gets a human pose from the handled avatar skeleton. - - The output human pose. - - - - Sets a human pose on the handled avatar skeleton. - - The human pose to be set. - - - - Details of all the human bone and muscle types defined by Mecanim. - - - - - The number of human bone types defined by Mecanim. - - - - - Return the bone to which a particular muscle is connected. - - Muscle index. - - - - Array of the names of all human bone types defined by Mecanim. - - - - - Gets the bone hierarchy mass. - - The humanoid bone index. - - The bone hierarchy mass. - - - - - Get the default maximum value of rotation for a muscle in degrees. - - Muscle index. - - - - Get the default minimum value of rotation for a muscle in degrees. - - Muscle index. - - - - Returns parent humanoid bone index of a bone. - - Humanoid bone index to get parent from. - - Humanoid bone index of parent. - - - - - The number of human muscle types defined by Mecanim. - - - - - Obtain the muscle index for a particular bone index and "degree of freedom". - - Bone index. - Number representing a "degree of freedom": 0 for X-Axis, 1 for Y-Axis, 2 for Z-Axis. - - - - Array of the names of all human muscle types defined by Mecanim. - - - - - Is the bone a member of the minimal set of bones that Mecanim requires for a human model? - - Index of the bone to test. - - - - The number of bone types that are required by Mecanim for any human model. - - - - - Use this interface to have a class provide its own list of Animation Clips to the Animation Window. The class must inherit from MonoBehaviour. - - - - - Returns a list of Animation Clips. - - - - - - This element can filter raycasts. If the top level element is hit it can further 'check' if the location is valid. - - - - - Given a point and a camera is the raycast valid. - - Screen position. - Raycast camera. - - Valid. - - - - - Interface for objects used as resolvers on ExposedReferences. - - - - - Remove a value for the given reference. - - Identifier of the ExposedReference. - - - - Retrieves a value for the given identifier. - - Identifier of the ExposedReference. - Is the identifier valid? - - The value stored in the table. - - - - - Assigns a value for an ExposedReference. - - Identifier of the ExposedReference. - The value to assigned to the ExposedReference. - - - - Interface for custom logger implementation. - - - - - To selective enable debug log message. - - - - - To runtime toggle debug logging [ON/OFF]. - - - - - Set Logger.ILogHandler. - - - - - Check logging is enabled based on the LogType. - - - - Retrun true in case logs of LogType will be logged otherwise returns false. - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - A variant of ILogger.Log that logs an error message. - - - - - - - - A variant of ILogger.Log that logs an error message. - - - - - - - - A variant of ILogger.Log that logs an exception message. - - - - - - Logs a formatted message. - - - - - - - - A variant of Logger.Log that logs an warning message. - - - - - - - - A variant of Logger.Log that logs an warning message. - - - - - - - - Interface for custom log handler implementation. - - - - - A variant of ILogHandler.LogFormat that logs an exception message. - - Runtime Exception. - Object to which the message applies. - - - - Logs a formatted message. - - The type of the log message. - Object to which the message applies. - A composite format string. - Format arguments. - - - - This class provides utility and extension methods to convert image data from or to PNG, EXR, TGA, and JPEG formats. - - - - - Encodes this texture into the EXR format. - - The texture to convert. - Flags used to control compression and the output format. - - - - Encodes this texture into JPG format. - - Text texture to convert. - JPG quality to encode with, 1..100 (default 75). - - - - Encodes this texture into JPG format. - - Text texture to convert. - JPG quality to encode with, 1..100 (default 75). - - - - Encodes this texture into PNG format. - - The texture to convert. - - - - Encodes the specified texture in TGA format. - - The texture to encode. - - - - Loads PNG/JPG image byte array into a texture. - - The byte array containing the image data to load. - Set to false by default, pass true to optionally mark the texture as non-readable. - The texture to load the image into. - - Returns true if the data can be loaded, false otherwise. - - - - - Any Image Effect with this attribute will be rendered after Dynamic Resolution stage. - - - - - Any Image Effect with this attribute can be rendered into the Scene view camera. - - - - - Any Image Effect with this attribute will be rendered after opaque geometry but before transparent geometry. - - - - - When using HDR rendering it can sometime be desirable to switch to LDR rendering during ImageEffect rendering. - - - - - How image and text is placed inside GUIStyle. - - - - - Image is above the text. - - - - - Image is to the left of the text. - - - - - Only the image is displayed. - - - - - Only the text is displayed. - - - - - Controls IME input. - - - - - Enable IME input only when a text field is selected (default). - - - - - Disable IME input. - - - - - Enable IME input. - - - - - Interface into the Input system. - - - - - Last measured linear acceleration of a device in three-dimensional space. (Read Only) - - - - - Number of acceleration measurements which occurred during last frame. - - - - - Returns list of acceleration measurements which occurred during the last frame. (Read Only) (Allocates temporary variables). - - - - - Is any key or mouse button currently held down? (Read Only) - - - - - Returns true the first frame the user hits any key or mouse button. (Read Only) - - - - - Should Back button quit the application? - -Only usable on Android, Windows Phone or Windows Tablets. - - - - - Property for accessing compass (handheld devices only). (Read Only) - - - - - This property controls if input sensors should be compensated for screen orientation. - - - - - The current text input position used by IMEs to open windows. - - - - - The current IME composition string being typed by the user. - - - - - Device physical orientation as reported by OS. (Read Only) - - - - - Property indicating whether keypresses are eaten by a textinput if it has focus (default true). - - - - - Returns default gyroscope. - - - - - Controls enabling and disabling of IME input composition. - - - - - Does the user have an IME keyboard input source selected? - - - - - Returns the keyboard input entered this frame. (Read Only) - - - - - Property for accessing device location (handheld devices only). (Read Only) - - - - - The current mouse position in pixel coordinates. (Read Only) - - - - - Indicates if a mouse device is detected. - - - - - The current mouse scroll delta. (Read Only) - - - - - Property indicating whether the system handles multiple touches. - - - - - Enables/Disables mouse simulation with touches. By default this option is enabled. - - - - - Returns true when Stylus Touch is supported by a device or platform. - - - - - Number of touches. Guaranteed not to change throughout the frame. (Read Only) - - - - - Returns list of objects representing status of all touches during last frame. (Read Only) (Allocates temporary variables). - - - - - Bool value which let's users check if touch pressure is supported. - - - - - Returns whether the device on which application is currently running supports touch input. - - - - - Returns specific acceleration measurement which occurred during last frame. (Does not allocate temporary variables). - - - - - - Returns the value of the virtual axis identified by axisName. - - - - - - Returns the value of the virtual axis identified by axisName with no smoothing filtering applied. - - - - - - Returns true while the virtual button identified by buttonName is held down. - - The name of the button such as Jump. - - True when an axis has been pressed and not released. - - - - - Returns true during the frame the user pressed down the virtual button identified by buttonName. - - - - - - Returns true the first frame the user releases the virtual button identified by buttonName. - - - - - - Returns an array of strings describing the connected joysticks. - - - - - Returns true while the user holds down the key identified by name. - - - - - - Returns true while the user holds down the key identified by the key KeyCode enum parameter. - - - - - - Returns true during the frame the user starts pressing down the key identified by name. - - - - - - Returns true during the frame the user starts pressing down the key identified by the key KeyCode enum parameter. - - - - - - Returns true during the frame the user releases the key identified by name. - - - - - - Returns true during the frame the user releases the key identified by the key KeyCode enum parameter. - - - - - - Returns whether the given mouse button is held down. - - - - - - Returns true during the frame the user pressed the given mouse button. - - - - - - Returns true during the frame the user releases the given mouse button. - - - - - - Call Input.GetTouch to obtain a Touch struct. - - The touch input on the device screen. - - Touch details in the struct. - - - - - Determine whether a particular joystick model has been preconfigured by Unity. (Linux-only). - - The name of the joystick to check (returned by Input.GetJoystickNames). - - True if the joystick layout has been preconfigured; false otherwise. - - - - - Resets all input. After ResetInputAxes all axes return to 0 and all buttons return to 0 for one frame. - - - - - ActivityIndicator Style (iOS Specific). - - - - - Do not show ActivityIndicator. - - - - - The standard gray style of indicator (UIActivityIndicatorViewStyleGray). - - - - - The standard white style of indicator (UIActivityIndicatorViewStyleWhite). - - - - - The large white style of indicator (UIActivityIndicatorViewStyleWhiteLarge). - - - - - ADBannerView is a wrapper around the ADBannerView class found in the Apple iAd framework and is only available on iOS. - - - - - Banner layout. - - - - - Checks if banner contents are loaded. - - - - - The position of the banner view. - - - - - The size of the banner view. - - - - - Banner visibility. Initially banner is not visible. - - - - - Will be fired when banner ad failed to load. - - - - - Will be fired when banner was clicked. - - - - - Will be fired when banner loaded new ad. - - - - - Creates a banner view with given type and auto-layout params. - - - - - - - Checks if the banner type is available (e.g. MediumRect is available only starting with ios6). - - - - - - Specifies how banner should be layed out on screen. - - - - - Traditional Banner: align to screen bottom. - - - - - Rect Banner: align to screen bottom, placing at the center. - - - - - Rect Banner: place in bottom-left corner. - - - - - Rect Banner: place in bottom-right corner. - - - - - Rect Banner: place exactly at screen center. - - - - - Rect Banner: align to screen left, placing at the center. - - - - - Rect Banner: align to screen right, placing at the center. - - - - - Completely manual positioning. - - - - - Traditional Banner: align to screen top. - - - - - Rect Banner: align to screen top, placing at the center. - - - - - Rect Banner: place in top-left corner. - - - - - Rect Banner: place in top-right corner. - - - - - The type of the banner view. - - - - - Traditional Banner (it takes full screen width). - - - - - Rect Banner (300x250). - - - - - ADInterstitialAd is a wrapper around the ADInterstitialAd class found in the Apple iAd framework and is only available on iPad. - - - - - Checks if InterstitialAd is available (it is available on iPad since iOS 4.3, and on iPhone since iOS 7.0). - - - - - Has the interstitial ad object downloaded an advertisement? (Read Only) - - - - - Creates an interstitial ad. - - - - - - Creates an interstitial ad. - - - - - - Will be called when ad is ready to be shown. - - - - - Will be called when user viewed ad contents: i.e. they went past the initial screen. Please note that it is impossible to determine if they clicked on any links in ad sequences that follows the initial screen. - - - - - Reload advertisement. - - - - - Shows full-screen advertisement to user. - - - - - Specify calendar types. - - - - - Identifies the Buddhist calendar. - - - - - Identifies the Chinese calendar. - - - - - Identifies the Gregorian calendar. - - - - - Identifies the Hebrew calendar. - - - - - Identifies the Indian calendar. - - - - - Identifies the Islamic calendar. - - - - - Identifies the Islamic civil calendar. - - - - - Identifies the ISO8601. - - - - - Identifies the Japanese calendar. - - - - - Identifies the Persian calendar. - - - - - Identifies the Republic of China (Taiwan) calendar. - - - - - Specify calendrical units. - - - - - Specifies the day unit. - - - - - Specifies the era unit. - - - - - Specifies the hour unit. - - - - - Specifies the minute unit. - - - - - Specifies the month unit. - - - - - Specifies the quarter of the calendar. - - - - - Specifies the second unit. - - - - - Specifies the week unit. - - - - - Specifies the weekday unit. - - - - - Specifies the ordinal weekday unit. - - - - - Specifies the year unit. - - - - - Interface into iOS specific functionality. - - - - - Advertising ID. - - - - - Is advertising tracking enabled. - - - - - Defer system gestures until the second swipe on specific edges. - - - - - The generation of the device. (Read Only) - - - - - Specifies whether the home button should be hidden in the iOS build of this application. - - - - - iOS version. - - - - - Vendor ID. - - - - - Request App Store rating and review from the user. - - - Value indicating whether the underlying API is available or not. False indicates that the iOS version isn't recent enough or that the StoreKit framework is not linked with the app. - - - - - Reset "no backup" file flag: file will be synced with iCloud/iTunes backup and can be deleted by OS in low storage situations. - - - - - - Set file flag to be excluded from iCloud/iTunes backup. - - - - - - iOS device generation. - - - - - iPad, first generation. - - - - - iPad, second generation. - - - - - iPad, third generation. - - - - - iPad, fourth generation. - - - - - iPad Air, fifth generation. - - - - - iPad Air. - - - - - iPad Air 2. - - - - - iPadMini, first generation. - - - - - iPadMini Retina, second generation. - - - - - iPad Mini 3. - - - - - iPad Mini, fourth generation. - - - - - iPad Pro 9.7", first generation. - - - - - iPad Pro 10.5", second generation 10" iPad. - - - - - iPad Pro 11". - - - - - iPad Pro 12.9", first generation. - - - - - iPad Pro 12.9", second generation. - - - - - iPad Pro 12.9", third generation. - - - - - Yet unknown iPad. - - - - - iPhone, first generation. - - - - - iPhone, second generation. - - - - - iPhone, third generation. - - - - - iPhone, fourth generation. - - - - - iPhone, fifth generation. - - - - - iPhone5. - - - - - iPhone 5C. - - - - - iPhone 5S. - - - - - iPhone 6. - - - - - iPhone 6 plus. - - - - - iPhone 6S. - - - - - iPhone 6S Plus. - - - - - iPhone 7. - - - - - iPhone 7 Plus. - - - - - iPhone 8. - - - - - iPhone 8 Plus. - - - - - iPhone SE, first generation. - - - - - Yet unknown iPhone. - - - - - iPhone X. - - - - - iPhone XR. - - - - - iPhone XS. - - - - - iPhone XSMax. - - - - - iPod Touch, first generation. - - - - - iPod Touch, second generation. - - - - - iPod Touch, third generation. - - - - - iPod Touch, fourth generation. - - - - - iPod Touch, fifth generation. - - - - - iPod Touch, sixth generation. - - - - - Yet unknown iPod Touch. - - - - - iOS.LocalNotification is a wrapper around the UILocalNotification class found in the Apple UIKit framework and is only available on iPhoneiPadiPod Touch. - - - - - The title of the action button or slider. - - - - - The message displayed in the notification alert. - - - - - Identifies the image used as the launch image when the user taps the action button. - - - - - A short description of the reason for the alert. - - - - - The number to display as the application's icon badge. - - - - - The default system sound. (Read Only) - - - - - The date and time when the system should deliver the notification. - - - - - A boolean value that controls whether the alert action is visible or not. - - - - - The calendar type (Gregorian, Chinese, etc) to use for rescheduling the notification. - - - - - The calendar interval at which to reschedule the notification. - - - - - The name of the sound file to play when an alert is displayed. - - - - - The time zone of the notification's fire date. - - - - - A dictionary for passing custom information to the notified application. - - - - - Creates a new local notification. - - - - - NotificationServices is only available on iPhoneiPadiPod Touch. - - - - - Device token received from Apple Push Service after calling NotificationServices.RegisterForRemoteNotificationTypes. (Read Only) - - - - - Enabled local and remote notification types. - - - - - The number of received local notifications. (Read Only) - - - - - The list of objects representing received local notifications. (Read Only) - - - - - Returns an error that might occur on registration for remote notifications via NotificationServices.RegisterForRemoteNotificationTypes. (Read Only) - - - - - The number of received remote notifications. (Read Only) - - - - - The list of objects representing received remote notifications. (Read Only) - - - - - All currently scheduled local notifications. - - - - - Cancels the delivery of all scheduled local notifications. - - - - - Cancels the delivery of the specified scheduled local notification. - - - - - - Discards of all received local notifications. - - - - - Discards of all received remote notifications. - - - - - Returns an object representing a specific local notification. (Read Only) - - - - - - Returns an object representing a specific remote notification. (Read Only) - - - - - - Presents a local notification immediately. - - - - - - Register to receive local and remote notifications of the specified types from a provider via Apple Push Service. - - Notification types to register for. - Specify true to also register for remote notifications. - - - - Register to receive local and remote notifications of the specified types from a provider via Apple Push Service. - - Notification types to register for. - Specify true to also register for remote notifications. - - - - Schedules a local notification. - - - - - - Unregister for remote notifications. - - - - - Specifies local and remote notification types. - - - - - Notification is an alert message. - - - - - Notification is a badge shown above the application's icon. - - - - - No notification types specified. - - - - - Notification is an alert sound. - - - - - On Demand Resources API. - - - - - Indicates whether player was built with "Use On Demand Resources" player setting enabled. - - - - - Creates an On Demand Resources (ODR) request. - - Tags for On Demand Resources that should be included in the request. - - Object representing ODR request. - - - - - Represents a request for On Demand Resources (ODR). It's an AsyncOperation and can be yielded in a coroutine. - - - - - Returns an error after operation is complete. - - - - - Sets the priority for request. - - - - - Release all resources kept alive by On Demand Resources (ODR) request. - - - - - Gets file system's path to the resource available in On Demand Resources (ODR) request. - - Resource name. - - - - RemoteNotification is only available on iPhoneiPadiPod Touch. - - - - - The message displayed in the notification alert. (Read Only) - - - - - A short description of the reason for the alert. (Read Only) - - - - - The number to display as the application's icon badge. (Read Only) - - - - - A boolean value that controls whether the alert action is visible or not. (Read Only) - - - - - The name of the sound file to play when an alert is displayed. (Read Only) - - - - - A dictionary for passing custom information to the notified application. (Read Only) - - - - - Bit-mask used to control the deferring of system gestures on iOS. - - - - - Identifies all screen edges. - - - - - Identifies bottom screen edge. - - - - - Identifies left screen edge. - - - - - Disables gesture deferring on all edges. - - - - - Identifies right screen edge. - - - - - Identifies top screen edge. - - - - - Interface to receive callbacks upon serialization and deserialization. - - - - - Implement this method to receive a callback after Unity deserializes your object. - - - - - Implement this method to receive a callback before Unity serializes your object. - - - - - IJobParallelForTransform. - - - - - Execute. - - Index. - TransformAccessArray. - - - - Extension methods for IJobParallelForTransform. - - - - - Schedule. - - Job data. - TransformAccessArray. - Job handle dependency. - - Job handle. - - - - - Position, rotation and scale of an object. - - - - - The position of the transform relative to the parent. - - - - - The rotation of the transform relative to the parent transform's rotation. - - - - - The scale of the transform relative to the parent. - - - - - The position of the transform in world space. - - - - - The rotation of the transform in world space stored as a Quaternion. - - - - - TransformAccessArray. - - - - - Returns array capacity. - - - - - isCreated. - - - - - Length. - - - - - Add. - - Transform. - - - - Allocate. - - Capacity. - Desired job count. - TransformAccessArray. - - - - Constructor. - - Transforms. - Desired job count. - Capacity. - - - - Constructor. - - Transforms. - Desired job count. - Capacity. - - - - Dispose. - - - - - Remove item at index. - - Index. - - - - Set transforms. - - Transforms. - - - - Array indexer. - - - - - Joint is the base class for all joints. - - - - - The Position of the anchor around which the joints motion is constrained. - - - - - Should the connectedAnchor be calculated automatically? - - - - - The Direction of the axis around which the body is constrained. - - - - - The force that needs to be applied for this joint to break. - - - - - The torque that needs to be applied for this joint to break. To be able to break, a joint must be _Locked_ or _Limited_ on the axis of rotation where the torque is being applied. This means that some joints cannot break, such as an unconstrained Configurable Joint. - - - - - Position of the anchor relative to the connected Rigidbody. - - - - - A reference to another rigidbody this joint connects to. - - - - - The scale to apply to the inverse mass and inertia tensor of the connected body prior to solving the constraints. - - - - - The force applied by the solver to satisfy all constraints. - - - - - The torque applied by the solver to satisfy all constraints. - - - - - Enable collision between bodies connected with the joint. - - - - - Toggle preprocessing for this joint. - - - - - The scale to apply to the inverse mass and inertia tensor of the body prior to solving the constraints. - - - - - Parent class for joints to connect Rigidbody2D objects. - - - - - The Rigidbody2D attached to the Joint2D. - - - - - The force that needs to be applied for this joint to break. - - - - - The torque that needs to be applied for this joint to break. - - - - - Can the joint collide with the other Rigidbody2D object to which it is attached? - - - - - The Rigidbody2D object to which the other end of the joint is attached (ie, the object without the joint component). - - - - - Should the two rigid bodies connected with this joint collide with each other? - - - - - Gets the reaction force of the joint. - - - - - Gets the reaction torque of the joint. - - - - - Gets the reaction force of the joint given the specified timeStep. - - The time to calculate the reaction force for. - - The reaction force of the joint in the specified timeStep. - - - - - Gets the reaction torque of the joint given the specified timeStep. - - The time to calculate the reaction torque for. - - The reaction torque of the joint in the specified timeStep. - - - - - Angular limits on the rotation of a Rigidbody2D object around a HingeJoint2D. - - - - - Upper angular limit of rotation. - - - - - Lower angular limit of rotation. - - - - - How the joint's movement will behave along its local X axis. - - - - - Amount of force applied to push the object toward the defined direction. - - - - - Whether the drive should attempt to reach position, velocity, both or nothing. - - - - - Resistance strength against the Position Spring. Only used if mode includes Position. - - - - - Strength of a rubber-band pull toward the defined direction. Only used if mode includes Position. - - - - - The ConfigurableJoint attempts to attain position / velocity targets based on this flag. - - - - - Don't apply any forces to reach the target. - - - - - Try to reach the specified target position. - - - - - Try to reach the specified target position and velocity. - - - - - Try to reach the specified target velocity. - - - - - JointLimits is used by the HingeJoint to limit the joints angle. - - - - - The minimum impact velocity which will cause the joint to bounce. - - - - - Determines the size of the bounce when the joint hits it's limit. Also known as restitution. - - - - - Distance inside the limit value at which the limit will be considered to be active by the solver. - - - - - The upper angular limit (in degrees) of the joint. - - - - - The lower angular limit (in degrees) of the joint. - - - - - Represents the state of a joint limit. - - - - - Represents a state where the joint limit is at the specified lower and upper limits (they are identical). - - - - - Represents a state where the joint limit is inactive. - - - - - Represents a state where the joint limit is at the specified lower limit. - - - - - Represents a state where the joint limit is at the specified upper limit. - - - - - The JointMotor is used to motorize a joint. - - - - - The motor will apply a force. - - - - - If freeSpin is enabled the motor will only accelerate but never slow down. - - - - - The motor will apply a force up to force to achieve targetVelocity. - - - - - Parameters for the optional motor force applied to a Joint2D. - - - - - The maximum force that can be applied to the Rigidbody2D at the joint to attain the target speed. - - - - - The desired speed for the Rigidbody2D to reach as it moves with the joint. - - - - - Determines how to snap physics joints back to its constrained position when it drifts off too much. - - - - - Don't snap at all. - - - - - Snap both position and rotation. - - - - - Snap Position only. - - - - - JointSpring is used add a spring force to HingeJoint and PhysicMaterial. - - - - - The damper force uses to dampen the spring. - - - - - The spring forces used to reach the target position. - - - - - The target position the joint attempts to reach. - - - - - Joint suspension is used to define how suspension works on a WheelJoint2D. - - - - - The world angle (in degrees) along which the suspension will move. - - - - - The amount by which the suspension spring force is reduced in proportion to the movement speed. - - - - - The frequency at which the suspension spring oscillates. - - - - - Motion limits of a Rigidbody2D object along a SliderJoint2D. - - - - - Maximum distance the Rigidbody2D object can move from the Slider Joint's anchor. - - - - - Minimum distance the Rigidbody2D object can move from the Slider Joint's anchor. - - - - - Utility functions for working with JSON data. - - - - - Create an object from its JSON representation. - - The JSON representation of the object. - - An instance of the object. - - - - - Create an object from its JSON representation. - - The JSON representation of the object. - The type of object represented by the Json. - - An instance of the object. - - - - - Overwrite data in an object by reading from its JSON representation. - - The JSON representation of the object. - The object that should be overwritten. - - - - Generate a JSON representation of the public fields of an object. - - The object to convert to JSON form. - If true, format the output for readability. If false, format the output for minimum size. Default is false. - - The object's data in JSON format. - - - - - Generate a JSON representation of the public fields of an object. - - The object to convert to JSON form. - If true, format the output for readability. If false, format the output for minimum size. Default is false. - - The object's data in JSON format. - - - - - Key codes returned by Event.keyCode. These map directly to a physical key on the keyboard. - - - - - 'a' key. - - - - - The '0' key on the top of the alphanumeric keyboard. - - - - - The '1' key on the top of the alphanumeric keyboard. - - - - - The '2' key on the top of the alphanumeric keyboard. - - - - - The '3' key on the top of the alphanumeric keyboard. - - - - - The '4' key on the top of the alphanumeric keyboard. - - - - - The '5' key on the top of the alphanumeric keyboard. - - - - - The '6' key on the top of the alphanumeric keyboard. - - - - - The '7' key on the top of the alphanumeric keyboard. - - - - - The '8' key on the top of the alphanumeric keyboard. - - - - - The '9' key on the top of the alphanumeric keyboard. - - - - - Alt Gr key. - - - - - Ampersand key '&'. - - - - - Asterisk key '*'. - - - - - At key '@'. - - - - - 'b' key. - - - - - Back quote key '`'. - - - - - Backslash key '\'. - - - - - The backspace key. - - - - - Break key. - - - - - 'c' key. - - - - - Capslock key. - - - - - Caret key '^'. - - - - - The Clear key. - - - - - Colon ':' key. - - - - - Comma ',' key. - - - - - 'd' key. - - - - - The forward delete key. - - - - - Dollar sign key '$'. - - - - - Double quote key '"'. - - - - - Down arrow key. - - - - - 'e' key. - - - - - End key. - - - - - Equals '=' key. - - - - - Escape key. - - - - - Exclamation mark key '!'. - - - - - 'f' key. - - - - - F1 function key. - - - - - F10 function key. - - - - - F11 function key. - - - - - F12 function key. - - - - - F13 function key. - - - - - F14 function key. - - - - - F15 function key. - - - - - F2 function key. - - - - - F3 function key. - - - - - F4 function key. - - - - - F5 function key. - - - - - F6 function key. - - - - - F7 function key. - - - - - F8 function key. - - - - - F9 function key. - - - - - 'g' key. - - - - - Greater than '>' key. - - - - - 'h' key. - - - - - Hash key '#'. - - - - - Help key. - - - - - Home key. - - - - - 'i' key. - - - - - Insert key key. - - - - - 'j' key. - - - - - Button 0 on first joystick. - - - - - Button 1 on first joystick. - - - - - Button 10 on first joystick. - - - - - Button 11 on first joystick. - - - - - Button 12 on first joystick. - - - - - Button 13 on first joystick. - - - - - Button 14 on first joystick. - - - - - Button 15 on first joystick. - - - - - Button 16 on first joystick. - - - - - Button 17 on first joystick. - - - - - Button 18 on first joystick. - - - - - Button 19 on first joystick. - - - - - Button 2 on first joystick. - - - - - Button 3 on first joystick. - - - - - Button 4 on first joystick. - - - - - Button 5 on first joystick. - - - - - Button 6 on first joystick. - - - - - Button 7 on first joystick. - - - - - Button 8 on first joystick. - - - - - Button 9 on first joystick. - - - - - Button 0 on second joystick. - - - - - Button 1 on second joystick. - - - - - Button 10 on second joystick. - - - - - Button 11 on second joystick. - - - - - Button 12 on second joystick. - - - - - Button 13 on second joystick. - - - - - Button 14 on second joystick. - - - - - Button 15 on second joystick. - - - - - Button 16 on second joystick. - - - - - Button 17 on second joystick. - - - - - Button 18 on second joystick. - - - - - Button 19 on second joystick. - - - - - Button 2 on second joystick. - - - - - Button 3 on second joystick. - - - - - Button 4 on second joystick. - - - - - Button 5 on second joystick. - - - - - Button 6 on second joystick. - - - - - Button 7 on second joystick. - - - - - Button 8 on second joystick. - - - - - Button 9 on second joystick. - - - - - Button 0 on third joystick. - - - - - Button 1 on third joystick. - - - - - Button 10 on third joystick. - - - - - Button 11 on third joystick. - - - - - Button 12 on third joystick. - - - - - Button 13 on third joystick. - - - - - Button 14 on third joystick. - - - - - Button 15 on third joystick. - - - - - Button 16 on third joystick. - - - - - Button 17 on third joystick. - - - - - Button 18 on third joystick. - - - - - Button 19 on third joystick. - - - - - Button 2 on third joystick. - - - - - Button 3 on third joystick. - - - - - Button 4 on third joystick. - - - - - Button 5 on third joystick. - - - - - Button 6 on third joystick. - - - - - Button 7 on third joystick. - - - - - Button 8 on third joystick. - - - - - Button 9 on third joystick. - - - - - Button 0 on forth joystick. - - - - - Button 1 on forth joystick. - - - - - Button 10 on forth joystick. - - - - - Button 11 on forth joystick. - - - - - Button 12 on forth joystick. - - - - - Button 13 on forth joystick. - - - - - Button 14 on forth joystick. - - - - - Button 15 on forth joystick. - - - - - Button 16 on forth joystick. - - - - - Button 17 on forth joystick. - - - - - Button 18 on forth joystick. - - - - - Button 19 on forth joystick. - - - - - Button 2 on forth joystick. - - - - - Button 3 on forth joystick. - - - - - Button 4 on forth joystick. - - - - - Button 5 on forth joystick. - - - - - Button 6 on forth joystick. - - - - - Button 7 on forth joystick. - - - - - Button 8 on forth joystick. - - - - - Button 9 on forth joystick. - - - - - Button 0 on fifth joystick. - - - - - Button 1 on fifth joystick. - - - - - Button 10 on fifth joystick. - - - - - Button 11 on fifth joystick. - - - - - Button 12 on fifth joystick. - - - - - Button 13 on fifth joystick. - - - - - Button 14 on fifth joystick. - - - - - Button 15 on fifth joystick. - - - - - Button 16 on fifth joystick. - - - - - Button 17 on fifth joystick. - - - - - Button 18 on fifth joystick. - - - - - Button 19 on fifth joystick. - - - - - Button 2 on fifth joystick. - - - - - Button 3 on fifth joystick. - - - - - Button 4 on fifth joystick. - - - - - Button 5 on fifth joystick. - - - - - Button 6 on fifth joystick. - - - - - Button 7 on fifth joystick. - - - - - Button 8 on fifth joystick. - - - - - Button 9 on fifth joystick. - - - - - Button 0 on sixth joystick. - - - - - Button 1 on sixth joystick. - - - - - Button 10 on sixth joystick. - - - - - Button 11 on sixth joystick. - - - - - Button 12 on sixth joystick. - - - - - Button 13 on sixth joystick. - - - - - Button 14 on sixth joystick. - - - - - Button 15 on sixth joystick. - - - - - Button 16 on sixth joystick. - - - - - Button 17 on sixth joystick. - - - - - Button 18 on sixth joystick. - - - - - Button 19 on sixth joystick. - - - - - Button 2 on sixth joystick. - - - - - Button 3 on sixth joystick. - - - - - Button 4 on sixth joystick. - - - - - Button 5 on sixth joystick. - - - - - Button 6 on sixth joystick. - - - - - Button 7 on sixth joystick. - - - - - Button 8 on sixth joystick. - - - - - Button 9 on sixth joystick. - - - - - Button 0 on seventh joystick. - - - - - Button 1 on seventh joystick. - - - - - Button 10 on seventh joystick. - - - - - Button 11 on seventh joystick. - - - - - Button 12 on seventh joystick. - - - - - Button 13 on seventh joystick. - - - - - Button 14 on seventh joystick. - - - - - Button 15 on seventh joystick. - - - - - Button 16 on seventh joystick. - - - - - Button 17 on seventh joystick. - - - - - Button 18 on seventh joystick. - - - - - Button 19 on seventh joystick. - - - - - Button 2 on seventh joystick. - - - - - Button 3 on seventh joystick. - - - - - Button 4 on seventh joystick. - - - - - Button 5 on seventh joystick. - - - - - Button 6 on seventh joystick. - - - - - Button 7 on seventh joystick. - - - - - Button 8 on seventh joystick. - - - - - Button 9 on seventh joystick. - - - - - Button 0 on eighth joystick. - - - - - Button 1 on eighth joystick. - - - - - Button 10 on eighth joystick. - - - - - Button 11 on eighth joystick. - - - - - Button 12 on eighth joystick. - - - - - Button 13 on eighth joystick. - - - - - Button 14 on eighth joystick. - - - - - Button 15 on eighth joystick. - - - - - Button 16 on eighth joystick. - - - - - Button 17 on eighth joystick. - - - - - Button 18 on eighth joystick. - - - - - Button 19 on eighth joystick. - - - - - Button 2 on eighth joystick. - - - - - Button 3 on eighth joystick. - - - - - Button 4 on eighth joystick. - - - - - Button 5 on eighth joystick. - - - - - Button 6 on eighth joystick. - - - - - Button 7 on eighth joystick. - - - - - Button 8 on eighth joystick. - - - - - Button 9 on eighth joystick. - - - - - Button 0 on any joystick. - - - - - Button 1 on any joystick. - - - - - Button 10 on any joystick. - - - - - Button 11 on any joystick. - - - - - Button 12 on any joystick. - - - - - Button 13 on any joystick. - - - - - Button 14 on any joystick. - - - - - Button 15 on any joystick. - - - - - Button 16 on any joystick. - - - - - Button 17 on any joystick. - - - - - Button 18 on any joystick. - - - - - Button 19 on any joystick. - - - - - Button 2 on any joystick. - - - - - Button 3 on any joystick. - - - - - Button 4 on any joystick. - - - - - Button 5 on any joystick. - - - - - Button 6 on any joystick. - - - - - Button 7 on any joystick. - - - - - Button 8 on any joystick. - - - - - Button 9 on any joystick. - - - - - 'k' key. - - - - - Numeric keypad 0. - - - - - Numeric keypad 1. - - - - - Numeric keypad 2. - - - - - Numeric keypad 3. - - - - - Numeric keypad 4. - - - - - Numeric keypad 5. - - - - - Numeric keypad 6. - - - - - Numeric keypad 7. - - - - - Numeric keypad 8. - - - - - Numeric keypad 9. - - - - - Numeric keypad '/'. - - - - - Numeric keypad Enter. - - - - - Numeric keypad '='. - - - - - Numeric keypad '-'. - - - - - Numeric keypad '*'. - - - - - Numeric keypad '.'. - - - - - Numeric keypad '+'. - - - - - 'l' key. - - - - - Left Alt key. - - - - - Left Command key. - - - - - Left arrow key. - - - - - Left square bracket key '['. - - - - - Left Command key. - - - - - Left Control key. - - - - - Left curly bracket key '{'. - - - - - Left Parenthesis key '('. - - - - - Left shift key. - - - - - Left Windows key. - - - - - Less than '<' key. - - - - - 'm' key. - - - - - Menu key. - - - - - Minus '-' key. - - - - - The Left (or primary) mouse button. - - - - - Right mouse button (or secondary mouse button). - - - - - Middle mouse button (or third button). - - - - - Additional (fourth) mouse button. - - - - - Additional (fifth) mouse button. - - - - - Additional (or sixth) mouse button. - - - - - Additional (or seventh) mouse button. - - - - - 'n' key. - - - - - Not assigned (never returned as the result of a keystroke). - - - - - Numlock key. - - - - - 'o' key. - - - - - 'p' key. - - - - - Page down. - - - - - Page up. - - - - - Pause on PC machines. - - - - - Percent '%' key. - - - - - Period '.' key. - - - - - Pipe '|' key. - - - - - Plus key '+'. - - - - - Print key. - - - - - 'q' key. - - - - - Question mark '?' key. - - - - - Quote key '. - - - - - 'r' key. - - - - - Return key. - - - - - Right Alt key. - - - - - Right Command key. - - - - - Right arrow key. - - - - - Right square bracket key ']'. - - - - - Right Command key. - - - - - Right Control key. - - - - - Right curly bracket key '}'. - - - - - Right Parenthesis key ')'. - - - - - Right shift key. - - - - - Right Windows key. - - - - - 's' key. - - - - - Scroll lock key. - - - - - Semicolon ';' key. - - - - - Slash '/' key. - - - - - Space key. - - - - - Sys Req key. - - - - - 't' key. - - - - - The tab key. - - - - - Tilde '~' key. - - - - - 'u' key. - - - - - Underscore '_' key. - - - - - Up arrow key. - - - - - 'v' key. - - - - - 'w' key. - - - - - 'x' key. - - - - - 'y' key. - - - - - 'z' key. - - - - - A single keyframe that can be injected into an animation curve. - - - - - Sets the incoming tangent for this key. The incoming tangent affects the slope of the curve from the previous key to this key. - - - - - Sets the incoming weight for this key. The incoming weight affects the slope of the curve from the previous key to this key. - - - - - Sets the outgoing tangent for this key. The outgoing tangent affects the slope of the curve from this key to the next key. - - - - - Sets the outgoing weight for this key. The outgoing weight affects the slope of the curve from this key to the next key. - - - - - TangentMode is deprecated. Use AnimationUtility.SetKeyLeftTangentMode or AnimationUtility.SetKeyRightTangentMode instead. - - - - - The time of the keyframe. - - - - - The value of the curve at keyframe. - - - - - Weighted mode for the keyframe. - - - - - Create a keyframe. - - - - - - - Create a keyframe. - - - - - - - - - Create a keyframe. - - - - - - - - - - - Specifies Layers to use in a Physics.Raycast. - - - - - Converts a layer mask value to an integer value. - - - - - Given a set of layer names as defined by either a Builtin or a User Layer in the, returns the equivalent layer mask for all of them. - - List of layer names to convert to a layer mask. - - The layer mask created from the layerNames. - - - - - Implicitly converts an integer to a LayerMask. - - - - - - Given a layer number, returns the name of the layer as defined in either a Builtin or a User Layer in the. - - - - - - Given a layer name, returns the layer index as defined by either a Builtin or a User Layer in the. - - - - - - Enumeration of all the muscles in a leg. - - - - - The foot close-open muscle. - - - - - The foot in-out muscle. - - - - - The last value of the LegDof enum. - - - - - The leg close-open muscle. - - - - - The leg roll in-out muscle. - - - - - The toes up-down muscle. - - - - - The upper leg front-back muscle. - - - - - The upper leg in-out muscle. - - - - - The upper leg roll in-out muscle. - - - - - Script interface for a. - - - - - The strength of the flare. - - - - - The color of the flare. - - - - - The fade speed of the flare. - - - - - The to use. - - - - - Script interface for. - - - - - The size of the area light. - - - - - This property describes the output of the last Global Illumination bake. - - - - - The multiplier that defines the strength of the bounce lighting. - - - - - The color of the light. - - - - - - The color temperature of the light. - Correlated Color Temperature (abbreviated as CCT) is multiplied with the color filter when calculating the final color of a light source. The color temperature of the electromagnetic radiation emitted from an ideal black body is defined as its surface temperature in Kelvin. White is 6500K according to the D65 standard. Candle light is 1800K. - If you want to use lightsUseCCT, lightsUseLinearIntensity has to be enabled to ensure physically correct output. - See Also: GraphicsSettings.lightsUseLinearIntensity, GraphicsSettings.lightsUseCCT. - - - - - - Number of command buffers set up on this light (Read Only). - - - - - The cookie texture projected by the light. - - - - - The size of a directional light's cookie. - - - - - This is used to light certain objects in the Scene selectively. - - - - - The to use for this light. - - - - - The Intensity of a light is multiplied with the Light color. - - - - - Is the light contribution already stored in lightmaps and/or lightprobes (Read Only). Obsolete; replaced by Light-lightmapBakeType. - - - - - Per-light, per-layer shadow culling distances. - - - - - This property describes what part of a light's contribution can be baked. - - - - - Allows you to override the global Shadowmask Mode per light. Only use this with render pipelines that can handle per light Shadowmask modes. Incompatible with the legacy renderers. - - - - - The range of the light. - - - - - How to render the light. - - - - - Controls the amount of artificial softening applied to the edges of shadows cast by directional lights. - - - - - Shadow mapping constant bias. - - - - - The custom resolution of the shadow map. - - - - - Near plane value to use for shadow frustums. - - - - - Shadow mapping normal-based bias. - - - - - Controls the amount of artificial softening applied to the edges of shadows cast by the Point or Spot light. - - - - - The resolution of the shadow map. - - - - - How this light casts shadows - - - - - Strength of light's shadows. - - - - - The angle of the light's spotlight cone in degrees. - - - - - The type of the light. - - - - - Add a command buffer to be executed at a specified place. - - When to execute the command buffer during rendering. - The buffer to execute. - A mask specifying which shadow passes to execute the buffer for. - - - - Add a command buffer to be executed at a specified place. - - When to execute the command buffer during rendering. - The buffer to execute. - A mask specifying which shadow passes to execute the buffer for. - - - - Adds a command buffer to the GPU's async compute queues and executes that command buffer when graphics processing reaches a given point. - - The point during the graphics processing at which this command buffer should commence on the GPU. - The buffer to execute. - The desired async compute queue type to execute the buffer on. - A mask specifying which shadow passes to execute the buffer for. - - - - Adds a command buffer to the GPU's async compute queues and executes that command buffer when graphics processing reaches a given point. - - The point during the graphics processing at which this command buffer should commence on the GPU. - The buffer to execute. - The desired async compute queue type to execute the buffer on. - A mask specifying which shadow passes to execute the buffer for. - - - - Get command buffers to be executed at a specified place. - - When to execute the command buffer during rendering. - - Array of command buffers. - - - - - Remove all command buffers set on this light. - - - - - Remove command buffer from execution at a specified place. - - When to execute the command buffer during rendering. - The buffer to execute. - - - - Remove command buffers from execution at a specified place. - - When to execute the command buffer during rendering. - - - - Revert all light parameters to default. - - - - - Sets a light dirty to notify the light baking backends to update their internal light representation. - - - - - Struct describing the result of a Global Illumination bake for a given light. - - - - - Is the light contribution already stored in lightmaps and/or lightprobes? - - - - - This property describes what part of a light's contribution was baked. - - - - - In case of a LightmapBakeType.Mixed light, describes what Mixed mode was used to bake the light, irrelevant otherwise. - - - - - In case of a LightmapBakeType.Mixed light, contains the index of the occlusion mask channel to use if any, otherwise -1. - - - - - In case of a LightmapBakeType.Mixed light, contains the index of the light as seen from the occlusion probes point of view if any, otherwise -1. - - - - - Enum describing what part of a light contribution can be baked. - - - - - Baked lights cannot move or change in any way during run time. All lighting for static objects gets baked into lightmaps. Lighting and shadows for dynamic objects gets baked into Light Probes. - - - - - Mixed lights allow a mix of realtime and baked lighting, based on the Mixed Lighting Mode used. These lights cannot move, but can change color and intensity at run time. Changes to color and intensity only affect direct lighting as indirect lighting gets baked. If using Subtractive mode, changes to color or intensity are not calculated at run time on static objects. - - - - - Realtime lights cast run time light and shadows. They can change position, orientation, color, brightness, and many other properties at run time. No lighting gets baked into lightmaps or light probes.. - - - - - Data of a lightmap. - - - - - Lightmap storing color of incoming light. - - - - - Lightmap storing dominant direction of incoming light. - - - - - Texture storing occlusion mask per light (ShadowMask, up to four lights). - - - - - Stores lightmaps of the Scene. - - - - - Lightmap array. - - - - - NonDirectional or CombinedDirectional Specular lightmaps rendering mode. - - - - - Holds all data needed by the light probes. - - - - - Lightmap (and lighting) configuration mode, controls how lightmaps interact with lighting and what kind of information they store. - - - - - Directional information for direct light is combined with directional information for indirect light, encoded as 2 lightmaps. - - - - - Light intensity (no directional information), encoded as 1 lightmap. - - - - - Directional information for direct light is stored separately from directional information for indirect light, encoded as 4 lightmaps. - - - - - Single, dual, or directional lightmaps rendering mode, used only in GIWorkflowMode.Legacy - - - - - Directional rendering mode. - - - - - Dual lightmap rendering mode. - - - - - Single, traditional lightmap rendering mode. - - - - - Light Probe Group. - - - - - Removes ringing from probes if enabled. - - - - - Editor only function to access and modify probe positions. - - - - - The Light Probe Proxy Volume component offers the possibility to use higher resolution lighting for large non-static GameObjects. - - - - - The bounding box mode for generating the 3D grid of interpolated Light Probes. - - - - - The world-space bounding box in which the 3D grid of interpolated Light Probes is generated. - - - - - The 3D grid resolution on the z-axis. - - - - - The 3D grid resolution on the y-axis. - - - - - The 3D grid resolution on the z-axis. - - - - - Checks if Light Probe Proxy Volumes are supported. - - - - - The local-space origin of the bounding box in which the 3D grid of interpolated Light Probes is generated. - - - - - Interpolated Light Probe density. - - - - - The mode in which the interpolated Light Probe positions are generated. - - - - - Determines how many Spherical Harmonics bands will be evaluated to compute the ambient color. - - - - - Sets the way the Light Probe Proxy Volume refreshes. - - - - - The resolution mode for generating the grid of interpolated Light Probes. - - - - - The size of the bounding box in which the 3D grid of interpolated Light Probes is generated. - - - - - The bounding box mode for generating a grid of interpolated Light Probes. - - - - - The bounding box encloses the current Renderer and all the relevant Renderers down the hierarchy, in local space. - - - - - The bounding box encloses the current Renderer and all the relevant Renderers down the hierarchy, in world space. - - - - - A custom local-space bounding box is used. The user is able to edit the bounding box. - - - - - The mode in which the interpolated Light Probe positions are generated. - - - - - Divide the volume in cells based on resolution, and generate interpolated Light Probe positions in the center of the cells. - - - - - Divide the volume in cells based on resolution, and generate interpolated Light Probes positions in the corner/edge of the cells. - - - - - An enum describing the Quality option used by the Light Probe Proxy Volume component. - - - - - This option will use only two SH coefficients bands: L0 and L1. The coefficients are sampled from the Light Probe Proxy Volume 3D Texture. Using this option might increase the draw call batch sizes by not having to change the L2 coefficients per Renderer. - - - - - This option will use L0 and L1 SH coefficients from the Light Probe Proxy Volume 3D Texture. The L2 coefficients are constant per Renderer. By having to provide the L2 coefficients, draw call batches might be broken. - - - - - An enum describing the way a Light Probe Proxy Volume refreshes in the Player. - - - - - Automatically detects updates in Light Probes and triggers an update of the Light Probe volume. - - - - - Causes Unity to update the Light Probe Proxy Volume every frame. - - - - - Use this option to indicate that the Light Probe Proxy Volume is never to be automatically updated by Unity. - - - - - The resolution mode for generating a grid of interpolated Light Probes. - - - - - The automatic mode uses a number of interpolated Light Probes per unit area, and uses the bounding volume size to compute the resolution. The final resolution value is a power of 2. - - - - - The custom mode allows you to specify the 3D grid resolution. - - - - - Triggers an update of the Light Probe Proxy Volume. - - - - - Stores light probes for the Scene. - - - - - Coefficients of baked light probes. - - - - - The number of cells space is divided into (Read Only). - - - - - The number of light probes (Read Only). - - - - - Positions of the baked light probes (Read Only). - - - - - Calculate light probes and occlusion probes at the given world space positions. - - The array of world space positions used to evaluate the probes. - The array where the resulting light probes are written to. - The array where the resulting occlusion probes are written to. - - - - Calculate light probes and occlusion probes at the given world space positions. - - The array of world space positions used to evaluate the probes. - The array where the resulting light probes are written to. - The array where the resulting occlusion probes are written to. - - - - Returns an interpolated probe for the given position for both realtime and baked light probes combined. - - - - - - - - How the Light is rendered. - - - - - Automatically choose the render mode. - - - - - Force the Light to be a pixel light. - - - - - Force the Light to be a vertex light. - - - - - Allows mixed lights to control shadow caster culling when Shadowmasks are present. - - - - - Use the global Shadowmask Mode from the quality settings. - - - - - Render all shadow casters into the shadow map. This corresponds with the distance Shadowmask mode. - - - - - Render only non-lightmapped objects into the shadow map. This corresponds with the Shadowmask mode. - - - - - Shadow casting options for a Light. - - - - - Cast "hard" shadows (with no shadow filtering). - - - - - Do not cast shadows (default). - - - - - Cast "soft" shadows (with 4x PCF filtering). - - - - - The type of a Light. - - - - - The light is a directional light. - - - - - The light is a disc shaped area light. It affects only baked lightmaps and lightprobes. - - - - - The light is a point light. - - - - - The light is a rectangle shaped area light. It affects only baked lightmaps and lightprobes. - - - - - The light is a spot light. - - - - - Control the direction lines face, when using the LineRenderer or TrailRenderer. - - - - - Lines face the direction of the Transform Component. - - - - - Lines face the Z axis of the Transform Component. - - - - - Lines face the camera. - - - - - The line renderer is used to draw free-floating lines in 3D space. - - - - - Select whether the line will face the camera, or the orientation of the Transform Component. - - - - - Set the color gradient describing the color of the line at various points along its length. - - - - - Set the color at the end of the line. - - - - - Set the width at the end of the line. - - - - - Configures a line to generate Normals and Tangents. With this data, Scene lighting can affect the line via Normal Maps and the Unity Standard Shader, or your own custom-built Shaders. - - - - - Connect the start and end positions of the line together to form a continuous loop. - - - - - Set this to a value greater than 0, to get rounded corners on each end of the line. - - - - - Set this to a value greater than 0, to get rounded corners between each segment of the line. - - - - - Set the number of line segments. - - - - - Set/get the number of vertices. - - - - - Apply a shadow bias to prevent self-shadowing artifacts. The specified value is the proportion of the line width at each segment. - - - - - Set the color at the start of the line. - - - - - Set the width at the start of the line. - - - - - Choose whether the U coordinate of the line texture is tiled or stretched. - - - - - If enabled, the lines are defined in world space. - - - - - Set the curve describing the width of the line at various points along its length. - - - - - Set an overall multiplier that is applied to the LineRenderer.widthCurve to get the final width of the line. - - - - - Creates a snapshot of LineRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the line. - The camera used for determining which way camera-space lines will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of LineRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the line. - The camera used for determining which way camera-space lines will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of LineRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the line. - The camera used for determining which way camera-space lines will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of LineRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the line. - The camera used for determining which way camera-space lines will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Get the position of a vertex in the line. - - The index of the position to retrieve. - - The position at the specified index in the array. - - - - - Get the positions of all vertices in the line. - - The array of positions to retrieve. The array passed should be of at least positionCount in size. - - How many positions were actually stored in the output array. - - - - - Set the line color at the start and at the end. - - - - - - - Set the position of a vertex in the line. - - Which position to set. - The new position. - - - - Set the positions of all vertices in the line. - - The array of positions to set. - - - - Set the number of line segments. - - - - - - Set the line width at the start and at the end. - - - - - - - Generates a simplified version of the original line by removing points that fall within the specified tolerance. - - This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. - - - - Choose how textures are applied to Lines and Trails. - - - - - Map the texture once along the entire length of the line, assuming all vertices are evenly spaced. - - - - - Repeat the texture along the line, repeating at a rate of once per line segment. To adjust the tiling rate, use Material.SetTextureScale. - - - - - Map the texture once along the entire length of the line. - - - - - Repeat the texture along the line, based on its length in world units. To set the tiling rate, use Material.SetTextureScale. - - - - - A collection of common line functions. - - - - - Generates a simplified version of the original line by removing points that fall within the specified tolerance. - - The points that make up the original line. - This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. - Populated by this function. Contains the indexes of the points that should be generate a simplified version.. - Populated by this function. Contains the points that form the simplified line. - - - - Generates a simplified version of the original line by removing points that fall within the specified tolerance. - - The points that make up the original line. - This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. - Populated by this function. Contains the indexes of the points that should be generate a simplified version.. - Populated by this function. Contains the points that form the simplified line. - - - - Generates a simplified version of the original line by removing points that fall within the specified tolerance. - - The points that make up the original line. - This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. - Populated by this function. Contains the indexes of the points that should be generate a simplified version.. - Populated by this function. Contains the points that form the simplified line. - - - - Generates a simplified version of the original line by removing points that fall within the specified tolerance. - - The points that make up the original line. - This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. - Populated by this function. Contains the indexes of the points that should be generate a simplified version.. - Populated by this function. Contains the points that form the simplified line. - - - - An asset to represent a table of localized strings for one specific locale. - - - - - Is this asset used to localize UI components of the Unity Editor - - - - - ISO Code used to identify the locale. ex: en-uk, zh-hans, ja - - - - - Creates a new empty LocalizationAsset object. - - - - - Get the localized string for the specified key. - - Original string acting as key. - - Localized string matching the original in the LocalizationAsset locale - - - - - Set the localized string for the specified key - - Original string acting as key. - Localized string matching the original in the LocalizationAsset locale - - - - Structure describing device location. - - - - - Geographical device location altitude. - - - - - Horizontal accuracy of the location. - - - - - Geographical device location latitude. - - - - - Geographical device location latitude. - - - - - Timestamp (in seconds since 1970) when location was last time updated. - - - - - Vertical accuracy of the location. - - - - - Interface into location functionality. - - - - - Specifies whether location service is enabled in user settings. - - - - - Last measured device geographical location. - - - - - Returns location service status. - - - - - Starts location service updates. Last location coordinates could be. - - - - - - - Starts location service updates. Last location coordinates could be. - - - - - - - Starts location service updates. Last location coordinates could be. - - - - - - - Stops location service updates. This could be useful for saving battery life. - - - - - Describes location service status. - - - - - Location service failed (user denied access to location service). - - - - - Location service is initializing, some time later it will switch to. - - - - - Location service is running and locations could be queried. - - - - - Location service is stopped. - - - - - Structure for building a LOD for passing to the SetLODs function. - - - - - Width of the cross-fade transition zone (proportion to the current LOD's whole length) [0-1]. Only used if it's not animated. - - - - - List of renderers for this LOD level. - - - - - The screen relative height to use for the transition [0-1]. - - - - - Construct a LOD. - - The screen relative height to use for the transition [0-1]. - An array of renderers to use for this LOD level. - - - - The LOD fade modes. Modes other than LODFadeMode.None will result in Unity calculating a blend factor for blending/interpolating between two neighbouring LODs and pass it to your shader. - - - - - Perform cross-fade style blending between the current LOD and the next LOD if the distance to camera falls in the range specified by the LOD.fadeTransitionWidth of each LOD. - - - - - Indicates the LOD fading is turned off. - - - - - By specifying this mode, your LODGroup will perform a SpeedTree-style LOD fading scheme: - - -* For all the mesh LODs other than the last (most crude) mesh LOD, the fade factor is calculated as the percentage of the object's current screen height, compared to the whole range of the LOD. It is 1, if the camera is right at the position where the previous LOD switches out and 0, if the next LOD is just about to switch in. - - -* For the last mesh LOD and the billboard LOD, the cross-fade mode is used. - - - - - LODGroup lets you group multiple Renderers into LOD levels. - - - - - Specify if the cross-fading should be animated by time. The animation duration is specified globally as crossFadeAnimationDuration. - - - - - The cross-fading animation duration in seconds. ArgumentException will be thrown if it is set to zero or a negative value. - - - - - Enable / Disable the LODGroup - Disabling will turn off all renderers. - - - - - The LOD fade mode used. - - - - - The local reference point against which the LOD distance is calculated. - - - - - The number of LOD levels. - - - - - The size of the LOD object in local space. - - - - - - - The LOD level to use. Passing index < 0 will return to standard LOD processing. - - - - Returns the array of LODs. - - - The LOD array. - - - - - Recalculate the bounding region for the LODGroup (Relatively slow, do not call often). - - - - - Set the LODs for the LOD group. This will remove any existing LODs configured on the LODGroup. - - The LODs to use for this group. - - - - Initializes a new instance of the Logger. - - - - - To selective enable debug log message. - - - - - To runtime toggle debug logging [ON/OFF]. - - - - - Set Logger.ILogHandler. - - - - - Create a custom Logger. - - Pass in default log handler or custom log handler. - - - - Check logging is enabled based on the LogType. - - The type of the log message. - - Retrun true in case logs of LogType will be logged otherwise returns false. - - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Logger.Log that logs an error message. - - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Logger.Log that logs an error message. - - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Logger.Log that logs an exception message. - - Runtime Exception. - Object to which the message applies. - - - - A variant of Logger.Log that logs an exception message. - - Runtime Exception. - Object to which the message applies. - - - - Logs a formatted message. - - The type of the log message. - Object to which the message applies. - A composite format string. - Format arguments. - - - - Logs a formatted message. - - The type of the log message. - Object to which the message applies. - A composite format string. - Format arguments. - - - - A variant of Logger.Log that logs an warning message. - - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Logger.Log that logs an warning message. - - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - The type of the log message in Debug.unityLogger.Log or delegate registered with Application.RegisterLogCallback. - - - - - LogType used for Asserts. (These could also indicate an error inside Unity itself.) - - - - - LogType used for Errors. - - - - - LogType used for Exceptions. - - - - - LogType used for regular log messages. - - - - - LogType used for Warnings. - - - - - The Master Server is used to make matchmaking between servers and clients easy. - - - - - Report this machine as a dedicated server. - - - - - The IP address of the master server. - - - - - The connection port of the master server. - - - - - Set the minimum update rate for master server host information update. - - - - - Clear the host list which was received by MasterServer.PollHostList. - - - - - Check for the latest host list received by using MasterServer.RequestHostList. - - - - - Register this server on the master server. - - - - - - - - Register this server on the master server. - - - - - - - - Request a host list from the master server. - - - - - - Unregister this server from the master server. - - - - - Describes status messages from the master server as returned in MonoBehaviour.OnMasterServerEvent|OnMasterServerEvent. - - - - - Use this struct to specify the position and rotation weight mask for Animator.MatchTarget. - - - - - Position XYZ weight. - - - - - Rotation weight. - - - - - MatchTargetWeightMask contructor. - - Position XYZ weight. - Rotation weight. - - - - The material class. - - - - - The main material's color. - - - - - Gets and sets whether the Double Sided Global Illumination setting is enabled for this material. - - - - - Gets and sets whether GPU instancing is enabled for this material. - - - - - Defines how the material should interact with lightmaps and lightprobes. - - - - - The material's texture. - - - - - The texture offset of the main texture. - - - - - The texture scale of the main texture. - - - - - How many passes are in this material (Read Only). - - - - - Render queue of this material. - - - - - The shader used by the material. - - - - - Additional shader keywords set by this material. - - - - - Copy properties from other material into this material. - - - - - - - - - - - - Create a temporary Material. - - Create a material with a given Shader. - Create a material by copying all properties from another material. - - - - Create a temporary Material. - - Create a material with a given Shader. - Create a material by copying all properties from another material. - - - - Unset a shader keyword. - - - - - - Sets a shader keyword that is enabled by this material. - - - - - - Returns the index of the pass passName. - - - - - - Get a named color value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named color value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named color array. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named color array. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a named color array into a list. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The list to hold the returned array. - - - - Fetch a named color array into a list. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The list to hold the returned array. - - - - Get a named float value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named float value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named float array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Get a named float array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Fetch a named float array into a list. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The list to hold the returned array. - - - - Fetch a named float array into a list. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The list to hold the returned array. - - - - Get a named integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named matrix value from the shader. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named matrix value from the shader. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named matrix array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Get a named matrix array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Fetch a named matrix array into a list. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The list to hold the returned array. - - - - Fetch a named matrix array into a list. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The list to hold the returned array. - - - - Returns the name of the shader pass at index pass. - - - - - - Checks whether a given Shader pass is enabled on this Material. - - Shader pass name (case insensitive). - - True if the Shader pass is enabled. - - - - - Get the value of material's shader tag. - - - - - - - - Get the value of material's shader tag. - - - - - - - - Get a named texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets the placement offset of texture propertyName. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets the placement offset of texture propertyName. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Return the name IDs of all texture properties exposed on this material. - - IDs of all texture properties exposed on this material. - - IDs of all texture properties exposed on this material. - - - - - Return the name IDs of all texture properties exposed on this material. - - IDs of all texture properties exposed on this material. - - IDs of all texture properties exposed on this material. - - - - - Returns the names of all texture properties exposed on this material. - - Names of all texture properties exposed on this material. - - Names of all texture properties exposed on this material. - - - - - Returns the names of all texture properties exposed on this material. - - Names of all texture properties exposed on this material. - - Names of all texture properties exposed on this material. - - - - - Gets the placement scale of texture propertyName. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets the placement scale of texture propertyName. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named vector value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named vector value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named vector array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Get a named vector array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Fetch a named vector array into a list. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The list to hold the returned array. - - - - Fetch a named vector array into a list. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The list to hold the returned array. - - - - Checks if material's shader has a property of a given name. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Checks if material's shader has a property of a given name. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Is the shader keyword enabled on this material? - - - - - - Interpolate properties between two materials. - - - - - - - - Sets a named ComputeBuffer value. - - Property name ID, use Shader.PropertyToID to get it. - Property name. - The ComputeBuffer value to set. - - - - Sets a named ComputeBuffer value. - - Property name ID, use Shader.PropertyToID to get it. - Property name. - The ComputeBuffer value to set. - - - - Sets a named color value. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_Color". - Color value to set. - - - - Sets a named color value. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_Color". - Color value to set. - - - - Sets a color array property. - - Property name. - Property name ID, use Shader.PropertyToID to get it. - Array of values to set. - - - - Sets a color array property. - - Property name. - Property name ID, use Shader.PropertyToID to get it. - Array of values to set. - - - - Sets a color array property. - - Property name. - Property name ID, use Shader.PropertyToID to get it. - Array of values to set. - - - - Sets a color array property. - - Property name. - Property name ID, use Shader.PropertyToID to get it. - Array of values to set. - - - - Sets a named float value. - - Property name ID, use Shader.PropertyToID to get it. - Float value to set. - Property name, e.g. "_Glossiness". - - - - Sets a named float value. - - Property name ID, use Shader.PropertyToID to get it. - Float value to set. - Property name, e.g. "_Glossiness". - - - - Sets a float array property. - - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Array of values to set. - - - - Sets a float array property. - - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Array of values to set. - - - - Sets a float array property. - - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Array of values to set. - - - - Sets a float array property. - - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Array of values to set. - - - - Sets a named integer value. - - Property name ID, use Shader.PropertyToID to get it. - Integer value to set. - Property name, e.g. "_SrcBlend". - - - - Sets a named integer value. - - Property name ID, use Shader.PropertyToID to get it. - Integer value to set. - Property name, e.g. "_SrcBlend". - - - - Sets a named matrix for the shader. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_CubemapRotation". - Matrix value to set. - - - - Sets a named matrix for the shader. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_CubemapRotation". - Matrix value to set. - - - - Sets a matrix array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a matrix array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a matrix array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a matrix array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets an override tag/value on the material. - - Name of the tag to set. - Name of the value to set. Empty string to clear the override flag. - - - - Activate the given pass for rendering. - - Shader pass number to setup. - - If false is returned, no rendering should be done. - - - - - Enables or disables a Shader pass on a per-Material level. - - Shader pass name (case insensitive). - Flag indicating whether this Shader pass should be enabled. - - - - Sets a named texture. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_MainTex". - Texture to set. - - - - Sets a named texture. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_MainTex". - Texture to set. - - - - Sets the placement offset of texture propertyName. - - Property name ID, use Shader.PropertyToID to get it. - Property name, for example: "_MainTex". - Texture placement offset. - - - - Sets the placement offset of texture propertyName. - - Property name ID, use Shader.PropertyToID to get it. - Property name, for example: "_MainTex". - Texture placement offset. - - - - Sets the placement scale of texture propertyName. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_MainTex". - Texture placement scale. - - - - Sets the placement scale of texture propertyName. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_MainTex". - Texture placement scale. - - - - Sets a named vector value. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_WaveAndDistance". - Vector value to set. - - - - Sets a named vector value. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_WaveAndDistance". - Vector value to set. - - - - Sets a vector array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a vector array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a vector array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a vector array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - How the material interacts with lightmaps and lightprobes. - - - - - Helper Mask to be used to query the enum only based on whether realtime GI or baked GI is set, ignoring all other bits. - - - - - The emissive lighting affects baked Global Illumination. It emits lighting into baked lightmaps and baked lightprobes. - - - - - The emissive lighting is guaranteed to be black. This lets the lightmapping system know that it doesn't have to extract emissive lighting information from the material and can simply assume it is completely black. - - - - - The emissive lighting does not affect Global Illumination at all. - - - - - The emissive lighting will affect realtime Global Illumination. It emits lighting into realtime lightmaps and realtime lightprobes. - - - - - A block of material values to apply. - - - - - Is the material property block empty? (Read Only) - - - - - Clear material property values. - - - - - This function copies the entire source array into a Vector4 property array named unity_ProbesOcclusion for use with instanced rendering. - - The array of probe occlusion values to copy from. - - - - This function copies the entire source array into a Vector4 property array named unity_ProbesOcclusion for use with instanced rendering. - - The array of probe occlusion values to copy from. - - - - This function copies the source array into a Vector4 property array named unity_ProbesOcclusion with the specified source and destination range for use with instanced rendering. - - The array of probe occlusion values to copy from. - The index of the first element in the source array to copy from. - The index of the first element in the destination MaterialPropertyBlock array to copy to. - The number of elements to copy. - - - - This function copies the source array into a Vector4 property array named unity_ProbesOcclusion with the specified source and destination range for use with instanced rendering. - - The array of probe occlusion values to copy from. - The index of the first element in the source array to copy from. - The index of the first element in the destination MaterialPropertyBlock array to copy to. - The number of elements to copy. - - - - This function converts and copies the entire source array into 7 Vector4 property arrays named unity_SHAr, unity_SHAg, unity_SHAb, unity_SHBr, unity_SHBg, unity_SHBb and unity_SHC for use with instanced rendering. - - The array of SH values to copy from. - - - - This function converts and copies the entire source array into 7 Vector4 property arrays named unity_SHAr, unity_SHAg, unity_SHAb, unity_SHBr, unity_SHBg, unity_SHBb and unity_SHC for use with instanced rendering. - - The array of SH values to copy from. - - - - This function converts and copies the source array into 7 Vector4 property arrays named unity_SHAr, unity_SHAg, unity_SHAb, unity_SHBr, unity_SHBg, unity_SHBb and unity_SHC with the specified source and destination range for use with instanced rendering. - - The array of SH values to copy from. - The index of the first element in the source array to copy from. - The index of the first element in the destination MaterialPropertyBlock array to copy to. - The number of elements to copy. - - - - This function converts and copies the source array into 7 Vector4 property arrays named unity_SHAr, unity_SHAg, unity_SHAb, unity_SHBr, unity_SHBg, unity_SHBb and unity_SHC with the specified source and destination range for use with instanced rendering. - - The array of SH values to copy from. - The index of the first element in the source array to copy from. - The index of the first element in the destination MaterialPropertyBlock array to copy to. - The number of elements to copy. - - - - Get a color from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a color from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a float from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a float from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a float array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a float array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a float array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a float array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get an int from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get an int from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a matrix from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a matrix from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a matrix array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a matrix array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a matrix array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a matrix array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a texture from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a texture from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a vector from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a vector from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a vector array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a vector array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a vector array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a vector array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Set a ComputeBuffer property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The ComputeBuffer to set. - - - - Set a ComputeBuffer property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The ComputeBuffer to set. - - - - Set a color property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Color value to set. - - - - Set a color property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Color value to set. - - - - Set a float property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The float value to set. - - - - Set a float property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The float value to set. - - - - Set a float array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a float array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a float array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a float array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Adds a property to the block. If an int property with the given name already exists, the old value is replaced. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The int value to set. - - - - Adds a property to the block. If an int property with the given name already exists, the old value is replaced. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The int value to set. - - - - Set a matrix property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The matrix value to set. - - - - Set a matrix property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The matrix value to set. - - - - Set a matrix array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a matrix array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a matrix array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a matrix array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a texture property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Texture to set. - - - - Set a texture property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Texture to set. - - - - Set a vector property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Vector4 value to set. - - - - Set a vector property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Vector4 value to set. - - - - Set a vector array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a vector array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a vector array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a vector array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - A collection of common math functions. - - - - - Returns the absolute value of f. - - - - - - Returns the absolute value of value. - - - - - - Returns the arc-cosine of f - the angle in radians whose cosine is f. - - - - - - Compares two floating point values and returns true if they are similar. - - - - - - - Returns the arc-sine of f - the angle in radians whose sine is f. - - - - - - Returns the arc-tangent of f - the angle in radians whose tangent is f. - - - - - - Returns the angle in radians whose Tan is y/x. - - - - - - - Returns the smallest integer greater to or equal to f. - - - - - - Returns the smallest integer greater to or equal to f. - - - - - - Clamps the given value between the given minimum float and maximum float values. Returns the given value if it is within the min and max range. - - The floating point value to restrict inside the range defined by the min and max values. - The minimum floating point value to compare against. - The maximum floating point value to compare against. - - The float result between the min and max values. - - - - - Clamps the given value between a range defined by the given minimum integer and maximum integer values. Returns the given value if it is within min and max. - - The integer point value to restrict inside the min-to-max range - The minimum integer point value to compare against. - The maximum integer point value to compare against. - - The int result between min and max values. - - - - - Clamps value between 0 and 1 and returns value. - - - - - - Returns the closest power of two value. - - - - - - Convert a color temperature in Kelvin to RGB color. - - Temperature in Kelvin. Range 1000 to 40000 Kelvin. - - Correlated Color Temperature as floating point RGB color. - - - - - Returns the cosine of angle f. - - The input angle, in radians. - - The return value between -1 and 1. - - - - - Degrees-to-radians conversion constant (Read Only). - - - - - Calculates the shortest difference between two given angles given in degrees. - - - - - - - A tiny floating point value (Read Only). - - - - - Returns e raised to the specified power. - - - - - - Returns the largest integer smaller than or equal to f. - - - - - - Returns the largest integer smaller to or equal to f. - - - - - - Converts the given value from gamma (sRGB) to linear color space. - - - - - - A representation of positive infinity (Read Only). - - - - - Calculates the linear parameter t that produces the interpolant value within the range [a, b]. - - Start value. - End value. - Value between start and end. - - Percentage of value between start and end. - - - - - Returns true if the value is power of two. - - - - - - Linearly interpolates between a and b by t. - - The start value. - The end value. - The interpolation value between the two floats. - - The interpolated float result between the two float values. - - - - - Same as Lerp but makes sure the values interpolate correctly when they wrap around 360 degrees. - - - - - - - - Linearly interpolates between a and b by t with no limit to t. - - The start value. - The end value. - The interpolation between the two floats. - - The float value as a result from the linear interpolation. - - - - - Converts the given value from linear to gamma (sRGB) color space. - - - - - - Returns the logarithm of a specified number in a specified base. - - - - - - - Returns the natural (base e) logarithm of a specified number. - - - - - - Returns the base 10 logarithm of a specified number. - - - - - - Returns largest of two or more values. - - - - - - - - Returns largest of two or more values. - - - - - - - - Returns the largest of two or more values. - - - - - - - - Returns the largest of two or more values. - - - - - - - - Returns the smallest of two or more values. - - - - - - - - Returns the smallest of two or more values. - - - - - - - - Returns the smallest of two or more values. - - - - - - - - Returns the smallest of two or more values. - - - - - - - - Moves a value current towards target. - - The current value. - The value to move towards. - The maximum change that should be applied to the value. - - - - Same as MoveTowards but makes sure the values interpolate correctly when they wrap around 360 degrees. - - - - - - - - A representation of negative infinity (Read Only). - - - - - Returns the next power of two that is equal to, or greater than, the argument. - - - - - - Generate 2D Perlin noise. - - X-coordinate of sample point. - Y-coordinate of sample point. - - Value between 0.0 and 1.0. (Return value might be slightly beyond 1.0.) - - - - - The well-known 3.14159265358979... value (Read Only). - - - - - PingPongs the value t, so that it is never larger than length and never smaller than 0. - - - - - - - Returns f raised to power p. - - - - - - - Radians-to-degrees conversion constant (Read Only). - - - - - Loops the value t, so that it is never larger than length and never smaller than 0. - - - - - - - Returns f rounded to the nearest integer. - - - - - - Returns f rounded to the nearest integer. - - - - - - Returns the sign of f. - - - - - - Returns the sine of angle f. - - The input angle, in radians. - - The return value between -1 and +1. - - - - - Gradually changes a value towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a value towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a value towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes an angle given in degrees towards a desired goal angle over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes an angle given in degrees towards a desired goal angle over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes an angle given in degrees towards a desired goal angle over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Interpolates between min and max with smoothing at the limits. - - - - - - - - Returns square root of f. - - - - - - Returns the tangent of angle f in radians. - - - - - - A standard 4x4 transformation matrix. - - - - - This property takes a projection matrix and returns the six plane coordinates that define a projection frustum. - - - - - The determinant of the matrix. - - - - - Returns the identity matrix (Read Only). - - - - - The inverse of this matrix (Read Only). - - - - - Is this the identity matrix? - - - - - Attempts to get a scale value from the matrix. - - - - - Attempts to get a rotation quaternion from this matrix. - - - - - Returns the transpose of this matrix (Read Only). - - - - - Returns a matrix with all elements set to zero (Read Only). - - - - - This function returns a projection matrix with viewing frustum that has a near plane defined by the coordinates that were passed in. - - The X coordinate of the left side of the near projection plane in view space. - The X coordinate of the right side of the near projection plane in view space. - The Y coordinate of the bottom side of the near projection plane in view space. - The Y coordinate of the top side of the near projection plane in view space. - Z distance to the near plane from the origin in view space. - Z distance to the far plane from the origin in view space. - Frustum planes struct that contains the view space coordinates of that define a viewing frustum. - - - A projection matrix with a viewing frustum defined by the plane coordinates passed in. - - - - - This function returns a projection matrix with viewing frustum that has a near plane defined by the coordinates that were passed in. - - The X coordinate of the left side of the near projection plane in view space. - The X coordinate of the right side of the near projection plane in view space. - The Y coordinate of the bottom side of the near projection plane in view space. - The Y coordinate of the top side of the near projection plane in view space. - Z distance to the near plane from the origin in view space. - Z distance to the far plane from the origin in view space. - Frustum planes struct that contains the view space coordinates of that define a viewing frustum. - - - A projection matrix with a viewing frustum defined by the plane coordinates passed in. - - - - - Get a column of the matrix. - - - - - - Returns a row of the matrix. - - - - - - Given a source point, a target point, and an up vector, computes a transformation matrix that corresponds to a camera viewing the target from the source, such that the right-hand vector is perpendicular to the up vector. - - The source point. - The target point. - The vector describing the up direction (typically Vector3.up). - - The resulting transformation matrix. - - - - - Transforms a position by this matrix (generic). - - - - - - Transforms a position by this matrix (fast). - - - - - - Transforms a direction by this matrix. - - - - - - Multiplies two matrices. - - - - - - - Transforms a Vector4 by a matrix. - - - - - - - Creates an orthogonal projection matrix. - - - - - - - - - - - Creates a perspective projection matrix. - - - - - - - - - Creates a rotation matrix. - - - - - - Creates a scaling matrix. - - - - - - Sets a column of the matrix. - - - - - - - Sets a row of the matrix. - - - - - - - Sets this matrix to a translation, rotation and scaling matrix. - - - - - - - - Access element at [row, column]. - - - - - Access element at sequential index (0..15 inclusive). - - - - - Returns a nicely formatted string for this matrix. - - - - - - Returns a nicely formatted string for this matrix. - - - - - - Returns a plane that is transformed in space. - - - - - - Creates a translation matrix. - - - - - - Creates a translation, rotation and scaling matrix. - - - - - - - - Checks if this matrix is a valid transform matrix. - - - - - A class that allows creating or modifying meshes from scripts. - - - - - The bind poses. The bind pose at each index refers to the bone with the same index. - - - - - Returns BlendShape count on this mesh. - - - - - The bone weights of each vertex. - - - - - The bounding volume of the mesh. - - - - - Vertex colors of the Mesh. - - - - - Vertex colors of the Mesh. - - - - - Format of the mesh index buffer data. - - - - - Returns true if the Mesh is read/write enabled, or false if it is not. - - - - - The normals of the Mesh. - - - - - The number of sub-meshes inside the Mesh object. - - - - - The tangents of the Mesh. - - - - - An array containing all triangles in the Mesh. - - - - - The base texture coordinates of the Mesh. - - - - - The second texture coordinate set of the mesh, if present. - - - - - The third texture coordinate set of the mesh, if present. - - - - - The fourth texture coordinate set of the mesh, if present. - - - - - The fifth texture coordinate set of the mesh, if present. - - - - - The sixth texture coordinate set of the mesh, if present. - - - - - The seventh texture coordinate set of the mesh, if present. - - - - - The eighth texture coordinate set of the mesh, if present. - - - - - Gets the number of vertex buffers present in the Mesh. (Read Only) - - - - - Returns the number of vertices in the Mesh (Read Only). - - - - - Returns a copy of the vertex positions or assigns a new vertex positions array. - - - - - Adds a new blend shape frame. - - Name of the blend shape to add a frame to. - Weight for the frame being added. - Delta vertices for the frame being added. - Delta normals for the frame being added. - Delta tangents for the frame being added. - - - - Clears all vertex data and all triangle indices. - - - - - - Clears all blend shapes from Mesh. - - - - - Combines several Meshes into this Mesh. - - Descriptions of the Meshes to combine. - Defines whether Meshes should be combined into a single sub-mesh. - Defines whether the transforms supplied in the CombineInstance array should be used or ignored. - - - - - Creates an empty Mesh. - - - - - Gets the base vertex index of the given sub-mesh. - - The sub-mesh index. See subMeshCount. - - The offset applied to all vertex indices of this sub-mesh. - - - - - Gets the bind poses for this instance. - - A list of bind poses to populate. - - - - Returns the frame count for a blend shape. - - The shape index to get frame count from. - - - - Retreives deltaVertices, deltaNormals and deltaTangents of a blend shape frame. - - The shape index of the frame. - The frame index to get the weight from. - Delta vertices output array for the frame being retreived. - Delta normals output array for the frame being retreived. - Delta tangents output array for the frame being retreived. - - - - Returns the weight of a blend shape frame. - - The shape index of the frame. - The frame index to get the weight from. - - - - Returns index of BlendShape by given name. - - - - - - Returns name of BlendShape by given index. - - - - - - Gets the bone weights for this instance. - - A list of bone weights to populate. - - - - Gets the vertex colors for this instance. - - A list of vertex colors to populate. - - - - Gets the vertex colors for this instance. - - A list of vertex colors to populate. - - - - Gets the index count of the given sub-mesh. - - - - - - Gets the starting index location within the Mesh's index buffer, for the given sub-mesh. - - - - - - Fetches the index list for the specified sub-mesh. - - A list of indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - Fetches the index list for the specified sub-mesh. - - A list of indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - Retrieves a native (underlying graphics API) pointer to the index buffer. - - - Pointer to the underlying graphics API index buffer. - - - - - Retrieves a native (underlying graphics API) pointer to the vertex buffer. - - Which vertex buffer to get (some Meshes might have more than one). See vertexBufferCount. - - - Pointer to the underlying graphics API vertex buffer. - - - - - Gets the vertex normals for this instance. - - A list of vertex normals to populate. - - - - Gets the tangents for this instance. - - A list of tangents to populate. - - - - Gets the topology of a sub-mesh. - - - - - - Fetches the triangle list for the specified sub-mesh on this object. - - A list of vertex indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - Fetches the triangle list for the specified sub-mesh on this object. - - A list of vertex indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - Fetches the triangle list for the specified sub-mesh on this object. - - A list of vertex indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - Fetches the triangle list for the specified sub-mesh on this object. - - A list of vertex indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - The UV distribution metric can be used to calculate the desired mipmap level based on the position of the camera. - - UV set index to return the UV distibution metric for. 0 for first. - - Average of triangle area / uv area. - - - - - Gets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - A list of UVs to populate. - - - - Gets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - A list of UVs to populate. - - - - Gets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - A list of UVs to populate. - - - - Gets the vertex positions for this instance. - - A list of vertex positions to populate. - - - - Optimize mesh for frequent updates. - - - - - Optimizes the Mesh for display. - - - - - Recalculate the bounding volume of the Mesh from the vertices. - - - - - Recalculates the normals of the Mesh from the triangles and vertices. - - - - - Recalculates the tangents of the Mesh from the normals and texture coordinates. - - - - - Vertex colors of the Mesh. - - Per-Vertex Colours. - - - - Vertex colors of the Mesh. - - Per-Vertex Colours. - - - - Sets the index buffer for the sub-mesh. - - The array of indices that define the Mesh. - The topology of the Mesh, e.g: Triangles, Lines, Quads, Points, etc. See MeshTopology. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the indices. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the indices. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the index buffer for the sub-mesh. - - The array of indices that define the Mesh. - The topology of the Mesh, e.g: Triangles, Lines, Quads, Points, etc. See MeshTopology. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the indices. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the indices. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the index buffer for the sub-mesh. - - The array of indices that define the Mesh. - The topology of the Mesh, e.g: Triangles, Lines, Quads, Points, etc. See MeshTopology. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the indices. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the indices. - Optional vertex offset that is added to all triangle vertex indices. - - - - Set the normals of the Mesh. - - Per-vertex normals. - - - - Set the tangents of the Mesh. - - Per-vertex tangents. - - - - Sets the triangle list for the sub-mesh. - - The list of indices that define the triangles. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the triangles. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the triangles. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the triangle list for the sub-mesh. - - The list of indices that define the triangles. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the triangles. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the triangles. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the triangle list for the sub-mesh. - - The list of indices that define the triangles. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the triangles. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the triangles. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the triangle list for the sub-mesh. - - The list of indices that define the triangles. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the triangles. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the triangles. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - List of UVs to set for the given index. - - - - Sets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - List of UVs to set for the given index. - - - - Sets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - List of UVs to set for the given index. - - - - Assigns a new vertex positions array. - - Per-vertex position. - - - - Upload previously done Mesh modifications to the graphics API. - - Frees up system memory copy of mesh data when set to true. - - - - A mesh collider allows you to do between meshes and primitives. - - - - - Use a convex collider from the mesh. - - - - - Options used to enable or disable certain features in mesh cooking. - - - - - Allow the physics engine to increase the volume of the input mesh in attempt to generate a valid convex mesh. - - - - - The mesh object used for collision detection. - - - - - Used when set to inflateMesh to determine how much inflation is acceptable. - - - - - Uses interpolated normals for sphere collisions instead of flat polygonal normals. - - - - - Cooking options that are available with MeshCollider. - - - - - Toggle between cooking for faster simulation or faster cooking time. - - - - - Toggle cleaning of the mesh. - - - - - Allow the physics engine to increase the volume of the input mesh in attempt to generate a valid convex mesh. - - - - - No optional cooking steps will be run. - - - - - Toggle the removal of equal vertices. - - - - - A class to access the Mesh of the. - - - - - Returns the instantiated Mesh assigned to the mesh filter. - - - - - Returns the shared mesh of the mesh filter. - - - - - Renders meshes inserted by the MeshFilter or TextMesh. - - - - - Vertex attributes in this mesh will override or add attributes of the primary mesh in the MeshRenderer. - - - - - Index of the first sub-mesh to use from the Mesh associated with this MeshRenderer (Read Only). - - - - - Topology of Mesh faces. - - - - - Mesh is made from lines. - - - - - Mesh is a line strip. - - - - - Mesh is made from points. - - - - - Mesh is made from quads. - - - - - Mesh is made from triangles. - - - - - Use this class to record to an AudioClip using a connected microphone. - - - - - A list of available microphone devices, identified by name. - - - - - Stops recording. - - The name of the device. - - - - Get the frequency capabilities of a device. - - The name of the device. - Returns the minimum sampling frequency of the device. - Returns the maximum sampling frequency of the device. - - - - Get the position in samples of the recording. - - The name of the device. - - - - Query if a device is currently recording. - - The name of the device. - - - - Start Recording with device. - - The name of the device. - Indicates whether the recording should continue recording if lengthSec is reached, and wrap around and record from the beginning of the AudioClip. - Is the length of the AudioClip produced by the recording. - The sample rate of the AudioClip produced by the recording. - - The function returns null if the recording fails to start. - - - - - Attribute used to make a float or int variable in a script be restricted to a specific minimum value. - - - - - The minimum allowed value. - - - - - Attribute used to make a float or int variable in a script be restricted to a specific minimum value. - - The minimum allowed value. - - - - Enum describing what lighting mode to be used with Mixed lights. - - - - - Mixed lights provide realtime direct lighting while indirect light is baked into lightmaps and light probes. - - - - - Mixed lights provide realtime direct lighting. Indirect lighting gets baked into lightmaps and light probes. Shadowmasks and light probe occlusion get generated for baked shadows. The Shadowmask Mode used at run time can be set in the Quality Settings panel. - - - - - Mixed lights provide baked direct and indirect lighting for static objects. Dynamic objects receive realtime direct lighting and cast shadows on static objects using the main directional light in the Scene. - - - - - MonoBehaviour is the base class from which every Unity script derives. - - - - - Logs message to the Unity Console (identical to Debug.Log). - - - - - - Allow a specific instance of a MonoBehaviour to run in edit mode (only available in the editor). - - - - - Disabling this lets you skip the GUI layout phase. - - - - - Cancels all Invoke calls on this MonoBehaviour. - - - - - Cancels all Invoke calls with name methodName on this behaviour. - - - - - - Invokes the method methodName in time seconds. - - - - - - - Invokes the method methodName in time seconds, then repeatedly every repeatRate seconds. - - - - - - - - Is any invoke on methodName pending? - - - - - - Is any invoke pending on this MonoBehaviour? - - - - - Starts a coroutine. - - - - - - Starts a coroutine named methodName. - - - - - - - Starts a coroutine named methodName. - - - - - - - Starts a Coroutine named coroutine. - - Name of the created Coroutine. - - - - Stops all coroutines running on this behaviour. - - - - - Stops the first coroutine named methodName, or the coroutine stored in routine running on this behaviour. - - Name of coroutine. - Name of the function in code, including coroutines. - - - - Stops the first coroutine named methodName, or the coroutine stored in routine running on this behaviour. - - Name of coroutine. - Name of the function in code, including coroutines. - - - - Stops the first coroutine named methodName, or the coroutine stored in routine running on this behaviour. - - Name of coroutine. - Name of the function in code, including coroutines. - - - - Base class for AnimationClips and BlendTrees. - - - - - The type of motion vectors that should be generated. - - - - - Use only camera movement to track motion. - - - - - Do not track motion. Motion vectors will be 0. - - - - - Use a specific pass (if required) to track motion. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - Attribute to make a string be edited with a multi-line textfield. - - - - - Attribute used to make a string value be shown in a multiline textarea. - - How many lines of text to make room for. Default is 3. - - - - Attribute used to make a string value be shown in a multiline textarea. - - How many lines of text to make room for. Default is 3. - - - - The network class is at the heart of the network implementation and provides the core functions. - - - - - All connected players. - - - - - The IP address of the connection tester used in Network.TestConnection. - - - - - The port of the connection tester used in Network.TestConnection. - - - - - Set the password for the server (for incoming connections). - - - - - Returns true if your peer type is client. - - - - - Enable or disable the processing of network messages. - - - - - Returns true if your peer type is server. - - - - - Set the log level for network messages (default is Off). - - - - - Set the maximum amount of connections/players allowed. - - - - - Get or set the minimum number of ViewID numbers in the ViewID pool given to clients by the server. - - - - - The IP address of the NAT punchthrough facilitator. - - - - - The port of the NAT punchthrough facilitator. - - - - - The status of the peer type, i.e. if it is disconnected, connecting, server or client. - - - - - Get the local NetworkPlayer instance. - - - - - The IP address of the proxy server. - - - - - Set the proxy server password. - - - - - The port of the proxy server. - - - - - The default send rate of network updates for all Network Views. - - - - - Get the current network time (seconds). - - - - - Indicate if proxy support is needed, in which case traffic is relayed through the proxy server. - - - - - Query for the next available network view ID number and allocate it (reserve). - - - - - Close the connection to another system. - - - - - - - Connect to the specified host (ip or domain name) and server port. - - - - - - - - Connect to the specified host (ip or domain name) and server port. - - - - - - - - This function is exactly like Network.Connect but can accept an array of IP addresses. - - - - - - - - This function is exactly like Network.Connect but can accept an array of IP addresses. - - - - - - - - Connect to a server GUID. NAT punchthrough can only be performed this way. - - - - - - - Connect to a server GUID. NAT punchthrough can only be performed this way. - - - - - - - Connect to the host represented by a HostData structure returned by the Master Server. - - - - - - - Connect to the host represented by a HostData structure returned by the Master Server. - - - - - - - Destroy the object associated with this view ID across the network. - - - - - - Destroy the object across the network. - - - - - - Destroy all the objects based on view IDs belonging to this player. - - - - - - Close all open connections and shuts down the network interface. - - - - - - Close all open connections and shuts down the network interface. - - - - - - The last average ping time to the given player in milliseconds. - - - - - - The last ping time to the given player in milliseconds. - - - - - - Check if this machine has a public IP address. - - - - - Initializes security layer. - - - - - Initialize the server. - - - - - - - - Initialize the server. - - - - - - - - Network instantiate a Prefab. - - - - - - - - - Remove all RPC functions which belong to this player ID. - - - - - - Remove all RPC functions which belong to this player ID and were sent based on the given group. - - - - - - - Remove the RPC function calls accociated with this view ID number. - - - - - - Remove all RPC functions which belong to given group number. - - - - - - Set the level prefix which will then be prefixed to all network ViewID numbers. - - - - - - Enable or disables the reception of messages in a specific group number from a specific player. - - - - - - - - Enables or disables transmission of messages and RPC calls on a specific network group number. - - - - - - - Enable or disable transmission of messages and RPC calls based on target network player as well as the network group. - - - - - - - - Test this machines network connection. - - - - - - Test this machines network connection. - - - - - - Test the connection specifically for NAT punch-through connectivity. - - - - - - Test the connection specifically for NAT punch-through connectivity. - - - - - - Possible status messages returned by Network.Connect and in MonoBehaviour.OnFailedToConnect|OnFailedToConnect in case the error was not immediate. - - - - - The reason a disconnect event occured, like in MonoBehaviour.OnDisconnectedFromServer|OnDisconnectedFromServer. - - - - - Responsible for rejecting or accepting certificates received on https requests. - - - - - Signals that this [CertificateHandler] is no longer being used, and should clean up any resources it is using. - - - - - Callback, invoked for each leaf certificate sent by the remote server. - - Certificate data in PEM or DER format. If certificate data contains multiple certificates, the first one is the leaf certificate. - - true if the certificate should be accepted, false if not. - - - - - Defines parameters of channels. - - - - - Returns true if the channel belongs to a shared group. - - - - - UnderlyingModel.MemDoc.MemDocModel. - - Requested type of quality of service (default Unreliable). - Copy constructor. - - - - UnderlyingModel.MemDoc.MemDocModel. - - Requested type of quality of service (default Unreliable). - Copy constructor. - - - - UnderlyingModel.MemDoc.MemDocModel. - - Requested type of quality of service (default Unreliable). - Copy constructor. - - - - Channel quality of service. - - - - - Defines size of the buffer holding reliable messages, before they will be acknowledged. - - - - - Ack buffer can hold 128 messages. - - - - - Ack buffer can hold 32 messages. - - - - - Ack buffer can hold 64 messages. - - - - - Ack buffer can hold 96 messages. - - - - - This class defines parameters of connection between two peers, this definition includes various timeouts and sizes as well as channel configuration. - - - - - Defines the duration in milliseconds that the receiver waits for before it sends an acknowledgement back without waiting for any data payload. Default value = 33. - -Network clients that send data to a server may do so using many different quality of service (QOS) modes, some of which (reliable modes) expect the server to send back acknowledgement of receipt of data sent. - -Servers must periodically acknowledge data packets received over channels with reliable QOS modes by sending packets containing acknowledgement data (also known as "acks") back to the client. If the server were to send an acknowledgement immediately after receiving each packet from the client there would be significant overhead (the acknowledgement is a 32 or 64 bit integer, which is very small compared to the whole size of the packet which also contains the IP and the UDP header). AckDelay allows the server some time to accumulate a list of received reliable data packets to acknowledge, and decreases traffic overhead by combining many acknowledgements into a single packet. - - - - - Determines the size of the buffer used to store reliable messages that are waiting for acknowledgement. It can be set to Acks32, Acks64, Acks96, or Acks128. Depends of this setting buffer can hold 32, 64, 96, or 128 messages. Default value = Ack32. - -Messages sent on reliable quality of service channels are stored in a special buffer while they wait for acknowledgement from the peer. This buffer can be either 32, 64, 96 or 128 positions long. It is recommended to begin with this value set to Ack32, which defines a buffer up to 32 messages in size. If you receive NoResources errors often when you send reliable messages, change this value to the next possible size. - - - - - Adds a new channel to the configuration and returns the unique id of that channel. - -Channels are logical delimiters of traffic between peers. Every time you send data to a peer, you should use two ids: connection id and channel id. Channels are not only logically separate traffic but could each be configured with a different quality of service (QOS). In the example below, a configuration is created containing two channels with Unreliable and Reliable QOS types. This configuration is then used for sending data. - - Add new channel to configuration. - - Channel id, user can use this id to send message via this channel. - - - - - Defines the timeout in milliseconds after which messages sent via the AllCost channel will be re-sent without waiting for acknowledgement. Default value = 20 ms. - -AllCost delivery quality of service (QOS) is a special QOS for delivering game-critical information, such as when the game starts, or when bullets are shot. - -Due to packets dropping, sometimes reliable messages cannot be delivered and need to be re-sent. Reliable messages will re-sent after RTT+Delta time, (RTT is round trip time) where RTT is a dynamic value and can reach couple of hundred milliseconds. For the AllCost delivery channel this timeout can be user-defined to force game critical information to be re-sent. - - - - - Defines, when multiplied internally by InitialBandwidth, the maximum bandwidth that can be used under burst conditions. - - - - - (Read Only) The number of channels in the current configuration. - - - - - The list of channels belonging to the current configuration. - -Note: any ConnectionConfig passed as a parameter to a function in Unity Multiplayer is deep copied (that is, an entirely new copy is made, with no references to the original). - - - - - Timeout in ms which library will wait before it will send another connection request. - - - - - Will create default connection config or will copy them from another. - - Connection config. - - - - Will create default connection config or will copy them from another. - - Connection config. - - - - Defines the timeout in milliseconds before a connection is considered to have been disconnected. Default value = 2000. - -Unity Multiplayer defines conditions under which a connection is considered as disconnected. Disconnection can happen for the following reasons: - -(1) A disconnection request was received. - -(2) The connection has not received any traffic at all for a time longer than DisconnectTimeout (Note that live connections receive regular keep-alive packets, so in this case "no traffic" means not only no user traffic but also absence of any keep-alive traffic as well). - -(3) Flow control determines that the time between sending packets is longer than DisconnectTimeout. Keep-alive packets are regularly delivered from peers and contain statistical information. This information includes values of packet loss due to network and peer overflow conditions. Setting NetworkDropThreshold and OverflowDropThreshold defines thresholds for flow control which can decrease packet frequency. When the time before sending the next packet is longer than DisconnectTimeout, the connection will be considered as disconnected and a disconnect event is received. - - - - - Defines the fragment size for fragmented messages (for QOS: ReliableFragmented and UnreliableFragmented). Default value = 500. - -Under fragmented quality of service modes, the original message is split into fragments (up to 64) of up to FragmentSize bytes each. The fragment size depends on the frequency and size of reliable messages sent. Each reliable message potentially could be re-sent, so you need to choose a fragment size less than the remaining free space in a UDP packet after retransmitted reliable messages are added to the packet. For example, if Networking.ConnectionConfig.PacketSize is 1440 bytes, and a reliable message's average size is 200 bytes, it would be wise to set this parameter to 900 – 1000 bytes. - - - - - Return the QoS set for the given channel or throw an out of range exception. - - Index in array. - - Channel QoS. - - - - - Return IList<byte> of channel IDs which belong to the group. - - Group id. - - List of channel IDs belonging to the group. - - - - - Gets or sets the bandwidth in bytes per second that can be used by Unity Multiplayer. No traffic over this limit is allowed. Unity Multiplayer may internally reduce the bandwidth it uses due to flow control. The default value is 1.5MB/sec (1,536,000 bytes per second). The default value is intentionally a large number to allow all traffic to pass without delay. - - - - - Allows you to combine multiple channels into a single group, so those channels share a common receiving order. - - The list of channel indices which should be grouped together. The list can include both reliable and unreliable channels. - - - - Defines the maximum number of small reliable messages that can be included in one combined message. Default value = 10. - -Since each message sent to a server contains IP information and a UDP header, duplicating this information for every message sent can be inefficient in the case where there are many small messages being sent frequently. Many small reliable messages can be combined into one longer reliable message, saving space in the waiting buffer. Unity Multiplayer will automatically combine up to MaxCombinedReliableMessageCount small messages into one message. To qualify as a small message, the data payload of the message should not be greater than MaxCombinedReliableMessageSize. - - - - - Defines the maximum size in bytes of a reliable message which is considered small enough to include in a combined message. Default value = 100. - -Since each message sent to a server contains IP information and a UDP header, duplicating this information for every message sent can be inefficient in the case where there are many small messages being sent frequently. Many small reliable messages can be combined into one longer reliable message, saving space in the waiting buffer. Unity Multiplayer will automatically combine up to MaxCombinedReliableMessageCount small messages into one message. To qualify as a small message, the data payload of the message should not be greater than MaxCombinedReliableMessageSize. - - - - - Defines the maximum number of times Unity Multiplayer will attempt to send a connection request without receiving a response before it reports that it cannot establish a connection. Default value = 10. - - - - - Defines maximum number of messages that can be held in the queue for sending. Default value = 128. - -This buffer serves to smooth spikes in traffic and decreases network jitter. If the queue is full, a NoResources error will result from any calls to Send(). Setting this value greater than around 300 is likely to cause significant delaying of message delivering and can make game unplayable. - - - - - Defines minimum time in milliseconds between sending packets. This duration may be automatically increased if required by flow control. Default value = 10. - -When Send() is called, Unity Multiplayer won’t send the message immediately. Instead, once every SendTimeout milliseconds each connection is checked to see if it has something to send. While initial and minimal send timeouts can be set, these may be increased internally due to network conditions or buffer overflows. - - - - - Defines the percentage (from 0 to 100) of packets that need to be dropped due to network conditions before the SendUpdate timeout is automatically increased (and send rate is automatically decreased). Default value = 5. - -To avoid receiver overflow, Unity Multiplayer supports flow control. Each ping packet sent between connected peers contains two values: - -(1) Packets lost due to network conditions. - -(2) Packets lost because the receiver does not have free space in its incoming buffers. - -Like OverflowDropThreshold, both values are reported in percent. Use NetworkDropThreshold and OverflowDropThreshold to set thresholds for these values. If a value reported in the ping packet exceeds the corresponding threshold, Unity Multiplayer increases the sending timeout for packets up to a maximum value of DisconnectTimeout. - -Note: wireless networks usually exhibit 5% or greater packet loss. For wireless networks it is advisable to use a NetworkDropThreshold of 40-50%. - - - - - Defines the percentage (from 0 to 100) of packets that need to be dropped due to lack of space in internal buffers before the SendUpdate timeout is automatically increased (and send rate is automatically decreased). Default value = 5. - -To avoid receiver overflow, Unity Multiplayer supports flow control. Each ping packet sent between connected peers contains two values: - -(1) Packets lost due to network conditions. - -(2) Packets lost because the receiver does not have free space in its incoming buffers. - -Like NetworkDropThreshold, both values are reported in percent. Use NetworkDropThreshold and OverflowDropThreshold to set thresholds for these values. If a value reported in the ping packet exceeds the corresponding threshold, Unity Multiplayer increases the sending timeout for packets up to a maximum value of DisconnectTimeout. - -Note: wireless networks usually exhibit 5% or greater packet loss. For wireless networks it is advisable to use a NetworkDropThreshold of 40-50%. - - - - - Defines maximum packet size (in bytes) (including payload and all header). Packet can contain multiple messages inside. Default value = 1500. - -Note that this default value is suitable for local testing only. Usually you should change this value; a recommended setting for PC or mobile is 1470. For games consoles this value should probably be less than ~1100. Wrong size definition can cause packet dropping. - - - - - Defines the duration in milliseconds between keep-alive packets, also known as pings. Default value = 500. - -The ping frequency should be long enough to accumulate good statistics and short enough to compare with DisconnectTimeout. A good guideline is to have more than 3 pings per disconnect timeout, and more than 5 messages per ping. For example, with a DisconnectTimeout of 2000ms, a PingTimeout of 500ms works well. - - - - - Defines the maximum wait time in milliseconds before the "not acknowledged" message is re-sent. Default value = 1200. - -It does not make a lot of sense to wait for acknowledgement forever. This parameter sets an upper time limit at which point reliable messages are re-sent. - - - - - Gets or sets the delay in milliseconds after a call to Send() before packets are sent. During this time, new messages may be combined in queued packets. Default value: 10ms. - - - - - (Read Only) The number of shared order groups in current configuration. - - - - - Defines the path to the file containing the certification authority (CA) certificate for WebSocket via SSL communication. - - - - - Defines path to SSL certificate file, for WebSocket via SSL communication. - - - - - Defines the path to the file containing the private key for WebSocket via SSL communication. - - - - - Defines the size in bytes of the receiving buffer for UDP sockets. It is useful to set this parameter equal to the maximum size of a fragmented message. Default value is OS specific (usually 8kb). - - - - - When starting a server use protocols that make use of platform specific optimisations where appropriate rather than cross-platform protocols. (Sony consoles only). - - - - - Validate parameters of connection config. Will throw exceptions if parameters are incorrect. - - - - - - WebSocket only. Defines the buffer size in bytes for received frames on a WebSocket host. If this value is 0 (the default), a 4 kilobyte buffer is used. Any other value results in a buffer of that size, in bytes. - -WebSocket message fragments are called "frames". A WebSocket host has a buffer to store incoming message frames. Therefore this buffer should be set to the largest legal frame size supported. If an incoming frame exceeds the buffer size, no error is reported. However, the buffer will invoke the user callback in order to create space for the overflow. - - - - - Create configuration for network simulator; You can use this class in editor and developer build only. - - - - - Will create object describing network simulation parameters. - - Minimal simulation delay for outgoing traffic in ms. - Average simulation delay for outgoing traffic in ms. - Minimal simulation delay for incoming traffic in ms. - Average simulation delay for incoming traffic in ms. - Probability of packet loss 0 <= p <= 1. - - - - Destructor. - - - - - Manage and process HTTP response body data received from a remote server. - - - - - Returns the raw bytes downloaded from the remote server, or null. (Read Only) - - - - - Returns true if this DownloadHandler has been informed by its parent UnityWebRequest that all data has been received, and this DownloadHandler has completed any necessary post-download processing. (Read Only) - - - - - Convenience property. Returns the bytes from data interpreted as a UTF8 string. (Read Only) - - - - - Callback, invoked when all data has been received from the remote server. - - - - - Signals that this DownloadHandler is no longer being used, and should clean up any resources it is using. - - - - - Callback, invoked when the data property is accessed. - - - Byte array to return as the value of the data property. - - - - - Callback, invoked when UnityWebRequest.downloadProgress is accessed. - - - The return value for UnityWebRequest.downloadProgress. - - - - - Callback, invoked when the text property is accessed. - - - String to return as the return value of the text property. - - - - - Callback, invoked with a Content-Length header is received. - - The value of the received Content-Length header. - - - - Callback, invoked as data is received from the remote server. - - A buffer containing unprocessed data, received from the remote server. - The number of bytes in data which are new. - - True if the download should continue, false to abort. - - - - - A DownloadHandler subclass specialized for downloading AssetBundles. - - - - - Returns the downloaded AssetBundle, or null. (Read Only) - - - - - Standard constructor for non-cached asset bundles. - - The nominal (pre-redirect) URL at which the asset bundle is located. - A checksum to compare to the downloaded data for integrity checking, or zero to skip integrity checking. - - - - Simple versioned constructor. Caches downloaded asset bundles. - - The nominal (pre-redirect) URL at which the asset bundle is located. - A checksum to compare to the downloaded data for integrity checking, or zero to skip integrity checking. - Current version number of the asset bundle at url. Increment to redownload. - - - - Versioned constructor. Caches downloaded asset bundles. - - The nominal (pre-redirect) URL at which the asset bundle is located. - A checksum to compare to the downloaded data for integrity checking, or zero to skip integrity checking. - A hash object defining the version of the asset bundle. - - - - Versioned constructor. Caches downloaded asset bundles to a customized cache path. - - The nominal (pre-redirect) URL at which the asset bundle is located. - A hash object defining the version of the asset bundle. - A checksum to compare to the downloaded data for integrity checking, or zero to skip integrity checking. - A structure used to download a given version of AssetBundle to a customized cache path. - AssetBundle name which is used as the customized cache path. - - - - Versioned constructor. Caches downloaded asset bundles to a customized cache path. - - The nominal (pre-redirect) URL at which the asset bundle is located. - A hash object defining the version of the asset bundle. - A checksum to compare to the downloaded data for integrity checking, or zero to skip integrity checking. - A structure used to download a given version of AssetBundle to a customized cache path. - AssetBundle name which is used as the customized cache path. - - - - Returns the downloaded AssetBundle, or null. - - A finished UnityWebRequest object with DownloadHandlerAssetBundle attached. - - The same as DownloadHandlerAssetBundle.assetBundle - - - - - Not implemented. Throws <a href="http:msdn.microsoft.comen-uslibrarysystem.notsupportedexception">NotSupportedException<a>. - - - Not implemented. - - - - - Not implemented. Throws <a href="http:msdn.microsoft.comen-uslibrarysystem.notsupportedexception">NotSupportedException<a>. - - - Not implemented. - - - - - A DownloadHandler subclass specialized for downloading audio data for use as AudioClip objects. - - - - - Returns the downloaded AudioClip, or null. (Read Only) - - - - - Create AudioClip that is compressed in memory. - - - - - Create streaming AudioClip. - - - - - Constructor, specifies what kind of audio data is going to be downloaded. - - The nominal (pre-redirect) URL at which the audio clip is located. - Value to set for AudioClip type. - - - - Returns the downloaded AudioClip, or null. - - A finished UnityWebRequest object with DownloadHandlerAudioClip attached. - - The same as DownloadHandlerAudioClip.audioClip - - - - - Called by DownloadHandler.data. Returns a copy of the downloaded clip data as raw bytes. - - - A copy of the downloaded data. - - - - - A general-purpose DownloadHandler implementation which stores received data in a native byte buffer. - - - - - Default constructor. - - - - - Returns a copy of the native-memory buffer interpreted as a UTF8 string. - - A finished UnityWebRequest object with DownloadHandlerBuffer attached. - - The same as DownloadHandlerBuffer.text - - - - - Returns a copy of the contents of the native-memory data buffer as a byte array. - - - A copy of the data which has been downloaded. - - - - - Download handler for saving the downloaded data to file. - - - - - Should the created file be removed if download is aborted (manually or due to an error). Default: false. - - - - - Creates a new instance and a file on disk where downloaded data will be written to. - - Path to file to be written. - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - A UnityWebRequest with attached DownloadHandlerMovieTexture. - - A MovieTexture created out of downloaded bytes. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - Raw downloaded bytes. - - - - - An abstract base class for user-created scripting-driven DownloadHandler implementations. - - - - - Create a DownloadHandlerScript which allocates new buffers when passing data to callbacks. - - - - - Create a DownloadHandlerScript which reuses a preallocated buffer to pass data to callbacks. - - A byte buffer into which data will be copied, for use by DownloadHandler.ReceiveData. - - - - A DownloadHandler subclass specialized for downloading images for use as Texture objects. - - - - - Returns the downloaded Texture, or null. (Read Only) - - - - - Default constructor. - - - - - Constructor, allows TextureImporter.isReadable property to be set. - - Value to set for TextureImporter.isReadable. - - - - Returns the downloaded Texture, or null. - - A finished UnityWebRequest object with DownloadHandlerTexture attached. - - The same as DownloadHandlerTexture.texture - - - - - Called by DownloadHandler.data. Returns a copy of the downloaded image data as raw bytes. - - - A copy of the downloaded data. - - - - - Defines global paramters for network library. - - - - - Defines the callback delegate which you can use to get a notification when a connection is ready to send data. - - - - - Create new global config object. - - - - - Defines how many hosts you can use. Default Value = 16. Max value = 128. - - - - - Deprecated. Defines maximum delay for network simulator. See Also: MaxTimerTimeout. - - - - - Defines maximum possible packet size in bytes for all network connections. - - - - - Defines the maximum timeout in milliseconds for any configuration. The default value is 12 seconds (12000ms). - - - - - Deprecated. Defines the minimal timeout for network simulator. You cannot set up any delay less than this value. See Also: MinTimerTimeout. - - - - - Defines the minimum timeout in milliseconds recognised by the system. The default value is 1 ms. - - - - - Defines the callback delegate which you can use to get a notification when the host (defined by hostID) has a network event. The callback is called for all event types except Networking.NetworkEventType.Nothing. - -See Also: Networking.NetworkEventType - - - - - This property determines the initial size of the queue that holds messages received by Unity Multiplayer before they are processed. - - - - - Defines the initial size of the send queue. Messages are placed in this queue ready to be sent in packets to their destination. - - - - - Defines reactor model for the network library. - - - - - Defines (1) for select reactor, minimum time period, when system will check if there are any messages for send (2) for fixrate reactor, minimum interval of time, when system will check for sending and receiving messages. - - - - - Defines how many worker threads are available to handle incoming and outgoing messages. - - - - - Class defines network topology for host (socket opened by Networking.NetworkTransport.AddHost function). This topology defines: (1) how many connection with default config will be supported and (2) what will be special connections (connections with config different from default). - - - - - Add special connection to topology (for example if you need to keep connection to standalone chat server you will need to use this function). Returned id should be use as one of parameters (with ip and port) to establish connection to this server. - - Connection config for special connection. - - Id of this connection. You should use this id when you call Networking.NetworkTransport.Connect. - - - - - Create topology. - - Default config. - Maximum default connections. - - - - Defines config for default connections in the topology. - - - - - Return reference to special connection config. Parameters of this config can be changed. - - Config id. - - Connection config. - - - - - Defines how many connection with default config be permitted. - - - - - Defines the maximum number of messages that each host can hold in its pool of received messages. The default size is 128. - - - - - Defines the maximum number of messages that each host can hold in its pool of messages waiting to be sent. The default size is 128. - - - - - List of special connection configs. - - - - - Returns count of special connection added to topology. - - - - - An interface for composition of data into multipart forms. - - - - - Returns the value to use in the Content-Type header for this form section. - - - The value to use in the Content-Type header, or null. - - - - - Returns a string denoting the desired filename of this section on the destination server. - - - The desired file name of this section, or null if this is not a file section. - - - - - Returns the raw binary data contained in this section. Must not return null or a zero-length array. - - - The raw binary data contained in this section. Must not be null or empty. - - - - - Returns the name of this section, if any. - - - The section's name, or null. - - - - - Details about a UNET MatchMaker match. - - - - - The binary access token this client uses to authenticate its session for future commands. - - - - - IP address of the host of the match,. - - - - - The numeric domain for the match. - - - - - The unique ID of this match. - - - - - NodeID for this member client in the match. - - - - - Port of the host of the match. - - - - - This flag indicates whether or not the match is using a Relay server. - - - - - A class describing the match information as a snapshot at the time the request was processed on the MatchMaker. - - - - - The average Elo score of the match. - - - - - The current number of players in the match. - - - - - The collection of direct connect info classes describing direct connection information supplied to the MatchMaker. - - - - - The NodeID of the host for this match. - - - - - Describes if the match is private. Private matches are unlisted in ListMatch results. - - - - - The collection of match attributes on this match. - - - - - The maximum number of players this match can grow to. - - - - - The text name for this match. - - - - - The network ID for this match. - - - - - A class describing one member of a match and what direct connect information other clients have supplied. - - - - - The host priority for this direct connect info. Host priority describes the order in which this match member occurs in the list of clients attached to a match. - - - - - NodeID of the match member this info refers to. - - - - - The private network address supplied for this direct connect info. - - - - - The public network address supplied for this direct connect info. - - - - - A component for communicating with the Unity Multiplayer Matchmaking service. - - - - - The base URI of the MatchMaker that this NetworkMatch will communicate with. - - - - - A delegate that can handle MatchMaker responses that return basic response types (generally only indicating success or failure and extended information if a failure did happen). - - Indicates if the request succeeded. - A text description of the failure if success is false. - - - - Use this function to create a new match. The client which calls this function becomes the host of the match. - - The text string describing the name for this match. - When creating a match, the matchmaker will use either this value, or the maximum size you have configured online at https:multiplayer.unity3d.com, whichever is lower. This way you can specify different match sizes for a particular game, but still maintain an overall size limit in the online control panel. - A bool indicating if this match should be available in NetworkMatch.ListMatches results. - A text string indicating if this match is password protected. If it is, all clients trying to join this match must supply the correct match password. - The optional public client address. This value is stored on the matchmaker and given to clients listing matches. It is intended to be a network address for connecting to this client directly over the internet. This value will only be present if a publicly available address is known, and direct connection is supported by the matchmaker. - The optional private client address. This value is stored on the matchmaker and given to clients listing matches. It is intended to be a network address for connecting to this client directly on a local area network. This value will only be present if direct connection is supported by the matchmaker. This may be an empty string and it will not affect the ability to interface with matchmaker or use relay server. - The Elo score for the client hosting the match being created. If this number is set on all clients to indicate relative skill level, this number is used to return matches ordered by those that are most suitable for play given a listing player's skill level. This may be 0 on all clients, which would disable any Elo calculations in the MatchMaker. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback to be called when this function completes. This will be called regardless of whether the function succeeds or fails. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - Response delegate containing basic information plus a data member. This is used on a subset of MatchMaker callbacks that require data passed in along with the success/failure information of the call itself. - - Indicates if the request succeeded. - If success is false, this will contain a text string indicating the reason. - The generic passed in containing data required by the callback. This typically contains data returned from a call to the service backend. - - - - This function is used to tell MatchMaker to destroy a match in progress, regardless of who is connected. - - The NetworkID of the match to terminate. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback to be called when the request completes. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - A function to allow an individual client to be dropped from a match. - - The NetworkID of the match the client to drop belongs to. - The NodeID of the client to drop inside the specified match. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback to invoke when the request completes. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - The function used to tell MatchMaker the current client wishes to join a specific match. - - The NetworkID of the match to join. This is found through calling NetworkMatch.ListMatches and picking a result from the returned list of matches. - The password of the match. Leave empty if there is no password for the match, and supply the text string password if the match was configured to have one of the NetworkMatch.CreateMatch request. - The optional public client address. This value will be stored on the matchmaker and given to other clients listing matches. You should send this value if you want your players to be able to connect directly with each other over the internet. Alternatively you can pass an empty string and it will not affect the ability to interface with matchmaker or use relay server. - The optional private client address. This value will be stored on the matchmaker and given to other clients listing matches. You should send this value if you want your players to be able to connect directly with each other over a Local Area Network. Alternatively you can pass an empty string and it will not affect the ability to interface with matchmaker or use relay server. - The Elo score for the client joining the match being created. If this number is set on all clients to indicate relative skill level, this number is used to return matches ordered by those that are most suitable for play given a listing player's skill level. This may be 0 on all clients, which would disable any Elo calculations in the MatchMaker. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback to be invoked when this call completes. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - The function to list ongoing matches in the MatchMaker. - - The current page to list in the return results. - The size of the page requested. This determines the maximum number of matches contained in the list of matches passed into the callback. - The text string name filter. This is a partial wildcard search against match names that are currently active, and can be thought of as matching equivalent to *<matchNameFilter>* where any result containing the entire string supplied here will be in the result set. - Boolean that indicates if the response should contain matches that are private (meaning matches that are password protected). - The Elo score target for the match list results to be grouped around. If used, this should be set to the Elo level of the client listing the matches so results will more closely match that player's skill level. If not used this can be set to 0 along with all other Elo refereces in funcitons like NetworkMatch.CreateMatch or NetworkMatch.JoinMatch. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback invoked when this call completes on the MatchMaker. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - This function allows the caller to change attributes on a match in progress. - - The NetworkID of the match to set attributes on. - A bool indicating whether the match should be listed in NetworkMatch.ListMatches results after this call is complete. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback invoked after the call has completed, indicating if it was successful or not. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - This method is deprecated. Please instead log in through the editor services panel and setup the project under the Unity Multiplayer section. This will populate the required infomation from the cloud site automatically. - - Deprecated, see description. - - - - A helper object for form sections containing generic, non-file data. - - - - - Returns the value to use in this section's Content-Type header. - - - The Content-Type header for this section, or null. - - - - - Returns a string denoting the desired filename of this section on the destination server. - - - The desired file name of this section, or null if this is not a file section. - - - - - Returns the raw binary data contained in this section. Will not return null or a zero-length array. - - - The raw binary data contained in this section. Will not be null or empty. - - - - - Returns the name of this section, if any. - - - The section's name, or null. - - - - - Raw data section, unnamed and no Content-Type header. - - Data payload of this section. - - - - Raw data section with a section name, no Content-Type header. - - Section name. - Data payload of this section. - - - - A raw data section with a section name and a Content-Type header. - - Section name. - Data payload of this section. - The value for this section's Content-Type header. - - - - A named raw data section whose payload is derived from a string, with a Content-Type header. - - Section name. - String data payload for this section. - The value for this section's Content-Type header. - An encoding to marshal data to or from raw bytes. - - - - A named raw data section whose payload is derived from a UTF8 string, with a Content-Type header. - - Section name. - String data payload for this section. - C. - - - - A names raw data section whose payload is derived from a UTF8 string, with a default Content-Type. - - Section name. - String data payload for this section. - - - - An anonymous raw data section whose payload is derived from a UTF8 string, with a default Content-Type. - - String data payload for this section. - - - - A helper object for adding file uploads to multipart forms via the [IMultipartFormSection] API. - - - - - Returns the value of the section's Content-Type header. - - - The Content-Type header for this section, or null. - - - - - Returns a string denoting the desired filename of this section on the destination server. - - - The desired file name of this section, or null if this is not a file section. - - - - - Returns the raw binary data contained in this section. Will not return null or a zero-length array. - - - The raw binary data contained in this section. Will not be null or empty. - - - - - Returns the name of this section, if any. - - - The section's name, or null. - - - - - Contains a named file section based on the raw bytes from data, with a custom Content-Type and file name. - - Name of this form section. - Raw contents of the file to upload. - Name of the file uploaded by this form section. - The value for this section's Content-Type header. - - - - Contains an anonymous file section based on the raw bytes from data, assigns a default Content-Type and file name. - - Raw contents of the file to upload. - - - - Contains an anonymous file section based on the raw bytes from data with a specific file name. Assigns a default Content-Type. - - Raw contents of the file to upload. - Name of the file uploaded by this form section. - - - - Contains a named file section with data drawn from data, as marshaled by dataEncoding. Assigns a specific file name from fileName and a default Content-Type. - - Name of this form section. - Contents of the file to upload. - A string encoding. - Name of the file uploaded by this form section. - - - - An anonymous file section with data drawn from data, as marshaled by dataEncoding. Assigns a specific file name from fileName and a default Content-Type. - - Contents of the file to upload. - A string encoding. - Name of the file uploaded by this form section. - - - - An anonymous file section with data drawn from the UTF8 string data. Assigns a specific file name from fileName and a default Content-Type. - - Contents of the file to upload. - Name of the file uploaded by this form section. - - - - Possible Networking.NetworkTransport errors. - - - - - Not a data message. - - - - - The Networking.ConnectionConfig does not match the other endpoint. - - - - - The address supplied to connect to was invalid or could not be resolved. - - - - - The message is too long to fit the buffer. - - - - - Not enough resources are available to process this request. - - - - - The operation completed successfully. - - - - - Connection timed out. - - - - - This error will occur if any function is called with inappropriate parameter values. - - - - - The protocol versions are not compatible. Check your library versions. - - - - - The specified channel doesn't exist. - - - - - The specified connectionId doesn't exist. - - - - - The specified host not available. - - - - - Operation is not supported. - - - - - Event that is returned when calling the Networking.NetworkTransport.Receive and Networking.NetworkTransport.ReceiveFromHost functions. - - - - - Broadcast discovery event received. -To obtain sender connection info and possible complimentary message from them, call Networking.NetworkTransport.GetBroadcastConnectionInfo() and Networking.NetworkTransport.GetBroadcastConnectionMessage() functions. - - - - - Connection event received. Indicating that a new connection was established. - - - - - Data event received. Indicating that data was received. - - - - - Disconnection event received. - - - - - No new event was received. - - - - - Transport Layer API. - - - - - Creates a host based on Networking.HostTopology. - - The Networking.HostTopology associated with the host. - Port to bind to (when 0 is selected, the OS will choose a port at random). - IP address to bind to. - - Returns the ID of the host that was created. - - - - - Create a host and configure them to simulate Internet latency (works on Editor and development build only). - - The Networking.HostTopology associated with the host. - Minimum simulated delay in milliseconds. - Maximum simulated delay in milliseconds. - Port to bind to (when 0 is selected, the OS will choose a port at random). - IP address to bind to. - - Returns host ID just created. - - - - - Created web socket host. - - Port to bind to. - The Networking.HostTopology associated with the host. - IP address to bind to. - - Web socket host id. - - - - - Created web socket host. - - Port to bind to. - The Networking.HostTopology associated with the host. - IP address to bind to. - - Web socket host id. - - - - - Tries to establish a connection to another peer. - - Host ID associated with this connection (retrieved when calling Networking.NetworkTransport.AddHost). - IPv4 address of the other peer. - Port of the other peer. - Set to 0 in the case of a default connection. - Error (can be cast to Networking.NetworkError for more information). - - - A unique connection identifier on success (otherwise zero). - - - - - Create dedicated connection to Relay server. - - Host ID associated with this connection (Retrieved when calling Networking.NetworkTransport.AddHost). - IPv4 address of the relay. - Port of the relay. - GUID for the relay match, retrieved by calling Networking.Match.NetworkMatch.CreateMatch and using the Networking.Match.MatchInfo.networkId. - GUID for the source, can be retrieved by calling Utility.GetSourceID. - Error (can be cast to Networking.NetworkError for more information). - Slot ID for this user, retrieved by calling Networking.Match.NetworkMatch.CreateMatch and using the Networking.Match.MatchInfo.nodeId. - - - - Try to establish connection to other peer, where the peer is specified using a C# System.EndPoint. - - Host ID associated with this connection (Retrieved when calling Networking.NetworkTransport.AddHost). - Error (can be cast to Networking.NetworkError for more information). - A valid System.EndPoint. - Set to 0 in the case of a default connection. - - - A unique connection identifier on success (otherwise zero). - - - - - Create a connection to another peer in the Relay group. - - Host ID associated with this connection (retrieved when calling Networking.NetworkTransport.AddHost). - IP address of the peer, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.address. - Port of the peer, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.port. - Set to 0 in the case of a default connection. - ID of the remote peer in relay. - GUID for the relay match, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.networkId. - GUID for the source, can be retrieved by calling Utility.GetSourceID. - Error (can be cast to Networking.NetworkError for more information). - Slot ID reserved for the user, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.nodeId. - Allowed peak bandwidth (peak bandwidth = factor*bytesPerSec, recommended value is 2.0) If data has not been sent for a long time, it is allowed to send more data, with factor 2 it is allowed send 2*bytesPerSec bytes per sec. - Average bandwidth (bandwidth will be throttled on this level). - - A unique connection identifier on success (otherwise zero). - - - - - Create a connection to another peer in the Relay group. - - Host ID associated with this connection (retrieved when calling Networking.NetworkTransport.AddHost). - IP address of the peer, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.address. - Port of the peer, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.port. - Set to 0 in the case of a default connection. - ID of the remote peer in relay. - GUID for the relay match, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.networkId. - GUID for the source, can be retrieved by calling Utility.GetSourceID. - Error (can be cast to Networking.NetworkError for more information). - Slot ID reserved for the user, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.nodeId. - Allowed peak bandwidth (peak bandwidth = factor*bytesPerSec, recommended value is 2.0) If data has not been sent for a long time, it is allowed to send more data, with factor 2 it is allowed send 2*bytesPerSec bytes per sec. - Average bandwidth (bandwidth will be throttled on this level). - - A unique connection identifier on success (otherwise zero). - - - - - Connect with simulated latency. - - Host ID associated with this connection (Retrieved when calling Networking.NetworkTransport.AddHost). - IPv4 address of the other peer. - Port of the other peer. - Set to 0 in the case of a default connection. - Error (can be cast to Networking.NetworkError for more information). - A Networking.ConnectionSimulatorConfig defined for this connection. - - A unique connection identifier on success (otherwise zero). - - - - - Send a disconnect signal to the connected peer and close the connection. Poll Networking.NetworkTransport.Receive() to be notified that the connection is closed. This signal is only sent once (best effort delivery). If this packet is dropped for some reason, the peer closes the connection by timeout. - - Host ID associated with this connection. - The connection ID of the connection you want to close. - Error (can be cast to Networking.NetworkError for more information). - - - - This will disconnect the host and disband the group. -DisconnectNetworkHost can only be called by the group owner on the relay server. - - Host ID associated with this connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Finalizes sending of a message to a group of connections. Only one multicast message at a time is allowed per host. - - Host ID associated with this connection (retrieved when calling Networking.NetworkTransport.AddHost). - Error (can be cast to Networking.NetworkError for more information). - - - - Returns size of reliable buffer. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Size of ack buffer. - - - - - The Unity Multiplayer spawning system uses assetIds to identify what remote objects to spawn. This function allows you to get the assetId for the Prefab associated with an object. - - Target GameObject to get assetId for. - - The assetId of the game object's Prefab. - - - - - After Networking.NetworkTransport.Receive() returns Networking.NetworkEventType.BroadcastEvent, this function will return the connection information of the broadcast sender. This information can then be used for connecting to the broadcast sender. - - ID of the broadcast receiver. - IPv4 address of broadcast sender. - Port of broadcast sender. - Error (can be cast to Networking.NetworkError for more information). - - - - After Networking.NetworkTransport.Receive() returns Networking.NetworkEventType.BroadcastEvent, this function returns a complimentary message from the broadcast sender. - - ID of broadcast receiver. - Message buffer provided by caller. - Buffer size. - Received size (if received size > bufferSize, corresponding error will be set). - Error (can be cast to Networking.NetworkError for more information). - - - - Returns the connection parameters for the specified connectionId. These parameters can be sent to other users to establish a direct connection to this peer. If this peer is connected to the host via Relay, the Relay-related parameters are set. - - Host ID associated with this connection. - ID of connection. - IP address. - Port. - Relay network guid. - Error (can be cast to Networking.NetworkError for more information). - Destination slot id. - - - - Returns the number of unread messages in the read-queue. - - - - - Returns the total number of messages still in the write-queue. - - - - - Return the round trip time for the given connectionId. - - Error (can be cast to Networking.NetworkError for more information). - Host ID associated with this connection. - ID of the connection. - - Current round trip time in ms. - - - - - Returns the port number assigned to the host. - - Host ID. - - The UDP port number, or -1 if an error occurred. - - - - - Returns the number of received messages waiting in the queue for processing. - - Host ID associated with this queue. - Error code. Cast this value to Networking.NetworkError for more information. - - The number of messages in the queue. - - - - - Returns how many packets have been received from start for connection. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - The absolute number of packets received since the connection was established. - - - - - Returns how many packets have been received from start. (from Networking.NetworkTransport.Init call). - - - Packets count received from start for all hosts. - - - - - How many packets have been dropped due lack space in incoming queue (absolute value, countinf from start). - - - Dropping packet count. - - - - - Returns how many incoming packets have been lost due transmitting (dropped by network). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - The absolute number of packets that have been lost since the connection was established. - - - - - Gets the currently-allowed network bandwidth in bytes per second. The value returned can vary because bandwidth can be throttled by flow control. If the bandwidth is throttled to zero, the connection is disconnected.ted. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Currently-allowed bandwidth in bytes per second. - - - - - Function returns time spent on network I/O operations in microseconds. - - - Time in micro seconds. - - - - - Return the total number of packets that has been lost. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Get a network timestamp. Can be used in your messages to investigate network delays together with Networking.GetRemoteDelayTimeMS. - - - Timestamp. - - - - - Returns how much raw data (in bytes) have been sent from start for all hosts (from Networking.NetworkTransport.Init call). - - - Total data (user payload, protocol specific data, ip and udp headers) (in bytes) sent from start for all hosts. - - - - - Returns how much raw data (in bytes) have been sent from start for connection (from call Networking.NetworkTransport.Connect for active connect or from connection request receiving for passive connect). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Total data (user payload, protocol specific data, ip and udp headers) (in bytes) sent from start for connection. - - - - - Returns how much raw data (in bytes) have been sent from start for the host (from call Networking.NetworkTransport.AddHost). - - ID of the host. - Error (can be cast to Networking.NetworkError for more information). - - Total data (user payload, protocol specific data, ip and udp headers) (in bytes) sent from start for the host. - - - - - Returns how many messages have been sent from start (from Networking.NetworkTransport.Init call). - - - Messages count sent from start (from call Networking.NetworkTransport.Init) for all hosts. - - - - - Returns how many packets have been sent from start for connection (from call Networking.NetworkTransport.Connect for active connect or from connection request receiving for passive connect). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Messages count sending from start for connection. - - - - - Returns how many messages have been sent from start for host (from call Networking.NetworkTransport.AddHost). - - ID of the host. - Error (can be cast to Networking.NetworkError for more information). - - Messages count sending from start for the host. - - - - - Returns the number of messages waiting in the outgoing message queue to be sent. - - Host ID associated with this queue. - Error code. Cast this value to Networking.NetworkError for more information. - - The number of messages waiting in the outgoing message queue to be sent. - - - - - Returns how many packets have been sent from start (from call Networking.NetworkTransport.Init) for all hosts. - - - Packets count sent from networking library start (from call Networking.NetworkTransport.Init) for all hosts. - - - - - Returns how many packets have been sent for connection from it start (from call Networking.NetworkTransport.Connect for active connect or from connection request receiving for passive connect). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Packets count sent for connection from it start. - - - - - Returns how many packets have been sent for host from it start (from call Networking.NetworkTransport.AddHost). - - ID of the host. - Error (can be cast to Networking.NetworkError for more information). - - Count packets have been sent from host start. - - - - - Returns the value in percent of the number of sent packets that were dropped by the network and not received by the peer. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - The number of packets dropped by the network in the last ping timeout period expressed as an integer percentage from 0 to 100. - - - - - Returns the value in percent of the number of sent packets that were dropped by the peer. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - The number of packets dropped by the peer in the last ping timeout period expressed as an integer percentage from 0 to 100. - - - - - Returns how much user payload and protocol system headers (in bytes) have been sent from start (from Networking.NetworkTransport.Init call). - - - Total payload and protocol system headers (in bytes) sent from start for all hosts. - - - - - Returns how much payload and protocol system headers (in bytes) have been sent from start for connection (from call Networking.NetworkTransport.Connect for active connect or from connection request receiving for passive connect). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Total user payload and protocol system headers (in bytes) sent from start for connection. - - - - - Returns how much payload and protocol system headers (in bytes) have been sent from start for the host (from call Networking.NetworkTransport.AddHost). - - ID of the host. - Error (can be cast to Networking.NetworkError for more information). - - Total user payload and protocol system headers (in bytes) sent from start for the host. - - - - - Returns how much payload (user) bytes have been sent from start (from Networking.NetworkTransport.Init call). - - - Total payload (in bytes) sent from start for all hosts. - - - - - Returns how much payload (user) bytes have been sent from start for connection (from call Networking.NetworkTransport.Connect for active connect or from connection request receiving for passive connect). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Total payload (in bytes) sent from start for connection. - - - - - Returns how much payload (user) bytes have been sent from start for the host (from call Networking.NetworkTransport.AddHost). - - ID of the host. - Error (can be cast to Networking.NetworkError for more information). - - Total payload (in bytes) sent from start for the host. - - - - - Return the current receive rate in bytes per second. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Return the current send rate in bytes per second. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Returns the delay for the timestamp received. - - Host ID associated with this connection. - ID of the connection. - Timestamp delivered from peer. - Error (can be cast to Networking.NetworkError for more information). - - - - Deprecated. Use Networking.NetworkTransport.GetNetworkLostPacketNum() instead. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Initializes the NetworkTransport. Should be called before any other operations on the NetworkTransport are done. - - - - - Check if the broadcast discovery sender is running. - - - True if it is running. False if it is not running. - - - - - Deprecated. - - - - - This method allows you to specify that notifications callbacks should be called when Unity's networking can send more messages than defined in notificationLevel. - - Host ID. - Connection ID. - Defines how many free slots in the incoming queue should be available before [GlobalConfig.ConnectionReadyForSend] callback is triggered. - Error code. - - Result, if false error will show error code. - - - - - Function is queueing but not sending messages. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - The channel ID to send on. - Buffer containing the data to send. - Size of the buffer. - - True if success. - - - - - Called to poll the underlying system for events. - - Host ID associated with the event. - The connectionID that received the event. - The channel ID associated with the event. - The buffer that will hold the data received. - Size of the buffer supplied. - The actual receive size of the data. - Error (can be cast to Networking.NetworkError for more information). - - Type of event returned. - - - - - Similar to Networking.NetworkTransport.Receive but will only poll for the provided hostId. - - The host ID to check for events. - The connection ID that received the event. - The channel ID associated with the event. - The buffer that will hold the data received. - Size of the buffer supplied. - The actual receive size of the data. - Error (can be cast to Networking.NetworkError for more information). - - Type of event returned. - - - - - Polls the host for the following events: Networking.NetworkEventType.ConnectEvent and Networking.NetworkEventType.DisconnectEvent. -Can only be called by the relay group owner. - - The host ID to check for events. - Error (can be cast to Networking.NetworkError for more information). - - Type of event returned. - - - - - Closes the opened socket, and closes all connections belonging to that socket. - - Host ID to remove. - - - - Send data to peer. - - Host ID associated with this connection. - ID of the connection. - The channel ID to send on. - Buffer containing the data to send. - Size of the buffer. - Error (can be cast to Networking.NetworkError for more information). - - - - Add a connection for the multicast send. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Sends messages, previously queued by NetworkTransport.QueueMessageForSending function. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - True if hostId and connectioId are valid. - - - - - Sets the credentials required for receiving broadcast messages. Should any credentials of a received broadcast message not match, the broadcast discovery message is dropped. - - Host ID associated with this broadcast. - Key part of the credentials associated with this broadcast. - Version part of the credentials associated with this broadcast. - Subversion part of the credentials associated with this broadcast. - Error (can be cast to Networking.NetworkError for more information). - - - - Used to inform the profiler of network packet statistics. - - The ID of the message being reported. - Number of messages being reported. - Number of bytes used by reported messages. - Whether the packet is outgoing (-1) or incoming (0). - - - - Shut down the NetworkTransport. - - - - - Starts sending a broadcasting message in all local subnets. - - Host ID which should be reported via broadcast (broadcast receivers will connect to this host). - Port used for the broadcast message. - Key part of the credentials associated with this broadcast. - Version part of the credentials associated with this broadcast. - Subversion part of the credentials associated with this broadcast. - Complimentary message. This message will delivered to the receiver with the broadcast event. - Size of message. - Specifies how often the broadcast message should be sent in milliseconds. - Error (can be cast to Networking.NetworkError for more information). - - Return true if broadcasting request has been submitted. - - - - - Start to multicast send. - - Host ID associated with this connection. - The channel ID. - Buffer containing the data to send. - Size of the buffer. - Error (can be cast to Networking.NetworkError for more information). - - - - Stop sending the broadcast discovery message. - - - - - Arguments passed to Action callbacks registered in PlayerConnection. - - - - - Data that is received. - - - - - The Player ID that the data is received from. - - - - - Used for handling the network connection from the Player to the Editor. - - - - - Singleton instance. - - - - - Returns true when Editor is connected to the player. - - - - - Blocks the calling thread until either a message with the specified messageId is received or the specified time-out elapses. - - The type ID of the message that is sent to the Editor. - The time-out specified in milliseconds. - - Returns true when the message is received and false if the call timed out. - - - - - This disconnects all of the active connections. - - - - - Registers a listener for a specific message ID, with an Action to be executed whenever that message is received by the Editor. -This ID must be the same as for messages sent from EditorConnection.Send(). - - The message ID that should cause the Action callback to be executed when received. - Action that is executed when a message with ID messageId is received by the Editor. -The callback includes the data that is sent from the Player, and the Player ID. -The Player ID is always 1, because only one Editor can be connected. - - - - Registers a callback that is invoked when the Editor connects to the Player. - - Action called when Player connects, with the Player ID of the Editor. - - - - Registers a callback to be called when Editor disconnects. - - The Action that is called when a Player disconnects. - - - - Sends data to the Editor. - - The type ID of the message that is sent to the Editor. - - - - - Deregisters a message listener. - - Message ID associated with the callback that you wish to deregister. - The associated callback function you wish to deregister. - - - - Enumeration of all supported quality of service channel modes. - - - - - A reliable message that will be re-sent with a high frequency until it is acknowledged. - - - - - Each message is guaranteed to be delivered but not guaranteed to be in order. - - - - - Each message is guaranteed to be delivered, also allowing fragmented messages with up to 32 fragments per message. - - - - - Each message is guaranteed to be delivered in order, also allowing fragmented messages with up to 32 fragments per message. - - - - - Each message is guaranteed to be delivered and in order. - - - - - A reliable message. Note: Only the last message in the send buffer is sent. Only the most recent message in the receive buffer will be delivered. - - - - - An unreliable message. Only the last message in the send buffer is sent. Only the most recent message in the receive buffer will be delivered. - - - - - There is no guarantee of delivery or ordering. - - - - - There is no guarantee of delivery or ordering, but allowing fragmented messages with up to 32 fragments per message. - - - - - There is garantee of ordering, no guarantee of delivery, but allowing fragmented messages with up to 32 fragments per message. - - - - - There is no guarantee of delivery and all unordered messages will be dropped. Example: VoIP. - - - - - Define how unet will handle network io operation. - - - - - Network thread will sleep up to threadawake timeout, after that it will try receive up to maxpoolsize amount of messages and then will try perform send operation for connection whihc ready to send. - - - - - Network thread will sleep up to threadawake timeout, or up to receive event on socket will happened. Awaked thread will try to read up to maxpoolsize packets from socket and will try update connections ready to send (with fixing awaketimeout rate). - - - - - The AppID identifies the application on the Unity Cloud or UNET servers. - - - - - Invalid AppID. - - - - - An Enum representing the priority of a client in a match, starting at 0 and increasing. - - - - - The Invalid case for a HostPriority. An Invalid host priority is not a valid host. - - - - - Describes the access levels granted to this client. - - - - - Administration access level, generally describing clearence to perform game altering actions against anyone inside a particular match. - - - - - Invalid access level, signifying no access level has been granted/specified. - - - - - Access level Owner, generally granting access for operations key to the peer host server performing it's work. - - - - - User access level. This means you can do operations which affect yourself only, like disconnect yourself from the match. - - - - - Access token used to authenticate a client session for the purposes of allowing or disallowing match operations requested by that client. - - - - - Binary field for the actual token. - - - - - Accessor to get an encoded string from the m_array data. - - - - - Checks if the token is a valid set of data with respect to default values (returns true if the values are not default, does not validate the token is a current legitimate token with respect to the server's auth framework). - - - - - Network ID, used for match making. - - - - - Invalid NetworkID. - - - - - The NodeID is the ID used in Relay matches to track nodes in a network. - - - - - The invalid case of a NodeID. - - - - - Identifies a specific game instance. - - - - - Invalid SourceID. - - - - - The UnityWebRequest object is used to communicate with web servers. - - - - - Holds a reference to a CertificateHandler object, which manages certificate validation for this UnityWebRequest. - - - - - Indicates whether the UnityWebRequest system should employ the HTTP/1.1 chunked-transfer encoding method. - - - - - If true, any CertificateHandler attached to this UnityWebRequest will have CertificateHandler.Dispose called automatically when UnityWebRequest.Dispose is called. - - - - - If true, any DownloadHandler attached to this UnityWebRequest will have DownloadHandler.Dispose called automatically when UnityWebRequest.Dispose is called. - - - - - If true, any UploadHandler attached to this UnityWebRequest will have UploadHandler.Dispose called automatically when UnityWebRequest.Dispose is called. - - - - - Returns the number of bytes of body data the system has downloaded from the remote server. (Read Only) - - - - - Holds a reference to a DownloadHandler object, which manages body data received from the remote server by this UnityWebRequest. - - - - - Returns a floating-point value between 0.0 and 1.0, indicating the progress of downloading body data from the server. (Read Only) - - - - - A human-readable string describing any system errors encountered by this UnityWebRequest object while handling HTTP requests or responses. (Read Only) - - - - - Returns true after the UnityWebRequest has finished communicating with the remote server. (Read Only) - - - - - Returns true after this UnityWebRequest receives an HTTP response code indicating an error. (Read Only) - - - - - Returns true while a UnityWebRequest’s configuration properties can be altered. (Read Only) - - - - - Returns true after this UnityWebRequest encounters a system error. (Read Only) - - - - - The string "CREATE", commonly used as the verb for an HTTP CREATE request. - - - - - The string "DELETE", commonly used as the verb for an HTTP DELETE request. - - - - - The string "GET", commonly used as the verb for an HTTP GET request. - - - - - The string "HEAD", commonly used as the verb for an HTTP HEAD request. - - - - - The string "POST", commonly used as the verb for an HTTP POST request. - - - - - The string "PUT", commonly used as the verb for an HTTP PUT request. - - - - - Defines the HTTP verb used by this UnityWebRequest, such as GET or POST. - - - - - Indicates the number of redirects which this UnityWebRequest will follow before halting with a “Redirect Limit Exceeded” system error. - - - - - The numeric HTTP response code returned by the server, such as 200, 404 or 500. (Read Only) - - - - - Sets UnityWebRequest to attempt to abort after the number of seconds in timeout have passed. - - - - - Returns the number of bytes of body data the system has uploaded to the remote server. (Read Only) - - - - - Holds a reference to the UploadHandler object which manages body data to be uploaded to the remote server. - - - - - Returns a floating-point value between 0.0 and 1.0, indicating the progress of uploading body data to the server. - - - - - Defines the target URI for the UnityWebRequest to communicate with. - - - - - Defines the target URL for the UnityWebRequest to communicate with. - - - - - Determines whether this UnityWebRequest will include Expect: 100-Continue in its outgoing request headers. (Default: true). - - - - - If in progress, halts the UnityWebRequest as soon as possible. - - - - - Clears stored cookies from the cache. - - An optional URL to define which cookies are removed. Only cookies that apply to this URL will be removed from the cache. - - - - Clears stored cookies from the cache. - - An optional URL to define which cookies are removed. Only cookies that apply to this URL will be removed from the cache. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest configured for HTTP DELETE. - - The URI to which a DELETE request should be sent. - - A UnityWebRequest configured to send an HTTP DELETE request. - - - - - Signals that this UnityWebRequest is no longer being used, and should clean up any resources it is using. - - - - - Escapes characters in a string to ensure they are URL-friendly. - - A string with characters to be escaped. - The text encoding to use. - - - - Escapes characters in a string to ensure they are URL-friendly. - - A string with characters to be escaped. - The text encoding to use. - - - - Generate a random 40-byte array for use as a multipart form boundary. - - - 40 random bytes, guaranteed to contain only printable ASCII values. - - - - - Create a UnityWebRequest for HTTP GET. - - The URI of the resource to retrieve via HTTP GET. - - An object that retrieves data from the uri. - - - - - Create a UnityWebRequest for HTTP GET. - - The URI of the resource to retrieve via HTTP GET. - - An object that retrieves data from the uri. - - - - - Deprecated. Replaced by UnityWebRequestAssetBundle.GetAssetBundle. - - - - - - - - - - Deprecated. Replaced by UnityWebRequestAssetBundle.GetAssetBundle. - - - - - - - - - - Deprecated. Replaced by UnityWebRequestAssetBundle.GetAssetBundle. - - - - - - - - - - Deprecated. Replaced by UnityWebRequestAssetBundle.GetAssetBundle. - - - - - - - - - - OBSOLETE. Use UnityWebRequestMultimedia.GetAudioClip(). - - - - - - - Retrieves the value of a custom request header. - - Name of the custom request header. Case-insensitive. - - The value of the custom request header. If no custom header with a matching name has been set, returns an empty string. - - - - - Retrieves the value of a response header from the latest HTTP response received. - - The name of the HTTP header to retrieve. Case-insensitive. - - The value of the HTTP header from the latest HTTP response. If no header with a matching name has been received, or no responses have been received, returns null. - - - - - Retrieves a dictionary containing all the response headers received by this UnityWebRequest in the latest HTTP response. - - - A dictionary containing all the response headers received in the latest HTTP response. If no responses have been received, returns null. - - - - - Creates a UnityWebRequest intended to download an image via HTTP GET and create a Texture based on the retrieved data. - - The URI of the image to download. - If true, the texture's raw data will not be accessible to script. This can conserve memory. Default: false. - - A UnityWebRequest properly configured to download an image and convert it to a Texture. - - - - - Creates a UnityWebRequest intended to download an image via HTTP GET and create a Texture based on the retrieved data. - - The URI of the image to download. - If true, the texture's raw data will not be accessible to script. This can conserve memory. Default: false. - - A UnityWebRequest properly configured to download an image and convert it to a Texture. - - - - - Creates a UnityWebRequest configured to send a HTTP HEAD request. - - The URI to which to send a HTTP HEAD request. - - A UnityWebRequest configured to transmit a HTTP HEAD request. - - - - - Creates a UnityWebRequest configured to send form data to a server via HTTP POST. - - The target URI to which form data will be transmitted. - Form body data. Will be URLEncoded prior to transmission. - - A UnityWebRequest configured to send form data to uri via POST. - - - - - Create a UnityWebRequest configured to send form data to a server via HTTP POST. - - The target URI to which form data will be transmitted. - Form fields or files encapsulated in a WWWForm object, for formatting and transmission to the remote server. - - A UnityWebRequest configured to send form data to uri via POST. - - - - - Create a UnityWebRequest configured to send form data to a server via HTTP POST. - - The target URI to which form data will be transmitted. - A list of form fields or files to be formatted and transmitted to the remote server. - A unique boundary string, which will be used when separating form fields in a multipart form. If not supplied, a boundary will be generated for you. - - A UnityWebRequest configured to send form data to uri via POST. - - - - - Create a UnityWebRequest configured to send form data to a server via HTTP POST. - - The target URI to which form data will be transmitted. - A list of form fields or files to be formatted and transmitted to the remote server. - A unique boundary string, which will be used when separating form fields in a multipart form. If not supplied, a boundary will be generated for you. - - A UnityWebRequest configured to send form data to uri via POST. - - - - - Create a UnityWebRequest configured to send form data to a server via HTTP POST. - - The target URI to which form data will be transmitted. - Strings indicating the keys and values of form fields. Will be automatically formatted into a URL-encoded form body. - - A UnityWebRequest configured to send form data to uri via POST. - - - - - Creates a UnityWebRequest configured to upload raw data to a remote server via HTTP PUT. - - The URI to which the data will be sent. - The data to transmit to the remote server. - -If a string, the string will be converted to raw bytes via <a href="http:msdn.microsoft.comen-uslibrarysystem.text.encoding.utf8">System.Text.Encoding.UTF8<a>. - - A UnityWebRequest configured to transmit bodyData to uri via HTTP PUT. - - - - - Creates a UnityWebRequest configured to upload raw data to a remote server via HTTP PUT. - - The URI to which the data will be sent. - The data to transmit to the remote server. - -If a string, the string will be converted to raw bytes via <a href="http:msdn.microsoft.comen-uslibrarysystem.text.encoding.utf8">System.Text.Encoding.UTF8<a>. - - A UnityWebRequest configured to transmit bodyData to uri via HTTP PUT. - - - - - Begin communicating with the remote server. - - - An AsyncOperation indicating the progress/completion state of the UnityWebRequest. Yield this object to wait until the UnityWebRequest is done. - - - - - Begin communicating with the remote server. - - - - - Converts a List of IMultipartFormSection objects into a byte array containing raw multipart form data. - - A List of IMultipartFormSection objects. - A unique boundary string to separate the form sections. - - A byte array of raw multipart form data. - - - - - Serialize a dictionary of strings into a byte array containing URL-encoded UTF8 characters. - - A dictionary containing the form keys and values to serialize. - - A byte array containing the serialized form. The form's keys and values have been URL-encoded. - - - - - Set a HTTP request header to a custom value. - - The key of the header to be set. Case-sensitive. - The header's intended value. - - - - Converts URL-friendly escape sequences back to normal text. - - A string containing escaped characters. - The text encoding to use. - - - - Converts URL-friendly escape sequences back to normal text. - - A string containing escaped characters. - The text encoding to use. - - - - Helpers for downloading asset bundles using UnityWebRequest. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Asynchronous operation object returned from UnityWebRequest.SendWebRequest(). - -You can yield until it continues, register an event handler with AsyncOperation.completed, or manually check whether it's done (AsyncOperation.isDone) or progress (AsyncOperation.progress). - - - - - Returns the associated UnityWebRequest that created the operation. - - - - - Helpers for downloading multimedia files using UnityWebRequest. - - - - - Create a UnityWebRequest to download an audio clip via HTTP GET and create an AudioClip based on the retrieved data. - - The URI of the audio clip to download. - The type of audio encoding for the downloaded audio clip. See AudioType. - - A UnityWebRequest properly configured to download an audio clip and convert it to an AudioClip. - - - - - Create a UnityWebRequest intended to download a movie clip via HTTP GET and create an MovieTexture based on the retrieved data. - - The URI of the movie clip to download. - - A UnityWebRequest properly configured to download a movie clip and convert it to a MovieTexture. - - - - - Helpers for downloading image files into Textures using UnityWebRequest. - - - - - Create a UnityWebRequest intended to download an image via HTTP GET and create a Texture based on the retrieved data. - - The URI of the image to download. - If true, the texture's raw data will not be accessible to script. This can conserve memory. Default: false. - - A UnityWebRequest properly configured to download an image and convert it to a Texture. - - - - - Create a UnityWebRequest intended to download an image via HTTP GET and create a Texture based on the retrieved data. - - The URI of the image to download. - If true, the texture's raw data will not be accessible to script. This can conserve memory. Default: false. - - A UnityWebRequest properly configured to download an image and convert it to a Texture. - - - - - Helper object for UnityWebRequests. Manages the buffering and transmission of body data during HTTP requests. - - - - - Determines the default Content-Type header which will be transmitted with the outbound HTTP request. - - - - - The raw data which will be transmitted to the remote server as body data. (Read Only) - - - - - Returns the proportion of data uploaded to the remote server compared to the total amount of data to upload. (Read Only) - - - - - Signals that this UploadHandler is no longer being used, and should clean up any resources it is using. - - - - - A specialized UploadHandler that reads data from a given file and sends raw bytes to the server as the request body. - - - - - Create a new upload handler to send data from the given file to the server. - - A file containing data to send. - - - - A general-purpose UploadHandler subclass, using a native-code memory buffer. - - - - - General constructor. Contents of the input argument are copied into a native buffer. - - Raw data to transmit to the remote server. - - - - Networking Utility. - - - - - This property is deprecated and does not need to be set or referenced. - - - - - Utility function to get this client's access token for a particular network, if it has been set. - - - - - - Utility function to fetch the program's ID for UNET Cloud interfacing. - - - - - Utility function to get the client's SourceID for unique identification. - - - - - Utility function that accepts the access token for a network after it's received from the server. - - - - - - - Deprecated; Setting the AppID is no longer necessary. Please log in through the editor and set up the project there. - - - - - - Describes different levels of log information the network layer supports. - - - - - This data structure contains information on a message just received from the network. - - - - - The NetworkView who sent this message. - - - - - The player who sent this network message (owner). - - - - - The time stamp when the Message was sent in seconds. - - - - - Describes the status of the network interface peer type as returned by Network.peerType. - - - - - The NetworkPlayer is a data structure with which you can locate another player over the network. - - - - - Returns the external IP address of the network interface. - - - - - Returns the external port of the network interface. - - - - - The GUID for this player, used when connecting with NAT punchthrough. - - - - - The IP address of this player. - - - - - The port of this player. - - - - - Describes network reachability options. - - - - - Network is not reachable. - - - - - Network is reachable via carrier data network. - - - - - Network is reachable via WiFi or cable. - - - - - Different types of synchronization for the NetworkView component. - - - - - The network view is the binding material of multiplayer games. - - - - - The network group number of this network view. - - - - - Is the network view controlled by this object? - - - - - The component the network view is observing. - - - - - The NetworkPlayer who owns this network view. - - - - - The type of NetworkStateSynchronization set for this network view. - - - - - The ViewID of this network view. - - - - - Call a RPC function on all connected peers. - - - - - - - - Call a RPC function on a specific player. - - - - - - - - The NetworkViewID is a unique identifier for a network view instance in a multiplayer game. - - - - - True if instantiated by me. - - - - - The NetworkPlayer who owns the NetworkView. Could be the server. - - - - - Represents an invalid network view ID. - - - - - NPOT Texture2D|textures support. - - - - - Full NPOT support. - - - - - NPOT textures are not supported. Will be upscaled/padded at loading time. - - - - - Limited NPOT support: no mip-maps and clamp TextureWrapMode|wrap mode will be forced. - - - - - Base class for all objects Unity can reference. - - - - - Should the object be hidden, saved with the Scene or modifiable by the user? - - - - - The name of the object. - - - - - Removes a gameobject, component or asset. - - The object to destroy. - The optional amount of time to delay before destroying the object. - - - - Removes a gameobject, component or asset. - - The object to destroy. - The optional amount of time to delay before destroying the object. - - - - Destroys the object obj immediately. You are strongly recommended to use Destroy instead. - - Object to be destroyed. - Set to true to allow assets to be destroyed. - - - - Destroys the object obj immediately. You are strongly recommended to use Destroy instead. - - Object to be destroyed. - Set to true to allow assets to be destroyed. - - - - Do not destroy the target Object when loading a new Scene. - - An Object not destroyed on Scene change. - - - - Returns the first active loaded object of Type type. - - The type of object to find. - - This returns the Object that matches the specified type. It returns null if no Object matches the type. - - - - - Returns a list of all active loaded objects of Type type. - - The type of object to find. - - The array of objects found matching the type specified. - - - - - Returns a list of all active and inactive loaded objects of Type type. - - The type of object to find. - - The array of objects found matching the type specified. - - - - - Returns a list of all active and inactive loaded objects of Type type, including assets. - - The type of object or asset to find. - - The array of objects and assets found matching the type specified. - - - - - Returns the instance id of the object. - - - - - Does the object exist? - - - - - - Clones the object original and returns the clone. - - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - Parent that will be assigned to the new object. - Pass true when assigning a parent Object to maintain the world position of the Object, instead of setting its position relative to the new parent. Pass false to set the Object's position relative to its new parent. - - The instantiated clone. - - - - - Clones the object original and returns the clone. - - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - Parent that will be assigned to the new object. - Pass true when assigning a parent Object to maintain the world position of the Object, instead of setting its position relative to the new parent. Pass false to set the Object's position relative to its new parent. - - The instantiated clone. - - - - - Clones the object original and returns the clone. - - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - Parent that will be assigned to the new object. - Pass true when assigning a parent Object to maintain the world position of the Object, instead of setting its position relative to the new parent. Pass false to set the Object's position relative to its new parent. - - The instantiated clone. - - - - - Clones the object original and returns the clone. - - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - Parent that will be assigned to the new object. - Pass true when assigning a parent Object to maintain the world position of the Object, instead of setting its position relative to the new parent. Pass false to set the Object's position relative to its new parent. - - The instantiated clone. - - - - - Clones the object original and returns the clone. - - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - Parent that will be assigned to the new object. - Pass true when assigning a parent Object to maintain the world position of the Object, instead of setting its position relative to the new parent. Pass false to set the Object's position relative to its new parent. - - The instantiated clone. - - - - - You can also use Generics to instantiate objects. See the page for more details. - - Object of type T that you want to make a clone of. - - - - - - Object of type T. - - - - - You can also use Generics to instantiate objects. See the page for more details. - - Object of type T that you want to make a clone of. - - - - - - Object of type T. - - - - - You can also use Generics to instantiate objects. See the page for more details. - - Object of type T that you want to make a clone of. - - - - - - Object of type T. - - - - - You can also use Generics to instantiate objects. See the page for more details. - - Object of type T that you want to make a clone of. - - - - - - Object of type T. - - - - - You can also use Generics to instantiate objects. See the page for more details. - - Object of type T that you want to make a clone of. - - - - - - Object of type T. - - - - - Compares two object references to see if they refer to the same object. - - The first Object. - The Object to compare against the first. - - - - Compares if two objects refer to a different object. - - - - - - - Returns the name of the GameObject. - - - The name returned by ToString. - - - - - OcclusionArea is an area in which occlusion culling is performed. - - - - - Center of the occlusion area relative to the transform. - - - - - Size that the occlusion area will have. - - - - - The portal for dynamically changing occlusion at runtime. - - - - - Gets / sets the portal's open state. - - - - - Enumeration for SystemInfo.operatingSystemFamily. - - - - - Linux operating system family. - - - - - macOS operating system family. - - - - - Returned for operating systems that do not fall into any other category. - - - - - Windows operating system family. - - - - - Information about a particle collision. - - - - - The Collider for the GameObject struck by the particles. - - - - - The Collider or Collider2D for the GameObject struck by the particles. - - - - - Intersection point of the collision in world coordinates. - - - - - Geometry normal at the intersection point of the collision. - - - - - Incident velocity at the intersection point of the collision. - - - - - Method extension for Physics in Particle System. - - - - - Get the particle collision events for a GameObject. Returns the number of events written to the array. - - The GameObject for which to retrieve collision events. - Array to write collision events to. - - - - - Safe array size for use with ParticleSystem.GetCollisionEvents. - - - - - - Safe array size for use with ParticleSystem.GetTriggerParticles. - - Particle system. - Type of trigger to return size for. - - Number of particles with this trigger event type. - - - - - Get the particles that met the condition in the particle trigger module. Returns the number of particles written to the array. - - Particle system. - Type of trigger to return particles for. - The array of particles matching the trigger event type. - - Number of particles with this trigger event type. - - - - - Write modified particles back to the Particle System, during a call to OnParticleTrigger. - - Particle system. - Type of trigger to set particles for. - Particle array. - Offset into the array, if you only want to write back a subset of the returned particles. - Number of particles to write, if you only want to write back a subset of the returned particles. - - - - Write modified particles back to the Particle System, during a call to OnParticleTrigger. - - Particle system. - Type of trigger to set particles for. - Particle array. - Offset into the array, if you only want to write back a subset of the returned particles. - Number of particles to write, if you only want to write back a subset of the returned particles. - - - - Script interface for Particle Systems. - - - - - Does this system support Automatic Culling? - - - - - Script interface for the Particle System collision module. - - - - - Script interface for the Particle System color by lifetime module. - - - - - Script interface for the Particle System color over lifetime module. - - - - - Script interface for the Particle System Custom Data module. - - - - - The duration of the Particle System in seconds (Read Only). - - - - - Script interface for the Particle System emission module. - - - - - The rate of particle emission. - - - - - When set to false, the Particle System will not emit particles. - - - - - Script interface for the Particle System external forces module. - - - - - Script interface for the Particle System force over lifetime module. - - - - - Scale being applied to the gravity defined by Physics.gravity. - - - - - Script interface for the Particle System velocity inheritance module. - - - - - Determines whether the Particle System is emitting particles. A Particle System may stop emitting when its emission module has finished, it has been paused or if the system has been stopped using ParticleSystem.Stop|Stop with the ParticleSystemStopBehavior.StopEmitting|StopEmitting flag. Resume emitting by calling ParticleSystem.Play|Play. - - - - - Determines whether the Particle System is paused. - - - - - Determines whether the Particle System is playing. - - - - - Determines whether the Particle System is stopped. - - - - - Script interface for the Particle System Lights module. - - - - - Script interface for the Particle System Limit Velocity over Lifetime module. - - - - - Determines whether the Particle System is looping. - - - - - Access the main Particle System settings. - - - - - The maximum number of particles to emit. - - - - - Script interface for the Particle System Noise module. - - - - - The current number of particles (Read Only). - - - - - The playback speed of the Particle System. 1 is normal playback speed. - - - - - If set to true, the Particle System will automatically start playing on startup. - - - - - Does this system support Procedural Simulation? - - - - - Override the random seed used for the Particle System emission. - - - - - Script interface for the Particle System Rotation by Speed module. - - - - - Script interface for the Particle System Rotation over Lifetime module. - - - - - The scaling mode applied to particle sizes and positions. - - - - - Script interface for the Particle System Shape module. - - - - - This selects the space in which to simulate particles. It can be either world or local space. - - - - - Script interface for the Particle System Size by Speed module. - - - - - Script interface for the Particle System Size over Lifetime module. - - - - - The initial color of particles when emitted. - - - - - Start delay in seconds. - - - - - The total lifetime in seconds that particles will have when emitted. When using curves, this value acts as a scale on the curve. This value is set in the particle when it is created by the Particle System. - - - - - The initial rotation of particles when emitted. When using curves, this value acts as a scale on the curve. - - - - - The initial 3D rotation of particles when emitted. When using curves, this value acts as a scale on the curves. - - - - - The initial size of particles when emitted. When using curves, this value acts as a scale on the curve. - - - - - The initial speed of particles when emitted. When using curves, this value acts as a scale on the curve. - - - - - Script interface for the Particle System Sub Emitters module. - - - - - Script interface for the Particle System Texture Sheet Animation module. - - - - - Playback position in seconds. - - - - - Script interface for the Particle System Trails module. - - - - - Script interface for the Particle System Trigger module. - - - - - Controls whether the Particle System uses an automatically-generated random number to seed the random number generator. - - - - - Script interface for the Particle System Velocity over Lifetime module. - - - - - Script interface for a Burst. - - - - - Number of particles to be emitted. - - - - - How many times to play the burst. (0 means infinitely). - - - - - Maximum number of particles to be emitted. - - - - - Minimum number of particles to be emitted. - - - - - The chance that the burst will trigger. - - - - - How often to repeat the burst, in seconds. - - - - - The time that each burst occurs. - - - - - Construct a new Burst with a time and count. - - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - Number of particles to emit. - Number of times to play the burst. (0 means indefinitely). - How often to repeat the burst, in seconds. - - - - Construct a new Burst with a time and count. - - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - Number of particles to emit. - Number of times to play the burst. (0 means indefinitely). - How often to repeat the burst, in seconds. - - - - Construct a new Burst with a time and count. - - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - Number of particles to emit. - Number of times to play the burst. (0 means indefinitely). - How often to repeat the burst, in seconds. - - - - Construct a new Burst with a time and count. - - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - Number of particles to emit. - Number of times to play the burst. (0 means indefinitely). - How often to repeat the burst, in seconds. - - - - Construct a new Burst with a time and count. - - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - Number of particles to emit. - Number of times to play the burst. (0 means indefinitely). - How often to repeat the burst, in seconds. - - - - Remove all particles in the Particle System. - - Clear all child Particle Systems as well. - - - - Script interface for the Collision module. - - - - - How much force is applied to each particle after a collision. - - - - - Change the bounce multiplier. - - - - - How much force is applied to a Collider when hit by particles from this Particle System. - - - - - Control which layers this Particle System collides with. - - - - - How much speed is lost from each particle after a collision. - - - - - Change the dampen multiplier. - - - - - Enable/disable the Collision module. - - - - - Allow particles to collide with dynamic colliders when using world collision mode. - - - - - Allow particles to collide when inside colliders. - - - - - How much a particle's lifetime is reduced after a collision. - - - - - Change the lifetime loss multiplier. - - - - - The maximum number of collision shapes that will be considered for particle collisions. Excess shapes will be ignored. Terrains take priority. - - - - - Kill particles whose speed goes above this threshold, after a collision. - - - - - The maximum number of planes it is possible to set as colliders. - - - - - Kill particles whose speed falls below this threshold, after a collision. - - - - - Choose between 2D and 3D world collisions. - - - - - If true, the collision angle is considered when applying forces from particles to Colliders. - - - - - If true, particle sizes are considered when applying forces to Colliders. - - - - - If true, particle speeds are considered when applying forces to Colliders. - - - - - Specifies the accuracy of particle collisions against colliders in the Scene. - - - - - A multiplier applied to the size of each particle before collisions are processed. - - - - - Send collision callback messages. - - - - - The type of particle collision to perform. - - - - - Size of voxels in the collision cache. - - - - - Get a collision plane associated with this Particle System. - - Specifies which plane to access. - - The plane. - - - - - Set a collision plane to be used with this Particle System. - - Specifies which plane to set. - The plane to set. - - - - Script interface for the Color By Speed module. - - - - - The gradient controlling the particle colors. - - - - - Enable/disable the Color By Speed module. - - - - - Apply the color gradient between these minimum and maximum speeds. - - - - - Script interface for the Color Over Lifetime module. - - - - - The gradient controlling the particle colors. - - - - - Enable/disable the Color Over Lifetime module. - - - - - Script interface for the Custom Data module. - - - - - Enable/disable the Custom Data module. - - - - - Get a ParticleSystem.MinMaxGradient, that is being used to generate custom HDR color data. - - The name of the custom data stream to retrieve the gradient from. - - The color gradient being used to generate custom color data. - - - - - Find out the type of custom data that is being generated for the chosen data stream. - - The name of the custom data stream to query. - - The type of data being generated for the requested stream. - - - - - Get a ParticleSystem.MinMaxCurve, that is being used to generate custom data. - - The name of the custom data stream to retrieve the curve from. - The component index to retrieve the curve for (0-3, mapping to the xyzw components of a Vector4 or float4). - - The curve being used to generate custom data. - - - - - Query how many ParticleSystem.MinMaxCurve elements are being used to generate this stream of custom data. - - The name of the custom data stream to retrieve the curve from. - - The number of curves. - - - - - Set a ParticleSystem.MinMaxGradient, in order to generate custom HDR color data. - - The name of the custom data stream to apply the gradient to. - The gradient to be used for generating custom color data. - - - - Choose the type of custom data to generate for the chosen data stream. - - The name of the custom data stream to enable data generation on. - The type of data to generate. - - - - Set a ParticleSystem.MinMaxCurve, in order to generate custom data. - - The name of the custom data stream to apply the curve to. - The component index to apply the curve to (0-3, mapping to the xyzw components of a Vector4 or float4). - The curve to be used for generating custom data. - - - - Specify how many curves are used to generate custom data for this stream. - - The name of the custom data stream to apply the curve to. - The number of curves to generate data for. - - - - - Script interface for the Emission module. - - - - - The current number of bursts. - - - - - Enable/disable the Emission module. - - - - - The rate at which new particles are spawned. - - - - - Change the rate multiplier. - - - - - The rate at which new particles are spawned, over distance. - - - - - Change the rate over distance multiplier. - - - - - The rate at which new particles are spawned, over time. - - - - - Change the rate over time multiplier. - - - - - The emission type. - - - - - Get a single burst from the array of bursts. - - The index of the burst to retrieve. - - The burst data at the given index. - - - - - Get the burst array. - - Array of bursts to be filled in. - - The number of bursts in the array. - - - - - Set a single burst in the array of bursts. - - The index of the burst to retrieve. - The new burst data to apply to the Particle System. - - - - Set the burst array. - - Array of bursts. - Optional array size, if burst count is less than array size. - - - - Set the burst array. - - Array of bursts. - Optional array size, if burst count is less than array size. - - - - Emit count particles immediately. - - Number of particles to emit. - - - - Emit a number of particles from script. - - Overidden particle properties. - Number of particles to emit. - - - - - - - - - - - - - - - - - - - - Script interface for Particle System emission parameters. - - - - - Override the angular velocity of emitted particles. - - - - - Override the 3D angular velocity of emitted particles. - - - - - When overriding the position of particles, setting this flag to true allows you to retain the influence of the shape module. - - - - - Override the axis of rotation of emitted particles. - - - - - Override the position of emitted particles. - - - - - Override the random seed of emitted particles. - - - - - Override the rotation of emitted particles. - - - - - Override the 3D rotation of emitted particles. - - - - - Override the initial color of emitted particles. - - - - - Override the lifetime of emitted particles. - - - - - Override the initial size of emitted particles. - - - - - Override the initial 3D size of emitted particles. - - - - - Override the velocity of emitted particles. - - - - - Reverts angularVelocity and angularVelocity3D back to the values specified in the inspector. - - - - - Revert the axis of rotation back to the value specified in the inspector. - - - - - Revert the position back to the value specified in the inspector. - - - - - Revert the random seed back to the value specified in the inspector. - - - - - Reverts rotation and rotation3D back to the values specified in the inspector. - - - - - Revert the initial color back to the value specified in the inspector. - - - - - Revert the lifetime back to the value specified in the inspector. - - - - - Revert the initial size back to the value specified in the inspector. - - - - - Revert the velocity back to the value specified in the inspector. - - - - - Script interface for the External Forces module. - - - - - Enable/disable the External Forces module. - - - - - The number of Force Fields explicitly provided to the influencers list. - - - - - Apply all Force Fields belonging to a matching layer to this Particle System. - - - - - Multiplies the magnitude of applied external forces. - - - - - Adds a ParticleSystemForceField to the influencers list. - - The Force Field to add to the influencers list. - - - - Returns the ParticleSystemForceField at the given index in the influencers list. - - The index to return the chosen Force Field from. - - The ForceField from the list. - - - - - Determines whether any particles are inside the influence of a Force Field. - - The Force Field to test. - - Whether the Force Field affects the Particle System. - - - - - Removes the Force Field from the influencers list at the given index. - - The index to remove the chosen Force Field from. - The Force Field to remove from the list. - - - - Removes the Force Field from the influencers list at the given index. - - The index to remove the chosen Force Field from. - The Force Field to remove from the list. - - - - Assigns the Force Field at the given index in the influencers list. - - Index to assign the Force Field. - Force Field that will be assigned. - - - - Script interface for the Force Over Lifetime module. - - - - - Enable/disable the Force Over Lifetime module. - - - - - When randomly selecting values between two curves or constants, this flag will cause a new random force to be chosen on each frame. - - - - - Are the forces being applied in local or world space? - - - - - The curve defining particle forces in the X axis. - - - - - Change the X axis mulutiplier. - - - - - The curve defining particle forces in the Y axis. - - - - - Change the Y axis multiplier. - - - - - The curve defining particle forces in the Z axis. - - - - - Change the Z axis multiplier. - - - - - Get a stream of custom per-particle data. - - The array of per-particle data. - Which stream to retrieve the data from. - - The amount of valid per-particle data. - - - - - Gets the particles of this Particle System. - - Output particle buffer, containing the current particle state. - The number of elements that are read from the Particle System. - The offset into the active particle list, from which to copy the particles. - - The number of particles written to the input particle array (the number of particles currently alive). - - - - - Gets the particles of this Particle System. - - Output particle buffer, containing the current particle state. - The number of elements that are read from the Particle System. - The offset into the active particle list, from which to copy the particles. - - The number of particles written to the input particle array (the number of particles currently alive). - - - - - Gets the particles of this Particle System. - - Output particle buffer, containing the current particle state. - The number of elements that are read from the Particle System. - The offset into the active particle list, from which to copy the particles. - - The number of particles written to the input particle array (the number of particles currently alive). - - - - - The Inherit Velocity Module controls how the velocity of the emitter is transferred to the particles as they are emitted. - - - - - Curve to define how much emitter velocity is applied during the lifetime of a particle. - - - - - Change the curve multiplier. - - - - - Enable/disable the InheritVelocity module. - - - - - How to apply emitter velocity to particles. - - - - - Does the Particle System contain any live particles, or will it produce more? - - Check all child Particle Systems as well. - - True if the Particle System contains live particles or is still creating new particles. False if the Particle System has stopped emitting particles and all particles are dead. - - - - - Does the Particle System contain any live particles, or will it produce more? - - Check all child Particle Systems as well. - - True if the Particle System contains live particles or is still creating new particles. False if the Particle System has stopped emitting particles and all particles are dead. - - - - - Access the ParticleSystem Lights Module. - - - - - Toggle whether the particle alpha gets multiplied by the light intensity, when computing the final light intensity. - - - - - Enable/disable the Lights module. - - - - - Define a curve to apply custom intensity scaling to particle lights. - - - - - Intensity multiplier. - - - - - Select what Light Prefab you want to base your particle lights on. - - - - - Set a limit on how many lights this Module can create. - - - - - Define a curve to apply custom range scaling to particle lights. - - - - - Range multiplier. - - - - - Choose what proportion of particles will receive a dynamic light. - - - - - Toggle where the particle size will be multiplied by the light range, to determine the final light range. - - - - - Toggle whether the particle lights will have their color multiplied by the particle color. - - - - - Randomly assign lights to new particles based on ParticleSystem.LightsModule.ratio. - - - - - Script interface for the Limit Velocity Over Lifetime module. - - - - - Controls how much the velocity that exceeds the velocity limit should be dampened. - - - - - Controls the amount of drag applied to the particle velocities. - - - - - Change the drag multiplier. - - - - - Enable/disable the Limit Force Over Lifetime module. - - - - - Maximum velocity curve, when not using one curve per axis. - - - - - Change the limit multiplier. - - - - - Maximum velocity curve for the X axis. - - - - - Change the limit multiplier on the X axis. - - - - - Maximum velocity curve for the Y axis. - - - - - Change the limit multiplier on the Y axis. - - - - - Maximum velocity curve for the Z axis. - - - - - Change the limit multiplier on the Z axis. - - - - - Adjust the amount of drag applied to particles, based on their sizes. - - - - - Adjust the amount of drag applied to particles, based on their speeds. - - - - - Set the velocity limit on each axis separately. - - - - - Specifies if the velocity limits are in local space (rotated with the transform) or world space. - - - - - Script interface for the main module. - - - - - Configure whether the Particle System will still be simulated each frame, when it is offscreen. - - - - - Simulate particles relative to a custom transform component. - - - - - The duration of the Particle System in seconds. - - - - - Control how the Particle System calculates its velocity, when moving in the world. - - - - - Makes some particles spin in the opposite direction. - - - - - Scale applied to the gravity, defined by Physics.gravity. - - - - - Change the gravity multiplier. - - - - - Is the Particle System looping? - - - - - The maximum number of particles to emit. - - - - - If set to true, the Particle System will automatically start playing on startup. - - - - - When looping is enabled, this controls whether this Particle System will look like it has already simulated for one loop when first becoming visible. - - - - - Cause some particles to spin in the opposite direction. - - - - - When ParticleSystem.MainModule.ringBufferMode is set to loop, this value defines the proportion of the particle life that is looped. - - - - - Configure the Particle System to not kill its particles when their lifetimes are exceeded. - - - - - Control how the Particle System's Transform Component is applied to the Particle System. - - - - - This selects the space in which to simulate particles. It can be either world or local space. - - - - - Override the default playback speed of the Particle System. - - - - - The initial color of particles when emitted. - - - - - Start delay in seconds. - - - - - Start delay multiplier in seconds. - - - - - The total lifetime in seconds that each new particle will have. - - - - - Start lifetime multiplier. - - - - - The initial rotation of particles when emitted. - - - - - A flag to enable 3D particle rotation. - - - - - The initial rotation multiplier of particles when emitted. - - - - - The initial rotation of particles around the X axis when emitted. - - - - - The initial rotation multiplier of particles around the X axis when emitted. - - - - - The initial rotation of particles around the Y axis when emitted. - - - - - The initial rotation multiplier of particles around the Y axis when emitted. - - - - - The initial rotation of particles around the Z axis when emitted. - - - - - The initial rotation multiplier of particles around the Z axis when emitted. - - - - - The initial size of particles when emitted. - - - - - A flag to enable specifying particle size individually for each axis. - - - - - A multiplier of the initial size of particles when emitted. - - - - - The initial size of particles along the X axis when emitted. - - - - - The initial size multiplier of particles along the X axis when emitted. - - - - - The initial size of particles along the Y axis when emitted. - - - - - The initial size multiplier of particles along the Y axis when emitted. - - - - - The initial size of particles along the Z axis when emitted. - - - - - The initial size multiplier of particles along the Z axis when emitted. - - - - - The initial speed of particles when emitted. - - - - - A multiplier of the initial speed of particles when emitted. - - - - - Select whether to Disable or Destroy the GameObject, or to call the OnParticleSystemStopped script Callback, when the Particle System is stopped and all particles have died. - - - - - When true, use the unscaled delta time to simulate the Particle System. Otherwise, use the scaled delta time. - - - - - Script interface for a Min-Max Curve. - - - - - Set the constant value. - - - - - Set a constant for the upper bound. - - - - - Set a constant for the lower bound. - - - - - Set the curve. - - - - - Set a curve for the upper bound. - - - - - Set a curve for the lower bound. - - - - - Set a multiplier to be applied to the curves. - - - - - Set the mode that the min-max curve will use to evaluate values. - - - - - A single constant value for the entire curve. - - Constant value. - - - - Use one curve when evaluating numbers along this Min-Max curve. - - A multiplier to be applied to the curve. - A single curve for evaluating against. - - - - - Randomly select values based on the interval between the minimum and maximum curves. - - A multiplier to be applied to the curves. - The curve describing the minimum values to be evaluated. - The curve describing the maximum values to be evaluated. - - - - - Randomly select values based on the interval between the minimum and maximum constants. - - The constant describing the minimum values to be evaluated. - The constant describing the maximum values to be evaluated. - - - - Manually query the curve to calculate values based on what mode it is in. - - Normalized time (in the range 0 - 1, where 1 represents 100%) at which to evaluate the curve. This is valid when ParticleSystem.MinMaxCurve.mode is set to ParticleSystemCurveMode.Curve or ParticleSystemCurveMode.TwoCurves. - Blend between the 2 curves/constants (Valid when ParticleSystem.MinMaxCurve.mode is set to ParticleSystemCurveMode.TwoConstants or ParticleSystemCurveMode.TwoCurves). - - Calculated curve/constant value. - - - - - Manually query the curve to calculate values based on what mode it is in. - - Normalized time (in the range 0 - 1, where 1 represents 100%) at which to evaluate the curve. This is valid when ParticleSystem.MinMaxCurve.mode is set to ParticleSystemCurveMode.Curve or ParticleSystemCurveMode.TwoCurves. - Blend between the 2 curves/constants (Valid when ParticleSystem.MinMaxCurve.mode is set to ParticleSystemCurveMode.TwoConstants or ParticleSystemCurveMode.TwoCurves). - - Calculated curve/constant value. - - - - - MinMaxGradient contains two Gradients, and returns a Color based on ParticleSystem.MinMaxGradient.mode. Depending on the mode, the Color returned may be randomized. -Gradients are edited via the ParticleSystem Inspector once a ParticleSystemGradientMode requiring them has been selected. Some modes do not require gradients, only colors. - - - - - Set a constant color. - - - - - Set a constant color for the upper bound. - - - - - Set a constant color for the lower bound. - - - - - Set the gradient. - - - - - Set a gradient for the upper bound. - - - - - Set a gradient for the lower bound. - - - - - Set the mode that the min-max gradient will use to evaluate colors. - - - - - A single constant color for the entire gradient. - - Constant color. - - - - Use one gradient when evaluating numbers along this Min-Max gradient. - - A single gradient for evaluating against. - - - - Randomly select colors based on the interval between the minimum and maximum constants. - - The constant color describing the minimum colors to be evaluated. - The constant color describing the maximum colors to be evaluated. - - - - Randomly select colors based on the interval between the minimum and maximum gradients. - - The gradient describing the minimum colors to be evaluated. - The gradient describing the maximum colors to be evaluated. - - - - Manually query the gradient to calculate colors based on what mode it is in. - - Normalized time (in the range 0 - 1, where 1 represents 100%) at which to evaluate the gradient. This is valid when ParticleSystem.MinMaxGradient.mode is set to ParticleSystemGradientMode.Gradient or ParticleSystemGradientMode.TwoGradients. - Blend between the 2 gradients/colors (Valid when ParticleSystem.MinMaxGradient.mode is set to ParticleSystemGradientMode.TwoColors or ParticleSystemGradientMode.TwoGradients). - - Calculated gradient/color value. - - - - - Manually query the gradient to calculate colors based on what mode it is in. - - Normalized time (in the range 0 - 1, where 1 represents 100%) at which to evaluate the gradient. This is valid when ParticleSystem.MinMaxGradient.mode is set to ParticleSystemGradientMode.Gradient or ParticleSystemGradientMode.TwoGradients. - Blend between the 2 gradients/colors (Valid when ParticleSystem.MinMaxGradient.mode is set to ParticleSystemGradientMode.TwoColors or ParticleSystemGradientMode.TwoGradients). - - Calculated gradient/color value. - - - - - Script interface for the Noise Module. - -The Noise Module allows you to apply turbulence to the movement of your particles. Use the low quality settings to create computationally efficient Noise, or simulate smoother, richer Noise with the higher quality settings. You can also choose to define the behavior of the Noise individually for each axis. - - - - - Higher frequency noise will reduce the strength by a proportional amount, if enabled. - - - - - Enable/disable the Noise module. - - - - - Low values create soft, smooth noise, and high values create rapidly changing noise. - - - - - Layers of noise that combine to produce final noise. - - - - - When combining each octave, scale the intensity by this amount. - - - - - When combining each octave, zoom in by this amount. - - - - - How much the noise affects the particle positions. - - - - - Generate 1D, 2D or 3D noise. - - - - - Define how the noise values are remapped. - - - - - Enable remapping of the final noise values, allowing for noise values to be translated into different values. - - - - - Remap multiplier. - - - - - Define how the noise values are remapped on the X axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - X axis remap multiplier. - - - - - Define how the noise values are remapped on the Y axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - Y axis remap multiplier. - - - - - Define how the noise values are remapped on the Z axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - Z axis remap multiplier. - - - - - How much the noise affects the particle rotation, in degrees per second. - - - - - Scroll the noise map over the Particle System. - - - - - Scroll speed multiplier. - - - - - Control the noise separately for each axis. - - - - - How much the noise affects the particle sizes, applied as a multiplier on the size of each particle. - - - - - How strong the overall noise effect is. - - - - - Strength multiplier. - - - - - Define the strength of the effect on the X axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - X axis strength multiplier. - - - - - Define the strength of the effect on the Y axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - Y axis strength multiplier. - - - - - Define the strength of the effect on the Z axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - Z axis strength multiplier. - - - - - Script interface for a Particle. - - - - - The angular velocity of the particle. - - - - - The 3D angular velocity of the particle. - - - - - The animated velocity of the particle. - - - - - Mesh particles will rotate around this axis. - - - - - The lifetime of the particle. - - - - - The position of the particle. - - - - - The random seed of the particle. - - - - - The random value of the particle. - - - - - The remaining lifetime of the particle. - - - - - The rotation of the particle. - - - - - The 3D rotation of the particle. - - - - - The initial color of the particle. The current color of the particle is calculated procedurally based on this value and the active color modules. - - - - - The starting lifetime of the particle. - - - - - The initial size of the particle. The current size of the particle is calculated procedurally based on this value and the active size modules. - - - - - The initial 3D size of the particle. The current size of the particle is calculated procedurally based on this value and the active size modules. - - - - - The total velocity of the particle. - - - - - The velocity of the particle. - - - - - Calculate the current color of the particle by applying the relevant curves to its startColor property. - - The Particle System from which this particle was emitted. - - Current color. - - - - - Calculate the current size of the particle by applying the relevant curves to its startSize property. - - The Particle System from which this particle was emitted. - - Current size. - - - - - Calculate the current 3D size of the particle by applying the relevant curves to its startSize3D property. - - The Particle System from which this particle was emitted. - - Current size. - - - - - Pauses the system so no new particles are emitted and the existing particles are not updated. - - Pause all child Particle Systems as well. - - - - Pauses the system so no new particles are emitted and the existing particles are not updated. - - Pause all child Particle Systems as well. - - - - Starts the Particle System. - - Play all child Particle Systems as well. - - - - Starts the Particle System. - - Play all child Particle Systems as well. - - - - Reset the cache of reserved graphics memory used for efficient rendering of Particle Systems. - - - - - Script interface for the Rotation By Speed module. - - - - - Enable/disable the Rotation By Speed module. - - - - - Apply the rotation curve between these minimum and maximum speeds. - - - - - Set the rotation by speed on each axis separately. - - - - - Rotation by speed curve for the X axis. - - - - - Speed multiplier along the X axis. - - - - - Rotation by speed curve for the Y axis. - - - - - Speed multiplier along the Y axis. - - - - - Rotation by speed curve for the Z axis. - - - - - Speed multiplier along the Z axis. - - - - - Script interface for the Rotation Over Lifetime module. - - - - - Enable/disable the Rotation Over Lifetime module. - - - - - Set the rotation over lifetime on each axis separately. - - - - - Rotation over lifetime curve for the X axis. - - - - - Rotation multiplier around the X axis. - - - - - Rotation over lifetime curve for the Y axis. - - - - - Rotation multiplier around the Y axis. - - - - - Rotation over lifetime curve for the Z axis. - - - - - Rotation multiplier around the Z axis. - - - - - Set a stream of custom per-particle data. - - The array of per-particle data. - Which stream to assign the data to. - - - - Sets the particles of this Particle System. - - Input particle buffer, containing the desired particle state. - The number of elements in the particles array that is written to the Particle System. - The offset into the destination particle list, to assign these particles. - - - - Sets the particles of this Particle System. - - Input particle buffer, containing the desired particle state. - The number of elements in the particles array that is written to the Particle System. - The offset into the destination particle list, to assign these particles. - - - - Sets the particles of this Particle System. - - Input particle buffer, containing the desired particle state. - The number of elements in the particles array that is written to the Particle System. - The offset into the destination particle list, to assign these particles. - - - - Script interface for the Shape module. - - - - - Align particles based on their initial direction of travel. - - - - - Angle of the cone to emit particles from. - - - - - Angle of the circle arc to emit particles from. - - - - - The mode used for generating particles around the arc. - - - - - In animated modes, this determines how quickly the particle emission position moves around the arc. - - - - - A multiplier of the arc speed of the particle emission shape. - - - - - Control the gap between particle emission points around the arc. - - - - - Scale of the box to emit particles from. - - - - - Thickness of the box to emit particles from. - - - - - The radius of the Donut shape to emit particles from. - - - - - Enable/disable the Shape module. - - - - - Length of the cone to emit particles from. - - - - - Mesh to emit particles from. - - - - - Emit particles from a single material of a mesh. - - - - - MeshRenderer to emit particles from. - - - - - Apply a scaling factor to the mesh that particles are emitted from. - - - - - Where on the mesh to emit particles from. - - - - - The mode used for generating particles on a mesh. - - - - - In animated modes, this determines how quickly the particle emission position moves across the mesh. - - - - - A multiplier of the mesh spawn speed. - - - - - Control the gap between particle emission points across the mesh. - - - - - Move particles away from the surface of the source mesh. - - - - - Apply an offset to the position from which particles are emitted. - - - - - Radius of the shape to emit particles from. - - - - - The mode used for generating particles along the radius. - - - - - In animated modes, this determines how quickly the particle emission position moves along the radius. - - - - - A multiplier of the radius speed of the particle emission shape. - - - - - Control the gap between particle emission points along the radius. - - - - - Radius thickness of the shape's edge from which to emit particles. - - - - - Randomizes the starting direction of particles. - - - - - Randomizes the starting direction of particles. - - - - - Randomizes the starting position of particles. - - - - - Apply a rotation to the shape from which particles are emitted. - - - - - Apply scale to the shape from which particles are emitted. - - - - - Type of shape to emit particles from. - - - - - SkinnedMeshRenderer to emit particles from. - - - - - Makes particles move in a spherical direction from their starting point. - - - - - Sprite to emit particles from. - - - - - SpriteRenderer to emit particles from. - - - - - Selects a texture to be used for tinting particle start colors. - - - - - When enabled, the alpha channel of the texture is applied to the particle alpha when spawned. - - - - - When enabled, 4 neighboring samples are taken from the texture, and combined to give the final particle value. - - - - - Selects which channel of the texture is used for discarding particles. - - - - - Discards particles when they are spawned on an area of the texture with a value lower than this threshold. - - - - - When enabled, the RGB channels of the texture are applied to the particle color when spawned. - - - - - When using a Mesh as a source shape type, this option controls which UV channel on the Mesh is used for reading the source texture. - - - - - Modulate the particle colors with the vertex colors, or the material color if no vertex colors exist. - - - - - Emit particles from a single material, or the whole mesh. - - - - - Fast-forwards the Particle System by simulating particles over the given period of time, then pauses it. - - Time period in seconds to advance the ParticleSystem simulation by. If restart is true, the ParticleSystem will be reset to 0 time, and then advanced by this value. If restart is false, the ParticleSystem simulation will be advanced in time from its current state by this value. - Fast-forward all child Particle Systems as well. - Restart and start from the beginning. - Only update the system at fixed intervals, based on the value in "Fixed Time" in the Time options. - - - - Fast-forwards the Particle System by simulating particles over the given period of time, then pauses it. - - Time period in seconds to advance the ParticleSystem simulation by. If restart is true, the ParticleSystem will be reset to 0 time, and then advanced by this value. If restart is false, the ParticleSystem simulation will be advanced in time from its current state by this value. - Fast-forward all child Particle Systems as well. - Restart and start from the beginning. - Only update the system at fixed intervals, based on the value in "Fixed Time" in the Time options. - - - - Fast-forwards the Particle System by simulating particles over the given period of time, then pauses it. - - Time period in seconds to advance the ParticleSystem simulation by. If restart is true, the ParticleSystem will be reset to 0 time, and then advanced by this value. If restart is false, the ParticleSystem simulation will be advanced in time from its current state by this value. - Fast-forward all child Particle Systems as well. - Restart and start from the beginning. - Only update the system at fixed intervals, based on the value in "Fixed Time" in the Time options. - - - - Fast-forwards the Particle System by simulating particles over the given period of time, then pauses it. - - Time period in seconds to advance the ParticleSystem simulation by. If restart is true, the ParticleSystem will be reset to 0 time, and then advanced by this value. If restart is false, the ParticleSystem simulation will be advanced in time from its current state by this value. - Fast-forward all child Particle Systems as well. - Restart and start from the beginning. - Only update the system at fixed intervals, based on the value in "Fixed Time" in the Time options. - - - - Script interface for the Size By Speed module. - - - - - Enable/disable the Size By Speed module. - - - - - Apply the size curve between these minimum and maximum speeds. - - - - - Set the size by speed on each axis separately. - - - - - Curve to control particle size based on speed. - - - - - Size multiplier. - - - - - Size by speed curve for the X axis. - - - - - X axis size multiplier. - - - - - Size by speed curve for the Y axis. - - - - - Y axis size multiplier. - - - - - Size by speed curve for the Z axis. - - - - - Z axis size multiplier. - - - - - Script interface for the Size Over Lifetime module. - - - - - Enable/disable the Size Over Lifetime module. - - - - - Set the size over lifetime on each axis separately. - - - - - Curve to control particle size based on lifetime. - - - - - Size multiplier. - - - - - Size over lifetime curve for the X axis. - - - - - X axis size multiplier. - - - - - Size over lifetime curve for the Y axis. - - - - - Y axis size multiplier. - - - - - Size over lifetime curve for the Z axis. - - - - - Z axis size multiplier. - - - - - Stops playing the Particle System using the supplied stop behaviour. - - Stop all child Particle Systems as well. - Stop emitting or stop emitting and clear the system. - - - - Stops playing the Particle System using the supplied stop behaviour. - - Stop all child Particle Systems as well. - Stop emitting or stop emitting and clear the system. - - - - Stops playing the Particle System using the supplied stop behaviour. - - Stop all child Particle Systems as well. - Stop emitting or stop emitting and clear the system. - - - - Script interface for the Sub Emitters module. - - - - - Sub Particle System which spawns at the locations of the birth of the particles from the parent system. - - - - - Sub Particle System which spawns at the locations of the birth of the particles from the parent system. - - - - - Sub Particle System which spawns at the locations of the collision of the particles from the parent system. - - - - - Sub Particle System which spawns at the locations of the collision of the particles from the parent system. - - - - - Sub Particle System which spawns at the locations of the death of the particles from the parent system. - - - - - Sub Particle System to spawn on death of the parent system's particles. - - - - - Enable/disable the Sub Emitters module. - - - - - The total number of sub-emitters. - - - - - Add a new sub-emitter. - - The sub-emitter to be added. - The event that creates new particles. - The properties of the new particles. - The probability that the sub-emitter emits particles. Accepts values from 0 to 1, where 0 is never and 1 is always. - - - - Add a new sub-emitter. - - The sub-emitter to be added. - The event that creates new particles. - The properties of the new particles. - The probability that the sub-emitter emits particles. Accepts values from 0 to 1, where 0 is never and 1 is always. - - - - Returns the probability that the sub-emitter emits particles. - - The index of the desired sub-emitter. - - The emission probability for the desired sub-emitter - - - - - Get the properties of the sub-emitter at the given index. - - The index of the desired sub-emitter. - - The properties of the requested sub-emitter. - - - - - Get the sub-emitter Particle System at the given index. - - The index of the desired sub-emitter. - - The sub-emitter being requested. - - - - - Get the type of the sub-emitter at the given index. - - The index of the desired sub-emitter. - - The type of the requested sub-emitter. - - - - - Remove a sub-emitter from the given index in the array. - - The index from which to remove a sub-emitter. - - - - Sets the probability that the sub-emitter emits particles. - - The index of the sub-emitter being modified. - Sets the emission probability of the sub-emitter at the given index. - - - - Set the properties of the sub-emitter at the given index. - - The index of the sub-emitter being modified. - The new properties to assign to this sub-emitter. - - - - Set the Particle System to use as the sub-emitter at the given index. - - The index of the sub-emitter being modified. - The Particle System being used as this sub-emitter. - - - - Set the type of the sub-emitter at the given index. - - The index of the sub-emitter being modified. - The new spawning type to assign to this sub-emitter. - - - - Script interface for the Texture Sheet Animation module. - - - - - Specifies the animation type. - - - - - Specifies how many times the animation will loop during the lifetime of the particle. - - - - - Enable/disable the Texture Sheet Animation module. - - - - - Flip the U coordinate on particles, causing them to appear mirrored horizontally. - - - - - Flip the V coordinate on particles, causing them to appear mirrored vertically. - - - - - Control how quickly the animation plays. - - - - - Curve to control which frame of the texture sheet animation to play. - - - - - Frame over time mutiplier. - - - - - Select whether the animated texture information comes from a grid of frames on a single texture, or from a list of Sprite objects. - - - - - Defines the tiling of the texture in the X axis. - - - - - Defines the tiling of the texture in the Y axis. - - - - - Explicitly select which row of the texture sheet is used, when ParticleSystem.TextureSheetAnimationModule.useRandomRow is set to false. - - - - - Specify how particle speeds are mapped to the animation frames. - - - - - The total number of sprites. - - - - - Define a random starting frame for the texture sheet animation. - - - - - Starting frame multiplier. - - - - - Select whether the playback is based on mapping a curve to the lifetime of each particle, by using the particle speeds, or if playback simply uses a constant frames per second. - - - - - Use a random row of the texture sheet for each particle emitted. - - - - - Choose which UV channels will receive texture animation. - - - - - Add a new Sprite. - - The Sprite to be added. - - - - Get the Sprite at the given index. - - The index of the desired Sprite. - - The Sprite being requested. - - - - - Remove a Sprite from the given index in the array. - - The index from which to remove a Sprite. - - - - Set the Sprite at the given index. - - The index of the Sprite being modified. - The Sprite being assigned. - - - - Access the particle system trails module. - - - - - Adds an extra position to each ribbon, connecting it to the location of the Transform Component. - - - - - The gradient controlling the trail colors during the lifetime of the attached particle. - - - - - The gradient controlling the trail colors over the length of the trail. - - - - - If enabled, Trails will disappear immediately when their owning particle dies. Otherwise, the trail will persist until all its points have naturally expired, based on its lifetime. - - - - - Enable/disable the Trail module. - - - - - Configures the trails to generate Normals and Tangents. With this data, Scene lighting can affect the trails via Normal Maps and the Unity Standard Shader, or your own custom-built Shaders. - - - - - Toggle whether the trail will inherit the particle color as its starting color. - - - - - The curve describing the trail lifetime, throughout the lifetime of the particle. - - - - - Change the lifetime multiplier. - - - - - Set the minimum distance each trail can travel before a new vertex is added to it. - - - - - Choose how particle trails are generated. - - - - - Choose what proportion of particles will receive a trail. - - - - - Select how many lines to create through the Particle System. - - - - - Apply a shadow bias to prevent self-shadowing artifacts. The specified value is the proportion of the trail width at each segment. - - - - - Set whether the particle size will act as a multiplier on top of the trail lifetime. - - - - - Set whether the particle size will act as a multiplier on top of the trail width. - - - - - When used on a sub emitter, ribbons will connect particles from each parent particle independently. - - - - - Choose whether the U coordinate of the trail texture is tiled or stretched. - - - - - The curve describing the width, of each trail point. - - - - - Change the width multiplier. - - - - - Drop new trail points in world space, regardless of Particle System Simulation Space. - - - - - Script interface for the Trigger module. - - - - - Enable/disable the Trigger module. - - - - - Choose what action to perform when particles enter the trigger volume. - - - - - Choose what action to perform when particles leave the trigger volume. - - - - - Choose what action to perform when particles are inside the trigger volume. - - - - - The maximum number of collision shapes that can be attached to this Particle System trigger. - - - - - Choose what action to perform when particles are outside the trigger volume. - - - - - A multiplier applied to the size of each particle before overlaps are processed. - - - - - Get a collision shape associated with this Particle System trigger. - - Which collider to return. - - The collider at the given index. - - - - - Set a collision shape associated with this Particle System trigger. - - Which collider to set. - The collider to associate with this trigger. - - - - Triggers the specified sub emitter on all particles of the Particle System. - - Index of the sub emitter to trigger. - - - - Triggers the specified sub emitter on the specified particle(s) of the Particle System. - - Index of the sub emitter to trigger. - Triggers the sub emtter on a single particle. - Triggers the sub emtter on a list of particles. - - - - Triggers the specified sub emitter on the specified particle(s) of the Particle System. - - Index of the sub emitter to trigger. - Triggers the sub emtter on a single particle. - Triggers the sub emtter on a list of particles. - - - - Script interface for the Velocity Over Lifetime module. - - - - - Enable/disable the Velocity Over Lifetime module. - - - - - Specify a custom center of rotation for the orbital and radial velocities. - - - - - This method is more efficient than accessing the whole curve, if you only want to change the overall offset multiplier. - - - - - Specify a custom center of rotation for the orbital and radial velocities. - - - - - This method is more efficient than accessing the whole curve, if you only want to change the overall offset multiplier. - - - - - Specify a custom center of rotation for the orbital and radial velocities. - - - - - This method is more efficient than accessing the whole curve, if you only want to change the overall offset multiplier. - - - - - Curve to control particle speed based on lifetime, around the X axis. - - - - - X axis speed multiplier. - - - - - Curve to control particle speed based on lifetime, around the Y axis. - - - - - Y axis speed multiplier. - - - - - Curve to control particle speed based on lifetime, around the Z axis. - - - - - Z axis speed multiplier. - - - - - Curve to control particle speed based on lifetime, away from a center position. - - - - - Radial speed multiplier. - - - - - Specifies if the velocities are in local space (rotated with the transform) or world space. - - - - - Curve to control particle speed based on lifetime, without affecting the direction of the particles. - - - - - Speed multiplier. - - - - - Curve to control particle speed based on lifetime, on the X axis. - - - - - X axis speed multiplier. - - - - - Curve to control particle speed based on lifetime, on the Y axis. - - - - - Y axis speed multiplier. - - - - - Curve to control particle speed based on lifetime, on the Z axis. - - - - - Z axis speed multiplier. - - - - - The animation mode. - - - - - Use a regular grid to construct a sequence of animation frames. - - - - - Use a list of sprites to construct a sequence of animation frames. - - - - - Control how animation frames are selected. - - - - - Select animation frames sequentially at a constant rate of the specified frames per second. - - - - - Select animation frames based on the particle ages. - - - - - Select animation frames based on the particle speeds. - - - - - The animation type. - - - - - Animate a single row in the sheet from left to right. - - - - - Animate over the whole texture sheet from left to right, top to bottom. - - - - - Whether to use 2D or 3D colliders for particle collisions. - - - - - Use 2D colliders to collide particles against. - - - - - Use 3D colliders to collide particles against. - - - - - Quality of world collisions. Medium and low quality are approximate and may leak particles. - - - - - The most accurate world collisions. - - - - - Fastest and most approximate world collisions. - - - - - Approximate world collisions. - - - - - The type of collisions to use for a given Particle System. - - - - - Collide with a list of planes. - - - - - Collide with the world geometry. - - - - - The action to perform when the Particle System is offscreen. - - - - - Continue simulating the Particle System when it is offscreen. - - - - - For looping effects, the simulation is paused when offscreen, and for one-shot effects, the simulation will continue playing. - - - - - Pause the Particle System simulation when it is offscreen. - - - - - Pause the Particle System simulation when it is offscreen, and perform an extra simulation when the system comes back onscreen, creating the impression that it was never paused. - - - - - The particle curve mode. - - - - - Use a single constant for the ParticleSystem.MinMaxCurve. - - - - - Use a single curve for the ParticleSystem.MinMaxCurve. - - - - - Use a random value between 2 constants for the ParticleSystem.MinMaxCurve. - - - - - Use a random value between 2 curves for the ParticleSystem.MinMaxCurve. - - - - - Which stream of custom particle data to set. - - - - - The first stream of custom per-particle data. - - - - - The second stream of custom per-particle data. - - - - - Which mode the Custom Data module uses to generate its data. - - - - - Generate data using ParticleSystem.MinMaxGradient. - - - - - Don't generate any data. - - - - - Generate data using ParticleSystem.MinMaxCurve. - - - - - The mode in which particles are emitted. - - - - - Emit when emitter moves. - - - - - Emit over time. - - - - - Control how a Particle System calculates its velocity. - - - - - Calculate the Particle System velocity by using a Rigidbody or Rigidbody2D component, if one exists on the Game Object. - - - - - Calculate the Particle System velocity by using the Transform component. - - - - - Script interface for Particle System Force Fields. - - - - - Apply a linear force along the local X axis to particles within the volume of the Force Field. - - - - - Apply a linear force along the local Y axis to particles within the volume of the Force Field. - - - - - Apply a linear force along the local Z axis to particles within the volume of the Force Field. - - - - - Apply drag to particles within the volume of the Force Field. - - - - - Determines the size of the shape used for influencing particles. - - - - - Apply gravity to particles within the volume of the Force Field. - - - - - When using the gravity force, set this value between 0 and 1 to control the focal point of the gravity effect. - - - - - Describes the length of the Cylinder when using the Cylinder Force Field shape to influence particles. - - - - - When using Drag, the drag strength will be multiplied by the size of the particles if this toggle is enabled. - - - - - When using Drag, the drag strength will be multiplied by the speed of the particles if this toggle is enabled. - - - - - Controls how strongly particles are dragged into the vortex motion. - - - - - Apply randomness to the Force Field axis that particles will travel around. - - - - - The speed at which particles are propelled around a vortex. - - - - - Selects the type of shape used for influencing particles. - - - - - Setting a value greater than 0 creates a hollow Force Field shape. This will cause particles to not be affected by the Force Field when closer to the center of the volume than the startRange property. - - - - - Apply forces to particles within the volume of the Force Field, by using a 3D texture containing vector field data. - - - - - Controls how strongly particles are dragged into the vector field motion. - - - - - The speed at which particles are propelled through the vector field. - - - - - The type of shape used for influencing particles in the Force Field Component. - - - - - Influence particles inside a box shape. - - - - - Influence particles inside a cylinder shape. - - - - - Influence particles inside a hemisphere shape. - - - - - Influence particles inside a sphere shape. - - - - - The particle GameObject filtering mode that specifies which objects are used by specific Particle System modules. - - - - - Include objects based on a layer mask, where all objects that match the mask are included. - - - - - Include objects based on both a layer mask and an explicitly provided list. - - - - - Include objects based on an explicitly provided list. - - - - - The particle gradient mode. - - - - - Use a single color for the ParticleSystem.MinMaxGradient. - - - - - Use a single color gradient for the ParticleSystem.MinMaxGradient. - - - - - Define a list of colors in the ParticleSystem.MinMaxGradient, to be chosen from at random. - - - - - Use a random value between 2 colors for the ParticleSystem.MinMaxGradient. - - - - - Use a random value between 2 color gradients for the ParticleSystem.MinMaxGradient. - - - - - How to apply emitter velocity to particles. - - - - - Each particle's velocity is set to the emitter's current velocity value, every frame. - - - - - Each particle inherits the emitter's velocity on the frame when it was initially emitted. - - - - - The mesh emission type. - - - - - Emit from the edges of the mesh. - - - - - Emit from the surface of the mesh. - - - - - Emit from the vertices of the mesh. - - - - - The quality of the generated noise. - - - - - High quality 3D noise. - - - - - Low quality 1D noise. - - - - - Medium quality 2D noise. - - - - - What action to perform when the particle trigger module passes a test. - - - - - Send the OnParticleTrigger command to the Particle System's script. - - - - - Do nothing. - - - - - Kill all particles that pass this test. - - - - - Renders particles on to the screen. - - - - - The number of currently active custom vertex streams. - - - - - Control the direction that particles face. - - - - - Allow billboard particles to roll around their Z axis. - - - - - How much are the particles stretched depending on the Camera's speed. - - - - - Enables GPU Instancing on platforms where it is supported. - - - - - Flip a percentage of the particles, along each axis. - - - - - How much are the particles stretched in their direction of motion. - - - - - Specifies how the Particle System Renderer interacts with SpriteMask. - - - - - Clamp the maximum particle size. - - - - - Mesh used as particle instead of billboarded texture. - - - - - The number of meshes being used for particle rendering. - - - - - Clamp the minimum particle size. - - - - - How much are billboard particle normals oriented towards the camera. - - - - - Modify the pivot point used for rotating particles. - - - - - How particles are drawn. - - - - - Apply a shadow bias to prevent self-shadowing artifacts. The specified value is the proportion of the particle size. - - - - - Biases Particle System sorting amongst other transparencies. - - - - - Sort particles within a system. - - - - - Set the material used by the Trail module for attaching trails to particles. - - - - - How much are the particles stretched depending on "how fast they move". - - - - - Query whether the Particle System renderer uses a particular set of vertex streams. - - Streams to query. - - Whether all the queried streams are enabled or not. - - - - - Creates a snapshot of ParticleSystemRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the particles. - The camera used for determining which way camera-space particles will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystemRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the particles. - The camera used for determining which way camera-space particles will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystemRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the particles. - The camera used for determining which way camera-space particles will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystemRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the particles. - The camera used for determining which way camera-space particles will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystem Trails and stores them in mesh. - - A static mesh that will receive the snapshot of the particle trails. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystem Trails and stores them in mesh. - - A static mesh that will receive the snapshot of the particle trails. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystem Trails and stores them in mesh. - - A static mesh that will receive the snapshot of the particle trails. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystem Trails and stores them in mesh. - - A static mesh that will receive the snapshot of the particle trails. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Disable a set of vertex shader streams on the Particle System renderer. -The position stream is always enabled, and any attempts to remove it will be ignored. - - Streams to disable. - - - - Enable a set of vertex shader streams on the Particle System renderer. - - Streams to enable. - - - - Query which vertex shader streams are enabled on the ParticleSystemRenderer. - - The array of streams to be populated. - - - - Query whether the Particle System renderer uses a particular set of vertex streams. - - Streams to query. - - Returns the subset of the queried streams that are actually enabled. - - - - - Get the array of meshes to be used as particles. - - This array will be populated with the list of meshes being used for particle rendering. - - The number of meshes actually written to the destination array. - - - - - Enable a set of vertex shader streams on the ParticleSystemRenderer. - - The new array of enabled vertex streams. - - - - Set an array of meshes to be used as particles when the ParticleSystemRenderer.renderMode is set to ParticleSystemRenderMode.Mesh. - - Array of meshes to be used. - Number of elements from the mesh array to be applied. - - - - Set an array of meshes to be used as particles when the ParticleSystemRenderer.renderMode is set to ParticleSystemRenderMode.Mesh. - - Array of meshes to be used. - Number of elements from the mesh array to be applied. - - - - The rendering mode for particle systems. - - - - - Render particles as billboards facing the active camera. (Default) - - - - - Render particles as billboards always facing up along the y-Axis. - - - - - Render particles as meshes. - - - - - Do not render particles. - - - - - Stretch particles in the direction of motion. - - - - - Render particles as billboards always facing the player, but not pitching along the x-Axis. - - - - - How particles are aligned when rendered. - - - - - Particles face the eye position. - - - - - Particles align with their local transform. - - - - - Particles are aligned to their direction of travel. - - - - - Particles face the camera plane. - - - - - Particles align with the world. - - - - - Control how particles are removed from the Particle System. - - - - - Particles are removed when their age exceeds their lifetime. - - - - - Particles are removed when creating new particles would exceed the Max Particles property. Before being removed, particles remain alive until their age exceeds their lifetime. - - - - - Particles are removed when creating new particles would exceed the Max Particles property. - - - - - Control how particle systems apply transform scale. - - - - - Scale the Particle System using the entire transform hierarchy. - - - - - Scale the Particle System using only its own transform scale. (Ignores parent scale). - - - - - Only apply transform scale to the shape component, which controls where - particles are spawned, but does not affect their size or movement. - - - - - - The mode used to generate new points in a shape. - - - - - Distribute new particles around the shape evenly. - - - - - Animate the emission point around the shape. - - - - - Animate the emission point around the shape, alternating between clockwise and counter-clockwise directions. - - - - - Generate points randomly. (Default) - - - - - The texture channel. - - - - - The alpha channel. - - - - - The blue channel. - - - - - The green channel. - - - - - The red channel. - - - - - The emission shape. - - - - - Emit from the volume of a box. - - - - - Emit from the edges of a box. - - - - - Emit from the surface of a box. - - - - - Emit from a circle. - - - - - Emit from the edge of a circle. - - - - - Emit from the base of a cone. - - - - - Emit from the base surface of a cone. - - - - - Emit from a cone. - - - - - Emit from the surface of a cone. - - - - - Emit from a Donut. - - - - - Emit from a half-sphere. - - - - - Emit from the surface of a half-sphere. - - - - - Emit from a mesh. - - - - - Emit from a mesh renderer. - - - - - Emit from a rectangle. - - - - - Emit from an edge. - - - - - Emit from a skinned mesh renderer. - - - - - Emit from a sphere. - - - - - Emit from the surface of a sphere. - - - - - Emit from a sprite. - - - - - Emit from a sprite renderer. - - - - - The space to simulate particles in. - - - - - Simulate particles relative to a custom transform component, defined by ParticleSystem.MainModule.customSimulationSpace. - - - - - Simulate particles in local space. - - - - - Simulate particles in world space. - - - - - The sorting mode for particle systems. - - - - - Sort based on distance. - - - - - No sorting. - - - - - Sort the oldest particles to the front. - - - - - Sort the youngest particles to the front. - - - - - The action to perform when the Particle System stops. - - - - - Call OnParticleSystemStopped on the ParticleSystem script. - - - - - Destroy the GameObject containing the Particle System. - - - - - Disable the GameObject containing the Particle System. - - - - - Do nothing. - - - - - The behavior to apply when calling ParticleSystem.Stop|Stop. - - - - - Stops Particle System emitting any further particles. All existing particles will remain until they expire. - - - - - Stops Particle System emitting and removes all existing emitted particles. - - - - - The properties of sub-emitter particles. - - - - - When spawning new particles, multiply the start color by the color of the parent particles. - - - - - When spawning new particles, use the duration and age properties from the parent system, when sampling Main module curves in the Sub-Emitter. - - - - - When spawning new particles, inherit all available properties from the parent particles. - - - - - New particles will have a shorter lifespan, the closer their parent particles are to death. - - - - - When spawning new particles, do not inherit any properties from the parent particles. - - - - - When spawning new particles, add the start rotation to the rotation of the parent particles. - - - - - When spawning new particles, multiply the start size by the size of the parent particles. - - - - - The events that cause new particles to be spawned. - - - - - Spawns new particles when particles from the parent system are born. - - - - - Spawns new particles when particles from the parent system collide with something. - - - - - Spawns new particles when particles from the parent system die. - - - - - Spawns new particles when triggered from script using ParticleSystem.TriggerSubEmitter. - - - - - Spawns new particles when particles from the parent system pass conditions in the Trigger Module. - - - - - Choose how Particle Trails are generated. - - - - - Makes a trail behind each particle as the particle moves. - - - - - Draws a line between each particle, connecting the youngest particle to the oldest. - - - - - Choose how textures are applied to Particle Trails. - - - - - Map the texture once along the entire length of the trail, assuming all vertices are evenly spaced. - - - - - Repeat the texture along the trail, repeating at a rate of once per trail segment. To adjust the tiling rate, use Material.SetTextureScale. - - - - - Map the texture once along the entire length of the trail. - - - - - Repeat the texture along the trail. To set the tiling rate, use Material.SetTextureScale. - - - - - The different types of particle triggers. - - - - - Trigger when particles enter the collision volume. - - - - - Trigger when particles leave the collision volume. - - - - - Trigger when particles are inside the collision volume. - - - - - Trigger when particles are outside the collision volume. - - - - - All possible Particle System vertex shader inputs. - - - - - The normalized age of each particle, from 0 to 1. - - - - - The amount to blend between animated texture frames, from 0 to 1. - - - - - The current animation frame index of each particle. - - - - - The center position of the entire particle, in world space. - - - - - The color of each particle. - - - - - One custom value for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Two custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Three custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Four custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - One custom value for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Two custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Three custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Four custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - The reciprocal of the starting lifetime, in seconds (1.0f / startLifetime). - - - - - The X axis noise on the current frame. - - - - - The X and Y axis noise on the current frame. - - - - - The 3D noise on the current frame. - - - - - The accumulated X axis noise, over the lifetime of the particle. - - - - - The accumulated X and Y axis noise, over the lifetime of the particle. - - - - - The accumulated 3D noise, over the lifetime of the particle. - - - - - The vertex normal of each particle. - - - - - The position of each particle vertex, in world space. - - - - - The Z axis rotation of each particle. - - - - - The 3D rotation of each particle. - - - - - The Z axis rotational speed of each particle. - - - - - The 3D rotational speed of each particle. - - - - - The X axis size of each particle. - - - - - The X and Y axis sizes of each particle. - - - - - The 3D size of each particle. - - - - - The speed of each particle, calculated by taking the magnitude of the velocity. - - - - - A random number for each particle, which remains constant during their lifetime. - - - - - Two random numbers for each particle, which remain constant during their lifetime. - - - - - Three random numbers for each particle, which remain constant during their lifetime. - - - - - Four random numbers for each particle, which remain constant during their lifetime. - - - - - The tangent vector for each particle (for normal mapping). - - - - - The first UV stream of each particle. - - - - - The second UV stream of each particle. - - - - - The third UV stream of each particle (only for meshes). - - - - - The fourth UV stream of each particle (only for meshes). - - - - - A random number for each particle, which changes during their lifetime. - - - - - Two random numbers for each particle, which change during their lifetime. - - - - - Three random numbers for each particle, which change during their lifetime. - - - - - Four random numbers for each particle, which change during their lifetime. - - - - - The velocity of each particle, in world space. - - - - - The vertex ID of each particle. - - - - - All possible Particle System vertex shader inputs. - - - - - A mask with all vertex streams enabled. - - - - - The center position of each particle, with the vertex ID of each particle, from 0-3, stored in the w component. - - - - - The color of each particle. - - - - - The first stream of custom data, supplied from script. - - - - - The second stream of custom data, supplied from script. - - - - - Alive time as a 0-1 value in the X component, and Total Lifetime in the Y component. -To get the current particle age, simply multiply X by Y. - - - - - A mask with no vertex streams enabled. - - - - - The normal of each particle. - - - - - The world space position of each particle. - - - - - 4 random numbers. The first 3 are deterministic and assigned once when each particle is born, but the 4th value will change during the lifetime of the particle. - - - - - The rotation of each particle. - - - - - The size of each particle. - - - - - Tangent vectors for normal mapping. - - - - - The texture coordinates of each particle. - - - - - With the Texture Sheet Animation module enabled, this contains the UVs for the second texture frame, the blend factor for each particle, and the raw frame, allowing for blending of frames. - - - - - The 3D velocity of each particle. - - - - - Structure containing minimum and maximum terrain patch height values. - - - - - Maximum height of a terrain patch. - - - - - Minimum height of a terrain patch. - - - - - Physics material describes how to handle colliding objects (friction, bounciness). - - - - - Determines how the bounciness is combined. - - - - - How bouncy is the surface? A value of 0 will not bounce. A value of 1 will bounce without any loss of energy. - - - - - The friction used when already moving. This value is usually between 0 and 1. - - - - - If anisotropic friction is enabled, dynamicFriction2 will be applied along frictionDirection2. - - - - - Determines how the friction is combined. - - - - - The direction of anisotropy. Anisotropic friction is enabled if the vector is not zero. - - - - - The friction coefficient used when an object is lying on a surface. - - - - - If anisotropic friction is enabled, staticFriction2 will be applied along frictionDirection2. - - - - - Creates a new material. - - - - - Creates a new material named name. - - - - - - Describes how physics materials of the colliding objects are combined. - -The friction force as well as the residual bounce impulse are applied symmertrically to both of the colliders in contact, so each pair of overlapping colliders must have a single set of friction and bouciness settings. However, one can set arbitrary physics materials to any colliders. For that particular reason, there is a mechanism that allows the combination of two different sets of properties that correspond to each of the colliders in contact into one set to be used in the solver. - -Specifying Average, Maximum, Minimum or Multiply as the physics material combine mode, you directly set the function that is used to combine the settings corresponding to the two overlapping colliders into one set of settings that can be used to apply the material effect. - -Note that there is a special case when the two overlapping colliders have physics materials with different combine modes set. In this particular case, the function that has the highest priority is used. The priority order is as follows: Average < Minimum < Multiply < Maximum. For example, if one material has Average set but the other one has Maximum, then the combine function to be used is Maximum, since it has higher priority. - - - - - Averages the friction/bounce of the two colliding materials. - - - - - Uses the larger friction/bounce of the two colliding materials. - - - - - Uses the smaller friction/bounce of the two colliding materials. - - - - - Multiplies the friction/bounce of the two colliding materials. - - - - - Global physics properties and helper methods. - - - - - Sets whether the physics should be simulated automatically or not. - - - - - Whether or not to automatically sync transform changes with the physics system whenever a Transform component changes. - - - - - Two colliding objects with a relative velocity below this will not bounce (default 2). Must be positive. - - - - - The default contact offset of the newly created colliders. - - - - - The PhysicsScene automatically created when Unity starts. - - - - - The defaultSolverIterations determines how accurately Rigidbody joints and collision contacts are resolved. (default 6). Must be positive. - - - - - The defaultSolverVelocityIterations affects how accurately the Rigidbody joints and collision contacts are resolved. (default 1). Must be positive. - - - - - The gravity applied to all rigid bodies in the Scene. - - - - - Sets the minimum separation distance for cloth inter-collision. - - - - - Sets the cloth inter-collision stiffness. - - - - - The default maximum angular velocity permitted for any rigid bodies (default 7). Must be positive. - - - - - The minimum contact penetration value in order to apply a penalty force (default 0.05). Must be positive. - - - - - Whether physics queries should hit back-face triangles. - - - - - Specifies whether queries (raycasts, spherecasts, overlap tests, etc.) hit Triggers by default. - - - - - Determines whether the garbage collector should reuse only a single instance of a Collision type for all collision callbacks. - - - - - The default angular velocity, below which objects start sleeping (default 0.14). Must be positive. - - - - - The mass-normalized energy threshold, below which objects start going to sleep. - - - - - The default linear velocity, below which objects start going to sleep (default 0.15). Must be positive. - - - - - Layer mask constant to select all layers. - - - - - Casts the box along a ray and returns detailed information on what was hit. - - Center of the box. - Half the size of the box in each dimension. - The direction in which to cast the box. - Rotation of the box. - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - True, if any intersections were found. - - - - - Casts the box along a ray and returns detailed information on what was hit. - - Center of the box. - Half the size of the box in each dimension. - The direction in which to cast the box. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - Rotation of the box. - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - True, if any intersections were found. - - - - - Like Physics.BoxCast, but returns all hits. - - Center of the box. - Half the size of the box in each dimension. - The direction in which to cast the box. - Rotation of the box. - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - All colliders that were hit. - - - - - Cast the box along the direction, and store hits in the provided buffer. - - Center of the box. - Half the size of the box in each dimension. - The direction in which to cast the box. - The buffer to store the results in. - Rotation of the box. - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - The amount of hits stored to the results buffer. - - - - - Casts a capsule against all colliders in the Scene and returns detailed information on what was hit. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The direction into which to sweep the capsule. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - True when the capsule sweep intersects any collider, otherwise false. - - - - - - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The direction into which to sweep the capsule. - The max length of the sweep. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - - Like Physics.CapsuleCast, but this function will return all hits the capsule sweep intersects. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The direction into which to sweep the capsule. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - An array of all colliders hit in the sweep. - - - - - Casts a capsule against all colliders in the Scene and returns detailed information on what was hit into the buffer. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The direction into which to sweep the capsule. - The buffer to store the hits into. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - The amount of hits stored into the buffer. - - - - - Check whether the given box overlaps with other colliders or not. - - Center of the box. - Half the size of the box in each dimension. - Rotation of the box. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True, if the box overlaps with any colliders. - - - - - Checks if any colliders overlap a capsule-shaped volume in world space. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - - - Returns true if there are any colliders overlapping the sphere defined by position and radius in world coordinates. - - Center of the sphere. - Radius of the sphere. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - - Returns a point on the given collider that is closest to the specified location. - - Location you want to find the closest point to. - The collider that you find the closest point on. - The position of the collider. - The rotation of the collider. - - The point on the collider that is closest to the specified location. - - - - - Compute the minimal translation required to separate the given colliders apart at specified poses. - - The first collider. - Position of the first collider. - Rotation of the first collider. - The second collider. - Position of the second collider. - Rotation of the second collider. - Direction along which the translation required to separate the colliders apart is minimal. - The distance along direction that is required to separate the colliders apart. - - True, if the colliders overlap at the given poses. - - - - - Layer mask constant to select default raycast layers. - - - - - Are collisions between layer1 and layer2 being ignored? - - - - - - - Makes the collision detection system ignore all collisions between collider1 and collider2. - - Starting point of the collider. - End point of the collider. - Ignore collision. - - - - Makes the collision detection system ignore all collisions between any collider in layer1 and any collider in layer2. - -Note that IgnoreLayerCollision will reset the trigger state of affected colliders, so you might receive OnTriggerExit and OnTriggerEnter messages in response to calling this. - - - - - - - - Layer mask constant to select ignore raycast layer. - - - - - Returns true if there is any collider intersecting the line between start and end. - - Start point. - End point. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - - Returns true if there is any collider intersecting the line between start and end. - - Start point. - End point. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - - - - Find all colliders touching or inside of the given box. - - Center of the box. - Half of the size of the box in each dimension. - Rotation of the box. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - Colliders that overlap with the given box. - - - - - Find all colliders touching or inside of the given box, and store them into the buffer. - - Center of the box. - Half of the size of the box in each dimension. - The buffer to store the results in. - Rotation of the box. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - The amount of colliders stored in results. - - - - - Check the given capsule against the physics world and return all overlapping colliders. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - Colliders touching or inside the capsule. - - - - - Check the given capsule against the physics world and return all overlapping colliders in the user-provided buffer. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The buffer to store the results into. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - The amount of entries written to the buffer. - - - - - Returns an array with all colliders touching or inside the sphere. - - Center of the sphere. - Radius of the sphere. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - - Computes and stores colliders touching or inside the sphere into the provided buffer. - - Center of the sphere. - Radius of the sphere. - The buffer to store the results into. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - The amount of colliders stored into the results buffer. - - - - - Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the Scene. - - The starting point of the ray in world coordinates. - The direction of the ray. - The max distance the ray should check for collisions. - A that is used to selectively ignore Colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True if the ray intersects with a Collider, otherwise false. - - - - - Casts a ray against all colliders in the Scene and returns detailed information on what was hit. - - The starting point of the ray in world coordinates. - The direction of the ray. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - The max distance the ray should check for collisions. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True when the ray intersects any collider, otherwise false. - - - - - Same as above using ray.origin and ray.direction instead of origin and direction. - - The starting point and direction of the ray. - The max distance the ray should check for collisions. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True when the ray intersects any collider, otherwise false. - - - - - Same as above using ray.origin and ray.direction instead of origin and direction. - - The starting point and direction of the ray. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - The max distance the ray should check for collisions. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True when the ray intersects any collider, otherwise false. - - - - - Casts a ray through the Scene and returns all hits. Note that order is not guaranteed. - - The starting point and direction of the ray. - The max distance the rayhit is allowed to be from the start of the ray. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - - See Also: Raycast. - - The starting point of the ray in world coordinates. - The direction of the ray. - The max distance the rayhit is allowed to be from the start of the ray. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - - - Cast a ray through the Scene and store the hits into the buffer. - - The starting point and direction of the ray. - The buffer to store the hits into. - The max distance the rayhit is allowed to be from the start of the ray. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - The amount of hits stored into the results buffer. - - - - - Cast a ray through the Scene and store the hits into the buffer. - - The starting point and direction of the ray. - The buffer to store the hits into. - The direction of the ray. - The max distance the rayhit is allowed to be from the start of the ray. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - The amount of hits stored into the results buffer. - - - - - Rebuild the broadphase interest regions as well as set the world boundaries. - - Boundaries of the physics world. - How many cells to create along x and z axis. - - - - Simulate physics in the Scene. - - The time to advance physics by. - - - - Casts a sphere along a ray and returns detailed information on what was hit. - - The center of the sphere at the start of the sweep. - The radius of the sphere. - The direction into which to sweep the sphere. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - True when the sphere sweep intersects any collider, otherwise false. - - - - - Casts a sphere along a ray and returns detailed information on what was hit. - - The starting point and direction of the ray into which the sphere sweep is cast. - The radius of the sphere. - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - True when the sphere sweep intersects any collider, otherwise false. - - - - - - - The starting point and direction of the ray into which the sphere sweep is cast. - The radius of the sphere. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - - Like Physics.SphereCast, but this function will return all hits the sphere sweep intersects. - - The center of the sphere at the start of the sweep. - The radius of the sphere. - The direction in which to sweep the sphere. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a sphere. - Specifies whether this query should hit Triggers. - - An array of all colliders hit in the sweep. - - - - - Like Physics.SphereCast, but this function will return all hits the sphere sweep intersects. - - The starting point and direction of the ray into which the sphere sweep is cast. - The radius of the sphere. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a sphere. - Specifies whether this query should hit Triggers. - - - - Cast sphere along the direction and store the results into buffer. - - The center of the sphere at the start of the sweep. - The radius of the sphere. - The direction in which to sweep the sphere. - The buffer to save the hits into. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a sphere. - Specifies whether this query should hit Triggers. - - The amount of hits stored into the results buffer. - - - - - Cast sphere along the direction and store the results into buffer. - - The starting point and direction of the ray into which the sphere sweep is cast. - The radius of the sphere. - The buffer to save the results to. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a sphere. - Specifies whether this query should hit Triggers. - - The amount of hits stored into the results buffer. - - - - - Apply Transform changes to the physics engine. - - - - - Global settings and helpers for 2D physics. - - - - - Should the collider gizmos always be shown even when they are not selected? - - - - - A rigid-body cannot sleep if its angular velocity is above this tolerance. - - - - - Sets whether the physics should be simulated automatically or not. - - - - - Whether or not to automatically sync transform changes with the physics system whenever a Transform component changes. - - - - - The scale factor that controls how fast overlaps are resolved. - - - - - The scale factor that controls how fast TOI overlaps are resolved. - - - - - Use this to control whether or not the appropriate OnCollisionExit2D or OnTriggerExit2D callbacks should be called when a Collider2D is disabled. - - - - - Whether or not to stop reporting collision callbacks immediately if any of the objects involved in the collision are deleted/moved. - - - - - Sets the color used by the gizmos to show all Collider axis-aligned bounding boxes (AABBs). - - - - - The color used by the gizmos to show all asleep colliders (collider is asleep when the body is asleep). - - - - - The color used by the gizmos to show all awake colliders (collider is awake when the body is awake). - - - - - The color used by the gizmos to show all collider contacts. - - - - - The scale of the contact arrow used by the collider gizmos. - - - - - The default contact offset of the newly created colliders. - - - - - The PhysicsScene2D automatically created when Unity starts. - - - - - Ets the collision callbacks to stop or continue processing if any of the objects involved in the collision are deleted. - - - - - Acceleration due to gravity. - - - - - A set of options that control how physics operates when using the job system to multithread the physics simulation. - - - - - A rigid-body cannot sleep if its linear velocity is above this tolerance. - - - - - The maximum angular position correction used when solving constraints. This helps to prevent overshoot. - - - - - The maximum linear position correction used when solving constraints. This helps to prevent overshoot. - - - - - The maximum angular speed of a rigid-body per physics update. Increasing this can cause numerical problems. - - - - - The maximum linear speed of a rigid-body per physics update. Increasing this can cause numerical problems. - - - - - This property is obsolete. You should use defaultContactOffset instead. - - - - - The number of iterations of the physics solver when considering objects' positions. - - - - - Do raycasts detect Colliders configured as triggers? - - - - - Sets the raycasts or linecasts that start inside Colliders to detect or not detect those Colliders. - - - - - Sets the raycasts to either detect or not detect Triggers. - - - - - Do ray/line casts that start inside a collider(s) detect those collider(s)? - - - - - Determines whether the garbage collector should reuse only a single instance of a Collision2D type for all collision callbacks. - - - - - Should the collider gizmos show the AABBs for each collider? - - - - - Should the collider gizmos show current contacts for each collider? - - - - - Should the collider gizmos show the sleep-state for each collider? - - - - - The time in seconds that a rigid-body must be still before it will go to sleep. - - - - - The number of iterations of the physics solver when considering objects' velocities. - - - - - Any collisions with a relative linear velocity below this threshold will be treated as inelastic. - - - - - Layer mask constant that includes all layers. - - - - - Casts a box against colliders in the Scene, returning the first collider to contact with it. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction of the box. - Maximum distance over which to cast the box. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a box against the colliders in the Scene and returns all colliders that are in contact with it. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction of the box. - Maximum distance over which to cast the box. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a box against colliders in the Scene, returning all colliders that contact with it. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction of the box. - Maximum distance over which to cast the box. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a box into the Scene, returning colliders that contact with it into the provided results array. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction of the box. - Array to receive results. - Maximum distance over which to cast the box. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - Returns the number of results placed in the results array. - - - - - Casts a capsule against colliders in the Scene, returning the first collider to contact with it. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - - - - Casts a capsule against the colliders in the Scene and returns all colliders that are in contact with it. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Maximum distance over which to cast the capsule. - - Returns the number of results placed in the results array. - - - - - Casts a capsule against colliders in the Scene, returning all colliders that contact with it. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - - - - Casts a capsule into the Scene, returning colliders that contact with it into the provided results array. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Array to receive results. - Maximum distance over which to cast the capsule. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - Returns the number of results placed in the results array. - - - - - Casts a circle against colliders in the Scene, returning the first collider to contact with it. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction of the circle. - Maximum distance over which to cast the circle. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a circle against colliders in the Scene, returning all colliders that contact with it. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction of the circle. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Maximum distance over which to cast the circle. - - Returns the number of results placed in the results array. - - - - - Casts a circle against colliders in the Scene, returning all colliders that contact with it. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction of the circle. - Maximum distance over which to cast the circle. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a circle into the Scene, returning colliders that contact with it into the provided results array. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction of the circle. - Array to receive results. - Maximum distance over which to cast the circle. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - Returns the number of results placed in the results array. - - - - - Layer mask constant that includes all layers participating in raycasts by default. - - - - - Calculates the minimum distance between two colliders. - - A collider used to calculate the minimum distance against colliderB. - A collider used to calculate the minimum distance against colliderA. - - The minimum distance between colliderA and colliderB. - - - - - Retrieves all colliders in contact with the collider. - - The collider to retrieve contacts for. - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Retrieves all contact points in contact with the collider. - - The collider to retrieve contacts for. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all contact points in contact with the collider, with the results filtered by the ContactFilter2D. - - The collider to retrieve contacts for. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with the collider, with the results filtered by the ContactFilter2D. - - The collider to retrieve contacts for. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Retrieves all contact points in for contacts between with the collider1 and collider2, with the results filtered by the ContactFilter2D. - - The collider to check if it has contacts against collider2. - The collider to check if it has contacts against collider1. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all contact points in contact with any of the collider(s) attached to this rigidbody. - - The rigidbody to retrieve contacts for. All colliders attached to this rigidbody will be checked. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with any of the collider(s) attached to this rigidbody. - - The rigidbody to retrieve contacts for. All colliders attached to this rigidbody will be checked. - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Retrieves all contact points in contact with any of the collider(s) attached to this rigidbody, with the results filtered by the ContactFilter2D. - - The rigidbody to retrieve contacts for. All colliders attached to this rigidbody will be checked. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with any of the collider(s) attached to this rigidbody, with the results filtered by the ContactFilter2D. - - The rigidbody to retrieve contacts for. All colliders attached to this rigidbody will be checked. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Checks whether the collision detection system will ignore all collisionstriggers between collider1 and collider2/ or not. - - The first collider to compare to collider2. - The second collider to compare to collider1. - - Whether the collision detection system will ignore all collisionstriggers between collider1 and collider2/ or not. - - - - - Checks whether collisions between the specified layers be ignored or not. - - ID of first layer. - ID of second layer. - - Whether collisions between the specified layers be ignored or not. - - - - - Get the collision layer mask that indicates which layer(s) the specified layer can collide with. - - The layer to retrieve the collision layer mask for. - - A mask where each bit indicates a layer and whether it can collide with layer or not. - - - - - Cast a 3D ray against the colliders in the Scene returning the first collider along the ray. - - The 3D ray defining origin and direction to test. - Maximum distance over which to cast the ray. - Filter to detect colliders only on certain layers. - - The cast results returned. - - - - - Cast a 3D ray against the colliders in the Scene returning all the colliders along the ray. - - The 3D ray defining origin and direction to test. - Maximum distance over which to cast the ray. - Filter to detect colliders only on certain layers. - - The cast results returned. - - - - - Cast a 3D ray against the colliders in the Scene returning the colliders along the ray. - - The 3D ray defining origin and direction to test. - Maximum distance over which to cast the ray. - Filter to detect colliders only on certain layers. - Array to receive results. - - The number of results returned. - - - - - Makes the collision detection system ignore all collisionstriggers between collider1 and collider2/. - - The first collider to compare to collider2. - The second collider to compare to collider1. - Whether collisionstriggers between collider1 and collider2/ should be ignored or not. - - - - Choose whether to detect or ignore collisions between a specified pair of layers. - - ID of the first layer. - ID of the second layer. - Should collisions between these layers be ignored? - - - - Layer mask constant for the default layer that ignores raycasts. - - - - - Checks whether the passed colliders are in contact or not. - - The collider to check if it is touching collider2. - The collider to check if it is touching collider1. - - Whether collider1 is touching collider2 or not. - - - - - Checks whether the passed colliders are in contact or not. - - The collider to check if it is touching any other collider filtered by the contactFilter. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether the collider is touching any other collider filtered by the contactFilter or not. - - - - - Checks whether the passed colliders are in contact or not. - - The collider to check if it is touching collider2. - The collider to check if it is touching collider1. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether collider1 is touching collider2 or not. - - - - - Checks whether the collider is touching any colliders on the specified layerMask or not. - - The collider to check if it is touching colliders on the layerMask. - Any colliders on any of these layers count as touching. - - Whether the collider is touching any colliders on the specified layerMask or not. - - - - - Casts a line segment against colliders in the Scene. - - The start point of the line in world space. - The end point of the line in world space. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a line segment against colliders in the Scene with results filtered by ContactFilter2D. - - The start point of the line in world space. - The end point of the line in world space. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a line against colliders in the Scene. - - The start point of the line in world space. - The end point of the line in world space. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a line against colliders in the Scene. - - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - The start point of the line in world space. - The end point of the line in world space. - Returned array of objects that intersect the line. - Filter to detect Colliders only on certain layers. - - Returns the number of results placed in the results array. - - - - - Checks if a collider falls within a rectangular area. - - One corner of the rectangle. - Diagonally opposite the point A corner of the rectangle. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The collider overlapping the area. - - - - - Checks if a collider falls within a rectangular area. - - One corner of the rectangle. - Diagonally opposite the point A corner of the rectangle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that fall within a rectangular area. - - One corner of the rectangle. - Diagonally opposite the point A corner of the rectangle. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Get a list of all colliders that fall within a specified area. - - One corner of the rectangle. - Diagonally opposite the point A corner of the rectangle. - Array to receive results. - Filter to check objects only on specified layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - Returns the number of results placed in the results array. - - - - - Checks if a collider falls within a box area. - - Center of the box. - Size of the box. - Angle of the box. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The collider overlapping the box. - - - - - Checks if a collider falls within a box area. - - Center of the box. - Size of the box. - Angle of the box. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that fall within a box area. - - Center of the box. - Size of the box. - Angle of the box. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - - - - Get a list of all colliders that fall within a box area. - - Center of the box. - Size of the box. - Angle of the box. - Array to receive results. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - Returns the number of results placed in the results array. - - - - - Checks if a collider falls within a capsule area. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The collider overlapping the capsule. - - - - - Checks if a collider falls within a capsule area. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that fall within a capsule area. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - - - - Get a list of all colliders that fall within a capsule area. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - Array to receive results. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - Returns the number of results placed in the results array. - - - - - Checks if a collider falls within a circular area. - - Centre of the circle. - Radius of the circle. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The collider overlapping the circle. - - - - - Checks if a collider is within a circular area. - - Centre of the circle. - Radius of the circle. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that fall within a circular area. - - Center of the circle. - Radius of the circle. - Filter to check objects only on specified layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results. - - - - - Get a list of all colliders that fall within a circular area. - - Center of the circle. - Radius of the circle. - Array to receive results. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that overlap collider. - - The collider that defines the area used to query for other collider overlaps. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Checks if a collider overlaps a point in space. - - A point in world space. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The collider overlapping the point. - - - - - Checks if a collider overlaps a point in world space. - - A point in world space. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that overlap a point in space. - - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - A point in space. - Filter to check objects only on specific layers. - - The cast results returned. - - - - - Get a list of all colliders that overlap a point in space. - - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - A point in space. - Array to receive results. - Filter to check objects only on specific layers. - - Returns the number of results placed in the results array. - - - - - Casts a ray against colliders in the Scene. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a ray against colliders in the Scene. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Maximum distance over which to cast the ray. - - Returns the number of results placed in the results array. - - - - - Casts a ray against colliders in the Scene, returning all colliders that contact with it. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a ray into the Scene. - - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Array to receive results. - Maximum distance over which to cast the ray. - Filter to check objects only on specific layers. - - Returns the number of results placed in the results array. - - - - - Set the collision layer mask that indicates which layer(s) the specified layer can collide with. - - The layer to set the collision layer mask for. - A mask where each bit indicates a layer and whether it can collide with layer or not. - - - - Simulate physics in the Scene. - - The time to advance physics by. - - Whether the simulation was run or not. Running the simulation during physics callbacks will always fail. - - - - - Synchronizes. - - - - - A set of options that control how physics operates when using the job system to multithread the physics simulation. - - - - - Controls the minimum number of bodies to be cleared in each simulation job. - - - - - Controls the minimum number of flags to be cleared in each simulation job. - - - - - Controls the minimum number of contacts to collide in each simulation job. - - - - - Controls the minimum number of nearest contacts to find in each simulation job. - - - - - Controls the minimum number of Rigidbody2D being interpolated in each simulation job. - - - - - Controls the minimum number of bodies to solve in each simulation job when performing island solving. - - - - - Scales the cost of each body during discrete island solving. - - - - - Scales the cost of each contact during discrete island solving. - - - - - Controls the minimum number of contacts to solve in each simulation job when performing island solving. - - - - - The minimum threshold cost of all bodies, contacts and joints in an island during discrete island solving. - - - - - Scales the cost of each joint during discrete island solving. - - - - - Controls the minimum number of new contacts to find in each simulation job. - - - - - Controls the minimum number of fixtures to synchronize in the broadphase during continuous island solving in each simulation job. - - - - - Controls the minimum number of fixtures to synchronize in the broadphase during discrete island solving in each simulation job. - - - - - Controls the minimum number of trigger contacts to update in each simulation job. - - - - - Should physics simulation sort multi-threaded results to maintain processing order consistency? - - - - - Should physics simulation use multithreading? - - - - - Asset type that defines the surface properties of a Collider2D. - - - - - The degree of elasticity during collisions. - - - - - Coefficient of friction. - - - - - Represents a single instance of a 3D physics Scene. - - - - - Gets whether the physics Scene is empty or not. - - - Is the physics Scene is empty? - - - - - Gets whether the physics Scene is valid or not. - - - Is the physics scene valid? - - - - - Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the Scene. - - The starting point of the ray in world coordinates. - The direction of the ray. - The max distance the ray should check for collisions. - A that is used to selectively ignore Colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True if the ray intersects with a Collider, otherwise false. - - - - - Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the Scene. - - The starting point of the ray in world coordinates. - The direction of the ray. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - The max distance the ray should check for collisions. - A that is used to selectively ignore Colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True if the ray intersects with a Collider, otherwise false. - - - - - Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the Scene. - - The starting point and direction of the ray. - The direction of the ray. - The buffer to store the hits into. - The max distance the rayhit is allowed to be from the start of the ray. - A that is used to selectively ignore colliders when casting a ray. - The amount of hits stored into the results buffer. - - True if the ray intersects with a Collider, otherwise false. - - - - - Simulate physics associated with this PhysicsScene. - - The time to advance physics by. - - Whether the simulation was run or not. Running the simulation during physics callbacks will always fail. - - - - - Represents a single instance of a 2D physics Scene. - - - - - Casts a box against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction to cast the box. - Maximum distance over which to cast the box. - Filter to detect colliders only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a box against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction to cast the box. - Maximum distance over which to cast the box. - Filter to detect colliders only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a box against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction to cast the box. - Maximum distance over which to cast the box. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect colliders only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a box against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction to cast the box. - Maximum distance over which to cast the box. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect colliders only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a capsule against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a capsule against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a capsule against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a capsule against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a circle against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction to cast the circle. - Maximum distance over which to cast the circle. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a circle against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction to cast the circle. - Maximum distance over which to cast the circle. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a circle against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction to cast the circle. - Maximum distance over which to cast the circle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a circle against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction to cast the circle. - Maximum distance over which to cast the circle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Cast a 3D ray against the colliders in the PhysicsScene2D, returning the first intersection only. - - The 3D ray defining origin and direction to test. - Maximum distance over which to cast the ray. - Filter to detect colliders only on certain layers. - - The cast results returned. - - - - - Cast a 3D ray against the colliders in the PhysicsScene2D, returning all intersections. - - The 3D ray defining origin and direction to test. - Maximum distance over which to cast the ray. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect colliders only on certain layers. - - The number of results returned. - - - - - Determines whether the physics Scene is empty or not. - - - True when the physics Scene is empty. - - - - - Determines whether the physics Scene is valid or not. - - - True when the physics Scene valid. - - - - - Casts a line segment against colliders in the PhysicsScene2D, returning the first intersection only. - - The start point of the line in world space. - The end point of the line in world space. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a line segment against colliders in the PhysicsScene2D, returning the first intersection only. - - The start point of the line in world space. - The end point of the line in world space. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a line segment against colliders in the PhysicsScene2D. - - The start point of the line in world space. - The end point of the line in world space. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a line segment against colliders in the PhysicsScene2D. - - The start point of the line in world space. - The end point of the line in world space. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Checks an area (non-rotated box) against colliders in the PhysicsScene2D, returning the first intersection only. - - One corner of the rectangle. - The corner of the rectangle diagonally opposite the pointA corner. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the area. - - - - - Checks an area (non-rotated box) against colliders in the PhysicsScene2D, returning the first intersection only. - - One corner of the rectangle. - The corner of the rectangle diagonally opposite the pointA corner. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the area. - - - - - Checks an area (non-rotated box) against colliders in the PhysicsScene2D, returning all intersections. - - One corner of the rectangle. - The corner of the rectangle diagonally opposite the pointA corner. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks an area (non-rotated box) against colliders in the PhysicsScene2D, returning all intersections. - - One corner of the rectangle. - The corner of the rectangle diagonally opposite the pointA corner. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a box against colliders in the PhysicsScene2D, returning the first intersection only. - - Center of the box. - Size of the box. - Angle of the box. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the box. - - - - - Checks a box against colliders in the PhysicsScene2D, returning the first intersection only. - - Center of the box. - Size of the box. - Angle of the box. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the box. - - - - - Checks a box against colliders in the PhysicsScene2D, returning all intersections. - - Center of the box. - Size of the box. - Angle of the box. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a box against colliders in the PhysicsScene2D, returning all intersections. - - Center of the box. - Size of the box. - Angle of the box. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a capsule against colliders in the PhysicsScene2D, returning the first intersection only. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the capsule. - - - - - Checks a capsule against colliders in the PhysicsScene2D, returning the first intersection only. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the capsule. - - - - - Checks a capsule against colliders in the PhysicsScene2D, returning all intersections. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a capsule against colliders in the PhysicsScene2D, returning all intersections. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a circle against colliders in the PhysicsScene2D, returning the first intersection only. - - Centre of the circle. - Radius of the circle. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the circle. - - - - - Checks a circle against colliders in the PhysicsScene2D, returning the first intersection only. - - Centre of the circle. - Radius of the circle. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the circle. - - - - - Checks a circle against colliders in the PhysicsScene2D, returning all intersections. - - Centre of the circle. - Radius of the circle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a circle against colliders in the PhysicsScene2D, returning all intersections. - - Centre of the circle. - Radius of the circle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a collider against colliders in the PhysicsScene2D, returning all intersections. - - The collider that defines the area used to query for other collider overlaps. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the collider. - - - - - Checks a collider against colliders in the PhysicsScene2D, returning all intersections. - - The collider that defines the area used to query for other collider overlaps. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the collider. - - - - - Checks a point against colliders in the PhysicsScene2D, returning the first intersection only. - - A point in world space. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the point. - - - - - Checks a point against colliders in the PhysicsScene2D, returning the first intersection only. - - A point in world space. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the point. - - - - - Checks a point against colliders in the PhysicsScene2D, returning all intersections. - - A point in world space. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a point against colliders in the PhysicsScene2D, returning all intersections. - - A point in world space. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Casts a ray against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth, or normal angle. - - The cast results returned. - - - - - Casts a ray against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth, or normal angle. - - The cast results returned. - - - - - Casts a ray against colliders the PhysicsScene2D, returning all intersections. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth, or normal angle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Casts a ray against colliders the PhysicsScene2D, returning all intersections. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth, or normal angle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Simulate physics associated with this PhysicsScene. - - The time to advance physics by. - - Whether the simulation was run or not. Running the simulation during physics callbacks will always fail. - - - - - Scene extensions to access the underlying physics scene. - - - - - An extension method that returns the 3D physics Scene from the Scene. - - The Scene from which to return the 3D physics Scene. - - The 3D physics Scene used by the Scene. - - - - - Scene extensions to access the underlying physics scene. - - - - - An extension method that returns the 2D physics Scene from the Scene. - - The Scene from which to return the 2D physics Scene. - - The 2D physics Scene used by the Scene. - - - - - A base type for 2D physics components that required a callback during FixedUpdate. - - - - - Ping any given IP address (given in dot notation). - - - - - The IP target of the ping. - - - - - Has the ping function completed? - - - - - This property contains the ping time result after isDone returns true. - - - - - Perform a ping to the supplied target IP address. - - - - - - Representation of a plane in 3D space. - - - - - Distance from the origin to the plane. - - - - - Returns a copy of the plane that faces in the opposite direction. - - - - - Normal vector of the plane. - - - - - For a given point returns the closest point on the plane. - - The point to project onto the plane. - - A point on the plane that is closest to point. - - - - - Creates a plane. - - - - - - - Creates a plane. - - - - - - - Creates a plane. - - - - - - - - Makes the plane face in the opposite direction. - - - - - Returns a signed distance from plane to point. - - - - - - Is a point on the positive side of the plane? - - - - - - Intersects a ray with the plane. - - - - - - - Are two points on the same side of the plane? - - - - - - - Sets a plane using three points that lie within it. The points go around clockwise as you look down on the top surface of the plane. - - First point in clockwise order. - Second point in clockwise order. - Third point in clockwise order. - - - - Sets a plane using a point that lies within it along with a normal to orient it. - - The plane's normal vector. - A point that lies on the plane. - - - - Returns a copy of the given plane that is moved in space by the given translation. - - The plane to move in space. - The offset in space to move the plane with. - - The translated plane. - - - - - Moves the plane in space by the translation vector. - - The offset in space to move the plane with. - - - - Applies "platform" behaviour such as one-way collisions etc. - - - - - Whether to use one-way collision behaviour or not. - - - - - The rotational offset angle from the local 'up'. - - - - - The angle variance centered on the sides of the platform. Zero angle only matches sides 90-degree to the platform "top". - - - - - The angle of an arc that defines the sides of the platform centered on the local 'left' and 'right' of the effector. Any collision normals within this arc are considered for the 'side' behaviours. - - - - - Whether bounce should be used on the platform sides or not. - - - - - Whether friction should be used on the platform sides or not. - - - - - The angle of an arc that defines the surface of the platform centered of the local 'up' of the effector. - - - - - Should the one-way collision behaviour be used? - - - - - Ensures that all contacts controlled by the one-way behaviour act the same. - - - - - Should bounce be used on the platform sides? - - - - - Should friction be used on the platform sides? - - - - - Implements high-level utility methods to simplify use of the Playable API with Animations. - - - - - Plays the Playable on the given Animator. - - Target Animator. - The Playable that will be played. - The Graph that owns the Playable. - - - - Creates a PlayableGraph to be played on the given Animator. An AnimatorControllerPlayable is also created for the given RuntimeAnimatorController. - - Target Animator. - The RuntimeAnimatorController to create an AnimatorControllerPlayable for. - The created PlayableGraph. - - A handle to the newly-created AnimatorControllerPlayable. - - - - - Creates a PlayableGraph to be played on the given Animator. An AnimationClipPlayable is also created for the given AnimationClip. - - Target Animator. - The AnimationClip to create an AnimationClipPlayable for. - The created PlayableGraph. - - A handle to the newly-created AnimationClipPlayable. - - - - - Creates a PlayableGraph to be played on the given Animator. An AnimationLayerMixerPlayable is also created. - - Target Animator. - The input count for the AnimationLayerMixerPlayable. Defines the number of layers. - The created PlayableGraph. - - A handle to the newly-created AnimationLayerMixerPlayable. - - - - - Creates a PlayableGraph to be played on the given Animator. An AnimationMixerPlayable is also created. - - Target Animator. - The input count for the AnimationMixerPlayable. - The created PlayableGraph. - - A handle to the newly-created AnimationMixerPlayable. - - - - - Describes the type of information that flows in and out of a Playable. This also specifies that this Playable is connectable to others of the same type. - - - - - Describes that the information flowing in and out of the Playable is of Animation type. - - - - - Describes that the information flowing in and out of the Playable is of Audio type. - - - - - Describes that the Playable does not have any particular type. This is use for Playables that execute script code, or that create their own playable graphs, such as the Sequence. - - - - - Describes that the information flowing in and out of the Playable is of type Texture. - - - - - Defines what time source is used to update a Director graph. - - - - - Update is based on DSP (Digital Sound Processing) clock. Use this for graphs that need to be synchronized with Audio. - - - - - Update is based on Time.time. Use this for graphs that need to be synchronized on gameplay, and that need to be paused when the game is paused. - - - - - Update mode is manual. You need to manually call PlayableGraph.Evaluate with your own deltaTime. This can be useful for graphs that are completely disconnected from the rest of the game. For example, localized bullet time. - - - - - Update is based on Time.unscaledTime. Use this for graphs that need to be updated even when gameplay is paused. Example: Menus transitions need to be updated even when the game is paused. - - - - - Wrap mode for Playables. - - - - - Hold the last frame when the playable time reaches it's duration. - - - - - Loop back to zero time and continue playing. - - - - - Do not keep playing when the time reaches the duration. - - - - - This structure contains the frame information a Playable receives in Playable.PrepareFrame. - - - - - Time difference between this frame and the preceding frame. - - - - - The accumulated delay of the parent Playable during the PlayableGraph traversal. - - - - - The accumulated speed of the parent Playable during the PlayableGraph traversal. - - - - - The accumulated play state of this playable. - - - - - The accumulated speed of the Playable during the PlayableGraph traversal. - - - - - The accumulated weight of the Playable during the PlayableGraph traversal. - - - - - Indicates the type of evaluation that caused PlayableGraph.PrepareFrame to be called. - - - - - The current frame identifier. - - - - - The PlayableOutput that initiated this graph traversal. - - - - - Indicates that the local time was explicitly set. - - - - - Indicates the local time did not advance because it has reached the duration and the extrapolation mode is set to Hold. - - - - - Indicates the local time wrapped because it has reached the duration and the extrapolation mode is set to Loop. - - - - - The weight of the current Playable. - - - - - Describes the cause for the evaluation of a PlayableGraph. - - - - - Indicates the graph was updated due to a call to PlayableGraph.Evaluate. - - - - - Indicates the graph was called by the runtime during normal playback due to PlayableGraph.Play being called. - - - - - The base interface for all notifications sent through the playable system. - - - - - The identifier is a name that identifies this notifications, or class of notifications. - - - - - Implement this interface to create a class that will receives notifications from PlayableOutput. - - - - - The method called when a notification is raised. - - The playable that sent the notification. - The received notification. - User defined data that depends on the type of notification. Uses this to pass necessary information that can change with each invocation. - - - - Interface implemented by all C# Playable implementations. - - - - - Interface that permits a class to inject playables into a graph. - - - - - Duration in seconds. - - - - - A description of the PlayableOutputs generated by this asset. - - - - - Implement this method to have your asset inject playables into the given graph. - - The graph to inject playables into. - The game object which initiated the build. - - The playable injected into the graph, or the root playable if multiple playables are injected. - - - - - Interface implemented by all C# Playable Behaviour implementations. - - - - - Interface implemented by all C# Playable output implementations. - - - - - Default implementation for Playable notifications. - - - - - The name that identifies this notification. - - - - - Creates a new notification with the name specified in the argument. - - The name that identifies this notifications. - - - - Playables are customizable runtime objects that can be connected together and are contained in a PlayableGraph to create complex behaviours. - - - - - Returns an invalid Playable. - - - - - A base class for assets that can be used to instantiate a Playable at runtime. - - - - - The playback duration in seconds of the instantiated Playable. - - - - - A description of the outputs of the instantiated Playable. - - - - - Implement this method to have your asset inject playables into the given graph. - - The graph to inject playables into. - The game object which initiated the build. - - The playable injected into the graph, or the root playable if multiple playables are injected. - - - - - PlayableBehaviour is the base class from which every custom playable script derives. - - - - - This function is called when the Playable play state is changed to Playables.PlayState.Delayed. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - - - - This method is invoked when one of the following situations occurs: -<br><br> - The effective play state during traversal is changed to Playables.PlayState.Paused. This state is indicated by FrameData.effectivePlayState.<br><br> - The PlayableGraph is stopped while the playable play state is Playing. This state is indicated by PlayableGraph.IsPlaying returning true. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - - - - This function is called when the Playable play state is changed to Playables.PlayState.Playing. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - - - - This function is called when the PlayableGraph that owns this PlayableBehaviour starts. - - The Playable that owns the current PlayableBehaviour. - - - - This function is called when the PlayableGraph that owns this PlayableBehaviour stops. - - The Playable that owns the current PlayableBehaviour. - - - - This function is called when the Playable that owns the PlayableBehaviour is created. - - The Playable that owns the current PlayableBehaviour. - - - - This function is called when the Playable that owns the PlayableBehaviour is destroyed. - - The Playable that owns the current PlayableBehaviour. - - - - This function is called during the PrepareData phase of the PlayableGraph. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - - - - This function is called during the PrepareFrame phase of the PlayableGraph. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - - - - This function is called during the ProcessFrame phase of the PlayableGraph. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - The user data of the ScriptPlayableOutput that initiated the process pass. - - - - Struct that holds information regarding an output of a PlayableAsset. - - - - - The type of target required by the PlayableOutput for this PlayableBinding. - - - - - A reference to a UnityEngine.Object that acts a key for this binding. - - - - - The name of the output or input stream. - - - - - The type of the output or input stream. - - - - - The default duration used when a PlayableOutput has no fixed duration. - - - - - A constant to represent a PlayableAsset has no bindings. - - - - - Instantiates a PlayableAsset and controls playback of Playable objects. - - - - - The duration of the Playable in seconds. - - - - - Controls how the time is incremented when it goes beyond the duration of the playable. - - - - - The time at which the Playable should start when first played. - - - - - Event that is raised when a PlayableDirector component has paused. - - - - - - The PlayableAsset that is used to instantiate a playable for playback. - - - - - The PlayableGraph created by the PlayableDirector. - - - - - Event that is raised when a PlayableDirector component has begun playing. - - - - - - Whether the playable asset will start playing back as soon as the component awakes. - - - - - The current playing state of the component. (Read Only) - - - - - Event that is raised when a PlayableDirector component has stopped. - - - - - - The component's current time. This value is incremented according to the PlayableDirector.timeUpdateMode when it is playing. You can also change this value manually. - - - - - Controls how time is incremented when playing back. - - - - - Clears the binding of a reference object. - - The source object in the PlayableBinding. - - - - Clears an exposed reference value. - - Identifier of the ExposedReference. - - - - Tells the PlayableDirector to evaluate it's PlayableGraph on the next update. - - - - - Evaluates the currently playing Playable at the current time. - - - - - Returns a binding to a reference object. - - The object that acts as a key. - - - - Retreives an ExposedReference binding. - - Identifier of the ExposedReference. - Whether the reference was found. - - - - Pauses playback of the currently running playable. - - - - - Instatiates a Playable using the provided PlayableAsset and starts playback. - - An asset to instantiate a playable from. - What to do when the time passes the duration of the playable. - - - - Instatiates a Playable using the provided PlayableAsset and starts playback. - - An asset to instantiate a playable from. - What to do when the time passes the duration of the playable. - - - - Instatiates a Playable using the provided PlayableAsset and starts playback. - - An asset to instantiate a playable from. - What to do when the time passes the duration of the playable. - - - - Rebinds each PlayableOutput of the PlayableGraph. - - - - - Discards the existing PlayableGraph and creates a new instance. - - - - - Resume playing a paused playable. - - - - - Sets the binding of a reference object from a PlayableBinding. - - The source object in the PlayableBinding. - The object to bind to the key. - - - - Sets an ExposedReference value. - - Identifier of the ExposedReference. - The object to bind to set the reference value to. - - - - Stops playback of the current Playable and destroys the corresponding graph. - - - - - Extensions for all the types that implements IPlayable. - - - - - Create a new input port and connect it to the output port of the given Playable. - - The Playable used by this operation. - The Playable to connect to. - The output port of the Playable. - The weight of the created input port. - - The index of the newly created input port. - - - - - Connect the output port of a Playable to one of the input ports. - - The Playable used by this operation. - The input port index. - The Playable to connect to. - The output port of the Playable. - The weight of the input port. - - - - Destroys the current Playable. - - The Playable used by this operation. - - - - Disconnect the input port of a Playable. - - The Playable used by this operation. - The input port index. - - - - Returns the delay of the playable. - - The Playable used by this operation. - - The delay in seconds. - - - - - Returns the duration of the Playable. - - The Playable used by this operation. - - The duration in seconds. - - - - - Returns the PlayableGraph that owns this Playable. A Playable can only be used in the graph that was used to create it. - - The Playable used by this operation. - - The PlayableGraph associated with the current Playable. - - - - - Returns the Playable connected at the given input port index. - - The Playable used by this operation. - The port index. - - Playable connected at the index specified, or null if the index is valid but is not connected to anything. This happens if there was once a Playable connected at the index, but was disconnected via PlayableGraph.Disconnect. - - - - - Returns the number of inputs supported by the Playable. - - The Playable used by this operation. - - The count of inputs on the Playable. - - - - - Returns the weight of the Playable connected at the given input port index. - - The Playable used by this operation. - The port index. - - The current weight of the connected Playable. - - - - - Returns the Playable lead time in seconds. - - The Playable used by this operation. - - - - Returns the Playable connected at the given output port index. - - The Playable used by this operation. - The port index. - - Playable connected at the output index specified, or null if the index is valid but is not connected to anything. This happens if there was once a Playable connected at the index, but was disconnected via PlayableGraph.Disconnect. - - - - - Returns the number of outputs supported by the Playable. - - The Playable used by this operation. - - The count of outputs on the Playable. - - - - - Returns the current PlayState of the Playable. - - The Playable used by this operation. - - The current PlayState of the Playable. - - - - - Returns the previous local time of the Playable. - - The Playable used by this operation. - - The previous time in seconds. - - - - - Returns the time propagation behavior of this Playable. - - The Playable used by this operation. - - True if time propagation is enabled. - - - - - Returns the speed multiplier that is applied to the the current Playable. - - The Playable used by this operation. - - The current speed. - - - - - Returns the current local time of the Playable. - - The Playable used by this operation. - - The current time in seconds. - - - - - Returns the propagation mode for the multi-output playable. - - - - Traversal mode (Mix or Passthrough). - - - - - Returns whether or not the Playable has a delay. - - The Playable used by this operation. - - True if the playable is delayed, false otherwise. - - - - - Returns a flag indicating that a playable has completed its operation. - - The Playable used by this operation. - - True if the playable has completed its operation, false otherwise. - - - - - Returns true if the Playable is null, false otherwise. - - The Playable used by this operation. - - - - Returns the vality of the current Playable. - - The Playable used by this operation. - - True if the Playable is properly constructed by the PlayableGraph and has not been destroyed, false otherwise. - - - - - Tells to pause the Playable. - - The Playable used by this operation. - - - - Starts to play the Playable. - - The Playable used by this operation. - - - - Set a delay until the playable starts. - - The Playable used by this operation. - The delay in seconds. - - - - Changes a flag indicating that a playable has completed its operation. - - The Playable used by this operation. - True if the operation is completed, false otherwise. - - - - Changes the duration of the Playable. - - The Playable used by this operation. - The new duration in seconds, must be a positive value. - - - - Changes the number of inputs supported by the Playable. - - The Playable used by this operation. - - - - - Changes the weight of the Playable connected to the current Playable. - - The Playable used by this operation. - The connected Playable to change. - The weight. Should be between 0 and 1. - - - - - Changes the weight of the Playable connected to the current Playable. - - The Playable used by this operation. - The connected Playable to change. - The weight. Should be between 0 and 1. - - - - - Sets the Playable lead time in seconds. - - The Playable used by this operation. - The new lead time in seconds. - - - - Changes the number of outputs supported by the Playable. - - The Playable used by this operation. - - - - - Changes the current PlayState of the Playable. - - The Playable used by this operation. - The new PlayState. - - - - Changes the time propagation behavior of this Playable. - - The Playable used by this operation. - True to enable time propagation. - - - - Changes the speed multiplier that is applied to the the current Playable. - - The Playable used by this operation. - The new speed. - - - - Changes the current local time of the Playable. - - The Playable used by this operation. - The current time in seconds. - - - - Sets the propagation mode of PrepareFrame and ProcessFrame for the multi-output playable. - - The Playable used by this operation. - The new traversal mode. - - - - Use the PlayableGraph to manage Playable creations and destructions. - - - - - Connects two Playable instances. - - The source playable or its handle. - The port used in the source playable. - The destination playable or its handle. - The port used in the destination playable. - - Returns true if connection is successful. - - - - - Creates a PlayableGraph. - - The name of the graph. - - The newly created PlayableGraph. - - - - - Creates a PlayableGraph. - - The name of the graph. - - The newly created PlayableGraph. - - - - - Destroys the graph. - - - - - Destroys the PlayableOutput. - - The output to destroy. - - - - Destroys the Playable. - - The playable to destroy. - - - - Destroys the Playable and all its inputs, recursively. - - The Playable to destroy. - - - - Disconnects the Playable. The connections determine the topology of the PlayableGraph and how it is evaluated. - - The source playabe or its handle. - The port used in the source playable. - - - - Evaluates all the PlayableOutputs in the graph, and updates all the connected Playables in the graph. - - The time in seconds by which to advance each Playable in the graph. - - - - Evaluates all the PlayableOutputs in the graph, and updates all the connected Playables in the graph. - - The time in seconds by which to advance each Playable in the graph. - - - - Returns the name of the PlayableGraph. - - - - - Get PlayableOutput at the given index in the graph. - - The output index. - - The PlayableOutput at this given index, otherwise null. - - - - - Get PlayableOutput of the requested type at the given index in the graph. - - The output index. - - The PlayableOutput at the given index among all the PlayableOutput of the same type T. - - - - - Returns the number of PlayableOutput in the graph. - - - The number of PlayableOutput in the graph. - - - - - Get the number of PlayableOutput of the requested type in the graph. - - - The number of PlayableOutput of the same type T in the graph. - - - - - Returns the number of Playable owned by the Graph. - - - - - Returns the table used by the graph to resolve ExposedReferences. - - - - - Returns the Playable with no output connections at the given index. - - The index of the root Playable. - - - - Returns the number of Playable owned by the Graph that have no connected outputs. - - - - - Returns how time is incremented when playing back. - - - - - Indicates that a graph has completed its operations. - - - A boolean indicating if the graph is done playing or not. - - - - - Indicates that a graph is presently running. - - - A boolean indicating if the graph is playing or not. - - - - - Returns true if the PlayableGraph has been properly constructed using PlayableGraph.CreateGraph and is not deleted. - - - A boolean indicating if the graph is invalid or not. - - - - - Plays the graph. - - - - - Changes the table used by the graph to resolve ExposedReferences. - - - - - - Changes how time is incremented when playing back. - - The new DirectorUpdateMode. - - - - Stops the graph, if it is playing. - - - - - See: Playables.IPlayableOutput. - - - - - Returns an invalid PlayableOutput. - - - - - Extensions for all the types that implements IPlayableOutput. - - - - - Registers a new receiver that listens for notifications. - - The target output. - The receiver to register. - - - - Retrieves the list of notification receivers currently registered on the output. - - The output holding the receivers. - - Returns the list of registered receivers. - - - - - Returns the source playable's output connection index. - - The PlayableOutput used by this operation. - - The output port. - - - - - Returns the source playable. - - The PlayableOutput used by this operation. - - The source playable. - - - - - Returns the opaque user data. This is the same value as the last last argument of ProcessFrame. - - The PlayableOutput used by this operation. - - The user data. - - - - - Returns the weight of the connection from the PlayableOutput to the source playable. - - The PlayableOutput used by this operation. - - The weight of the connection to the source playable. - - - - - Returns true if the PlayableOutput is null, false otherwise. - - The PlayableOutput used by this operation. - - - - - - The PlayableOutput used by this operation. - - True if the PlayableOutput has not yet been destroyed and false otherwise. - - - - - Queues a notification to be sent through the Playable system. - - The output sending the notification. - The originating playable of the notification. - The notification to be sent. - Extra information about the state when the notification was fired. - - - - Unregisters a receiver on the output. - - The target output. - The receiver to unregister. - - - - Sets the bound object to a new value. Used to associate an output to an object (Track asset in case of Timeline). - - The PlayableOutput used by this operation. - The new reference object value. - - - - Sets the source playable's output connection index. For playables with multiple outputs, this determines which sub-branch of the source playable generates this output. - - The PlayableOutput used by this operation. - The new output port value. - - - - Sets which playable that computes the output and which sub-tree index. - - The PlayableOutput used by this operation. - The new source Playable. - The new output port value. - - - - Sets which playable that computes the output. - - The PlayableOutput used by this operation. - The new source Playable. - - - - Sets the opaque user data. This same data is passed as the last argument to ProcessFrame. - - The PlayableOutput used by this operation. - The new user data. - - - - Sets the weight of the connection from the PlayableOutput to the source playable. - - The PlayableOutput used by this operation. - The new weight. - - - - Traversal mode for Playables. - - - - - Causes the Playable to prepare and process it's inputs when demanded by an output. - - - - - Causes the Playable to act as a passthrough for PrepareFrame and ProcessFrame. If the PlayableOutput being processed is connected to the n-th input port of the Playable, the Playable only propagates the n-th output port. Use this enum value in conjunction with PlayableOutput SetSourceOutputPort. - - - - - Status of a Playable. - - - - - The Playable has been delayed, using PlayableExtensions.SetDelay. It will not start until the delay is entirely consumed. - - - - - The Playable has been paused. Its local time will not advance. - - - - - The Playable is currently Playing. - - - - - A IPlayable implementation that contains a PlayableBehaviour for the PlayableGraph. PlayableBehaviour can be used to write custom Playable that implement their own PrepareFrame callback. - - - - - A PlayableBinding that contains information representing a ScriptingPlayableOutput. - - - - - Creates a PlayableBinding that contains information representing a ScriptPlayableOutput. - - A reference to a UnityEngine.Object that acts as a key for this binding. - The type of object that will be bound to the ScriptPlayableOutput. - The name of the ScriptPlayableOutput. - - Returns a PlayableBinding that contains information that is used to create a ScriptPlayableOutput. - - - - - A IPlayableOutput implementation that contains a script output for the a PlayableGraph. - - - - - Creates a new ScriptPlayableOutput in the associated PlayableGraph. - - The PlayableGraph that will contain the ScriptPlayableOutput. - The name of this ScriptPlayableOutput. - - The created ScriptPlayableOutput. - - - - - Returns an invalid ScriptPlayableOutput. - - - - - Stores and accesses player preferences between game sessions. - - - - - Removes all keys and values from the preferences. Use with caution. - - - - - Removes key and its corresponding value from the preferences. - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns true if key exists in the preferences. - - - - - - Writes all modified preferences to disk. - - - - - Sets the value of the preference identified by key. - - - - - - - Sets the value of the preference identified by key. - - - - - - - Sets the value of the preference identified by key. - - - - - - - An exception thrown by the PlayerPrefs class in a web player build. - - - - - Used by Animation.Play function. - - - - - Will stop all animations that were started with this component before playing. - - - - - Will stop all animations that were started in the same layer. This is the default when playing animations. - - - - - Applies forces to attract/repulse against a point. - - - - - The angular drag to apply to rigid-bodies. - - - - - The scale applied to the calculated distance between source and target. - - - - - The linear drag to apply to rigid-bodies. - - - - - The magnitude of the force to be applied. - - - - - The mode used to apply the effector force. - - - - - The source which is used to calculate the centroid point of the effector. The distance from the target is defined from this point. - - - - - The target for where the effector applies any force. - - - - - The variation of the magnitude of the force to be applied. - - - - - Collider for 2D physics representing an arbitrary polygon defined by its vertices. - - - - - Determines whether the PolygonCollider2D's shape is automatically updated based on a SpriteRenderer's tiling properties. - - - - - The number of paths in the polygon. - - - - - Corner points that define the collider's shape in local space. - - - - - Creates as regular primitive polygon with the specified number of sides. - - The number of sides in the polygon. This must be greater than two. - The X/Y scale of the polygon. These must be greater than zero. - The X/Y offset of the polygon. - - - - Gets a path from the Collider by its index. - - The index of the path to retrieve. - - An ordered array of the vertices or points in the selected path. - - - - - Return the total number of points in the polygon in all paths. - - - - - Define a path by its constituent points. - - Index of the path to set. - Points that define the path. - - - - Representation of a Position, and a Rotation in 3D Space - - - - - Returns the forward vector of the pose. - - - - - Shorthand for pose which represents zero position, and an identity rotation. - - - - - The position component of the pose. - - - - - Returns the right vector of the pose. - - - - - The rotation component of the pose. - - - - - Returns the up vector of the pose. - - - - - Creates a new pose with the given vector, and quaternion values. - - - - - Transforms the current pose into the local space of the provided pose. - - - - - - Transforms the current pose into the local space of the provided pose. - - - - - - Returns true if two poses are equal. - - - - - - - Returns true if two poses are not equal. - - - - - - - Prefer ScriptableObject derived type to use binary serialization regardless of project's asset serialization mode. - - - - - The various primitives that can be created using the GameObject.CreatePrimitive function. - - - - - A capsule primitive. - - - - - A cube primitive. - - - - - A cylinder primitive. - - - - - A plane primitive. - - - - - A quad primitive. - - - - - A sphere primitive. - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - Triggers an immediate (synchronous) rebuild of this ProceduralMaterial's dirty textures. - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - - - - - Deprecated feature, no longer available - - - - - Custom CPU Profiler label used for profiling arbitrary code blocks. - - - - - Begin profiling a piece of code with a custom label defined by this instance of CustomSampler. - - - - - - Begin profiling a piece of code with a custom label defined by this instance of CustomSampler. - - - - - - Creates a new CustomSampler for profiling parts of your code. - - Name of the Sampler. - - CustomSampler object or null if a built-in Sampler with the same name exists. - - - - - End profiling a piece of code with a custom label. - - - - - Flags that specify which fields to capture in a snapshot. - - - - - Corresponds to the ManagedHeapSections, ManagedStacks, Connections, TypeDescriptions fields in a Memory Snapshot. - - - - - Corresponds to the NativeAllocations, NativeMemoryRegions, NativeRootReferences, and NativeMemoryLabels fields in a Memory Snapshot. - - - - - Corresponds to the NativeAllocationSite field in a Memory Snapshot. - - - - - Corresponds to the NativeObject and NativeType fields in a Memory Snapshot. - - - - - Corresponds to the NativeCallstackSymbol field in a Memory Snapshot. - - - - - Memory profiling API container class. - - - - - Event to which meta data collection methods can be subscribed to. - - - - - - Trigger memory snapshot capture. - - Destination path for the memory snapshot file. - Event that is fired once the memory snapshot has finished the process of capturing data. - Flag mask defining the content of the memory snapshot. - - - - Trigger memory snapshot capture to Application.temporaryCachePath folder. - - Event that is fired once the memory snapshot has finished the process of capturing data. - Flag mask defining the content of the memory snapshot. - - - - Container for memory snapshot meta data. - - - - - User defined meta data. - - - - - Memory snapshot meta data containing platform information. - - - - - Screenshot stored in the memory snapshot. - - - - - Controls the from script. - - - - - The number of ProfilerArea|Profiler Areas that you can profile. - - - - - Enables the logging of profiling data to a file. - - - - - Enables the Profiler. - - - - - Specifies the file to use when writing profiling data. - - - - - Resize the profiler sample buffers to allow the desired amount of samples per thread. - - - - - Sets the maximum amount of memory that Profiler uses for buffering data. This property is expressed in bytes. - - - - - Heap size used by the program. - - - Size of the used heap in bytes, (or 0 if the profiler is disabled). - - - - - Returns the number of bytes that Unity has allocated. This does not include bytes allocated by external libraries or drivers. - - - Size of the memory allocated by Unity (or 0 if the profiler is disabled). - - - - - Displays the recorded profile data in the profiler. - - The name of the file containing the frame data, including extension. - - - - Begin profiling a piece of code with a custom label. - - A string to identify the sample in the Profiler window. - An object that provides context to the sample,. - - - - Begin profiling a piece of code with a custom label. - - A string to identify the sample in the Profiler window. - An object that provides context to the sample,. - - - - Enables profiling on the thread from which you call this method. - - The name of the thread group to which the thread belongs. - The name of the thread. - - - - Ends the current profiling sample. - - - - - Frees the internal resources used by the Profiler for the thread. - - - - - Returns the amount of allocated memory for the graphics driver, in bytes. - -Only available in development players and editor. - - - - - Returns whether or not a given ProfilerArea is currently enabled. - - Which area you want to check the state of. - - Returns whether or not a given ProfilerArea is currently enabled. - - - - - Returns the size of the mono heap. - - - - - Returns the size of the reserved space for managed-memory. - - - The size of the managed heap. This returns 0 if the Profiler is not available. - - - - - Returns the used size from mono. - - - - - The allocated managed-memory for live objects and non-collected objects. - - - A long integer value of the memory in use. This returns 0 if the Profiler is not available. - - - - - Returns the runtime memory usage of the resource. - - - - - - Gathers the native-memory used by a Unity object. - - The target Unity object. - - The amount of native-memory used by a Unity object. This returns 0 if the Profiler is not available. - - - - - Returns the size of the temp allocator. - - - Size in bytes. - - - - - Returns the amount of allocated and used system memory. - - - - - The total memory allocated by the internal allocators in Unity. Unity reserves large pools of memory from the system. This function returns the amount of used memory in those pools. - - - The amount of memory allocated by Unity. This returns 0 if the Profiler is not available. - - - - - Returns the amount of reserved system memory. - - - - - The total memory Unity has reserved. - - - Memory reserved by Unity in bytes. This returns 0 if the Profiler is not available. - - - - - Returns the amount of reserved but not used system memory. - - - - - Unity allocates memory in pools for usage when unity needs to allocate memory. This function returns the amount of unused memory in these pools. - - - The amount of unused memory in the reserved pools. This returns 0 if the Profiler is not available. - - - - - Enable or disable a given ProfilerArea. - - The area you want to enable or disable. - Enable or disable the collection of data for this area. - - - - Sets the size of the temp allocator. - - Size in bytes. - - Returns true if requested size was successfully set. Will return false if value is disallowed (too small). - - - - - The different areas of profiling, corresponding to the charts in ProfilerWindow. - - - - - Audio statistics. - - - - - CPU statistics. - - - - - Global Illumination statistics. - - - - - GPU statistics. - - - - - Memory statistics. - - - - - Network messages statistics. - - - - - Network operations statistics. - - - - - 3D Physics statistics. - - - - - 2D physics statistics. - - - - - Rendering statistics. - - - - - UI statistics. - - - - - Detailed UI statistics. - - - - - Video playback statistics. - - - - - Records profiling data produced by a specific Sampler. - - - - - Accumulated time of Begin/End pairs for the previous frame in nanoseconds. (Read Only) - - - - - Enables recording. - - - - - Returns true if Recorder is valid and can collect data. (Read Only) - - - - - Number of time Begin/End pairs was called during the previous frame. (Read Only) - - - - - Configures the recorder to collect samples from all threads. - - - - - Configures the recorder to only collect data from the current thread. - - - - - Use this function to get a Recorder for the specific Profiler label. - - Sampler name. - - Recorder object for the specified Sampler. - - - - - Provides control over a CPU Profiler label. - - - - - Returns true if Sampler is valid. (Read Only) - - - - - Sampler name. (Read Only) - - - - - Returns Sampler object for the specific CPU Profiler label. - - Profiler Sampler name. - - Sampler object which represents specific profiler label. - - - - - Returns number and names of all registered Profiler labels. - - Preallocated list the Sampler names are written to. Or null if you want to get number of Samplers only. - - Number of active Samplers. - - - - - Returns Recorder associated with the Sampler. - - - Recorder object associated with the Sampler. - - - - - A script interface for a. - - - - - The aspect ratio of the projection. - - - - - The far clipping plane distance. - - - - - The field of view of the projection in degrees. - - - - - Which object layers are ignored by the projector. - - - - - The material that will be projected onto every object. - - - - - The near clipping plane distance. - - - - - Is the projection orthographic (true) or perspective (false)? - - - - - Projection's half-size when in orthographic mode. - - - - - Base class to derive custom property attributes from. Use this to create custom attributes for script variables. - - - - - Optional field to specify the order that multiple DecorationDrawers should be drawn in. - - - - - Represents a string as an int for efficient lookup and comparison. Use this for common PropertyNames. - -Internally stores just an int to represent the string. A PropertyName can be created from a string but can not be converted back to a string. The same string always results in the same int representing that string. Thus this is a very efficient string representation in both memory and speed when all you need is comparison. - -PropertyName is serializable. - -ToString() is only implemented for debugging purposes in the editor it returns "theName:3737" in the player it returns "Unknown:3737". - - - - - Initializes the PropertyName using a string. - - - - - - Determines whether this instance and a specified object, which must also be a PropertyName object, have the same value. - - - - - - Returns the hash code for this PropertyName. - - - - - Converts the string passed into a PropertyName. See Also: PropertyName.ctor(System.String). - - - - - - Indicates whether the specified PropertyName is an Empty string. - - - - - - Determines whether two specified PropertyName have the same string value. Because two PropertyNames initialized with the same string value always have the same name index, we can simply perform a comparison of two ints to find out if the string value equals. - - - - - - - Determines whether two specified PropertyName have a different string value. - - - - - - - For debugging purposes only. Returns the string value representing the string in the Editor. -Returns "UnityEngine.PropertyName" in the player. - - - - - Script interface for. - - - - - Active color space (Read Only). - - - - - Global anisotropic filtering mode. - - - - - Set The AA Filtering option. - - - - - Async texture upload provides timesliced async texture upload on the render thread with tight control over memory and timeslicing. There are no allocations except for the ones which driver has to do. To read data and upload texture data a ringbuffer whose size can be controlled is re-used. - -Use asyncUploadBufferSize to set the buffer size for asynchronous texture uploads. The size is in megabytes. Minimum value is 2 and maximum is 512. Although the buffer will resize automatically to fit the largest texture currently loading, it is recommended to set the value approximately to the size of biggest texture used in the Scene to avoid re-sizing of the buffer which can incur performance cost. - - - - - This flag controls if the async upload pipeline's ring buffer remains allocated when there are no active loading operations. -To make the ring buffer allocation persist after all upload operations have completed, set this to true. -If you have issues with excessive memory usage, you can set this to false. This means you reduce the runtime memory footprint, but memory fragmentation can occur. -The default value is true. - - - - - Async texture upload provides timesliced async texture upload on the render thread with tight control over memory and timeslicing. There are no allocations except for the ones which driver has to do. To read data and upload texture data a ringbuffer whose size can be controlled is re-used. - -Use asyncUploadTimeSlice to set the time-slice in milliseconds for asynchronous texture uploads per -frame. Minimum value is 1 and maximum is 33. - - - - - If enabled, billboards will face towards camera position rather than camera orientation. - - - - - Blend weights. - - - - - Desired color space (Read Only). - - - - - Global multiplier for the LOD's switching distance. - - - - - A texture size limit applied to all textures. - - - - - A maximum LOD level. All LOD groups. - - - - - Maximum number of frames queued up by graphics driver. - - - - - The indexed list of available Quality Settings. - - - - - Budget for how many ray casts can be performed per frame for approximate collision testing. - - - - - The maximum number of pixel lights that should affect any object. - - - - - Enables realtime reflection probes. - - - - - In resolution scaling mode, this factor is used to multiply with the target Fixed DPI specified to get the actual Fixed DPI to use for this quality setting. - - - - - The normalized cascade distribution for a 2 cascade setup. The value defines the position of the cascade with respect to Zero. - - - - - The normalized cascade start position for a 4 cascade setup. Each member of the vector defines the normalized position of the coresponding cascade with respect to Zero. - - - - - Number of cascades to use for directional light shadows. - - - - - Shadow drawing distance. - - - - - The rendering mode of Shadowmask. - - - - - Offset shadow frustum near plane. - - - - - Directional light shadow projection. - - - - - The default resolution of the shadow maps. - - - - - Realtime Shadows type to be used. - - - - - Should soft blending be used for particles? - - - - - Use a two-pass shader for the vegetation in the terrain engine. - - - - - Enable automatic streaming of texture mipmap levels based on their distance from all active cameras. - - - - - Process all enabled Cameras for texture streaming (rather than just those with StreamingController components). - - - - - The maximum number of active texture file IO requests from the texture streaming system. - - - - - The maximum number of mipmap levels to discard for each texture. - - - - - The total amount of memory to be used by streaming and non-streaming textures. - - - - - Number of renderers used to process each frame during the calculation of desired mipmap levels for the associated textures. - - - - - The VSync Count. - - - - - Decrease the current quality level. - - Should expensive changes be applied (Anti-aliasing etc). - - - - Returns the current graphics quality level. - - - - - Increase the current quality level. - - Should expensive changes be applied (Anti-aliasing etc). - - - - Sets a new graphics quality level. - - Quality index to set. - Should expensive changes be applied (Anti-aliasing etc). - - - - Quaternions are used to represent rotations. - - - - - Returns or sets the euler angle representation of the rotation. - - - - - The identity rotation (Read Only). - - - - - Returns this quaternion with a magnitude of 1 (Read Only). - - - - - W component of the Quaternion. Do not directly modify quaternions. - - - - - X component of the Quaternion. Don't modify this directly unless you know quaternions inside out. - - - - - Y component of the Quaternion. Don't modify this directly unless you know quaternions inside out. - - - - - Z component of the Quaternion. Don't modify this directly unless you know quaternions inside out. - - - - - Returns the angle in degrees between two rotations a and b. - - - - - - - Creates a rotation which rotates angle degrees around axis. - - - - - - - Constructs new Quaternion with given x,y,z,w components. - - - - - - - - - The dot product between two rotations. - - - - - - - Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis. - - - - - - - - Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis. - - - - - - Creates a rotation which rotates from fromDirection to toDirection. - - - - - - - Returns the Inverse of rotation. - - - - - - Interpolates between a and b by t and normalizes the result afterwards. The parameter t is clamped to the range [0, 1]. - - - - - - - - Interpolates between a and b by t and normalizes the result afterwards. The parameter t is not clamped. - - - - - - - - Creates a rotation with the specified forward and upwards directions. - - The direction to look in. - The vector that defines in which direction up is. - - - - Creates a rotation with the specified forward and upwards directions. - - The direction to look in. - The vector that defines in which direction up is. - - - - Converts this quaternion to one with the same orientation but with a magnitude of 1. - - - - - - Are two quaternions equal to each other? - - - - - - - Combines rotations lhs and rhs. - - Left-hand side quaternion. - Right-hand side quaternion. - - - - Rotates the point point with rotation. - - - - - - - Rotates a rotation from towards to. - - - - - - - - Set x, y, z and w components of an existing Quaternion. - - - - - - - - - Creates a rotation which rotates from fromDirection to toDirection. - - - - - - - Creates a rotation with the specified forward and upwards directions. - - The direction to look in. - The vector that defines in which direction up is. - - - - Creates a rotation with the specified forward and upwards directions. - - The direction to look in. - The vector that defines in which direction up is. - - - - Spherically interpolates between a and b by t. The parameter t is clamped to the range [0, 1]. - - - - - - - - Spherically interpolates between a and b by t. The parameter t is not clamped. - - - - - - - - Access the x, y, z, w components using [0], [1], [2], [3] respectively. - - - - - Converts a rotation to angle-axis representation (angles in degrees). - - - - - - - Returns a nicely formatted string of the Quaternion. - - - - - - Returns a nicely formatted string of the Quaternion. - - - - - - Overrides the global Physics.queriesHitTriggers. - - - - - Queries always report Trigger hits. - - - - - Queries never report Trigger hits. - - - - - Queries use the global Physics.queriesHitTriggers setting. - - - - - Used by Animation.Play function. - - - - - Will start playing after all other animations have stopped playing. - - - - - Starts playing immediately. This can be used if you just want to quickly create a duplicate animation. - - - - - Class for generating random data. - - - - - Returns a random point inside a circle with radius 1 (Read Only). - - - - - Returns a random point inside a sphere with radius 1 (Read Only). - - - - - Returns a random point on the surface of a sphere with radius 1 (Read Only). - - - - - Returns a random rotation (Read Only). - - - - - Returns a random rotation with uniform distribution (Read Only). - - - - - Gets/Sets the full internal state of the random number generator. - - - - - Returns a random number between 0.0 [inclusive] and 1.0 [inclusive] (Read Only). - - - - - Generates a random color from HSV and alpha ranges. - - Minimum hue [0..1]. - Maximum hue [0..1]. - Minimum saturation [0..1]. - Maximum saturation[0..1]. - Minimum value [0..1]. - Maximum value [0..1]. - Minimum alpha [0..1]. - Maximum alpha [0..1]. - - A random color with HSV and alpha values in the input ranges. - - - - - Generates a random color from HSV and alpha ranges. - - Minimum hue [0..1]. - Maximum hue [0..1]. - Minimum saturation [0..1]. - Maximum saturation[0..1]. - Minimum value [0..1]. - Maximum value [0..1]. - Minimum alpha [0..1]. - Maximum alpha [0..1]. - - A random color with HSV and alpha values in the input ranges. - - - - - Generates a random color from HSV and alpha ranges. - - Minimum hue [0..1]. - Maximum hue [0..1]. - Minimum saturation [0..1]. - Maximum saturation[0..1]. - Minimum value [0..1]. - Maximum value [0..1]. - Minimum alpha [0..1]. - Maximum alpha [0..1]. - - A random color with HSV and alpha values in the input ranges. - - - - - Generates a random color from HSV and alpha ranges. - - Minimum hue [0..1]. - Maximum hue [0..1]. - Minimum saturation [0..1]. - Maximum saturation[0..1]. - Minimum value [0..1]. - Maximum value [0..1]. - Minimum alpha [0..1]. - Maximum alpha [0..1]. - - A random color with HSV and alpha values in the input ranges. - - - - - Generates a random color from HSV and alpha ranges. - - Minimum hue [0..1]. - Maximum hue [0..1]. - Minimum saturation [0..1]. - Maximum saturation[0..1]. - Minimum value [0..1]. - Maximum value [0..1]. - Minimum alpha [0..1]. - Maximum alpha [0..1]. - - A random color with HSV and alpha values in the input ranges. - - - - - Initializes the random number generator state with a seed. - - Seed used to initialize the random number generator. - - - - Return a random float number between min [inclusive] and max [inclusive] (Read Only). - - - - - - - Return a random integer number between min [inclusive] and max [exclusive] (Read Only). - - - - - - - Serializable structure used to hold the full internal state of the random number generator. See Also: Random.state. - - - - - Attribute used to make a float or int variable in a script be restricted to a specific range. - - - - - Attribute used to make a float or int variable in a script be restricted to a specific range. - - The minimum allowed value. - The maximum allowed value. - - - - Describes an integer range. - - - - - The end index of the range (not inclusive). - - - - - The length of the range. - - - - - The starting index of the range, where 0 is the first position, 1 is the second, 2 is the third, and so on. - - - - - Constructs a new RangeInt with given start, length values. - - The starting index of the range. - The length of the range. - - - - Representation of rays. - - - - - The direction of the ray. - - - - - The origin point of the ray. - - - - - Creates a ray starting at origin along direction. - - - - - - - Returns a point at distance units along the ray. - - - - - - Returns a nicely formatted string for this ray. - - - - - - Returns a nicely formatted string for this ray. - - - - - - A ray in 2D space. - - - - - The direction of the ray in world space. - - - - - The starting point of the ray in world space. - - - - - Creates a 2D ray starting at origin along direction. - - Origin. - Direction. - - - - - - Get a point that lies a given distance along a ray. - - Distance of the desired point along the path of the ray. - - - - Struct used to set up a raycast command to be performed asynchronously during a job. - - - - - The direction of the ray. - - - - - The maximum distance the ray should check for collisions. - - - - - The starting point of the ray in world coordinates. - - - - - A LayerMask that is used to selectively ignore Colliders when casting a ray. - - - - - The maximum number of Colliders the ray can hit. - - - - - Create a RaycastCommand. - - The starting point of the ray in world coordinates. - The direction of the ray. - The maximum distance the ray should check for collisions. - A LayerMask that is used to selectively ignore Colliders when casting a ray. - The maximum number of Colliders the ray can hit. - - - - Schedule a batch of raycasts which are performed in a job. - - A NativeArray of the RaycastCommands to perform. - A NativeArray of the RaycastHits where the results of the commands are stored. - The minimum number of jobs which should be performed in a single job. - A JobHandle of a job which must be completed before the raycast starts. - - The JobHandle of the job which will perform the raycasts. - - - - - Structure used to get information back from a raycast. - - - - - The barycentric coordinate of the triangle we hit. - - - - - The Collider that was hit. - - - - - The distance from the ray's origin to the impact point. - - - - - The uv lightmap coordinate at the impact point. - - - - - The normal of the surface the ray hit. - - - - - The impact point in world space where the ray hit the collider. - - - - - The Rigidbody of the collider that was hit. If the collider is not attached to a rigidbody then it is null. - - - - - The uv texture coordinate at the collision location. - - - - - The secondary uv texture coordinate at the impact point. - - - - - The Transform of the rigidbody or collider that was hit. - - - - - The index of the triangle that was hit. - - - - - Information returned about an object detected by a raycast in 2D physics. - - - - - The centroid of the primitive used to perform the cast. - - - - - The collider hit by the ray. - - - - - The distance from the ray origin to the impact point. - - - - - Fraction of the distance along the ray that the hit occurred. - - - - - The normal vector of the surface hit by the ray. - - - - - The point in world space where the ray hit the collider's surface. - - - - - The Rigidbody2D attached to the object that was hit. - - - - - The Transform of the object that was hit. - - - - - A 2D Rectangle defined by X and Y position, width and height. - - - - - The position of the center of the rectangle. - - - - - The height of the rectangle, measured from the Y position. - - - - - The position of the maximum corner of the rectangle. - - - - - The position of the minimum corner of the rectangle. - - - - - The X and Y position of the rectangle. - - - - - The width and height of the rectangle. - - - - - The width of the rectangle, measured from the X position. - - - - - The X coordinate of the rectangle. - - - - - The maximum X coordinate of the rectangle. - - - - - The minimum X coordinate of the rectangle. - - - - - The Y coordinate of the rectangle. - - - - - The maximum Y coordinate of the rectangle. - - - - - The minimum Y coordinate of the rectangle. - - - - - Shorthand for writing new Rect(0,0,0,0). - - - - - Returns true if the x and y components of point is a point inside this rectangle. If allowInverse is present and true, the width and height of the Rect are allowed to take negative values (ie, the min value is greater than the max), and the test will still work. - - Point to test. - Does the test allow the Rect's width and height to be negative? - - True if the point lies within the specified rectangle. - - - - - Returns true if the x and y components of point is a point inside this rectangle. If allowInverse is present and true, the width and height of the Rect are allowed to take negative values (ie, the min value is greater than the max), and the test will still work. - - Point to test. - Does the test allow the Rect's width and height to be negative? - - True if the point lies within the specified rectangle. - - - - - Returns true if the x and y components of point is a point inside this rectangle. If allowInverse is present and true, the width and height of the Rect are allowed to take negative values (ie, the min value is greater than the max), and the test will still work. - - Point to test. - Does the test allow the Rect's width and height to be negative? - - True if the point lies within the specified rectangle. - - - - - Creates a new rectangle. - - The X value the rect is measured from. - The Y value the rect is measured from. - The width of the rectangle. - The height of the rectangle. - - - - - - - - - - Creates a rectangle given a size and position. - - The position of the minimum corner of the rect. - The width and height of the rect. - - - - Creates a rectangle from min/max coordinate values. - - The minimum X coordinate. - The minimum Y coordinate. - The maximum X coordinate. - The maximum Y coordinate. - - A rectangle matching the specified coordinates. - - - - - Returns a point inside a rectangle, given normalized coordinates. - - Rectangle to get a point inside. - Normalized coordinates to get a point for. - - - - Returns true if the rectangles are the same. - - - - - - - Returns true if the other rectangle overlaps this one. If allowInverse is present and true, the widths and heights of the Rects are allowed to take negative values (ie, the min value is greater than the max), and the test will still work. - - Other rectangle to test overlapping with. - Does the test allow the widths and heights of the Rects to be negative? - - - - Returns true if the other rectangle overlaps this one. If allowInverse is present and true, the widths and heights of the Rects are allowed to take negative values (ie, the min value is greater than the max), and the test will still work. - - Other rectangle to test overlapping with. - Does the test allow the widths and heights of the Rects to be negative? - - - - Returns the normalized coordinates cooresponding the the point. - - Rectangle to get normalized coordinates inside. - A point inside the rectangle to get normalized coordinates for. - - - - Set components of an existing Rect. - - - - - - - - - Returns a nicely formatted string for this Rect. - - - - - - Returns a nicely formatted string for this Rect. - - - - - - A 2D Rectangle defined by x, y, width, height with integers. - - - - - A RectInt.PositionCollection that contains all positions within the RectInt. - - - - - Center coordinate of the rectangle. - - - - - Height of the rectangle. - - - - - Upper right corner of the rectangle. - - - - - Lower left corner of the rectangle. - - - - - Returns the position (x, y) of the RectInt. - - - - - Returns the width and height of the RectInt. - - - - - Width of the rectangle. - - - - - Left coordinate of the rectangle. - - - - - Returns the maximum X value of the RectInt. - - - - - Returns the minimum X value of the RectInt. - - - - - Top coordinate of the rectangle. - - - - - Returns the maximum Y value of the RectInt. - - - - - Returns the minimum Y value of the RectInt. - - - - - Clamps the position and size of the RectInt to the given bounds. - - Bounds to clamp the RectInt. - - - - Returns true if the given position is within the RectInt. - - Position to check. - Whether the max limits are included in the check. - - Whether the position is within the RectInt. - - - - - Returns true if the given position is within the RectInt. - - Position to check. - Whether the max limits are included in the check. - - Whether the position is within the RectInt. - - - - - Returns true if the given RectInt is equal to this RectInt. - - - - - - An iterator that allows you to iterate over all positions within the RectInt. - - - - - Current position of the enumerator. - - - - - Returns this as an iterator that allows you to iterate over all positions within the RectInt. - - - This RectInt.PositionEnumerator. - - - - - Moves the enumerator to the next position. - - - Whether the enumerator has successfully moved to the next position. - - - - - Resets this enumerator to its starting state. - - - - - Sets the bounds to the min and max value of the rect. - - - - - - - Returns the x, y, width and height of the RectInt. - - - - - Offsets for rectangles, borders, etc. - - - - - Bottom edge size. - - - - - Shortcut for left + right. (Read Only) - - - - - Left edge size. - - - - - Right edge size. - - - - - Top edge size. - - - - - Shortcut for top + bottom. (Read Only) - - - - - Add the border offsets to a rect. - - - - - - Creates a new rectangle with offsets. - - - - - - - - - Creates a new rectangle with offsets. - - - - - - - - - Remove the border offsets from a rect. - - - - - - Position, size, anchor and pivot information for a rectangle. - - - - - The position of the pivot of this RectTransform relative to the anchor reference point. - - - - - The 3D position of the pivot of this RectTransform relative to the anchor reference point. - - - - - The normalized position in the parent RectTransform that the upper right corner is anchored to. - - - - - The normalized position in the parent RectTransform that the lower left corner is anchored to. - - - - - The offset of the upper right corner of the rectangle relative to the upper right anchor. - - - - - The offset of the lower left corner of the rectangle relative to the lower left anchor. - - - - - The normalized position in this RectTransform that it rotates around. - - - - - Event that is invoked for RectTransforms that need to have their driven properties reapplied. - - - - - - The calculated rectangle in the local space of the Transform. - - - - - The size of this RectTransform relative to the distances between the anchors. - - - - - An axis that can be horizontal or vertical. - - - - - Horizontal. - - - - - Vertical. - - - - - Enum used to specify one edge of a rectangle. - - - - - The bottom edge. - - - - - The left edge. - - - - - The right edge. - - - - - The top edge. - - - - - Force the recalculation of RectTransforms internal data. - - - - - Get the corners of the calculated rectangle in the local space of its Transform. - - The array that corners are filled into. - - - - Get the corners of the calculated rectangle in world space. - - The array that corners are filled into. - - - - Delegate used for the reapplyDrivenProperties event. - - - - - - Set the distance of this rectangle relative to a specified edge of the parent rectangle, while also setting its size. - - The edge of the parent rectangle to inset from. - The inset distance. - The size of the rectangle along the same direction of the inset. - - - - Makes the RectTransform calculated rect be a given size on the specified axis. - - The axis to specify the size along. - The desired size along the specified axis. - - - - Utility class containing helper methods for working with RectTransform. - - - - - Flips the horizontal and vertical axes of the RectTransform size and alignment, and optionally its children as well. - - The RectTransform to flip. - Flips around the pivot if true. Flips within the parent rect if false. - Flip the children as well? - - - - Flips the alignment of the RectTransform along the horizontal or vertical axis, and optionally its children as well. - - The RectTransform to flip. - Flips around the pivot if true. Flips within the parent rect if false. - Flip the children as well? - The axis to flip along. 0 is horizontal and 1 is vertical. - - - - Convert a given point in screen space into a pixel correct point. - - - - - - Pixel adjusted point. - - - - - Given a rect transform, return the corner points in pixel accurate coordinates. - - - - - Pixel adjusted rect. - - - - - Does the RectTransform contain the screen point as seen from the given camera? - - The RectTransform to test with. - The screen point to test. - The camera from which the test is performed from. (Optional) - - True if the point is inside the rectangle. - - - - - Transform a screen space point to a position in the local space of a RectTransform that is on the plane of its rectangle. - - The RectTransform to find a point inside. - The camera associated with the screen space position. - Screen space position. - Point in local space of the rect transform. - - Returns true if the plane of the RectTransform is hit, regardless of whether the point is inside the rectangle. - - - - - Transform a screen space point to a position in world space that is on the plane of the given RectTransform. - - The RectTransform to find a point inside. - The camera associated with the screen space position. - Screen space position. - Point in world space. - - Returns true if the plane of the RectTransform is hit, regardless of whether the point is inside the rectangle. - - - - - The reflection probe is used to capture the surroundings into a texture which is passed to the shaders and used for reflections. - - - - - The color with which the texture of reflection probe will be cleared. - - - - - Reference to the baked texture of the reflection probe's surrounding. - - - - - Distance around probe used for blending (used in deferred probes). - - - - - The bounding volume of the reflection probe (Read Only). - - - - - Should this reflection probe use box projection? - - - - - The center of the box area in which reflections will be applied to the objects. Measured in the probes's local space. - - - - - How the reflection probe clears the background. - - - - - This is used to render parts of the reflecion probe's surrounding selectively. - - - - - Reference to the baked texture of the reflection probe's surrounding. Use this to assign custom reflection texture. - - - - - Adds a delegate to get notifications when the default specular Cubemap is changed. - - - - - - Texture which is used outside of all reflection probes (Read Only). - - - - - HDR decode values of the default reflection probe texture. - - - - - The far clipping plane distance when rendering the probe. - - - - - Should this reflection probe use HDR rendering? - - - - - Reflection probe importance. - - - - - The intensity modifier that is applied to the texture of reflection probe in the shader. - - - - - Should reflection probe texture be generated in the Editor (ReflectionProbeMode.Baked) or should probe use custom specified texure (ReflectionProbeMode.Custom)? - - - - - The near clipping plane distance when rendering the probe. - - - - - Reference to the realtime texture of the reflection probe's surroundings. Use this to assign a RenderTexture to use for realtime reflection. - - - - - Adds a delegate to get notifications when a Reflection Probe is added to a Scene or removed from a Scene. - - - - - - Sets the way the probe will refresh. - -See Also: ReflectionProbeRefreshMode. - - - - - Resolution of the underlying reflection texture in pixels. - - - - - Shadow drawing distance when rendering the probe. - - - - - The size of the box area in which reflections will be applied to the objects. Measured in the probes's local space. - - - - - Texture which is passed to the shader of the objects in the vicinity of the reflection probe (Read Only). - - - - - HDR decode values of the reflection probe texture. - - - - - Sets this probe time-slicing mode - -See Also: ReflectionProbeTimeSlicingMode. - - - - - Utility method to blend 2 cubemaps into a target render texture. - - Cubemap to blend from. - Cubemap to blend to. - Blend weight. - RenderTexture which will hold the result of the blend. - - Returns trues if cubemaps were blended, false otherwise. - - - - - Checks if a probe has finished a time-sliced render. - - An integer representing the RenderID as returned by the RenderProbe method. - - - True if the render has finished, false otherwise. - - See Also: timeSlicingMode - - - - - - Types of events that occur when ReflectionProbe components are used in a Scene. - - - - - An event that occurs when a Reflection Probe component is added to a Scene or enabled in a Scene. - - - - - An event that occurs when a Reflection Probe component is unloaded from a Scene or disabled in a Scene. - - - - - Refreshes the probe's cubemap. - - Target RendeTexture in which rendering should be done. Specifying null will update the probe's default texture. - - - An integer representing a RenderID which can subsequently be used to check if the probe has finished rendering while rendering in time-slice mode. - - See Also: IsFinishedRendering - See Also: timeSlicingMode - - - - - - Revert all ReflectionProbe parameters to default. - - - - - Keeps two Rigidbody2D at their relative orientations. - - - - - The current angular offset between the Rigidbody2D that the joint connects. - - - - - Should both the linearOffset and angularOffset be calculated automatically? - - - - - Scales both the linear and angular forces used to correct the required relative orientation. - - - - - The current linear offset between the Rigidbody2D that the joint connects. - - - - - The maximum force that can be generated when trying to maintain the relative joint constraint. - - - - - The maximum torque that can be generated when trying to maintain the relative joint constraint. - - - - - The world-space position that is currently trying to be maintained. - - - - - Provides access to your remote settings. - - - - - Dispatched before the RemoteSettings object makes the network request for the latest settings. - - - - - - Dispatched when the network request made by the RemoteSettings object to fetch the remote configuration file is complete. - - - - - - Forces the game to download the newest settings from the server and update its values. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the number of keys in the remote settings configuration. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets an array containing all the keys in the remote settings configuration. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Reports whether the specified key exists in the remote settings configuration. - - The key identifying the setting. - - True, if the key exists. - - - - - Dispatched when a remote settings configuration is fetched and successfully parsed from the server or from local cache. - - - - - - Defines the delegate signature for handling RemoteSettings.Updated events. - - - - - Reports whether or not the settings available from the RemoteSettings object were received from the Analytics Service during the current session. - - - True, if the remote settings file was received from the Analytics Service in the current session. False, if the remote settings file was received during an earlier session and cached. - - - - - Color or depth buffer part of a RenderTexture. - - - - - Returns native RenderBuffer. Be warned this is not native Texture, but rather pointer to unity struct that can be used with native unity API. Currently such API exists only on iOS. - - - - - General functionality for all renderers. - - - - - Controls if dynamic occlusion culling should be performed for this renderer. - - - - - The bounding volume of the renderer (Read Only). - - - - - Makes the rendered 3D object visible if enabled. - - - - - Has this renderer been statically batched with any other renderers? - - - - - Is this renderer visible in any camera? (Read Only) - - - - - The index of the baked lightmap applied to this renderer. - - - - - The UV scale & offset used for a lightmap. - - - - - If set, the Renderer will use the Light Probe Proxy Volume component attached to the source GameObject. - - - - - The light probe interpolation type. - - - - - Matrix that transforms a point from local space into world space (Read Only). - - - - - Returns the first instantiated Material assigned to the renderer. - - - - - Returns all the instantiated materials of this object. - - - - - Specifies the mode for motion vector rendering. - - - - - Specifies whether this renderer has a per-object motion vector pass. - - - - - If set, Renderer will use this Transform's position to find the light or reflection probe. - - - - - The index of the realtime lightmap applied to this renderer. - - - - - The UV scale & offset used for a realtime lightmap. - - - - - Does this object receive shadows? - - - - - Should reflection probes be used for this Renderer? - - - - - This value sorts renderers by priority. Lower values are rendered first and higher values are rendered last. - - - - - Determines which rendering layer this renderer lives on. - - - - - Does this object cast shadows? - - - - - The shared material of this object. - - - - - All the shared materials of this object. - - - - - Unique ID of the Renderer's sorting layer. - - - - - Name of the Renderer's sorting layer. - - - - - Renderer's order within a sorting layer. - - - - - Should light probes be used for this Renderer? - - - - - Matrix that transforms a point from world space into local space (Read Only). - - - - - Returns an array of closest reflection probes with weights, weight shows how much influence the probe has on the renderer, this value is also used when blending between reflection probes occur. - - - - - - Returns all the instantiated materials of this object. - - A list of materials to populate. - - - - Get per-Renderer or per-Material property block. - - Material parameters to retrieve. - The index of the Material you want to get overridden parameters from. The index ranges from 0 to Renderer.sharedMaterials.Length-1. - - - - Get per-Renderer or per-Material property block. - - Material parameters to retrieve. - The index of the Material you want to get overridden parameters from. The index ranges from 0 to Renderer.sharedMaterials.Length-1. - - - - Returns all the shared materials of this object. - - A list of materials to populate. - - - - Returns true if the Renderer has a material property block attached via SetPropertyBlock. - - - - - Lets you set or clear per-renderer or per-material parameter overrides. - - Property block with values you want to override. - The index of the Material you want to override the parameters of. The index ranges from 0 to Renderer.sharedMaterial.Length-1. - - - - Lets you set or clear per-renderer or per-material parameter overrides. - - Property block with values you want to override. - The index of the Material you want to override the parameters of. The index ranges from 0 to Renderer.sharedMaterial.Length-1. - - - - Extension methods to the Renderer class, used only for the UpdateGIMaterials method used by the Global Illumination System. - - - - - Schedules an update of the albedo and emissive Textures of a system that contains the Renderer. - - - - - - Ambient lighting mode. - - - - - Ambient lighting is defined by a custom cubemap. - - - - - Flat ambient lighting. - - - - - Skybox-based or custom ambient lighting. - - - - - Trilight ambient lighting. - - - - - Allows the asynchronous read back of GPU resources. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Represents an asynchronous request for a GPU resource. - - - - - When reading data from a ComputeBuffer, depth is 1, otherwise, the property takes the value of the requested depth from the texture. - - - - - Checks whether the request has been processed. - - - - - This property is true if the request has encountered an error. - - - - - When reading data from a ComputeBuffer, height is 1, otherwise, the property takes the value of the requested height from the texture. - - - - - Number of layers in the current request. - - - - - The size in bytes of one layer of the readback data. - - - - - The width of the requested GPU data. - - - - - Fetches the data of a successful request. - - The index of the layer to retrieve. - - - - Triggers an update of the request. - - - - - Waits for completion of the request. - - - - - Blend mode for controlling the blending. - - - - - Blend factor is (Ad, Ad, Ad, Ad). - - - - - Blend factor is (Rd, Gd, Bd, Ad). - - - - - Blend factor is (1, 1, 1, 1). - - - - - Blend factor is (1 - Ad, 1 - Ad, 1 - Ad, 1 - Ad). - - - - - Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad). - - - - - Blend factor is (1 - As, 1 - As, 1 - As, 1 - As). - - - - - Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As). - - - - - Blend factor is (As, As, As, As). - - - - - Blend factor is (f, f, f, 1); where f = min(As, 1 - Ad). - - - - - Blend factor is (Rs, Gs, Bs, As). - - - - - Blend factor is (0, 0, 0, 0). - - - - - Blend operation. - - - - - Add (s + d). - - - - - Color burn (Advanced OpenGL blending). - - - - - Color dodge (Advanced OpenGL blending). - - - - - Darken (Advanced OpenGL blending). - - - - - Difference (Advanced OpenGL blending). - - - - - Exclusion (Advanced OpenGL blending). - - - - - Hard light (Advanced OpenGL blending). - - - - - HSL color (Advanced OpenGL blending). - - - - - HSL Hue (Advanced OpenGL blending). - - - - - HSL luminosity (Advanced OpenGL blending). - - - - - HSL saturation (Advanced OpenGL blending). - - - - - Lighten (Advanced OpenGL blending). - - - - - Logical AND (s & d) (D3D11.1 only). - - - - - Logical inverted AND (!s & d) (D3D11.1 only). - - - - - Logical reverse AND (s & !d) (D3D11.1 only). - - - - - Logical Clear (0). - - - - - Logical Copy (s) (D3D11.1 only). - - - - - Logical inverted Copy (!s) (D3D11.1 only). - - - - - Logical Equivalence !(s XOR d) (D3D11.1 only). - - - - - Logical Inverse (!d) (D3D11.1 only). - - - - - Logical NAND !(s & d). D3D11.1 only. - - - - - Logical No-op (d) (D3D11.1 only). - - - - - Logical NOR !(s | d) (D3D11.1 only). - - - - - Logical OR (s | d) (D3D11.1 only). - - - - - Logical inverted OR (!s | d) (D3D11.1 only). - - - - - Logical reverse OR (s | !d) (D3D11.1 only). - - - - - Logical SET (1) (D3D11.1 only). - - - - - Logical XOR (s XOR d) (D3D11.1 only). - - - - - Max. - - - - - Min. - - - - - Multiply (Advanced OpenGL blending). - - - - - Overlay (Advanced OpenGL blending). - - - - - Reverse subtract. - - - - - Screen (Advanced OpenGL blending). - - - - - Soft light (Advanced OpenGL blending). - - - - - Subtract. - - - - - Built-in temporary render textures produced during camera's rendering. - - - - - The raw RenderBuffer pointer to be used. - - - - - Target texture of currently rendering camera. - - - - - Currently active render target. - - - - - Camera's depth texture. - - - - - Camera's depth+normals texture. - - - - - Deferred shading G-buffer #0 (typically diffuse color). - - - - - Deferred shading G-buffer #1 (typically specular + roughness). - - - - - Deferred shading G-buffer #2 (typically normals). - - - - - Deferred shading G-buffer #3 (typically emission/lighting). - - - - - Deferred shading G-buffer #4 (typically occlusion mask for static lights if any). - - - - - G-buffer #5 Available. - - - - - G-buffer #6 Available. - - - - - G-buffer #7 Available. - - - - - Motion Vectors generated when the camera has motion vectors enabled. - - - - - Deferred lighting light buffer. - - - - - Deferred lighting HDR specular light buffer (Xbox 360 only). - - - - - Deferred lighting (normals+specular) G-buffer. - - - - - A globally set property name. - - - - - Reflections gathered from default reflection and reflections probes. - - - - - The given RenderTexture. - - - - - Resolved depth buffer from deferred. - - - - - Defines set by editor when compiling shaders, depending on target platform and tier. - - - - - SHADER_API_DESKTOP is set when compiling shader for "desktop" platforms. - - - - - SHADER_API_MOBILE is set when compiling shader for mobile platforms. - - - - - UNITY_COLORSPACE_GAMMA is set when compiling shaders for Gamma Color Space. - - - - - UNITY_ENABLE_DETAIL_NORMALMAP is set if Detail Normal Map should be sampled if assigned. - - - - - UNITY_ENABLE_NATIVE_SHADOW_LOOKUPS enables use of built-in shadow comparison samplers on OpenGL ES 2.0. - - - - - UNITY_ENABLE_REFLECTION_BUFFERS is set when deferred shading renders reflection probes in deferred mode. With this option set reflections are rendered into a per-pixel buffer. This is similar to the way lights are rendered into a per-pixel buffer. UNITY_ENABLE_REFLECTION_BUFFERS is on by default when using deferred shading, but you can turn it off by setting “No support” for the Deferred Reflections shader option in Graphics Settings. When the setting is off, reflection probes are rendered per-object, similar to the way forward rendering works. - - - - - UNITY_FRAMEBUFFER_FETCH_AVAILABLE is set when compiling shaders for platforms where framebuffer fetch is potentially available. - - - - - UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS is set automatically for platforms that don't require full floating-point precision support in fragment shaders. - - - - - UNITY_HARDWARE_TIER1 is set when compiling shaders for GraphicsTier.Tier1. - - - - - UNITY_HARDWARE_TIER2 is set when compiling shaders for GraphicsTier.Tier2. - - - - - UNITY_HARDWARE_TIER3 is set when compiling shaders for GraphicsTier.Tier3. - - - - - UNITY_LIGHT_PROBE_PROXY_VOLUME is set when Light Probe Proxy Volume feature is supported by the current graphics API and is enabled in the current Tier Settings(Graphics Settings). - - - - - UNITY_LIGHTMAP_DLDR_ENCODING is set when lightmap textures are using double LDR encoding to store the values in the texture. - - - - - UNITY_LIGHTMAP_FULL_HDR is set when lightmap textures are not using any encoding to store the values in the texture. - - - - - UNITY_LIGHTMAP_RGBM_ENCODING is set when lightmap textures are using RGBM encoding to store the values in the texture. - - - - - UNITY_METAL_SHADOWS_USE_POINT_FILTERING is set if shadow sampler should use point filtering on iOS Metal. - - - - - UNITY_NO_DXT5nm is set when compiling shader for platform that do not support DXT5NM, meaning that normal maps will be encoded in RGB instead. - - - - - UNITY_NO_FULL_STANDARD_SHADER is set if Standard shader BRDF3 with extra simplifications should be used. - - - - - UNITY_NO_RGBM is set when compiling shader for platform that do not support RGBM, so dLDR will be used instead. - - - - - UNITY_NO_SCREENSPACE_SHADOWS is set when screenspace cascaded shadow maps are disabled. - - - - - UNITY_PBS_USE_BRDF1 is set if Standard Shader BRDF1 should be used. - - - - - UNITY_PBS_USE_BRDF2 is set if Standard Shader BRDF2 should be used. - - - - - UNITY_PBS_USE_BRDF3 is set if Standard Shader BRDF3 should be used. - - - - - UNITY_SPECCUBE_BLENDING is set if Reflection Probes Blending is enabled. - - - - - UNITY_SPECCUBE_BLENDING is set if Reflection Probes Box Projection is enabled. - - - - - UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS is set when Semitransparent Shadows are enabled. - - - - - Built-in shader modes used by Rendering.GraphicsSettings. - - - - - Don't use any shader, effectively disabling the functionality. - - - - - Use built-in shader (default). - - - - - Use custom shader instead of built-in one. - - - - - Built-in shader types used by Rendering.GraphicsSettings. - - - - - Shader used for deferred reflection probes. - - - - - Shader used for deferred shading calculations. - - - - - Shader used for depth and normals texture when enabled on a Camera. - - - - - Shader used for legacy deferred lighting calculations. - - - - - Default shader used for lens flares. - - - - - Default shader used for light halos. - - - - - Shader used for Motion Vectors when enabled on a Camera. - - - - - Shader used for screen-space cascaded shadows. - - - - - Defines a place in camera's rendering to attach Rendering.CommandBuffer objects to. - - - - - After camera's depth+normals texture is generated. - - - - - After camera's depth texture is generated. - - - - - After camera has done rendering everything. - - - - - After final geometry pass in deferred lighting. - - - - - After transparent objects in forward rendering. - - - - - After opaque objects in forward rendering. - - - - - After deferred rendering G-buffer is rendered. - - - - - After halo and lens flares. - - - - - After image effects. - - - - - After image effects that happen between opaque & transparent objects. - - - - - After lighting pass in deferred rendering. - - - - - After reflections pass in deferred rendering. - - - - - After skybox is drawn. - - - - - Before camera's depth+normals texture is generated. - - - - - Before camera's depth texture is generated. - - - - - Before final geometry pass in deferred lighting. - - - - - Before transparent objects in forward rendering. - - - - - Before opaque objects in forward rendering. - - - - - Before deferred rendering G-buffer is rendered. - - - - - Before halo and lens flares. - - - - - Before image effects. - - - - - Before image effects that happen between opaque & transparent objects. - - - - - Before lighting pass in deferred rendering. - - - - - Before reflections pass in deferred rendering. - - - - - Before skybox is drawn. - - - - - The HDR mode to use for rendering. - - - - - Uses RenderTextureFormat.ARGBHalf. - - - - - Uses RenderTextureFormat.RGB111110Float. - - - - - Specifies which color components will get written into the target framebuffer. - - - - - Write all components (R, G, B and Alpha). - - - - - Write alpha component. - - - - - Write blue component. - - - - - Write green component. - - - - - Write red component. - - - - - List of graphics commands to execute. - - - - - Name of this command buffer. - - - - - Size of this command buffer in bytes (Read Only). - - - - - Adds a command to begin profile sampling. - - Name of the profile information used for sampling. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Clear all commands in the buffer. - - - - - Clear random write targets for level pixel shaders. - - - - - Adds a "clear render target" command. - - Should clear depth buffer? - Should clear color buffer? - Color to clear with. - Depth to clear with (default is 1.0). - - - - Converts and copies a source texture to a destination texture with a different format or dimensions. - - Source texture. - Destination texture. - Source element (e.g. cubemap face). Set this to 0 for 2D source textures. - Destination element (e.g. cubemap face or texture array element). - - - - Converts and copies a source texture to a destination texture with a different format or dimensions. - - Source texture. - Destination texture. - Source element (e.g. cubemap face). Set this to 0 for 2D source textures. - Destination element (e.g. cubemap face or texture array element). - - - - Adds a command to copy ComputeBuffer counter value. - - Append/consume buffer to copy the counter from. - A buffer to copy the counter to. - Target byte offset in dst buffer. - - - - Adds a command to copy a texture into another texture. - - Source texture or identifier, see RenderTargetIdentifier. - Destination texture or identifier, see RenderTargetIdentifier. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Adds a command to copy a texture into another texture. - - Source texture or identifier, see RenderTargetIdentifier. - Destination texture or identifier, see RenderTargetIdentifier. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Adds a command to copy a texture into another texture. - - Source texture or identifier, see RenderTargetIdentifier. - Destination texture or identifier, see RenderTargetIdentifier. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Adds a command to copy a texture into another texture. - - Source texture or identifier, see RenderTargetIdentifier. - Destination texture or identifier, see RenderTargetIdentifier. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Creates a GPUFence which will be passed after the last Blit, Clear, Draw, Dispatch or Texture Copy command prior to this call has been completed on the GPU. - - On some platforms there is a significant gap between the vertex processing completing and the pixel processing begining for a given draw call. This parameter allows for the fence to be passed after either the vertex or pixel processing for the proceeding draw has completed. If a compute shader dispatch was the last task submitted then this parameter is ignored. - - Returns a new GPUFence. - - - - - Create a new empty command buffer. - - - - - Add a command to disable the hardware scissor rectangle. - - - - - Adds a command to disable global shader keyword. - - Shader keyword to disable. - - - - Add a command to execute a ComputeShader. - - ComputeShader to execute. - Kernel index to execute, see ComputeShader.FindKernel. - Number of work groups in the X dimension. - Number of work groups in the Y dimension. - Number of work groups in the Z dimension. - ComputeBuffer with dispatch arguments. - Byte offset indicating the location of the dispatch arguments in the buffer. - - - - Add a command to execute a ComputeShader. - - ComputeShader to execute. - Kernel index to execute, see ComputeShader.FindKernel. - Number of work groups in the X dimension. - Number of work groups in the Y dimension. - Number of work groups in the Z dimension. - ComputeBuffer with dispatch arguments. - Byte offset indicating the location of the dispatch arguments in the buffer. - - - - Add a "draw mesh" command. - - Mesh to draw. - Transformation matrix to use. - Material to use. - Which subset of the mesh to render. - Which pass of the shader to use (default is -1, which renders all passes). - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - - - - Add a "draw mesh with instancing" command. - -The command will not immediately fail and throw an exception if Material.enableInstancing is false, but it will log an error and skips rendering each time the command is being executed if such a condition is detected. - -InvalidOperationException will be thrown if the current platform doesn't support this API (i.e. if GPU instancing is not available). See SystemInfo.supportsInstancing. - - The Mesh to draw. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Material to use. - Which pass of the shader to use, or -1 which renders all passes. - The array of object transformation matrices. - The number of instances to be drawn. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - - - - Add a "draw mesh with indirect instancing" command. - - The Mesh to draw. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Material to use. - Which pass of the shader to use, or -1 which renders all passes. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - The GPU buffer containing the arguments for how many instances of this mesh to draw. - The byte offset into the buffer, where the draw arguments start. - - - - Add a "draw procedural geometry" command. - - Transformation matrix to use. - Material to use. - Which pass of the shader to use (or -1 for all passes). - Topology of the procedural geometry. - Vertex count to render. - Instance count to render. - Additional material properties to apply just before rendering. See MaterialPropertyBlock. - - - - Add a "draw procedural geometry" command. - - Transformation matrix to use. - Material to use. - Which pass of the shader to use (or -1 for all passes). - Topology of the procedural geometry. - Additional material properties to apply just before rendering. See MaterialPropertyBlock. - Buffer with draw arguments. - Byte offset where in the buffer the draw arguments are. - - - - Add a "draw renderer" command. - - Renderer to draw. - Material to use. - Which subset of the mesh to render. - Which pass of the shader to use (default is -1, which renders all passes). - - - - Add a command to enable the hardware scissor rectangle. - - Viewport rectangle in pixel coordinates. - - - - Adds a command to enable global shader keyword. - - Shader keyword to enable. - - - - Adds a command to begin profile sampling. - - Name of the profile information used for sampling. - - - - Generate mipmap levels of a render texture. - - The render texture requiring mipmaps generation. - - - - Add a "get a temporary render texture" command. - - Shader property name for this texture. - Width in pixels, or -1 for "camera pixel width". - Height in pixels, or -1 for "camera pixel height". - Depth buffer bits (0, 16 or 24). - Texture filtering mode (default is Point). - Format of the render texture (default is ARGB32). - Color space conversion mode. - Anti-aliasing (default is no anti-aliasing). - Should random-write access into the texture be enabled (default is false). - Use this RenderTextureDescriptor for the settings when creating the temporary RenderTexture. - Render texture memoryless mode. - - - - Add a "get a temporary render texture" command. - - Shader property name for this texture. - Width in pixels, or -1 for "camera pixel width". - Height in pixels, or -1 for "camera pixel height". - Depth buffer bits (0, 16 or 24). - Texture filtering mode (default is Point). - Format of the render texture (default is ARGB32). - Color space conversion mode. - Anti-aliasing (default is no anti-aliasing). - Should random-write access into the texture be enabled (default is false). - Use this RenderTextureDescriptor for the settings when creating the temporary RenderTexture. - Render texture memoryless mode. - - - - Add a "get a temporary render texture array" command. - - Shader property name for this texture. - Width in pixels, or -1 for "camera pixel width". - Height in pixels, or -1 for "camera pixel height". - Number of slices in texture array. - Depth buffer bits (0, 16 or 24). - Texture filtering mode (default is Point). - Format of the render texture (default is ARGB32). - Color space conversion mode. - Anti-aliasing (default is no anti-aliasing). - Should random-write access into the texture be enabled (default is false). - - - - Send a user-defined blit event to a native code plugin. - - Native code callback to queue for Unity's renderer to invoke. - User defined command id to send to the callback. - Source render target. - Destination render target. - User data command parameters. - User data command flags. - - - - Deprecated. Use CommandBuffer.IssuePluginCustomTextureUpdateV2 instead. - - Native code callback to queue for Unity's renderer to invoke. - Texture resource to be updated. - User data to send to the native plugin. - - - - Deprecated. Use CommandBuffer.IssuePluginCustomTextureUpdateV2 instead. - - Native code callback to queue for Unity's renderer to invoke. - Texture resource to be updated. - User data to send to the native plugin. - - - - Send a texture update event to a native code plugin. - - Native code callback to queue for Unity's renderer to invoke. - Texture resource to be updated. - User data to send to the native plugin. - - - - Send a user-defined event to a native code plugin. - - Native code callback to queue for Unity's renderer to invoke. - User defined id to send to the callback. - - - - Send a user-defined event to a native code plugin with custom data. - - Native code callback to queue for Unity's renderer to invoke. - Custom data to pass to the native plugin callback. - Built in or user defined id to send to the callback. - - - - Add a "release a temporary render texture" command. - - Shader property name for this texture. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Force an antialiased render texture to be resolved. - - The antialiased render texture to resolve. - The render texture to resolve into. If set, the target render texture must have the same dimensions and format as the source. - - - - Adds a command to set an input or output buffer parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the buffer is being set for. See ComputeShader.FindKernel. - Name of the buffer variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Buffer to set. - - - - Adds a command to set an input or output buffer parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the buffer is being set for. See ComputeShader.FindKernel. - Name of the buffer variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Buffer to set. - - - - Adds a command to set a float parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a float parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set multiple consecutive float parameters on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Values to set. - - - - Adds a command to set multiple consecutive float parameters on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Values to set. - - - - Adds a command to set an integer parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set an integer parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set multiple consecutive integer parameters on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Values to set. - - - - Adds a command to set multiple consecutive integer parameters on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Values to set. - - - - Adds a command to set a matrix array parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a matrix array parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a matrix parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a matrix parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a texture parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the texture is being set for. See ComputeShader.FindKernel. - Name of the texture variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Texture value or identifier to set, see RenderTargetIdentifier. - Optional mipmap level of the read-write texture. - - - - Adds a command to set a texture parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the texture is being set for. See ComputeShader.FindKernel. - Name of the texture variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Texture value or identifier to set, see RenderTargetIdentifier. - Optional mipmap level of the read-write texture. - - - - Adds a command to set a texture parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the texture is being set for. See ComputeShader.FindKernel. - Name of the texture variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Texture value or identifier to set, see RenderTargetIdentifier. - Optional mipmap level of the read-write texture. - - - - Adds a command to set a texture parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the texture is being set for. See ComputeShader.FindKernel. - Name of the texture variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Texture value or identifier to set, see RenderTargetIdentifier. - Optional mipmap level of the read-write texture. - - - - Adds a command to set a vector array parameter on a ComputeShader. - - ComputeShader to set parameter for. - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a vector array parameter on a ComputeShader. - - ComputeShader to set parameter for. - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a vector parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a vector parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Add a "set global shader buffer property" command. - - - - - - - - Add a "set global shader buffer property" command. - - - - - - - - Add a "set global shader color property" command. - - - - - - - - Add a "set global shader color property" command. - - - - - - - - Add a command to set global depth bias. - - Constant depth bias. - Slope-dependent depth bias. - - - - Add a "set global shader float property" command. - - - - - - - - Add a "set global shader float property" command. - - - - - - - - Add a "set global shader float array property" command. - - - - - - - - Add a "set global shader float array property" command. - - - - - - - - Add a "set global shader float array property" command. - - - - - - - - Add a "set global shader float array property" command. - - - - - - - - Sets the given global integer property for all shaders. - - - - - - - - Sets the given global integer property for all shaders. - - - - - - - - Add a "set global shader matrix property" command. - - - - - - - - Add a "set global shader matrix property" command. - - - - - - - - Add a "set global shader matrix array property" command. - - - - - - - - Add a "set global shader matrix array property" command. - - - - - - - - Add a "set global shader matrix array property" command. - - - - - - - - Add a "set global shader matrix array property" command. - - - - - - - - Add a "set global shader texture property" command, referencing a RenderTexture. - - - - - - - - Add a "set global shader texture property" command, referencing a RenderTexture. - - - - - - - - Add a "set global shader vector property" command. - - - - - - - - Add a "set global shader vector property" command. - - - - - - - - Add a "set global shader vector array property" command. - - - - - - - - Add a "set global shader vector array property" command. - - - - - - - - Add a "set global shader vector array property" command. - - - - - - - - Add a "set global shader vector array property" command. - - - - - - - - Add a "set invert culling" command to the buffer. - - A boolean indicating whether to invert the backface culling (true) or not (false). - - - - Add a command to set the projection matrix. - - Projection (camera to clip space) matrix. - - - - Set random write target for level pixel shaders. - - Index of the random write target in the shader. - ComputeBuffer to set as write targe. - Whether to leave the append/consume counter value unchanged. - RenderTargetIdentifier to set as write target. - - - - Set random write target for level pixel shaders. - - Index of the random write target in the shader. - ComputeBuffer to set as write targe. - Whether to leave the append/consume counter value unchanged. - RenderTargetIdentifier to set as write target. - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set shadow sampling mode" command. - - Shadowmap render target to change the sampling mode on. - New sampling mode. - - - - Add a command to set the view matrix. - - View (world to camera space) matrix. - - - - Add a command to set the rendering viewport. - - Viewport rectangle in pixel coordinates. - - - - Add a command to set the view and projection matrices. - - View (world to camera space) matrix. - Projection (camera to clip space) matrix. - - - - Instructs the GPU to wait until the given GPUFence is passed. - - The GPUFence that the GPU will be instructed to wait upon. - On some platforms there is a significant gap between the vertex processing completing and the pixel processing completing for a given draw call. This parameter allows for requested wait to be before the next items vertex or pixel processing begins. Some platforms can not differentiate between the start of vertex and pixel processing, these platforms will wait before the next items vertex processing. If a compute shader dispatch is the next item to be submitted then this parameter is ignored. - - - - Depth or stencil comparison function. - - - - - Always pass depth or stencil test. - - - - - Depth or stencil test is disabled. - - - - - Pass depth or stencil test when values are equal. - - - - - Pass depth or stencil test when new value is greater than old one. - - - - - Pass depth or stencil test when new value is greater or equal than old one. - - - - - Pass depth or stencil test when new value is less than old one. - - - - - Pass depth or stencil test when new value is less or equal than old one. - - - - - Never pass depth or stencil test. - - - - - Pass depth or stencil test when values are different. - - - - - Describes the desired characteristics with respect to prioritisation and load balancing of the queue that a command buffer being submitted via Graphics.ExecuteCommandBufferAsync or [[ScriptableRenderContext.ExecuteCommandBufferAsync] should be sent to. - - - - - Background queue types would be the choice for tasks intended to run for an extended period of time, e.g for most of a frame or for several frames. Dispatches on background queues would execute at a lower priority than gfx queue tasks. - - - - - This queue type would be the choice for compute tasks supporting or as optimisations to graphics processing. CommandBuffers sent to this queue would be expected to complete within the scope of a single frame and likely be synchronised with the graphics queue via GPUFence’s. Dispatches on default queue types would execute at a lower priority than graphics queue tasks. - - - - - This queue type would be the choice for compute tasks requiring processing as soon as possible and would be prioritised over the graphics queue. - - - - - Support for various Graphics.CopyTexture cases. - - - - - Basic Graphics.CopyTexture support. - - - - - Support for Texture3D in Graphics.CopyTexture. - - - - - Support for Graphics.CopyTexture between different texture types. - - - - - No support for Graphics.CopyTexture. - - - - - Support for RenderTexture to Texture copies in Graphics.CopyTexture. - - - - - Support for Texture to RenderTexture copies in Graphics.CopyTexture. - - - - - Backface culling mode. - - - - - Cull back-facing geometry. - - - - - Cull front-facing geometry. - - - - - Disable culling. - - - - - Default reflection mode. - - - - - Custom default reflection. - - - - - Skybox-based default reflection. - - - - - Used to manage synchronisation between tasks on async compute queues and the graphics queue. - - - - - Has the GPUFence passed? - -Allows for CPU determination of whether the GPU has passed the point in its processing represented by the GPUFence. - - - - - Graphics device API type. - - - - - Direct3D 11 graphics API. - - - - - Direct3D 12 graphics API. - - - - - Direct3D 9 graphics API. - - - - - iOS Metal graphics API. - - - - - Nintendo 3DS graphics API. - - - - - No graphics API. - - - - - OpenGL 2.x graphics API. (deprecated, only available on Linux and MacOSX) - - - - - OpenGL (Core profile - GL3 or later) graphics API. - - - - - OpenGL ES 2.0 graphics API. - - - - - OpenGL ES 3.0 graphics API. - - - - - PlayStation 3 graphics API. - - - - - PlayStation 4 graphics API. - - - - - PlayStation Mobile (PSM) graphics API. - - - - - Nintendo Switch graphics API. - - - - - Vulkan (EXPERIMENTAL). - - - - - Xbox One graphics API using Direct3D 11. - - - - - Xbox One graphics API using Direct3D 12. - - - - - Script interface for. - - - - - Whether to use a Light's color temperature when calculating the final color of that Light." - - - - - If this is true, Light intensity is multiplied against linear color values. If it is false, gamma color values are used. - - - - - The RenderPipelineAsset that describes how the Scene should be rendered. - - - - - An axis that describes the direction along which the distances of objects are measured for the purpose of sorting. - - - - - Transparent object sorting mode. - - - - - Enable/Disable SRP batcher (experimental) at runtime. - - - - - Get custom shader used instead of a built-in shader. - - Built-in shader type to query custom shader for. - - The shader used. - - - - - Get built-in shader mode. - - Built-in shader type to query. - - Mode used for built-in shader. - - - - - Returns true if shader define was set when compiling shaders for current GraphicsTier. - - - - - - - Returns true if shader define was set when compiling shaders for given tier. - - - - - - Set custom shader to use instead of a built-in shader. - - Built-in shader type to set custom shader to. - The shader to use. - - - - Set built-in shader mode. - - Built-in shader type to change. - Mode to use for built-in shader. - - - - Graphics Tier. -See Also: Graphics.activeTier. - - - - - The first graphics tier (Low) - corresponds to shader define UNITY_HARDWARE_TIER1. - - - - - The second graphics tier (Medium) - corresponds to shader define UNITY_HARDWARE_TIER2. - - - - - The third graphics tier (High) - corresponds to shader define UNITY_HARDWARE_TIER3. - - - - - Format of the mesh index buffer data. - - - - - 16 bit mesh index buffer format. - - - - - 32 bit mesh index buffer format. - - - - - Defines a place in light's rendering to attach Rendering.CommandBuffer objects to. - - - - - After directional light screenspace shadow mask is computed. - - - - - After shadowmap is rendered. - - - - - After shadowmap pass is rendered. - - - - - Before directional light screenspace shadow mask is computed. - - - - - Before shadowmap is rendered. - - - - - Before shadowmap pass is rendered. - - - - - Light probe interpolation type. - - - - - Simple light probe interpolation is used. - - - - - The light probe shader uniform values are extracted from the material property block set on the renderer. - - - - - Light Probes are not used. The Scene's ambient probe is provided to the shader. - - - - - Uses a 3D grid of interpolated light probes. - - - - - Shadow resolution options for a Light. - - - - - Use resolution from QualitySettings (default). - - - - - High shadow map resolution. - - - - - Low shadow map resolution. - - - - - Medium shadow map resolution. - - - - - Very high shadow map resolution. - - - - - Opaque object sorting mode of a Camera. - - - - - Default opaque sorting mode. - - - - - Do rough front-to-back sorting of opaque objects. - - - - - Do not sort opaque objects by distance. - - - - - Shader pass type for Unity's lighting pipeline. - - - - - Deferred Shading shader pass. - - - - - Forward rendering additive pixel light pass. - - - - - Forward rendering base pass. - - - - - Legacy deferred lighting (light pre-pass) base pass. - - - - - Legacy deferred lighting (light pre-pass) final pass. - - - - - Shader pass used to generate the albedo and emissive values used as input to lightmapping. - - - - - Motion vector render pass. - - - - - Regular shader pass that does not interact with lighting. - - - - - Custom scriptable pipeline. - - - - - Custom scriptable pipeline when lightmode is set to default unlit or no light mode is set. - - - - - Shadow caster & depth texure shader pass. - - - - - Legacy vertex-lit shader pass. - - - - - Legacy vertex-lit shader pass, with mobile lightmaps. - - - - - Legacy vertex-lit shader pass, with desktop (RGBM) lightmaps. - - - - - A collection of Rendering.ShaderKeyword that represents a specific platform variant. - - - - - Disable a specific shader keyword. - - - - - Enable a specific shader keyword. - - - - - Check whether a specific shader keyword is enabled. - - - - - - How much CPU usage to assign to the final lighting calculations at runtime. - - - - - 75% of the allowed CPU threads are used as worker threads. - - - - - 25% of the allowed CPU threads are used as worker threads. - - - - - 50% of the allowed CPU threads are used as worker threads. - - - - - 100% of the allowed CPU threads are used as worker threads. - - - - - Determines how Unity will compress baked reflection cubemap. - - - - - Baked Reflection cubemap will be compressed if compression format is suitable. - - - - - Baked Reflection cubemap will be compressed. - - - - - Baked Reflection cubemap will be left uncompressed. - - - - - ReflectionProbeBlendInfo contains information required for blending probes. - - - - - Reflection Probe used in blending. - - - - - Specifies the weight used in the interpolation between two probes, value varies from 0.0 to 1.0. - - - - - Values for ReflectionProbe.clearFlags, determining what to clear when rendering a ReflectionProbe. - - - - - Clear with the skybox. - - - - - Clear with a background color. - - - - - Reflection probe's update mode. - - - - - Reflection probe is baked in the Editor. - - - - - Reflection probe uses a custom texture specified by the user. - - - - - Reflection probe is updating in realtime. - - - - - An enum describing the way a realtime reflection probe refreshes in the Player. - - - - - Causes Unity to update the probe's cubemap every frame. -Note that updating a probe is very costly. Setting this option on too many probes could have a significant negative effect on frame rate. Use time-slicing to help improve performance. - -See Also: ReflectionProbeTimeSlicingMode. - - - - - Causes the probe to update only on the first frame it becomes visible. The probe will no longer update automatically, however you may subsequently use RenderProbe to refresh the probe - -See Also: ReflectionProbe.RenderProbe. - - - - - Sets the probe to never be automatically updated by Unity while your game is running. Use this to completely control the probe refresh behavior by script. - -See Also: ReflectionProbe.RenderProbe. - - - - - When a probe's ReflectionProbe.refreshMode is set to ReflectionProbeRefreshMode.EveryFrame, this enum specify whether or not Unity should update the probe's cubemap over several frames or update the whole cubemap in one frame. -Updating a probe's cubemap is a costly operation. Unity needs to render the entire Scene for each face of the cubemap, as well as perform special blurring in order to get glossy reflections. The impact on frame rate can be significant. Time-slicing helps maintaning a more constant frame rate during these updates by performing the rendering over several frames. - - - - - Instructs Unity to use time-slicing by first rendering all faces at once, then spreading the remaining work over the next 8 frames. Using this option, updating the probe will take 9 frames. - - - - - Instructs Unity to spread the rendering of each face over several frames. Using this option, updating the cubemap will take 14 frames. This option greatly reduces the impact on frame rate, however it may produce incorrect results, especially in Scenes where lighting conditions change over these 14 frames. - - - - - Unity will render the probe entirely in one frame. - - - - - Reflection Probe usage. - - - - - Reflection probes are enabled. Blending occurs only between probes, useful in indoor environments. The renderer will use default reflection if there are no reflection probes nearby, but no blending between default reflection and probe will occur. - - - - - Reflection probes are enabled. Blending occurs between probes or probes and default reflection, useful for outdoor environments. - - - - - Reflection probes are disabled, skybox will be used for reflection. - - - - - Reflection probes are enabled, but no blending will occur between probes when there are two overlapping volumes. - - - - - This enum describes what should be done on the render target when it is activated (loaded). - - - - - Upon activating the render buffer, clear its contents. Currently only works together with the RenderPass API. - - - - - When this RenderBuffer is activated, the GPU is instructed not to care about the existing contents of that RenderBuffer. On tile-based GPUs this means that the RenderBuffer contents do not need to be loaded into the tile memory, providing a performance boost. - - - - - When this RenderBuffer is activated, preserve the existing contents of it. This setting is expensive on tile-based GPUs and should be avoided whenever possible. - - - - - This enum describes what should be done on the render target when the GPU is done rendering into it. - - - - - The contents of the RenderBuffer are not needed and can be discarded. Tile-based GPUs will skip writing out the surface contents altogether, providing performance boost. - - - - - Resolve the (MSAA'd) surface. Currently only used with the RenderPass API. - - - - - The RenderBuffer contents need to be stored to RAM. If the surface has MSAA enabled, this stores the non-resolved surface. - - - - - Resolve the (MSAA'd) surface, but also store the multisampled version. Currently only used with the RenderPass API. - - - - - Determine in which order objects are renderered. - - - - - Alpha tested geometry uses this queue. - - - - - This render queue is rendered before any others. - - - - - Opaque geometry uses this queue. - - - - - Last render queue that is considered "opaque". - - - - - This render queue is meant for overlay effects. - - - - - This render queue is rendered after Geometry and AlphaTest, in back-to-front order. - - - - - Describes a render target with one or more color buffers, a depthstencil buffer and the associated loadstore-actions that are applied when the render target is active. - - - - - Load actions for color buffers. - - - - - Color buffers to use as render targets. - - - - - Store actions for color buffers. - - - - - Load action for the depth/stencil buffer. - - - - - Depth/stencil buffer to use as render target. - - - - - Store action for the depth/stencil buffer. - - - - - Constructs RenderTargetBinding. - - Color buffers to use as render targets. - Depth buffer to use as render target. - Load actions for color buffers. - Store actions for color buffers. - Load action for the depth/stencil buffer. - Store action for the depth/stencil buffer. - - - - - - - - - - Constructs RenderTargetBinding. - - Color buffers to use as render targets. - Depth buffer to use as render target. - Load actions for color buffers. - Store actions for color buffers. - Load action for the depth/stencil buffer. - Store action for the depth/stencil buffer. - - - - - - - - - - Constructs RenderTargetBinding. - - Color buffers to use as render targets. - Depth buffer to use as render target. - Load actions for color buffers. - Store actions for color buffers. - Load action for the depth/stencil buffer. - Store action for the depth/stencil buffer. - - - - - - - - - - Identifies a RenderTexture for a Rendering.CommandBuffer. - - - - - Creates a render target identifier. - - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - RenderTexture or Texture object to use. - MipLevel of the RenderTexture to use. - Cubemap face of the Cubemap RenderTexture to use. - Depth slice of the Array RenderTexture to use. - An existing render target identifier. - - - - - Creates a render target identifier. - - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - RenderTexture or Texture object to use. - MipLevel of the RenderTexture to use. - Cubemap face of the Cubemap RenderTexture to use. - Depth slice of the Array RenderTexture to use. - An existing render target identifier. - - - - - Creates a render target identifier. - - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - RenderTexture or Texture object to use. - MipLevel of the RenderTexture to use. - Cubemap face of the Cubemap RenderTexture to use. - Depth slice of the Array RenderTexture to use. - An existing render target identifier. - - - - - Creates a render target identifier. - - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - RenderTexture or Texture object to use. - MipLevel of the RenderTexture to use. - Cubemap face of the Cubemap RenderTexture to use. - Depth slice of the Array RenderTexture to use. - An existing render target identifier. - - - - - Creates a render target identifier. - - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - RenderTexture or Texture object to use. - MipLevel of the RenderTexture to use. - Cubemap face of the Cubemap RenderTexture to use. - Depth slice of the Array RenderTexture to use. - An existing render target identifier. - - - - - Identifier of a specific code path in a shader. - - - - - Initializes a new instance of the ShaderKeyword class from a shader keyword name. - - - - - - Returns the string name of the keyword. - - - - - Returns the keyword kind: built-in or user defined. - - - - - Returns true if the keyword has been imported by Unity. - - - - - A collection of Rendering.ShaderKeyword that represents a specific shader variant. - - - - - Disable a specific shader keyword. - - - - - - Enable a specific shader keyword. - - - - - - Return an array with all the enabled keywords in the ShaderKeywordSet. - - - - - Check whether a specific shader keyword is enabled. - - - - - - Type of a shader keyword, eg: built-in or user defined. - - - - - The keyword is built-in the runtime and can be automatically stripped if unusued. - - - - - The keyword is built-in the runtime and it is systematically reserved. - - - - - The keyword is built-in the runtime and it is optionally reserved depending on the features used. - - - - - No type is assigned. - - - - - The keyword is defined by the user. - - - - - How shadows are cast from this object. - - - - - No shadows are cast from this object. - - - - - Shadows are cast from this object. - - - - - Object casts shadows, but is otherwise invisible in the Scene. - - - - - Shadows are cast from this object, treating it as two-sided. - - - - - Allows precise control over which shadow map passes to execute Rendering.CommandBuffer objects attached using Light.AddCommandBuffer. - - - - - All shadow map passes. - - - - - All directional shadow map passes. - - - - - First directional shadow map cascade. - - - - - Second directional shadow map cascade. - - - - - Third directional shadow map cascade. - - - - - Fourth directional shadow map cascade. - - - - - All point light shadow passes. - - - - - -X point light shadow cubemap face. - - - - - -Y point light shadow cubemap face. - - - - - -Z point light shadow cubemap face. - - - - - +X point light shadow cubemap face. - - - - - +Y point light shadow cubemap face. - - - - - +Z point light shadow cubemap face. - - - - - Spotlight shadow pass. - - - - - Used by CommandBuffer.SetShadowSamplingMode. - - - - - Default shadow sampling mode: sampling with a comparison filter. - - - - - In ShadowSamplingMode.None, depths are not compared. Use this value if a Texture is not a shadowmap. - - - - - Shadow sampling mode for sampling the depth value. - - - - - Adding a SortingGroup component to a GameObject will ensure that all Renderers within the GameObject's descendants will be sorted and rendered together. - - - - - Unique ID of the Renderer's sorting layer. - - - - - Name of the Renderer's sorting layer. - - - - - Renderer's order within a sorting layer. - - - - - Spherical harmonics up to the second order (3 bands, 9 coefficients). - - - - - Add ambient lighting to probe data. - - - - - - Add directional light to probe data. - - - - - - - - Clears SH probe to zero. - - - - - Evaluates the Spherical Harmonics for each of the given directions. The result from the first direction is written into the first element of results, the result from the second direction is written into the second element of results, and so on. The array size of directions and results must match and directions must be normalized. - - Normalized directions for which the spherical harmonics are to be evaluated. - Output array for the evaluated values of the corresponding directions. - - - - Returns true if SH probes are equal. - - - - - - - Scales SH by a given factor. - - - - - - - Scales SH by a given factor. - - - - - - - Returns true if SH probes are different. - - - - - - - Adds two SH probes. - - - - - - - Access individual SH coefficients. - - - - - Provides an interface to the Unity splash screen. - - - - - Returns true once the splash screen as finished. This is once all logos have been shown for their specified duration. - - - - - Initializes the splash screen so it is ready to begin drawing. Call this before you start calling Rendering.SplashScreen.Draw. Internally this function resets the timer and prepares the logos for drawing. - - - - - Immediately draws the splash screen. Ensure you have called Rendering.SplashScreen.Begin before you start calling this. - - - - - Specifies the operation that's performed on the stencil buffer when rendering. - - - - - Decrements the current stencil buffer value. Clamps to 0. - - - - - Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable unsigned value when decrementing a stencil buffer value of zero. - - - - - Increments the current stencil buffer value. Clamps to the maximum representable unsigned value. - - - - - Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing the maximum representable unsigned value. - - - - - Bitwise inverts the current stencil buffer value. - - - - - Keeps the current stencil value. - - - - - Replace the stencil buffer value with reference value (specified in the shader). - - - - - Sets the stencil buffer value to zero. - - - - - Broadly describes the stages of processing a draw call on the GPU. - - - - - The process of creating and shading the fragments. - - - - - All aspects of vertex processing. - - - - - Texture "dimension" (type). - - - - - Any texture type. - - - - - Cubemap texture. - - - - - Cubemap array texture (CubemapArray). - - - - - No texture is assigned. - - - - - 2D texture (Texture2D). - - - - - 2D array texture (Texture2DArray). - - - - - 3D volume texture (Texture3D). - - - - - Texture type is not initialized or unknown. - - - - - A flag representing each UV channel. - - - - - First UV channel. - - - - - Second UV channel. - - - - - Third UV channel. - - - - - Fourth UV channel. - - - - - A list of data channels that describe a vertex in a mesh. - - - - - Blend indices for skinned meshes. The common format is Int. - - - - - Blend weights for skinned meshes. The common format is Float. - - - - - The color channel. - - - - - The normal channel. The common format is Vector3. - - - - - The position channel. The common format is Vector3. - - - - - The tangent channel. The common format is Vector4. - - - - - The primary UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Rendering path of a Camera. - - - - - Deferred Lighting (Legacy). - - - - - Deferred Shading. - - - - - Forward Rendering. - - - - - Use Player Settings. - - - - - Vertex Lit. - - - - - RenderMode for the Canvas. - - - - - Render using the Camera configured on the Canvas. - - - - - Render at the end of the Scene using a 2D Canvas. - - - - - Render using any Camera in the Scene that can render the layer. - - - - - The Render Settings contain values for a range of visual elements in your Scene, like fog and ambient light. - - - - - Ambient lighting coming from the sides. - - - - - Ambient lighting coming from below. - - - - - How much the light from the Ambient Source affects the Scene. - - - - - Flat ambient lighting color. - - - - - Ambient lighting mode. - - - - - Custom or skybox ambient lighting data. - - - - - Ambient lighting coming from above. - - - - - Custom specular reflection cubemap. - - - - - Default reflection mode. - - - - - Cubemap resolution for default reflection. - - - - - The fade speed of all flares in the Scene. - - - - - The intensity of all flares in the Scene. - - - - - Is fog enabled? - - - - - The color of the fog. - - - - - The density of the exponential fog. - - - - - The ending distance of linear fog. - - - - - Fog mode to use. - - - - - The starting distance of linear fog. - - - - - Size of the Light halos. - - - - - The number of times a reflection includes other reflections. - - - - - How much the skybox / custom cubemap reflection affects the Scene. - - - - - The global skybox to use. - - - - - The color used for the sun shadows in the Subtractive lightmode. - - - - - The light used by the procedural skybox. - - - - - Fully describes setup of RenderTarget. - - - - - Color Buffers to set. - - - - - Load Actions for Color Buffers. It will override any actions set on RenderBuffers themselves. - - - - - Store Actions for Color Buffers. It will override any actions set on RenderBuffers themselves. - - - - - Cubemap face to render to. - - - - - Depth Buffer to set. - - - - - Load Action for Depth Buffer. It will override any actions set on RenderBuffer itself. - - - - - Slice of a Texture3D or Texture2DArray to set as a render target. - - - - - Store Actions for Depth Buffer. It will override any actions set on RenderBuffer itself. - - - - - Mip Level to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Render textures are textures that can be rendered to. - - - - - Currently active render texture. - - - - - The antialiasing level for the RenderTexture. - - - - - Mipmap levels are generated automatically when this flag is set. - - - - - If true and antiAliasing is greater than 1, the render texture will not be resolved by default. Use this if the render texture needs to be bound as a multisampled texture in a shader. - - - - - Color buffer of the render texture (Read Only). - - - - - The precision of the render texture's depth buffer in bits (0, 16, 24/32 are supported). - - - - - Depth/stencil buffer of the render texture (Read Only). - - - - - This struct contains all the information required to create a RenderTexture. It can be copied, cached, and reused to easily create RenderTextures that all share the same properties. - - - - - Dimensionality (type) of the render texture. - - - - - Enable random access write into this render texture on Shader Model 5.0 level shaders. - - - - - The color format of the render texture. - - - - - The height of the render texture in pixels. - - - - - If enabled, this Render Texture will be used as a Texture3D. - - - - - The render texture memoryless mode property. - - - - - Does this render texture use sRGB read/write conversions? (Read Only). - - - - - Is the render texture marked to be scaled by the Dynamic Resolution system. - - - - - Render texture has mipmaps when this flag is set. - - - - - Volume extent of a 3D render texture or number of slices of array texture. - - - - - If this RenderTexture is a VR eye texture used in stereoscopic rendering, this property decides what special rendering occurs, if any. - - - - - The width of the render texture in pixels. - - - - - Converts the render texture to equirectangular format (both stereoscopic or monoscopic equirect). -The left eye will occupy the top half and the right eye will occupy the bottom. The monoscopic version will occupy the whole texture. -Texture dimension must be of type TextureDimension.Cube. - - RenderTexture to render the equirect format to. - A Camera eye corresponding to the left or right eye for stereoscopic rendering, or neither for monoscopic rendering. - - - - Actually creates the RenderTexture. - - - True if the texture is created, else false. - - - - - Creates a new RenderTexture object. - - Texture width in pixels. - Texture height in pixels. - Number of bits in depth buffer (0, 16 or 24). Note that only 24 bit depth has stencil buffer. - Texture color format. - How or if color space conversions should be done on texture read/write. - Create the RenderTexture with the settings in the RenderTextureDescriptor. - Copy the settings from another RenderTexture. - - - - Creates a new RenderTexture object. - - Texture width in pixels. - Texture height in pixels. - Number of bits in depth buffer (0, 16 or 24). Note that only 24 bit depth has stencil buffer. - Texture color format. - How or if color space conversions should be done on texture read/write. - Create the RenderTexture with the settings in the RenderTextureDescriptor. - Copy the settings from another RenderTexture. - - - - Creates a new RenderTexture object. - - Texture width in pixels. - Texture height in pixels. - Number of bits in depth buffer (0, 16 or 24). Note that only 24 bit depth has stencil buffer. - Texture color format. - How or if color space conversions should be done on texture read/write. - Create the RenderTexture with the settings in the RenderTextureDescriptor. - Copy the settings from another RenderTexture. - - - - Hint the GPU driver that the contents of the RenderTexture will not be used. - - Should the colour buffer be discarded? - Should the depth buffer be discarded? - - - - Hint the GPU driver that the contents of the RenderTexture will not be used. - - Should the colour buffer be discarded? - Should the depth buffer be discarded? - - - - Generate mipmap levels of a render texture. - - - - - Retrieve a native (underlying graphics API) pointer to the depth buffer resource. - - - Pointer to an underlying graphics API depth buffer resource. - - - - - Allocate a temporary render texture. - - Width in pixels. - Height in pixels. - Depth buffer bits (0, 16 or 24). Note that only 24 bit depth has stencil buffer. - Render texture format. - Color space conversion mode. - Number of antialiasing samples to store in the texture. Valid values are 1, 2, 4, and 8. Throws an exception if any other value is passed. - Render texture memoryless mode. - Use this RenderTextureDesc for the settings when creating the temporary RenderTexture. - - - - - - Allocate a temporary render texture. - - Width in pixels. - Height in pixels. - Depth buffer bits (0, 16 or 24). Note that only 24 bit depth has stencil buffer. - Render texture format. - Color space conversion mode. - Number of antialiasing samples to store in the texture. Valid values are 1, 2, 4, and 8. Throws an exception if any other value is passed. - Render texture memoryless mode. - Use this RenderTextureDesc for the settings when creating the temporary RenderTexture. - - - - - - Is the render texture actually created? - - - - - Indicate that there's a RenderTexture restore operation expected. - - - - - Releases the RenderTexture. - - - - - Release a temporary texture allocated with GetTemporary. - - - - - - Force an antialiased render texture to be resolved. - - The render texture to resolve into. If set, the target render texture must have the same dimensions and format as the source. - - - - Force an antialiased render texture to be resolved. - - The render texture to resolve into. If set, the target render texture must have the same dimensions and format as the source. - - - - Assigns this RenderTexture as a global shader property named propertyName. - - - - - - Does a RenderTexture have stencil buffer? - - Render texture, or null for main screen. - - - - Set of flags that control the state of a newly-created RenderTexture. - - - - - Clear this flag when a RenderTexture is a VR eye texture and the device does not automatically flip the texture when being displayed. This is platform specific and -It is set by default. This flag is only cleared when part of a RenderTextureDesc that is returned from GetDefaultVREyeTextureDesc or other VR functions that return a RenderTextureDesc. Currently, only Hololens eye textures need to clear this flag. - - - - - Determines whether or not mipmaps are automatically generated when the RenderTexture is modified. -This flag is set by default, and has no effect if the RenderTextureCreationFlags.MipMap flag is not also set. -See RenderTexture.autoGenerateMips for more details. - - - - - Setting this flag causes the RenderTexture to be bound as a multisampled texture in a shader. The flag prevents the RenderTexture from being resolved by default when RenderTexture.antiAliasing is greater than 1. - - - - - This flag is always set internally when a RenderTexture is created from script. It has no effect when set manually from script code. - - - - - Set this flag to mark this RenderTexture for Dynamic Resolution should the target platform/graphics API support Dynamic Resolution. See ScalabeBufferManager for more details. - - - - - Set this flag to enable random access writes to the RenderTexture from shaders. -Normally, pixel shaders only operate on pixels they are given. Compute shaders cannot write to textures without this flag. Random write enables shaders to write to arbitrary locations on a RenderTexture. See RenderTexture.enableRandomWrite for more details, including supported platforms. - - - - - Set this flag when the Texture is to be used as a VR eye texture. This flag is cleared by default. This flag is set on a RenderTextureDesc when it is returned from GetDefaultVREyeTextureDesc or other VR functions returning a RenderTextureDesc. - - - - - Set this flag to allocate mipmaps in the RenderTexture. See RenderTexture.useMipMap for more details. - - - - - When this flag is set, the engine will not automatically resolve the color surface. - - - - - When this flag is set, reads and writes to this texture are converted to SRGB color space. See RenderTexture.sRGB for more details. - - - - - This struct contains all the information required to create a RenderTexture. It can be copied, cached, and reused to easily create RenderTextures that all share the same properties. - - - - - Mipmap levels are generated automatically when this flag is set. - - - - - If true and msaaSamples is greater than 1, the render texture will not be resolved by default. Use this if the render texture needs to be bound as a multisampled texture in a shader. - - - - - The color format for the RenderTexture. - - - - - The precision of the render texture's depth buffer in bits (0, 16, 24/32 are supported). - -See RenderTexture.depth. - - - - - Dimensionality (type) of the render texture. - -See RenderTexture.dimension. - - - - - Enable random access write into this render texture on Shader Model 5.0 level shaders. - -See RenderTexture.enableRandomWrite. - - - - - A set of RenderTextureCreationFlags that control how the texture is created. - - - - - The height of the render texture in pixels. - - - - - The render texture memoryless mode property. - - - - - The multisample antialiasing level for the RenderTexture. - -See RenderTexture.antiAliasing. - - - - - Determines how the RenderTexture is sampled if it is used as a shadow map. - -See ShadowSamplingMode for more details. - - - - - This flag causes the render texture uses sRGB read/write conversions. - - - - - Render texture has mipmaps when this flag is set. - -See RenderTexture.useMipMap. - - - - - Volume extent of a 3D render texture. - - - - - If this RenderTexture is a VR eye texture used in stereoscopic rendering, this property decides what special rendering occurs, if any. Instead of setting this manually, use the value returned by XR.XRSettings.eyeTextureDesc|eyeTextureDesc or other VR functions returning a RenderTextureDescriptor. - - - - - The width of the render texture in pixels. - - - - - Create a RenderTextureDescriptor with default values, or a certain width, height, and format. - - Width of the RenderTexture in pixels. - Height of the RenderTexture in pixels. - The color format for the RenderTexture. - The number of bits to use for the depth buffer. - - - - Create a RenderTextureDescriptor with default values, or a certain width, height, and format. - - Width of the RenderTexture in pixels. - Height of the RenderTexture in pixels. - The color format for the RenderTexture. - The number of bits to use for the depth buffer. - - - - Create a RenderTextureDescriptor with default values, or a certain width, height, and format. - - Width of the RenderTexture in pixels. - Height of the RenderTexture in pixels. - The color format for the RenderTexture. - The number of bits to use for the depth buffer. - - - - Format of a RenderTexture. - - - - - Color render texture format, 1 bit for Alpha channel, 5 bits for Red, Green and Blue channels. - - - - - Color render texture format. 10 bits for colors, 2 bits for alpha. - - - - - Color render texture format, 8 bits per channel. - - - - - Color render texture format, 4 bit per channel. - - - - - Four color render texture format, 16 bits per channel, fixed point, unsigned normalized. - - - - - Color render texture format, 32 bit floating point per channel. - - - - - Color render texture format, 16 bit floating point per channel. - - - - - Four channel (ARGB) render texture format, 32 bit signed integer per channel. - - - - - Color render texture format, 10 bit per channel, extended range. - - - - - Color render texture format, 10 bit per channel, extended range. - - - - - Color render texture format, 8 bits per channel. - - - - - Default color render texture format: will be chosen accordingly to Frame Buffer format and Platform. - - - - - Default HDR color render texture format: will be chosen accordingly to Frame Buffer format and Platform. - - - - - A depth render texture format. - - - - - Single channel (R) render texture format, 16 bit integer. - - - - - Single channel (R) render texture format, 8 bit integer. - - - - - Scalar (R) render texture format, 32 bit floating point. - - - - - Two channel (RG) render texture format, 8 bits per channel. - - - - - Two color (RG) render texture format, 16 bits per channel, fixed point, unsigned normalized. - - - - - Color render texture format. R and G channels are 11 bit floating point, B channel is 10 bit floating point. - - - - - Color render texture format. - - - - - Four channel (RGBA) render texture format, 16 bit unsigned integer per channel. - - - - - Two color (RG) render texture format, 32 bit floating point per channel. - - - - - Two color (RG) render texture format, 16 bit floating point per channel. - - - - - Two channel (RG) render texture format, 32 bit signed integer per channel. - - - - - Scalar (R) render texture format, 16 bit floating point. - - - - - Scalar (R) render texture format, 32 bit signed integer. - - - - - A native shadowmap render texture format. - - - - - Flags enumeration of the render texture memoryless modes. - - - - - Render texture color pixels are memoryless when RenderTexture.antiAliasing is set to 1. - - - - - Render texture depth pixels are memoryless. - - - - - Render texture color pixels are memoryless when RenderTexture.antiAliasing is set to 2, 4 or 8. - - - - - The render texture is not memoryless. - - - - - Color space conversion mode of a RenderTexture. - - - - - Render texture contains sRGB (color) data, perform Linear<->sRGB conversions on it. - - - - - Default color space conversion based on project settings. - - - - - Render texture contains linear (non-color) data; don't perform color conversions on it. - - - - - The RequireComponent attribute automatically adds required components as dependencies. - - - - - Require a single component. - - - - - - Require two components. - - - - - - - Require three components. - - - - - - - - Represents a display resolution. - - - - - Resolution height in pixels. - - - - - Resolution's vertical refresh rate in Hz. - - - - - Resolution width in pixels. - - - - - Returns a nicely formatted string of the resolution. - - - A string with the format "width x height @ refreshRateHz". - - - - - Asynchronous load request from the Resources bundle. - - - - - Asset object being loaded (Read Only). - - - - - The Resources class allows you to find and access Objects including assets. - - - - - Returns a list of all objects of Type type. - - Type of the class to match while searching. - - An array of objects whose class is type or is derived from type. - - - - - Returns a list of all objects of Type T. - - - - - Loads an asset stored at path in a folder called Resources. - - Pathname of the target folder. - - The requested asset returned as a Type. - - - - - Loads an asset stored at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - The requested asset returned as an Object. - - - - - Loads an asset stored at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - The requested asset returned as an Object. - - - - - Loads all assets in a folder or file at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - - - Loads all assets in a folder or file at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - - - Loads all assets in a folder or file at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - - - - Returns a resource at an asset path (Editor Only). - - Pathname of the target asset. - Type filter for objects returned. - - - - Returns a resource at an asset path (Editor Only). - - Pathname of the target asset. - - - - Asynchronously loads an asset stored at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - - - - Asynchronously loads an asset stored at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - - - - Asynchronously loads an asset stored at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - - - - Unloads assetToUnload from memory. - - - - - - Unloads assets that are not used. - - - Object on which you can yield to wait until the operation completes. - - - - - Control of an object's position through physics simulation. - - - - - The angular drag of the object. - - - - - The angular velocity vector of the rigidbody measured in radians per second. - - - - - The center of mass relative to the transform's origin. - - - - - The Rigidbody's collision detection mode. - - - - - Controls which degrees of freedom are allowed for the simulation of this Rigidbody. - - - - - Should collision detection be enabled? (By default always enabled). - - - - - The drag of the object. - - - - - Controls whether physics will change the rotation of the object. - - - - - The diagonal inertia tensor of mass relative to the center of mass. - - - - - The rotation of the inertia tensor. - - - - - Interpolation allows you to smooth out the effect of running physics at a fixed frame rate. - - - - - Controls whether physics affects the rigidbody. - - - - - The mass of the rigidbody. - - - - - The maximimum angular velocity of the rigidbody measured in radians per second. (Default 7) range { 0, infinity }. - - - - - Maximum velocity of a rigidbody when moving out of penetrating state. - - - - - The position of the rigidbody. - - - - - The rotation of the rigidbody. - - - - - The angular velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }. - - - - - The mass-normalized energy threshold, below which objects start going to sleep. - - - - - The linear velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }. - - - - - The solverIterations determines how accurately Rigidbody joints and collision contacts are resolved. Overrides Physics.defaultSolverIterations. Must be positive. - - - - - The solverVelocityIterations affects how how accurately Rigidbody joints and collision contacts are resolved. Overrides Physics.defaultSolverVelocityIterations. Must be positive. - - - - - Force cone friction to be used for this rigidbody. - - - - - Controls whether gravity affects this rigidbody. - - - - - The velocity vector of the rigidbody. - - - - - The center of mass of the rigidbody in world space (Read Only). - - - - - Applies a force to a rigidbody that simulates explosion effects. - - The force of the explosion (which may be modified by distance). - The centre of the sphere within which the explosion has its effect. - The radius of the sphere within which the explosion has its effect. - Adjustment to the apparent position of the explosion to make it seem to lift objects. - The method used to apply the force to its targets. - - - - Applies a force to a rigidbody that simulates explosion effects. - - The force of the explosion (which may be modified by distance). - The centre of the sphere within which the explosion has its effect. - The radius of the sphere within which the explosion has its effect. - Adjustment to the apparent position of the explosion to make it seem to lift objects. - The method used to apply the force to its targets. - - - - Applies a force to a rigidbody that simulates explosion effects. - - The force of the explosion (which may be modified by distance). - The centre of the sphere within which the explosion has its effect. - The radius of the sphere within which the explosion has its effect. - Adjustment to the apparent position of the explosion to make it seem to lift objects. - The method used to apply the force to its targets. - - - - Adds a force to the Rigidbody. - - Force vector in world coordinates. - Type of force to apply. - - - - Adds a force to the Rigidbody. - - Force vector in world coordinates. - Type of force to apply. - - - - Adds a force to the Rigidbody. - - Size of force along the world x-axis. - Size of force along the world y-axis. - Size of force along the world z-axis. - Type of force to apply. - - - - Adds a force to the Rigidbody. - - Size of force along the world x-axis. - Size of force along the world y-axis. - Size of force along the world z-axis. - Type of force to apply. - - - - Applies force at position. As a result this will apply a torque and force on the object. - - Force vector in world coordinates. - Position in world coordinates. - - - - - Applies force at position. As a result this will apply a torque and force on the object. - - Force vector in world coordinates. - Position in world coordinates. - - - - - Adds a force to the rigidbody relative to its coordinate system. - - Force vector in local coordinates. - - - - - Adds a force to the rigidbody relative to its coordinate system. - - Force vector in local coordinates. - - - - - Adds a force to the rigidbody relative to its coordinate system. - - Size of force along the local x-axis. - Size of force along the local y-axis. - Size of force along the local z-axis. - - - - - Adds a force to the rigidbody relative to its coordinate system. - - Size of force along the local x-axis. - Size of force along the local y-axis. - Size of force along the local z-axis. - - - - - Adds a torque to the rigidbody relative to its coordinate system. - - Torque vector in local coordinates. - - - - - Adds a torque to the rigidbody relative to its coordinate system. - - Torque vector in local coordinates. - - - - - Adds a torque to the rigidbody relative to its coordinate system. - - Size of torque along the local x-axis. - Size of torque along the local y-axis. - Size of torque along the local z-axis. - - - - - Adds a torque to the rigidbody relative to its coordinate system. - - Size of torque along the local x-axis. - Size of torque along the local y-axis. - Size of torque along the local z-axis. - - - - - Adds a torque to the rigidbody. - - Torque vector in world coordinates. - - - - - Adds a torque to the rigidbody. - - Torque vector in world coordinates. - - - - - Adds a torque to the rigidbody. - - Size of torque along the world x-axis. - Size of torque along the world y-axis. - Size of torque along the world z-axis. - - - - - Adds a torque to the rigidbody. - - Size of torque along the world x-axis. - Size of torque along the world y-axis. - Size of torque along the world z-axis. - - - - - The closest point to the bounding box of the attached colliders. - - - - - - The velocity of the rigidbody at the point worldPoint in global space. - - - - - - The velocity relative to the rigidbody at the point relativePoint. - - - - - - Is the rigidbody sleeping? - - - - - Moves the rigidbody to position. - - The new position for the Rigidbody object. - - - - Rotates the rigidbody to rotation. - - The new rotation for the Rigidbody. - - - - Reset the center of mass of the rigidbody. - - - - - Reset the inertia tensor value and rotation. - - - - - Sets the mass based on the attached colliders assuming a constant density. - - - - - - Forces a rigidbody to sleep at least one frame. - - - - - Tests if a rigidbody would collide with anything, if it was moved through the Scene. - - The direction into which to sweep the rigidbody. - If true is returned, hitInfo will contain more information about where the collider was hit (See Also: RaycastHit). - The length of the sweep. - Specifies whether this query should hit Triggers. - - True when the rigidbody sweep intersects any collider, otherwise false. - - - - - Like Rigidbody.SweepTest, but returns all hits. - - The direction into which to sweep the rigidbody. - The length of the sweep. - Specifies whether this query should hit Triggers. - - An array of all colliders hit in the sweep. - - - - - Forces a rigidbody to wake up. - - - - - Rigidbody physics component for 2D sprites. - - - - - Coefficient of angular drag. - - - - - Angular velocity in degrees per second. - - - - - Returns the number of Collider2D attached to this Rigidbody2D. - - - - - The physical behaviour type of the Rigidbody2D. - - - - - The center of mass of the rigidBody in local space. - - - - - The method used by the physics engine to check if two objects have collided. - - - - - Controls which degrees of freedom are allowed for the simulation of this Rigidbody2D. - - - - - Coefficient of drag. - - - - - Should the rigidbody be prevented from rotating? - - - - - Controls whether physics will change the rotation of the object. - - - - - The degree to which this object is affected by gravity. - - - - - The rigidBody rotational inertia. - - - - - Physics interpolation used between updates. - - - - - Should this rigidbody be taken out of physics control? - - - - - Mass of the Rigidbody. - - - - - The position of the rigidbody. - - - - - The rotation of the rigidbody. - - - - - The PhysicsMaterial2D that is applied to all Collider2D attached to this Rigidbody2D. - - - - - Indicates whether the rigid body should be simulated or not by the physics system. - - - - - The sleep state that the rigidbody will initially be in. - - - - - Should the total rigid-body mass be automatically calculated from the Collider2D.density of attached colliders? - - - - - Should kinematickinematic and kinematicstatic collisions be allowed? - - - - - Linear velocity of the rigidbody. - - - - - Gets the center of mass of the rigidBody in global space. - - - - - Apply a force to the rigidbody. - - Components of the force in the X and Y axes. - The method used to apply the specified force. - - - - Apply a force at a given position in space. - - Components of the force in the X and Y axes. - Position in world space to apply the force. - The method used to apply the specified force. - - - - Adds a force to the rigidbody2D relative to its coordinate system. - - Components of the force in the X and Y axes. - The method used to apply the specified force. - - - - Apply a torque at the rigidbody's centre of mass. - - Torque to apply. - The force mode to use. - - - - All the Collider2D shapes attached to the Rigidbody2D are cast into the Scene starting at each collider position ignoring the colliders attached to the same Rigidbody2D. - - Vector representing the direction to cast each Collider2D shape. - Array to receive results. - Maximum distance over which to cast the shape(s). - - The number of results returned. - - - - - All the Collider2D shapes attached to the Rigidbody2D are cast into the Scene starting at each collider position ignoring the colliders attached to the same Rigidbody2D. - - Vector representing the direction to cast each Collider2D shape. - Filter results defined by the contact filter. - Array to receive results. - Maximum distance over which to cast the shape(s). - - The number of results returned. - - - - - Calculates the minimum distance of this collider against all Collider2D attached to this Rigidbody2D. - - A collider used to calculate the minimum distance against all colliders attached to this Rigidbody2D. - - The minimum distance of collider against all colliders attached to this Rigidbody2D. - - - - - Returns all Collider2D that are attached to this Rigidbody2D. - - An array of Collider2D used to receive the results. - - Returns the number of Collider2D placed in the results array. - - - - - Retrieves all contact points for all of the collider(s) attached to this rigidbody. - - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with any of the collider(s) attached to this rigidbody. - - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Retrieves all contact points for all of the collider(s) attached to this rigidbody, with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with any of the collider(s) attached to this rigidbody, with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Get a local space point given the point point in rigidBody global space. - - The global space point to transform into local space. - - - - The velocity of the rigidbody at the point Point in global space. - - The global space point to calculate velocity for. - - - - Get a global space point given the point relativePoint in rigidBody local space. - - The local space point to transform into global space. - - - - The velocity of the rigidbody at the point Point in local space. - - The local space point to calculate velocity for. - - - - Get a global space vector given the vector relativeVector in rigidBody local space. - - The local space vector to transform into a global space vector. - - - - Get a local space vector given the vector vector in rigidBody global space. - - The global space vector to transform into a local space vector. - - - - Is the rigidbody "awake"? - - - - - Is the rigidbody "sleeping"? - - - - - Checks whether the collider is touching any of the collider(s) attached to this rigidbody or not. - - The collider to check if it is touching any of the collider(s) attached to this rigidbody. - - Whether the collider is touching any of the collider(s) attached to this rigidbody or not. - - - - - Checks whether the collider is touching any of the collider(s) attached to this rigidbody or not with the results filtered by the ContactFilter2D. - - The collider to check if it is touching any of the collider(s) attached to this rigidbody. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether the collider is touching any of the collider(s) attached to this rigidbody or not. - - - - - Checks whether any collider is touching any of the collider(s) attached to this rigidbody or not with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether any collider is touching any of the collider(s) attached to this rigidbody or not. - - - - - Checks whether any of the collider(s) attached to this rigidbody are touching any colliders on the specified layerMask or not. - - Any colliders on any of these layers count as touching. - - Whether any of the collider(s) attached to this rigidbody are touching any colliders on the specified layerMask or not. - - - - - Moves the rigidbody to position. - - The new position for the Rigidbody object. - - - - Rotates the rigidbody to angle (given in degrees). - - The new rotation angle for the Rigidbody object. - - - - Get a list of all colliders that overlap all colliders attached to this Rigidbody2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Check if any of the Rigidbody2D colliders overlap a point in space. - - A point in world space. - - Whether the point overlapped any of the Rigidbody2D colliders. - - - - - Make the rigidbody "sleep". - - - - - Disables the "sleeping" state of a rigidbody. - - - - - Use these flags to constrain motion of Rigidbodies. - - - - - Freeze rotation and motion along all axes. - - - - - Freeze motion along all axes. - - - - - Freeze motion along the X-axis. - - - - - Freeze motion along the Y-axis. - - - - - Freeze motion along the Z-axis. - - - - - Freeze rotation along all axes. - - - - - Freeze rotation along the X-axis. - - - - - Freeze rotation along the Y-axis. - - - - - Freeze rotation along the Z-axis. - - - - - No constraints. - - - - - Use these flags to constrain motion of the Rigidbody2D. - - - - - Freeze rotation and motion along all axes. - - - - - Freeze motion along the X-axis and Y-axis. - - - - - Freeze motion along the X-axis. - - - - - Freeze motion along the Y-axis. - - - - - Freeze rotation along the Z-axis. - - - - - No constraints. - - - - - Rigidbody interpolation mode. - - - - - Extrapolation will predict the position of the rigidbody based on the current velocity. - - - - - Interpolation will always lag a little bit behind but can be smoother than extrapolation. - - - - - No Interpolation. - - - - - Interpolation mode for Rigidbody2D objects. - - - - - Smooth an object's movement based on an estimate of its position in the next frame. - - - - - Smooth movement based on the object's positions in previous frames. - - - - - Do not apply any smoothing to the object's movement. - - - - - Settings for a Rigidbody2D's initial sleep state. - - - - - Rigidbody2D never automatically sleeps. - - - - - Rigidbody2D is initially asleep. - - - - - Rigidbody2D is initially awake. - - - - - The physical behaviour type of the Rigidbody2D. - - - - - Sets the Rigidbody2D to have dynamic behaviour. - - - - - Sets the Rigidbody2D to have kinematic behaviour. - - - - - Sets the Rigidbody2D to have static behaviour. - - - - - Control ConfigurableJoint's rotation with either X & YZ or Slerp Drive. - - - - - Use Slerp drive. - - - - - Use XY & Z Drive. - - - - - Attribute for setting up RPC functions. - - - - - Option for who will receive an RPC, used by NetworkView.RPC. - - - - - The runtime representation of the AnimatorController. Use this representation to change the Animator Controller during runtime. - - - - - Retrieves all AnimationClip used by the controller. - - - - - Set RuntimeInitializeOnLoadMethod type. - - - - - After Scene is loaded. - - - - - Before Scene is loaded. - - - - - Allow a runtime class method to be initialized when a game is loaded at runtime - without action from the user. - - - - - Set RuntimeInitializeOnLoadMethod type. - - - - - Creation of the runtime class used when Scenes are loaded. - - Determine whether methods are called before or after the - Scene is loaded. - - - - Creation of the runtime class used when Scenes are loaded. - - Determine whether methods are called before or after the - Scene is loaded. - - - - The platform application is running. Returned by Application.platform. - - - - - In the player on the Apple's tvOS. - - - - - In the player on Android devices. - - - - - In the player on the iPhone. - - - - - In the Unity editor on Linux. - - - - - In the player on Linux. - - - - - In the Dashboard widget on macOS. - - - - - In the Unity editor on macOS. - - - - - In the player on macOS. - - - - - In the web player on macOS. - - - - - In the player on the Playstation 4. - - - - - In the player on Nintendo Switch. - - - - - In the player on WebGL - - - - - In the Unity editor on Windows. - - - - - In the player on Windows. - - - - - In the web player on Windows. - - - - - In the player on Windows Store Apps when CPU architecture is ARM. - - - - - In the player on Windows Store Apps when CPU architecture is X64. - - - - - In the player on Windows Store Apps when CPU architecture is X86. - - - - - In the player on Xbox One. - - - - - Scales render textures to support dynamic resolution if the target platform/graphics API supports it. - - - - - Height scale factor to control dynamic resolution. - - - - - Width scale factor to control dynamic resolution. - - - - - Function to resize all buffers marked as DynamicallyScalable. - - New scale factor for the width the ScalableBufferManager will use to resize all render textures the user marked as DynamicallyScalable, has to be some value greater than 0.0 and less than or equal to 1.0. - New scale factor for the height the ScalableBufferManager will use to resize all render textures the user marked as DynamicallyScalable, has to be some value greater than 0.0 and less than or equal to 1.0. - - - - Scaling mode to draw textures with. - - - - - Scales the texture, maintaining aspect ratio, so it completely covers the position rectangle passed to GUI.DrawTexture. If the texture is being draw to a rectangle with a different aspect ratio than the original, the image is cropped. - - - - - Scales the texture, maintaining aspect ratio, so it completely fits withing the position rectangle passed to GUI.DrawTexture. - - - - - Stretches the texture to fill the complete rectangle passed in to GUI.DrawTexture. - - - - - This struct collects all the CreateScene parameters in to a single place. - - - - - See SceneManagement.LocalPhysicsMode. - - - - - Used when loading a Scene in a player. - - - - - Adds the Scene to the current loaded Scenes. - - - - - Closes all current loaded Scenes - and loads a Scene. - - - - - This struct collects all the LoadScene parameters in to a single place. - - - - - See LoadSceneMode. - - - - - See SceneManagement.LocalPhysicsMode. - - - - - Constructor for LoadSceneParameters. See SceneManager.LoadScene. - - See LoadSceneParameters.loadSceneMode. - - - - Provides options for 2D and 3D local physics. - - - - - No local 2D or 3D physics Scene will be created. - - - - - A local 2D physics Scene will be created and owned by the Scene. - - - - - A local 3D physics Scene will be created and owned by the Scene. - - - - - Run-time data structure for *.unity file. - - - - - Return the index of the Scene in the Build Settings. - - - - - Returns true if the Scene is modifed. - - - - - Returns true if the Scene is loaded. - - - - - Returns the name of the Scene that is currently active in the game or app. - - - - - Returns the relative path of the Scene. Like: "AssetsMyScenesMyScene.unity". - - - - - The number of root transforms of this Scene. - - - - - Returns all the root game objects in the Scene. - - - An array of game objects. - - - - - Returns all the root game objects in the Scene. - - A list which is used to return the root game objects. - - - - Whether this is a valid Scene. -A Scene may be invalid if, for example, you tried to open a Scene that does not exist. In this case, the Scene returned from EditorSceneManager.OpenScene would return False for IsValid. - - - Whether this is a valid Scene. - - - - - Returns true if the Scenes are equal. - - - - - - - Returns true if the Scenes are different. - - - - - - - Scene management at run-time. - - - - - Subscribe to this event to get notified when the active Scene has changed. - - Use a subscription of either a UnityAction<SceneManagement.Scene, SceneManagement.Scene> or a method that takes two SceneManagement.Scene types arguments. - - - - The total number of currently loaded Scenes. - - - - - Number of Scenes in Build Settings. - - - - - Add a delegate to this to get notifications when a Scene has loaded. - - Use a subscription of either a UnityAction<SceneManagement.Scene, SceneManagement.LoadSceneMode> or a method that takes a SceneManagement.Scene and a SceneManagement.LoadSceneMode. - - - - Add a delegate to this to get notifications when a Scene has unloaded. - - Use a subscription of either a UnityAction<SceneManagement.Scene> or a method that takes a SceneManagement.Scene type argument. - - - - Create an empty new Scene at runtime with the given name. - - The name of the new Scene. It cannot be empty or null, or same as the name of the existing Scenes. - Various parameters used to create the Scene. - - A reference to the new Scene that was created, or an invalid Scene if creation failed. - - - - - Create an empty new Scene at runtime with the given name. - - The name of the new Scene. It cannot be empty or null, or same as the name of the existing Scenes. - Various parameters used to create the Scene. - - A reference to the new Scene that was created, or an invalid Scene if creation failed. - - - - - Gets the currently active Scene. - - - The active Scene. - - - - - Returns an array of all the Scenes currently open in the hierarchy. - - - Array of Scenes in the Hierarchy. - - - - - Get the Scene at index in the SceneManager's list of loaded Scenes. - - Index of the Scene to get. Index must be greater than or equal to 0 and less than SceneManager.sceneCount. - - A reference to the Scene at the index specified. - - - - - Get a Scene struct from a build index. - - Build index as shown in the Build Settings window. - - A reference to the Scene, if valid. If not, an invalid Scene is returned. - - - - - Searches through the Scenes loaded for a Scene with the given name. - - Name of Scene to find. - - A reference to the Scene, if valid. If not, an invalid Scene is returned. - - - - - Searches all Scenes loaded for a Scene that has the given asset path. - - Path of the Scene. Should be relative to the project folder. Like: "AssetsMyScenesMyScene.unity". - - A reference to the Scene, if valid. If not, an invalid Scene is returned. - - - - - Loads the Scene by its name or index in Build Settings. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - Allows you to specify whether or not to load the Scene additively. See SceneManagement.LoadSceneMode for more information about the options. - - - - Loads the Scene by its name or index in Build Settings. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - Allows you to specify whether or not to load the Scene additively. See SceneManagement.LoadSceneMode for more information about the options. - - - - Loads the Scene by its name or index in Build Settings. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - Various parameters used to load the Scene. - - A handle to the Scene being loaded. - - - - - Loads the Scene by its name or index in Build Settings. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - Various parameters used to load the Scene. - - A handle to the Scene being loaded. - - - - - Loads the Scene asynchronously in the background. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - If LoadSceneMode.Single then all current Scenes will be unloaded before loading. - Struct that collects the various parameters into a single place except for the name and index. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Loads the Scene asynchronously in the background. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - If LoadSceneMode.Single then all current Scenes will be unloaded before loading. - Struct that collects the various parameters into a single place except for the name and index. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Loads the Scene asynchronously in the background. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - If LoadSceneMode.Single then all current Scenes will be unloaded before loading. - Struct that collects the various parameters into a single place except for the name and index. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Loads the Scene asynchronously in the background. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - If LoadSceneMode.Single then all current Scenes will be unloaded before loading. - Struct that collects the various parameters into a single place except for the name and index. - - Use the AsyncOperation to determine if the operation has completed. - - - - - This will merge the source Scene into the destinationScene. - - The Scene that will be merged into the destination Scene. - Existing Scene to merge the source Scene into. - - - - Move a GameObject from its current Scene to a new Scene. - - GameObject to move. - Scene to move into. - - - - Set the Scene to be active. - - The Scene to be set. - - Returns false if the Scene is not loaded yet. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in the Build Settings to unload. - Name or path of the Scene to unload. - Scene to unload. - - Returns true if the Scene is unloaded. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in the Build Settings to unload. - Name or path of the Scene to unload. - Scene to unload. - - Returns true if the Scene is unloaded. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in the Build Settings to unload. - Name or path of the Scene to unload. - Scene to unload. - - Returns true if the Scene is unloaded. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in BuildSettings. - Name or path of the Scene to unload. - Scene to unload. - Scene unloading options. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in BuildSettings. - Name or path of the Scene to unload. - Scene to unload. - Scene unloading options. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in BuildSettings. - Name or path of the Scene to unload. - Scene to unload. - Scene unloading options. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in BuildSettings. - Name or path of the Scene to unload. - Scene to unload. - Scene unloading options. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in BuildSettings. - Name or path of the Scene to unload. - Scene to unload. - Scene unloading options. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in BuildSettings. - Name or path of the Scene to unload. - Scene to unload. - Scene unloading options. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Scene and Build Settings related utilities. - - - - - Get the build index from a Scene path. - - Scene path (e.g: "AssetsScenesScene1.unity"). - - Build index. - - - - - Get the Scene path from a build index. - - - - Scene path (e.g "AssetsScenesScene1.unity"). - - - - - Scene unloading options passed to SceneManager.UnloadScene. - - - - - Unload scene without any special options. - - - - - Unloads all objects which were loaded from the scene's serialized file. Without this flag, only GameObject and Components within the scene's hierarchy will be unloaded. - -Note: Objects that are dynamically created during the build process can be embedded in the scene's serialized file. This can occur is when asset types are created and referenced inside the scene's post-processor callback. Some examples of these types are textures, meshes, and scriptable objects. Assets from your assets folder will not be embedded in the scene's serialized file. -Note: This flag will not unload assets which can be referenced by other scenes. - - - - - Access to display information. - - - - - Allow auto-rotation to landscape left? - - - - - Allow auto-rotation to landscape right? - - - - - Allow auto-rotation to portrait? - - - - - Allow auto-rotation to portrait, upside down? - - - - - The current screen resolution (Read Only). - - - - - The current DPI of the screen / device (Read Only). - - - - - Is the game running full-screen? - - - - - Set this property to one of the values in FullScreenMode to change the display mode of your application. - - - - - The current height of the screen window in pixels (Read Only). - - - - - Should the cursor be locked? - - - - - Specifies logical orientation of the screen. - - - - - All full-screen resolutions supported by the monitor (Read Only). - - - - - Returns the safe area of the screen in pixels (Read Only). - - - - - Should the cursor be visible? - - - - - A power saving setting, allowing the screen to dim some time after the last active user interaction. - - - - - The current width of the screen window in pixels (Read Only). - - - - - Switches the screen resolution. - - - - - - - - - - Switches the screen resolution. - - - - - - - - - - Switches the screen resolution. - - - - - - - - - - Functionality to take Screenshots. - - - - - Captures a screenshot at path filename as a PNG file. - - Pathname to save the screenshot file to. - Factor by which to increase resolution. - Specifies the eye texture to capture when stereo rendering is enabled. - - - - Captures a screenshot at path filename as a PNG file. - - Pathname to save the screenshot file to. - Factor by which to increase resolution. - Specifies the eye texture to capture when stereo rendering is enabled. - - - - Captures a screenshot of the game view into a Texture2D object. - - Factor by which to increase resolution. - Specifies the eye texture to capture when stereo rendering is enabled. - - - - Captures a screenshot of the game view into a Texture2D object. - - Factor by which to increase resolution. - Specifies the eye texture to capture when stereo rendering is enabled. - - - - Enumeration specifying the eye texture to capture when using ScreenCapture.CaptureScreenshot and when stereo rendering is enabled. - - - - - Both the left and right eyes are captured and composited into one image. - - - - - The Left Eye is captured. This is the default setting for the CaptureScreenshot method. - - - - - The Right Eye is captured. - - - - - Describes screen orientation. - - - - - Auto-rotates the screen as necessary toward any of the enabled orientations. - - - - - Landscape orientation, counter-clockwise from the portrait orientation. - - - - - Landscape orientation, clockwise from the portrait orientation. - - - - - Portrait orientation. - - - - - Portrait orientation, upside down. - - - - - A class you can derive from if you want to create objects that don't need to be attached to game objects. - - - - - Creates an instance of a scriptable object. - - The type of the ScriptableObject to create, as the name of the type. - The type of the ScriptableObject to create, as a System.Type instance. - - The created ScriptableObject. - - - - - Creates an instance of a scriptable object. - - The type of the ScriptableObject to create, as the name of the type. - The type of the ScriptableObject to create, as a System.Type instance. - - The created ScriptableObject. - - - - - Creates an instance of a scriptable object. - - - The created ScriptableObject. - - - - - Ensure an assembly is always processed during managed code stripping. - - - - - Experimental API to control the garbage collector on the Mono and IL2CPP scripting backends. - - - - - Set and get global garbage collector operation mode. - - - - - Subscribe to this event to get notified when GarbageCollector.GCMode changes. - - - - - - Garbage collector operation mode. - - - - - Disable garbage collector. - - - - - Enable garbage collector. - - - - - PreserveAttribute prevents byte code stripping from removing a class, method, field, or property. - - - - - Webplayer security related class. Not supported from 5.4.0 onwards. - - - - - Loads an assembly and checks that it is allowed to be used in the webplayer. (Web Player is no Longer Supported). - - Assembly to verify. - Public key used to verify assembly. - - Loaded, verified, assembly, or null if the assembly cannot be verfied. - - - - - Loads an assembly and checks that it is allowed to be used in the webplayer. (Web Player is no Longer Supported). - - Assembly to verify. - Public key used to verify assembly. - - Loaded, verified, assembly, or null if the assembly cannot be verfied. - - - - - Prefetch the webplayer socket security policy from a non-default port number. - - IP address of server. - Port from where socket policy is read. - Time to wait for response. - - - - Prefetch the webplayer socket security policy from a non-default port number. - - IP address of server. - Port from where socket policy is read. - Time to wait for response. - - - - Add this attribute to a script class to mark its GameObject as a selection base object for Scene View picking. - - - - - Options for how to send a message. - - - - - No receiver is required for SendMessage. - - - - - A receiver is required for SendMessage. - - - - - Use this attribute to rename a field without losing its serialized value. - - - - - The name of the field before the rename. - - - - - - - The name of the field before renaming. - - - - Force Unity to serialize a private field. - - - - - Shader scripts used for all rendering. - - - - - Shader LOD level for all shaders. - - - - - Render pipeline currently in use. - - - - - Shader hardware tier classification for current device. - - - - - Can this shader run on the end-users graphics card? (Read Only) - - - - - Shader LOD level for this shader. - - - - - Render queue of this shader. (Read Only) - - - - - Unset a global shader keyword. - - - - - - Set a global shader keyword. - - - - - - Finds a shader with the given name. - - - - - - Gets a global color property for all shaders previously set using SetGlobalColor. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global color property for all shaders previously set using SetGlobalColor. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global float property for all shaders previously set using SetGlobalFloat. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global float property for all shaders previously set using SetGlobalFloat. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global float array for all shaders previously set using SetGlobalFloatArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global float array for all shaders previously set using SetGlobalFloatArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global float array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global float array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global int property for all shaders previously set using SetGlobalInt. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global int property for all shaders previously set using SetGlobalInt. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global matrix property for all shaders previously set using SetGlobalMatrix. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global matrix property for all shaders previously set using SetGlobalMatrix. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global matrix array for all shaders previously set using SetGlobalMatrixArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global matrix array for all shaders previously set using SetGlobalMatrixArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global matrix array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global matrix array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global texture property for all shaders previously set using SetGlobalTexture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global texture property for all shaders previously set using SetGlobalTexture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global vector property for all shaders previously set using SetGlobalVector. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global vector property for all shaders previously set using SetGlobalVector. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global vector array for all shaders previously set using SetGlobalVectorArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global vector array for all shaders previously set using SetGlobalVectorArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global vector array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global vector array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Is global shader keyword enabled? - - - - - - Gets unique identifier for a shader property name. - - Shader property name. - - Unique integer for the name. - - - - - Sets a global compute buffer property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global compute buffer property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global color property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global color property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global int property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global int property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global texture property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global texture property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Fully load all shaders to prevent future performance hiccups. - - - - - ShaderVariantCollection records which shader variants are actually used in each shader. - - - - - Is this ShaderVariantCollection already warmed up? (Read Only) - - - - - Number of shaders in this collection (Read Only). - - - - - Number of total varians in this collection (Read Only). - - - - - Adds a new shader variant to the collection. - - Shader variant to add. - - False if already in the collection. - - - - - Remove all shader variants from the collection. - - - - - Checks if a shader variant is in the collection. - - Shader variant to check. - - True if the variant is in the collection. - - - - - Create a new empty shader variant collection. - - - - - Adds shader variant from the collection. - - Shader variant to add. - - False if was not in the collection. - - - - - Identifies a specific variant of a shader. - - - - - Array of shader keywords to use in this variant. - - - - - Pass type to use in this variant. - - - - - Shader to use in this variant. - - - - - Creates a ShaderVariant structure. - - - - - - - - Fully load shaders in ShaderVariantCollection. - - - - - The rendering mode of Shadowmask. - - - - - Static shadow casters will be rendered into realtime shadow maps. Shadowmasks and occlusion from Light Probes will only be used past the realtime shadow distance. - - - - - Static shadow casters won't be rendered into realtime shadow maps. All shadows from static casters are handled via Shadowmasks and occlusion from Light Probes. - - - - - Shadow projection type for. - - - - - Close fit shadow maps with linear fadeout. - - - - - Stable shadow maps with spherical fadeout. - - - - - Determines which type of shadows should be used. - - - - - Hard and Soft Shadows. - - - - - Disable Shadows. - - - - - Hard Shadows Only. - - - - - Default shadow resolution. - - - - - High shadow map resolution. - - - - - Low shadow map resolution. - - - - - Medium shadow map resolution. - - - - - Very high shadow map resolution. - - - - - SharedBetweenAnimatorsAttribute is an attribute that specify that this StateMachineBehaviour should be instantiate only once and shared among all Animator instance. This attribute reduce the memory footprint for each controller instance. - - - - - Details of the Transform name mapped to the skeleton bone of a model and its default position and rotation in the T-pose. - - - - - The name of the Transform mapped to the bone. - - - - - The T-pose position of the bone in local space. - - - - - The T-pose rotation of the bone in local space. - - - - - The T-pose scaling of the bone in local space. - - - - - The Skinned Mesh filter. - - - - - The bones used to skin the mesh. - - - - - Forces the Skinned Mesh to recalculate its matricies when rendered - - - - - AABB of this Skinned Mesh in its local space. - - - - - The maximum number of bones affecting a single vertex. - - - - - The mesh used for skinning. - - - - - Specifies whether skinned motion vectors should be used for this renderer. - - - - - If enabled, the Skinned Mesh will be updated when offscreen. If disabled, this also disables updating animations. - - - - - Creates a snapshot of SkinnedMeshRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the skinned mesh. - - - - Returns the weight of a BlendShape for this Renderer. - - The index of the BlendShape whose weight you want to retrieve. Index must be smaller than the Mesh.blendShapeCount of the Mesh attached to this Renderer. - - The weight of the BlendShape. - - - - - Sets the weight of a BlendShape for this Renderer. - - The index of the BlendShape to modify. Index must be smaller than the Mesh.blendShapeCount of the Mesh attached to this Renderer. - The weight for this BlendShape. - - - - The maximum number of bones affecting a single vertex. - - - - - Chooses the number of bones from the number current QualitySettings. (Default) - - - - - Use only 1 bone to deform a single vertex. (The most important bone will be used). - - - - - Use 2 bones to deform a single vertex. (The most important bones will be used). - - - - - Use 4 bones to deform a single vertex. - - - - - A script interface for the. - - - - - The material used by the skybox. - - - - - Constants for special values of Screen.sleepTimeout. - - - - - Prevent screen dimming. - - - - - Set the sleep timeout to whatever the user has specified in the system settings. - - - - - Joint that restricts the motion of a Rigidbody2D object to a single line. - - - - - The angle of the line in space (in degrees). - - - - - Should the angle be calculated automatically? - - - - - The current joint speed. - - - - - The current joint translation. - - - - - Restrictions on how far the joint can slide in each direction along the line. - - - - - Gets the state of the joint limit. - - - - - Parameters for a motor force that is applied automatically to the Rigibody2D along the line. - - - - - The angle (in degrees) referenced between the two bodies used as the constraint for the joint. - - - - - Should motion limits be used? - - - - - Should a motor force be applied automatically to the Rigidbody2D? - - - - - Gets the motor force of the joint given the specified timestep. - - The time to calculate the motor force for. - - - - Generic access to the Social API. - - - - - The local user (potentially not logged in). - - - - - This is the currently active social platform. - - - - - Create an IAchievement instance. - - - - - Create an ILeaderboard instance. - - - - - Loads the achievement descriptions accociated with this application. - - - - - - Load the achievements the logged in user has already achieved or reported progress on. - - - - - - Load a default set of scores from the given leaderboard. - - - - - - - Load the user profiles accociated with the given array of user IDs. - - - - - - - Reports the progress of an achievement. - - - - - - - - Report a score to a specific leaderboard. - - - - - - - - Show a default/system view of the games achievements. - - - - - Show a default/system view of the games leaderboards. - - - - - iOS GameCenter implementation for network services. - - - - - Reset all the achievements for the local user. - - - - - - Show the default iOS banner when achievements are completed. - - - - - - Show the leaderboard UI with a specific leaderboard shown initially with a specific time scope selected. - - - - - - - Information for a user's achievement. - - - - - Set to true when percentCompleted is 100.0. - - - - - This achievement is currently hidden from the user. - - - - - The unique identifier of this achievement. - - - - - Set by server when percentCompleted is updated. - - - - - Progress for this achievement. - - - - - Send notification about progress on this achievement. - - - - - - Static data describing an achievement. - - - - - Description when the achivement is completed. - - - - - Hidden achievement are not shown in the list until the percentCompleted has been touched (even if it's 0.0). - - - - - Unique identifier for this achievement description. - - - - - Image representation of the achievement. - - - - - Point value of this achievement. - - - - - Human readable title. - - - - - Description when the achivement has not been completed. - - - - - The leaderboard contains the scores of all players for a particular game. - - - - - Unique identifier for this leaderboard. - - - - - The leaderboad is in the process of loading scores. - - - - - The leaderboard score of the logged in user. - - - - - The total amount of scores the leaderboard contains. - - - - - The rank range this leaderboard returns. - - - - - The leaderboard scores returned by a query. - - - - - The time period/scope searched by this leaderboard. - - - - - The human readable title of this leaderboard. - - - - - The users scope searched by this leaderboard. - - - - - Load scores according to the filters set on this leaderboard. - - - - - - Only search for these user IDs. - - List of user ids. - - - - Represents the local or currently logged in user. - - - - - Checks if the current user has been authenticated. - - - - - The users friends list. - - - - - Is the user underage? - - - - - Authenticate the local user to the current active Social API implementation and fetch his profile data. - - Callback that is called whenever the authentication operation is finished. The first parameter is a Boolean identifying whether the authentication operation was successful. The optional second argument contains a string identifying any errors (if available) if the operation was unsuccessful. - - - - Authenticate the local user to the current active Social API implementation and fetch his profile data. - - Callback that is called whenever the authentication operation is finished. The first parameter is a Boolean identifying whether the authentication operation was successful. The optional second argument contains a string identifying any errors (if available) if the operation was unsuccessful. - - - - Fetches the friends list of the logged in user. The friends list on the ISocialPlatform.localUser|Social.localUser instance is populated if this call succeeds. - - - - - - A game score. - - - - - The date the score was achieved. - - - - - The correctly formatted value of the score, like X points or X kills. - - - - - The ID of the leaderboard this score belongs to. - - - - - The rank or position of the score in the leaderboard. - - - - - The user who owns this score. - - - - - The score value achieved. - - - - - Report this score instance. - - - - - - The generic Social API interface which implementations must inherit. - - - - - See Social.localUser. - - - - - See Social.CreateAchievement.. - - - - - See Social.CreateLeaderboard. - - - - - See Social.LoadAchievementDescriptions. - - - - - - See Social.LoadAchievements. - - - - - - See Social.LoadScores. - - - - - - - - See Social.LoadScores. - - - - - - - - See Social.LoadUsers. - - - - - - - See Social.ReportProgress. - - - - - - - - See Social.ReportScore. - - - - - - - - See Social.ShowAchievementsUI. - - - - - See Social.ShowLeaderboardUI. - - - - - Represents generic user instances, like friends of the local user. - - - - - This users unique identifier. - - - - - Avatar image of the user. - - - - - Is this user a friend of the current logged in user? - - - - - Presence state of the user. - - - - - This user's username or alias. - - - - - The score range a leaderboard query should include. - - - - - The total amount of scores retreived. - - - - - The rank of the first score which is returned. - - - - - Constructor for a score range, the range starts from a specific value and contains a maxium score count. - - The minimum allowed value. - The number of possible values. - - - - The scope of time searched through when querying the leaderboard. - - - - - The scope of the users searched through when querying the leaderboard. - - - - - User presence state. - - - - - The user is offline. - - - - - The user is online. - - - - - The user is online but away from their computer. - - - - - The user is online but set their status to busy. - - - - - The user is playing a game. - - - - - The limits defined by the CharacterJoint. - - - - - When the joint hits the limit, it can be made to bounce off it. - - - - - Determines how far ahead in space the solver can "see" the joint limit. - - - - - If spring is greater than zero, the limit is soft. - - - - - The limit position/angle of the joint (in degrees). - - - - - If greater than zero, the limit is soft. The spring will pull the joint back. - - - - - The configuration of the spring attached to the joint's limits: linear and angular. Used by CharacterJoint and ConfigurableJoint. - - - - - The damping of the spring limit. In effect when the stiffness of the sprint limit is not zero. - - - - - The stiffness of the spring limit. When stiffness is zero the limit is hard, otherwise soft. - - - - - SortingLayer allows you to set the render order of multiple sprites easily. There is always a default SortingLayer named "Default" which all sprites are added to initially. Added more SortingLayers to easily control the order of rendering of groups of sprites. Layers can be ordered before or after the default layer. - - - - - This is the unique id assigned to the layer. It is not an ordered running value and it should not be used to compare with other layers to determine the sorting order. - - - - - Returns all the layers defined in this project. - - - - - Returns the name of the layer as defined in the TagManager. - - - - - This is the relative value that indicates the sort order of this layer relative to the other layers. - - - - - Returns the final sorting layer value. To determine the sorting order between the various sorting layers, use this method to retrieve the final sorting value and use CompareTo to determine the order. - - The unique value of the sorting layer as returned by any renderer's sortingLayerID property. - - The final sorting value of the layer relative to other layers. - - - - - Returns the final sorting layer value. See Also: GetLayerValueFromID. - - The unique value of the sorting layer as returned by any renderer's sortingLayerID property. - - The final sorting value of the layer relative to other layers. - - - - - Returns the unique id of the layer. Will return "<unknown layer>" if an invalid id is given. - - The unique id of the layer. - - The name of the layer with id or "<unknown layer>" for invalid id. - - - - - Returns true if the id provided is a valid layer id. - - The unique id of a layer. - - True if the id provided is valid and assigned to a layer. - - - - - Returns the id given the name. Will return 0 if an invalid name was given. - - The name of the layer. - - The unique id of the layer with name. - - - - - The coordinate space in which to operate. - - - - - Applies transformation relative to the local coordinate system. - - - - - Applies transformation relative to the world coordinate system. - - - - - Use this PropertyAttribute to add some spacing in the Inspector. - - - - - The spacing in pixels. - - - - - Use this DecoratorDrawer to add some spacing in the Inspector. - - The spacing in pixels. - - - - Class for handling Sparse Textures. - - - - - Is the sparse texture actually created? (Read Only) - - - - - Get sparse texture tile height (Read Only). - - - - - Get sparse texture tile width (Read Only). - - - - - Create a sparse texture. - - Texture width in pixels. - Texture height in pixels. - Texture format. - Mipmap count. Pass -1 to create full mipmap chain. - Whether texture data will be in linear or sRGB color space (default is sRGB). - - - - Create a sparse texture. - - Texture width in pixels. - Texture height in pixels. - Texture format. - Mipmap count. Pass -1 to create full mipmap chain. - Whether texture data will be in linear or sRGB color space (default is sRGB). - - - - Unload sparse texture tile. - - Tile X coordinate. - Tile Y coordinate. - Mipmap level of the texture. - - - - Update sparse texture tile with color values. - - Tile X coordinate. - Tile Y coordinate. - Mipmap level of the texture. - Tile color data. - - - - Update sparse texture tile with raw pixel values. - - Tile X coordinate. - Tile Y coordinate. - Mipmap level of the texture. - Tile raw pixel data. - - - - Use this struct to set up a sphere cast command that is performed asynchronously during a job. - - - - - The direction of the sphere cast. - - - - - The maximum distance the sphere should check for collisions. - - - - - The LayerMask that selectively ignores Colliders when casting a sphere. - - - - - The starting point of the sphere cast in world coordinates. - - - - - The radius of the casting sphere. - - - - - Creates a SpherecastCommand. - - The starting point of the sphere cast. - The radius of the casting sphere. - The direction of the sphere cast. - The maximum distance the cast should check for collisions. - The LayerMask that selectively ignores Colliders when casting a sphere. - - - - Schedules a batch of sphere casts to perform in a job. - - A NaviveArray of SpherecastCommands to perform. - A NavtiveArray of RaycastHit where the result of commands are stored. - The minimum number of jobs which should be performed in a single job. - A jobHandle of the job that must be completed before performing the sphere casts. - - Returns a JobHandle of the job that will perform the sphere casts. - - - - - A sphere-shaped primitive collider. - - - - - The center of the sphere in the object's local space. - - - - - The radius of the sphere measured in the object's local space. - - - - - A Splat prototype is just a texture that is used by the TerrainData. - - - - - The metallic value of the splat layer. - - - - - Normal map of the splat applied to the Terrain. - - - - - The smoothness value of the splat layer when the main texture has no alpha channel. - - - - - Texture of the splat applied to the Terrain. - - - - - Offset of the tile texture of the SplatPrototype. - - - - - Size of the tile used in the texture of the SplatPrototype. - - - - - The spring joint ties together 2 rigid bodies, spring forces will be automatically applied to keep the object at the given distance. - - - - - The damper force used to dampen the spring force. - - - - - The maximum distance between the bodies relative to their initial distance. - - - - - The minimum distance between the bodies relative to their initial distance. - - - - - The spring force used to keep the two objects together. - - - - - The maximum allowed error between the current spring length and the length defined by minDistance and maxDistance. - - - - - Joint that attempts to keep two Rigidbody2D objects a set distance apart by applying a force between them. - - - - - Should the distance be calculated automatically? - - - - - The amount by which the spring force is reduced in proportion to the movement speed. - - - - - The distance the spring will try to keep between the two objects. - - - - - The frequency at which the spring oscillates around the distance distance between the objects. - - - - - Represents a Sprite object for use in 2D gameplay. - - - - - Returns the texture that contains the alpha channel from the source texture. Unity generates this texture under the hood for sprites that have alpha in the source, and need to be compressed using techniques like ETC1. - -Returns NULL if there is no associated alpha texture for the source sprite. This is the case if the sprite has not been setup to use ETC1 compression. - - - - - Returns the border sizes of the sprite. - - - - - Bounds of the Sprite, specified by its center and extents in world space units. - - - - - Returns true if this Sprite is packed in an atlas. - - - - - If Sprite is packed (see Sprite.packed), returns its SpritePackingMode. - - - - - If Sprite is packed (see Sprite.packed), returns its SpritePackingRotation. - - - - - Location of the Sprite's center point in the Rect on the original Texture, specified in pixels. - - - - - The number of pixels in the sprite that correspond to one unit in world space. (Read Only) - - - - - Location of the Sprite on the original Texture, specified in pixels. - - - - - Get the reference to the used texture. If packed this will point to the atlas, if not packed will point to the source sprite. - - - - - Get the rectangle this sprite uses on its texture. Raises an exception if this sprite is tightly packed in an atlas. - - - - - Gets the offset of the rectangle this sprite uses on its texture to the original sprite bounds. If sprite mesh type is FullRect, offset is zero. - - - - - Returns a copy of the array containing sprite mesh triangles. - - - - - The base texture coordinates of the sprite mesh. - - - - - Returns a copy of the array containing sprite mesh vertex positions. - - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Gets a physics shape from the Sprite by its index. - - The index of the physics shape to retrieve. - An ordered list of the points in the selected physics shape to store points in. - - The number of points stored in the given list. - - - - - The number of physics shapes for the Sprite. - - - The number of physics shapes for the Sprite. - - - - - The number of points in the selected physics shape for the Sprite. - - The index of the physics shape to retrieve the number of points from. - - The number of points in the selected physics shape for the Sprite. - - - - - Sets up new Sprite geometry. - - Array of vertex positions in Sprite Rect space. - Array of sprite mesh triangle indices. - - - - Sets up a new Sprite physics shape. - - A multidimensional list of points in Sprite.rect space denoting the physics shape outlines. - - - - How a Sprite's graphic rectangle is aligned with its pivot point. - - - - - Pivot is at the center of the bottom edge of the graphic rectangle. - - - - - Pivot is at the bottom left corner of the graphic rectangle. - - - - - Pivot is at the bottom right corner of the graphic rectangle. - - - - - Pivot is at the center of the graphic rectangle. - - - - - Pivot is at a custom position within the graphic rectangle. - - - - - Pivot is at the center of the left edge of the graphic rectangle. - - - - - Pivot is at the center of the right edge of the graphic rectangle. - - - - - Pivot is at the center of the top edge of the graphic rectangle. - - - - - Pivot is at the top left corner of the graphic rectangle. - - - - - Pivot is at the top right corner of the graphic rectangle. - - - - - SpriteRenderer draw mode. - - - - - Displays the full sprite. - - - - - The SpriteRenderer will render the sprite as a 9-slice image where the corners will remain constant and the other sections will scale. - - - - - The SpriteRenderer will render the sprite as a 9-slice image where the corners will remain constant and the other sections will tile. - - - - - A component for masking Sprites and Particles. - - - - - The minimum alpha value used by the mask to select the area of influence defined over the mask's sprite. - - - - - Unique ID of the sorting layer defining the end of the custom range. - - - - - Order within the back sorting layer defining the end of the custom range. - - - - - Unique ID of the sorting layer defining the start of the custom range. - - - - - Order within the front sorting layer defining the start of the custom range. - - - - - Mask sprites from front to back sorting values only. - - - - - The Sprite used to define the mask. - - - - - Determines the position of the Sprite used for sorting the SpriteMask. - - - - - This enum controls the mode under which the sprite will interact with the masking system. - - - - - The sprite will not interact with the masking system. - - - - - The sprite will be visible only in areas where a mask is present. - - - - - The sprite will be visible only in areas where no mask is present. - - - - - Defines the type of mesh generated for a sprite. - - - - - Rectangle mesh equal to the user specified sprite size. - - - - - Tight mesh based on pixel alpha values. As many excess pixels are cropped as possible. - - - - - Sprite packing modes for the Sprite Packer. - - - - - Alpha-cropped ractangle packing. - - - - - Tight mesh based packing. - - - - - Sprite rotation modes for the Sprite Packer. - - - - - Any rotation. - - - - - Sprite is flipped horizontally when packed. - - - - - Sprite is flipped vertically when packed. - - - - - No rotation. - - - - - Sprite is rotated 180 degree when packed. - - - - - Renders a Sprite for 2D graphics. - - - - - The current threshold for Sprite Renderer tiling. - - - - - Rendering color for the Sprite graphic. - - - - - The current draw mode of the Sprite Renderer. - - - - - Flips the sprite on the X axis. - - - - - Flips the sprite on the Y axis. - - - - - Specifies how the sprite interacts with the masks. - - - - - Property to set/get the size to render when the SpriteRenderer.drawMode is set to SpriteDrawMode.Sliced. - - - - - The Sprite to render. - - - - - Determines the position of the Sprite used for sorting the SpriteRenderer. - - - - - The current tile mode of the Sprite Renderer. - - - - - Helper utilities for accessing Sprite data. - - - - - Inner UV's of the Sprite. - - - - - - Minimum width and height of the Sprite. - - - - - - Outer UV's of the Sprite. - - - - - - Return the padding on the sprite. - - - - - - Determines the position of the Sprite used for sorting the Renderer. - - - - - The center of the Sprite is used as the point for sorting the Renderer. - - - - - The pivot of the Sprite is used as the point for sorting the Renderer. - - - - - Tiling mode for SpriteRenderer.tileMode. - - - - - Sprite Renderer tiles the sprite once the Sprite Renderer size is above SpriteRenderer.adaptiveModeThreshold. - - - - - Sprite Renderer tiles the sprite continuously when is set to SpriteRenderer.tileMode. - - - - - Stack trace logging options. - - - - - Native and managed stack trace will be logged. - - - - - No stack trace will be outputed to log. - - - - - Only managed stack trace will be outputed. - - - - - StateMachineBehaviour is a component that can be added to a state machine state. It's the base class every script on a state derives from. - - - - - Called on the first Update frame when a state machine evaluate this state. - - - - - Called on the last update frame when a state machine evaluate this state. - - - - - Called right after MonoBehaviour.OnAnimatorIK. - - - - - Called on the first Update frame when making a transition to a state machine. This is not called when making a transition into a state machine sub-state. - - The Animator playing this state machine. - The full path hash for this state machine. - - - - Called on the last Update frame when making a transition out of a StateMachine. This is not called when making a transition into a StateMachine sub-state. - - The Animator playing this state machine. - The full path hash for this state machine. - - - - Called right after MonoBehaviour.OnAnimatorMove. - - - - - Called at each Update frame except for the first and last frame. - - - - - StaticBatchingUtility can prepare your objects to take advantage of Unity's static batching. - - - - - StaticBatchingUtility.Combine prepares all children of the staticBatchRoot for static batching. - - The GameObject that should become the root of the combined batch. - - - - StaticBatchingUtility.Combine prepares all GameObjects contained in gos for static batching. staticBatchRoot is treated as their parent. - - The GameObjects to prepare for static batching. - The GameObject that should become the root of the combined batch. - - - - Enum values for the Camera's targetEye property. - - - - - Render both eyes to the HMD. - - - - - Render only the Left eye to the HMD. - - - - - Do not render either eye to the HMD. - - - - - Render only the right eye to the HMD. - - - - - A StreamingController controls the streaming settings for an individual camera location. - - - - - Offset applied to the mipmap level chosen by the texture streaming system for any textures visible from this camera. This Offset can take either a positive or negative value. - - - - - Abort preloading. - - - - - Used to find out whether the StreamingController is currently preloading texture mipmaps. - - - True if in a preloading state, otherwise False. - - - - - Initiate preloading of streaming data for this camera. - - Optional timeout before stopping preloading. Set to 0.0f when no timeout is required. - Set to True to activate the connected Camera component when timeout expires. - Camera to deactivate on timeout (if Camera.activateCameraOnTime is True). This parameter can be null. - - - - Applies tangent forces along the surfaces of colliders. - - - - - The scale of the impulse force applied while attempting to reach the surface speed. - - - - - The speed to be maintained along the surface. - - - - - The speed variation (from zero to the variation) added to base speed to be applied. - - - - - Should bounce be used for any contact with the surface? - - - - - Should the impulse force but applied to the contact point? - - - - - Should friction be used for any contact with the surface? - - - - - Access system and hardware information. - - - - - The current battery level (Read Only). - - - - - Returns the current status of the device's battery (Read Only). - - - - - Support for various Graphics.CopyTexture cases (Read Only). - - - - - The model of the device (Read Only). - - - - - The user defined name of the device (Read Only). - - - - - Returns the kind of device the application is running on (Read Only). - - - - - A unique device identifier. It is guaranteed to be unique for every device (Read Only). - - - - - The identifier code of the graphics device (Read Only). - - - - - The name of the graphics device (Read Only). - - - - - The graphics API type used by the graphics device (Read Only). - - - - - The vendor of the graphics device (Read Only). - - - - - The identifier code of the graphics device vendor (Read Only). - - - - - The graphics API type and driver version used by the graphics device (Read Only). - - - - - Amount of video memory present (Read Only). - - - - - Is graphics device using multi-threaded rendering (Read Only)? - - - - - Graphics device shader capability level (Read Only). - - - - - Returns true if the texture UV coordinate convention for this platform has Y starting at the top of the image. - - - - - Returns true when the GPU has native support for indexing uniform arrays in fragment shaders without restrictions. - - - - - True if the GPU supports hidden surface removal. - - - - - Maximum Cubemap texture size (Read Only). - - - - - Maximum texture size (Read Only). - - - - - What NPOT (non-power of two size) texture support does the GPU provide? (Read Only) - - - - - Operating system name with version (Read Only). - - - - - Returns the operating system family the game is running on (Read Only). - - - - - Number of processors present (Read Only). - - - - - Processor frequency in MHz (Read Only). - - - - - Processor name (Read Only). - - - - - How many simultaneous render targets (MRTs) are supported? (Read Only) - - - - - Are 2D Array textures supported? (Read Only) - - - - - Are 32-bit index buffers supported? (Read Only) - - - - - Are 3D (volume) RenderTextures supported? (Read Only) - - - - - Are 3D (volume) textures supported? (Read Only) - - - - - Is an accelerometer available on the device? - - - - - Returns true when the platform supports asynchronous compute queues and false if otherwise. - -Note that asynchronous compute queues are only supported on PS4. - - - - - Returns true if asynchronous readback of GPU data is available for this device and false otherwise. - - - - - Is there an Audio device available for playback? (Read Only) - - - - - Are compute shaders supported? (Read Only) - - - - - Are Cubemap Array textures supported? (Read Only) - - - - - Returns true when the platform supports GPUFences and false if otherwise. - -Note that GPUFences are only supported on PS4. - - - - - Is a gyroscope available on the device? - - - - - Does the hardware support quad topology? (Read Only) - - - - - Are image effects supported? (Read Only) - - - - - Is GPU draw call instancing supported? (Read Only) - - - - - Is the device capable of reporting its location? - - - - - Is streaming of texture mip maps supported? (Read Only) - - - - - Whether motion vectors are supported on this platform. - - - - - Returns true if multisampled textures are resolved automatically - - - - - Are multisampled textures supported? (Read Only) - - - - - Is sampling raw depth from shadowmaps supported? (Read Only) - - - - - Are render textures supported? (Read Only) - - - - - Are cubemap render textures supported? (Read Only) - - - - - Returns true when the platform supports different blend modes when rendering to multiple render targets, or false otherwise. - - - - - Are built-in shadows supported? (Read Only) - - - - - Are sparse textures supported? (Read Only) - - - - - Is the stencil buffer supported? (Read Only) - - - - - Returns true if the 'Mirror Once' texture wrap mode is supported. (Read Only) - - - - - Is the device capable of providing the user haptic feedback by vibration? - - - - - Amount of system memory present (Read Only). - - - - - Value returned by SystemInfo string properties which are not supported on the current platform. - - - - - This property is true if the current platform uses a reversed depth buffer (where values range from 1 at the near plane and 0 at far plane), and false if the depth buffer is normal (0 is near, 1 is far). (Read Only) - - - - - Verifies that the specified graphics format is supported for the specified usage. - - The Experimental.Rendering.GraphicsFormat format to look up. - The Experimental.Rendering.FormatUsage usage to look up. - - Returns true if the format is supported for the specific usage. Returns false otherwise. - - - - - Is blending supported on render texture format? - - The format to look up. - - True if blending is supported on the given format. - - - - - Is render texture format supported? - - The format to look up. - - True if the format is supported. - - - - - Is texture format supported on this device? - - The TextureFormat format to look up. - - True if the format is supported. - - - - - The language the user's operating system is running in. Returned by Application.systemLanguage. - - - - - Afrikaans. - - - - - Arabic. - - - - - Basque. - - - - - Belarusian. - - - - - Bulgarian. - - - - - Catalan. - - - - - Chinese. - - - - - ChineseSimplified. - - - - - ChineseTraditional. - - - - - Czech. - - - - - Danish. - - - - - Dutch. - - - - - English. - - - - - Estonian. - - - - - Faroese. - - - - - Finnish. - - - - - French. - - - - - German. - - - - - Greek. - - - - - Hebrew. - - - - - Hungarian. - - - - - Icelandic. - - - - - Indonesian. - - - - - Italian. - - - - - Japanese. - - - - - Korean. - - - - - Latvian. - - - - - Lithuanian. - - - - - Norwegian. - - - - - Polish. - - - - - Portuguese. - - - - - Romanian. - - - - - Russian. - - - - - Serbo-Croatian. - - - - - Slovak. - - - - - Slovenian. - - - - - Spanish. - - - - - Swedish. - - - - - Thai. - - - - - Turkish. - - - - - Ukrainian. - - - - - Unknown. - - - - - Vietnamese. - - - - - The joint attempts to move a Rigidbody2D to a specific target position. - - - - - The local-space anchor on the rigid-body the joint is attached to. - - - - - Should the target be calculated automatically? - - - - - The amount by which the target spring force is reduced in proportion to the movement speed. - - - - - The frequency at which the target spring oscillates around the target position. - - - - - The maximum force that can be generated when trying to maintain the target joint constraint. - - - - - The world-space position that the joint will attempt to move the body to. - - - - - The Terrain component renders the terrain. - - - - - The active terrain. This is a convenience function to get to the main terrain in the Scene. - - - - - The active terrains in the Scene. - - - - - Specifies if the terrain tile will be automatically connected to adjacent tiles. - - - - - Specifies if an array of internal light probes should be baked for terrain trees. Available only in editor. - - - - - Heightmap patches beyond basemap distance will use a precomputed low res basemap. - - - - - Terrain bottom neighbor. - - - - - Should terrain cast shadows?. - - - - - Collect detail patches from memory. - - - - - Removes ringing from probes on trees if enabled. - - - - - Density of detail objects. - - - - - Detail objects will be displayed up to this distance. - - - - - Specify if terrain heightmap should be drawn. - - - - - Set to true to enable the terrain instance renderer. The default value is false. - - - - - Specify if terrain trees and details should be drawn. - - - - - Controls what part of the terrain should be rendered. - - - - - Whether some per-camera rendering resources for the terrain should be freed after not being used for some frames. - - - - - Grouping ID for auto connect. - - - - - Lets you essentially lower the heightmap resolution used for rendering. - - - - - An approximation of how many pixels the terrain will pop in the worst case when switching lod. - - - - - RenderTextureFormat of the terrain heightmap. - - - - - Texture format of the terrain heightmap. - - - - - Terrain left neighbor. - - - - - The shininess value of the terrain. - - - - - The specular color of the terrain. - - - - - The index of the baked lightmap applied to this terrain. - - - - - The UV scale & offset used for a baked lightmap. - - - - - The custom material used to render the terrain. - - - - - The type of the material used to render the terrain. Could be one of the built-in types or custom. See Terrain.MaterialType. - - - - - Returns the normal map texture computed from sampling the heightmap. It is only used when terrain is rendered using instancing. - - - - - Set the terrain bounding box scale. - - - - - Allows you to specify how Unity chooses the for tree instances. - - - - - The index of the realtime lightmap applied to this terrain. - - - - - The UV scale & offset used for a realtime lightmap. - - - - - How reflection probes are used for terrain. See Rendering.ReflectionProbeUsage. - - - - - Terrain right neighbor. - - - - - The Terrain Data that stores heightmaps, terrain textures, detail meshes and trees. - - - - - Terrain top neighbor. - - - - - Distance from the camera where trees will be rendered as billboards only. - - - - - Total distance delta that trees will use to transition from billboard orientation to mesh orientation. - - - - - The maximum distance at which trees are rendered. - - - - - The multiplier to the current LOD bias used for rendering LOD trees (i.e. SpeedTree trees). - - - - - Maximum number of trees rendered at full LOD. - - - - - Adds a tree instance to the terrain. - - - - - - Update the terrain's LOD and vegetation information after making changes with TerrainData.SetHeightsDelayLOD. - - - - - Creates a Terrain including collider from TerrainData. - - - - - - Flushes any change done in the terrain so it takes effect. - - - - - Fills the list with reflection probes whose AABB intersects with terrain's AABB. Their weights are also provided. Weight shows how much influence the probe has on the terrain, and is used when the blending between multiple reflection probes occurs. - - [in / out] A list to hold the returned reflection probes and their weights. See ReflectionProbeBlendInfo. - - - - Get the position of the terrain. - - - - - Get the previously set splat material properties by copying to the dest MaterialPropertyBlock object. - - - - - - The type of the material used to render a terrain object. Could be one of the built-in types or custom. - - - - - A built-in material that uses the legacy Lambert (diffuse) lighting model and has optional normal map support. - - - - - A built-in material that uses the legacy BlinnPhong (specular) lighting model and has optional normal map support. - - - - - A built-in material that uses the standard physically-based lighting model. Inputs supported: smoothness, metallic / specular, normal. - - - - - Use a custom material given by Terrain.materialTemplate. - - - - - Samples the height at the given position defined in world space, relative to the terrain space. - - - - - - Marks the current connectivity status as invalid. - - - - - Lets you setup the connection between neighboring Terrains. - - - - - - - - - Set the additional material properties when rendering the terrain heightmap using the splat material. - - - - - - Indicate the types of changes to the terrain in OnTerrainChanged callback. - - - - - Indicates a change to the heightmap data without computing LOD. - - - - - Indicates that a change was made to the terrain that was so significant that the internal rendering data need to be flushed and recreated. - - - - - Indicates a change to the heightmap data. - - - - - Indicates a change to the detail data. - - - - - Indicates a change to the tree data. - - - - - Indicates that the TerrainData object is about to be destroyed. - - - - - A heightmap based collider. - - - - - The terrain that stores the heightmap. - - - - - The TerrainData class stores heightmaps, detail mesh positions, tree instances, and terrain texture alpha maps. - - - - - Height of the alpha map. - - - - - Number of alpha map layers. - - - - - Resolution of the alpha map. - - - - - Returns the number of alphamap textures. - - - - - Alpha map textures used by the Terrain. Used by Terrain Inspector for undo. - - - - - Width of the alpha map. - - - - - Resolution of the base map used for rendering far patches on the terrain. - - - - - The local bounding box of the TerrainData object. - - - - - Detail height of the TerrainData. - - - - - The number of patches along a terrain tile edge. This is squared to make a grid of patches. - - - - - Contains the detail texture/meshes that the terrain has. - - - - - Detail Resolution of the TerrainData. - - - - - Detail Resolution of each patch. A larger value will decrease the number of batches used by detail objects. - - - - - Detail width of the TerrainData. - - - - - Height of the terrain in samples (Read Only). - - - - - Resolution of the heightmap. - - - - - The size of each heightmap sample. - - - - - Returns the heightmap texture. - - - - - Width of the terrain in samples (Read Only). - - - - - The total size in world units of the terrain. - - - - - Splat texture used by the terrain. - - - - - Retrieves the terrain layers used by the current terrain. - - - - - The thickness of the terrain used for collision detection. - - - - - Returns the number of tree instances. - - - - - Contains the current trees placed in the terrain. - - - - - The list of tree prototypes this are the ones available in the inspector. - - - - - Amount of waving grass in the terrain. - - - - - Speed of the waving grass. - - - - - Strength of the waving grass in the terrain. - - - - - Color of the waving grass that the terrain has. - - - - - Returns the alpha map at a position x, y given a width and height. - - The x offset to read from. - The y offset to read from. - The width of the alpha map area to read. - The height of the alpha map area to read. - - A 3D array of floats, where the 3rd dimension represents the mixing weight of each splatmap at each x,y coordinate. - - - - - Returns the alphamap texture at the specified index. - - Index of the alphamap. - - Alphamap texture at the specified index. - - - - - Returns a 2D array of the detail object density in the specific location. - - - - - - - - - - Gets the height at a certain point x,y. - - - - - - - Get an array of heightmap samples. - - First x index of heightmap samples to retrieve. - First y index of heightmap samples to retrieve. - Number of samples to retrieve along the heightmap's x axis. - Number of samples to retrieve along the heightmap's y axis. - - - - Gets an interpolated height at a point x,y. - - - - - - - Get an interpolated normal at a given location. - - - - - - - Returns an array of tesselation maximum height error values per renderable terrain patch. The returned array can be modified and passed to OverrideMaximumHeightError. - - - Float array of maximum height error values. - - - - - Returns an array of min max height values for all the renderable patches in a terrain. The returned array can be modified and then passed to OverrideMinMaxPatchHeights. - - - Minimum and maximum height values for each patch. - - - - - Gets the gradient of the terrain at point (x,y). - - - - - - - Returns an array of all supported detail layer indices in the area. - - - - - - - - - Get the tree instance at the specified index. It is used as a faster version of treeInstances[index] as this function doesn't create the entire tree instances array. - - The index of the tree instance. - - - - Override the maximum tessellation height error with user provided values. Note that the overriden values get reset when the terrain resolution is changed and stays unchanged when the terrain heightmap is painted or changed via script. - - Provided maximum height error values. - - - - Override the minimum and maximum patch heights for every renderable terrain patch. Note that the overriden values get reset when the terrain resolution is changed and stays unchanged when the terrain heightmap is painted or changed via script. - - Array of minimum and maximum terrain patch height values. - - - - Reloads all the values of the available prototypes (ie, detail mesh assets) in the TerrainData Object. - - - - - Assign all splat values in the given map area. - - - - - - - - Marks the terrain data as dirty to trigger an update of the terrain basemap texture. - - - - - Sets the detail layer density map. - - - - - - - - - Set the resolution of the detail map. - - Specifies the number of pixels in the detail resolution map. A larger detailResolution, leads to more accurate detail object painting. - Specifies the size in pixels of each individually rendered detail patch. A larger number reduces draw calls, but might increase triangle count since detail patches are culled on a per batch basis. A recommended value is 16. If you use a very large detail object distance and your grass is very sparse, it makes sense to increase the value. - - - - Set an array of heightmap samples. - - First x index of heightmap samples to set. - First y index of heightmap samples to set. - Array of heightmap samples to set (values range from 0 to 1, array indexed as [y,x]). - - - - Set an array of heightmap samples. - - First x index of heightmap samples to set. - First y index of heightmap samples to set. - Array of heightmap samples to set (values range from 0 to 1, array indexed as [y,x]). - - - - Set the tree instance with new parameters at the specified index. However, TreeInstance.prototypeIndex and TreeInstance.position can not be changed otherwise an ArgumentException will be thrown. - - The index of the tree instance. - The new TreeInstance value. - - - - Triggers an update to integrate modifications done to the heightmap outside of unity. - - Start X position of the dirty heightmap region. - Start Y position of the dirty heightmap region. - Width of the the dirty heightmap region. - Width of the the dirty heightmap region. - - - - Extension methods to the Terrain class, used only for the UpdateGIMaterials method used by the Global Illumination System. - - - - - Schedules an update of the albedo and emissive Textures of a system that contains the Terrain. - - - - - - - - - - Schedules an update of the albedo and emissive Textures of a system that contains the Terrain. - - - - - - - - - - Description of a terrain layer. - - - - - A Vector4 value specifying the maximum RGBA value that the diffuse texture maps to when the value of the channel is 1. - - - - - A Vector4 value specifying the minimum RGBA value that the diffuse texture maps to when the value of the channel is 0. - - - - - The diffuse texture used by the terrain layer. - - - - - A Vector4 value specifying the maximum RGBA value that the mask map texture maps to when the value of the channel is 1. - - - - - A Vector4 value specifying the minimum RGBA value that the mask map texture maps to when the value of the channel is 0. - - - - - The mask map texture used by the terrain layer. - - - - - Metallic factor used by the terrain layer. - - - - - Normal map texture used by the terrain layer. - - - - - A float value that scales the normal vector. The minimum value is 0, the maximum value is 1. - - - - - Smoothness of the specular reflection. - - - - - Specular color. - - - - - UV tiling offset. - - - - - UV Tiling size. - - - - - Enum provding terrain rendering options. - - - - - Render all options. - - - - - Render terrain details. - - - - - Render heightmap. - - - - - Render trees. - - - - - Error states used by the TerrainMap. - - - - - Indicates that the adjacent terrain tiles are not aligned edge to edge. - - - - - No error detected. - - - - - Indicates that there are two terrain tiles occupying one grid cell in the TerrainMap. - - - - - Indicates that the adjacent terrain tiles have different sizes. - - - - - Terrain map filter. - - Terrain object to apply filter to. - - - - Specifies a set of 2D tile coordinates. - - - - - Tile X coordinate. - - - - - Tile Z coordinate. - - - - - How multiline text should be aligned. - - - - - Text lines are centered. - - - - - Text lines are aligned on the left side. - - - - - Text lines are aligned on the right side. - - - - - Where the anchor of the text is placed. - - - - - Text is anchored in lower side, centered horizontally. - - - - - Text is anchored in lower left corner. - - - - - Text is anchored in lower right corner. - - - - - Text is centered both horizontally and vertically. - - - - - Text is anchored in left side, centered vertically. - - - - - Text is anchored in right side, centered vertically. - - - - - Text is anchored in upper side, centered horizontally. - - - - - Text is anchored in upper left corner. - - - - - Text is anchored in upper right corner. - - - - - Attribute to make a string be edited with a height-flexible and scrollable text area. - - - - - The maximum amount of lines the text area can show before it starts using a scrollbar. - - - - - The minimum amount of lines the text area will use. - - - - - Attribute to make a string be edited with a height-flexible and scrollable text area. - - The minimum amount of lines the text area will use. - The maximum amount of lines the text area can show before it starts using a scrollbar. - - - - Attribute to make a string be edited with a height-flexible and scrollable text area. - - The minimum amount of lines the text area will use. - The maximum amount of lines the text area can show before it starts using a scrollbar. - - - - Text file assets. - - - - - The raw bytes of the text asset. (Read Only) - - - - - The text contents of the .txt file as a string. (Read Only) - - - - - Create a new TextAsset with the specified text contents. - -This constructor creates a TextAsset, which is not the same as a plain text file. When saved to disk using the AssetDatabase class, the TextAsset should be saved with the .asset extension. - - The text contents for the TextAsset. - - - - Returns the contents of the TextAsset. - - - - - Different methods for how the GUI system handles text being too large to fit the rectangle allocated. - - - - - Text gets clipped to be inside the element. - - - - - Text flows freely outside the element. - - - - - A structure that contains information about a given typeface and for a specific point size. - - - - - The Ascent line is typically located at the top of the tallest glyph in the typeface. - - - - - The Baseline is an imaginary line upon which all glyphs appear to rest on. - - - - - The Cap line is typically located at the top of capital letters. - - - - - The Descent line is typically located at the bottom of the glyph with the lowest descender in the typeface. - - - - - The name of the font typeface also known as family name. - - - - - The line height represents the distance between consecutive lines of text. - - - - - The Mean line is typically located at the top of lowercase letters. - - - - - The point size used for sampling the typeface. - - - - - The relative scale of the typeface. - - - - - The position of the strikethrough. - - - - - The thickness of the strikethrough. - - - - - The style name of the typeface which defines both the visual style and weight of the typeface. - - - - - The position of characters using subscript. - - - - - The relative size / scale of subscript characters. - - - - - The position of characters using superscript. - - - - - The relative size / scale of superscript characters. - - - - - The width of the tab character. - - - - - The position of the underline. - - - - - The thickness of the underline. - - - - - Compares the information in this FaceInfo structure with the information in the given FaceInfo structure to determine whether they have the same values. - - The FaceInfo structure to compare this FaceInfo structure with. - - Returns true if the FaceInfo structures have the same values. False if not. - - - - - A Glyph is the visual representation of a text element or character. - - - - - The index of the atlas texture that contains this glyph. - - - - - A rectangle that defines the position of a glyph within an atlas texture. - - - - - The index of the glyph in the source font file. - - - - - The metrics that define the size, position and spacing of a glyph when performing text layout. - - - - - The relative scale of the glyph. The default value is 1.0. - - - - - Compares two glyphs to determine if they have the same values. - - The glyph to compare with. - - Returns true if the glyphs have the same values. False if not. - - - - - Constructor for a new glyph. - - Glyph used as a reference for the new glyph. - The index of the glyph in the font file. - The metrics of the glyph. - The GlyphRect defining the position of the glyph in the atlas texture. - The relative scale of the glyph. - The index of the atlas texture that contains the glyph. - - - - Constructor for a new glyph. - - Glyph used as a reference for the new glyph. - The index of the glyph in the font file. - The metrics of the glyph. - The GlyphRect defining the position of the glyph in the atlas texture. - The relative scale of the glyph. - The index of the atlas texture that contains the glyph. - - - - Constructor for a new glyph. - - Glyph used as a reference for the new glyph. - The index of the glyph in the font file. - The metrics of the glyph. - The GlyphRect defining the position of the glyph in the atlas texture. - The relative scale of the glyph. - The index of the atlas texture that contains the glyph. - - - - Constructor for a new glyph. - - Glyph used as a reference for the new glyph. - The index of the glyph in the font file. - The metrics of the glyph. - The GlyphRect defining the position of the glyph in the atlas texture. - The relative scale of the glyph. - The index of the atlas texture that contains the glyph. - - - - A set of values that define the size, position and spacing of a glyph when performing text layout. - - - - - The height of the glyph. - - - - - The horizontal distance to increase (left to right) or decrease (right to left) the drawing position relative to the origin of the text element. - - - - - The horizontal distance from the current drawing position (origin) relative to the element's left bounding box edge (bbox). - - - - - The vertical distance from the current baseline relative to the element's top bounding box edge (bbox). - - - - - The width of the glyph. - - - - - Constructs a new GlyphMetrics structure. - - The width of the glyph. - The height of the glyph. - The horizontal bearingX. - The horizontal bearingY. - The horizontal advance. - - - - A rectangle that defines the position of a glyph within an atlas texture. - - - - - The height of the glyph. - - - - - The width of the glyph. - - - - - The x position of the glyph in the font atlas texture. - - - - - The y position of the glyph in the font atlas texture. - - - - - A GlyphRect with all values set to zero. Shorthand for writing GlyphRect(0, 0, 0, 0). - - - - - Constructor for a new GlyphRect. - - The x position of the glyph in the atlas texture. - The y position of the glyph in the atlas texture. - The width of the glyph. - The height of the glyph. - The Rect used to construct the new GlyphRect. - - - - Constructor for a new GlyphRect. - - The x position of the glyph in the atlas texture. - The y position of the glyph in the atlas texture. - The width of the glyph. - The height of the glyph. - The Rect used to construct the new GlyphRect. - - - - The FontEngine is used to access data from source font files. This includes information about individual characters, glyphs and relevant metrics typically used in the process of text parsing, layout and rendering. - -The types of font files supported are TrueType (.ttf, .ttc) and OpenType (.otf). - -The FontEngine is also used to raster the visual representation of characters known as glyphs in a given font atlas texture. - - - - - Destroy and unload resources used by the Font Engine. - - - A value of zero (0) if the Font Engine and used resources were successfully released. - - - - - Get the FaceInfo for the currently loaded and sized typeface. - - - Returns the FaceInfo of the currently loaded typeface. - - - - - Initialize the Font Engine and required resources. - - - A value of zero (0) if the initialization of the Font Engine was successful. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Set the size of the currently loaded font face. - - The point size used to scale the font face. - - A value of zero (0) if the font face was successfully scaled to the given point size. - - - - - Try to get the glyph index for the character at the given Unicode value. - - The unicode value of the character for which to lookup the glyph index. - The index of the glyph for the given unicode character or the .notdef glyph (index 0) if no glyph is available for the given Unicode value. - - Returns true if the given unicode has a glyph index. - - - - - Try loading the glyph for the given index value and if available populate the glyph. - - The index of the glyph that should be loaded. - The glyph loading flag that should be used to load the glyph. - The glyph using the provided index or the .notdef glyph (index 0) if no glyph was found at that index. - - Returns true if a glyph exists at the given index. Otherwise returns false. - - - - - Try loading a glyph for the given unicode value. If available, populates the glyph and returns true. Otherwise returns false and populates the glyph with the .notdef / missing glyph data. - - The glyph loading flag that should be used to load the glyph. - The glyph using the provided index or the .notdef glyph (index 0) if no glyph was found at that index. - The Unicode value of the character whose glyph should be loaded. - - Returns true if a glyph exists for the given unicode value. Otherwise returns false. - - - - - Error code returned by the various FontEngine functions. - - - - - Error code returned when the FontEngine glyph packing or rendering process has been cancelled. - - - - - Error code returned by the LoadGlyph function when referencing an invalid Unicode character value. - - - - - Error code indicating an invalid font face. - - - - - Error code indicating an invalid font file. - - - - - Error code returned by the LoadFontFace function when the source font file is of an unknown or invalid format. - - - - - Error code returned by the LoadFontFace function when the file path to the source font file appears invalid. - - - - - Error code returned by the LoadFontFace function when the source font file appears invalid or improperly formatted. - - - - - Error code returned by the LoadGlyph function when referencing an invalid or out of range glyph index value. - - - - - Error code indicating failure to initialize the font engine library. - - - - - Error code indicating failure to initialize the font engine library and / or successfully load a font face. - - - - - Error code returned by the LoadGlyph or SetFaceSize functions using an invalid pointSize value. - - - - - Error code indicating failure to load one of the tables of the font file. - - - - - Error code returned when the function was successfully executed. - - - - - The various options (flags) used by the FontEngine when loading glyphs from a font face. - - - - - Load glyph metrics without allocating and loading the bitmap data. - - - - - Load glyph metrics without using the 'hdmx' table. This flag is mostly used to validate font data. - - - - - Load glyph metrics and bitmap representation if available for the current face size. - - - - - Load glyphs using the auto hinter instead of the font's native hinter. - - - - - Load glyph metrics and render outline using 1-bit monochrome. - - - - - Load glyphs using the font's native hinter. - - - - - Load glyphs and ignore embedded bitmap strikes. - - - - - Load glyphs without hinting. - - - - - Load glyphs at default font units without scaling. This flag implies LOAD_NO_HINTING and LOAD_NO_BITMAP and unsets LOAD_RENDER. - - - - - Load glyph metrics and render outline using 8-bit or antialiased image of the glyph. - - - - - The modes available when packing glyphs into an atlas texture. - - - - - Place the glyph into the smallest free space available in which it can fit. - - - - - Place the glyph against the longer side of a free space to minimize the length of the longer leftover side. - - - - - Place the glyph against the short side of a free space to minimize the length of the shorter leftover side. - - - - - Place the glyph into available free space in a Tetris like fashion. - - - - - Place the glyph into the available free space by trying to maximize the contact point between it and other glyphs. - - - - - The rendering modes used by the Font Engine to render glyphs. - - - - - Renders a bitmap representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with no hinting. - - - - - Renders a bitmap representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with no hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with no hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with no hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with no hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from an 8-bit or antialiased image of the glyph outline with no hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from an 8-bit or antialiased image of the glyph outline with hinting. - - - - - Renders a bitmap representation of the glyph from an 8-bit or antialiased image of the glyph outline with no hinting. - - - - - Renders a bitmap representation of the glyph from an 8-bit or antialiased image of the glyph outline with hinting. - - - - - A struct that stores the settings for TextGeneration. - - - - - Use the extents of glyph geometry to perform horizontal alignment rather than glyph metrics. - - - - - The base color for the text generation. - - - - - Font to use for generation. - - - - - Font size. - - - - - Font style. - - - - - Continue to generate characters even if the text runs out of bounds. - - - - - Extents that the generator will attempt to fit the text in. - - - - - What happens to text when it reaches the horizontal generation bounds. - - - - - The line spacing multiplier. - - - - - Generated vertices are offset by the pivot. - - - - - Should the text be resized to fit the configured bounds? - - - - - Maximum size for resized text. - - - - - Minimum size for resized text. - - - - - Allow rich text markup in generation. - - - - - A scale factor for the text. This is useful if the Text is on a Canvas and the canvas is scaled. - - - - - How is the generated text anchored. - - - - - Should the text generator update the bounds from the generated text. - - - - - What happens to text when it reaches the bottom generation bounds. - - - - - Class that can be used to generate text for rendering. - - - - - The number of characters that have been generated. - - - - - The number of characters that have been generated and are included in the visible lines. - - - - - Array of generated characters. - - - - - The size of the font that was found if using best fit mode. - - - - - Number of text lines generated. - - - - - Information about each generated text line. - - - - - Extents of the generated text in rect format. - - - - - Number of vertices generated. - - - - - Array of generated vertices. - - - - - Create a TextGenerator. - - - - - - Create a TextGenerator. - - - - - - Populate the given List with UICharInfo. - - List to populate. - - - - Returns the current UICharInfo. - - - Character information. - - - - - Populate the given list with UILineInfo. - - List to populate. - - - - Returns the current UILineInfo. - - - Line information. - - - - - Given a string and settings, returns the preferred height for a container that would hold this text. - - Generation text. - Settings for generation. - - Preferred height. - - - - - Given a string and settings, returns the preferred width for a container that would hold this text. - - Generation text. - Settings for generation. - - Preferred width. - - - - - Populate the given list with generated Vertices. - - List to populate. - - - - Returns the current UIVertex array. - - - Vertices. - - - - - Mark the text generator as invalid. This will force a full text generation the next time Populate is called. - - - - - Will generate the vertices and other data for the given string with the given settings. - - String to generate. - Settings. - - - - Will generate the vertices and other data for the given string with the given settings. - - String to generate. - Generation settings. - The object used as context of the error log message, if necessary. - - True if the generation is a success, false otherwise. - - - - - A script interface for the. - - - - - How lines of text are aligned (Left, Right, Center). - - - - - Which point of the text shares the position of the Transform. - - - - - The size of each character (This scales the whole text). - - - - - The color used to render the text. - - - - - The Font used. - - - - - The font size to use (for dynamic fonts). - - - - - The font style to use (for dynamic fonts). - - - - - How much space will be in-between lines of text. - - - - - How far should the text be offset from the transform.position.z when drawing. - - - - - Enable HTML-style tags for Text Formatting Markup. - - - - - How much space will be inserted for a tab '\t' character. This is a multiplum of the 'spacebar' character offset. - - - - - The text that is displayed. - - - - - Base class for texture handling. Contains functionality that is common to both Texture2D and RenderTexture classes. - - - - - Anisotropic filtering level of the texture. - - - - - The amount of memory currently being used by textures. - - - - - This amount of texture memory would be used before the texture streaming budget is applied. - - - - - Dimensionality (type) of the texture (Read Only). - - - - - Filtering mode of the texture. - - - - - Height of the texture in pixels. (Read Only) - - - - - The hash value of the Texture. - - - - - Returns true if the Read/Write Enabled checkbox was checked when the texture was imported; otherwise returns false. For a dynamic Texture created from script, always returns true. For additional information, see TextureImporter.isReadable. - - - - - Mip map bias of the texture. - - - - - Number of non-streaming textures. - - - - - Total amount of memory being used by non-streaming textures. - - - - - How many times has a texture been uploaded due to texture mipmap streaming. - - - - - Number of renderers registered with the texture streaming system. - - - - - Number of streaming textures. - - - - - Force the streaming texture system to discard all unused mipmaps immediately, rather than caching them until the texture memory budget is exceeded. - - - - - Force streaming textures to load all mipmap levels. - - - - - Number of streaming textures with mipmaps currently loading. - - - - - Number of streaming textures with outstanding mipmaps to be loaded. - - - - - The amount of memory used by textures after the mipmap streaming and budget are applied and loading is complete. - - - - - The total amount of memory that would be used by all textures at mipmap level 0. - - - - - This counter is incremented when the texture is updated. - - - - - Width of the texture in pixels. (Read Only) - - - - - Texture coordinate wrapping mode. - - - - - Texture U coordinate wrapping mode. - - - - - Texture V coordinate wrapping mode. - - - - - Texture W coordinate wrapping mode for Texture3D. - - - - - Retrieve a native (underlying graphics API) pointer to the texture resource. - - - Pointer to an underlying graphics API texture resource. - - - - - Increment the update counter. - - - - - Sets Anisotropic limits. - - - - - - - Uploads additional debug information to materials using textures set to stream mip maps. - - - - - Class for texture handling. - - - - - Indicates whether this texture was imported with TextureImporter.alphaIsTransparency enabled. This setting is available only in the Editor scripts. Note that changing this setting will have no effect; it must be enabled in TextureImporter instead. - - - - - Get a small texture with all black pixels. - - - - - The mipmap level which would have been loaded by the streaming system before memory budgets are applied. - - - - - The format of the pixel data in the texture (Read Only). - - - - - Returns true if the Read/Write Enabled checkbox was checked when the texture was imported; otherwise returns false. For a dynamic Texture created from script, always returns true. For additional information, see TextureImporter.isReadable. - - - - - Which mipmap level is currently loaded by the streaming system. - - - - - Which mipmap level is in the process of being loaded by the mipmap streaming system. - - - - - How many mipmap levels are in this texture (Read Only). - - - - - The mipmap level to load. - - - - - Has mipmap streaming been enabled for this texture. - - - - - Relative priority for this texture when reducing memory size in order to hit the memory budget. - - - - - Get a small texture with all white pixels. - - - - - Actually apply all previous SetPixel and SetPixels changes. - - When set to true, mipmap levels are recalculated. - When set to true, system memory copy of a texture is released. - - - - Resets the requestedMipmapLevel field. - - - - - Compress texture into DXT format. - - - - - - Creates Unity Texture out of externally created native texture object. - - Native 2D texture object. - Width of texture in pixels. - Height of texture in pixels. - Format of underlying texture object. - Does the texture have mipmaps? - Is texture using linear color space? - - - - - Create a new empty texture. - - - - - - - Create a new empty texture. - - - - - - - - - Create a new empty texture. - - - - - - - - - - Flags used to control the encoding to an EXR file. - - - - - This texture will use Wavelet compression. This is best used for grainy images. - - - - - The texture will use RLE (Run Length Encoding) EXR compression format (similar to Targa RLE compression). - - - - - The texture will use the EXR ZIP compression format. - - - - - No flag. This will result in an uncompressed 16-bit float EXR file. - - - - - The texture will be exported as a 32-bit float EXR file (default is 16-bit). - - - - - Packs a set of rectangles into a square atlas, with optional padding between rectangles. - - An array of rectangle dimensions. - Amount of padding to insert between adjacent rectangles in the atlas. - The size of the atlas. - - If the function succeeds, this will contain the packed rectangles. Otherwise, the return value is null. - - - - - Returns pixel color at coordinates (x, y). - - - - - - - Returns filtered pixel color at normalized coordinates (u, v). - - - - - - - Get the pixel colors from the texture. - - The mipmap level to fetch the pixels from. Defaults to zero. - - The array of all pixels in the mipmap level of the texture. - - - - - Get a block of pixel colors. - - The x position of the pixel array to fetch. - The y position of the pixel array to fetch. - The width length of the pixel array to fetch. - The height length of the pixel array to fetch. - The mipmap level to fetch the pixels. Defaults to zero, and is - optional. - - The array of pixels in the texture that have been selected. - - - - - Get a block of pixel colors in Color32 format. - - - - - - Get raw data from a texture for reading or writing. - - - Raw texture data view. - - - - - Get raw data from a texture. - - - Raw texture data as a byte array. - - - - - Has the mipmap level requested by setting requestedMipmapLevel finished loading? - - - True if the mipmap level requested by setting requestedMipmapLevel has finished loading. - - - - - Fills texture pixels with raw preformatted data. - - Raw data array to initialize texture pixels with. - Size of data in bytes. - - - - Fills texture pixels with raw preformatted data. - - Raw data array to initialize texture pixels with. - Size of data in bytes. - - - - Fills texture pixels with raw preformatted data. - - Raw data array to initialize texture pixels with. - Size of data in bytes. - - - - Packs multiple Textures into a texture atlas. - - Array of textures to pack into the atlas. - Padding in pixels between the packed textures. - Maximum size of the resulting texture. - Should the texture be marked as no longer readable? - - An array of rectangles containing the UV coordinates in the atlas for each input texture, or null if packing fails. - - - - - Read pixels from screen into the saved texture data. - - Rectangular region of the view to read from. Pixels are read from current render target. - Horizontal pixel position in the texture to place the pixels that are read. - Vertical pixel position in the texture to place the pixels that are read. - Should the texture's mipmaps be recalculated after reading? - - - - Resizes the texture. - - - - - - - - - Resizes the texture. - - - - - - - Sets pixel color at coordinates (x,y). - - - - - - - - Set a block of pixel colors. - - The array of pixel colours to assign (a 2D image flattened to a 1D array). - The mip level of the texture to write to. - - - - Set a block of pixel colors. - - - - - - - - - - - Set a block of pixel colors. - - - - - - - Set a block of pixel colors. - - - - - - - - - - - Updates Unity texture to use different native texture object. - - Native 2D texture object. - - - - Class for handling 2D texture arrays. - - - - - Number of elements in a texture array (Read Only). - - - - - Texture format (Read Only). - - - - - Returns true if this texture array is Read/Write Enabled; otherwise returns false. For dynamic textures created from script, always returns true. - - - - - Actually apply all previous SetPixels changes. - - When set to true, mipmap levels are recalculated. - When set to true, system memory copy of a texture is released. - - - - Create a new texture array. - - Width of texture array in pixels. - Height of texture array in pixels. - Number of elements in the texture array. - Format of the texture. - Should mipmaps be created? - Does the texture contain non-color data (i.e. don't do any color space conversions when sampling)? Default is false. - - - - - - Create a new texture array. - - Width of texture array in pixels. - Height of texture array in pixels. - Number of elements in the texture array. - Format of the texture. - Should mipmaps be created? - Does the texture contain non-color data (i.e. don't do any color space conversions when sampling)? Default is false. - - - - - - Returns pixel colors of a single array slice. - - Array slice to read pixels from. - Mipmap level to read pixels from. - - Array of pixel colors. - - - - - Returns pixel colors of a single array slice. - - Array slice to read pixels from. - Mipmap level to read pixels from. - - Array of pixel colors in low precision (8 bits/channel) format. - - - - - Set pixel colors for the whole mip level. - - An array of pixel colors. - The texture array element index. - The mip level. - - - - Set pixel colors for the whole mip level. - - An array of pixel colors. - The texture array element index. - The mip level. - - - - Class for handling 3D Textures, Use this to create. - - - - - The depth of the texture (Read Only). - - - - - The format of the pixel data in the texture (Read Only). - - - - - Returns true if this 3D texture is Read/Write Enabled; otherwise returns false. For dynamic textures created from script, always returns true. - - - - - Actually apply all previous SetPixels changes. - - When set to true, mipmap levels are recalculated. - When set to true, system memory copy of a texture is released. - - - - Create a new empty 3D Texture. - - Width of texture in pixels. - Height of texture in pixels. - Depth of texture in pixels. - Texture data format. - Should the texture have mipmaps? - - - - - - Returns an array of pixel colors representing one mip level of the 3D texture. - - - - - - Returns an array of pixel colors representing one mip level of the 3D texture. - - - - - - Sets pixel colors of a 3D texture. - - The colors to set the pixels to. - The mipmap level to be affected by the new colors. - - - - Sets pixel colors of a 3D texture. - - The colors to set the pixels to. - The mipmap level to be affected by the new colors. - - - - Compression Quality. - - - - - Best compression. - - - - - Fast compression. - - - - - Normal compression (default). - - - - - Format used when creating textures from scripts. - - - - - Alpha-only texture format. - - - - - Color with alpha texture format, 8-bits per channel. - - - - - A 16 bits/pixel texture format. Texture stores color with an alpha channel. - - - - - ASTC (10x10 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (12x12 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (4x4 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (5x5 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (6x6 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (8x8 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (10x10 pixel block in 128 bits) compressed RGBA texture format. - - - - - ASTC (12x12 pixel block in 128 bits) compressed RGBA texture format. - - - - - ASTC (4x4 pixel block in 128 bits) compressed RGBA texture format. - - - - - ASTC (5x5 pixel block in 128 bits) compressed RGBA texture format. - - - - - ASTC (6x6 pixel block in 128 bits) compressed RGBA texture format. - - - - - ASTC (8x8 pixel block in 128 bits) compressed RGBA texture format. - - - - - Compressed one channel (R) texture format. - - - - - Compressed two-channel (RG) texture format. - - - - - HDR compressed color texture format. - - - - - High quality compressed color texture format. - - - - - Color with alpha texture format, 8-bits per channel. - - - - - Compressed color texture format. - - - - - Compressed color texture format with Crunch compression for smaller storage sizes. - - - - - Compressed color with alpha channel texture format. - - - - - Compressed color with alpha channel texture format with Crunch compression for smaller storage sizes. - - - - - ETC2 EAC (GL ES 3.0) 4 bitspixel compressed unsigned single-channel texture format. - - - - - ETC2 EAC (GL ES 3.0) 4 bitspixel compressed signed single-channel texture format. - - - - - ETC2 EAC (GL ES 3.0) 8 bitspixel compressed unsigned dual-channel (RG) texture format. - - - - - ETC2 EAC (GL ES 3.0) 8 bitspixel compressed signed dual-channel (RG) texture format. - - - - - ETC (GLES2.0) 4 bits/pixel compressed RGB texture format. - - - - - ETC 4 bits/pixel compressed RGB texture format. - - - - - Compressed color texture format with Crunch compression for smaller storage sizes. - - - - - ETC 4 bitspixel RGB + 4 bitspixel Alpha compressed texture format. - - - - - ETC2 (GL ES 3.0) 4 bits/pixel compressed RGB texture format. - - - - - ETC2 (GL ES 3.0) 4 bits/pixel RGB+1-bit alpha texture format. - - - - - ETC2 (GL ES 3.0) 8 bits/pixel compressed RGBA texture format. - - - - - Compressed color with alpha channel texture format using Crunch compression for smaller storage sizes. - - - - - PowerVR (iOS) 2 bits/pixel compressed color texture format. - - - - - PowerVR (iOS) 4 bits/pixel compressed color texture format. - - - - - PowerVR (iOS) 2 bits/pixel compressed with alpha channel texture format. - - - - - PowerVR (iOS) 4 bits/pixel compressed with alpha channel texture format. - - - - - Single channel (R) texture format, 16 bit integer. - - - - - Single channel (R) texture format, 8 bit integer. - - - - - Scalar (R) texture format, 32 bit floating point. - - - - - Two color (RG) texture format, 8-bits per channel. - - - - - Color texture format, 8-bits per channel. - - - - - A 16 bit color texture format. - - - - - RGB HDR format, with 9 bit mantissa per channel and a 5 bit shared exponent. - - - - - Color with alpha texture format, 8-bits per channel. - - - - - Color and alpha texture format, 4 bit per channel. - - - - - RGB color and alpha texture format, 32-bit floats per channel. - - - - - RGB color and alpha texture format, 16 bit floating point per channel. - - - - - Two color (RG) texture format, 32 bit floating point per channel. - - - - - Two color (RG) texture format, 16 bit floating point per channel. - - - - - Scalar (R) texture format, 16 bit floating point. - - - - - A format that uses the YUV color space and is often used for video encoding or playback. - - - - - Wrap mode for textures. - - - - - Clamps the texture to the last pixel at the edge. - - - - - Tiles the texture, creating a repeating pattern by mirroring it at every integer boundary. - - - - - Mirrors the texture once, then clamps to edge pixels. - - - - - Tiles the texture, creating a repeating pattern. - - - - - Priority of a thread. - - - - - Below normal thread priority. - - - - - Highest thread priority. - - - - - Lowest thread priority. - - - - - Normal thread priority. - - - - - Class passed onto when information is queried from the tiles. - - - - - Returns the boundaries of the Tilemap in cell size. - - - - - Returns the boundaries of the Tilemap in local space size. - - - - - The origin of the Tilemap in cell position. - - - - - The size of the Tilemap in cells. - - - - - Gets the color of a. - - Position of the Tile on the Tilemap. - - Color of the at the XY coordinate. - - - - - Returns the component of type T if the GameObject of the tile map has one attached, null if it doesn't. - - - The Component of type T to retrieve. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - Sprite at the XY coordinate. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - placed at the cell. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - placed at the cell. - - - - - Gets the TileFlags of the Tile at the given position. - - Position of the Tile on the Tilemap. - - TileFlags from the Tile. - - - - - Gets the transform matrix of a. - - Position of the Tile on the Tilemap. - - The transform matrix. - - - - - Refreshes a. - - Position of the Tile on the Tilemap. - - - - Class for a default tile in the Tilemap. - - - - - Color of the Tile. - - - - - TileFlags of the Tile. - - - - - GameObject of the Tile. - - - - - Sprite to be rendered at the Tile. - - - - - Matrix4x4|Transform matrix of the Tile. - - - - - Enum for determining what collider shape is generated for this Tile by the TilemapCollider2D. - - - - - The grid layout boundary outline is used as the collider shape for the Tile by the TilemapCollider2D. - - - - - No collider shape is generated for the Tile by the TilemapCollider2D. - - - - - The Sprite outline is used as the collider shape for the Tile by the TilemapCollider2D. - - - - - Retrieves the tile rendering data for the Tile. - - Position of the Tile on the Tilemap. - The Tilemap the tile is present on. - Data to render the tile. This is filled with Tile, Tile.color and Tile.transform. - - Whether the call was successful. This returns true for Tile. - - - - - A Struct for the required data for animating a Tile. - - - - - The array of that are ordered by appearance in the animation. - - - - - The animation speed. - - - - - The start time of the animation. The animation will begin at this time offset. - - - - - Base class for a tile in the Tilemap. - - - - - Retrieves any tile animation data from the scripted tile. - - Position of the Tile on the Tilemap. - The Tilemap the tile is present on. - Data to run an animation on the tile. - - Whether the call was successful. - - - - - Retrieves any tile rendering data from the scripted tile. - - Position of the Tile on the Tilemap. - The Tilemap the tile is present on. - Data to render the tile. - - Whether the call was successful. - - - - - This method is called when the tile is refreshed. - - Position of the Tile on the Tilemap. - The Tilemap the tile is present on. - - - - StartUp is called on the first frame of the running Scene. - - Position of the Tile on the Tilemap. - The Tilemap the tile is present on. - The GameObject instantiated for the Tile. - - Whether the call was successful. - - - - - A Struct for the required data for rendering a Tile. - - - - - Color of the Tile. - - - - - TileFlags of the Tile. - - - - - GameObject of the Tile. - - - - - Sprite to be rendered at the Tile. - - - - - Matrix4x4|Transform matrix of the Tile. - - - - - Flags controlling behavior for the TileBase. - - - - - TileBase does not instantiate its associated GameObject in editor mode and instantiates it only during play mode. - - - - - All lock flags. - - - - - TileBase locks any color set by brushes or the user. - - - - - TileBase locks any transform matrix set by brushes or the user. - - - - - No TileFlags are set. - - - - - The tile map stores component. - - - - - The frame rate for all tile animations in the tile map. - - - - - Returns the boundaries of the Tilemap in cell size. - - - - - The color of the tile map layer. - - - - - The origin of the Tilemap in cell position inclusive of editor preview tiles. - - - - - The size of the Tilemap in cells inclusive of editor preview tiles. - - - - - Gets the Grid associated with this tile map. - - - - - Gets the Grid associated with this tile map. - - - - - Returns the boundaries of the Tilemap in local space size. - - - - - Orientation of the tiles in the Tilemap. - - - - - Orientation Matrix of the orientation of the tiles in the Tilemap. - - - - - The origin of the Tilemap in cell position. - - - - - The size of the Tilemap in cells. - - - - - Gets the anchor point of tiles in the Tilemap. - - - - - Adds the TileFlags onto the Tile at the given position. - - Position of the Tile on the Tilemap. - TileFlags to add (with bitwise or) onto the flags provided by Tile.TileBase. - - - - Does a box fill with the given. Starts from given coordinates and fills the limits from start to end (inclusive). - - Position of the Tile on the Tilemap. - to place. - The minimum X coordinate limit to fill to. - The minimum Y coordinate limit to fill to. - The maximum X coordinate limit to fill to. - The maximum Y coordinate limit to fill to. - - - - Clears all editor preview tiles that are placed in the Tilemap. - - - - - Clears all tiles that are placed in the Tilemap. - - - - - Compresses the origin and size of the Tilemap to bounds where tiles exist. - - - - - Returns true if the Tilemap contains the given. Returns false if not. - - Tile to check. - - Whether the Tilemap contains the tile. - - - - - Does an editor preview of a box fill with the given. Starts from given coordinates and fills the limits from start to end (inclusive). - - Position of the Tile on the Tilemap. - to place. - The start X coordinate limit to fill to. - The start Y coordinate limit to fill to. - The ending X coordinate limit to fill to. - The ending Y coordinate limit to fill to. - - - - Does an editor preview of a flood fill with the given starting from the given coordinates. - - Start position of the flood fill on the Tilemap. - TileBase to place. - - - - Does a flood fill with the given starting from the given coordinates. - - Start position of the flood fill on the Tilemap. - to place. - - - - Get the logical center coordinate of a grid cell in local space. - - Grid cell position. - - Center of the cell transformed into local space coordinates. - - - - - Get the logical center coordinate of a grid cell in world space. - - Grid cell position. - - Center of the cell transformed into world space coordinates. - - - - - Gets the collider type of a. - - Position of the Tile on the Tilemap. - - Collider type of the at the XY coordinate. - - - - - Gets the color of a. - - Position of the Tile on the Tilemap. - - Color of the at the XY coordinate. - - - - - Gets the Color of an editor preview. - - Position of the Tile on the Tilemap. - - Color of the editor preview at the XY coordinate. - - - - - Gets the. - - Position of the editor preview Tile on the Tilemap. - - Sprite at the XY coordinate. - - - - - Gets the editor preview. - - Position of the editor preview Tile on the Tilemap. - - The editor preview placed at the cell. - - - - - Gets the editor preview. - - Position of the editor preview Tile on the Tilemap. - - The editor preview placed at the cell. - - - - - Gets the TileFlags of the editor preview Tile at the given position. - - Position of the Tile on the Tilemap. - - TileFlags from the editor preview Tile. - - - - - Gets the transform matrix of an editor preview. - - Position of the editor preview Tile on the Tilemap. - - The transform matrix. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - GameObject instantiated by the Tile at the position. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - Sprite at the XY coordinate. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - Tilemaps.TileBase placed at the cell. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - Tilemaps.TileBase|Tile of type T placed at the cell. - - - - - Gets the TileFlags of the Tile at the given position. - - Position of the Tile on the Tilemap. - - TileFlags from the Tile. - - - - - Retrieves an array of tiles with the given bounds. - - Bounds to retrieve from. - - An array of at the given bounds. - - - - - Gets the transform matrix of a. - - Position of the Tile on the Tilemap. - - The transform matrix. - - - - - Get the total number of different. - - - The total number of different. - - - - - Fills the given array with the total number of different and returns the number of tiles filled. - - The array to be filled. - - The number of tiles filled. - - - - - Returns whether there is an editor preview tile at the position. - - Position to check. - - True if there is an editor preview tile at the position. False if not. - - - - - Returns whether there is a tile at the position. - - Position to check. - - True if there is a tile at the position. False if not. - - - - - Determines the orientation of. - - - - - Use a custom orientation to all tiles in the tile map. - - - - - Orients tiles in the XY plane. - - - - - Orients tiles in the XZ plane. - - - - - Orients tiles in the YX plane. - - - - - Orients tiles in the YZ plane. - - - - - Orients tiles in the ZX plane. - - - - - Orients tiles in the ZY plane. - - - - - Refreshes all. The tile map will retrieve the rendering data, animation data and other data for all tiles and update all relevant components. - - - - - Refreshes a. - - Position of the Tile on the Tilemap. - - - - Removes the TileFlags onto the Tile at the given position. - - Position of the Tile on the Tilemap. - TileFlags to remove from the Tile. - - - - Resizes tiles in the Tilemap to bounds defined by origin and size. - - - - - Sets the collider type of a. - - Position of the Tile on the Tilemap. - Collider type to set the to at the XYZ coordinate. - - - - Sets the color of a. - - Position of the Tile on the Tilemap. - Color to set the to at the XY coordinate. - - - - Sets the color of an editor preview. - - Position of the editor preview Tile on the Tilemap. - Color to set the editor preview to at the XY coordinate. - - - - Sets an editor preview. - - Position of the editor preview Tile on the Tilemap. - The editor preview to be placed the cell. - - - - Sets the transform matrix of an editor preview tile given the XYZ coordinates of a cell in the. - - Position of the editor preview Tile on the Tilemap. - The transform matrix. - - - - Sets a. - - Position of the Tile on the Tilemap. - to be placed the cell. - - - - Sets the TileFlags onto the Tile at the given position. - - Position of the Tile on the Tilemap. - TileFlags to add onto the Tile. - - - - Sets an array of. - - An array of positions of Tiles on the Tilemap. - An array of to be placed. - - - - Fills bounds with array of tiles. - - Bounds to be filled. - An array of to be placed. - - - - Sets the transform matrix of a tile given the XYZ coordinates of a cell in the. - - Position of the Tile on the Tilemap. - The transform matrix. - - - - Swaps all existing tiles of changeTile to newTile and refreshes all the swapped tiles. - - Tile to swap. - Tile to swap to. - - - - Collider for 2D physics representing shapes defined by the corresponding Tilemap. - - - - - The tile map renderer is used to render the tile map marked out by a component. - - - - - Bounds used for culling of Tilemap chunks. - - - - - Size in number of tiles of each chunk created by the TilemapRenderer. - - - - - Returns whether the TilemapRenderer automatically detects the bounds to extend chunk culling by. - - - - - Specifies how the Tilemap interacts with the masks. - - - - - Maximum number of chunks the TilemapRenderer caches in memory. - - - - - Maximum number of frames the TilemapRenderer keeps unused chunks in memory. - - - - - The mode in which the TileMapRenderer batches the for rendering. - - - - - Active sort order for the TilemapRenderer. - - - - - Returns whether the TilemapRenderer automatically detects the bounds to extend chunk culling by. - - - - - The TilemapRenderer will automatically detect the bounds of extension by inspecting the Sprite/s used in the Tilemap. - - - - - The user adds in the values used for extend the bounds for culling of Tilemap chunks. - - - - - Determines how the TilemapRenderer should batch the for rendering. - - - - - Batches each Sprite from the Tilemap into grouped chunks to be rendered. - - - - - Sends each Sprite from the Tilemap to be rendered individually. - - - - - Sort order for all tiles rendered by the TilemapRenderer. - - - - - Sorts tiles for rendering starting from the tile with the lowest X and the lowest Y cell positions. - - - - - Sorts tiles for rendering starting from the tile with the highest X and the lowest Y cell positions. - - - - - Sorts tiles for rendering starting from the tile with the lowest X and the highest Y cell positions. - - - - - Sorts tiles for rendering starting from the tile with the highest X and the lowest Y cell positions. - - - - - The interface to get time information from Unity. - - - - - Slows game playback time to allow screenshots to be saved between frames. - - - - - The completion time in seconds since the last frame (Read Only). - - - - - The interval in seconds at which physics and other fixed frame rate updates (like MonoBehaviour's MonoBehaviour.FixedUpdate) are performed. - - - - - The time the latest MonoBehaviour.FixedUpdate has started (Read Only). This is the time in seconds since the start of the game. - - - - - The timeScale-independent interval in seconds from the last fixed frame to the current one (Read Only). - - - - - The TimeScale-independant time the latest MonoBehaviour.FixedUpdate has started (Read Only). This is the time in seconds since the start of the game. - - - - - The total number of frames that have passed (Read Only). - - - - - Returns true if called inside a fixed time step callback (like MonoBehaviour's MonoBehaviour.FixedUpdate), otherwise returns false. - - - - - The maximum time a frame can take. Physics and other fixed frame rate updates (like MonoBehaviour's MonoBehaviour.FixedUpdate) will be performed only for this duration of time per frame. - - - - - The maximum time a frame can spend on particle updates. If the frame takes longer than this, then updates are split into multiple smaller updates. - - - - - The real time in seconds since the game started (Read Only). - - - - - A smoothed out Time.deltaTime (Read Only). - - - - - The time at the beginning of this frame (Read Only). This is the time in seconds since the start of the game. - - - - - The scale at which the time is passing. This can be used for slow motion effects. - - - - - The time this frame has started (Read Only). This is the time in seconds since the last level has been loaded. - - - - - The timeScale-independent interval in seconds from the last frame to the current one (Read Only). - - - - - The timeScale-independant time for this frame (Read Only). This is the time in seconds since the start of the game. - - - - - Specify a tooltip for a field in the Inspector window. - - - - - The tooltip text. - - - - - Specify a tooltip for a field. - - The tooltip text. - - - - Structure describing the status of a finger touching the screen. - - - - - Value of 0 radians indicates that the stylus is parallel to the surface, pi/2 indicates that it is perpendicular. - - - - - Value of 0 radians indicates that the stylus is pointed along the x-axis of the device. - - - - - The position delta since last change. - - - - - Amount of time that has passed since the last recorded change in Touch values. - - - - - The unique index for the touch. - - - - - The maximum possible pressure value for a platform. If Input.touchPressureSupported returns false, the value of this property will always be 1.0f. - - - - - Describes the phase of the touch. - - - - - The position of the touch in pixel coordinates. - - - - - The current amount of pressure being applied to a touch. 1.0f is considered to be the pressure of an average touch. If Input.touchPressureSupported returns false, the value of this property will always be 1.0f. - - - - - An estimated value of the radius of a touch. Add radiusVariance to get the maximum touch size, subtract it to get the minimum touch size. - - - - - This value determines the accuracy of the touch radius. Add this value to the radius to get the maximum touch size, subtract it to get the minimum touch size. - - - - - The raw position used for the touch. - - - - - Number of taps. - - - - - A value that indicates whether a touch was of Direct, Indirect (or remote), or Stylus type. - - - - - Describes phase of a finger touch. - - - - - A finger touched the screen. - - - - - The system cancelled tracking for the touch. - - - - - A finger was lifted from the screen. This is the final phase of a touch. - - - - - A finger moved on the screen. - - - - - A finger is touching the screen but hasn't moved. - - - - - Interface into the native iPhone, Android, Windows Phone and Windows Store Apps on-screen keyboards - it is not available on other platforms. - - - - - Is the keyboard visible or sliding into the position on the screen? - - - - - Returns portion of the screen which is covered by the keyboard. - - - - - Specifies whether the TouchScreenKeyboard supports the selection property. (Read Only) - - - - - Specifies whether the TouchScreenKeyboard supports the selection property. (Read Only) - - - - - How many characters the keyboard input field is limited to. 0 = infinite. - - - - - Specifies if input process was finished. (Read Only) - - - - - Will text input field above the keyboard be hidden when the keyboard is on screen? - - - - - Is touch screen keyboard supported. - - - - - Gets or sets the character range of the selected text within the string currently being edited. - - - - - Returns the status of the on-screen keyboard. (Read Only) - - - - - Specified on which display the software keyboard will appear. - - - - - Returns the text displayed by the input field of the keyboard. - - - - - Returns the TouchScreenKeyboardType of the keyboard. - - - - - Returns true whenever any keyboard is completely visible on the screen. - - - - - Specifies if input process was canceled. (Read Only) - - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - The status of the on-screen keyboard. - - - - - The on-screen keyboard was canceled. - - - - - The user has finished providing input. - - - - - The on-screen keyboard has lost focus. - - - - - The on-screen keyboard is visible. - - - - - Enumeration of the different types of supported touchscreen keyboards. - - - - - Keyboard with standard ASCII keys. - - - - - The default keyboard layout of the target platform. - - - - - Keyboard with additional keys suitable for typing email addresses. - - - - - Keyboard with alphanumeric keys. - - - - - Keyboard for the Nintendo Network (Deprecated). - - - - - Keyboard with standard numeric keys. - - - - - Keyboard with numbers and punctuation mark keys. - - - - - Keyboard with a layout suitable for typing telephone numbers. - - - - - Keyboard with the "." key beside the space key, suitable for typing search terms. - - - - - Keyboard with symbol keys often used on social media, such as Twitter. - - - - - Keyboard with keys for URL entry. - - - - - Describes whether a touch is direct, indirect (or remote), or from a stylus. - - - - - A direct touch on a device. - - - - - An Indirect, or remote, touch on a device. - - - - - A touch from a stylus on a device. - - - - - The trail renderer is used to make trails behind objects in the Scene as they move about. - - - - - Select whether the trail will face the camera, or the orientation of the Transform Component. - - - - - Does the GameObject of this Trail Renderer auto destruct? - - - - - Set the color gradient describing the color of the trail at various points along its length. - - - - - Creates trails when the GameObject moves. - - - - - Set the color at the end of the trail. - - - - - The width of the trail at the end of the trail. - - - - - Configures a trail to generate Normals and Tangents. With this data, Scene lighting can affect the trail via Normal Maps and the Unity Standard Shader, or your own custom-built Shaders. - - - - - Set the minimum distance the trail can travel before a new vertex is added to it. - - - - - Set this to a value greater than 0, to get rounded corners on each end of the trail. - - - - - Set this to a value greater than 0, to get rounded corners between each segment of the trail. - - - - - Get the number of line segments in the trail. - - - - - Get the number of line segments in the trail. - - - - - Apply a shadow bias to prevent self-shadowing artifacts. The specified value is the proportion of the trail width at each segment. - - - - - Set the color at the start of the trail. - - - - - The width of the trail at the spawning point. - - - - - Choose whether the U coordinate of the trail texture is tiled or stretched. - - - - - How long does the trail take to fade out. - - - - - Set the curve describing the width of the trail at various points along its length. - - - - - Set an overall multiplier that is applied to the TrailRenderer.widthCurve to get the final width of the trail. - - - - - Adds a position to the trail. - - The position to add to the trail. - - - - Add an array of positions to the trail. - - The positions to add to the trail. - - - - Creates a snapshot of TrailRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the trail. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of TrailRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the trail. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of TrailRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the trail. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of TrailRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the trail. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Removes all points from the TrailRenderer. -Useful for restarting a trail from a new position. - - - - - Get the position of a vertex in the trail. - - The index of the position to retrieve. - - The position at the specified index in the array. - - - - - Get the positions of all vertices in the trail. - - The array of positions to retrieve. - - How many positions were actually stored in the output array. - - - - - Set the position of a vertex in the trail. - - Which position to set. - The new position. - - - - Sets the positions of all vertices in the trail. - - The array of positions to set. - - - - Position, rotation and scale of an object. - - - - - The number of children the parent Transform has. - - - - - The rotation as Euler angles in degrees. - - - - - The blue axis of the transform in world space. - - - - - Has the transform changed since the last time the flag was set to 'false'? - - - - - The transform capacity of the transform's hierarchy data structure. - - - - - The number of transforms in the transform's hierarchy data structure. - - - - - The rotation as Euler angles in degrees relative to the parent transform's rotation. - - - - - Position of the transform relative to the parent transform. - - - - - The rotation of the transform relative to the transform rotation of the parent. - - - - - The scale of the transform relative to the parent. - - - - - Matrix that transforms a point from local space into world space (Read Only). - - - - - The global scale of the object (Read Only). - - - - - The parent of the transform. - - - - - The world space position of the Transform. - - - - - The red axis of the transform in world space. - - - - - Returns the topmost transform in the hierarchy. - - - - - A quaternion that stores the rotation of the Transform in world space. - - - - - The green axis of the transform in world space. - - - - - Matrix that transforms a point from world space into local space (Read Only). - - - - - Unparents all children. - - - - - Finds a child by n and returns it. - - Name of child to be found. - - The returned child transform or null if no child is found. - - - - - Returns a transform child by index. - - Index of the child transform to return. Must be smaller than Transform.childCount. - - Transform child by index. - - - - - Gets the sibling index. - - - - - Transforms a direction from world space to local space. The opposite of Transform.TransformDirection. - - - - - - Transforms the direction x, y, z from world space to local space. The opposite of Transform.TransformDirection. - - - - - - - - Transforms position from world space to local space. - - - - - - Transforms the position x, y, z from world space to local space. The opposite of Transform.TransformPoint. - - - - - - - - Transforms a vector from world space to local space. The opposite of Transform.TransformVector. - - - - - - Transforms the vector x, y, z from world space to local space. The opposite of Transform.TransformVector. - - - - - - - - Is this transform a child of parent? - - - - - - Rotates the transform so the forward vector points at target's current position. - - Object to point towards. - Vector specifying the upward direction. - - - - Rotates the transform so the forward vector points at target's current position. - - Object to point towards. - Vector specifying the upward direction. - - - - Rotates the transform so the forward vector points at worldPosition. - - Point to look at. - Vector specifying the upward direction. - - - - Rotates the transform so the forward vector points at worldPosition. - - Point to look at. - Vector specifying the upward direction. - - - - Applies a rotation of eulerAngles.z degrees around the z-axis, eulerAngles.x degrees around the x-axis, and eulerAngles.y degrees around the y-axis (in that order). - - The rotation to apply. - Determines whether to rotate the GameObject either locally to the GameObject or relative to the Scene in world space. - - - - Applies a rotation of zAngle degrees around the z axis, xAngle degrees around the x axis, and yAngle degrees around the y axis (in that order). - - Determines whether to rotate the GameObject either locally to the GameObject or relative to the Scene in world space. - Degrees to rotate the GameObject around the X axis. - Degrees to rotate the GameObject around the Y axis. - Degrees to rotate the GameObject around the Z axis. - - - - Rotates the object around the given axis by the number of degrees defined by the given angle. - - The degrees of rotation to apply. - The axis to apply rotation to. - Determines whether to rotate the GameObject either locally to the GameObject or relative to the Scene in world space. - - - - Rotates the transform about axis passing through point in world coordinates by angle degrees. - - - - - - - - - - - - - - - Move the transform to the start of the local transform list. - - - - - Move the transform to the end of the local transform list. - - - - - Set the parent of the transform. - - The parent Transform to use. - If true, the parent-relative position, scale and - rotation are modified such that the object keeps the same world space position, - rotation and scale as before. - - - - - Set the parent of the transform. - - The parent Transform to use. - If true, the parent-relative position, scale and - rotation are modified such that the object keeps the same world space position, - rotation and scale as before. - - - - - Sets the world space position and rotation of the Transform component. - - - - - - - Sets the sibling index. - - Index to set. - - - - Transforms direction from local space to world space. - - - - - - Transforms direction x, y, z from local space to world space. - - - - - - - - Transforms position from local space to world space. - - - - - - Transforms the position x, y, z from local space to world space. - - - - - - - - Transforms vector from local space to world space. - - - - - - Transforms vector x, y, z from local space to world space. - - - - - - - - Moves the transform in the direction and distance of translation. - - - - - - - Moves the transform in the direction and distance of translation. - - - - - - - Moves the transform by x along the x axis, y along the y axis, and z along the z axis. - - - - - - - - - Moves the transform by x along the x axis, y along the y axis, and z along the z axis. - - - - - - - - - Moves the transform in the direction and distance of translation. - - - - - - - Moves the transform by x along the x axis, y along the y axis, and z along the z axis. - - - - - - - - - Transparent object sorting mode of a Camera. - - - - - Sort objects based on distance along a custom axis. - - - - - Default transparency sorting mode. - - - - - Orthographic transparency sorting mode. - - - - - Perspective transparency sorting mode. - - - - - Tree Component for the tree creator. - - - - - Data asociated to the Tree. - - - - - Tells if there is wind data exported from SpeedTree are saved on this component. - - - - - Contains information about a tree placed in the Terrain game object. - - - - - Color of this instance. - - - - - Height scale of this instance (compared to the prototype's size). - - - - - Lightmap color calculated for this instance. - - - - - Position of the tree. - - - - - Index of this instance in the TerrainData.treePrototypes array. - - - - - Read-only. - -Rotation of the tree on X-Z plane (in radians). - - - - - Width scale of this instance (compared to the prototype's size). - - - - - Simple class that contains a pointer to a tree prototype. - - - - - Bend factor of the tree prototype. - - - - - Retrieves the actual GameObject used by the tree. - - - - - Interface into tvOS specific functionality. - - - - - Advertising ID. - - - - - Is advertising tracking enabled. - - - - - The generation of the device. (Read Only) - - - - - iOS version. - - - - - Vendor ID. - - - - - Reset "no backup" file flag: file will be synced with iCloud/iTunes backup and can be deleted by OS in low storage situations. - - - - - - Set file flag to be excluded from iCloud/iTunes backup. - - - - - - iOS device generation. - - - - - First generation Apple TV. - - - - - Second generation (4K) Apple TV. - - - - - A class for Apple TV remote input configuration. - - - - - Configures how "Menu" button behaves on Apple TV Remote. If this property is set to true hitting "Menu" on Remote will exit to system home screen. When this property is false current application is responsible for handling "Menu" button. It is recommended to set this property to true on top level menus of your application. - - - - - Configures if Apple TV Remote should autorotate all the inputs when Remote is being held in horizontal orientation. Default is false. - - - - - Configures how touches are mapped to analog joystick axes in relative or absolute values. If set to true it will return +1 on Horizontal axis when very far right is being touched on Remote touch aread (and -1 when very left area is touched correspondingly). The same applies for Vertical axis too. When this property is set to false player should swipe instead of touching specific area of remote to generate Horizontal or Vertical input. - - - - - Disables Apple TV Remote touch propagation to Unity Input.touches API. Useful for 3rd party frameworks, which do not respect Touch.type == Indirect. -Default is false. - - - - - Sprite Atlas is an asset created within Unity. It is part of the built-in sprite packing solution. - - - - - Return true if this SpriteAtlas is a variant. - - - - - Get the total number of Sprite packed into this atlas. - - - - - Get the tag of this SpriteAtlas. - - - - - Return true if Sprite is packed into this SpriteAtlas. - - - - - - Clone the first Sprite in this atlas that matches the name packed in this atlas and return it. - - The name of the Sprite. - - - - Clone all the Sprite in this atlas and fill them into the supplied array. - - Array of Sprite that will be filled. - - The size of the returned array. - - - - - Clone all the Sprite matching the name in this atlas and fill them into the supplied array. - - Array of Sprite that will be filled. - The name of the Sprite. - - - - Manages SpriteAtlas during runtime. - - - - - Trigger when a SpriteAtlas is registered via invoking the callback in U2D.SpriteAtlasManager.atlasRequested. - - - - - - Trigger when any Sprite was bound to SpriteAtlas but couldn't locate the atlas asset during runtime. - - - - - - Class that specifies some information about a renderable character. - - - - - Character width. - - - - - Position of the character cursor in local (text generated) space. - - - - - Information about a generated line of text. - - - - - Height of the line. - - - - - Space in pixels between this line and the next line. - - - - - Index of the first character in the line. - - - - - The upper Y position of the line in pixels. This is used for text annotation such as the caret and selection box in the InputField. - - - - - Vertex class used by a Canvas for managing vertices. - - - - - Vertex color. - - - - - Normal. - - - - - Vertex position. - - - - - Simple UIVertex with sensible settings for use in the UI system. - - - - - Tangent. - - - - - The first texture coordinate set of the mesh. Used by UI elements by default. - - - - - The second texture coordinate set of the mesh, if present. - - - - - The Third texture coordinate set of the mesh, if present. - - - - - The forth texture coordinate set of the mesh, if present. - - - - - The BurstDiscard attribute lets you remove a method or property from being compiled to native code by the burst compiler. - - - - - The BurstDiscard attribute lets you remove a method or property from being compiled to native code by the burst compiler. - - - - - Used to specify allocation type for NativeArray. - - - - - Invalid allocation. - - - - - No allocation. - - - - - Persistent allocation. - - - - - Temporary allocation. - - - - - Temporary job allocation. - - - - - DeallocateOnJobCompletionAttribute. - - - - - AtomicSafetyHandle is used by the job system to provide validation and full safety. - - - - - Checks if the handle can be deallocated. Throws an exception if it has already been destroyed or a job is currently accessing the data. - - Safety handle. - - - - Checks if the handle is still valid and throws an exception if it is already destroyed. - - Safety handle. - - - - CheckGetSecondaryDataPointerAndThrow. - - Safety handle. - - - - Checks if the handle can be read from. Throws an exception if already destroyed or a job is currently writing to the data. - - Safety handle. - - - - Performs CheckWriteAndThrow and then bumps the secondary version. - - Safety handle. - - - - Checks if the handle can be written to. Throws an exception if already destroyed or a job is currently reading or writing to the data. - - Safety handle. - - - - Creates a new AtomicSafetyHandle that is valid until AtomicSafetyHandle.Release is called. - - - Safety handle. - - - - - Waits for all jobs running against this AtomicSafetyHandle to complete. - - Safety handle. - - Result. - - - - - Waits for all jobs running against this AtomicSafetyHandle to complete and then disables the read and write access on this atomic safety handle. - - Safety handle. - - Result. - - - - - Waits for all jobs running against this AtomicSafetyHandle to complete and then releases the atomic safety handle. - - Safety handle. - - Result. - - - - - Returns true if the AtomicSafetyHandle is configured to allow reading or writing. - - Safety handle. - - True if the AtomicSafetyHandle is configured to allow reading or writing, false otherwise. - - - - - Fetch the job handles of all jobs reading from the safety handle. - - The atomic safety handle to return readers for. - The maximum number of handles to be written to the output array. - A buffer where the job handles will be written. - - The actual number of readers on the handle, which can be greater than the maximum count provided. - - - - - Return the name of the specified reading job. - - Safety handle. - Index of the reader. - - The debug name of the reader. - - - - - Returns the safety handle which should be used for all temp memory allocations in this temp memory scope. All temp memory allocations share the same safety handle since they are automatically disposed of at the same time. - - - The safety handle for temp memory allocations in the current scope. - - - - - Returns a single shared handle, that can be shared by for example NativeSlice pointing to stack memory. - - - Safety handle. - - - - - Return the writer (if any) on an atomic safety handle. - - Safety handle. - - The job handle of the writer. - - - - - Return the debug name of the current writer on an atomic safety handle. - - Safety handle. - - Name of the writer, if any. - - - - - Checks if an AtomicSafetyHandle is the temp memory safety handle for the currently active temp memory scope. - - Safety handle. - - True if the safety handle is the temp memory handle for the current scope. - - - - - Marks the AtomicSafetyHandle so that it cannot be disposed of. - - Safety handle. - - - - Releases a previously created AtomicSafetyHandle. - - Safety handle. - - - - Lets you prevent read or write access on the atomic safety handle. - - Safety handle. - Use false to disallow read or write access, or true otherwise. - - - - Switches the AtomicSafetyHandle to the secondary version number. - - Safety handle. - Allow writing. - - - - Switches the AtomicSafetyHandle to the secondary version number. - - Safety handle. - - - - DisposeSentinel is used to automatically detect memory leaks. - - - - - Clears the DisposeSentinel. - - The DisposeSentinel to clear. - - - - Creates a new AtomicSafetyHandle and a new DisposeSentinel, to be used to track safety and leaks on some native data. - - The AtomicSafetyHandle that can be used to control access to the data related to the DisposeSentinel being created. - The new DisposeSentinel. - The stack depth where to extract the logging information from. - - - - Releases the AtomicSafetyHandle and clears the DisposeSentinel. - - The AtomicSafetyHandle returned when invoking Create. - The DisposeSentinel. - - - - EnforceJobResult. - - - - - AllJobsAlreadySynced. - - - - - DidSyncRunningJobs. - - - - - HandleWasAlreadyDeallocated. - - - - - NativeArray Unsafe Utility. - - - - - Converts an existing buffer to a NativeArray. - - Pointer to the preallocated data. - Length (in bytes) of the data. - Allocation strategy to use. - - A new NativeArray, allocated with the given strategy and wrapping the provided data. - - - - - Returns the AtomicSafetyHandle that is used for safety control on the NativeArray. - - NativeArray. - - Safety handle. - - - - - Gets the pointer to the data owner by the NativeArray, without performing checks. - - NativeArray. - - NativeArray memory buffer pointer. - - - - - Gets the pointer to the memory buffer owner by the NativeArray, performing checks on whether the native array can be written to. - - NativeArray. - - NativeArray memory buffer pointer. - - - - - Gets the pointer to the memory buffer owner by the NativeArray, performing checks on whether the native array can be read from. - - NativeArray. - - NativeArray memory buffer pointer. - - - - - Sets a new AtomicSafetyHandle for the provided NativeArray. - - NativeArray. - Safety handle. - - - - Allows you to create your own custom native container. - - - - - NativeContainerIsAtomicWriteOnlyAttribute. - - - - - NativeContainerIsReadOnlyAttribute. - - - - - NativeContainerSupportsDeallocateOnJobCompletionAttribute. - - - - - NativeContainerSupportsDeferredConvertListToArray. - - - - - NativeContainerSupportsMinMaxWriteRestrictionAttribute. - - - - - By default native containers are tracked by the safety system to avoid race conditions. The safety system encapsulates the best practices and catches many race condition bugs from the start. - - - - - By default unsafe Pointers are not allowed to be used in a job since it is not possible for the Job Debugger to gurantee race condition free behaviour. This attribute lets you explicitly disable the restriction on a job. - - - - - When this attribute is applied to a field in a job struct, the managed reference to the class will be set to null on the copy of the job struct that is passed to the job. - - - - - This attribute can inject a worker thread index into an int on the job struct. This is usually used in the implementation of atomic containers. The index is guaranteed to be unique to any other job that might be running in parallel. - - - - - NativeSlice unsafe utility class. - - - - - ConvertExistingDataToNativeSlice. - - Memory pointer. - Number of elements. - - - - Get safety handle for native slice. - - NativeSlice. - - Safety handle. - - - - - Get NativeSlice memory buffer pointer. Checks whether the native array can be written to. - - NativeSlice. - - Memory pointer. - - - - - Get NativeSlice memory buffer pointer. Checks whether the native array can be read from. - - NativeSlice. - - Memory pointer. - - - - - Set safetly handle on NativeSlice. - - NativeSlice. - Safety handle. - - - - Unsafe utility class. - - - - - The memory address of the struct. - - Struct. - - Memory pointer. - - - - - Minimum alignment of a struct. - - - Memory pointer. - - - - - Assigns an Object reference to a struct or pinned class. See Also: UnsafeUtility.PinGCObjectAndGetAddress. - - - - - - - Copies sizeof(T) bytes from ptr to output. - - Memory pointer. - Struct. - - - - Copies sizeof(T) bytes from input to ptr. - - Memory pointer. - Struct. - - - - Free memory. - - Memory pointer. - Allocator. - - - - Returns the offset of the field relative struct or class it is contained in. - - - - - - Returns whether the struct is blittable. - - The System.Type of a struct. - - True if struct is blittable, otherwise false. - - - - - Returns whether the struct is blittable. - - The System.Type of a struct. - - True if struct is blittable, otherwise false. - - - - - Returns true if the allocator label is valid and can be used to allocate or deallocate memory. - - - - - - Allocate memory. - - Size. - Alignment. - Allocator. - - Memory pointer. - - - - - Clear memory. - - Memory pointer. - Size. - - - - Checks to see whether two memory regions are identical or not by comparing a specified memory region in the first given memory buffer with the same region in the second given memory buffer. - - Pointer to the first memory buffer. - Pointer to the second memory buffer to compare the first one to. - Number of bytes to compare. - - 0 if the contents are identical, non-zero otherwise. - - - - - Copy memory. - - Destination memory pointer. - Source memory pointer. - Size. - - - - Copy memory and replicate. - - Destination memory pointer. - Source memory pointer. - Size. - Count. - - - - Similar to UnsafeUtility.MemCpy but can skip bytes via desinationStride and sourceStride. - - - - - - - - - - - Move memory. - - Destination memory pointer. - Source memory pointer. - Size. - - - - Keeps a strong GC reference to the object and pins it. The object is guranteed to not move its memory location in a moving GC. Returns the address of the first element of the array. - -See Also: UnsafeUtility.ReleaseGCObject. - - - - - Keeps a strong GC reference to the object and pins it. The object is guranteed to not move its memory location in a moving GC. Returns the address of the memory location of the object. - -See Also: UnsafeUtility.ReleaseGCObject. - - - - - - - Read array element. - - Memory pointer. - Array index. - - Array Element. - - - - - Read array element with stride. - - Memory pointer. - Array index. - Stride. - - Array element. - - - - - Releases a GC Object Handle, previously aquired by UnsafeUtility.PinGCObjectAndGetAddress. - - - - - - Size of struct. - - - Size of struct. - - - - - Write array element. - - Memory pointer. - Array index. - Value to write. - - - - Write array element with stride. - - Memory pointer. - Array index. - Stride. - Value to write. - - - - Used in conjunction with the ReadOnlyAttribute, WriteAccessRequiredAttribute lets you specify which struct method and property require write access to be invoked. - - - - - A NativeArray exposes a buffer of native memory to managed code, making it possible to share data between managed and native without marshalling costs. - - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copy all the elements from another NativeArray or managed array of the same length. - - Source array. - - - - Copy all the elements from another NativeArray or managed array of the same length. - - Source array. - - - - Copy all elements to another NativeArray or managed array of the same length. - - Destination array. - - - - Copy all elements to another NativeArray or managed array of the same length. - - Destination array. - - - - Creates a new NativeArray from an existing array of elements. - - An array to copy the data from. - The allocation strategy used for the data. - - - - Creates a new NativeArray from an existing NativeArray. - - NativeArray to copy the data from. - The allocation strategy used for the data. - - - - Creates a new NativeArray allocating enough memory to fit the provided amount of elements. - - Number of elements to be allocated. - The allocation strategy used for the data. - Options to control the behaviour of the NativeArray. - - - - Disposes the NativeArray. - - - - - Compares to NativeArray. - - NativeArray to compare against. - - True in case the two NativeArray are the same, false otherwise. - - - - - Compares to NativeArray. - - Object to compare against. - - True in case the two NativeArray are the same, false otherwise. - - - - - Get enumerator. - - - Enumerator. - - - - - Returns a hash code for the current instance. - - - Hash code. - - - - - Indicates that the NativeArray has an allocated memory buffer. - - - - - Number of elements in the NativeArray. - - - - - Access NativeArray elements by index. Notice that structs are returned by value and not by reference. - - - - - Convert NativeArray to array. - - - Array. - - - - - NativeArrayOptions lets you control if memory should be cleared on allocation or left uninitialized. - - - - - Clear NativeArray memory on allocation. - - - - - Uninitialized memory can improve performance, but results in the contents of the array elements being undefined. -In performance sensitive code it can make sense to use NativeArrayOptions.Uninitialized, if you are writing to the entire array right after creating it without reading any of the elements first. - - - - - - NativeDisableParallelForRestrictionAttribute. - - - - - The container has from start a size that will never change. - - - - - The specified number of elements will never change. - - The fixed number of elements in the container. - - - - The fixed number of elements in the container. - - - - - Static class for native leak detection settings. - - - - - Set whether native memory leak detection should be enabled or disabled. - - - - - Native leak memory leak detection mode enum. - - - - - Indicates that native memory leak detection is disabled. - - - - - Indicates that native memory leak detection is enabled. - - - - - Native Slice. - - - - - Copy all the elements from a NativeSlice or managed array of the same length. - - NativeSlice. - Array. - - - - Copy all the elements from a NativeSlice or managed array of the same length. - - NativeSlice. - Array. - - - - Copy all the elements of the slice to a NativeArray or managed array of the same length. - - Array. - - - - Copy all the elements of the slice to a NativeArray or managed array of the same length. - - Array. - - - - Constructor. - - NativeArray. - Start index. - Memory pointer. - Length. - - - - Constructor. - - NativeArray. - Start index. - Memory pointer. - Length. - - - - Constructor. - - NativeArray. - Start index. - Memory pointer. - Length. - - - - Constructor. - - NativeArray. - Start index. - Memory pointer. - Length. - - - - GetEnumerator. - - - Enumerator. - - - - - Implicit operator for creating a NativeSlice from a NativeArray. - - NativeArray. - - - - Number of elements in the slice. - - - - - SliceConvert. - - - NativeSlice. - - - - - SliceWithStride. - - Stride offset. - Field name whos offset should be used as stride. - - NativeSlice. - - - - - SliceWithStride. - - Stride offset. - Field name whos offset should be used as stride. - - NativeSlice. - - - - - SliceWithStride. - - Stride offset. - Field name whos offset should be used as stride. - - NativeSlice. - - - - - Returns stride set for Slice. - - - - - Access NativeSlice elements by index. Notice that structs are returned by value and not by reference. - - - - - Convert NativeSlice to array. - - - Array. - - - - - The ReadOnly attribute lets you mark a member of a struct used in a job as read-only. - - - - - The ReadOnly attribute lets you mark a member of a struct used in a job as read-only. - - - - - The WriteOnly attribute lets you mark a member of a struct used in a job as write-only. - - - - - With the AsyncReadManager, you can perform asynchronous I/O operations through Unity's virtual file system. You can perform these operations on any thread or job. - - - - - Issues an asynchronous file read operation. Returns a ReadHandle. - - The filename to read from. - A pointer to an array of ReadCommand structs that specify offset, size, and destination buffer. - The number of read commands pointed to by readCmds. - - Used to monitor the progress and status of the read command. - - - - - Describes the offset, size, and destination buffer of a single read operation. - - - - - The buffer that receives the read data. - - - - - The offset where the read begins, within the file. - - - - - The size of the read in bytes. - - - - - You can use this handle to query the status of an asynchronous read operation. Note: To avoid a memory leak, you must call Dispose. - - - - - Disposes the ReadHandle. Use this to free up internal resources for reuse. - - - - - Check if the ReadHandle is valid. - - - True if the ReadHandle is valid. - - - - - JobHandle that completes when the read operation completes. - - - - - Current state of the read operation. - - - - - State of the read operation. - - - - - All the ReadCommand operations completed successfully. - - - - - One or more of the ReadCommand operations failed. - - - - - The read operation is in progress. - - - - - IJob allows you to schedule a single job that runs in parallel to other jobs and the main thread. - - - - - Implement this method to perform work on a worker thread. - - - - - Extension methods for Jobs using the IJob interface. - - - - - Perform the job's Execute method immediately on the same thread. - - The job and data to Run. - - - - Schedule the job for execution on a worker thread. - - The job and data to schedule. - Dependencies are used to ensure that a job executes on workerthreads after the dependency has completed execution. Making sure that two jobs reading or writing to same data do not run in parallel. - - The handle identifying the scheduled job. Can be used as a dependency for a later job or ensure completion on the main thread. - - - - - Parallel-for jobs allow you to perform the same independent operation for each element of a native container or for a fixed number of iterations. - - - - - Implement this method to perform work against a specific iteration index. - - The index of the Parallel for loop at which to perform work. - - - - Extension methods for Jobs using the IJobParallelFor. - - - - - Perform the job's Execute method immediately on the same thread. - - The job and data to Run. - The number of iterations the for loop will execute. - - - - Schedule the job for execution on a worker thread. - - The job and data to Schedule. - The number of iterations the for loop will execute. - Granularity in which workstealing is performed. A value of 32, means the job queue will steal 32 iterations and then perform them in an efficient inner loop. - Dependencies are used to ensure that a job executes on workerthreads after the dependency has completed execution. Making sure that two jobs reading or writing to same data do not run in parallel. - - The handle identifying the scheduled job. Can be used as a dependency for a later job or ensure completion on the main thread. - - - - - JobHandle. - - - - - CheckFenceIsDependencyOrDidSyncFence. - - Job handle. - Job handle dependency. - - Return value. - - - - - Combines multiple dependencies into a single one. - - - - - - - - - Combines multiple dependencies into a single one. - - - - - - - - - Combines multiple dependencies into a single one. - - - - - - - - - Ensures that the job has completed. - - - - - Ensures that all jobs have completed. - - - - - - - - - Ensures that all jobs have completed. - - - - - - - - - Ensures that all jobs have completed. - - - - - - - - - Returns false if the task is currently running. Returns true if the task has completed. - - - - - By default jobs are only put on a local queue when using Job Schedule functions, this actually makes them available to the worker threads to execute them. - - - - - Struct used to implement batch query jobs. - - - - - Create BatchQueryJob. - - NativeArray containing the commands to execute during a batch. The job executing the query will only read from the array, not write to it. - NativeArray which can contain the results from the commands. The job executing the query will write to the array. - - - - Struct used to schedule batch query jobs. - - - - - Initializes a BatchQueryJobStruct and returns a pointer to an internal structure (System.IntPtr) which should be passed to JobsUtility.JobScheduleParameters. - - - - - JobHandle Unsafe Utilities. - - - - - Combines multiple dependencies into a single one using an unsafe array of job handles. -See Also: JobHandle.CombineDependencies. - - - - - - - All job interface types must be marked with the JobProducerType. This is used to compile the Execute method by the Burst ASM inspector. - - - - - - - The type containing a static method named "Execute" method which is the method invokes by the job system. - - - - ProducerType is the type containing a static method named "Execute" method which is the method invokes by the job system. - - - - - Struct containing information about a range the job is allowed to work on. - - - - - The size of the batch. - - - - - Number of indices per phase. - - - - - Number of jobs. - - - - - Number of phases. - - - - - Phase Data. - - - - - The start and end index of the job range. - - - - - Total iteration count. - - - - - Static class containing functionality to create, run and debug jobs. - - - - - Size of a cache line. - - - - - Creates job reflection data. - - - Returns pointer to internal JobReflectionData. - - - - - Creates job reflection data. - - - Returns pointer to internal JobReflectionData. - - - - - Returns the begin index and end index of the range. - - - - - - - - - Returns the work stealing range. - - - - - - - Returns true if successful. - - - - - When disabled, forces jobs that have already been compiled with burst to run in mono instead. For example if you want to debug the C# jobs or just want to compare behaviour or performance. - - - - - Enables and disables the job debugger at runtime. Note that currently the job debugger is only supported in the Editor. Thus this only has effect in the editor. - - - - - Struct containing job parameters for scheduling. - - - - - Constructor. - - - - - - - - - A JobHandle to any dependency this job would have. - - - - - Pointer to the job data. - - - - - Pointer to the reflection data. - - - - - ScheduleMode option. - - - - - Maximum job thread count. - - - - - Injects debug checks for min and max ranges of native array. - - - - - Schedule a single IJob. - - - - Returns a JobHandle to the newly created Job. - - - - - Schedule a IJobParallelFor job. - - - - - - Returns a JobHandle to the newly created Job. - - - - - Schedule a IJobParallelFor job. - - - - - - - Returns a JobHandle to the newly created Job. - - - - - Schedule a IJobParallelForTransform job. - - - - - Returns a JobHandle to the newly created Job. - - - - - Determines what the job is used for (ParallelFor or a single job). - - - - - A parallel for job. - - - - - A single job. - - - - - ScheduleMode options for scheduling a manage job. - - - - - Schedule job as batched. - - - - - Schedule job as independent. - - - - - Performance marker used for profiling arbitrary code blocks. - - - - - Creates a helper struct for the scoped using blocks. - - - IDisposable struct which calls Begin and End automatically. - - - - - Helper IDisposable struct for use with ProfilerMarker.Auto. - - - - - Begin profiling a piece of code marked with a custom name defined by this instance of ProfilerMarker. - - Object associated with the operation. - - - - Begin profiling a piece of code marked with a custom name defined by this instance of ProfilerMarker. - - Object associated with the operation. - - - - Constructs a new performance marker for code instrumentation. - - Marker name. - - - - End profiling a piece of code marked with a custom name defined by this instance of ProfilerMarker. - - - - - Declares an assembly to be compatible (API wise) with a specific Unity API. Used by internal tools to avoid processing the assembly in order to decide whether assemblies may be using old Unity API. - - - - - Version of Unity API. - - - - - Initializes a new instance of UnityAPICompatibilityVersionAttribute. - - Unity version that this assembly with compatible with. - - - - Constants to pass to Application.RequestUserAuthorization. - - - - - Request permission to use any audio input sources attached to the computer. - - - - - Request permission to use any video input sources attached to the computer. - - - - - Representation of 2D vectors and points. - - - - - Shorthand for writing Vector2(0, -1). - - - - - Shorthand for writing Vector2(-1, 0). - - - - - Returns the length of this vector (Read Only). - - - - - Shorthand for writing Vector2(float.NegativeInfinity, float.NegativeInfinity). - - - - - Returns this vector with a magnitude of 1 (Read Only). - - - - - Shorthand for writing Vector2(1, 1). - - - - - Shorthand for writing Vector2(float.PositiveInfinity, float.PositiveInfinity). - - - - - Shorthand for writing Vector2(1, 0). - - - - - Returns the squared length of this vector (Read Only). - - - - - Shorthand for writing Vector2(0, 1). - - - - - X component of the vector. - - - - - Y component of the vector. - - - - - Shorthand for writing Vector2(0, 0). - - - - - Returns the unsigned angle in degrees between from and to. - - The vector from which the angular difference is measured. - The vector to which the angular difference is measured. - - - - Returns a copy of vector with its magnitude clamped to maxLength. - - - - - - - Constructs a new vector with given x, y components. - - - - - - - Returns the distance between a and b. - - - - - - - Dot Product of two vectors. - - - - - - - Returns true if the given vector is exactly equal to this vector. - - - - - - Converts a Vector3 to a Vector2. - - - - - - Converts a Vector2 to a Vector3. - - - - - - Linearly interpolates between vectors a and b by t. - - - - - - - - Linearly interpolates between vectors a and b by t. - - - - - - - - Returns a vector that is made from the largest components of two vectors. - - - - - - - Returns a vector that is made from the smallest components of two vectors. - - - - - - - Moves a point current towards target. - - - - - - - - Makes this vector have a magnitude of 1. - - - - - Divides a vector by a number. - - - - - - - Divides a vector by another vector. - - - - - - - Returns true if two vectors are approximately equal. - - - - - - - Subtracts one vector from another. - - - - - - - Negates a vector. - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by another vector. - - - - - - - Adds two vectors. - - - - - - - Returns the 2D vector perpendicular to this 2D vector. The result is always rotated 90-degrees in a counter-clockwise direction for a 2D coordinate system where the positive Y axis goes up. - - The input direction. - - The perpendicular direction. - - - - - Reflects a vector off the vector defined by a normal. - - - - - - - Multiplies two vectors component-wise. - - - - - - - Multiplies every component of this vector by the same component of scale. - - - - - - Set x and y components of an existing Vector2. - - - - - - - Returns the signed angle in degrees between from and to. - - The vector from which the angular difference is measured. - The vector to which the angular difference is measured. - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Access the x or y component using [0] or [1] respectively. - - - - - Returns a nicely formatted string for this vector. - - - - - - Returns a nicely formatted string for this vector. - - - - - - Representation of 2D vectors and points using integers. - - - - - Shorthand for writing Vector2Int (0, -1). - - - - - Shorthand for writing Vector2Int (-1, 0). - - - - - Returns the length of this vector (Read Only). - - - - - Shorthand for writing Vector2Int (1, 1). - - - - - Shorthand for writing Vector2Int (1, 0). - - - - - Returns the squared length of this vector (Read Only). - - - - - Shorthand for writing Vector2Int (0, 1). - - - - - X component of the vector. - - - - - Y component of the vector. - - - - - Shorthand for writing Vector2Int (0, 0). - - - - - Converts a Vector2 to a Vector2Int by doing a Ceiling to each value. - - - - - - Clamps the Vector2Int to the bounds given by min and max. - - - - - - - Returns the distance between a and b. - - - - - - - Returns true if the objects are equal. - - - - - - Converts a Vector2 to a Vector2Int by doing a Floor to each value. - - - - - - Gets the hash code for the Vector2Int. - - - The hash code of the Vector2Int. - - - - - Converts a Vector2Int to a Vector2. - - - - - - Returns a vector that is made from the largest components of two vectors. - - - - - - - Returns a vector that is made from the smallest components of two vectors. - - - - - - - Returns true if the vectors are equal. - - - - - - - Converts a Vector2Int to a Vector3Int. - - - - - - Subtracts one vector from another. - - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by a number. - - - - - - - Returns true if vectors different. - - - - - - - Adds two vectors. - - - - - - - Converts a Vector2 to a Vector2Int by doing a Round to each value. - - - - - - Multiplies two vectors component-wise. - - - - - - - Multiplies every component of this vector by the same component of scale. - - - - - - Set x and y components of an existing Vector2Int. - - - - - - - Access the x or y component using [0] or [1] respectively. - - - - - Returns a nicely formatted string for this vector. - - - - - Representation of 3D vectors and points. - - - - - Shorthand for writing Vector3(0, 0, -1). - - - - - Shorthand for writing Vector3(0, -1, 0). - - - - - Shorthand for writing Vector3(0, 0, 1). - - - - - Shorthand for writing Vector3(-1, 0, 0). - - - - - Returns the length of this vector (Read Only). - - - - - Shorthand for writing Vector3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity). - - - - - Returns this vector with a magnitude of 1 (Read Only). - - - - - Shorthand for writing Vector3(1, 1, 1). - - - - - Shorthand for writing Vector3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity). - - - - - Shorthand for writing Vector3(1, 0, 0). - - - - - Returns the squared length of this vector (Read Only). - - - - - Shorthand for writing Vector3(0, 1, 0). - - - - - X component of the vector. - - - - - Y component of the vector. - - - - - Z component of the vector. - - - - - Shorthand for writing Vector3(0, 0, 0). - - - - - Returns the angle in degrees between from and to. - - The vector from which the angular difference is measured. - The vector to which the angular difference is measured. - - The angle in degrees between the two vectors. - - - - - Returns a copy of vector with its magnitude clamped to maxLength. - - - - - - - Cross Product of two vectors. - - - - - - - Creates a new vector with given x, y, z components. - - - - - - - - Creates a new vector with given x, y components and sets z to zero. - - - - - - - Returns the distance between a and b. - - - - - - - Dot Product of two vectors. - - - - - - - Returns true if the given vector is exactly equal to this vector. - - - - - - Linearly interpolates between two vectors. - - - - - - - - Linearly interpolates between two vectors. - - - - - - - - Returns a vector that is made from the largest components of two vectors. - - - - - - - Returns a vector that is made from the smallest components of two vectors. - - - - - - - Calculate a position between the points specified by current and target, moving no farther than the distance specified by maxDistanceDelta. - - The position to move from. - The position to move towards. - Distance to move current per call. - - The new position. - - - - - Makes this vector have a magnitude of 1. - - - - - - Divides a vector by a number. - - - - - - - Returns true if two vectors are approximately equal. - - - - - - - Subtracts one vector from another. - - - - - - - Negates a vector. - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by a number. - - - - - - - Returns true if vectors different. - - - - - - - Adds two vectors. - - - - - - - Makes vectors normalized and orthogonal to each other. - - - - - - - Makes vectors normalized and orthogonal to each other. - - - - - - - - Projects a vector onto another vector. - - - - - - - Projects a vector onto a plane defined by a normal orthogonal to the plane. - - The direction from the vector towards the plane. - The location of the vector above the plane. - - The location of the vector on the plane. - - - - - Reflects a vector off the plane defined by a normal. - - - - - - - Rotates a vector current towards target. - - The vector being managed. - The vector. - The distance between the two vectors in radians. - The length of the radian. - - The location that RotateTowards generates. - - - - - Multiplies two vectors component-wise. - - - - - - - Multiplies every component of this vector by the same component of scale. - - - - - - Set x, y and z components of an existing Vector3. - - - - - - - - Returns the signed angle in degrees between from and to. - - The vector from which the angular difference is measured. - The vector to which the angular difference is measured. - A vector around which the other vectors are rotated. - - - - Spherically interpolates between two vectors. - - - - - - - - Spherically interpolates between two vectors. - - - - - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Access the x, y, z components using [0], [1], [2] respectively. - - - - - Returns a nicely formatted string for this vector. - - - - - - Returns a nicely formatted string for this vector. - - - - - - Representation of 3D vectors and points using integers. - - - - - Shorthand for writing Vector3Int (0, -1, 0). - - - - - Shorthand for writing Vector3Int (-1, 0, 0). - - - - - Returns the length of this vector (Read Only). - - - - - Shorthand for writing Vector3Int (1, 1, 1). - - - - - Shorthand for writing Vector3Int (1, 0, 0). - - - - - Returns the squared length of this vector (Read Only). - - - - - Shorthand for writing Vector3Int (0, 1, 0). - - - - - X component of the vector. - - - - - Y component of the vector. - - - - - Z component of the vector. - - - - - Shorthand for writing Vector3Int (0, 0, 0). - - - - - Converts a Vector3 to a Vector3Int by doing a Ceiling to each value. - - - - - - Clamps the Vector3Int to the bounds given by min and max. - - - - - - - Returns the distance between a and b. - - - - - - - Returns true if the objects are equal. - - - - - - Converts a Vector3 to a Vector3Int by doing a Floor to each value. - - - - - - Gets the hash code for the Vector3Int. - - - The hash code of the Vector3Int. - - - - - Converts a Vector3Int to a Vector3. - - - - - - Returns a vector that is made from the largest components of two vectors. - - - - - - - Returns a vector that is made from the smallest components of two vectors. - - - - - - - Returns true if the vectors are equal. - - - - - - - Converts a Vector3Int to a Vector2Int. - - - - - - Subtracts one vector from another. - - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by a number. - - - - - - - Returns true if vectors different. - - - - - - - Adds two vectors. - - - - - - - Converts a Vector3 to a Vector3Int by doing a Round to each value. - - - - - - Multiplies two vectors component-wise. - - - - - - - Multiplies every component of this vector by the same component of scale. - - - - - - Set x, y and z components of an existing Vector3Int. - - - - - - - - Access the x, y or z component using [0], [1] or [2] respectively. - - - - - Returns a nicely formatted string for this vector. - - - - - - Returns a nicely formatted string for this vector. - - - - - - Representation of four-dimensional vectors. - - - - - Returns the length of this vector (Read Only). - - - - - Shorthand for writing Vector4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity). - - - - - Returns this vector with a magnitude of 1 (Read Only). - - - - - Shorthand for writing Vector4(1,1,1,1). - - - - - Shorthand for writing Vector4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity). - - - - - Returns the squared length of this vector (Read Only). - - - - - W component of the vector. - - - - - X component of the vector. - - - - - Y component of the vector. - - - - - Z component of the vector. - - - - - Shorthand for writing Vector4(0,0,0,0). - - - - - Creates a new vector with given x, y, z, w components. - - - - - - - - - Creates a new vector with given x, y, z components and sets w to zero. - - - - - - - - Creates a new vector with given x, y components and sets z and w to zero. - - - - - - - Returns the distance between a and b. - - - - - - - Dot Product of two vectors. - - - - - - - Returns true if the given vector is exactly equal to this vector. - - - - - - Converts a Vector4 to a Vector2. - - - - - - Converts a Vector4 to a Vector3. - - - - - - Converts a Vector2 to a Vector4. - - - - - - Converts a Vector3 to a Vector4. - - - - - - Linearly interpolates between two vectors. - - - - - - - - Linearly interpolates between two vectors. - - - - - - - - Returns a vector that is made from the largest components of two vectors. - - - - - - - Returns a vector that is made from the smallest components of two vectors. - - - - - - - Moves a point current towards target. - - - - - - - - - - - - - - Makes this vector have a magnitude of 1. - - - - - Divides a vector by a number. - - - - - - - Returns true if two vectors are approximately equal. - - - - - - - Subtracts one vector from another. - - - - - - - Negates a vector. - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by a number. - - - - - - - Adds two vectors. - - - - - - - Projects a vector onto another vector. - - - - - - - Multiplies two vectors component-wise. - - - - - - - Multiplies every component of this vector by the same component of scale. - - - - - - Set x, y, z and w components of an existing Vector4. - - - - - - - - - Access the x, y, z, w components using [0], [1], [2], [3] respectively. - - - - - Return the Vector4 formatted as a string. - - - - - - Return the Vector4 formatted as a string. - - - - - - Wrapping modes for text that reaches the vertical boundary. - - - - - Text well continue to generate when reaching vertical boundary. - - - - - Text will be clipped when reaching the vertical boundary. - - - - - Types of 3D content layout within a video. - - - - - Video does not have any 3D content. - - - - - Video contains 3D content where the left eye occupies the upper half and right eye occupies the lower half of video frames. - - - - - Video contains 3D content where the left eye occupies the left half and right eye occupies the right half of video frames. - - - - - Methods used to fit a video in the target area. - - - - - Resize proportionally so that width fits the target area, cropping or adding black bars above and below if needed. - - - - - Resize proportionally so that content fits the target area, adding black bars if needed. - - - - - Resize proportionally so that content fits the target area, cropping if needed. - - - - - Resize proportionally so that height fits the target area, cropping or adding black bars on each side if needed. - - - - - Preserve the pixel size without adjusting for target area. - - - - - Resize non-proportionally to fit the target area. - - - - - Places where the audio embedded in a video can be sent. - - - - - Send the embedded audio to the associated AudioSampleProvider. - - - - - Send the embedded audio into a specified AudioSource. - - - - - Send the embedded audio direct to the platform's audio hardware. - - - - - Disable the embedded audio. - - - - - A container for video data. - - - - - Number of audio tracks in the clip. - - - - - The length of the VideoClip in frames. (Read Only). - - - - - The frame rate of the clip in frames/second. (Read Only). - - - - - The height of the images in the video clip in pixels. (Read Only). - - - - - The length of the video clip in seconds. (Read Only). - - - - - The video clip path in the project's assets. (Read Only). - - - - - Denominator of the pixel aspect ratio (num:den). (Read Only). - - - - - Numerator of the pixel aspect ratio (num:den). (Read Only). - - - - - The width of the images in the video clip in pixels. (Read Only). - - - - - The number of channels in the audio track. E.g. 2 for a stereo track. - - Index of the audio queried audio track. - - The number of channels. - - - - - Get the audio track language. Can be unknown. - - Index of the audio queried audio track. - - The abbreviated name of the language. - - - - - Get the audio track sampling rate in Hertz. - - Index of the audio queried audio track. - - The sampling rate in Hertz. - - - - - Plays video content onto a target. - - - - - Defines how the video content will be stretched to fill the target area. - - - - - Destination for the audio embedded in the video. - - - - - Number of audio tracks found in the data source currently configured. (Read Only) - - - - - Whether direct-output volume controls are supported for the current platform and video format. (Read Only) - - - - - Whether the playback speed can be changed. (Read Only) - - - - - Whether frame-skipping to maintain synchronization can be controlled. (Read Only) - - - - - Whether current time can be changed using the time or timeFrames property. (Read Only) - - - - - Whether the time source followed by the VideoPlayer can be changed. (Read Only) - - - - - Returns true if the VideoPlayer can step forward through the video content. (Read Only) - - - - - The clip being played by the VideoPlayer. - - - - - Invoked when the VideoPlayer clock is synced back to its Video.VideoTimeReference. - - - - - - The clock time that the VideoPlayer follows to schedule its samples. The clock time is expressed in seconds. (Read Only) - - - - - Number of audio tracks that this VideoPlayer will take control of. - - - - - Maximum number of audio tracks that can be controlled. (Read Only) - - - - - Errors such as HTTP connection problems are reported through this callback. - - - - - - Reference time of the external clock the Video.VideoPlayer uses to correct its drift. - - - - - The frame index of the currently available frame in VideoPlayer.texture. - - - - - Number of frames in the current video content. (Read Only) - - - - - [NOT YET IMPLEMENTED] Invoked when the video decoder does not produce a frame as per the time source during playback. - - - - - - The frame rate of the clip or URL in frames/second. (Read Only) - - - - - Invoked when a new frame is ready. - - - - - - The height of the images in the VideoClip, or URL, in pixels. (Read Only) - - - - - Determines whether the VideoPlayer restarts from the beginning when it reaches the end of the clip. - - - - - Whether playback is paused. (Read Only) - - - - - Whether content is being played. (Read Only) - - - - - Whether the VideoPlayer has successfully prepared the content to be played. (Read Only) - - - - - The length of the VideoClip, or the URL, in seconds. (Read Only) - - - - - Invoked when the VideoPlayer reaches the end of the content to play. - - - - - - Denominator of the pixel aspect ratio (num:den) for the VideoClip or the URL. (Read Only) - - - - - Numerator of the pixel aspect ratio (num:den) for the VideoClip or the URL. (Read Only) - - - - - Factor by which the basic playback rate will be multiplied. - - - - - Whether the content will start playing back as soon as the component awakes. - - - - - Invoked when the VideoPlayer preparation is complete. - - - - - - Where the video content will be drawn. - - - - - Invoke after a seek operation completes. - - - - - - Enables the frameReady events. - - - - - Whether the VideoPlayer is allowed to skip frames to catch up with current time. - - - - - The source that the VideoPlayer uses for playback. - - - - - Invoked immediately after Play is called. - - - - - - Camera component to draw to when Video.VideoPlayer.renderMode is set to either Video.VideoRenderMode.CameraFarPlane or Video.VideoRenderMode.CameraNearPlane. - - - - - Type of 3D content contained in the source video media. - - - - - Overall transparency level of the target camera plane video. - - - - - Material texture property which is targeted when Video.VideoPlayer.renderMode is set to Video.VideoTarget.MaterialOverride. - - - - - Renderer which is targeted when Video.VideoPlayer.renderMode is set to Video.VideoTarget.MaterialOverride - - - - - RenderTexture to draw to when Video.VideoPlayer.renderMode is set to Video.VideoTarget.RenderTexture. - - - - - Internal texture in which video content is placed. (Read Only) - - - - - The presentation time of the currently available frame in VideoPlayer.texture. - - - - - The clock that the Video.VideoPlayer observes to detect and correct drift. - - - - - [NOT YET IMPLEMENTED] The source used used by the VideoPlayer to derive its current time. - - - - - The file or HTTP URL that the VideoPlayer reads content from. - - - - - Determines whether the VideoPlayer will wait for the first frame to be loaded into the texture before starting playback when Video.VideoPlayer.playOnAwake is on. - - - - - The width of the images in the VideoClip, or URL, in pixels. (Read Only) - - - - - Enable/disable audio track decoding. Only effective when the VideoPlayer is not currently playing. - - Index of the audio track to enable/disable. - True for enabling the track. False for disabling the track. - - - - Delegate type for VideoPlayer events that contain an error message. - - The VideoPlayer that is emitting the event. - Message describing the error just encountered. - - - - Delegate type for all parameterless events emitted by VideoPlayers. - - The VideoPlayer that is emitting the event. - - - - Delegate type for VideoPlayer events that carry a frame number. - - The VideoPlayer that is emitting the event. - The current frame of the VideoPlayer. - - - - - The number of audio channels in the specified audio track. - - Index for the audio track being queried. - - Number of audio channels. - - - - - Returns the language code, if any, for the specified track. - - Index of the audio track to query. - - Language code. - - - - - Gets the audio track sampling rate in Hertz. - - Index of the audio track to query. - - The sampling rate in Hertz. - - - - - Gets the direct-output audio mute status for the specified track. - - - - - - Return the direct-output volume for specified track. - - Track index for which the volume is queried. - - Volume, between 0 and 1. - - - - - Gets the AudioSource that will receive audio samples for the specified track if Video.VideoPlayer.audioOutputMode is set to Video.VideoAudioOutputMode.AudioSource. - - Index of the audio track for which the AudioSource is wanted. - - The source associated with the audio track. - - - - - Whether decoding for the specified audio track is enabled. See Video.VideoPlayer.EnableAudioTrack for distinction with mute. - - Index of the audio track being queried. - - Returns true if decoding for the specified audio track is enabled. - - - - - Pauses the playback and leaves the current time intact. - - - - - Starts playback. - - - - - Initiates playback engine preparation. - - - - - Set the direct-output audio mute status for the specified track. - - Track index for which the mute is set. - Mute on/off. - - - - Set the direct-output audio volume for the specified track. - - Track index for which the volume is set. - New volume, between 0 and 1. - - - - Sets the AudioSource that will receive audio samples for the specified track if this audio target is selected with Video.VideoPlayer.audioOutputMode. - - Index of the audio track to associate with the specified AudioSource. - AudioSource to associate with the audio track. - - - - Advances the current time by one frame immediately. - - - - - Stops the playback and sets the current time to 0. - - - - - Delegate type for VideoPlayer events that carry a time position. - - The VideoPlayer that is emitting the event. - Time position. - - - - Type of destination for the images read by a VideoPlayer. - - - - - Don't draw the video content anywhere, but still make it available via the VideoPlayer's texture property in the API. - - - - - Draw video content behind a camera's Scene. - - - - - Draw video content in front of a camera's Scene. - - - - - Draw the video content into a user-specified property of the current GameObject's material. - - - - - Draw video content into a RenderTexture. - - - - - Source of the video content for a VideoPlayer. - - - - - Use the current URL as the video content source. - - - - - Use the current clip as the video content source. - - - - - The clock that the Video.VideoPlayer observes to detect and correct drift. - - - - - External reference clock the Video.VideoPlayer observes to detect and correct drift. - - - - - Disables the drift detection. - - - - - Internal reference clock the Video.VideoPlayer observes to detect and correct drift. - - - - - Time source followed by the Video.VideoPlayer when reading content. - - - - - The audio hardware clock. - - - - - The unscaled game time as defined by Time.realtimeSinceStartup. - - - - - This enum describes how the RenderTexture is used as a VR eye texture. Instead of using the values of this enum manually, use the value returned by XR.XRSettings.eyeTextureDesc|eyeTextureDesc or other VR functions returning a RenderTextureDescriptor. - - - - - The RenderTexture is not a VR eye texture. No special rendering behavior will occur. - - - - - This texture corresponds to a single eye on a stereoscopic display. - - - - - This texture corresponds to two eyes on a stereoscopic display. This will be taken into account when using Graphics.Blit and other rendering functions. - - - - - Waits until the end of the frame after Unity has rendererd every Camera and GUI, just before displaying the frame on screen. - - - - - Waits until next fixed frame rate update function. See Also: MonoBehaviour.FixedUpdate. - - - - - Suspends the coroutine execution for the given amount of seconds using scaled time. - - - - - Suspends the coroutine execution for the given amount of seconds using scaled time. - - Delay execution by the amount of time in seconds. - - - - Suspends the coroutine execution for the given amount of seconds using unscaled time. - - - - - The given amount of seconds that the yield instruction will wait for. - - - - - Creates a yield instruction to wait for a given number of seconds using unscaled time. - - - - - - Suspends the coroutine execution until the supplied delegate evaluates to true. - - - - - Initializes a yield instruction with a given delegate to be evaluated. - - Supplied delegate will be evaluated each frame after MonoBehaviour.Update and before MonoBehaviour.LateUpdate until delegate returns true. - - - - Suspends the coroutine execution until the supplied delegate evaluates to false. - - - - - Initializes a yield instruction with a given delegate to be evaluated. - - The supplied delegate will be evaluated each frame after MonoBehaviour.Update and before MonoBehaviour.LateUpdate until delegate returns false. - - - - A structure describing the webcam device. - - - - - Possible WebCamTexture resolutions for this device. - - - - - A string identifier used to create a depth data based WebCamTexture. - - - - - Returns true if the camera supports automatic focusing on points of interest and false otherwise. - - - - - True if camera faces the same direction a screen does, false otherwise. - - - - - Property of type WebCamKind denoting the kind of webcam device. - - - - - A human-readable name of the device. Varies across different systems. - - - - - Enum representing the different types of web camera device. - - - - - Camera which supports synchronized color and depth data (currently these are only dual back and true depth cameras on latest iOS devices). - - - - - A Telephoto camera device. These devices have a longer focal length than a wide-angle camera. - - - - - Wide angle (default) camera. - - - - - WebCam Textures are textures onto which the live video input is rendered. - - - - - This property allows you to set/get the auto focus point of the camera. This works only on Android and iOS devices. - - - - - Set this to specify the name of the device to use. - - - - - Return a list of available devices. - - - - - Did the video buffer update this frame? - - - - - This property is true if the texture is based on depth data. - - - - - Returns if the camera is currently playing. - - - - - Set the requested frame rate of the camera device (in frames per second). - - - - - Set the requested height of the camera device. - - - - - Set the requested width of the camera device. - - - - - Returns an clockwise angle (in degrees), which can be used to rotate a polygon so camera contents are shown in correct orientation. - - - - - Returns if the texture image is vertically flipped. - - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Returns pixel color at coordinates (x, y). - - - - - - - Get a block of pixel colors. - - - - - Get a block of pixel colors. - - - - - - - - - Returns the pixels data in raw format. - - Optional array to receive pixel data. - - - - Returns the pixels data in raw format. - - Optional array to receive pixel data. - - - - Pauses the camera. - - - - - Starts the camera. - - - - - Stops the camera. - - - - - Sets which weights to use when calculating curve segments. - - - - - Include inWeight and outWeight when calculating curve segments. - - - - - Include inWeight when calculating the previous curve segment. - - - - - Exclude both inWeight or outWeight when calculating curve segments. - - - - - Include outWeight when calculating the next curve segment. - - - - - A special collider for vehicle wheels. - - - - - Brake torque expressed in Newton metres. - - - - - The center of the wheel, measured in the object's local space. - - - - - Application point of the suspension and tire forces measured from the base of the resting wheel. - - - - - Properties of tire friction in the direction the wheel is pointing in. - - - - - Indicates whether the wheel currently collides with something (Read Only). - - - - - The mass of the wheel, expressed in kilograms. Must be larger than zero. Typical values would be in range (20,80). - - - - - Motor torque on the wheel axle expressed in Newton metres. Positive or negative depending on direction. - - - - - The radius of the wheel, measured in local space. - - - - - Current wheel axle rotation speed, in rotations per minute (Read Only). - - - - - Properties of tire friction in the sideways direction. - - - - - The mass supported by this WheelCollider. - - - - - Steering angle in degrees, always around the local y-axis. - - - - - Maximum extension distance of wheel suspension, measured in local space. - - - - - The parameters of wheel's suspension. The suspension attempts to reach a target position by applying a linear force and a damping force. - - - - - The damping rate of the wheel. Must be larger than zero. - - - - - Configure vehicle sub-stepping parameters. - - The speed threshold of the sub-stepping algorithm. - Amount of simulation sub-steps when vehicle's speed is below speedThreshold. - Amount of simulation sub-steps when vehicle's speed is above speedThreshold. - - - - Gets ground collision data for the wheel. - - - - - - Gets the world space pose of the wheel accounting for ground contact, suspension limits, steer angle, and rotation angle (angles in degrees). - - Position of the wheel in world space. - Rotation of the wheel in world space. - - - - WheelFrictionCurve is used by the WheelCollider to describe friction properties of the wheel tire. - - - - - Asymptote point slip (default 2). - - - - - Force at the asymptote slip (default 10000). - - - - - Extremum point slip (default 1). - - - - - Force at the extremum slip (default 20000). - - - - - Multiplier for the extremumValue and asymptoteValue values (default 1). - - - - - Contact information for the wheel, reported by WheelCollider. - - - - - The other Collider the wheel is hitting. - - - - - The magnitude of the force being applied for the contact. - - - - - The direction the wheel is pointing in. - - - - - Tire slip in the rolling direction. Acceleration slip is negative, braking slip is positive. - - - - - The normal at the point of contact. - - - - - The point of contact between the wheel and the ground. - - - - - The sideways direction of the wheel. - - - - - Tire slip in the sideways direction. - - - - - The wheel joint allows the simulation of wheels by providing a constraining suspension motion with an optional motor. - - - - - The current joint angle (in degrees) defined as the relative angle between the two Rigidbody2D that the joint connects to. - - - - - The current joint linear speed in meters/sec. - - - - - The current joint rotational speed in degrees/sec. - - - - - The current joint translation. - - - - - Parameters for a motor force that is applied automatically to the Rigibody2D along the line. - - - - - Set the joint suspension configuration. - - - - - Should a motor force be applied automatically to the Rigidbody2D? - - - - - Gets the motor torque of the joint given the specified timestep. - - The time to calculate the motor torque for. - - - - Exposes useful information related to crash reporting on Windows platforms. - - - - - Returns the path to the crash report folder on Windows. - - - - - Class representing cryptography algorithms. - - - - - Computes MD5 hash value for the specified byte array. - - The input to compute the hash code for. - - - - Computes SHA1 hash value for the specified byte array. - - The input to compute the hash code for. - - - - Exposes static methods for directory operations. - - - - - Returns a path to local folder. - - - - - Returns a path to roaming folder. - - - - - Returns a path to temporary folder. - - - - - Creates directory in the specified path. - - The directory path to create. - - - - Deletes a directory from a specified path. - - The name of the directory to remove. - - - - Determines whether the given path refers to an existing directory. - - The path to test. - - - - Provides static methods for file operations. - - - - - Deletes the specified file. - - The name of the file to be deleted. - - - - Determines whether the specified file exists. - - The file to check. - - - - Opens a binary file, reads the contents of the file into a byte array, and then closes the file. - - The file to open for reading. - - - - Creates a new file, writes the specified byte array to the file, and then closes the file. If the target file already exists, it is overwritten. - - The file to write to. - The bytes to write to the file. - - - - This class provides information regarding application's trial status and allows initiating application purchase. - - - - - Checks whether the application is installed in trial mode. - - - - - Attempts to purchase the app if it is in installed in trial mode. - - - Purchase receipt. - - - - - Used by KeywordRecognizer, GrammarRecognizer, DictationRecognizer. Phrases under the specified minimum level will be ignored. - - - - - High confidence level. - - - - - Low confidence level. - - - - - Medium confidence level. - - - - - Everything is rejected. - - - - - Represents the reason why dictation session has completed. - - - - - Dictation session completion was caused by bad audio quality. - - - - - Dictation session was either cancelled, or the application was paused while dictation session was in progress. - - - - - Dictation session has completed successfully. - - - - - Dictation session has finished because a microphone was not available. - - - - - Dictation session has finished because network connection was not available. - - - - - Dictation session has reached its timeout. - - - - - Dictation session has completed due to an unknown error. - - - - - DictationRecognizer listens to speech input and attempts to determine what phrase was uttered. - - - - - The time length in seconds before dictation recognizer session ends due to lack of audio input. - - - - - Create a DictationRecognizer with the specified minimum confidence and dictation topic constraint. Phrases under the specified minimum level will be ignored. - - The confidence level at which the recognizer will begin accepting phrases. - The dictation topic that this dictation recognizer should optimize its recognition for. - - - - - Create a DictationRecognizer with the specified minimum confidence and dictation topic constraint. Phrases under the specified minimum level will be ignored. - - The confidence level at which the recognizer will begin accepting phrases. - The dictation topic that this dictation recognizer should optimize its recognition for. - - - - - Create a DictationRecognizer with the specified minimum confidence and dictation topic constraint. Phrases under the specified minimum level will be ignored. - - The confidence level at which the recognizer will begin accepting phrases. - The dictation topic that this dictation recognizer should optimize its recognition for. - - - - - Create a DictationRecognizer with the specified minimum confidence and dictation topic constraint. Phrases under the specified minimum level will be ignored. - - The confidence level at which the recognizer will begin accepting phrases. - The dictation topic that this dictation recognizer should optimize its recognition for. - - - - - Event that is triggered when the recognizer session completes. - - Delegate that is to be invoked on DictationComplete event. - - - - Delegate for DictationComplete event. - - The cause of dictation session completion. - - - - Event that is triggered when the recognizer session encouters an error. - - Delegate that is to be invoked on DictationError event. - - - - Delegate for DictationError event. - - The error mesage. - HRESULT code that corresponds to the error. - - - - Event that is triggered when the recognizer changes its hypothesis for the current fragment. - - Delegate to be triggered in the event of a hypothesis changed event. - - - - Callback indicating a hypothesis change event. You should register with DictationHypothesis event. - - The text that the recognizer believes may have been recognized. - - - - Event indicating a phrase has been recognized with the specified confidence level. - - The delegate to be triggered when this event is triggered. - - - - Callback indicating a phrase has been recognized with the specified confidence level. You should register with DictationResult event. - - The recognized text. - The confidence level at which the text was recognized. - - - - Disposes the resources this dictation recognizer uses. - - - - - The time length in seconds before dictation recognizer session ends due to lack of audio input in case there was no audio heard in the current session. - - - - - Starts the dictation recognization session. Dictation recognizer can only be started if PhraseRecognitionSystem is not running. - - - - - Indicates the status of dictation recognizer. - - - - - Stops the dictation recognization session. - - - - - DictationTopicConstraint enum specifies the scenario for which a specific dictation recognizer should optimize. - - - - - Dictation recognizer will optimize for dictation scenario. - - - - - Dictation recognizer will optimize for form-filling scenario. - - - - - Dictation recognizer will optimize for web search scenario. - - - - - The GrammarRecognizer is a complement to the KeywordRecognizer. In many cases developers will find the KeywordRecognizer fills all their development needs. However, in some cases, more complex grammars will be better expressed in the form of an xml file on disk. -The GrammarRecognizer uses Extensible Markup Language (XML) elements and attributes, as specified in the World Wide Web Consortium (W3C) Speech Recognition Grammar Specification (SRGS) Version 1.0. These XML elements and attributes represent the rule structures that define the words or phrases (commands) recognized by speech recognition engines. - - - - - Creates a grammar recognizer using specified file path and minimum confidence. - - Path of the grammar file. - The confidence level at which the recognizer will begin accepting phrases. - - - - Creates a grammar recognizer using specified file path and minimum confidence. - - Path of the grammar file. - The confidence level at which the recognizer will begin accepting phrases. - - - - Returns the grammar file path which was supplied when the grammar recognizer was created. - - - - - KeywordRecognizer listens to speech input and attempts to match uttered phrases to a list of registered keywords. - - - - - Create a KeywordRecognizer which listens to specified keywords with the specified minimum confidence. Phrases under the specified minimum level will be ignored. - - The keywords that the recognizer will listen to. - The minimum confidence level of speech recognition that the recognizer will accept. - - - - Create a KeywordRecognizer which listens to specified keywords with the specified minimum confidence. Phrases under the specified minimum level will be ignored. - - The keywords that the recognizer will listen to. - The minimum confidence level of speech recognition that the recognizer will accept. - - - - Returns the list of keywords which was supplied when the keyword recognizer was created. - - - - - Phrase recognition system is responsible for managing phrase recognizers and dispatching recognition events to them. - - - - - Returns whether speech recognition is supported on the machine that the application is running on. - - - - - Delegate for OnError event. - - Error code for the error that occurred. - - - - Event that gets invoked when phrase recognition system encounters an error. - - Delegate that will be invoked when the event occurs. - - - - Event which occurs when the status of the phrase recognition system changes. - - Delegate that will be invoked when the event occurs. - - - - Attempts to restart the phrase recognition system. - - - - - Shuts phrase recognition system down. - - - - - Returns the current status of the phrase recognition system. - - - - - Delegate for OnStatusChanged event. - - The new status of the phrase recognition system. - - - - Provides information about a phrase recognized event. - - - - - A measure of correct recognition certainty. - - - - - The time it took for the phrase to be uttered. - - - - - The moment in time when uttering of the phrase began. - - - - - A semantic meaning of recognized phrase. - - - - - The text that was recognized. - - - - - A common base class for both keyword recognizer and grammar recognizer. - - - - - Disposes the resources used by phrase recognizer. - - - - - Tells whether the phrase recognizer is listening for phrases. - - - - - Event that gets fired when the phrase recognizer recognizes a phrase. - - Delegate that will be invoked when the event occurs. - - - - Delegate for OnPhraseRecognized event. - - Information about a phrase recognized event. - - - - Makes the phrase recognizer start listening to phrases. - - - - - Stops the phrase recognizer from listening to phrases. - - - - - Semantic meaning is a collection of semantic properties of a recognized phrase. These semantic properties can be specified in SRGS grammar files. - - - - - A key of semantic meaning. - - - - - Values of semantic property that the correspond to the semantic meaning key. - - - - - Represents an error in a speech recognition system. - - - - - Speech recognition engine failed because the audio quality was too low. - - - - - Speech recognition engine failed to compiled specified grammar. - - - - - Speech error occurred because a microphone was not available. - - - - - Speech error occurred due to a network failure. - - - - - No error occurred. - - - - - A speech recognition system has timed out. - - - - - Supplied grammar file language is not supported. - - - - - A speech recognition system has encountered an unknown error. - - - - - Represents the current status of the speech recognition system or a dictation recognizer. - - - - - Speech recognition system has encountered an error and is in an indeterminate state. - - - - - Speech recognition system is running. - - - - - Speech recognition system is stopped. - - - - - Wind Zones add realism to the trees you create by making them wave their branches and leaves as if blown by the wind. - - - - - Defines the type of wind zone to be used (Spherical or Directional). - - - - - Radius of the Spherical Wind Zone (only active if the WindZoneMode is set to Spherical). - - - - - The primary wind force. - - - - - Defines the frequency of the wind changes. - - - - - Defines how much the wind changes over time. - - - - - The turbulence wind force. - - - - - The constructor. - - - - - Modes a Wind Zone can have, either Spherical or Directional. - - - - - Wind zone affects the entire Scene in one direction. - - - - - Wind zone only has an effect inside the radius, and has a falloff from the center towards the edge. - - - - - Determines how time is treated outside of the keyframed range of an AnimationClip or AnimationCurve. - - - - - Plays back the animation. When it reaches the end, it will keep playing the last frame and never stop playing. - - - - - Reads the default repeat mode set higher up. - - - - - When time reaches the end of the animation clip, time will continue at the beginning. - - - - - When time reaches the end of the animation clip, the clip will automatically stop playing and time will be reset to beginning of the clip. - - - - - When time reaches the end of the animation clip, time will ping pong back between beginning and end. - - - - - Delegate that can be invoked on specific thread. - - - - - Provides essential methods related to Window Store application. - - - - - Advertising ID. - - - - - Arguments passed to application. - - - - - Fired when application window is activated. - - - - - - Fired when window size changes. - - - - - - Executes callback item on application thread. - - Item to execute. - Wait until item is executed. - - - - Executes callback item on UI thread. - - Item to execute. - Wait until item is executed. - - - - Returns true if you're running on application thread. - - - - - Returns true if you're running on UI thread. - - - - - [OBSOLETE] Tries to execute callback item on application thread. - - Item to execute. - Wait until item is executed. - - - - [OBSOLETE] Tries to execute callback item on UI thread. - - Item to execute. - Wait until item is executed. - - - - Cursor API for Windows Store Apps. - - - - - Set a custom cursor. - - The cursor resource id. - - - - List of accessible folders on Windows Store Apps. - - - - - Class which is capable of launching user's default app for file type or a protocol. See also PlayerSettings where you can specify file or URI associations. - - - - - Launches the default app associated with specified file. - - Folder type where the file is located. - Relative file path inside the specified folder. - Shows user a warning that application will be switched. - - - - Opens a dialog for picking the file. - - File extension. - - - - Starts the default app associated with the URI scheme name for the specified URI, using the specified options. - - The URI. - Displays a warning that the URI is potentially unsafe. - - - - Defines the default look of secondary tile. - - - - - - Arguments to be passed for application when secondary tile is activated. - - - - - Defines background color for secondary tile. - - - - - - Defines, whether backgroundColor should be used. - - - - - - Display name for secondary tile. - - - - - - Defines the style for foreground text on a secondary tile. - - - - - - Uri to logo, shown for secondary tile on lock screen. - - - - - - Whether to show secondary tile on lock screen. - - - - - - Phonetic name for secondary tile. - - - - - - Defines whether secondary tile is copied to another device when application is installed by the same users account. - - - - - - Defines whether the displayName should be shown on a medium secondary tile. - - - - - - Defines whether the displayName should be shown on a large secondary tile. - - - - - - Defines whether the displayName should be shown on a wide secondary tile. - - - - - - Uri to the logo for medium size tile. - - - - - Uri to the logo shown on tile - - - - - - Uri to the logo for large size tile. - - - - - - Uri to the logo for small size tile. - - - - - - Unique identifier within application for a secondary tile. - - - - - - Uri to the logo for wide tile. - - - - - Constructor for SecondaryTileData, sets default values for all members. - - Unique identifier for secondary tile. - A display name for a tile. - - - - Represents tile on Windows start screen - - - - - - Whether secondary tile is pinned to start screen. - - - - - - Whether secondary tile was approved (pinned to start screen) or rejected by user. - - - - - - A unique string, identifying secondary tile - - - - - Returns applications main tile - - - - - - Creates new or updates existing secondary tile. - - The data used to create or update secondary tile. - The coordinates for a request to create new tile. - The area on the screen above which the request to create new tile will be displayed. - - New Tile object, that can be used for further work with the tile. - - - - - Creates new or updates existing secondary tile. - - The data used to create or update secondary tile. - The coordinates for a request to create new tile. - The area on the screen above which the request to create new tile will be displayed. - - New Tile object, that can be used for further work with the tile. - - - - - Creates new or updates existing secondary tile. - - The data used to create or update secondary tile. - The coordinates for a request to create new tile. - The area on the screen above which the request to create new tile will be displayed. - - New Tile object, that can be used for further work with the tile. - - - - - Show a request to unpin secondary tile from start screen. - - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Show a request to unpin secondary tile from start screen. - - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Show a request to unpin secondary tile from start screen. - - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Show a request to unpin secondary tile from start screen. - - An identifier for secondary tile. - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Show a request to unpin secondary tile from start screen. - - An identifier for secondary tile. - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Show a request to unpin secondary tile from start screen. - - An identifier for secondary tile. - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Whether secondary tile is pinned to start screen. - - An identifier for secondary tile. - - - - Gets all secondary tiles. - - - An array of Tile objects. - - - - - Returns the secondary tile, identified by tile id. - - A tile identifier. - - A Tile object or null if secondary tile does not exist (not pinned to start screen and user request is complete). - - - - - Get template XML for tile notification. - - A template identifier. - - String, which is an empty XML document to be filled and used for tile notification. - - - - - Starts periodic update of a badge on a tile. - - - A remote location from where to retrieve tile update - A time interval in minutes, will be rounded to a value, supported by the system - - - - Starts periodic update of a tile. - - - a remote location fromwhere to retrieve tile update - a time interval in minutes, will be rounded to a value, supported by the system - - - - Remove badge from tile. - - - - - Stops previously started periodic update of a tile. - - - - - Stops previously started periodic update of a tile. - - - - - Send a notification for tile (update tiles look). - - A string containing XML document for new tile look. - An uri to 150x150 image, shown on medium tile. - An uri to a 310x150 image to be shown on a wide tile (if such issupported). - An uri to a 310x310 image to be shown on a large tile (if such is supported). - A text to shown on a tile. - - - - Send a notification for tile (update tiles look). - - A string containing XML document for new tile look. - An uri to 150x150 image, shown on medium tile. - An uri to a 310x150 image to be shown on a wide tile (if such issupported). - An uri to a 310x310 image to be shown on a large tile (if such is supported). - A text to shown on a tile. - - - - Sets or updates badge on a tile to an image. - - Image identifier. - - - - Set or update a badge on a tile to a number. - - Number to be shown on a badge. - - - - Style for foreground text on a secondary tile. - - - - - Templates for various tile styles. - - - - - - Represents a toast notification in Windows Store Apps. - - - - - - true if toast was activated by user. - - - - - Arguments to be passed for application when toast notification is activated. - - - - - true if toast notification was dismissed (for any reason). - - - - - true if toast notification was explicitly dismissed by user. - - - - - Create toast notification. - - XML document with tile data. - Uri to image to show on a toast, can be empty, in that case text-only notification will be shown. - A text to display on a toast notification. - - A toast object for further work with created notification or null, if creation of toast failed. - - - - - Create toast notification. - - XML document with tile data. - Uri to image to show on a toast, can be empty, in that case text-only notification will be shown. - A text to display on a toast notification. - - A toast object for further work with created notification or null, if creation of toast failed. - - - - - Get template XML for toast notification. - - - A template identifier. - - string, which is an empty XML document to be filled and used for toast notification. - - - - - Hide displayed toast notification. - - - - - Show toast notification. - - - - - Templates for various toast styles. - - - - - - This event occurs when window completes activation or deactivation, it also fires up when you snap and unsnap the application. - - - - - - Specifies the set of reasons that a windowActivated event was raised. - - - - - The window was activated. - - - - - The window was deactivated. - - - - - The window was activated by pointer interaction. - - - - - This event occurs when window rendering size changes. - - - - - - - Simple access to web pages. - - - - - Streams an AssetBundle that can contain any kind of asset from the project folder. - - - - - Returns a AudioClip generated from the downloaded data (Read Only). - - - - - Returns the contents of the fetched web page as a byte array (Read Only). - - - - - The number of bytes downloaded by this WWW query (read only). - - - - - Returns an error message if there was an error during the download (Read Only). - - - - - Is the download already finished? (Read Only) - - - - - Returns a MovieTexture generated from the downloaded data (Read Only). - - - - - Load an Ogg Vorbis file into the audio clip. - - - - - How far has the download progressed (Read Only). - - - - - Dictionary of headers returned by the request. - - - - - Returns the contents of the fetched web page as a string (Read Only). - - - - - Returns a Texture2D generated from the downloaded data (Read Only). - - - - - Returns a non-readable Texture2D generated from the downloaded data (Read Only). - - - - - Obsolete, has no effect. - - - - - How far has the upload progressed (Read Only). - - - - - The URL of this WWW request (Read Only). - - - - - Creates a WWW request with the given URL. - - The url to download. Must be '%' escaped. - - A new WWW object. When it has been downloaded, the results can be fetched from the returned object. - - - - - Creates a WWW request with the given URL. - - The url to download. Must be '%' escaped. - A WWWForm instance containing the form data to post. - - A new WWW object. When it has been downloaded, the results can be fetched from the returned object. - - - - - Creates a WWW request with the given URL. - - The url to download. Must be '%' escaped. - A byte array of data to be posted to the url. - - A new WWW object. When it has been downloaded, the results can be fetched from the returned object. - - - - - Creates a WWW request with the given URL. - - The url to download. Must be '%' escaped. - A byte array of data to be posted to the url. - A hash table of custom headers to send with the request. - - A new WWW object. When it has been downloaded, the results can be fetched from the returned object. - - - - - Creates a WWW request with the given URL. - - The url to download. Must be '%' escaped. - A byte array of data to be posted to the url. - A dictionary that contains the header keys and values to pass to the server. - - A new WWW object. When it has been downloaded, the results can be fetched from the returned object. - - - - - Disposes of an existing WWW object. - - - - - Escapes characters in a string to ensure they are URL-friendly. - - A string with characters to be escaped. - The text encoding to use. - - - - Escapes characters in a string to ensure they are URL-friendly. - - A string with characters to be escaped. - The text encoding to use. - - - - Returns an AudioClip generated from the downloaded data (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip -the .audioClip property defaults to 3D. - Sets whether the clip should be completely downloaded before it's ready to play (false) or the stream can be played even if only part of the clip is downloaded (true). -The latter will disable seeking on the clip (with .time and/or .timeSamples). - The AudioType of the content you are downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - Returns an AudioClip generated from the downloaded data (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip -the .audioClip property defaults to 3D. - Sets whether the clip should be completely downloaded before it's ready to play (false) or the stream can be played even if only part of the clip is downloaded (true). -The latter will disable seeking on the clip (with .time and/or .timeSamples). - The AudioType of the content you are downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - Returns an AudioClip generated from the downloaded data (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip -the .audioClip property defaults to 3D. - Sets whether the clip should be completely downloaded before it's ready to play (false) or the stream can be played even if only part of the clip is downloaded (true). -The latter will disable seeking on the clip (with .time and/or .timeSamples). - The AudioType of the content you are downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - Returns an AudioClip generated from the downloaded data that is compressed in memory (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip. - The AudioType of the content your downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - Returns an AudioClip generated from the downloaded data that is compressed in memory (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip. - The AudioType of the content your downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - Returns an AudioClip generated from the downloaded data that is compressed in memory (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip. - The AudioType of the content your downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - Loads an AssetBundle with the specified version number from the cache. If the AssetBundle is not currently cached, it will automatically be downloaded and stored in the cache for future retrieval from local storage. - - The URL to download the AssetBundle from, if it is not present in the cache. Must be '%' escaped. - Version of the AssetBundle. The file will only be loaded from the disk cache if it has previously been downloaded with the same version parameter. By incrementing the version number requested by your application, you can force Caching to download a new copy of the AssetBundle from url. - Hash128 which is used as the version of the AssetBundle. - A structure used to download a given version of AssetBundle to a customized cache path. - -Analogous to the cachedAssetBundle parameter for UnityWebRequestAssetBundle.GetAssetBundle.</param> - An optional CRC-32 Checksum of the uncompressed contents. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. You can use this to avoid data corruption from bad downloads or users tampering with the cached files on disk. If the CRC does not match, Unity will try to redownload the data, and if the CRC on the server does not match it will fail with an error. Look at the error string returned to see the correct CRC value to use for an AssetBundle. - - A WWW instance, which can be used to access the data once the load/download operation is completed. - - - - - Loads an AssetBundle with the specified version number from the cache. If the AssetBundle is not currently cached, it will automatically be downloaded and stored in the cache for future retrieval from local storage. - - The URL to download the AssetBundle from, if it is not present in the cache. Must be '%' escaped. - Version of the AssetBundle. The file will only be loaded from the disk cache if it has previously been downloaded with the same version parameter. By incrementing the version number requested by your application, you can force Caching to download a new copy of the AssetBundle from url. - Hash128 which is used as the version of the AssetBundle. - A structure used to download a given version of AssetBundle to a customized cache path. - -Analogous to the cachedAssetBundle parameter for UnityWebRequestAssetBundle.GetAssetBundle.</param> - An optional CRC-32 Checksum of the uncompressed contents. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. You can use this to avoid data corruption from bad downloads or users tampering with the cached files on disk. If the CRC does not match, Unity will try to redownload the data, and if the CRC on the server does not match it will fail with an error. Look at the error string returned to see the correct CRC value to use for an AssetBundle. - - A WWW instance, which can be used to access the data once the load/download operation is completed. - - - - - Loads an AssetBundle with the specified version number from the cache. If the AssetBundle is not currently cached, it will automatically be downloaded and stored in the cache for future retrieval from local storage. - - The URL to download the AssetBundle from, if it is not present in the cache. Must be '%' escaped. - Version of the AssetBundle. The file will only be loaded from the disk cache if it has previously been downloaded with the same version parameter. By incrementing the version number requested by your application, you can force Caching to download a new copy of the AssetBundle from url. - Hash128 which is used as the version of the AssetBundle. - A structure used to download a given version of AssetBundle to a customized cache path. - -Analogous to the cachedAssetBundle parameter for UnityWebRequestAssetBundle.GetAssetBundle.</param> - An optional CRC-32 Checksum of the uncompressed contents. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. You can use this to avoid data corruption from bad downloads or users tampering with the cached files on disk. If the CRC does not match, Unity will try to redownload the data, and if the CRC on the server does not match it will fail with an error. Look at the error string returned to see the correct CRC value to use for an AssetBundle. - - A WWW instance, which can be used to access the data once the load/download operation is completed. - - - - - Loads an AssetBundle with the specified version number from the cache. If the AssetBundle is not currently cached, it will automatically be downloaded and stored in the cache for future retrieval from local storage. - - The URL to download the AssetBundle from, if it is not present in the cache. Must be '%' escaped. - Version of the AssetBundle. The file will only be loaded from the disk cache if it has previously been downloaded with the same version parameter. By incrementing the version number requested by your application, you can force Caching to download a new copy of the AssetBundle from url. - Hash128 which is used as the version of the AssetBundle. - A structure used to download a given version of AssetBundle to a customized cache path. - -Analogous to the cachedAssetBundle parameter for UnityWebRequestAssetBundle.GetAssetBundle.</param> - An optional CRC-32 Checksum of the uncompressed contents. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. You can use this to avoid data corruption from bad downloads or users tampering with the cached files on disk. If the CRC does not match, Unity will try to redownload the data, and if the CRC on the server does not match it will fail with an error. Look at the error string returned to see the correct CRC value to use for an AssetBundle. - - A WWW instance, which can be used to access the data once the load/download operation is completed. - - - - - Replaces the contents of an existing Texture2D with an image from the downloaded data. - - An existing texture object to be overwritten with the image data. - - - - - Converts URL-friendly escape sequences back to normal text. - - A string containing escaped characters. - The text encoding to use. - - - - Converts URL-friendly escape sequences back to normal text. - - A string containing escaped characters. - The text encoding to use. - - - - Helper class to generate form data to post to web servers using the UnityWebRequest or WWW classes. - - - - - (Read Only) The raw data to pass as the POST request body when sending the form. - - - - - (Read Only) Returns the correct request headers for posting the form using the WWW class. - - - - - Add binary data to the form. - - - - - - - - - Add binary data to the form. - - - - - - - - - Add binary data to the form. - - - - - - - - - Add a simple field to the form. - - - - - - - - Add a simple field to the form. - - - - - - - - Adds a simple field to the form. - - - - - - - Creates an empty WWWForm object. - - - - - Class used to override a camera's default background rendering path to instead render a given Texture and/or Material. This will typically be used with images from the color camera for rendering the AR background on mobile devices. - - - - - The Material used for AR rendering. - - - - - Called when any of the public properties of this class have been changed. - - - - - - An optional Texture used for AR rendering. If this property is not set then the texture set in XR.ARBackgroundRenderer._backgroundMaterial as "_MainTex" is used. - - - - - An optional Camera whose background rendering will be overridden by this class. If this property is not set then the main Camera in the Scene is used. - - - - - When set to XR.ARRenderMode.StandardBackground (default) the camera is not overridden to display the background image. Setting this property to XR.ARRenderMode.MaterialAsBackground will render the texture specified by XR.ARBackgroundRenderer._backgroundMaterial and or XR.ARBackgroundRenderer._backgroundTexture as the background. - - - - - Disables AR background rendering. This method is called internally but can be overridden by users who wish to subclass XR.ARBackgroundRenderer to customize handling of AR background rendering. - - - - - Enumeration describing the AR rendering mode used with XR.ARBackgroundRenderer. - - - - - The material associated with XR.ARBackgroundRenderer is being rendered as the background. - - - - - The standard background is rendered. (Skybox, Solid Color, etc.) - - - - - Enumeration of available modes for XR rendering in the Game view or in the main window on a host PC. XR rendering only occurs when the Unity Editor is in Play Mode. - - - - - Renders both eyes of the XR device side-by-side in the Game view or in the main window on a host PC. - - - - - Renders the left eye of the XR device in the Game View window or in main window on a host PC. - - - - - Renders both eyes of the XR device, and the occlusion mesh, side-by-side in the Game view or in the main window on a host PC. - - - - - Renders the right eye of the XR device in the Game View window or in main window on a host PC. - - - - - Describes the haptic capabilities of the device at an XR.XRNode in the XR input subsystem. - - - - - The frequency (in Hz) that this device plays back buffered haptic data. - - - - - The number of channels that this device plays back haptic data. - - - - - True if this device supports sending a haptic buffer. - - - - - True if this device supports sending a haptic impulse. - - - - - Defines an input device in the XR input subsystem. - - - - - true if the device is currently a valid input device; otherwise false. - - - - - Sends a raw buffer of haptic data to the device. - - The channel to receive the data. - A raw byte buffer that contains the haptic data to send to the device. - - true if successful; otherwise false. - - - - - Sends a haptic impulse to a device. - - The channel to receive the impulse. - The normalized (0.0 to 1.0) amplitude value of the haptic impulse to play on the device. - The duration in seconds that the haptic impulse will play. Only supported on Oculus. - - true if successful; otherwise false. - - - - - Stop all haptic playback for a device. - - - - - Gets the haptic capabilities of the device. - - A HapticCapabilities struct to receive the capabilities of this device. - - true if device can be queried, false otherwise. - - - - - An interface for accessing devices in the XR input subsytem. - - - - - Gets the input device at a given XR.XRNode endpoint. - - The XRNode that owns the requested device. - - An XR.InputDevice at this [[XR.XRNode]. - - - - - A collection of methods and properties for interacting with the XR tracking system. - - - - - Disables positional tracking in XR. This takes effect the next time the head pose is sampled. If set to true the camera only tracks headset rotation state. - - - - - Called when a tracked node is added to the underlying XR system. - - Describes the node that has been added. - - - - - Called when a tracked node is removed from the underlying XR system. - - Describes the node that has been removed. - - - - - Called when a tracked node begins reporting tracking information. - - Describes the node that has begun being tracked. - - - - - Called when a tracked node stops reporting tracking information. - - Describes the node that has lost tracking. - - - - - Gets the position of a specific node. - - Specifies which node's position should be returned. - - The position of the node in its local tracking space. - - - - - Gets the rotation of a specific node. - - Specifies which node's rotation should be returned. - - The rotation of the node in its local tracking space. - - - - - Accepts the unique identifier for a tracked node and returns a friendly name for it. - - The unique identifier for the Node index. - - - The name of the tracked node if the given 64-bit identifier maps to a currently tracked node. Empty string otherwise. - - - - - Describes all currently connected XRNodes and provides available tracking states for each. - - A list that is populated with XR.XRNodeState objects. - - - - Center tracking to the current position and orientation of the HMD. - - - - - Represents how the device is reporting pose data. - - - - - Represents a Device relative tracking origin. A Device relative tracking origin defines a Local Origin at the position of the device in space at some previous point in time, usually at a recenter event, power-on or AR/VR session start. Pose data provided by the device will be in this space relative to the local origin. This means that poses returned in this mode will not include the user height (for VR) or the device height (for AR) and any camera tracking from the XR Device will need to be manually offset accordingly. - - - - - Represents the tracking origin whereby 0,0,0 is on the "floor" or other surface determined by the XR Device being used. The pose values reported by an XR Device in this mode will include the height of the XR Device above this surface, removing the need to offset the position of the camera tracking the XR Device by the height of the user (VR) or the height of the device above the floor (AR). - - - - - This indicates that the device does not know, or is unable to determine how it is reporting pose data. This value should be treated as an error condition. - - - - - Represents the size of physical space available for XR. - - - - - Represents a space large enough for free movement. - - - - - Represents a small space where movement may be constrained or positional tracking is unavailable. - - - - - Represents the current user presence state detected by the device. - - - - - The device does not detect that the user is present. - - - - - The device detects that the user is present. - - - - - The device is currently in a state where it cannot determine user presence. - - - - - The device does not support detecting user presence. - - - - - he Holographic Remoting interface allows you to connect an application to a remote holographic device, and stream data between the application and that device. - - - - - Whether the app is displaying protected content. - - - - - The Holographic Settings contain functions which effect the performance and presentation of Holograms on Windows Holographic platforms. - - - - - Option to allow developers to achieve higher framerate at the cost of high latency. By default this option is off. - - True to enable or false to disable Low Latent Frame Presentation. - - - - Represents the kind of reprojection an app is requesting to stabilize its holographic rendering relative to the user's head motion. - - - - - The image should not be stabilized for the user's head motion, instead remaining fixed in the display. This is generally discouraged, as it is only comfortable for users when used sparingly, such as when the only visible content is a small cursor. - - - - - The image should be stabilized only for changes to the user's head orientation, ignoring positional changes. This is best for body-locked content that should tag along with the user as they walk around, such as 360-degree video. - - - - - The image should be stabilized for changes to both the user's head position and orientation. This is best for world-locked content that should remain physically stationary as the user walks around. - - - - - Whether the app is displaying protected content. - - - - - This method returns whether or not the display associated with the main camera reports as opaque. - - - - - Returns true if Holographic rendering is currently running with Latent Frame Presentation. Default value is false. - - - - - The kind of reprojection the app is requesting to stabilize its holographic rendering relative to the user's head motion. - - - - - Sets a point in 3d space that is the focal point of the Scene for the user for this frame. This helps improve the visual fidelity of content around this point. This must be set every frame. - - The position of the focal point in the Scene, relative to the camera. - Surface normal of the plane being viewed at the focal point. - A vector that describes how the focus point is moving in the Scene at this point in time. This allows the HoloLens to compensate for both your head movement and the movement of the object in the Scene. - - - - Sets a point in 3d space that is the focal point of the Scene for the user for this frame. This helps improve the visual fidelity of content around this point. This must be set every frame. - - The position of the focal point in the Scene, relative to the camera. - Surface normal of the plane being viewed at the focal point. - A vector that describes how the focus point is moving in the Scene at this point in time. This allows the HoloLens to compensate for both your head movement and the movement of the object in the Scene. - - - - Sets a point in 3d space that is the focal point of the Scene for the user for this frame. This helps improve the visual fidelity of content around this point. This must be set every frame. - - The position of the focal point in the Scene, relative to the camera. - Surface normal of the plane being viewed at the focal point. - A vector that describes how the focus point is moving in the Scene at this point in time. This allows the HoloLens to compensate for both your head movement and the movement of the object in the Scene. - - - - Enum indicating the reason why connection to remote device has failed. - - - - - Enum indicating the reason why remote connection failed. - - - - - Handskahe failed while traying to establish connection with remote device. - - - - - No failure. - - - - - Protocol used by the app does not match remoting app running on remote device. - - - - - Couldn't identify the reason why connection failed. - - - - - Remove device is not reachable. - - - - - Current state of the holographis streamer remote connection. - - - - - Indicates app being connected to remote device. - - - - - Indicates app trying to connect to remote device. - - - - - Indicates app being currently disconnected from any other remote device. - - - - - Contains fields that are relevant during an error event. - - - - - A readable error string (when possible). - - - - - The HRESULT code from the platform. - - - - - Manager class with API for recognizing user gestures. - - - - - Cancels any pending gesture events. Additionally this will call StopCapturingGestures. - - - - - Create a GestureRecognizer. - - - - - Disposes the resources used by gesture recognizer. - - - - - Fires when Microsoft's gesture-recognition system encounters a warning or error. - - - - - - Callback indicating an error or warning occurred. - - A readable error string (when possible). - The HRESULT code from the platform. - - - - Fired when a warning or error is emitted by the GestureRecognizer. - - Delegate to be triggered to report warnings and errors. - - - - Retrieve a mask of the currently enabled gestures. - - - A mask indicating which Gestures are currently recognizable. - - - - - Fires when Microsoft's gesture-recognition system recognizers that a user has canceled a hold gesture. - - - - - - Fired when the user does a cancel event either using their hands or in speech. - - Delegate to be triggered when a cancel event is triggered. - - - - Callback indicating a cancel event. - - Indicates which input medium triggered this event. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizers that a user has completed a hold gesture. - - - - - - Fired when users complete a hold gesture. - - Delegate to be triggered when the user completes a hold gesture. - - - - Callback indicating a hold completed event. - - Indicates which input medium triggered this event. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has started a hold gesture. - - - - - - Fired when users start a hold gesture. - - The delegate to be triggered when a user starts a hold gesture. - - - - Callback indicating a hold started event. - - Indicates which input medium triggered this event. - Ray (with normalized direction) from user at the time this gesture began. - - - - Used to query if the GestureRecognizer is currently receiving Gesture events. - - - True if the GestureRecognizer is receiving events or false otherwise. - - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has canceled a manipulation gesture. - - - - - - Fires when a Manipulation gesture is canceled. - - Delegate to be triggered when a cancel event is triggered. - - - - Callback indicating a cancel event. - - Indicates which input medium triggered this event. - Total distance moved since the beginning of the manipulation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has completed a manipulation gesture. - - - - - - Fires when a Manipulation gesture is completed. - - Delegate to be triggered when a completed event is triggered. - - - - Callback indicating a completed event. - - Indicates which input medium triggered this event. - Total distance moved since the beginning of the manipulation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has started a manipulation gesture. - - - - - - Fires when an interaction becomes a Manipulation gesture. - - Delegate to be triggered when a started event is triggered. - - - - Callback indicating a started event. - - Indicates which input medium triggered this event. - Total distance moved since the beginning of the manipulation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has updated a manipulation gesture. - - - - - - Fires when a Manipulation gesture is updated due to hand movement. - - Delegate to be triggered when a updated event is triggered. - - - - Callback indicating a updated event. - - Indicates which input medium triggered this event. - Total distance moved since the beginning of the manipulation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has canceled a navigation gesture. - - - - - - Fires when a Navigation gesture is canceled. - - Delegate to be triggered when a cancel event is triggered. - - - - Callback indicating a cancel event. - - Indicates which input medium triggered this event. - The last known normalized offset of the input within the unit cube for the navigation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a navigation gesture completes. - - - - - - Fires when a Navigation gesture is completed. - - Delegate to be triggered when a complete event is triggered. - - - - Callback indicating a completed event. - - Indicates which input medium triggered this event. - The last known normalized offset, since the navigation gesture began, of the input within the unit cube for the navigation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has started a navigation gesture. - - - - - - Fires when an interaction becomes a Navigation gesture. - - Delegate to be triggered when a started event is triggered. - - - - Callback indicating a started event. - - Indicates which input medium triggered this event. - The normalized offset, since the navigation gesture began, of the input within the unit cube for the navigation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that navigation gesture has updated. - - - - - - Fires when a Navigation gesture is updated due to hand or controller movement. - - Delegate to be triggered when a update event is triggered. - - - - Callback indicating a update event. - - Indicates which input medium triggered this event. - The last known normalized offset, since the navigation gesture began, of the input within the unit cube for the navigation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when recognition of gestures is done, either due to completion of a gesture or cancellation. - - - - - - Fires when recognition of gestures is done, either due to completion of a gesture or cancellation. - - Delegate to be triggered when an end event is triggered. - - - - Callback indicating the gesture event has completed. - - Indicates which input medium triggered this event. - Ray (with normalized direction) from user at the time a gesture began. - - - - Fires when recognition of gestures begins. - - - - - - Fires when recognition of gestures begins. - - Delegate to be triggered when a start event is triggered. - - - - Callback indicating the gesture event has started. - - Indicates which input medium triggered this event. - Ray (with normalized direction) from user at the time a gesture began. - - - - Set the recognizable gestures to the ones specified in newMaskValues and return the old settings. - - A mask indicating which gestures are now recognizable. - - The previous value. - - - - - Call to begin receiving gesture events on this recognizer. No events will be received until this method is called. - - - - - Call to stop receiving gesture events on this recognizer. - - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has done a tap gesture and after the system voice command "Select" has been processed. For controllers, this event fires when the primary button is released after it was pressed. - - - - - - Occurs when a Tap gesture is recognized. - - Delegate to be triggered when a tap event is triggered. - - - - Callback indicating a tap event. - - Indicates which input medium triggered this event. - The count of taps (1 for single tap, 2 for double tap). - Ray (with normalized direction) from user at the time this event interaction began. - - - - This enumeration represents the set of gestures that may be recognized by GestureRecognizer. - - - - - Enable support for the double-tap gesture. - - - - - Enable support for the hold gesture. - - - - - Enable support for the manipulation gesture which tracks changes to the hand's position. This gesture is relative to the start position of the gesture and measures an absolute movement through the world. - - - - - Enable support for the navigation gesture, in the horizontal axis using rails (guides). - - - - - Enable support for the navigation gesture, in the vertical axis using rails (guides). - - - - - Enable support for the navigation gesture, in the depth axis using rails (guides). - - - - - Enable support for the navigation gesture, in the horizontal axis. - - - - - Enable support for the navigation gesture, in the vertical axis. - - - - - Enable support for the navigation gesture, in the depth axis. - - - - - Disable support for gestures. - - - - - Enable support for the tap gesture. - - - - - Contains fields that are relevant when a user cancels a hold gesture. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that canceled the hold gesture. - - - - - Represents pose data of the input source, such as a hand or controller, when the gesture occurred. - - - - - Contains fields that are relevant when a hold gesture completes. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that completed the hold gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a hold gesture starts. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that started the hold gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Provides access to user input from hands, controllers, and system voice commands. - - - - - (Read Only) The number of InteractionSourceState snapshots available for reading with InteractionManager.GetCurrentReading. - - - - - Get the current SourceState. - - - An array of InteractionSourceState snapshots. - - - - - Allows retrieving the current source states without allocating an array. The number of retrieved source states will be returned, up to a maximum of the size of the array. - - An array for storing InteractionSourceState snapshots. - - The number of snapshots stored in the array, up to the size of the array. - - - - - Occurs when a new hand, controller, or source of voice commands has been detected. - - - - - - Occurs when a new hand, controller, or source of voice commands has been detected. - - - - - - Occurs when a hand, controller, or source of voice commands is no longer available. - - - - - - Occurs when a hand, controller, or source of voice commands is no longer available. - - - - - - Occurs when a hand or controller has entered the pressed state. - - - - - - Occurs when a hand or controller has entered the pressed state. - - - - - - Occurs when a hand or controller has exited the pressed state. - - - - - - Occurs when a hand or controller has exited the pressed state. - - - - - - Occurs when a hand or controller has experienced a change to its SourceState. - - - - - - Occurs when a hand or controller has experienced a change to its SourceState. - - - - - - Callback to handle InteractionManager events. - - - - - - Represents one detected instance of an interaction source (hand, controller, or user's voice) that can cause interactions and gestures. - - - - - Denotes which hand was used as the input source. - - - - - The identifier for the interaction source (hand, controller, or user's voice). - - - - - Specifies the kind of an interaction source. - - - - - Following the make and model nomenclature of cars, this equates to the model number. - - - - - Following the make and model nomenclature of cars, this would be a minor update to the model. - - - - - This property returns true when the interaction source has at least one grasp button, and false if otherwise. - - - - - This property returns true when the interaction source has a menu button, and false if otherwise. - - - - - This property returns true if the interaction source has a separate pose for the pointer, and false if otherwise. - - - - - Returns true if the interaction source has a thumbstick, and false if otherwise. - - - - - Returns true if the interaction source has a touchpad, and false if otherwise. - - - - - All interaction sources developed by the same company will have the same vendor ID. - - - - - Contains fields that are relevent when an interaction source is detected. - - - - - The current state of the reported interaction source that was just detected. - - - - - Denotes which hand was used as the input source. - - - - - Specifies the kind of an interaction source. - - - - - The interaction source is of a kind not known in this version of the API. - - - - - The interaction source is one of the user's hands. - - - - - The interaction source is of a kind not known in this version of the API. - - - - - The interaction source is the user's speech. - - - - - Represents the position and velocity of a hand or controller - this has been deprecated. Use InteractionSourcePose instead. - - - - - Get the position of the interaction - this has been deprecated. Use InteractionSourcePose instead. - - Supplied Vector3 to be populated with interaction position. - - True if the position is successfully returned. - - - - - Get the velocity of the interaction - this has been deprecated. Use InteractionSourcePose instead. - - Supplied Vector3 to be populated with interaction velocity. - - True if the velocity is successfully returned. - - - - - Contains fields that are relevent when an interaction source is lost. - - - - - The current state of the reported interaction source that was just lost. - - - - - Specifies which part of the controller to query pose information for. - - - - - The grip of the controller. - - - - - The pointer of the controller. - - - - - Pose data of the interaction source at the time of either the gesture or interaction. - - - - - The position-tracking accuracy of the interaction source. - - - - - Attempts to retrieve a Vector3 representing the current angular velocity of the tracked node. - - If the function returns true, this will be filled out with the angular velocity of the interaction source. If the function returns false, the value filled out should not be used. - - True if the angular velocity was set in the output parameter. False if the angular velocity is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Gets the forward vector of the interaction source, assuming rotation is valid. - - The forward vector of the interaction source, if the function returns true. - Specifies which part of the controller to query for its forward vector. - - This method returns true when the rotation is valid and the Vector3 passed in was filled out correctly, and false if otherwise. - - - - - Gets the position of the interaction source, assuming the backing data is valid. - - The position of the interaction source, is the function returns true. - Specifies which part of the controller to query for its position. - - This method returns true when the Vector3 passed in was filled out correctly, and false if otherwise. - - - - - Gets the right vector of the interaction source, assuming rotation is valid. - - The right vector of the interaction source, if the function returns true. - Specifies which part of the controller to query for its right vector. - - This method returns true if rotation is valid and the Vector3 passed in was filled out correctly, and false if otherwise. - - - - - Gets the rotation of the interaction source, assuming the backing data is valid. - - Specifies which part of the controller to query for its rotation. - The rotation of the interaction source, if the function returns true. - - This method returns true if the Quaternion passed in was filled out correctly, and false if otherwise. - - - - - Gets the up vector of the interaction source, assuming rotation is valid. - - The up vector of the interaction source, if the function returns true. - Specifies which part of the controller to query for its up vector. - - Returns true if the rotation is valid and the Vector3 passed in was filled out correctly, and false if otherwise. - - - - - Gets the velocity of the interaction source, assuming the backing data is valid. - - The velocity of the interaction source, if the function returns true. - - Returns true if the Vector3 passed in was filled out correctly, and false if otherwise. - - - - - Denotes the accuracy of tracking on the interaction source. - - - - - A position accuracy of Approximate reports that you may not want to fully trust the positions reported, as the position is inferred or synthesized in some way, such as the controller leaving the sensors' field of view and forcing the API to rely on the device's IMU instead of visual tracking. - - - - - A position accuracy of High reports that you can fully trust the position, as the interaction source is within the sensors' visual field of view. - - - - - A position accuracy of None reports that there is no position accuracy, as the interaction source unlocatable. - - - - - Contains fields that are relevent when an interaction source enters the pressed state for one of its buttons. - - - - - Denotes the type of button that was just pressed. - - - - - The current state of the reported interaction source that just had one of its buttons enter the pressed state. - - - - - The type of button or controller feature pressed, if any. - - - - - These buttons are generally found on the side of the controller. Some hardware has more than one grasp button. - - - - - This button is marked with three horizontal lines, same as you would fine on an Xbox One controller. - - - - - Depending on the InteractionSourceType of the interaction source, this could be a number of equivalent things: main button on a blicker, air-tap on a hand, and the trigger on a motion controller. - - - - - Similar to the touchpad, moving the thumbstick won't count as pressing it - a press will occur when pressing down on the thumbstick enough. - - - - - A touchpad only counts as pressed when it's held down enough - otherwise, it's just touched, and will give a reading of the position through InteractionSourceState.touchpadPosition. - - - - - Represents the set of properties available to explore the current state of a hand or controller. - - - - - The position and velocity of the hand, expressed in the specified coordinate system - this has been deprecated. Use InteractionSourcePose instead. - - - - - The direction you should suggest that the user move their hand if it is nearing the edge of the detection area. - - - - - Gets the risk that detection of the hand will be lost as a value from 0.0 to 1.0. - - - - - Contains fields that are relevent when an interaction source exits the pressed state for one of its buttons. - - - - - Denotes the type of button that was just released. - - - - - The current state of the reported interaction source that just had one of its buttons exit the pressed state. - - - - - Represents a snapshot of the state of a spatial interaction source (hand, voice or controller) at a given time. - - - - - True if the source is in the pressed state. - - - - - Whether the controller is grasped. - - - - - Head pose of the user at the time of the interaction. - - - - - The Ray at the time represented by this InteractionSourceState. - - - - - Whether or not the menu button is pressed. - - - - - True if the source is in the pressed state, false otherwise. - - - - - Additional properties to explore the state of the interaction source. - - - - - Depending on the InteractionSourceType of the interaction source, this returning true could represent a number of equivalent things: main button on a clicker, air-tap on a hand, and the trigger on a motion controller. For hands, a select-press represents the user's index finger in the down position. For motion controllers, a select-press represents the controller's index-finger trigger (or primary face button, if no trigger) being fully pressed. Note that a voice command of "Select" causes an instant press and release, so you cannot poll for a voice press using this property - instead, you must use GestureRecognizer and subscribe to the Tapped event, or subscribe to the InteractionSourcePressed event from InteractionManager. - - - - - Normalized amount ([0, 1]) representing how much select is pressed. - - - - - The interaction source that this state describes. - - - - - Pose data of the interaction source at the time of the interaction. - - - - - Normalized coordinates for the position of a thumbstick. - - - - - Whether or not the thumbstick is pressed. - - - - - Normalized coordinates for the position of a touchpad interaction. - - - - - Whether or not the touchpad is pressed, as if a button. - - - - - Whether or not the touchpad is touched. - - - - - Contains fields that are relevent when an interaction source updates. - - - - - The current state of the reported interaction source that just updated. - - - - - Contains fields that are relevant when a manipulation gesture is canceled. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that canceled the manipulation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a manipulation gesture completes. - - - - - Total distance moved since the beginning of the manipulation gesture. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that completed the manipulation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields relevant when a manipulation gesture starts. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that started the manipulation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a manipulation gesture gets updated. - - - - - Total distance moved since the beginning of the manipulation gesture. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) being used for the manipulation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a navigation gesture is canceled. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that canceled the navigation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a navigation gesture completes. - - - - - Head pose of the user at the time of the gesture. - - - - - The normalized offset, since the navigation gesture began, of the input within the unit cube for the navigation gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that completed the navigation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a navigation gesture starts. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that started the navigation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a navigation gesture updates. - - - - - Head pose of the user at the time of the gesture. - - - - - The normalized offset, since the navigation gesture began, of the input within the unit cube for the navigation gesture. - - - - - The InteractionSource (hand, controller, or user's voice) being used for the navigation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when recognition of a gesture event ends. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that ended the gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when recognition of a gesture event begins. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that started the gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a tap gesture occurs. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that initiated the tap gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - The number of taps (1 for single-tap, 2 for double-tap). - - - - - The storage object for persisted WorldAnchors. - - - - - (Read Only) Gets the number of persisted world anchors in this WorldAnchorStore. - - - - - Clears all persisted WorldAnchors. - - - - - Deletes a persisted WorldAnchor from the store. - - The identifier of the WorldAnchor to delete. - - Whether or not the WorldAnchor was found and deleted. - - - - - Cleans up the WorldAnchorStore and releases memory. - - - - - Gets all of the identifiers of the currently persisted WorldAnchors. - - - An array of string identifiers. - - - - - Gets all of the identifiers of the currently persisted WorldAnchors. - - A target array to receive the identifiers of the currently persisted world anchors. - - The number of identifiers stored in the target array. - - - - - Gets the WorldAnchorStore instance. - - The handler to be called when the WorldAnchorStore is loaded. - - - - The handler for when getting the WorldAnchorStore from GetAsync. - - The instance of the WorldAnchorStore once loaded. - - - - Loads a WorldAnchor from disk for given identifier and attaches it to the GameObject. If the GameObject has a WorldAnchor, that WorldAnchor will be updated. If the anchor is not found, null will be returned and the GameObject and any existing WorldAnchor attached to it will not be modified. - - The identifier of the WorldAnchor to load. - The object to attach the WorldAnchor to if found. - - The WorldAnchor loaded by the identifier or null if not found. - - - - - Saves the provided WorldAnchor with the provided identifier. If the identifier is already in use, the method will return false. - - The identifier to save the anchor with. This needs to be unique for your app. - The anchor to save. - - Whether or not the save was successful. Will return false if the id conflicts with another already saved anchor's id. - - - - - Indicates the lifecycle state of the device's spatial location system. - - - - - The device is reporting its orientation and is preparing to locate its position in the user's surroundings. - - - - - The device is reporting its orientation and position in the user's surroundings. - - - - - The device is reporting its orientation but cannot locate its position in the user's surroundings due to external factors like poor lighting conditions. - - - - - The device is reporting its orientation and has not been asked to report its position in the user's surroundings. - - - - - The device's spatial location system is not available. - - - - - This enum represents the result of a WorldAnchorTransferBatch operation. - - - - - The operation has failed because access was denied. This occurs typically because the transfer batch was not readable when deserializing or writable when serializing. - - - - - The operation has failed because it was not supported. - - - - - The operation has completed successfully. - - - - - The operation has failed in an unexpected way. - - - - - A batch of WorldAnchors which can be exported and imported between apps. - - - - - (Read Only) Gets the number of world anchors in this WorldAnchorTransferBatch. - - - - - Adds a WorldAnchor to the batch with the specified identifier. - - The identifier associated with this anchor in the batch. This must be unique per batch. - The anchor to add to the batch. - - Whether or not the anchor was added successfully. - - - - - The handler for when deserialization has completed. - - The reason the deserialization completed (success or failure reason). - The resulting transfer batch which is empty on error. - - - - Cleans up the WorldAnchorTransferBatch and releases memory. - - - - - Exports the input WorldAnchorTransferBatch into a byte array which can be passed to WorldAnchorTransferBatch.ImportAsync to restore the original WorldAnchorTransferBatch. - - The WorldAnchorTransferBatch to export into a byte buffer. - The callback when some data is available. - The callback after the last bit of data was provided via onDataAvailable with a completion reason (success or failure reason). - - - - Gets all of the identifiers currently mapped in this WorldAnchorTransferBatch. - - - The identifiers of all of the WorldAnchors in this WorldAnchorTransferBatch. - - - - - Gets all of the identifiers currently mapped in this WorldAnchorTransferBatch. If the target array is not large enough to contain all the identifiers, then only those identifiers that fit within the array will be stored and the return value will equal the size of the array. You can detect this condition by checking for a return value less than WorldAnchorTransferBatch.anchorCount. - - A target array to receive the identifiers of the currently mapped world anchors. - - The number of identifiers stored in the target array. - - - - - Imports the provided bytes into a WorldAnchorTransferBatch. - - The complete data to import. - The handler when the data import is complete. - The offset in the array from which to start reading. - The length of the data in the array. - - - - Imports the provided bytes into a WorldAnchorTransferBatch. - - The complete data to import. - The handler when the data import is complete. - The offset in the array from which to start reading. - The length of the data in the array. - - - - Locks the provided GameObject to the world by loading and applying the WorldAnchor from the TransferBatch for the provided id. - - The identifier for the WorldAnchor to load and apply to the GameObject. - The GameObject to apply the WorldAnchor to. If the GameObject already has a WorldAnchor, it will be updated. - - The loaded WorldAnchor or null if the id does not map to a WorldAnchor. - - - - - The handler for when serialization is completed. - - Why the serialization completed (success or failure reason). - - - - The handler for when some data is available from serialization. - - A set of bytes from the exported transfer batch. - - - - Enumeration of the different types of SurfaceChange events. - - - - - Surface was Added. - - - - - Surface was removed. - - - - - Surface was updated. - - - - - SurfaceData is a container struct used for requesting baked spatial mapping data and receiving that data once baked. - - - - - Set this field to true when requesting data to bake collider data. This field will be set to true when receiving baked data if it was requested. Setting this field to true requires that a valid outputCollider is also specified. - - - - - This is the ID for the surface to be baked or the surface that was baked and being returned to the user. - - - - - This WorldAnchor is used to lock the surface into place relative to real world objects. It will be filled in when calling RequestMeshAsync to generate data for a surface and returned with the SurfaceDataReadyDelegate. - - - - - This MeshCollider will receive the baked physics mesh prepared by the system when requesting baked surface data through RequestMeshAsync. The MeshCollider is returned in the SurfaceDataReadyDelegate for those users requiring advanced workflows. - - - - - This MeshFilter will receive the baked mesh prepared by the system when requesting baked surface data. The MeshFilter is returned in the SurfaceDataReadyDelegate for those users requiring advanced workflows. - - - - - This value controls the basic resolution of baked mesh data and is returned with the SurfaceDataReadyDelegate. The device will deliver up to this number of triangles per cubic meter. - - - - - Constructor for conveniently filling out a SurfaceData struct. - - ID for the surface in question. - MeshFilter to write Mesh data to. - WorldAnchor receiving the anchor point for the surface. - MeshCollider to write baked physics data to (optional). - Requested resolution for the computed Mesh. Actual resolution may be less than this value. - Set to true if collider baking is/has been requested. - - - - SurfaceId is a structure wrapping the unique ID used to denote Surfaces. SurfaceIds are provided through the onSurfaceChanged callback in Update and returned after a RequestMeshAsync call has completed. SurfaceIds are guaranteed to be unique though Surfaces are sometimes replaced with a new Surface in the same location with a different ID. - - - - - The actual integer ID referring to a single surface. - - - - - SurfaceObserver is the main API portal for spatial mapping functionality in Unity. - - - - - Basic constructor for SurfaceObserver. - - - - - Call Dispose when the SurfaceObserver is no longer needed. This will ensure that the object is cleaned up appropriately but will not affect any Meshes, components, or objects returned by RequestMeshAsync. - - - - - Call RequestMeshAsync to start the process of baking mesh data for the specified surface. This data may take several frames to create. Baked data will be delivered through the specified SurfaceDataReadyDelegate. This method will throw ArgumentNullExcpetion and ArgumentException if parameters specified in the dataRequest are invalid. - - Bundle of request data used to bake the specified surface. - Callback called when the baking of this surface is complete. - - Returns false if the request has failed, typically due to specifying a bad surface ID. - - - - - This method sets the observation volume as an axis aligned box at the requested location. Successive calls can be used to reshape the observation volume and/or to move it in the Scene as needed. Extents are the distance from the center of the box to its edges along each axis. - - The origin of the requested observation volume. - The extents in meters of the requested observation volume. - - - - This method sets the observation volume as a frustum at the requested location. Successive calls can be used to reshape the observation volume and/or to move it in the Scene as needed. - - Planes defining the frustum as returned from GeometryUtility.CalculateFrustumPlanes. - - - - This method sets the observation volume as an oriented box at the requested location. Successive calls can be used to reshape the observation volume and/or to move it in the Scene as needed. Extents are the distance from the center of the box to its edges along each axis. - - The origin of the requested observation volume. - The extents in meters of the requested observation volume. - The orientation of the requested observation volume. - - - - This method sets the observation volume as a sphere at the requested location. Successive calls can be used to reshape the observation volume and/or to move it in the Scene as needed. - - The origin of the requested observation volume. - The radius in meters of the requested observation volume. - - - - The SurfaceChanged delegate handles SurfaceChanged events as generated by calling Update on a SurfaceObserver. Applications can use the bounds, changeType, and updateTime to selectively generate mesh data for the set of known surfaces. - - The ID of the surface that has changed. - The type of change this event represents (Added, Updated, Removed). - The bounds of the surface as reported by the device. - The update time of the surface as reported by the device. - - - - The SurfaceDataReadyDelegate handles events generated when the engine has completed generating a mesh. Mesh generation is requested through GetMeshAsync and may take many frames to complete. - - Struct containing output data. - Set to true if output has been written and false otherwise. - Elapsed seconds between mesh bake request and propagation of this event. - - - - Update generates SurfaceChanged events which are propagated through the specified callback. If no callback is specified, the system will throw an ArgumentNullException. Generated callbacks are synchronous with this call. Scenes containing multiple SurfaceObservers should consider using different callbacks so that events can be properly routed. - - Callback called when SurfaceChanged events are detected. - - - - When calling PhotoCapture.StartPhotoModeAsync, you must pass in a CameraParameters object that contains the various settings that the web camera will use. - - - - - A valid height resolution for use with the web camera. - - - - - A valid width resolution for use with the web camera. - - - - - The framerate at which to capture video. This is only for use with VideoCapture. - - - - - The opacity of captured holograms. - - - - - The pixel format used to capture and record your image data. - - - - - The encoded image or video pixel format to use for PhotoCapture and VideoCapture. - - - - - 8 bits per channel (blue, green, red, and alpha). - - - - - Encode photo in JPEG format. - - - - - 8-bit Y plane followed by an interleaved U/V plane with 2x2 subsampling. - - - - - Portable Network Graphics Format. - - - - - Captures a photo from the web camera and stores it in memory or on disk. - - - - - Contains the result of the capture request. - - - - - Specifies that the desired operation was successful. - - - - - Specifies that an unknown error occurred. - - - - - Asynchronously creates an instance of a PhotoCapture object that can be used to capture photos. - - Will allow you to capture holograms in your photo. - This callback will be invoked when the PhotoCapture instance is created and ready to be used. - - - - Dispose must be called to shutdown the PhotoCapture instance. - - - - - Provides a COM pointer to the native IVideoDeviceController. - - - A native COM pointer to the IVideoDeviceController. - - - - - Called when a photo has been saved to the file system. - - Indicates whether or not the photo was successfully saved to the file system. - - - - Called when a photo has been captured to memory. - - Indicates whether or not the photo was successfully captured to memory. - Contains the target texture. If available, the spatial information will be accessible through this structure as well. - - - - Called when a PhotoCapture resource has been created. - - The PhotoCapture instance. - - - - Called when photo mode has been started. - - Indicates whether or not photo mode was successfully activated. - - - - Called when photo mode has been stopped. - - Indicates whether or not photo mode was successfully deactivated. - - - - A data container that contains the result information of a photo capture operation. - - - - - The specific HResult value. - - - - - A generic result that indicates whether or not the PhotoCapture operation succeeded. - - - - - Indicates whether or not the operation was successful. - - - - - Asynchronously starts photo mode. - - The various settings that should be applied to the web camera. - This callback will be invoked once photo mode has been activated. - - - - Asynchronously stops photo mode. - - This callback will be invoked once photo mode has been deactivated. - - - - A list of all the supported device resolutions for taking pictures. - - - - - Asynchronously captures a photo from the web camera and saves it to disk. - - The location where the photo should be saved. The filename must end with a png or jpg file extension. - The encoding format that should be used. - Invoked once the photo has been saved to disk. - Invoked once the photo has been copied to the target texture. - - - - Asynchronously captures a photo from the web camera and saves it to disk. - - The location where the photo should be saved. The filename must end with a png or jpg file extension. - The encoding format that should be used. - Invoked once the photo has been saved to disk. - Invoked once the photo has been copied to the target texture. - - - - Image Encoding Format. - - - - - JPEG Encoding. - - - - - PNG Encoding. - - - - - Contains information captured from the web camera. - - - - - The length of the raw IMFMediaBuffer which contains the image captured. - - - - - Specifies whether or not spatial data was captured. - - - - - The raw image data pixel format. - - - - - Will copy the raw IMFMediaBuffer image data into a byte list. - - The destination byte list to which the raw captured image data will be copied to. - - - - Disposes the PhotoCaptureFrame and any resources it uses. - - - - - Provides a COM pointer to the native IMFMediaBuffer that contains the image data. - - - A native COM pointer to the IMFMediaBuffer which contains the image data. - - - - - This method will return the camera to world matrix at the time the photo was captured if location data if available. - - A matrix to be populated by the Camera to world Matrix. - - True if a valid matrix is returned or false otherwise. This will be false if the frame has no location data. - - - - - This method will return the projection matrix at the time the photo was captured if location data if available. - - The near clip plane distance. - The far clip plane distance. - A matrix to be populated by the Projection Matrix. - - True if a valid matrix is returned or false otherwise. This will be false if the frame has no location data. - - - - - This method will return the projection matrix at the time the photo was captured if location data if available. - - The near clip plane distance. - The far clip plane distance. - A matrix to be populated by the Projection Matrix. - - True if a valid matrix is returned or false otherwise. This will be false if the frame has no location data. - - - - - This method will copy the captured image data into a user supplied texture for use in Unity. - - The target texture that the captured image data will be copied to. - - - - Records a video from the web camera directly to disk. - - - - - Specifies what audio sources should be recorded while recording the video. - - - - - Include both the application audio as well as the mic audio in the video recording. - - - - - Only include the application audio in the video recording. - - - - - Only include the mic audio in the video recording. - - - - - Do not include any audio in the video recording. - - - - - Contains the result of the capture request. - - - - - Specifies that the desired operation was successful. - - - - - Specifies that an unknown error occurred. - - - - - Asynchronously creates an instance of a VideoCapture object that can be used to record videos from the web camera to disk. - - Will allow you to capture holograms in your video. - This callback will be invoked when the VideoCapture instance is created and ready to be used. - - - - Dispose must be called to shutdown the PhotoCapture instance. - - - - - Returns the supported frame rates at which a video can be recorded given a resolution. - - A recording resolution. - - The frame rates at which the video can be recorded. - - - - - Provides a COM pointer to the native IVideoDeviceController. - - - A native COM pointer to the IVideoDeviceController. - - - - - Indicates whether or not the VideoCapture instance is currently recording video. - - - - - Called when the web camera begins recording the video. - - Indicates whether or not video recording started successfully. - - - - Called when the video recording has been saved to the file system. - - Indicates whether or not video recording was saved successfully to the file system. - - - - Called when a VideoCapture resource has been created. - - The VideoCapture instance. - - - - Called when video mode has been started. - - Indicates whether or not video mode was successfully activated. - - - - Called when video mode has been stopped. - - Indicates whether or not video mode was successfully deactivated. - - - - Asynchronously records a video from the web camera to the file system. - - The name of the video to be recorded to. - Invoked as soon as the video recording begins. - - - - Asynchronously starts video mode. - - The various settings that should be applied to the web camera. - Indicates how audio should be recorded. - This callback will be invoked once video mode has been activated. - - - - Asynchronously stops recording a video from the web camera to the file system. - - Invoked as soon as video recording has finished. - - - - Asynchronously stops video mode. - - This callback will be invoked once video mode has been deactivated. - - - - A list of all the supported device resolutions for recording videos. - - - - - A data container that contains the result information of a video recording operation. - - - - - The specific HResult value. - - - - - A generic result that indicates whether or not the VideoCapture operation succeeded. - - - - - Indicates whether or not the operation was successful. - - - - - Contains general information about the current state of the web camera. - - - - - Specifies what mode the Web Camera is currently in. - - - - - Describes the active mode of the Web Camera resource. - - - - - Resource is not in use. - - - - - Resource is in Photo Mode. - - - - - Resource is in Video Mode. - - - - - The WorldAnchor component allows a GameObject's position to be locked in physical space. - - - - - Returns true if this WorldAnchor is located (read only). A return of false typically indicates a loss of tracking. - - - - - Retrieve a native pointer to the <a href="https:msdn.microsoft.comen-uslibrarywindowsappswindows.perception.spatial.spatialanchor.aspx">Windows.Perception.Spatial.SpatialAnchor<a> COM object. -This function calls <a href=" https:msdn.microsoft.comen-uslibrarywindowsdesktopms691379.aspx">IUnknown::AddRef<a> on the pointer before returning it. The pointer must be released by calling <a href=" https:msdn.microsoft.comen-uslibrarywindowsdesktopms682317.aspx">IUnknown::Release<a>. - - - The native pointer to the <a href=" https:msdn.microsoft.comen-uslibrarywindowsappswindows.perception.spatial.spatialanchor.aspx">Windows.Perception.Spatial.SpatialAnchor<a> COM object. - - - - - OnTrackingChanged notifies listeners when this object's tracking state changes. - - Event that fires when this object's tracking state changes. - - - - Event that is fired when this object's tracking state changes. - - Set to true if the object is locatable. - The WorldAnchor reporting the tracking state change. - - - - - Assigns the <a href="https:msdn.microsoft.comen-uslibrarywindowsappswindows.perception.spatial.spatialanchor.aspx">Windows.Perception.Spatial.SpatialAnchor<a> COM pointer maintained by this WorldAnchor. - - A live <a href="https:msdn.microsoft.comen-uslibrarywindowsappswindows.perception.spatial.spatialanchor.aspx">Windows.Perception.Spatial.SpatialAnchor<a> COM pointer. - - - - This class represents the state of the real world tracking system. - - - - - The current state of the world tracking systems. - - - - - Return the native pointer to Windows::Perception::Spatial::ISpatialCoordinateSystem which was retrieved from an Windows::Perception::Spatial::ISpatialStationaryFrameOfReference object underlying the Unity World Origin. - - - Pointer to Windows::Perception::Spatial::ISpatialCoordinateSystem. - - - - - Event fired when the world tracking systems state has changed. - - - - - - Callback on when the world tracking systems state has changed. - - The previous state of the world tracking systems. - The new state of the world tracking systems. - - - - Contains all functionality related to a XR device. - - - - - Subscribe a delegate to this event to get notified when an XRDevice is successfully loaded. - - - - - - The name of the family of the loaded XR device. - - - - - Zooms the XR projection. - - - - - Successfully detected a XR device in working order. - - - - - Specific model of loaded XR device. - - - - - Refresh rate of the display in Hertz. - - - - - Returns the devices TrackingOriginType. - - - The TrackingOriginType that the device is currently using. It will return the Unknown TrackingOriginType on failure. - - - - - Indicates whether the user is present and interacting with the device. - - - - - Sets whether the camera passed in the first parameter is controlled implicitly by the XR Device - - The camera that we wish to change behavior on - True if the camera's transform is set externally. False if the camera is to be driven implicitly by XRDevice, - - Nothing. - - - - - This method returns an IntPtr representing the native pointer to the XR device if one is available, otherwise the value will be IntPtr.Zero. - - - The native pointer to the XR device. - - - - - Returns the device's current TrackingSpaceType. This value determines how the camera is positioned relative to its starting position. For more, see the section "Understanding the camera" in. - - - The device's current TrackingSpaceType. - - - - - Sets the device's current TrackingSpaceType. Returns true on success. Returns false if the given TrackingSpaceType is not supported or the device fails to switch. - - The TrackingSpaceType the device should switch to. - - - True on success. False if the given TrackingSpaceType is not supported or the device fails to switch. - - - - - Recreates the XR platform's eye texture swap chain with the appropriate anti-aliasing sample count. The reallocation of the eye texture will only occur if the MSAA quality setting's sample count is different from the sample count of the current eye texture. Reallocations of the eye textures will happen at the beginning of the next frame. This is an expensive operation and should only be used when necessary. - - - Nothing. - - - - - Enumeration of XR nodes which can be updated by XR input or sent haptic data. - - - - - Node representing a point between the left and right eyes. - - - - - Represents a tracked game Controller not associated with a specific hand. - - - - - Represents a physical device that provides tracking data for objects to which it is attached. - - - - - Node representing the user's head. - - - - - Node representing the left eye. - - - - - Node representing the left hand. - - - - - Node representing the right eye. - - - - - Node representing the right hand. - - - - - Represents a stationary physical device that can be used as a point of reference in the tracked area. - - - - - Sets the vector representing the current acceleration of the tracked node. - - - - - Sets the vector representing the current angular acceleration of the tracked node. - - - - - Sets the vector representing the current angular velocity of the tracked node. - - - - - The type of the tracked node as specified in XR.XRNode. - - - - - Sets the vector representing the current position of the tracked node. - - - - - Sets the quaternion representing the current rotation of the tracked node. - - - - - - Set to true if the node is presently being tracked by the underlying XR system, -and false if the node is not presently being tracked by the underlying XR system. - - - - - The unique identifier of the tracked node. - - - - - Sets the vector representing the current velocity of the tracked node. - - - - - Attempt to retrieve a vector representing the current acceleration of the tracked node. - - - - True if the acceleration was set in the output parameter. False if the acceleration is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Attempt to retrieve a Vector3 representing the current angular acceleration of the tracked node. - - - - True if the angular acceleration was set in the output parameter. False if the angular acceleration is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Attempt to retrieve a Vector3 representing the current angular velocity of the tracked node. - - - - True if the angular velocity was set in the output parameter. False if the angular velocity is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Attempt to retrieve a vector representing the current position of the tracked node. - - - - True if the position was set in the output parameter. False if the position is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Attempt to retrieve a quaternion representing the current rotation of the tracked node. - - - - True if the rotation was set in the output parameter. False if the rotation is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Attempt to retrieve a vector representing the current velocity of the tracked node. - - - - True if the velocity was set in the output parameter. False if the velocity is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Global XR related settings. - - - - - Fetch the device eye texture dimension from the active stereo device. - - - - - Globally enables or disables XR for the application. - - - - - Fetch the eye texture RenderTextureDescriptor from the active stereo device. - - - - - The current height of an eye texture for the loaded device. - - - - - Controls the actual size of eye textures as a multiplier of the device's default resolution. - - - - - The current width of an eye texture for the loaded device. - - - - - Sets the render mode for the XR device. The render mode controls how the view of the XR device renders in the Game view and in the main window on a host PC. - - - - - Read-only value that can be used to determine if the XR device is active. - - - - - Type of XR device that is currently loaded. - - - - - A scale applied to the standard occulsion mask for each platform. - - - - - This field has been deprecated. Use XRSettings.eyeTextureResolutionScale instead. - - - - - Controls how much of the allocated eye texture should be used for rendering. - - - - - This property has been deprecated. Use XRSettings.gameViewRenderMode instead. - - - - - The stereo rendering mode that is currently in use. - - - - - Returns a list of supported XR devices that were included at build time. - - - - - Specifies whether or not the occlusion mesh should be used when rendering. Enabled by default. - - - - - Loads the requested device at the beginning of the next frame. - - Name of the device from XRSettings.supportedDevices. - Prioritized list of device names from XRSettings.supportedDevices. - - - - Loads the requested device at the beginning of the next frame. - - Name of the device from XRSettings.supportedDevices. - Prioritized list of device names from XRSettings.supportedDevices. - - - - Enum type signifying the different stereo rendering modes available. - - - - - This is the reference stereo rendering path for VR. - - - - - This is a faster rendering path for VR than XRSettings.StereoRenderingMode.MultiPass. - - - - - This is an optimized version of the XRSettings.StereoRenderingMode.SinglePass mode. - - - - - This is a OpenGL optimized version of the XRSettings.StereoRenderingMode.SinglePassInstanced mode. - - - - - Timing and other statistics from the XR subsystem. - - - - - Total GPU time utilized last frame as measured by the XR subsystem. - - - - - Retrieves the number of dropped frames reported by the XR SDK. - - Outputs the number of frames dropped since the last update. - - True if the dropped frame count is available, false otherwise. - - - - - Retrieves the number of times the current frame has been drawn to the device as reported by the XR SDK. - - Outputs the number of times the current frame has been presented. - - True if the frame present count is available, false otherwise. - - - - - Retrieves the time spent by the GPU last frame, in seconds, as reported by the XR SDK. - - Outputs the time spent by the GPU last frame. - - True if the GPU time spent last frame is available, false otherwise. - - - - - Base class for all yield instructions. - - - - diff --git a/packages/Unity3D.UnityEngine.2018.3.5.1/.signature.p7s b/packages/Unity3D.UnityEngine.2018.3.5.1/.signature.p7s deleted file mode 100644 index a322b0a..0000000 Binary files a/packages/Unity3D.UnityEngine.2018.3.5.1/.signature.p7s and /dev/null differ diff --git a/packages/Unity3D.UnityEngine.2018.3.5.1/lib/UnityEngine.dll b/packages/Unity3D.UnityEngine.2018.3.5.1/lib/UnityEngine.dll deleted file mode 100644 index 30ef1cb..0000000 Binary files a/packages/Unity3D.UnityEngine.2018.3.5.1/lib/UnityEngine.dll and /dev/null differ diff --git a/packages/Unity3D.UnityEngine.2018.3.5.1/lib/UnityEngine.xml b/packages/Unity3D.UnityEngine.2018.3.5.1/lib/UnityEngine.xml deleted file mode 100644 index d2e6413..0000000 --- a/packages/Unity3D.UnityEngine.2018.3.5.1/lib/UnityEngine.xml +++ /dev/null @@ -1,88008 +0,0 @@ - - - - - UnityEngine - - - - Structure describing acceleration status of the device. - - - - - Value of acceleration. - - - - - Amount of time passed since last accelerometer measurement. - - - - - A class containing methods to assist with accessibility for users with different vision capabilities. - - - - - Gets a palette of colors that should be distinguishable for normal vision, deuteranopia, protanopia, and tritanopia. - - An array of colors to populate with a palette. - Minimum allowable perceived luminance from 0 to 1. A value of 0.2 or greater is recommended for dark backgrounds. - Maximum allowable perceived luminance from 0 to 1. A value of 0.8 or less is recommended for light backgrounds. - - The number of unambiguous colors in the palette. - - - - - The AddComponentMenu attribute allows you to place a script anywhere in the "Component" menu, instead of just the "Component->Scripts" menu. - - - - - The order of the component in the component menu (lower is higher to the top). - - - - - Add an item in the Component menu. - - The path to the component. - Where in the component menu to add the new item. - - - - Add an item in the Component menu. - - The path to the component. - Where in the component menu to add the new item. - - - - Enum mask of possible shader channel properties that can also be included when the Canvas mesh is created. - - - - - No additional shader parameters are needed. - - - - - Include the normals on the mesh vertices. - - - - - Include the Tangent on the mesh vertices. - - - - - Include UV1 on the mesh vertices. - - - - - Include UV2 on the mesh vertices. - - - - - Include UV3 on the mesh vertices. - - - - - Singleton class to access the baked NavMesh. - - - - - Describes how far in the future the agents predict collisions for avoidance. - - - - - Set a function to be called before the NavMesh is updated during the frame update execution. - - - - - The maximum amount of nodes processed each frame in the asynchronous pathfinding process. - - - - - Adds a link to the NavMesh. The link is described by the NavMeshLinkData struct. - - Describing the properties of the link. - - Representing the added link. - - - - - Adds a link to the NavMesh. The link is described by the NavMeshLinkData struct. - - Describing the properties of the link. - Translate the link to this position. - Rotate the link to this orientation. - - Representing the added link. - - - - - Adds the specified NavMeshData to the game. - - Contains the data for the navmesh. - - Representing the added navmesh. - - - - - Adds the specified NavMeshData to the game. - - Contains the data for the navmesh. - Translate the navmesh to this position. - Rotate the navmesh to this orientation. - - Representing the added navmesh. - - - - - Area mask constant that includes all NavMesh areas. - - - - - Calculate a path between two points and store the resulting path. - - The initial position of the path requested. - The final position of the path requested. - A bitfield mask specifying which NavMesh areas can be passed when calculating a path. - The resulting path. - - True if a either a complete or partial path is found and false otherwise. - - - - - Calculates a path between two positions mapped to the NavMesh, subject to the constraints and costs defined by the filter argument. - - The initial position of the path requested. - The final position of the path requested. - A filter specifying the cost of NavMesh areas that can be passed when calculating a path. - The resulting path. - - True if a either a complete or partial path is found and false otherwise. - - - - - Calculates triangulation of the current navmesh. - - - - - Creates and returns a new entry of NavMesh build settings available for runtime NavMesh building. - - - The created settings. - - - - - Locate the closest NavMesh edge from a point on the NavMesh. - - The origin of the distance query. - Holds the properties of the resulting location. - A bitfield mask specifying which NavMesh areas can be passed when finding the nearest edge. - - True if a nearest edge is found. - - - - - Locate the closest NavMesh edge from a point on the NavMesh, subject to the constraints of the filter argument. - - The origin of the distance query. - Holds the properties of the resulting location. - A filter specifying which NavMesh areas can be passed when finding the nearest edge. - - True if a nearest edge is found. - - - - - Gets the cost for path finding over geometry of the area type. - - Index of the area to get. - - - - Returns the area index for a named NavMesh area type. - - Name of the area to look up. - - Index if the specified are, or -1 if no area found. - - - - - Gets the cost for traversing over geometry of the layer type on all agents. - - - - - - Returns the layer index for a named layer. - - - - - - Returns an existing entry of NavMesh build settings. - - The ID to look for. - - The settings found. - - - - - Returns an existing entry of NavMesh build settings by its ordered index. - - The index to retrieve from. - - The found settings. - - - - - Returns the number of registered NavMesh build settings. - - - The number of registered entries. - - - - - Returns the name associated with the NavMesh build settings matching the provided agent type ID. - - The ID to look for. - - The name associated with the ID found. - - - - - A delegate which can be used to register callback methods to be invoked before the NavMesh system updates. - - - - - Trace a line between two points on the NavMesh. - - The origin of the ray. - The end of the ray. - Holds the properties of the ray cast resulting location. - A bitfield mask specifying which NavMesh areas can be passed when tracing the ray. - - True if the ray is terminated before reaching target position. Otherwise returns false. - - - - - Traces a line between two positions on the NavMesh, subject to the constraints defined by the filter argument. - - The origin of the ray. - The end of the ray. - Holds the properties of the ray cast resulting location. - A filter specifying which NavMesh areas can be passed when tracing the ray. - - True if the ray is terminated before reaching target position. Otherwise returns false. - - - - - Removes all NavMesh surfaces and links from the game. - - - - - Removes a link from the NavMesh. - - The instance of a link to remove. - - - - Removes the specified NavMeshDataInstance from the game, making it unavailable for agents and queries. - - The instance of a NavMesh to remove. - - - - Removes the build settings matching the agent type ID. - - The ID of the entry to remove. - - - - Finds the closest point on NavMesh within specified range. - - The origin of the sample query. - Holds the properties of the resulting location. - Sample within this distance from sourcePosition. - A mask specifying which NavMesh areas are allowed when finding the nearest point. - - True if a nearest point is found. - - - - - Samples the position closest to sourcePosition - on any NavMesh built for the agent type specified by the filter. - - The origin of the sample query. - Holds the properties of the resulting location. - Sample within this distance from sourcePosition. - A filter specifying which NavMesh areas are allowed when finding the nearest point. - - True if a nearest point is found. - - - - - Sets the cost for finding path over geometry of the area type on all agents. - - Index of the area to set. - New cost. - - - - Sets the cost for traversing over geometry of the layer type on all agents. - - - - - - - Navigation mesh agent. - - - - - The maximum acceleration of an agent as it follows a path, given in units / sec^2. - - - - - The type ID for the agent. - - - - - Maximum turning speed in (deg/s) while following a path. - - - - - Specifies which NavMesh areas are passable. Changing areaMask will make the path stale (see isPathStale). - - - - - Should the agent brake automatically to avoid overshooting the destination point? - - - - - Should the agent attempt to acquire a new path if the existing path becomes invalid? - - - - - Should the agent move across OffMeshLinks automatically? - - - - - The avoidance priority level. - - - - - The relative vertical displacement of the owning GameObject. - - - - - The current OffMeshLinkData. - - - - - The desired velocity of the agent including any potential contribution from avoidance. (Read Only) - - - - - Gets or attempts to set the destination of the agent in world-space units. - - - - - Does the agent currently have a path? (Read Only) - - - - - The height of the agent for purposes of passing under obstacles, etc. - - - - - Is the agent currently bound to the navmesh? (Read Only) - - - - - Is the agent currently positioned on an OffMeshLink? (Read Only) - - - - - Is the current path stale. (Read Only) - - - - - This property holds the stop or resume condition of the NavMesh agent. - - - - - Returns the owning object of the NavMesh the agent is currently placed on (Read Only). - - - - - The next OffMeshLinkData on the current path. - - - - - Gets or sets the simulation position of the navmesh agent. - - - - - The level of quality of avoidance. - - - - - Property to get and set the current path. - - - - - Is a path in the process of being computed but not yet ready? (Read Only) - - - - - The status of the current path (complete, partial or invalid). - - - - - The avoidance radius for the agent. - - - - - The distance between the agent's position and the destination on the current path. (Read Only) - - - - - Maximum movement speed when following a path. - - - - - Get the current steering target along the path. (Read Only) - - - - - Stop within this distance from the target position. - - - - - Gets or sets whether the transform position is synchronized with the simulated agent position. The default value is true. - - - - - Should the agent update the transform orientation? - - - - - Allows you to specify whether the agent should be aligned to the up-axis of the NavMesh or link that it is placed on. - - - - - Access the current velocity of the NavMeshAgent component, or set a velocity to control the agent manually. - - - - - Specifies which NavMesh layers are passable (bitfield). Changing walkableMask will make the path stale (see isPathStale). - - - - - Enables or disables the current off-mesh link. - - Is the link activated? - - - - Calculate a path to a specified point and store the resulting path. - - The final position of the path requested. - The resulting path. - - True if a path is found. - - - - - Completes the movement on the current OffMeshLink. - - - - - Locate the closest NavMesh edge. - - Holds the properties of the resulting location. - - True if a nearest edge is found. - - - - - Gets the cost for path calculation when crossing area of a particular type. - - Area Index. - - Current cost for specified area index. - - - - - Gets the cost for crossing ground of a particular type. - - Layer index. - - Current cost of specified layer. - - - - - Apply relative movement to current position. - - The relative movement vector. - - - - Trace a straight path towards a target postion in the NavMesh without moving the agent. - - The desired end position of movement. - Properties of the obstacle detected by the ray (if any). - - True if there is an obstacle between the agent and the target position, otherwise false. - - - - - Clears the current path. - - - - - Resumes the movement along the current path after a pause. - - - - - Sample a position along the current path. - - A bitfield mask specifying which NavMesh areas can be passed when tracing the path. - Terminate scanning the path at this distance. - Holds the properties of the resulting location. - - True if terminated before reaching the position at maxDistance, false otherwise. - - - - - Sets the cost for traversing over areas of the area type. - - Area cost. - New cost for the specified area index. - - - - Sets or updates the destination thus triggering the calculation for a new path. - - The target point to navigate to. - - True if the destination was requested successfully, otherwise false. - - - - - Sets the cost for traversing over geometry of the layer type. - - Layer index. - New cost for the specified layer. - - - - Assign a new path to this agent. - - New path to follow. - - True if the path is succesfully assigned. - - - - - Stop movement of this agent along its current path. - - - - - Warps agent to the provided position. - - New position to warp the agent to. - - True if agent is successfully warped, otherwise false. - - - - - Bitmask used for operating with debug data from the NavMesh build process. - - - - - All debug data from the NavMesh build process is taken into consideration. - - - - - The triangles of all the geometry that is used as a base for computing the new NavMesh. - - - - - No debug data from the NavMesh build process is taken into consideration. - - - - - Meshes of convex polygons constructed within the unified contours of adjacent regions. - - - - - The triangulated meshes with height details that better approximate the source geometry. - - - - - The contours that follow precisely the edges of each surface region. - - - - - The segmentation of the traversable surfaces into smaller areas necessary for producing simple polygons. - - - - - Contours bounding each of the surface regions, described through fewer vertices and straighter edges compared to RawContours. - - - - - The voxels produced by rasterizing the source geometry into walkable and unwalkable areas. - - - - - Specify which of the temporary data generated while building the NavMesh should be retained in memory after the process has completed. - - - - - Specify which types of debug data to collect when building the NavMesh. - - - - - Navigation mesh builder interface. - - - - - Builds a NavMesh data object from the provided input sources. (UnityEngine) - - Settings for the bake process, see NavMeshBuildSettings. - List of input geometry used for baking, they describe the surfaces to walk on or obstacles to avoid. - Bounding box relative to position and rotation which describes the volume where the NavMesh should be built. Empty bounds is treated as no bounds, i.e. the NavMesh will cover all the inputs. - Center of the NavMeshData. This specifies the origin for the NavMesh tiles (See Also: NavMeshBuildSettings.tileSize). - Orientation of the NavMeshData, you can use this to generate NavMesh with an arbitrary up-vector – e.g. for walkable vertical surfaces. - - Returns a newly built NavMeshData, or null if the NavMeshData was empty or an error occurred. -The newly built NavMeshData, or null if the NavMeshData was empty or an error occurred. - - - - - Cancel Navmesh construction. (UnityEditor) See Also: NavMeshBuilder.BuildNavMeshAsync - - - - - Cancels an asynchronous update of the specified NavMesh data. (UnityEngine) See Also: NavMeshBuilder.UpdateNavMeshDataAsync. - - The data associated with asynchronous updating. - - - - Collects renderers or physics colliders, and terrains within a volume. (UnityEngine) - - The queried objects must overlap these bounds to be included in the results. - Specifies which layers are included in the query. - Which type of geometry to collect - e.g. physics colliders. - Area type to assign to results, unless modified by NavMeshMarkup. - List of markups which allows finer control over how objects are collected. - List where results are stored, the list is cleared at the beginning of the call. - - - - Collects renderers or physics colliders, and terrains within a transform hierarchy. (UnityEngine) - - If not null, consider only root and its children in the query; if null, includes everything loaded. - Specifies which layers are included in the query. - Which type of geometry to collect - e.g. physics colliders. - Area type to assign to results, unless modified by NavMeshMarkup. - List of markups which allows finer control over how objects are collected. - List where results are stored, the list is cleared at the beginning of the call. - - - - Incrementally updates the NavMeshData based on the sources. (UnityEngine) - - The NavMeshData to update. - The build settings which is used to update the NavMeshData. The build settings is also hashed along with the data, so changing settings will cause a full rebuild. - List of input geometry used for baking, they describe the surfaces to walk on or obstacles to avoid. - Bounding box relative to position and rotation which describes the volume where the NavMesh should be built. Empty bounds is treated as no-bounds, that is, the NavMesh will cover all the inputs. - - Returns true if the update was successful. - - - - - Asynchronously and incrementally updates the NavMeshData based on the sources. (UnityEngine) - - The NavMeshData to update. - The build settings which is used to update the NavMeshData. The build settings is also hashed along with the data, so changing settings will likely to cause full rebuild. - List of input geometry used for baking, they describe the surfaces to walk on or obstacles to avoid. - Bounding box relative to position and rotation which describes to volume where the NavMesh should be built. Empty bounds is treated as no-bounds, that is, the NavMesh will cover all the inputs. - - Can be used to check the progress of the update. - - - - - The NavMesh build markup allows you to control how certain objects are treated during the NavMesh build process, specifically when collecting sources for building. - - - - - The area type to use when override area is enabled. - - - - - Use this to specify whether the GameObject and its children should be ignored. - - - - - Use this to specify whether the area type of the GameObject and its children should be overridden by the area type specified in this struct. - - - - - Use this to specify which GameObject (including the GameObject’s children) the markup should be applied to. - - - - - The NavMeshBuildSettings struct allows you to specify a collection of settings which describe the dimensions and limitations of a particular agent type. - - - - - The maximum vertical step size an agent can take. - - - - - The height of the agent for baking in world units. - - - - - The radius of the agent for baking in world units. - - - - - The maximum slope angle which is walkable (angle in degrees). - - - - - The agent type ID the NavMesh will be baked for. - - - - - Options for collecting debug data during the build process. - - - - - The approximate minimum area of individual NavMesh regions. - - - - - Enables overriding the default tile size. See Also: tileSize. - - - - - Enables overriding the default voxel size. See Also: voxelSize. - - - - - Sets the tile size in voxel units. - - - - - Sets the voxel size in world length units. - - - - - Validates the properties of NavMeshBuildSettings. - - Describes the volume to build NavMesh for. - - The list of violated constraints. - - - - - The input to the NavMesh builder is a list of NavMesh build sources. - - - - - Describes the area type of the NavMesh surface for this object. - - - - - Points to the owning component - if available, otherwise null. - - - - - The type of the shape this source describes. See Also: NavMeshBuildSourceShape. - - - - - Describes the dimensions of the shape. - - - - - Describes the object referenced for Mesh and Terrain types of input sources. - - - - - Describes the local to world transformation matrix of the build source. That is, position and orientation and scale of the shape. - - - - - Used with NavMeshBuildSource to define the shape for building NavMesh. - - - - - Describes a box primitive for use with NavMeshBuildSource. - - - - - Describes a capsule primitive for use with NavMeshBuildSource. - - - - - Describes a Mesh source for use with NavMeshBuildSource. - - - - - Describes a ModifierBox source for use with NavMeshBuildSource. - - - - - Describes a sphere primitive for use with NavMeshBuildSource. - - - - - Describes a TerrainData source for use with NavMeshBuildSource. - - - - - Used for specifying the type of geometry to collect. Used with NavMeshBuilder.CollectSources. - - - - - Collect geometry from the 3D physics collision representation. - - - - - Collect meshes form the rendered geometry. - - - - - Contains and represents NavMesh data. - - - - - Gets or sets the world space position of the NavMesh data. - - - - - Gets or sets the orientation of the NavMesh data. - - - - - Returns the bounding volume of the input geometry used to build this NavMesh (Read Only). - - - - - Constructs a new object for representing a NavMesh for the default agent type. - - - - - Constructs a new object representing a NavMesh for the specified agent type. - - The agent type ID to create a NavMesh for. - - - - The instance is returned when adding NavMesh data. - - - - - Get or set the owning Object. - - - - - True if the NavMesh data is added to the navigation system - otherwise false (Read Only). - - - - - Removes this instance from the NavMesh system. - - - - - Result information for NavMesh queries. - - - - - Distance to the point of hit. - - - - - Flag set when hit. - - - - - Mask specifying NavMesh area at point of hit. - - - - - Normal at the point of hit. - - - - - Position of hit. - - - - - Used for runtime manipulation of links connecting polygons of the NavMesh. - - - - - Specifies which agent type this link is available for. - - - - - Area type of the link. - - - - - If true, the link can be traversed in both directions, otherwise only from start to end position. - - - - - If positive, overrides the pathfinder cost to traverse the link. - - - - - End position of the link. - - - - - Start position of the link. - - - - - If positive, the link will be rectangle aligned along the line from start to end. - - - - - An instance representing a link available for pathfinding. - - - - - Get or set the owning Object. - - - - - True if the NavMesh link is added to the navigation system - otherwise false (Read Only). - - - - - Removes this instance from the game. - - - - - An obstacle for NavMeshAgents to avoid. - - - - - Should this obstacle be carved when it is constantly moving? - - - - - Should this obstacle make a cut-out in the navmesh. - - - - - Threshold distance for updating a moving carved hole (when carving is enabled). - - - - - Time to wait until obstacle is treated as stationary (when carving and carveOnlyStationary are enabled). - - - - - The center of the obstacle, measured in the object's local space. - - - - - Height of the obstacle's cylinder shape. - - - - - Radius of the obstacle's capsule shape. - - - - - The shape of the obstacle. - - - - - The size of the obstacle, measured in the object's local space. - - - - - Velocity at which the obstacle moves around the NavMesh. - - - - - Shape of the obstacle. - - - - - Box shaped obstacle. - - - - - Capsule shaped obstacle. - - - - - A path as calculated by the navigation system. - - - - - Corner points of the path. (Read Only) - - - - - Status of the path. (Read Only) - - - - - Erase all corner points from path. - - - - - NavMeshPath constructor. - - - - - Calculate the corners for the path. - - Array to store path corners. - - The number of corners along the path - including start and end points. - - - - - Status of path. - - - - - The path terminates at the destination. - - - - - The path is invalid. - - - - - The path cannot reach the destination. - - - - - Specifies which agent type and areas to consider when searching the NavMesh. - - - - - The agent type ID, specifying which navigation meshes to consider for the query functions. - - - - - A bitmask representing the traversable area types. - - - - - Returns the area cost multiplier for the given area type for this filter. - - Index to retreive the cost for. - - The cost multiplier for the supplied area index. - - - - - Sets the pathfinding cost multiplier for this filter for a given area type. - - The area index to set the cost for. - The cost for the supplied area index. - - - - Contains data describing a triangulation of a navmesh. - - - - - NavMesh area indices for the navmesh triangulation. - - - - - Triangle indices for the navmesh triangulation. - - - - - NavMeshLayer values for the navmesh triangulation. - - - - - Vertices for the navmesh triangulation. - - - - - Level of obstacle avoidance. - - - - - Good avoidance. High performance impact. - - - - - Enable highest precision. Highest performance impact. - - - - - Enable simple avoidance. Low performance impact. - - - - - Medium avoidance. Medium performance impact. - - - - - Disable avoidance. - - - - - Link allowing movement outside the planar navigation mesh. - - - - - Is link active. - - - - - NavMesh area index for this OffMeshLink component. - - - - - Automatically update endpoints. - - - - - Can link be traversed in both directions. - - - - - Modify pathfinding cost for the link. - - - - - The transform representing link end position. - - - - - NavMeshLayer for this OffMeshLink component. - - - - - Is link occupied. (Read Only) - - - - - The transform representing link start position. - - - - - Explicitly update the link endpoints. - - - - - State of OffMeshLink. - - - - - Is link active (Read Only). - - - - - Link end world position (Read Only). - - - - - Link type specifier (Read Only). - - - - - The OffMeshLink if the link type is a manually placed Offmeshlink (Read Only). - - - - - Link start world position (Read Only). - - - - - Is link valid (Read Only). - - - - - Link type specifier. - - - - - Vertical drop. - - - - - Horizontal jump. - - - - - Manually specified type of link. - - - - - Unity Analytics provides insight into your game users e.g. DAU, MAU. - - - - - Controls whether the sending of device stats at runtime is enabled. - - - - - Controls whether the Analytics service is enabled at runtime. - - - - - Reports whether Unity is set to initialize Analytics on startup. - - - - - Controls whether to limit user tracking at runtime. - - - - - Reports whether the player has opted out of data collection. - - - - - Custom Events (optional). - - Name of custom event. Name cannot include the prefix "unity." - This is a reserved keyword. - Additional parameters sent to Unity Analytics at the time the custom event was triggered. Dictionary key cannot include the prefix "unity." - This is a reserved keyword. - - - - Custom Events (optional). - - - - - - Custom Events (optional). - - - - - - - Attempts to flush immediately all queued analytics events to the network and filesystem cache if possible (optional). - - - - - This API is used for registering a Runtime Analytics event. It is meant for internal use only and is likely to change in the future. User code should never use this API. - - Name of the event. - Hourly limit for this event name. - Maximum number of items in this event. - Vendor key name. - Optional event name prefix value. - Event version number. - - - - This API is used for registering a Runtime Analytics event. It is meant for internal use only and is likely to change in the future. User code should never use this API. - - Name of the event. - Hourly limit for this event name. - Maximum number of items in this event. - Vendor key name. - Optional event name prefix value. - Event version number. - - - - Resume Analytics initialization. - - - - - This API is used to send a Runtime Analytics event. It is meant for internal use only and is likely to change in the future. User code should never use this API. - - Name of the event. - Event version number. - Optional event name prefix value. - Additional event data. - - - - User Demographics (optional). - - Birth year of user. Must be 4-digit year format, only. - - - - User Demographics (optional). - - Gender of user can be "Female", "Male", or "Unknown". - - - - User Demographics (optional). - - User id. - - - - Tracking Monetization (optional). - - The id of the purchased item. - The price of the item. - Abbreviation of the currency used for the transaction. For example “USD” (United States Dollars). See http:en.wikipedia.orgwikiISO_4217 for a standardized list of currency abbreviations. - Receipt data (iOS) receipt ID (android) for in-app purchases to verify purchases with Apple iTunes / Google Play. Use null in the absence of receipts. - Android receipt signature. If using native Android use the INAPP_DATA_SIGNATURE string containing the signature of the purchase data that was signed with the private key of the developer. The data signature uses the RSASSA-PKCS1-v1_5 scheme. Pass in null in absence of a signature. - Set to true when using UnityIAP. - - - - Tracking Monetization (optional). - - The id of the purchased item. - The price of the item. - Abbreviation of the currency used for the transaction. For example “USD” (United States Dollars). See http:en.wikipedia.orgwikiISO_4217 for a standardized list of currency abbreviations. - Receipt data (iOS) receipt ID (android) for in-app purchases to verify purchases with Apple iTunes / Google Play. Use null in the absence of receipts. - Android receipt signature. If using native Android use the INAPP_DATA_SIGNATURE string containing the signature of the purchase data that was signed with the private key of the developer. The data signature uses the RSASSA-PKCS1-v1_5 scheme. Pass in null in absence of a signature. - Set to true when using UnityIAP. - - - - Tracking Monetization (optional). - - The id of the purchased item. - The price of the item. - Abbreviation of the currency used for the transaction. For example “USD” (United States Dollars). See http:en.wikipedia.orgwikiISO_4217 for a standardized list of currency abbreviations. - Receipt data (iOS) receipt ID (android) for in-app purchases to verify purchases with Apple iTunes / Google Play. Use null in the absence of receipts. - Android receipt signature. If using native Android use the INAPP_DATA_SIGNATURE string containing the signature of the purchase data that was signed with the private key of the developer. The data signature uses the RSASSA-PKCS1-v1_5 scheme. Pass in null in absence of a signature. - Set to true when using UnityIAP. - - - - Analytics API result. - - - - - Analytics API result: Analytics is disabled. - - - - - Analytics API result: Invalid argument value. - - - - - Analytics API result: Analytics not initialized. - - - - - Analytics API result: Success. - - - - - Analytics API result: Argument size limit. - - - - - Analytics API result: Too many parameters. - - - - - Analytics API result: Too many requests. - - - - - Analytics API result: This platform doesn't support Analytics. - - - - - Provides access to the Analytics session information for the current game instance. - - - - - The number of sessions played since the app was installed. - - - - - The time elapsed, in milliseconds, since the beginning of the current game session. - - - - - Reports whether the current session is the first session since the player installed the game or application. - - - - - A random, unique GUID identifying the current game or app session. - - - - - The current state of the session. - - - - - Dispatched when the Analytics session state changes. - - - - - - A random GUID uniquely identifying sessions played on the same instance of your game or app. - - - - - Dispatched when the Analytics session state changes. - - Current session state. - Current session id. - Length of the current session in milliseconds. - True, if the sessionId has changed; otherwise false. - - - - Session tracking states. - - - - - Session tracking has paused. - - - - - Session tracking has resumed. - - - - - Session tracking has started. - - - - - Session tracking has stopped. - - - - - User Demographics: Gender of a user. - - - - - User Demographics: Female Gender of a user. - - - - - User Demographics: Male Gender of a user. - - - - - User Demographics: Unknown Gender of a user. - - - - - Unity Performace provides insight into your game performace. - - - - - Controls whether the Performance Reporting service is enabled at runtime. - - - - - Time taken to initialize graphics in microseconds, measured from application startup. - - - - - Parent class for all joints that have anchor points. - - - - - The joint's anchor point on the object that has the joint component. - - - - - Should the connectedAnchor be calculated automatically? - - - - - The joint's anchor point on the second object (ie, the one which doesn't have the joint component). - - - - - Structure describing a permission that requires user authorization. - - - - - Used when requesting permission or checking if permission has been granted to use the camera. - - - - - Used when requesting permission or checking if permission has been granted to use the users location with coarse granularity. - - - - - Used when requesting permission or checking if permission has been granted to read from external storage such as a SD card. - - - - - Used when requesting permission or checking if permission has been granted to write to external storage such as a SD card. - - - - - Used when requesting permission or checking if permission has been granted to use the users location with high precision. - - - - - Check if the user has granted access to a device resource or information that requires authorization. - - A string representing the permission to request. For permissions which Unity has not predefined you may also manually provide the constant value obtained from the Android documentation here: https:developer.android.comguidetopicspermissionsoverview#permission-groups such as "android.permission.READ_CONTACTS". - - Whether the requested permission has been granted. - - - - - Used when requesting permission or checking if permission has been granted to use the microphone. - - - - - Request that the user grant access to a device resource or information that requires authorization. - - A string that describes the permission to request. For permissions which Unity has not predefined you may also manually provide the constant value obtained from the Android documentation here: https:developer.android.comguidetopicspermissionsoverview#permission-groups such as "android.permission.READ_CONTACTS". - - - - ActivityIndicator Style (Android Specific). - - - - - Do not show ActivityIndicator. - - - - - Large Inversed (android.R.attr.progressBarStyleLargeInverse). - - - - - Small Inversed (android.R.attr.progressBarStyleSmallInverse). - - - - - Large (android.R.attr.progressBarStyleLarge). - - - - - Small (android.R.attr.progressBarStyleSmall). - - - - - AndroidInput provides support for off-screen touch input, such as a touchpad. - - - - - Property indicating whether the system provides secondary touch input. - - - - - Property indicating the height of the secondary touchpad. - - - - - Property indicating the width of the secondary touchpad. - - - - - Number of secondary touches. Guaranteed not to change throughout the frame. (Read Only). - - - - - Returns object representing status of a specific touch on a secondary touchpad (Does not allocate temporary variables). - - - - - - AndroidJavaClass is the Unity representation of a generic instance of java.lang.Class. - - - - - Construct an AndroidJavaClass from the class name. - - Specifies the Java class name (e.g. <tt>java.lang.String</tt>). - - - - AndroidJavaObject is the Unity representation of a generic instance of java.lang.Object. - - - - - Calls a Java method on an object (non-static). - - Specifies which method to call. - An array of parameters passed to the method. - - - - Call a Java method on an object. - - Specifies which method to call. - An array of parameters passed to the method. - - - - Call a static Java method on a class. - - Specifies which method to call. - An array of parameters passed to the method. - - - - Call a static Java method on a class. - - Specifies which method to call. - An array of parameters passed to the method. - - - - Construct an AndroidJavaObject based on the name of the class. - - Specifies the Java class name (e.g. "<tt>java.lang.String<tt>" or "<tt>javalangString<tt>"). - An array of parameters passed to the constructor. - - - - IDisposable callback. - - - - - Get the value of a field in an object (non-static). - - The name of the field (e.g. int counter; would have fieldName = "counter"). - - - - Retrieves the raw <tt>jclass</tt> pointer to the Java class. - -Note: Using raw JNI functions requires advanced knowledge of the Android Java Native Interface (JNI). Please take note. - - - - - Retrieves the raw <tt>jobject</tt> pointer to the Java object. - -Note: Using raw JNI functions requires advanced knowledge of the Android Java Native Interface (JNI). Please take note. - - - - - Get the value of a static field in an object type. - - The name of the field (e.g. <i>int counter;</i> would have fieldName = "counter"). - - - - Set the value of a field in an object (non-static). - - The name of the field (e.g. int counter; would have fieldName = "counter"). - The value to assign to the field. It has to match the field type. - - - - Set the value of a static field in an object type. - - The name of the field (e.g. int counter; would have fieldName = "counter"). - The value to assign to the field. It has to match the field type. - - - - This class can be used to implement any java interface. Any java vm method invocation matching the interface on the proxy object will automatically be passed to the c# implementation. - - - - - The equivalent of the java.lang.Object equals() method. - - - - Returns true when the objects are equal and false if otherwise. - - - - - The equivalent of the java.lang.Object hashCode() method. - - - Returns the hash code of the java proxy object. - - - - - Java interface implemented by the proxy. - - - - - The equivalent of the java.lang.Object toString() method. - - - Returns C# class name + " <c# proxy java object>". - - - - - - - Java interface to be implemented by the proxy. - - - - - - Java interface to be implemented by the proxy. - - - - Called by the java vm whenever a method is invoked on the java proxy interface. You can override this to run special code on method invokation, or you can leave the implementation as is, and leave the default behavior which is to look for c# methods matching the signature of the java method. - - Name of the invoked java method. - Arguments passed from the java vm - converted into AndroidJavaObject, AndroidJavaClass or a primitive. - Arguments passed from the java vm - all objects are represented by AndroidJavaObject, int for instance is represented by a java.lang.Integer object. - - - - Called by the java vm whenever a method is invoked on the java proxy interface. You can override this to run special code on method invokation, or you can leave the implementation as is, and leave the default behavior which is to look for c# methods matching the signature of the java method. - - Name of the invoked java method. - Arguments passed from the java vm - converted into AndroidJavaObject, AndroidJavaClass or a primitive. - Arguments passed from the java vm - all objects are represented by AndroidJavaObject, int for instance is represented by a java.lang.Integer object. - - - - AndroidJavaRunnable is the Unity representation of a java.lang.Runnable object. - - - - - 'Raw' JNI interface to Android Dalvik (Java) VM from Mono (CS/JS). - -Note: Using raw JNI functions requires advanced knowledge of the Android Java Native Interface (JNI). Please take note. - - - - - Allocates a new Java object without invoking any of the constructors for the object. - - - - - - Attaches the current thread to a Java (Dalvik) VM. - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Invokes a static method on a Java object, according to the specified <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Calls an instance (nonstatic) Java method defined by <tt>methodID<tt>, optionally passing an array of arguments (<tt>args<tt>) to the method. - - - - - - - - Deletes the global reference pointed to by <tt>obj</tt>. - - - - - - Deletes the local reference pointed to by <tt>obj</tt>. - - - - - - Detaches the current thread from a Java (Dalvik) VM. - - - - - Ensures that at least a given number of local references can be created in the current thread. - - - - - - Clears any exception that is currently being thrown. - - - - - Prints an exception and a backtrace of the stack to the <tt>logcat</tt> - - - - - Determines if an exception is being thrown. - - - - - Raises a fatal error and does not expect the VM to recover. This function does not return. - - - - - - This function loads a locally-defined class. - - - - - - Convert a Java array of <tt>boolean</tt> to a managed array of System.Boolean. - - - - - - Convert a Java array of <tt>byte</tt> to a managed array of System.Byte. - - - - - - Convert a Java array of <tt>char</tt> to a managed array of System.Char. - - - - - - Convert a Java array of <tt>double</tt> to a managed array of System.Double. - - - - - - Convert a Java array of <tt>float</tt> to a managed array of System.Single. - - - - - - Convert a Java array of <tt>int</tt> to a managed array of System.Int32. - - - - - - Convert a Java array of <tt>long</tt> to a managed array of System.Int64. - - - - - - Convert a Java array of <tt>java.lang.Object</tt> to a managed array of System.IntPtr, representing Java objects. - - - - - - Converts a <tt>java.lang.reflect.Field</tt> to a field ID. - - - - - - Converts a <tt>java.lang.reflect.Method<tt> or <tt>java.lang.reflect.Constructor<tt> object to a method ID. - - - - - - Convert a Java array of <tt>short</tt> to a managed array of System.Int16. - - - - - - Returns the number of elements in the array. - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the field ID for an instance (nonstatic) field of a class. - - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the method ID for an instance (nonstatic) method of a class or interface. - - - - - - - - Returns an element of an <tt>Object</tt> array. - - - - - - - Returns the class of an object. - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns the value of one element of a primitive array. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - Returns the field ID for a static field of a class. - - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - Returns the method ID for a static method of a class. - - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of a static field of an object. - - - - - - - This function returns the value of an instance (nonstatic) field of an object. - - - - - - - Returns a managed string object representing the string in modified UTF-8 encoding. - - - - - - Returns the length in bytes of the modified UTF-8 representation of a string. - - - - - - If <tt>clazz<tt> represents any class other than the class <tt>Object<tt>, then this function returns the object that represents the superclass of the class specified by <tt>clazz</tt>. - - - - - - Returns the version of the native method interface. - - - - - Determines whether an object of <tt>clazz1<tt> can be safely cast to <tt>clazz2<tt>. - - - - - - - Tests whether an object is an instance of a class. - - - - - - - Tests whether two references refer to the same Java object. - - - - - - - Construct a new primitive array object. - - - - - - Construct a new primitive array object. - - - - - - Construct a new primitive array object. - - - - - - Construct a new primitive array object. - - - - - - Construct a new primitive array object. - - - - - - Creates a new global reference to the object referred to by the <tt>obj</tt> argument. - - - - - - Construct a new primitive array object. - - - - - - Creates a new local reference that refers to the same object as <tt>obj</tt>. - - - - - - Construct a new primitive array object. - - - - - - Constructs a new Java object. The method ID indicates which constructor method to invoke. This ID must be obtained by calling GetMethodID() with <init> as the method name and void (V) as the return type. - - - - - - - - Constructs a new array holding objects in class <tt>clazz<tt>. All elements are initially set to <tt>obj<tt>. - - - - - - - - Construct a new primitive array object. - - - - - - Constructs a new <tt>java.lang.String</tt> object from an array of characters in modified UTF-8 encoding. - - - - - - Pops off the current local reference frame, frees all the local references, and returns a local reference in the previous local reference frame for the given <tt>result</tt> object. - - - - - - Creates a new local reference frame, in which at least a given number of local references can be created. - - - - - - Sets the value of one element in a primitive array. - - The array of native booleans. - Index of the array element to set. - The value to set - for 'true' use 1, for 'false' use 0. - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets an element of an <tt>Object</tt> array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Sets the value of one element in a primitive array. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function ets the value of a static field of an object. - - - - - - - - This function sets the value of an instance (nonstatic) field of an object. - - - - - - - - Causes a <tt>java.lang.Throwable</tt> object to be thrown. - - - - - - Constructs an exception object from the specified class with the <tt>message</tt> specified by message and causes that exception to be thrown. - - - - - - - Convert a managed array of System.Boolean to a Java array of <tt>boolean</tt>. - - - - - - Convert a managed array of System.Byte to a Java array of <tt>byte</tt>. - - - - - - Convert a managed array of System.Char to a Java array of <tt>char</tt>. - - - - - - Convert a managed array of System.Double to a Java array of <tt>double</tt>. - - - - - - Convert a managed array of System.Single to a Java array of <tt>float</tt>. - - - - - - Convert a managed array of System.Int32 to a Java array of <tt>int</tt>. - - - - - - Convert a managed array of System.Int64 to a Java array of <tt>long</tt>. - - - - - - Convert a managed array of System.IntPtr, representing Java objects, to a Java array of <tt>java.lang.Object</tt>. - - - - - - Converts a field ID derived from cls to a <tt>java.lang.reflect.Field</tt> object. - - - - - - - - Converts a method ID derived from clazz to a <tt>java.lang.reflect.Method<tt> or <tt>java.lang.reflect.Constructor<tt> object. - - - - - - - - Convert a managed array of System.Int16 to a Java array of <tt>short</tt>. - - - - - - Helper interface for JNI interaction; signature creation and method lookups. - -Note: Using raw JNI functions requires advanced knowledge of the Android Java Native Interface (JNI). Please take note. - - - - - Set debug to true to log calls through the AndroidJNIHelper. - - - - - Creates a managed array from a Java array. - - Java array object to be converted into a managed array. - - - - Creates a Java array from a managed array. - - Managed array to be converted into a Java array object. - - - - Creates a java proxy object which connects to the supplied proxy implementation. - - An implementatinon of a java interface in c#. - - - - Creates a UnityJavaRunnable object (implements java.lang.Runnable). - - A delegate representing the java.lang.Runnable. - - - - - Creates the parameter array to be used as argument list when invoking Java code through CallMethod() in AndroidJNI. - - An array of objects that should be converted to Call parameters. - - - - Deletes any local jni references previously allocated by CreateJNIArgArray(). - - The array of arguments used as a parameter to CreateJNIArgArray(). - The array returned by CreateJNIArgArray(). - - - - Scans a particular Java class for a constructor method matching a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Constructor method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - - - - Scans a particular Java class for a constructor method matching a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Constructor method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - - - - Get a JNI method ID for a constructor based on calling arguments. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Array with parameters to be passed to the constructor when invoked. - - - - - Scans a particular Java class for a field matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the field as declared in Java. - Field signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static fields; <tt>false<tt> for instance (nonstatic) fields. - - - - Scans a particular Java class for a field matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the field as declared in Java. - Field signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static fields; <tt>false<tt> for instance (nonstatic) fields. - - - - Scans a particular Java class for a field matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the field as declared in Java. - Field signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static fields; <tt>false<tt> for instance (nonstatic) fields. - - - - Get a JNI field ID based on type detection. Generic parameter represents the field type. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the field as declared in Java. - Set to <tt>true<tt> for static fields; <tt>false<tt> for instance (nonstatic) fields. - - - - - Scans a particular Java class for a method matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the method as declared in Java. - Method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static methods; <tt>false<tt> for instance (nonstatic) methods. - - - - Scans a particular Java class for a method matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the method as declared in Java. - Method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static methods; <tt>false<tt> for instance (nonstatic) methods. - - - - Scans a particular Java class for a method matching a name and a signature. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the method as declared in Java. - Method signature (e.g. obtained by calling AndroidJNIHelper.GetSignature). - Set to <tt>true<tt> for static methods; <tt>false<tt> for instance (nonstatic) methods. - - - - Get a JNI method ID based on calling arguments. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the method as declared in Java. - Array with parameters to be passed to the method when invoked. - Set to <tt>true<tt> for static methods; <tt>false<tt> for instance (nonstatic) methods. - - - - - Get a JNI method ID based on calling arguments. - - Raw JNI Java class object (obtained by calling AndroidJNI.FindClass). - Name of the method as declared in Java. - Array with parameters to be passed to the method when invoked. - Set to <tt>true<tt> for static methods; <tt>false<tt> for instance (nonstatic) methods. - - - - - Creates the JNI signature string for particular object type. - - Object for which a signature is to be produced. - - - - Creates the JNI signature string for an object parameter list. - - Array of object for which a signature is to be produced. - - - - Creates the JNI signature string for an object parameter list. - - Array of object for which a signature is to be produced. - - - - The animation component is used to play back animations. - - - - - When turned on, Unity might stop animating if it thinks that the results of the animation won't be visible to the user. - - - - - When turned on, animations will be executed in the physics loop. This is only useful in conjunction with kinematic rigidbodies. - - - - - The default animation. - - - - - Controls culling of this Animation component. - - - - - Is an animation currently being played? - - - - - AABB of this Animation animation component in local space. - - - - - Should the default animation clip (the Animation.clip property) automatically start playing on startup? - - - - - How should time beyond the playback range of the clip be treated? - - - - - Adds a clip to the animation with name newName. - - - - - - - Adds clip to the only play between firstFrame and lastFrame. The new clip will also be added to the animation with name newName. - - Should an extra frame be inserted at the end that matches the first frame? Turn this on if you are making a looping animation. - - - - - - - - Adds clip to the only play between firstFrame and lastFrame. The new clip will also be added to the animation with name newName. - - Should an extra frame be inserted at the end that matches the first frame? Turn this on if you are making a looping animation. - - - - - - - - Blends the animation named animation towards targetWeight over the next time seconds. - - - - - - - - Blends the animation named animation towards targetWeight over the next time seconds. - - - - - - - - Blends the animation named animation towards targetWeight over the next time seconds. - - - - - - - - Fades the animation with name animation in over a period of time seconds and fades other animations out. - - - - - - - - Fades the animation with name animation in over a period of time seconds and fades other animations out. - - - - - - - - Fades the animation with name animation in over a period of time seconds and fades other animations out. - - - - - - - - Cross fades an animation after previous animations has finished playing. - - - - - - - - - Cross fades an animation after previous animations has finished playing. - - - - - - - - - Cross fades an animation after previous animations has finished playing. - - - - - - - - - Cross fades an animation after previous animations has finished playing. - - - - - - - - - Get the number of clips currently assigned to this animation. - - - - - Is the animation named name playing? - - - - - - Plays an animation without blending. - - - - - - - Plays an animation without blending. - - - - - - - Plays an animation without blending. - - - - - - - Plays an animation without blending. - - - - - - - Plays an animation after previous animations has finished playing. - - - - - - - - Plays an animation after previous animations has finished playing. - - - - - - - - Plays an animation after previous animations has finished playing. - - - - - - - - Remove clip from the animation list. - - - - - - Remove clip from the animation list. - - - - - - Rewinds the animation named name. - - - - - - Rewinds all animations. - - - - - Samples animations at the current state. - - - - - Stops all playing animations that were started with this Animation. - - - - - Stops an animation named name. - - - - - - Returns the animation state named name. - - - - - Used by Animation.Play function. - - - - - Animations will be added. - - - - - Animations will be blended. - - - - - Stores keyframe based animations. - - - - - Returns true if the animation clip has no curves and no events. - - - - - Animation Events for this animation clip. - - - - - Frame rate at which keyframes are sampled. (Read Only) - - - - - Returns true if the Animation has animation on the root transform. - - - - - Returns true if the AnimationClip has root motion curves. - - - - - Returns true if the AnimationClip has editor curves for its root motion. - - - - - Returns true if the AnimationClip has root Curves. - - - - - Returns true if the animation contains curve that drives a humanoid rig. - - - - - Set to true if the AnimationClip will be used with the Legacy Animation component ( instead of the Animator ). - - - - - Animation length in seconds. (Read Only) - - - - - AABB of this Animation Clip in local space of Animation component that it is attached too. - - - - - Sets the default wrap mode used in the animation state. - - - - - Adds an animation event to the clip. - - AnimationEvent to add. - - - - Clears all curves from the clip. - - - - - Creates a new animation clip. - - - - - Realigns quaternion keys to ensure shortest interpolation paths. - - - - - Samples an animation at a given time for any animated properties. - - The animated game object. - The time to sample an animation. - - - - Assigns the curve to animate a specific property. - - Path to the game object this curve applies to. The relativePath - is formatted similar to a pathname, e.g. "rootspineleftArm". If relativePath - is empty it refers to the game object the animation clip is attached to. - The class type of the component that is animated. - The name or path to the property being animated. - The animation curve. - - - - This class defines a pair of clips used by AnimatorOverrideController. - - - - - The original clip from the controller. - - - - - The override animation clip. - - - - - This enum controlls culling of Animation component. - - - - - Animation culling is disabled - object is animated even when offscreen. - - - - - Animation is disabled when renderers are not visible. - - - - - Store a collection of Keyframes that can be evaluated over time. - - - - - All keys defined in the animation curve. - - - - - The number of keys in the curve. (Read Only) - - - - - The behaviour of the animation after the last keyframe. - - - - - The behaviour of the animation before the first keyframe. - - - - - Add a new key to the curve. - - The time at which to add the key (horizontal axis in the curve graph). - The value for the key (vertical axis in the curve graph). - - The index of the added key, or -1 if the key could not be added. - - - - - Add a new key to the curve. - - The key to add to the curve. - - The index of the added key, or -1 if the key could not be added. - - - - - Creates a constant "curve" starting at timeStart, ending at timeEnd and with the value value. - - The start time for the constant curve. - The start time for the constant curve. - The value for the constant curve. - - The constant curve created from the specified values. - - - - - Creates an animation curve from an arbitrary number of keyframes. - - An array of Keyframes used to define the curve. - - - - Creates an empty animation curve. - - - - - Creates an ease-in and out curve starting at timeStart, valueStart and ending at timeEnd, valueEnd. - - The start time for the ease curve. - The start value for the ease curve. - The end time for the ease curve. - The end value for the ease curve. - - The ease-in and out curve generated from the specified values. - - - - - Evaluate the curve at time. - - The time within the curve you want to evaluate (the horizontal axis in the curve graph). - - The value of the curve, at the point in time specified. - - - - - A straight Line starting at timeStart, valueStart and ending at timeEnd, valueEnd. - - The start time for the linear curve. - The start value for the linear curve. - The end time for the linear curve. - The end value for the linear curve. - - The linear curve created from the specified values. - - - - - Removes the keyframe at index and inserts key. - - The index of the key to move. - The key (with its new time) to insert. - - The index of the keyframe after moving it. - - - - - Removes a key. - - The index of the key to remove. - - - - Smooth the in and out tangents of the keyframe at index. - - The index of the keyframe to be smoothed. - The smoothing weight to apply to the keyframe's tangents. - - - - Retrieves the key at index. (Read Only) - - - - - AnimationEvent lets you call a script function similar to SendMessage as part of playing back an animation. - - - - - The animation state that fired this event (Read Only). - - - - - The animator clip info related to this event (Read Only). - - - - - The animator state info related to this event (Read Only). - - - - - Float parameter that is stored in the event and will be sent to the function. - - - - - The name of the function that will be called. - - - - - Int parameter that is stored in the event and will be sent to the function. - - - - - Returns true if this Animation event has been fired by an Animator component. - - - - - Returns true if this Animation event has been fired by an Animation component. - - - - - Function call options. - - - - - Object reference parameter that is stored in the event and will be sent to the function. - - - - - String parameter that is stored in the event and will be sent to the function. - - - - - The time at which the event will be fired off. - - - - - Creates a new animation event. - - - - - Information about what animation clips is played and its weight. - - - - - Animation clip that is played. - - - - - The weight of the animation clip. - - - - - Constrains the orientation of an object relative to the position of one or more source objects, such that the object is facing the average position of the sources. - - - - - The axis towards which the constrained object orients. - - - - - Activates or deactivates the constraint. - - - - - Locks the offset and rotation at rest. - - - - - The rotation used when the sources have a total weight of 0. - - - - - The axes affected by the AimConstraint. - - - - - Represents an offset from the constrained orientation. - - - - - The number of sources set on the component (read-only). - - - - - The up vector. - - - - - The weight of the constraint component. - - - - - The world up object, used to calculate the world up vector when the world up Type is AimConstraint.WorldUpType.ObjectUp or AimConstraint.WorldUpType.ObjectRotationUp. - - - - - The type of the world up vector. - - - - - The world up Vector used when the world up type is AimConstraint.WorldUpType.Vector or AimConstraint.WorldUpType.ObjectRotationUp. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - Specifies how the world up vector used by the aim constraint is defined. - - - - - Neither defines nor uses a world up vector. - - - - - Uses and defines the world up vector as relative to the local space of the object. - - - - - Uses and defines the world up vector as a vector from the constrained object, in the direction of the up object. - - - - - Uses and defines the world up vector as the Unity Scene up vector (the Y axis). - - - - - Uses and defines the world up vector as a vector specified by the user. - - - - - A Playable that controls an AnimationClip. - - - - - Creates an AnimationClipPlayable in the PlayableGraph. - - The PlayableGraph object that will own the AnimationClipPlayable. - The AnimationClip that will be added in the PlayableGraph. - - A AnimationClipPlayable linked to the PlayableGraph. - - - - - Returns the AnimationClip stored in the AnimationClipPlayable. - - - - - Returns the state of the ApplyFootIK flag. - - - - - Returns the state of the ApplyPlayableIK flag. - - - - - Sets the value of the ApplyFootIK flag. - - The new value of the ApplyFootIK flag. - - - - Requests OnAnimatorIK to be called on the animated GameObject. - - - - - - An implementation of IPlayable that controls an animation layer mixer. - - - - - Creates an AnimationLayerMixerPlayable in the PlayableGraph. - - The PlayableGraph that will contain the new AnimationLayerMixerPlayable. - The number of layers. - - A new AnimationLayerMixerPlayable linked to the PlayableGraph. - - - - - Returns true if the layer is additive, false otherwise. - - The layer index. - - True if the layer is additive, false otherwise. - - - - - Returns an invalid AnimationLayerMixerPlayable. - - - - - Specifies whether a layer is additive or not. Additive layers blend with previous layers. - - The layer index. - Whether the layer is additive or not. Set to true for an additive blend, or false for a regular blend. - - - - Sets the mask for the current layer. - - The layer index. - The AvatarMask used to create the new LayerMask. - - - - An implementation of IPlayable that controls an animation mixer. - - - - - Creates an AnimationMixerPlayable in the PlayableGraph. - - The PlayableGraph that will contain the new AnimationMixerPlayable. - The number of inputs that the mixer will update. - True to force a weight normalization of the inputs. - - A new AnimationMixerPlayable linked to the PlayableGraph. - - - - - Returns an invalid AnimationMixerPlayable. - - - - - A PlayableBinding that contains information representing an AnimationPlayableOutput. - - - - - Creates a PlayableBinding that contains information representing an AnimationPlayableOutput. - - The name of the AnimationPlayableOutput. - A reference to a UnityEngine.Object that acts as a key for this binding. - - Returns a PlayableBinding that contains information that is used to create an AnimationPlayableOutput. - - - - - A IPlayableOutput implementation that connects the PlayableGraph to an Animator in the Scene. - - - - - Creates an AnimationPlayableOutput in the PlayableGraph. - - The PlayableGraph that will contain the AnimationPlayableOutput. - The name of the output. - The Animator that will process the PlayableGraph. - - A new AnimationPlayableOutput attached to the PlayableGraph. - - - - - Returns the Animator that plays the animation graph. - - - The targeted Animator. - - - - - Sets the Animator that plays the animation graph. - - The targeted Animator. - - - - An implementation of IPlayable that controls an animation RuntimeAnimatorController. - - - - - Creates an AnimatorControllerPlayable in the PlayableGraph. - - The PlayableGraph object that will own the AnimatorControllerPlayable. - The RuntimeAnimatorController that will be added in the graph. - - A AnimatorControllerPlayable. - - - - - Returns an invalid AnimatorControllerPlayable. - - - - - Represents the axes used in 3D space. - - - - - Represents the case when no axis is specified. - - - - - Represents the X axis. - - - - - Represents the Y axis. - - - - - Represents the Z axis. - - - - - Represents a source for the constraint. - - - - - The transform component of the source object. - - - - - The weight of the source in the evaluation of the constraint. - - - - - The common interface for constraint components. - - - - - Activate or deactivate the constraint. - - - - - Lock or unlock the offset and position at rest. - - - - - Gets the number of sources currently set on the component. - - - - - The weight of the constraint component. - - - - - Add a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - - Constrains the orientation of an object relative to the position of one or more source objects, such that the object is facing the average position of the sources. - The LookAtConstraint is a simplified Animations.AimConstraint typically used with a Camera. - - - - - - Activates or deactivates the constraint. - - - - - Locks the offset and rotation at rest. - - - - - The rotation angle along the z axis of the object. The constraint uses this property to calculate the world up vector when Animations.LookAtConstraint.UseUpObject is false. - - - - - The rotation used when the sources have a total weight of 0. - - - - - Represents an offset from the constrained orientation. - - - - - The number of sources set on the component (Read Only). - - - - - Determines how the up vector is calculated. - - - - - The weight of the constraint component. - - - - - The world up object, used to calculate the world up vector when Animations.LookAtConstraint.UseUpObject is true. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - Returns the source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - Constrains the orientation and translation of an object to one or more source objects. The constrained object behaves as if it is in the hierarchy of the sources. - - - - - Activates or deactivates the constraint. - - - - - Locks the offsets and position (translation and rotation) at rest. - - - - - The rotation used when the sources have a total weight of 0. - - - - - The rotation axes affected by the ParentConstraint. - - - - - The rotation offsets from the constrained orientation. - - - - - The number of sources set on the component (read-only). - - - - - The position of the object in local space, used when the sources have a total weight of 0. - - - - - The translation axes affected by the ParentConstraint. - - - - - The translation offsets from the constrained orientation. - - - - - The weight of the constraint component. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets the rotation offset associated with a source by index. - - The index of the constraint source. - - The rotation offset, as Euler angles. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources filled by the component. - - - - Gets the rotation offset associated with a source by index. - - The index of the constraint source. - - The translation offset. - - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets the rotation offset associated with a source by index. - - The index of the constraint source. - The new rotation offset. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - Sets the translation offset associated with a source by index. - - The index of the constraint source. - The new translation offset. - - - - Constrains the position of an object relative to the position of one or more source objects. - - - - - Activates or deactivates the constraint. - - - - - Locks the offset and position at rest. - - - - - The number of sources set on the component (read-only). - - - - - The translation used when the sources have a total weight of 0. - - - - - The axes affected by the PositionConstraint. - - - - - The offset from the constrained position. - - - - - The weight of the constraint component. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - Constrains the rotation of an object relative to the rotation of one or more source objects. - - - - - Activates or deactivates the constraint. - - - - - Locks the offset and rotation at rest. - - - - - The rotation used when the sources have a total weight of 0. - - - - - The axes affected by the RotationConstraint. - - - - - The offset from the constrained rotation. - - - - - The number of sources set on the component (read-only). - - - - - The weight of the constraint component. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - Constrains the scale of an object relative to the scale of one or more source objects. - - - - - Activates or deactivates the constraint. - - - - - Locks the offset and scale at rest. - - - - - The scale used when the sources have a total weight of 0. - - - - - The offset from the constrained scale. - - - - - The axes affected by the ScaleConstraint. - - - - - The number of sources set on the component (read-only). - - - - - The weight of the constraint component. - - - - - Adds a constraint source. - - The source object and its weight. - - Returns the index of the added source. - - - - - Gets a constraint source by index. - - The index of the source. - - The source object and its weight. - - - - - Gets the list of sources. - - The list of sources to be filled by the component. - - - - Removes a source from the component. - - The index of the source to remove. - - - - Sets a source at a specified index. - - The index of the source to set. - The source object and its weight. - - - - Sets the list of sources on the component. - - The list of sources to set. - - - - The AnimationState gives full control over animation blending. - - - - - Which blend mode should be used? - - - - - The clip that is being played by this animation state. - - - - - Enables / disables the animation. - - - - - The length of the animation clip in seconds. - - - - - The name of the animation. - - - - - The normalized playback speed. - - - - - The normalized time of the animation. - - - - - The playback speed of the animation. 1 is normal playback speed. - - - - - The current time of the animation. - - - - - The weight of animation. - - - - - Wrapping mode of the animation. - - - - - Adds a transform which should be animated. This allows you to reduce the number of animations you have to create. - - The transform to animate. - Whether to also animate all children of the specified transform. - - - - Adds a transform which should be animated. This allows you to reduce the number of animations you have to create. - - The transform to animate. - Whether to also animate all children of the specified transform. - - - - Removes a transform which should be animated. - - - - - - Interface to control the Mecanim animation system. - - - - - Gets the avatar angular velocity for the last evaluated frame. - - - - - When turned on, animations will be executed in the physics loop. This is only useful in conjunction with kinematic rigidbodies. - - - - - Should root motion be applied? - - - - - Gets/Sets the current Avatar. - - - - - The position of the body center of mass. - - - - - The rotation of the body center of mass. - - - - - Controls culling of this Animator component. - - - - - Gets the avatar delta position for the last evaluated frame. - - - - - Gets the avatar delta rotation for the last evaluated frame. - - - - - Blends pivot point between body center of mass and feet pivot. - - - - - Sets whether the Animator sends events of type AnimationEvent. - - - - - The current gravity weight based on current animations that are played. - - - - - Returns true if Animator has any playables assigned to it. - - - - - Returns true if the current rig has root motion. - - - - - Returns true if the object has a transform hierarchy. - - - - - Returns the scale of the current Avatar for a humanoid rig, (1 by default if the rig is generic). - - - - - Returns true if the current rig is humanoid, false if it is generic. - - - - - Returns whether the animator is initialized successfully. - - - - - If automatic matching is active. - - - - - Returns true if the current rig is optimizable with AnimatorUtility.OptimizeTransformHierarchy. - - - - - Controls the behaviour of the Animator component when a GameObject is disabled. - - - - - Returns the number of layers in the controller. - - - - - Additional layers affects the center of mass. - - - - - Get left foot bottom height. - - - - - When linearVelocityBlending is set to true, the root motion velocity and angular velocity will be blended linearly. - - - - - Returns the number of parameters in the controller. - - - - - The AnimatorControllerParameter list used by the animator. (Read Only) - - - - - Get the current position of the pivot. - - - - - Gets the pivot weight. - - - - - The PlayableGraph created by the Animator. - - - - - Sets the playback position in the recording buffer. - - - - - Gets the mode of the Animator recorder. - - - - - Start time of the first frame of the buffer relative to the frame at which StartRecording was called. - - - - - End time of the recorded clip relative to when StartRecording was called. - - - - - Get right foot bottom height. - - - - - The root position, the position of the game object. - - - - - The root rotation, the rotation of the game object. - - - - - The runtime representation of AnimatorController that controls the Animator. - - - - - The playback speed of the Animator. 1 is normal playback speed. - - - - - Automatic stabilization of feet during transition and blending. - - - - - Returns the position of the target specified by SetTarget. - - - - - Returns the rotation of the target specified by SetTarget. - - - - - Specifies the update mode of the Animator. - - - - - Gets the avatar velocity for the last evaluated frame. - - - - - Apply the default Root Motion. - - - - - Creates a crossfade from the current state to any other state using normalized times. - - The name of the state. - The hash name of the state. - The duration of the transition (normalized). - The layer where the crossfade occurs. - The time of the state (normalized). - The time of the transition (normalized). - - - - Creates a crossfade from the current state to any other state using normalized times. - - The name of the state. - The hash name of the state. - The duration of the transition (normalized). - The layer where the crossfade occurs. - The time of the state (normalized). - The time of the transition (normalized). - - - - Creates a crossfade from the current state to any other state using times in seconds. - - The name of the state. - The hash name of the state. - The duration of the transition (in seconds). - The layer where the crossfade occurs. - The time of the state (in seconds). - The time of the transition (normalized). - - - - Creates a crossfade from the current state to any other state using times in seconds. - - The name of the state. - The hash name of the state. - The duration of the transition (in seconds). - The layer where the crossfade occurs. - The time of the state (in seconds). - The time of the transition (normalized). - - - - Returns an AnimatorTransitionInfo with the informations on the current transition. - - The layer's index. - - An AnimatorTransitionInfo with the informations on the current transition. - - - - - Returns the first StateMachineBehaviour that matches type T or is derived from T. Returns null if none are found. - - - - - Returns all StateMachineBehaviour that match type T or are derived from T. Returns null if none are found. - - - - - Returns Transform mapped to this human bone id. - - The human bone that is queried, see enum HumanBodyBones for a list of possible values. - - - - Returns the value of the given boolean parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Returns the value of the given boolean parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Gets the list of AnimatorClipInfo currently played by the current state. - - The layer's index. - - - - Returns an array of all the AnimatorClipInfo in the current state of the given layer. - - The layer index. - - An array of all the AnimatorClipInfo in the current state. - - - - - Fills clips with the list of all the AnimatorClipInfo in the current state of the given layer. - - The layer index. - The list of AnimatorClipInfo to fill. - - - - Returns the number of AnimatorClipInfo in the current state. - - The layer index. - - The number of AnimatorClipInfo in the current state. - - - - - Returns an AnimatorStateInfo with the information on the current state. - - The layer index. - - An AnimatorStateInfo with the information on the current state. - - - - - Returns the value of the given float parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Returns the value of the given float parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Gets the position of an IK hint. - - The AvatarIKHint that is queried. - - Return the current position of this IK hint in world space. - - - - - Gets the translative weight of an IK Hint (0 = at the original animation before IK, 1 = at the hint). - - The AvatarIKHint that is queried. - - Return translative weight. - - - - - Gets the position of an IK goal. - - The AvatarIKGoal that is queried. - - Return the current position of this IK goal in world space. - - - - - Gets the translative weight of an IK goal (0 = at the original animation before IK, 1 = at the goal). - - The AvatarIKGoal that is queried. - - - - Gets the rotation of an IK goal. - - The AvatarIKGoal that is is queried. - - - - Gets the rotational weight of an IK goal (0 = rotation before IK, 1 = rotation at the IK goal). - - The AvatarIKGoal that is queried. - - - - Returns the value of the given integer parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Returns the value of the given integer parameter. - - The parameter name. - The parameter ID. - - The value of the parameter. - - - - - Returns the index of the layer with the given name. - - The layer name. - - The layer index. - - - - - Returns the layer name. - - The layer index. - - The layer name. - - - - - Returns the weight of the layer at the specified index. - - The layer index. - - The layer weight. - - - - - Gets the list of AnimatorClipInfo currently played by the next state. - - The layer's index. - - - - Returns an array of all the AnimatorClipInfo in the next state of the given layer. - - The layer index. - - An array of all the AnimatorClipInfo in the next state. - - - - - Fills clips with the list of all the AnimatorClipInfo in the next state of the given layer. - - The layer index. - The list of AnimatorClipInfo to fill. - - - - Returns the number of AnimatorClipInfo in the next state. - - The layer index. - - The number of AnimatorClipInfo in the next state. - - - - - Returns an AnimatorStateInfo with the information on the next state. - - The layer index. - - An AnimatorStateInfo with the information on the next state. - - - - - See AnimatorController.parameters. - - - - - - Gets the value of a quaternion parameter. - - The name of the parameter. - - - - Gets the value of a quaternion parameter. - - The id of the parameter. The id is generated using Animator::StringToHash. - - - - Gets the value of a vector parameter. - - The name of the parameter. - - - - Gets the value of a vector parameter. - - The id of the parameter. The id is generated using Animator::StringToHash. - - - - Returns true if the state exists in this layer, false otherwise. - - The layer index. - The state ID. - - True if the state exists in this layer, false otherwise. - - - - - Interrupts the automatic target matching. - - - - - - Interrupts the automatic target matching. - - - - - - Returns true if the transform is controlled by the Animator\. - - The transform that is queried. - - - - Returns true if there is a transition on the given layer, false otherwise. - - The layer index. - - True if there is a transition on the given layer, false otherwise. - - - - - Returns true if the parameter is controlled by a curve, false otherwise. - - The parameter name. - The parameter ID. - - True if the parameter is controlled by a curve, false otherwise. - - - - - Returns true if the parameter is controlled by a curve, false otherwise. - - The parameter name. - The parameter ID. - - True if the parameter is controlled by a curve, false otherwise. - - - - - Automatically adjust the GameObject position and rotation. - - The position we want the body part to reach. - The rotation in which we want the body part to be. - The body part that is involved in the match. - Structure that contains weights for matching position and rotation. - Start time within the animation clip (0 - beginning of clip, 1 - end of clip). - End time within the animation clip (0 - beginning of clip, 1 - end of clip), values greater than 1 can be set to trigger a match after a certain number of loops. Ex: 2.3 means at 30% of 2nd loop. - - - - Plays a state. - - The state name. - The state hash name. If stateNameHash is 0, it changes the current state time. - The layer index. If layer is -1, it plays the first state with the given state name or hash. - The time offset between zero and one. - - - - Plays a state. - - The state name. - The state hash name. If stateNameHash is 0, it changes the current state time. - The layer index. If layer is -1, it plays the first state with the given state name or hash. - The time offset between zero and one. - - - - Plays a state. - - The state name. - The state hash name. If stateNameHash is 0, it changes the current state time. - The layer index. If layer is -1, it plays the first state with the given state name or hash. - The time offset (in seconds). - - - - Plays a state. - - The state name. - The state hash name. If stateNameHash is 0, it changes the current state time. - The layer index. If layer is -1, it plays the first state with the given state name or hash. - The time offset (in seconds). - - - - Rebind all the animated properties and mesh data with the Animator. - - - - - Resets the value of the given trigger parameter. - - The parameter name. - The parameter ID. - - - - Resets the value of the given trigger parameter. - - The parameter name. - The parameter ID. - - - - Sets local rotation of a human bone during a IK pass. - - The human bone Id. - The local rotation. - - - - Sets the value of the given boolean parameter. - - The parameter name. - The parameter ID. - The new parameter value. - - - - Sets the value of the given boolean parameter. - - The parameter name. - The parameter ID. - The new parameter value. - - - - Send float values to the Animator to affect transitions. - - The parameter name. - The parameter ID. - The new parameter value. - The damper total time. - The delta time to give to the damper. - - - - Send float values to the Animator to affect transitions. - - The parameter name. - The parameter ID. - The new parameter value. - The damper total time. - The delta time to give to the damper. - - - - Send float values to the Animator to affect transitions. - - The parameter name. - The parameter ID. - The new parameter value. - The damper total time. - The delta time to give to the damper. - - - - Send float values to the Animator to affect transitions. - - The parameter name. - The parameter ID. - The new parameter value. - The damper total time. - The delta time to give to the damper. - - - - Sets the position of an IK hint. - - The AvatarIKHint that is set. - The position in world space. - - - - Sets the translative weight of an IK hint (0 = at the original animation before IK, 1 = at the hint). - - The AvatarIKHint that is set. - The translative weight. - - - - Sets the position of an IK goal. - - The AvatarIKGoal that is set. - The position in world space. - - - - Sets the translative weight of an IK goal (0 = at the original animation before IK, 1 = at the goal). - - The AvatarIKGoal that is set. - The translative weight. - - - - Sets the rotation of an IK goal. - - The AvatarIKGoal that is set. - The rotation in world space. - - - - Sets the rotational weight of an IK goal (0 = rotation before IK, 1 = rotation at the IK goal). - - The AvatarIKGoal that is set. - The rotational weight. - - - - Sets the value of the given integer parameter. - - The parameter name. - The parameter ID. - The new parameter value. - - - - Sets the value of the given integer parameter. - - The parameter name. - The parameter ID. - The new parameter value. - - - - Sets the weight of the layer at the given index. - - The layer index. - The new layer weight. - - - - Sets the look at position. - - The position to lookAt. - - - - Set look at weights. - - (0-1) the global weight of the LookAt, multiplier for other parameters. - (0-1) determines how much the body is involved in the LookAt. - (0-1) determines how much the head is involved in the LookAt. - (0-1) determines how much the eyes are involved in the LookAt. - (0-1) 0.0 means the character is completely unrestrained in motion, 1.0 means he's completely clamped (look at becomes impossible), and 0.5 means he'll be able to move on half of the possible range (180 degrees). - - - - Set look at weights. - - (0-1) the global weight of the LookAt, multiplier for other parameters. - (0-1) determines how much the body is involved in the LookAt. - (0-1) determines how much the head is involved in the LookAt. - (0-1) determines how much the eyes are involved in the LookAt. - (0-1) 0.0 means the character is completely unrestrained in motion, 1.0 means he's completely clamped (look at becomes impossible), and 0.5 means he'll be able to move on half of the possible range (180 degrees). - - - - Set look at weights. - - (0-1) the global weight of the LookAt, multiplier for other parameters. - (0-1) determines how much the body is involved in the LookAt. - (0-1) determines how much the head is involved in the LookAt. - (0-1) determines how much the eyes are involved in the LookAt. - (0-1) 0.0 means the character is completely unrestrained in motion, 1.0 means he's completely clamped (look at becomes impossible), and 0.5 means he'll be able to move on half of the possible range (180 degrees). - - - - Set look at weights. - - (0-1) the global weight of the LookAt, multiplier for other parameters. - (0-1) determines how much the body is involved in the LookAt. - (0-1) determines how much the head is involved in the LookAt. - (0-1) determines how much the eyes are involved in the LookAt. - (0-1) 0.0 means the character is completely unrestrained in motion, 1.0 means he's completely clamped (look at becomes impossible), and 0.5 means he'll be able to move on half of the possible range (180 degrees). - - - - Set look at weights. - - (0-1) the global weight of the LookAt, multiplier for other parameters. - (0-1) determines how much the body is involved in the LookAt. - (0-1) determines how much the head is involved in the LookAt. - (0-1) determines how much the eyes are involved in the LookAt. - (0-1) 0.0 means the character is completely unrestrained in motion, 1.0 means he's completely clamped (look at becomes impossible), and 0.5 means he'll be able to move on half of the possible range (180 degrees). - - - - Sets the value of a quaternion parameter. - - The name of the parameter. - The new value for the parameter. - - - - Sets the value of a quaternion parameter. - - Of the parameter. The id is generated using Animator::StringToHash. - The new value for the parameter. - - - - Sets an AvatarTarget and a targetNormalizedTime for the current state. - - The avatar body part that is queried. - The current state Time that is queried. - - - - Sets the value of the given trigger parameter. - - The parameter name. - The parameter ID. - - - - Sets the value of the given trigger parameter. - - The parameter name. - The parameter ID. - - - - Sets the value of a vector parameter. - - The name of the parameter. - The new value for the parameter. - - - - Sets the value of a vector parameter. - - The id of the parameter. The id is generated using Animator::StringToHash. - The new value for the parameter. - - - - Sets the animator in playback mode. - - - - - Sets the animator in recording mode, and allocates a circular buffer of size frameCount. - - The number of frames (updates) that will be recorded. If frameCount is 0, the recording will continue until the user calls StopRecording. The maximum value for frameCount is 10000. - - - - Stops the animator playback mode. When playback stops, the avatar resumes getting control from game logic. - - - - - Stops animator record mode. - - - - - Generates an parameter id from a string. - - The string to convert to Id. - - - - Evaluates the animator based on deltaTime. - - The time delta. - - - - Forces a write of the default values stored in the animator. - - - - - Information about clip being played and blended by the Animator. - - - - - Returns the animation clip played by the Animator. - - - - - Returns the blending weight used by the Animator to blend this clip. - - - - - Used to communicate between scripting and the controller. Some parameters can be set in scripting and used by the controller, while other parameters are based on Custom Curves in Animation Clips and can be sampled using the scripting API. - - - - - The default bool value for the parameter. - - - - - The default float value for the parameter. - - - - - The default int value for the parameter. - - - - - The name of the parameter. - - - - - Returns the hash of the parameter based on its name. - - - - - The type of the parameter. - - - - - The type of the parameter. - - - - - Boolean type parameter. - - - - - Float type parameter. - - - - - Int type parameter. - - - - - Trigger type parameter. - - - - - Culling mode for the Animator. - - - - - Always animate the entire character. Object is animated even when offscreen. - - - - - Animation is completely disabled when renderers are not visible. - - - - - Retarget, IK and write of Transforms are disabled when renderers are not visible. - - - - - Interface to control Animator Override Controller. - - - - - Returns the list of orignal Animation Clip from the controller and their override Animation Clip. - - - - - Returns the count of overrides. - - - - - The Runtime Animator Controller that the Animator Override Controller overrides. - - - - - Applies the list of overrides on this Animator Override Controller. - - Overrides list to apply. - - - - Creates an empty Animator Override Controller. - - - - - Creates an Animator Override Controller that overrides controller. - - Runtime Animator Controller to override. - - - - Gets the list of Animation Clip overrides currently defined in this Animator Override Controller. - - Array to receive results. - - - - Returns either the overriding Animation Clip if set or the original Animation Clip named name. - - - - - Returns either the overriding Animation Clip if set or the original Animation Clip named name. - - - - - The mode of the Animator's recorder. - - - - - The Animator recorder is offline. - - - - - The Animator recorder is in Playback. - - - - - The Animator recorder is in Record. - - - - - Information about the current or next state. - - - - - The full path hash for this state. - - - - - Current duration of the state. - - - - - Is the state looping. - - - - - The hashed name of the State. - - - - - Normalized time of the State. - - - - - The hash is generated using Animator.StringToHash. The hash does not include the name of the parent layer. - - - - - The playback speed of the animation. 1 is the normal playback speed. - - - - - The speed multiplier for this state. - - - - - The Tag of the State. - - - - - Does name match the name of the active state in the statemachine? - - - - - - Does tag match the tag of the active state in the statemachine. - - - - - - Information about the current transition. - - - - - Returns true if the transition is from an AnyState node, or from Animator.CrossFade. - - - - - Duration of the transition. - - - - - The unit of the transition duration. - - - - - The hash name of the Transition. - - - - - The simplified name of the Transition. - - - - - Normalized time of the Transition. - - - - - The user-specified name of the Transition. - - - - - Does name match the name of the active Transition. - - - - - - Does userName match the name of the active Transition. - - - - - - The update mode of the Animator. - - - - - Updates the animator during the physic loop in order to have the animation system synchronized with the physics engine. - - - - - Normal update of the animator. - - - - - Animator updates independently of Time.timeScale. - - - - - Various utilities for animator manipulation. - - - - - This function will recreate all transform hierarchy under GameObject. - - GameObject to Deoptimize. - - - - This function will remove all transform hierarchy under GameObject, the animator will write directly transform matrices into the skin mesh matrices saving alot of CPU cycles. - - GameObject to Optimize. - List of transform name to expose. - - - - Anisotropic filtering mode. - - - - - Disable anisotropic filtering for all textures. - - - - - Enable anisotropic filtering, as set for each texture. - - - - - Enable anisotropic filtering for all textures. - - - - - ReplayKit is only available on certain iPhone, iPad and iPod Touch devices running iOS 9.0 or later. - - - - - A Boolean that indicates whether ReplayKit broadcasting API is available (true means available) (Read Only). -Check the value of this property before making ReplayKit broadcasting API calls. On iOS versions prior to iOS 10, this property will have a value of false. - - - - - A string property that contains an URL used to redirect the user to an on-going or completed broadcast (Read Only). - - - - - Camera enabled status, true, if camera enabled, false otherwise. - - - - - Boolean property that indicates whether a broadcast is currently in progress (Read Only). - - - - - A boolean that indicates whether ReplayKit is making a recording (where True means a recording is in progress). (Read Only) - - - - - A string value of the last error incurred by the ReplayKit: Either 'Failed to get Screen Recorder' or 'No recording available'. (Read Only) - - - - - Microphone enabled status, true, if microhone enabled, false otherwise. - - - - - A boolean value that indicates that a new recording is available for preview (where True means available). (Read Only) - - - - - A boolean that indicates whether the ReplayKit API is available (where True means available). (Read Only) - - - - - Function called at the completion of broadcast startup. - - This parameter will be true if the broadcast started successfully and false in the event of an error. - In the event of failure to start a broadcast, this parameter contains the associated error message. - - - - Discard the current recording. - - - A boolean value of True if the recording was discarded successfully or False if an error occurred. - - - - - Hide the camera preview view. - - - - - Preview the current recording - - - A boolean value of True if the video preview window opened successfully or False if an error occurred. - - - - - Shows camera preview at coordinates posX and posY. - - - - - - - Initiates and starts a new broadcast -When StartBroadcast is called, user is presented with a broadcast provider selection screen, and then a broadcast setup screen. Once it is finished, a broadcast will be started, and the callback will be invoked. -It will also be invoked in case of any error. - - - A callback for getting the status of broadcast initiation. - Enable or disable the microphone while broadcasting. Enabling the microphone allows you to include user commentary while broadcasting. The default value is false. - Enable or disable the camera while broadcasting. Enabling camera allows you to include user camera footage while broadcasting. The default value is false. To actually include camera footage in your broadcast, you also have to call ShowCameraPreviewAt as well to position the preview view. - - - - Start a new recording. - - Enable or disable the microphone while making a recording. Enabling the microphone allows you to include user commentary while recording. The default value is false. - Enable or disable the camera while making a recording. Enabling camera allows you to include user camera footage while recording. The default value is false. To actually include camera footage in your recording, you also have to call ShowCameraPreviewAt as well to position the preview view. - - A boolean value of True if recording started successfully or False if an error occurred. - - - - - Stops current broadcast. -Will terminate currently on-going broadcast. If no broadcast is in progress, does nothing. - - - - - Stop the current recording. - - - A boolean value of True if recording stopped successfully or False if an error occurred. - - - - - Access to application run-time data. - - - - - The URL of the document (what is shown in a browser's address bar) for WebGL (Read Only). - - - - - Priority of background loading thread. - - - - - Returns a GUID for this build (Read Only). - - - - - A unique cloud project identifier. It is unique for every project (Read Only). - - - - - Return application company name (Read Only). - - - - - Returns the path to the console log file, or an empty string if the current platform does not support log files. - - - - - Contains the path to the game data folder (Read Only). - - - - - Returns false if application is altered in any way after it was built. - - - - - Returns true if application integrity can be confirmed. - - - - - Returns application identifier at runtime. On Apple platforms this is the 'bundleIdentifier' saved in the info.plist file, on Android it's the 'package' from the AndroidManifest.xml. - - - - - Returns the name of the store or package that installed the application (Read Only). - - - - - Returns application install mode (Read Only). - - - - - Returns the type of Internet reachability currently possible on the device. - - - - - Returns true when Unity is launched with the -batchmode flag from the command line (Read Only). - - - - - Is the current Runtime platform a known console platform. - - - - - Are we running inside the Unity editor? (Read Only) - - - - - Whether the player currently has focus. Read-only. - - - - - Is some level being loaded? (Read Only) (Obsolete). - - - - - Is the current Runtime platform a known mobile platform. - - - - - Returns true when called in any kind of built Player, or when called in the Editor in Play Mode (Read Only). - - - - - Checks whether splash screen is being shown. - - - - - The total number of levels available (Read Only). - - - - - Note: This is now obsolete. Use SceneManager.GetActiveScene instead. (Read Only). - - - - - The name of the level that was last loaded (Read Only). - - - - - Event that is fired if a log message is received. - - - - - - Event that is fired if a log message is received. - - - - - - This event occurs when an iOS or Android device notifies of low memory while the app is running in the foreground. You can release non-critical assets from memory (such as, textures or audio clips) in response to this in order to avoid the app being terminated. You can also load smaller versions of such assets. Furthermore, you should serialize any transient data to permanent storage to avoid data loss if the app is terminated. - -This event corresponds to the following callbacks on the different platforms: - -- iOS: [UIApplicationDelegate applicationDidReceiveMemoryWarning] - -- Android: onLowMemory() and onTrimMemory(level == TRIM_MEMORY_RUNNING_CRITICAL) - -Here is an example of handling the callback: - - - - - - Delegate method used to register for "Just Before Render" input updates for VR devices. - - - - - - Contains the path to a persistent data directory (Read Only). - - - - - Returns the platform the game is running on (Read Only). - - - - - Returns application product name (Read Only). - - - - - Unity raises this event when the player application is qutting. - - - - - - Should the player be running when the application is in the background? - - - - - Returns application running in sandbox (Read Only). - - - - - Obsolete. Use Application.SetStackTraceLogType. - - - - - How many bytes have we downloaded from the main unity web stream (Read Only). - - - - - Contains the path to the StreamingAssets folder (Read Only). - - - - - The language the user's operating system is running in. - - - - - Instructs game to try to render at a specified frame rate. - - - - - Contains the path to a temporary data / cache directory (Read Only). - - - - - The version of the Unity runtime used to play the content. - - - - - Returns application version number (Read Only). - - - - - Unity raises this event when the player application wants to quit. - - - - - - Indicates whether Unity's webplayer security model is enabled. - - - - - Delegate method for fetching advertising ID. - - Advertising ID. - Indicates whether user has chosen to limit ad tracking. - Error message. - - - - Cancels quitting the application. This is useful for showing a splash screen at the end of a game. - - - - - Can the streamed level be loaded? - - - - - - Can the streamed level be loaded? - - - - - - Captures a screenshot at path filename as a PNG file. - - Pathname to save the screenshot file to. - Factor by which to increase resolution. - - - - Captures a screenshot at path filename as a PNG file. - - Pathname to save the screenshot file to. - Factor by which to increase resolution. - - - - Calls a function in the web page that contains the WebGL Player. - - Name of the function to call. - Array of arguments passed in the call. - - - - Execution of a script function in the contained web page. - - The Javascript function to call. - - - - Returns an array of feature tags in use for this build. - - - - - Get stack trace logging options. The default value is StackTraceLogType.ScriptOnly. - - - - - - How far has the download progressed? [0...1]. - - - - - - How far has the download progressed? [0...1]. - - - - - - Is Unity activated with the Pro license? - - - - - Check if the user has authorized use of the webcam or microphone in the Web Player. - - - - - - Returns true if the given object is part of the playing world either in any kind of built Player or in Play Mode. - - The object to test. - - True if the object is part of the playing world. - - - - - Note: This is now obsolete. Use SceneManager.LoadScene instead. - - The level to load. - The name of the level to load. - - - - Note: This is now obsolete. Use SceneManager.LoadScene instead. - - The level to load. - The name of the level to load. - - - - Loads a level additively. - - - - - - - Loads a level additively. - - - - - - - Loads the level additively and asynchronously in the background. - - - - - - - Loads the level additively and asynchronously in the background. - - - - - - - Loads the level asynchronously in the background. - - - - - - - Loads the level asynchronously in the background. - - - - - - - Use this delegate type with Application.logMessageReceived or Application.logMessageReceivedThreaded to monitor what gets logged. - - - - - - - - This is the delegate function when a mobile device notifies of low memory. - - - - - Opens the url in a browser. - - - - - - Quits the player application. - - An optional exit code to return when the player application terminates on Windows, Mac and Linux. Defaults to 0. - - - - Request advertising ID for iOS, Android and Windows Store. - - Delegate method. - - Returns true if successful, or false for platforms which do not support Advertising Identifiers. In this case, the delegate method is not invoked. - - - - - Request authorization to use the webcam or microphone on iOS. - - - - - - Set an array of feature tags for this build. - - - - - - Set stack trace logging options. The default value is StackTraceLogType.ScriptOnly. - - - - - - - Unloads the Unity runtime. - - - - - Unloads all GameObject associated with the given Scene. Note that assets are currently not unloaded, in order to free up asset memory call Resources.UnloadAllUnusedAssets. - - Index of the Scene in the PlayerSettings to unload. - Name of the Scene to Unload. - - Return true if the Scene is unloaded. - - - - - Unloads all GameObject associated with the given Scene. Note that assets are currently not unloaded, in order to free up asset memory call Resources.UnloadAllUnusedAssets. - - Index of the Scene in the PlayerSettings to unload. - Name of the Scene to Unload. - - Return true if the Scene is unloaded. - - - - - Application installation mode (Read Only). - - - - - Application installed via ad hoc distribution. - - - - - Application installed via developer build. - - - - - Application running in editor. - - - - - Application installed via enterprise distribution. - - - - - Application installed via online store. - - - - - Application install mode unknown. - - - - - Application sandbox type. - - - - - Application not running in a sandbox. - - - - - Application is running in broken sandbox. - - - - - Application is running in a sandbox. - - - - - Application sandbox type is unknown. - - - - - Applies forces within an area. - - - - - The angular drag to apply to rigid-bodies. - - - - - The linear drag to apply to rigid-bodies. - - - - - The angle of the force to be applied. - - - - - The magnitude of the force to be applied. - - - - - The target for where the effector applies any force. - - - - - The variation of the magnitude of the force to be applied. - - - - - Should the forceAngle use global space? - - - - - Enumeration of all the muscles in an arm. - - - - - The arm down-up muscle. - - - - - The arm front-back muscle. - - - - - The arm roll in-out muscle. - - - - - The forearm close-open muscle. - - - - - The forearm roll in-out muscle. - - - - - The hand down-up muscle. - - - - - The hand in-out muscle. - - - - - The last value of the ArmDof enum. - - - - - The shoulder down-up muscle. - - - - - The shoulder front-back muscle. - - - - - Assembly level attribute. Any classes in an assembly with this attribute will be considered to be Editor Classes. - - - - - Constructor. - - - - - The Assert class contains assertion methods for setting invariants in the code. - - - - - Whether Unity should throw an exception on a failure. - - - - - Asserts that the values are approximately equal. An absolute error check is used for approximate equality check (|a-b| < tolerance). Default tolerance is 0.00001f. - -Note: Every time you call the method with tolerance specified, a new instance of Assertions.Comparers.FloatComparer is created. For performance reasons you might want to instance your own comparer and pass it to the AreEqual method. If the tolerance is not specifies, a default comparer is used and the issue does not occur. - - Tolerance of approximation. - - - - - - - Asserts that the values are approximately equal. An absolute error check is used for approximate equality check (|a-b| < tolerance). Default tolerance is 0.00001f. - -Note: Every time you call the method with tolerance specified, a new instance of Assertions.Comparers.FloatComparer is created. For performance reasons you might want to instance your own comparer and pass it to the AreEqual method. If the tolerance is not specifies, a default comparer is used and the issue does not occur. - - Tolerance of approximation. - - - - - - - Asserts that the values are approximately equal. An absolute error check is used for approximate equality check (|a-b| < tolerance). Default tolerance is 0.00001f. - -Note: Every time you call the method with tolerance specified, a new instance of Assertions.Comparers.FloatComparer is created. For performance reasons you might want to instance your own comparer and pass it to the AreEqual method. If the tolerance is not specifies, a default comparer is used and the issue does not occur. - - Tolerance of approximation. - - - - - - - Asserts that the values are approximately equal. An absolute error check is used for approximate equality check (|a-b| < tolerance). Default tolerance is 0.00001f. - -Note: Every time you call the method with tolerance specified, a new instance of Assertions.Comparers.FloatComparer is created. For performance reasons you might want to instance your own comparer and pass it to the AreEqual method. If the tolerance is not specifies, a default comparer is used and the issue does not occur. - - Tolerance of approximation. - - - - - - - Asserts that the values are equal. If no comparer is specified, EqualityComparer<T>.Default is used. - - - - - - - - - Asserts that the values are equal. If no comparer is specified, EqualityComparer<T>.Default is used. - - - - - - - - - Asserts that the values are equal. If no comparer is specified, EqualityComparer<T>.Default is used. - - - - - - - - - Asserts that the values are approximately not equal. An absolute error check is used for approximate equality check (|a-b| < tolerance). Default tolerance is 0.00001f. - - Tolerance of approximation. - - - - - - - Asserts that the values are approximately not equal. An absolute error check is used for approximate equality check (|a-b| < tolerance). Default tolerance is 0.00001f. - - Tolerance of approximation. - - - - - - - Asserts that the values are approximately not equal. An absolute error check is used for approximate equality check (|a-b| < tolerance). Default tolerance is 0.00001f. - - Tolerance of approximation. - - - - - - - Asserts that the values are approximately not equal. An absolute error check is used for approximate equality check (|a-b| < tolerance). Default tolerance is 0.00001f. - - Tolerance of approximation. - - - - - - - Asserts that the values are not equal. - - - - - - - - - Asserts that the values are not equal. - - - - - - - - - Asserts that the values are not equal. - - - - - - - - - Asserts that the condition is false. - - - - - - - Asserts that the condition is false. - - - - - - - Asserts that the value is not null. - - - - - - - Asserts that the value is not null. - - - - - - - Asserts that the value is null. - - - - - - - Asserts that the value is null. - - - - - - - Asserts that the condition is true. - - - - - - - Asserts that the condition is true. - - - - - - - An exception that is thrown on a failure. Assertions.Assert._raiseExceptions needs to be set to true. - - - - - A float comparer used by Assertions.Assert performing approximate comparison. - - - - - Default epsilon used by the comparer. - - - - - Default instance of a comparer class with deafult error epsilon and absolute error check. - - - - - Performs equality check with absolute error check. - - Expected value. - Actual value. - Comparison error. - - Result of the comparison. - - - - - Performs equality check with relative error check. - - Expected value. - Actual value. - Comparison error. - - Result of the comparison. - - - - - Creates an instance of the comparer. - - Should a relative check be used when comparing values? By default, an absolute check will be used. - Allowed comparison error. By default, the FloatComparer.kEpsilon is used. - - - - Creates an instance of the comparer. - - Should a relative check be used when comparing values? By default, an absolute check will be used. - Allowed comparison error. By default, the FloatComparer.kEpsilon is used. - - - - Creates an instance of the comparer. - - Should a relative check be used when comparing values? By default, an absolute check will be used. - Allowed comparison error. By default, the FloatComparer.kEpsilon is used. - - - - Creates an instance of the comparer. - - Should a relative check be used when comparing values? By default, an absolute check will be used. - Allowed comparison error. By default, the FloatComparer.kEpsilon is used. - - - - An extension class that serves as a wrapper for the Assert class. - - - - - An extension method for Assertions.Assert.AreApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreEqual. - - - - - - - - An extension method for Assertions.Assert.AreEqual. - - - - - - - - An extension method for Assertions.Assert.IsFalse. - - - - - - - An extension method for Assertions.Assert.IsFalse. - - - - - - - An extension method for Assertions.Assert.IsNull. - - - - - - - An extension method for Assertions.Assert.IsNull. - - - - - - - An extension method for Assertions.Assert.IsTrue. - - - - - - - An extension method for Assertions.Assert.IsTrue. - - - - - - - An extension method for Assertions.Assert.AreNotApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreNotApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreNotApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreNotApproximatelyEqual. - - - - - - - - - An extension method for Assertions.Assert.AreNotEqual. - - - - - - - - An extension method for Assertions.Assert.AreNotEqual. - - - - - - - - An extension method for Assertions.Assert.AreNotNull. - - - - - - - An extension method for Assertions.Assert.AreNotNull. - - - - - - - AssetBundles let you stream additional assets via the UnityWebRequest class and instantiate them at runtime. AssetBundles are created via BuildPipeline.BuildAssetBundle. - - - - - Return true if the AssetBundle is a streamed Scene AssetBundle. - - - - - Check if an AssetBundle contains a specific object. - - - - - - Loads an asset bundle from a disk. - - Path of the file on disk - -See Also: UnityWebRequestAssetBundle.GetAssetBundle, DownloadHandlerAssetBundle. - - - - Asynchronously create an AssetBundle from a memory region. - - - - - - Synchronously create an AssetBundle from a memory region. - - Array of bytes with the AssetBundle data. - - - - Return all asset names in the AssetBundle. - - - - - To use when you need to get a list of all the currently loaded Asset Bundles. - - - Returns IEnumerable<AssetBundle> of all currently loaded Asset Bundles. - - - - - Return all the Scene asset paths (paths to *.unity assets) in the AssetBundle. - - - - - Loads all assets contained in the asset bundle that inherit from type. - - - - - - Loads all assets contained in the asset bundle. - - - - - Loads all assets contained in the asset bundle that inherit from type T. - - - - - Loads all assets contained in the asset bundle asynchronously. - - - - - Loads all assets contained in the asset bundle that inherit from T asynchronously. - - - - - Loads all assets contained in the asset bundle that inherit from type asynchronously. - - - - - - Loads asset with name from the bundle. - - - - - - Loads asset with name of a given type from the bundle. - - - - - - - Loads asset with name of type T from the bundle. - - - - - - Asynchronously loads asset with name from the bundle. - - - - - - Asynchronously loads asset with name of a given T from the bundle. - - - - - - Asynchronously loads asset with name of a given type from the bundle. - - - - - - - Loads asset and sub assets with name from the bundle. - - - - - - Loads asset and sub assets with name of a given type from the bundle. - - - - - - - Loads asset and sub assets with name of type T from the bundle. - - - - - - Loads asset with sub assets with name from the bundle asynchronously. - - - - - - Loads asset with sub assets with name of type T from the bundle asynchronously. - - - - - - Loads asset with sub assets with name of a given type from the bundle asynchronously. - - - - - - - Synchronously loads an AssetBundle from a file on disk. - - Path of the file on disk. - An optional CRC-32 checksum of the uncompressed content. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. - An optional byte offset. This value specifies where to start reading the AssetBundle from. - - Loaded AssetBundle object or null if failed. - - - - - Synchronously loads an AssetBundle from a file on disk. - - Path of the file on disk. - An optional CRC-32 checksum of the uncompressed content. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. - An optional byte offset. This value specifies where to start reading the AssetBundle from. - - Loaded AssetBundle object or null if failed. - - - - - Asynchronously loads an AssetBundle from a file on disk. - - Path of the file on disk. - An optional CRC-32 checksum of the uncompressed content. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. - An optional byte offset. This value specifies where to start reading the AssetBundle from. - - Asynchronous create request for an AssetBundle. Use AssetBundleCreateRequest.assetBundle property to get an AssetBundle once it is loaded. - - - - - Synchronously create an AssetBundle from a memory region. - - Array of bytes with the AssetBundle data. - An optional CRC-32 checksum of the uncompressed content. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. - - Loaded AssetBundle object or null if failed. - - - - - Asynchronously create an AssetBundle from a memory region. - - Array of bytes with the AssetBundle data. - An optional CRC-32 checksum of the uncompressed content. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. - - Asynchronous create request for an AssetBundle. Use AssetBundleCreateRequest.assetBundle property to get an AssetBundle once it is loaded. - - - - - Synchronously loads an AssetBundle from a managed Stream. - - The managed Stream object. Unity calls Read(), Seek() and the Length property on this object to load the AssetBundle data. - An optional CRC-32 checksum of the uncompressed content. - You can use this to override the size of the read buffer Unity uses while loading data. The default size is 32KB. - - The loaded AssetBundle object or null when the object fails to load. - - - - - Asynchronously loads an AssetBundle from a managed Stream. - - The managed Stream object. Unity calls Read(), Seek() and the Length property on this object to load the AssetBundle data. - An optional CRC-32 checksum of the uncompressed content. - You can use this to override the size of the read buffer Unity uses while loading data. The default size is 32KB. - - Asynchronous create request for an AssetBundle. Use AssetBundleCreateRequest.assetBundle property to get an AssetBundle once it is loaded. - - - - - Asynchronously recompress a downloaded/stored AssetBundle from one BuildCompression to another. - - Path to the AssetBundle to recompress. - Path to the recompressed AssetBundle to be generated. Can be the same as inputPath. - The compression method, level and blocksize to use during recompression. Only some BuildCompression types are supported (see note). - CRC of the AssetBundle to test against. Testing this requires additional file reading and computation. Pass in 0 to skip this check. - The priority at which the recompression operation should run. This sets thread priority during the operation and does not effect the order in which operations are performed. Recompression operations run on a background worker thread. - - - - Unloads all assets in the bundle. - - - - - - Unloads all currently loaded Asset Bundles. - - Determines whether the current instances of objects loaded from Asset Bundles will also be unloaded. - - - - Asynchronous create request for an AssetBundle. - - - - - Asset object being loaded (Read Only). - - - - - The result of an Asset Bundle Load or Recompress Operation. - - - - - The Asset Bundle is already loaded. - - - - - The operation was cancelled. - - - - - The Asset Bundle was not successfully cached. - - - - - Failed to decompress the Asset Bundle. - - - - - The target path given for the Recompression operation could not be deleted for swap with recompressed bundle file. - - - - - Failed to read the Asset Bundle file. - - - - - Failed to write to the file system. - - - - - The Asset Bundle does not contain any serialized data. It may be empty, or corrupt. - - - - - The AssetBundle is incompatible with this version of Unity. - - - - - The decompressed Asset data did not match the precomputed CRC. This may suggest that the AssetBundle did not download correctly. - - - - - This does not appear to be a valid Asset Bundle. - - - - - The target path given for the Recompression operation exists but is not an Archive container. - - - - - The target path given for the Recompression operation is an Archive that is currently loaded. - - - - - The operation completed successfully. - - - - - Manifest for all the AssetBundles in the build. - - - - - Get all the AssetBundles in the manifest. - - - An array of asset bundle names. - - - - - Get all the AssetBundles with variant in the manifest. - - - An array of asset bundle names. - - - - - Get all the dependent AssetBundles for the given AssetBundle. - - Name of the asset bundle. - - - - Get the hash for the given AssetBundle. - - Name of the asset bundle. - - The 128-bit hash for the asset bundle. - - - - - Get the direct dependent AssetBundles for the given AssetBundle. - - Name of the asset bundle. - - Array of asset bundle names this asset bundle depends on. - - - - - Asynchronous AssetBundle recompression from one compression method and level to another. - - - - - A string describing the recompression operation result (Read Only). - - - - - Path of the AssetBundle being recompressed (Read Only). - - - - - Path of the resulting recompressed AssetBundle (Read Only). - - - - - Result of the recompression operation. - - - - - True if the recompress operation is complete and was successful, otherwise false (Read Only). - - - - - Asynchronous load request from an AssetBundle. - - - - - Asset objects with sub assets being loaded. (Read Only) - - - - - Asset object being loaded (Read Only). - - - - - Asynchronous operation coroutine. - - - - - Allow Scenes to be activated as soon as it is ready. - - - - - Event that is invoked upon operation completion. An event handler that is registered in the same frame as the call that creates it will be invoked next frame, even if the operation is able to complete synchronously. If a handler is registered after the operation has completed and has already invoked the complete event, the handler will be called synchronously. - - Action<AsyncOperation> handler - function signature for completion event handler. - - - - Has the operation finished? (Read Only) - - - - - Priority lets you tweak in which order async operation calls will be performed. - - - - - What's the operation's progress. (Read Only) - - - - - An implementation of IPlayable that controls an AudioClip. - - - - - Creates an AudioClipPlayable in the PlayableGraph. - - The PlayableGraph that will contain the new AnimationLayerMixerPlayable. - The AudioClip that will be added in the PlayableGraph. - True if the clip should loop, false otherwise. - - A AudioClipPlayable linked to the PlayableGraph. - - - - - AudioMixer asset. - - - - - Routing target. - - - - - How time should progress for this AudioMixer. Used during Snapshot transitions. - - - - - Resets an exposed parameter to its initial value. - - Exposed parameter. - - Returns false if the parameter was not found or could not be set. - - - - - Connected groups in the mixer form a path from the mixer's master group to the leaves. This path has the format "Master GroupChild of Master GroupGrandchild of Master Group", so to find the grandchild group in this example, a valid search string would be for instance "randchi" which would return exactly one group while "hild" or "oup/" would return 2 different groups. - - Sub-string of the paths to be matched. - - Groups in the mixer whose paths match the specified search path. - - - - - The name must be an exact match. - - Name of snapshot object to be returned. - - The snapshot identified by the name. - - - - - Returns the value of the exposed parameter specified. If the parameter doesn't exist the function returns false. Prior to calling SetFloat and after ClearFloat has been called on this parameter the value returned will be that of the current snapshot or snapshot transition. - - Name of exposed parameter. - Return value of exposed parameter. - - Returns false if the exposed parameter specified doesn't exist. - - - - - Sets the value of the exposed parameter specified. When a parameter is exposed, it is not controlled by mixer snapshots and can therefore only be changed via this function. - - Name of exposed parameter. - New value of exposed parameter. - - Returns false if the exposed parameter was not found or snapshots are currently being edited. - - - - - Transitions to a weighted mixture of the snapshots specified. This can be used for games that specify the game state as a continuum between states or for interpolating snapshots from a triangulated map location. - - The set of snapshots to be mixed. - The mix weights for the snapshots specified. - Relative time after which the mixture should be reached from any current state. - - - - Object representing a group in the mixer. - - - - - An implementation of IPlayable that controls an audio mixer. - - - - - Object representing a snapshot in the mixer. - - - - - Performs an interpolated transition towards this snapshot over the time interval specified. - - Relative time after which this snapshot should be reached from any current state. - - - - The mode in which an AudioMixer should update its time. - - - - - Update the AudioMixer with scaled game time. - - - - - Update the AudioMixer with unscaled realtime. - - - - - A PlayableBinding that contains information representing an AudioPlayableOutput. - - - - - Creates a PlayableBinding that contains information representing an AudioPlayableOutput. - - A reference to a UnityEngine.Object that acts as a key for this binding. - The name of the AudioPlayableOutput. - - Returns a PlayableBinding that contains information that is used to create an AudioPlayableOutput. - - - - - A IPlayableOutput implementation that will be used to play audio. - - - - - Creates an AudioPlayableOutput in the PlayableGraph. - - The PlayableGraph that will contain the AnimationPlayableOutput. - The name of the output. - The AudioSource that will play the AudioPlayableOutput source Playable. - - A new AudioPlayableOutput attached to the PlayableGraph. - - - - - Gets the state of output playback when seeking. - - - Returns true if the output plays when seeking. Returns false otherwise. - - - - - Returns an invalid AudioPlayableOutput. - - - - - Controls whether the output should play when seeking. - - Set to true to play the output when seeking. Set to false to disable audio scrubbing on this output. Default is true. - - - - The Audio Chorus Filter takes an Audio Clip and processes it creating a chorus effect. - - - - - Chorus delay in ms. 0.1 to 100.0. Default = 40.0 ms. - - - - - Chorus modulation depth. 0.0 to 1.0. Default = 0.03. - - - - - Volume of original signal to pass to output. 0.0 to 1.0. Default = 0.5. - - - - - Chorus feedback. Controls how much of the wet signal gets fed back into the chorus buffer. 0.0 to 1.0. Default = 0.0. - - - - - Chorus modulation rate in hz. 0.0 to 20.0. Default = 0.8 hz. - - - - - Volume of 1st chorus tap. 0.0 to 1.0. Default = 0.5. - - - - - Volume of 2nd chorus tap. This tap is 90 degrees out of phase of the first tap. 0.0 to 1.0. Default = 0.5. - - - - - Volume of 3rd chorus tap. This tap is 90 degrees out of phase of the second tap. 0.0 to 1.0. Default = 0.5. - - - - - A container for audio data. - - - - - Returns true if this audio clip is ambisonic (read-only). - - - - - The number of channels in the audio clip. (Read Only) - - - - - The sample frequency of the clip in Hertz. (Read Only) - - - - - Returns true if the AudioClip is ready to play (read-only). - - - - - The length of the audio clip in seconds. (Read Only) - - - - - Corresponding to the "Load In Background" flag in the inspector, when this flag is set, the loading will happen delayed without blocking the main thread. - - - - - Returns the current load state of the audio data associated with an AudioClip. - - - - - The load type of the clip (read-only). - - - - - Preloads audio data of the clip when the clip asset is loaded. When this flag is off, scripts have to call AudioClip.LoadAudioData() to load the data before the clip can be played. Properties like length, channels and format are available before the audio data has been loaded. - - - - - The length of the audio clip in samples. (Read Only) - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Creates a user AudioClip with a name and with the given length in samples, channels and frequency. - - Name of clip. - Number of sample frames. - Number of channels per frame. - Sample frequency of clip. - Audio clip is played back in 3D. - True if clip is streamed, that is if the pcmreadercallback generates data on the fly. - This callback is invoked to generate a block of sample data. Non-streamed clips call this only once at creation time while streamed clips call this continuously. - This callback is invoked whenever the clip loops or changes playback position. - - A reference to the created AudioClip. - - - - - Fills an array with sample data from the clip. - - - - - - - Loads the audio data of a clip. Clips that have "Preload Audio Data" set will load the audio data automatically. - - - Returns true if loading succeeded. - - - - - Delegate called each time AudioClip reads data. - - Array of floats containing data read from the clip. - - - - Delegate called each time AudioClip changes read position. - - New position in the audio clip. - - - - Set sample data in a clip. - - - - - - - Unloads the audio data associated with the clip. This works only for AudioClips that are based on actual sound file assets. - - - Returns false if unloading failed. - - - - - Determines how the audio clip is loaded in. - - - - - The audio data of the clip will be kept in memory in compressed form. - - - - - The audio data is decompressed when the audio clip is loaded. - - - - - Streams audio data from disk. - - - - - An enum containing different compression types. - - - - - AAC Audio Compression. - - - - - Adaptive differential pulse-code modulation. - - - - - Sony proprietary hardware format. - - - - - Nintendo ADPCM audio compression format. - - - - - Sony proprietory hardware codec. - - - - - MPEG Audio Layer III. - - - - - Uncompressed pulse-code modulation. - - - - - Sony proprietary hardware format. - - - - - Vorbis compression format. - - - - - Xbox One proprietary hardware format. - - - - - Specifies the current properties or desired properties to be set for the audio system. - - - - - The length of the DSP buffer in samples determining the latency of sounds by the audio output device. - - - - - The current maximum number of simultaneously audible sounds in the game. - - - - - The maximum number of managed sounds in the game. Beyond this limit sounds will simply stop playing. - - - - - The current sample rate of the audio output device used. - - - - - The current speaker mode used by the audio output device. - - - - - Value describing the current load state of the audio data associated with an AudioClip. - - - - - Value returned by AudioClip.loadState for an AudioClip that has failed loading its audio data. - - - - - Value returned by AudioClip.loadState for an AudioClip that has succeeded loading its audio data. - - - - - Value returned by AudioClip.loadState for an AudioClip that is currently loading audio data. - - - - - Value returned by AudioClip.loadState for an AudioClip that has no audio data loaded and where loading has not been initiated yet. - - - - - The Audio Distortion Filter distorts the sound from an AudioSource or sounds reaching the AudioListener. - - - - - Distortion value. 0.0 to 1.0. Default = 0.5. - - - - - The Audio Echo Filter repeats a sound after a given Delay, attenuating the repetitions based on the Decay Ratio. - - - - - Echo decay per delay. 0 to 1. 1.0 = No decay, 0.0 = total decay (i.e. simple 1 line delay). Default = 0.5. - - - - - Echo delay in ms. 10 to 5000. Default = 500. - - - - - Volume of original signal to pass to output. 0.0 to 1.0. Default = 1.0. - - - - - Volume of echo signal to pass to output. 0.0 to 1.0. Default = 1.0. - - - - - The Audio High Pass Filter passes high frequencies of an AudioSource, and cuts off signals with frequencies lower than the Cutoff Frequency. - - - - - Highpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0. - - - - - Determines how much the filter's self-resonance isdampened. - - - - - Representation of a listener in 3D space. - - - - - The paused state of the audio system. - - - - - This lets you set whether the Audio Listener should be updated in the fixed or dynamic update. - - - - - Controls the game sound volume (0.0 to 1.0). - - - - - Provides a block of the listener (master)'s output data. - - The array to populate with audio samples. Its length must be a power of 2. - The channel to sample from. - - - - Deprecated Version. Returns a block of the listener (master)'s output data. - - - - - - - Provides a block of the listener (master)'s spectrum data. - - The array to populate with audio samples. Its length must be a power of 2. - The channel to sample from. - The FFTWindow type to use when sampling. - - - - Deprecated Version. Returns a block of the listener (master)'s spectrum data. - - Number of values (the length of the samples array). Must be a power of 2. Min = 64. Max = 8192. - The channel to sample from. - The FFTWindow type to use when sampling. - - - - The Audio Low Pass Filter passes low frequencies of an AudioSource or all sounds reaching an AudioListener, while removing frequencies higher than the Cutoff Frequency. - - - - - Returns or sets the current custom frequency cutoff curve. - - - - - Lowpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0. - - - - - Determines how much the filter's self-resonance is dampened. - - - - - Allow recording the main output of the game or specific groups in the AudioMixer. - - - - - Returns the number of samples available since the last time AudioRenderer.Render was called. This is dependent on the frame capture rate. - - - Number of samples available since last recorded frame. - - - - - Performs the recording of the main output as well as any optional mixer groups that have been registered via AudioRenderer.AddMixerGroupSink. - - The buffer to write the sample data to. - - True if the recording succeeded. - - - - - Enters audio recording mode. After this Unity will output silence until AudioRenderer.Stop is called. - - - True if the engine was switched into output recording mode. False if it is already recording. - - - - - Exits audio recording mode. After this audio output will be audible again. - - - True if the engine was recording when this function was called. - - - - - The Audio Reverb Filter takes an Audio Clip and distorts it to create a custom reverb effect. - - - - - Decay HF Ratio : High-frequency to low-frequency decay time ratio. Ranges from 0.1 to 2.0. Default is 0.5. - - - - - Reverberation decay time at low-frequencies in seconds. Ranges from 0.1 to 20.0. Default is 1.0. - - - - - Reverberation density (modal density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. - - - - - Reverberation diffusion (echo density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. - - - - - Mix level of dry signal in output in millibels (mB). Ranges from -10000.0 to 0.0. Default is 0. - - - - - Reference high frequency in hertz (Hz). Ranges from 1000.0 to 20000.0. Default is 5000.0. - - - - - Reference low-frequency in hertz (Hz). Ranges from 20.0 to 1000.0. Default is 250.0. - - - - - Late reverberation level relative to room effect in millibels (mB). Ranges from -10000.0 to 2000.0. Default is 0.0. - - - - - Early reflections level relative to room effect in millibels (mB). Ranges from -10000.0 to 1000.0. Default is -10000.0. - - - - - Late reverberation delay time relative to first reflection in seconds. Ranges from 0.0 to 0.1. Default is 0.04. - - - - - Late reverberation level relative to room effect in millibels (mB). Ranges from -10000.0 to 2000.0. Default is 0.0. - - - - - Set/Get reverb preset properties. - - - - - Room effect level at low frequencies in millibels (mB). Ranges from -10000.0 to 0.0. Default is 0.0. - - - - - Room effect high-frequency level re. low frequency level in millibels (mB). Ranges from -10000.0 to 0.0. Default is 0.0. - - - - - Room effect low-frequency level in millibels (mB). Ranges from -10000.0 to 0.0. Default is 0.0. - - - - - Reverb presets used by the Reverb Zone class and the audio reverb filter. - - - - - Alley preset. - - - - - Arena preset. - - - - - Auditorium preset. - - - - - Bathroom preset. - - - - - Carpeted hallway preset. - - - - - Cave preset. - - - - - City preset. - - - - - Concert hall preset. - - - - - Dizzy preset. - - - - - Drugged preset. - - - - - Forest preset. - - - - - Generic preset. - - - - - Hallway preset. - - - - - Hangar preset. - - - - - Livingroom preset. - - - - - Mountains preset. - - - - - No reverb preset selected. - - - - - Padded cell preset. - - - - - Parking Lot preset. - - - - - Plain preset. - - - - - Psychotic preset. - - - - - Quarry preset. - - - - - Room preset. - - - - - Sewer pipe preset. - - - - - Stone corridor preset. - - - - - Stoneroom preset. - - - - - Underwater presset. - - - - - User defined preset. - - - - - Reverb Zones are used when you want to create location based ambient effects in the Scene. - - - - - High-frequency to mid-frequency decay time ratio. - - - - - Reverberation decay time at mid frequencies. - - - - - Value that controls the modal density in the late reverberation decay. - - - - - Value that controls the echo density in the late reverberation decay. - - - - - The distance from the centerpoint that the reverb will not have any effect. Default = 15.0. - - - - - The distance from the centerpoint that the reverb will have full effect at. Default = 10.0. - - - - - Early reflections level relative to room effect. - - - - - Initial reflection delay time. - - - - - Late reverberation level relative to room effect. - - - - - Late reverberation delay time relative to initial reflection. - - - - - Set/Get reverb preset properties. - - - - - Room effect level (at mid frequencies). - - - - - Relative room effect level at high frequencies. - - - - - Relative room effect level at low frequencies. - - - - - Like rolloffscale in global settings, but for reverb room size effect. - - - - - Reference high frequency (hz). - - - - - Reference low frequency (hz). - - - - - Rolloff modes that a 3D sound can have in an audio source. - - - - - Use this when you want to use a custom rolloff. - - - - - Use this mode when you want to lower the volume of your sound over the distance. - - - - - Use this mode when you want a real-world rolloff. - - - - - Controls the global audio settings from script. - - - - - Returns the speaker mode capability of the current audio driver. (Read Only) - - - - - Returns the current time of the audio system. - - - - - Get the mixer's current output rate. - - - - - Gets the current speaker mode. Default is 2 channel stereo. - - - - - A delegate called whenever the global audio settings are changed, either by AudioSettings.Reset or by an external device change such as the OS control panel changing the sample rate or because the default output device was changed, for example when plugging in an HDMI monitor or a USB headset. - - True if the change was caused by an device change. - - - - Returns the current configuration of the audio device and system. The values in the struct may then be modified and reapplied via AudioSettings.Reset. - - - The new configuration to be applied. - - - - - Get the mixer's buffer size in samples. - - Is the length of each buffer in the ringbuffer. - Is number of buffers. - - - - Returns the name of the spatializer selected on the currently-running platform. - - - The spatializer plugin name. - - - - - Returns an array with the names of all the available spatializer plugins. - - - An array of spatializer names. - - - - - A delegate called whenever the global audio settings are changed, either by AudioSettings.Reset or by an external factor such as the OS control panel changing the sample rate or because the default output device was changed, for example when plugging in an HDMI monitor or a USB headset. - - True if the change was caused by an device change. - - - - Performs a change of the device configuration. In response to this the AudioSettings.OnAudioConfigurationChanged delegate is invoked with the argument deviceWasChanged=false. It cannot be guaranteed that the exact settings specified can be used, but the an attempt is made to use the closest match supported by the system. - - The new configuration to be used. - - True if all settings could be successfully applied. - - - - - Sets the spatializer plugin for all platform groups. If a null or empty string is passed in, the existing spatializer plugin will be cleared. - - The spatializer plugin name. - - - - A representation of audio sources in 3D. - - - - - Bypass effects (Applied from filter components or global listener filters). - - - - - When set global effects on the AudioListener will not be applied to the audio signal generated by the AudioSource. Does not apply if the AudioSource is playing into a mixer group. - - - - - When set doesn't route the signal from an AudioSource into the global reverb associated with reverb zones. - - - - - The default AudioClip to play. - - - - - Sets the Doppler scale for this AudioSource. - - - - - Allows AudioSource to play even though AudioListener.pause is set to true. This is useful for the menu element sounds or background music in pause menus. - - - - - This makes the audio source not take into account the volume of the audio listener. - - - - - Is the clip playing right now (Read Only)? - - - - - True if all sounds played by the AudioSource (main sound started by Play() or playOnAwake as well as one-shots) are culled by the audio system. - - - - - Is the audio clip looping? - - - - - (Logarithmic rolloff) MaxDistance is the distance a sound stops attenuating at. - - - - - Within the Min distance the AudioSource will cease to grow louder in volume. - - - - - Un- / Mutes the AudioSource. Mute sets the volume=0, Un-Mute restore the original volume. - - - - - The target group to which the AudioSource should route its signal. - - - - - Pan has been deprecated. Use panStereo instead. - - - - - PanLevel has been deprecated. Use spatialBlend instead. - - - - - Pans a playing sound in a stereo way (left or right). This only applies to sounds that are Mono or Stereo. - - - - - The pitch of the audio source. - - - - - If set to true, the audio source will automatically start playing on awake. - - - - - Sets the priority of the AudioSource. - - - - - The amount by which the signal from the AudioSource will be mixed into the global reverb associated with the Reverb Zones. - - - - - Sets/Gets how the AudioSource attenuates over distance. - - - - - Sets how much this AudioSource is affected by 3D spatialisation calculations (attenuation, doppler etc). 0.0 makes the sound full 2D, 1.0 makes it full 3D. - - - - - Enables or disables spatialization. - - - - - Determines if the spatializer effect is inserted before or after the effect filters. - - - - - Sets the spread angle (in degrees) of a 3d stereo or multichannel sound in speaker space. - - - - - Playback position in seconds. - - - - - Playback position in PCM samples. - - - - - Whether the Audio Source should be updated in the fixed or dynamic update. - - - - - The volume of the audio source (0.0 to 1.0). - - - - - Reads a user-defined parameter of a custom ambisonic decoder effect that is attached to an AudioSource. - - Zero-based index of user-defined parameter to be read. - Return value of the user-defined parameter that is read. - - True, if the parameter could be read. - - - - - Get the current custom curve for the given AudioSourceCurveType. - - The curve type to get. - - The custom AnimationCurve corresponding to the given curve type. - - - - - Provides a block of the currently playing source's output data. - - The array to populate with audio samples. Its length must be a power of 2. - The channel to sample from. - - - - Deprecated Version. Returns a block of the currently playing source's output data. - - - - - - - Reads a user-defined parameter of a custom spatializer effect that is attached to an AudioSource. - - Zero-based index of user-defined parameter to be read. - Return value of the user-defined parameter that is read. - - True, if the parameter could be read. - - - - - Provides a block of the currently playing audio source's spectrum data. - - The array to populate with audio samples. Its length must be a power of 2. - The channel to sample from. - The FFTWindow type to use when sampling. - - - - Deprecated Version. Returns a block of the currently playing source's spectrum data. - - The number of samples to retrieve. Must be a power of 2. - The channel to sample from. - The FFTWindow type to use when sampling. - - - - Pauses playing the clip. - - - - - Plays the clip. - - Deprecated. Delay in number of samples, assuming a 44100Hz sample rate (meaning that Play(44100) will delay the playing by exactly 1 sec). - - - - Plays the clip. - - Deprecated. Delay in number of samples, assuming a 44100Hz sample rate (meaning that Play(44100) will delay the playing by exactly 1 sec). - - - - Plays an AudioClip at a given position in world space. - - Audio data to play. - Position in world space from which sound originates. - Playback volume. - - - - Plays an AudioClip at a given position in world space. - - Audio data to play. - Position in world space from which sound originates. - Playback volume. - - - - Plays the clip with a delay specified in seconds. Users are advised to use this function instead of the old Play(delay) function that took a delay specified in samples relative to a reference rate of 44.1 kHz as an argument. - - Delay time specified in seconds. - - - - Plays an AudioClip, and scales the AudioSource volume by volumeScale. - - The clip being played. - The scale of the volume (0-1). - - - - Plays an AudioClip, and scales the AudioSource volume by volumeScale. - - The clip being played. - The scale of the volume (0-1). - - - - Plays the clip at a specific time on the absolute time-line that AudioSettings.dspTime reads from. - - Time in seconds on the absolute time-line that AudioSettings.dspTime refers to for when the sound should start playing. - - - - Sets a user-defined parameter of a custom ambisonic decoder effect that is attached to an AudioSource. - - Zero-based index of user-defined parameter to be set. - New value of the user-defined parameter. - - True, if the parameter could be set. - - - - - Set the custom curve for the given AudioSourceCurveType. - - The curve type that should be set. - The curve that should be applied to the given curve type. - - - - Changes the time at which a sound that has already been scheduled to play will end. Notice that depending on the timing not all rescheduling requests can be fulfilled. - - Time in seconds. - - - - Changes the time at which a sound that has already been scheduled to play will start. - - Time in seconds. - - - - Sets a user-defined parameter of a custom spatializer effect that is attached to an AudioSource. - - Zero-based index of user-defined parameter to be set. - New value of the user-defined parameter. - - True, if the parameter could be set. - - - - - Stops playing the clip. - - - - - Unpause the paused playback of this AudioSource. - - - - - This defines the curve type of the different custom curves that can be queried and set within the AudioSource. - - - - - Custom Volume Rolloff. - - - - - Reverb Zone Mix. - - - - - The Spatial Blend. - - - - - The 3D Spread. - - - - - These are speaker types defined for use with AudioSettings.speakerMode. - - - - - Channel count is set to 6. 5.1 speaker setup. This includes front left, front right, center, rear left, rear right and a subwoofer. - - - - - Channel count is set to 8. 7.1 speaker setup. This includes front left, front right, center, rear left, rear right, side left, side right and a subwoofer. - - - - - Channel count is set to 1. The speakers are monaural. - - - - - Channel count is set to 2. Stereo output, but data is encoded in a way that is picked up by a Prologic/Prologic2 decoder and split into a 5.1 speaker setup. - - - - - Channel count is set to 4. 4 speaker setup. This includes front left, front right, rear left, rear right. - - - - - Channel count is unaffected. - - - - - Channel count is set to 2. The speakers are stereo. This is the editor default. - - - - - Channel count is set to 5. 5 speaker setup. This includes front left, front right, center, rear left, rear right. - - - - - Type of the imported(native) data. - - - - - Acc - not supported. - - - - - Aiff. - - - - - iPhone hardware decoder, supports AAC, ALAC and MP3. Extracodecdata is a pointer to an FMOD_AUDIOQUEUE_EXTRACODECDATA structure. - - - - - Impulse tracker. - - - - - Protracker / Fasttracker MOD. - - - - - MP2/MP3 MPEG. - - - - - Ogg vorbis. - - - - - ScreamTracker 3. - - - - - 3rd party / unknown plugin format. - - - - - VAG. - - - - - Microsoft WAV. - - - - - FastTracker 2 XM. - - - - - Xbox360 XMA. - - - - - Describes when an AudioSource or AudioListener is updated. - - - - - Updates the source or listener in the MonoBehaviour.FixedUpdate loop if it is attached to a Rigidbody, dynamic MonoBehaviour.Update otherwise. - - - - - Updates the source or listener in the dynamic MonoBehaviour.Update loop. - - - - - Updates the source or listener in the MonoBehaviour.FixedUpdate loop. - - - - - Avatar definition. - - - - - Return true if this avatar is a valid human avatar. - - - - - Return true if this avatar is a valid mecanim avatar. It can be a generic avatar or a human avatar. - - - - - Class to build avatars from user scripts. - - - - - Create a new generic avatar. - - Root object of your transform hierarchy. - Transform name of the root motion transform. If empty no root motion is defined and you must take care of avatar movement yourself. - - - - Create a humanoid avatar. - - Root object of your transform hierachy. It must be the top most gameobject when you create the avatar. - Humanoid description of the avatar. - - Returns the Avatar, you must always always check the avatar is valid before using it with Avatar.isValid. - - - - - IK Goal. - - - - - The left foot. - - - - - The left hand. - - - - - The right foot. - - - - - The right hand. - - - - - IK Hint. - - - - - The left elbow IK hint. - - - - - The left knee IK hint. - - - - - The right elbow IK hint. - - - - - The right knee IK hint. - - - - - AvatarMask is used to mask out humanoid body parts and transforms. - - - - - The number of humanoid body parts. - - - - - Number of transforms. - - - - - Adds a transform path into the AvatarMask. - - The transform to add into the AvatarMask. - Whether to also add all children of the specified transform. - - - - Creates a new AvatarMask. - - - - - Returns true if the humanoid body part at the given index is active. - - The index of the humanoid body part. - - - - Returns true if the transform at the given index is active. - - The index of the transform. - - - - Returns the path of the transform at the given index. - - The index of the transform. - - - - Removes a transform path from the AvatarMask. - - The Transform that should be removed from the AvatarMask. - Whether to also remove all children of the specified transform. - - - - Sets the humanoid body part at the given index to active or not. - - The index of the humanoid body part. - Active or not. - - - - Sets the tranform at the given index to active or not. - - The index of the transform. - Active or not. - - - - Sets the path of the transform at the given index. - - The index of the transform. - The path of the transform. - - - - Avatar body part. - - - - - The Body. - - - - - The Head. - - - - - Total number of body parts. - - - - - The Left Arm. - - - - - Left Fingers. - - - - - Left Foot IK. - - - - - Left Hand IK. - - - - - The Left Leg. - - - - - The Right Arm. - - - - - Right Fingers. - - - - - Right Foot IK. - - - - - Right Hand IK. - - - - - The Right Leg. - - - - - The Root. - - - - - Target. - - - - - The body, center of mass. - - - - - The left foot. - - - - - The left hand. - - - - - The right foot. - - - - - The right hand. - - - - - The root, the position of the game object. - - - - - Enumeration for SystemInfo.batteryStatus which represents the current status of the device's battery. - - - - - Device is plugged in and charging. - - - - - Device is unplugged and discharging. - - - - - Device is plugged in and the battery is full. - - - - - Device is plugged in, but is not charging. - - - - - The device's battery status cannot be determined. If battery status is not available on your target platform, SystemInfo.batteryStatus will return this value. - - - - - Use this BeforeRenderOrderAttribute when you need to specify a custom callback order for Application.onBeforeRender. - - - - - The order, lowest to highest, that the Application.onBeforeRender event recievers will be called in. - - - - - When applied to methods, specifies the order called during Application.onBeforeRender events. - - The sorting order, sorted lowest to highest. - - - - Behaviours are Components that can be enabled or disabled. - - - - - Enabled Behaviours are Updated, disabled Behaviours are not. - - - - - Has the Behaviour had active and enabled called? - - - - - BillboardAsset describes how a billboard is rendered. - - - - - Height of the billboard that is below ground. - - - - - Height of the billboard. - - - - - Number of pre-rendered images that can be switched when the billboard is viewed from different angles. - - - - - Number of indices in the billboard mesh. - - - - - The material used for rendering. - - - - - Number of vertices in the billboard mesh. - - - - - Width of the billboard. - - - - - Constructs a new BillboardAsset. - - - - - Get the array of billboard image texture coordinate data. - - The list that receives the array. - - - - Get the array of billboard image texture coordinate data. - - The list that receives the array. - - - - Get the indices of the billboard mesh. - - The list that receives the array. - - - - Get the indices of the billboard mesh. - - The list that receives the array. - - - - Get the vertices of the billboard mesh. - - The list that receives the array. - - - - Get the vertices of the billboard mesh. - - The list that receives the array. - - - - Set the array of billboard image texture coordinate data. - - The array of data to set. - - - - Set the array of billboard image texture coordinate data. - - The array of data to set. - - - - Set the indices of the billboard mesh. - - The array of data to set. - - - - Set the indices of the billboard mesh. - - The array of data to set. - - - - Set the vertices of the billboard mesh. - - The array of data to set. - - - - Set the vertices of the billboard mesh. - - The array of data to set. - - - - Renders a billboard from a BillboardAsset. - - - - - The BillboardAsset to render. - - - - - Constructor. - - - - - The BitStream class represents seralized variables, packed into a stream. - - - - - Is the BitStream currently being read? (Read Only) - - - - - Is the BitStream currently being written? (Read Only) - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Serializes different types of variables. - - - - - - - - Blend weights. - - - - - Four bones affect each vertex. - - - - - One bone affects each vertex. - - - - - Two bones affect each vertex. - - - - - Enumeration of all the muscles in the body. - - - - - The chest front-back muscle. - - - - - The chest left-right muscle. - - - - - The chest roll left-right muscle. - - - - - The last value of the BodyDof enum. - - - - - The spine front-back muscle. - - - - - The spine left-right muscle. - - - - - The spine roll left-right muscle. - - - - - The upper chest front-back muscle. - - - - - The upper chest left-right muscle. - - - - - The upper chest roll left-right muscle. - - - - - Skinning bone weights of a vertex in the mesh. - - - - - Index of first bone. - - - - - Index of second bone. - - - - - Index of third bone. - - - - - Index of fourth bone. - - - - - Skinning weight for first bone. - - - - - Skinning weight for second bone. - - - - - Skinning weight for third bone. - - - - - Skinning weight for fourth bone. - - - - - Describes a single bounding sphere for use by a CullingGroup. - - - - - The position of the center of the BoundingSphere. - - - - - The radius of the BoundingSphere. - - - - - Initializes a BoundingSphere. - - The center of the sphere. - The radius of the sphere. - A four-component vector containing the position (packed into the XYZ components) and radius (packed into the W component). - - - - Initializes a BoundingSphere. - - The center of the sphere. - The radius of the sphere. - A four-component vector containing the position (packed into the XYZ components) and radius (packed into the W component). - - - - Represents an axis aligned bounding box. - - - - - The center of the bounding box. - - - - - The extents of the Bounding Box. This is always half of the size of the Bounds. - - - - - The maximal point of the box. This is always equal to center+extents. - - - - - The minimal point of the box. This is always equal to center-extents. - - - - - The total size of the box. This is always twice as large as the extents. - - - - - The closest point on the bounding box. - - Arbitrary point. - - The point on the bounding box or inside the bounding box. - - - - - Is point contained in the bounding box? - - - - - - Creates a new Bounds. - - The location of the origin of the Bounds. - The dimensions of the Bounds. - - - - Grows the Bounds to include the point. - - - - - - Grow the bounds to encapsulate the bounds. - - - - - - Expand the bounds by increasing its size by amount along each side. - - - - - - Expand the bounds by increasing its size by amount along each side. - - - - - - Does ray intersect this bounding box? - - - - - - Does ray intersect this bounding box? - - - - - - - Does another bounding box intersect with this bounding box? - - - - - - Sets the bounds to the min and max value of the box. - - - - - - - The smallest squared distance between the point and this bounding box. - - - - - - Returns a nicely formatted string for the bounds. - - - - - - Returns a nicely formatted string for the bounds. - - - - - - Represents an axis aligned bounding box with all values as integers. - - - - - A BoundsInt.PositionCollection that contains all positions within the BoundsInt. - - - - - The center of the bounding box. - - - - - The maximal point of the box. - - - - - The minimal point of the box. - - - - - The position of the bounding box. - - - - - The total size of the box. - - - - - X value of the minimal point of the box. - - - - - The maximal x point of the box. - - - - - The minimal x point of the box. - - - - - Y value of the minimal point of the box. - - - - - The maximal y point of the box. - - - - - The minimal y point of the box. - - - - - Z value of the minimal point of the box. - - - - - The maximal z point of the box. - - - - - The minimal z point of the box. - - - - - Clamps the position and size of this bounding box to the given bounds. - - Bounds to clamp to. - - - - Is point contained in the bounding box? - - Point to check. - Whether the max limits are included in the check. - - Is point contained in the bounding box? - - - - - Is point contained in the bounding box? - - Point to check. - Whether the max limits are included in the check. - - Is point contained in the bounding box? - - - - - An iterator that allows you to iterate over all positions within the BoundsInt. - - - - - Current position of the enumerator. - - - - - Returns this as an iterator that allows you to iterate over all positions within the BoundsInt. - - - This BoundsInt.PositionEnumerator. - - - - - Moves the enumerator to the next position. - - - Whether the enumerator has successfully moved to the next position. - - - - - Resets this enumerator to its starting state. - - - - - Sets the bounds to the min and max value of the box. - - - - - - - Returns a nicely formatted string for the bounds. - - - - - Use this struct to set up a box cast command to be performed asynchronously during a job. - - - - - Center of the box. - - - - - The direction in which to sweep the box. - - - - - The maximum distance of the sweep. - - - - - Half the size of the box in each dimension. - - - - - A LayerMask that is used to selectively ignore Colliders when casting a box. - - - - - Rotation of the box. - - - - - Creates a BoxcastCommand. - - Center of the box. - Half the size of the box in each dimension. - Rotation of the box. - The direction in which to sweep the box. - The maximum length of the cast. - A that is used to selectively ignore colliders when casting a box. - - - - - Schedules a batch of boxcasts to be performed in a job. - - A NativeArray of the BoxcastCommand to perform. - A NativeArray of RaycastHit where the result of commands are stored. - The minimum number of jobs which should be performed in a single job. - A JobHandle of a job that must be completed before performing the box casts. - - Returns a JobHandle of the job that will perform the box casts. - - - - - A box-shaped primitive collider. - - - - - The center of the box, measured in the object's local space. - - - - - The size of the box, measured in the object's local space. - - - - - Collider for 2D physics representing an axis-aligned rectangle. - - - - - Determines whether the BoxCollider2D's shape is automatically updated based on a SpriteRenderer's tiling properties. - - - - - The center point of the collider in local space. - - - - - Controls the radius of all edges created by the collider. - - - - - The width and height of the rectangle. - - - - - Contains information about compression methods, compression levels and block sizes that are supported by Asset Bundle compression at build time and recompression at runtime. - - - - - LZ4HC "Chunk Based" Compression. - - - - - LZ4 Compression for runtime recompression. - - - - - LZMA Compression. - - - - - Uncompressed Asset Bundle. - - - - - Uncompressed Asset Bundle. - - - - - Applies forces to simulate buoyancy, fluid-flow and fluid drag. - - - - - A force applied to slow angular movement of any Collider2D in contact with the effector. - - - - - The density of the fluid used to calculate the buoyancy forces. - - - - - The angle of the force used to similate fluid flow. - - - - - The magnitude of the force used to similate fluid flow. - - - - - The random variation of the force used to similate fluid flow. - - - - - A force applied to slow linear movement of any Collider2D in contact with the effector. - - - - - Defines an arbitrary horizontal line that represents the fluid surface level. - - - - - Data structure for cache. Please refer to See Also:Caching.AddCache for more information. - - - - - The number of seconds that an AssetBundle may remain unused in the cache before it is automatically deleted. - - - - - Returns the index of the cache in the cache list. - - - - - Allows you to specify the total number of bytes that can be allocated for the cache. - - - - - Returns the path of the cache. - - - - - Returns true if the cache is readonly. - - - - - Returns true if the cache is ready. - - - - - Returns the number of currently unused bytes in the cache. - - - - - Returns the used disk space in bytes. - - - - - Returns true if the cache is valid. - - - - - Removes all cached content in the cache that has been cached by the current application. - - The number of seconds that AssetBundles may remain unused in the cache. - - Returns True when cache clearing succeeded. - - - - - Removes all cached content in the cache that has been cached by the current application. - - The number of seconds that AssetBundles may remain unused in the cache. - - Returns True when cache clearing succeeded. - - - - - Data structure for downloading AssetBundles to a customized cache path. See Also:UnityWebRequestAssetBundle.GetAssetBundle for more information. - - - - - Hash128 which is used as the version of the AssetBundle. - - - - - AssetBundle name which is used as the customized cache path. - - - - - The Caching class lets you manage cached AssetBundles, downloaded using UnityWebRequestAssetBundle.GetAssetBundle(). - - - - - Returns the cache count in the cache list. - - - - - Controls compression of cache data. Enabled by default. - - - - - Gets or sets the current cache in which AssetBundles should be cached. - - - - - Returns the default cache which is added by Unity internally. - - - - - Returns true if Caching system is ready for use. - - - - - Add a cache with the given path. - - Path to the cache folder. - - - - Removes all the cached versions of the given AssetBundle from the cache. - - The AssetBundle name. - - Returns true when cache clearing succeeded. - - - - - Removes all AssetBundle content that has been cached by the current application. - - The number of seconds that AssetBundles may remain unused in the cache. - - True when cache clearing succeeded, false if cache was in use. - - - - - Removes all AssetBundle content that has been cached by the current application. - - The number of seconds that AssetBundles may remain unused in the cache. - - True when cache clearing succeeded, false if cache was in use. - - - - - Removes the given version of the AssetBundle. - - The AssetBundle name. - Version needs to be cleaned. - - Returns true when cache clearing succeeded. Can return false if any cached bundle is in use. - - - - - Removes all the cached versions of the AssetBundle from the cache, except for the specified version. - - The AssetBundle name. - Version needs to be kept. - - Returns true when cache clearing succeeded. - - - - - Returns all paths of the cache in the cache list. - - List of all the cache paths. - - - - Returns the Cache at the given position in the cache list. - - Index of the cache to get. - - A reference to the Cache at the index specified. - - - - - Returns the Cache that has the given cache path. - - The cache path. - - A reference to the Cache with the given path. - - - - - Returns all cached versions of the given AssetBundle. - - The AssetBundle name. - List of all the cached version. - - - - Checks if an AssetBundle is cached. - - Url The filename of the AssetBundle. Domain and path information are stripped from this string automatically. - Version The version number of the AssetBundle to check for. Negative values are not allowed. - - - - True if an AssetBundle matching the url and version parameters has previously been loaded using UnityWebRequestAssetBundle.GetAssetBundle() and is currently stored in the cache. Returns false if the AssetBundle is not in cache, either because it has been flushed from the cache or was never loaded using the Caching API. - - - - - Bumps the timestamp of a cached file to be the current time. - - - - - - - Moves the source Cache after the destination Cache in the cache list. - - The Cache to move. - The Cache which should come before the source Cache in the cache list. - - - - Moves the source Cache before the destination Cache in the cache list. - - The Cache to move. - The Cache which should come after the source Cache in the cache list. - - - - Removes the Cache from cache list. - - The Cache to be removed. - - Returns true if the Cache is removed. - - - - - A Camera is a device through which the player views the world. - - - - - Gets the temporary RenderTexture target for this Camera. - - - - - The rendering path that is currently being used (Read Only). - - - - - Returns all enabled cameras in the Scene. - - - - - The number of cameras in the current Scene. - - - - - Dynamic Resolution Scaling. - - - - - High dynamic range rendering. - - - - - MSAA rendering. - - - - - Determines whether the stereo view matrices are suitable to allow for a single pass cull. - - - - - The aspect ratio (width divided by height). - - - - - The color with which the screen will be cleared. - - - - - Matrix that transforms from camera space to world space (Read Only). - - - - - Identifies what kind of camera this is. - - - - - How the camera clears the background. - - - - - Should the camera clear the stencil buffer after the deferred light pass? - - - - - Number of command buffers set up on this camera (Read Only). - - - - - This is used to render parts of the Scene selectively. - - - - - Sets a custom matrix for the camera to use for all culling queries. - - - - - The camera we are currently rendering with, for low-level render control only (Read Only). - - - - - Camera's depth in the camera rendering order. - - - - - How and if camera generates a depth texture. - - - - - Mask to select which layers can trigger events on the camera. - - - - - The far clipping plane distance. - - - - - The field of view of the camera in degrees. - - - - - The camera focal length, expressed in millimeters. To use this property, enable UsePhysicalProperties. - - - - - Should camera rendering be forced into a RenderTexture. - - - - - There are two gates for a camera, the sensor gate and the resolution gate. The physical camera sensor gate is defined by the sensorSize property, the resolution gate is defined by the render target area. - - - - - High dynamic range rendering. - - - - - Per-layer culling distances. - - - - - How to perform per-layer culling for a Camera. - - - - - The lens offset of the camera. The lens shift is relative to the sensor size. For example, a lens shift of 0.5 offsets the sensor by half its horizontal size. - - - - - The first enabled camera tagged "MainCamera" (Read Only). - - - - - The near clipping plane distance. - - - - - Get or set the raw projection matrix with no camera offset (no jittering). - - - - - Event that is fired after any camera finishes rendering. - - - - - Event that is fired before any camera starts culling. - - - - - Event that is fired before any camera starts rendering. - - - - - Opaque object sorting mode. - - - - - Is the camera orthographic (true) or perspective (false)? - - - - - Camera's half-size when in orthographic mode. - - - - - How tall is the camera in pixels (not accounting for dynamic resolution scaling) (Read Only). - - - - - Where on the screen is the camera rendered in pixel coordinates. - - - - - How wide is the camera in pixels (not accounting for dynamic resolution scaling) (Read Only). - - - - - Get the view projection matrix used on the last frame. - - - - - Set a custom projection matrix. - - - - - Where on the screen is the camera rendered in normalized coordinates. - - - - - The rendering path that should be used, if possible. - - - - - How tall is the camera in pixels (accounting for dynamic resolution scaling) (Read Only). - - - - - How wide is the camera in pixels (accounting for dynamic resolution scaling) (Read Only). - - - - - If not null, the camera will only render the contents of the specified Scene. - - - - - The size of the camera sensor, expressed in millimeters. - - - - - Returns the eye that is currently rendering. -If called when stereo is not enabled it will return Camera.MonoOrStereoscopicEye.Mono. - -If called during a camera rendering callback such as OnRenderImage it will return the currently rendering eye. - -If called outside of a rendering callback and stereo is enabled, it will return the default eye which is Camera.MonoOrStereoscopicEye.Left. - - - - - Distance to a point where virtual eyes converge. - - - - - Stereoscopic rendering. - - - - - Render only once and use resulting image for both eyes. - - - - - The distance between the virtual eyes. Use this to query or set the current eye separation. Note that most VR devices provide this value, in which case setting the value will have no effect. - - - - - Defines which eye of a VR display the Camera renders into. - - - - - Set the target display for this Camera. - - - - - Destination render texture. - - - - - An axis that describes the direction along which the distances of objects are measured for the purpose of sorting. - - - - - Transparent object sorting mode. - - - - - Should the jittered matrix be used for transparency rendering? - - - - - Whether or not the Camera will use occlusion culling during rendering. - - - - - Enable [UsePhysicalProperties] to use physical camera properties to compute the field of view and the frustum. - - - - - Get the world-space speed of the camera (Read Only). - - - - - Matrix that transforms from world to camera space. - - - - - Add a command buffer to be executed at a specified place. - - When to execute the command buffer during rendering. - The buffer to execute. - - - - Adds a command buffer to the GPU's async compute queues and executes that command buffer when graphics processing reaches a given point. - - The point during the graphics processing at which this command buffer should commence on the GPU. - The buffer to execute. - The desired async compute queue type to execute the buffer on. - - - - Given viewport coordinates, calculates the view space vectors pointing to the four frustum corners at the specified camera depth. - - Normalized viewport coordinates to use for the frustum calculation. - Z-depth from the camera origin at which the corners will be calculated. - Camera eye projection matrix to use. - Output array for the frustum corner vectors. Cannot be null and length must be >= 4. - - - - Calculates and returns oblique near-plane projection matrix. - - Vector4 that describes a clip plane. - - Oblique near-plane projection matrix. - - - - - - Calculates the projection matrix from focal length, sensor size, lens shift, near plane distance, far plane distance, and Gate fit parameters. - To calculate the projection matrix without taking Gate fit into account, use Camera.GateFitMode.None . See Also: Camera.GateFitParameters - - - The calculated matrix. - Focal length in millimeters. - Sensor dimensions in Millimeters. - Lens offset relative to the sensor size. - Near plane distance. - Far plane distance. - Gate fit parameters to use. See Camera.GateFitParameters. - - - - Delegate type for camera callbacks. - - - - - - Makes this camera's settings match other camera. - - Copy camera settings to the other camera. - - - - Sets the non-jittered projection matrix, sourced from the VR SDK. - - Specifies the stereoscopic eye whose non-jittered projection matrix will be sourced from the VR SDK. - - - - Converts focal length to field of view. - - Focal length in millimeters. - Sensor size in millimeters. Use the sensor height to get the vertical field of view. Use the sensor width to get the horizontal field of view. - - field of view in degrees. - - - - - Converts field of view to focal length. Use either sensor height and vertical field of view or sensor width and horizontal field of view. - - field of view in degrees. - Sensor size in millimeters. - - Focal length in millimeters. - - - - - Enum used to specify how the sensor gate (sensor frame) defined by Camera.sensorSize fits into the resolution gate (render frame). - - - - - - Automatically selects a horizontal or vertical fit so that the sensor gate fits completely inside the resolution gate. - - - - - - - Fit the resolution gate horizontally within the sensor gate. - - - - - - - Stretch the sensor gate to fit exactly into the resolution gate. - - - - - - - Automatically selects a horizontal or vertical fit so that the render frame fits completely inside the resolution gate. - - - - - - - Fit the resolution gate vertically within the sensor gate. - - - - - - Wrapper for gate fit parameters - - - - - Aspect ratio of the resolution gate. - - - - - GateFitMode to use. See Camera.GateFitMode. - - - - - Wrapper for gate fit parameters. - - - - - - - Fills an array of Camera with the current cameras in the Scene, without allocating a new array. - - An array to be filled up with cameras currently in the Scene. - - - - Get command buffers to be executed at a specified place. - - When to execute the command buffer during rendering. - - Array of command buffers. - - - - - Gets the non-jittered projection matrix of a specific left or right stereoscopic eye. - - Specifies the stereoscopic eye whose non-jittered projection matrix needs to be returned. - - The non-jittered projection matrix of the specified stereoscopic eye. - - - - - Gets the projection matrix of a specific left or right stereoscopic eye. - - Specifies the stereoscopic eye whose projection matrix needs to be returned. - - The projection matrix of the specified stereoscopic eye. - - - - - Gets the left or right view matrix of a specific stereoscopic eye. - - Specifies the stereoscopic eye whose view matrix needs to be returned. - - The view matrix of the specified stereoscopic eye. - - - - - A Camera eye corresponding to the left or right human eye for stereoscopic rendering, or neither for non-stereoscopic rendering. - -A single Camera can render both left and right views in a single frame. Therefore, this enum describes which eye the Camera is currently rendering when returned by Camera.stereoActiveEye during a rendering callback (such as Camera.OnRenderImage), or which eye to act on when passed into a function. - -The default value is Camera.MonoOrStereoscopicEye.Left, so Camera.MonoOrStereoscopicEye.Left may be returned by some methods or properties when called outside of rendering if stereoscopic rendering is enabled. - - - - - Camera eye corresponding to stereoscopic rendering of the left eye. - - - - - Camera eye corresponding to non-stereoscopic rendering. - - - - - Camera eye corresponding to stereoscopic rendering of the right eye. - - - - - Remove all command buffers set on this camera. - - - - - Remove command buffer from execution at a specified place. - - When to execute the command buffer during rendering. - The buffer to execute. - - - - Remove command buffers from execution at a specified place. - - When to execute the command buffer during rendering. - - - - Render the camera manually. - - - - - Render into a static cubemap from this camera. - - The cube map to render to. - A bitmask which determines which of the six faces are rendered to. - - False if rendering fails, else true. - - - - - Render into a cubemap from this camera. - - A bitfield indicating which cubemap faces should be rendered into. - The texture to render to. - - False if rendering fails, else true. - - - - - Render one side of a stereoscopic 360-degree image into a cubemap from this camera. - - The texture to render to. - A bitfield indicating which cubemap faces should be rendered into. Set to the integer value 63 to render all faces. - A Camera eye corresponding to the left or right eye for stereoscopic rendering, or neither for non-stereoscopic rendering. - - False if rendering fails, else true. - - - - - Render the camera with shader replacement. - - - - - - - Revert all camera parameters to default. - - - - - Revert the aspect ratio to the screen's aspect ratio. - - - - - Make culling queries reflect the camera's built in parameters. - - - - - Reset to the default field of view. - - - - - Make the projection reflect normal camera's parameters. - - - - - Remove shader replacement from camera. - - - - - Reset the camera to using the Unity computed projection matrices for all stereoscopic eyes. - - - - - Reset the camera to using the Unity computed view matrices for all stereoscopic eyes. - - - - - Resets this Camera's transparency sort settings to the default. Default transparency settings are taken from GraphicsSettings instead of directly from this Camera. - - - - - Make the rendering position reflect the camera's position in the Scene. - - - - - Returns a ray going from camera through a screen point. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Returns a ray going from camera through a screen point. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Transforms position from screen space into viewport space. - - - - - - Transforms position from screen space into world space. - - - - - - Make the camera render with shader replacement. - - - - - - - Sets custom projection matrices for both the left and right stereoscopic eyes. - - Projection matrix for the stereoscopic left eye. - Projection matrix for the stereoscopic right eye. - - - - Sets a custom projection matrix for a specific stereoscopic eye. - - Specifies the stereoscopic eye whose projection matrix needs to be set. - The matrix to be set. - - - - Set custom view matrices for both eyes. - - View matrix for the stereo left eye. - View matrix for the stereo right eye. - - - - Sets a custom view matrix for a specific stereoscopic eye. - - Specifies the stereoscopic view matrix to set. - The matrix to be set. - - - - Sets the Camera to render to the chosen buffers of one or more RenderTextures. - - The RenderBuffer(s) to which color information will be rendered. - The RenderBuffer to which depth information will be rendered. - - - - Sets the Camera to render to the chosen buffers of one or more RenderTextures. - - The RenderBuffer(s) to which color information will be rendered. - The RenderBuffer to which depth information will be rendered. - - - - Enum used to specify either the left or the right eye of a stereoscopic camera. - - - - - Specifies the target to be the left eye. - - - - - Specifies the target to be the right eye. - - - - - Returns a ray going from camera through a viewport point. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Returns a ray going from camera through a viewport point. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Transforms position from viewport space into screen space. - - - - - - Transforms position from viewport space into world space. - - The 3d vector in Viewport space. - - The 3d vector in World space. - - - - - Transforms position from world space into screen space. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Transforms position from world space into screen space. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Transforms position from world space into viewport space. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Transforms position from world space into viewport space. - - Optional argument that can be used to specify which eye transform to use. Default is Mono. - - - - - Values for Camera.clearFlags, determining what to clear when rendering a Camera. - - - - - Clear only the depth buffer. - - - - - Don't clear anything. - - - - - Clear with the skybox. - - - - - Clear with a background color. - - - - - Describes different types of camera. - - - - - Used to indicate a regular in-game camera. - - - - - Used to indicate a camera that is used for rendering previews in the Editor. - - - - - Used to indicate a camera that is used for rendering reflection probes. - - - - - Used to indicate that a camera is used for rendering the Scene View in the Editor. - - - - - Used to indicate that a camera is used for rendering VR (in edit mode) in the Editor. - - - - - Element that can be used for screen rendering. - - - - - Get or set the mask of additional shader channels to be used when creating the Canvas mesh. - - - - - Cached calculated value based upon SortingLayerID. - - - - - Is this the root Canvas? - - - - - The normalized grid size that the canvas will split the renderable area into. - - - - - Allows for nested canvases to override pixelPerfect settings inherited from parent canvases. - - - - - Override the sorting of canvas. - - - - - Force elements in the canvas to be aligned with pixels. Only applies with renderMode is Screen Space. - - - - - Get the render rect for the Canvas. - - - - - How far away from the camera is the Canvas generated. - - - - - The number of pixels per unit that is considered the default. - - - - - Is the Canvas in World or Overlay mode? - - - - - The render order in which the canvas is being emitted to the Scene. (Read Only) - - - - - Returns the Canvas closest to root, by checking through each parent and returning the last canvas found. If no other canvas is found then the canvas will return itself. - - - - - Used to scale the entire canvas, while still making it fit the screen. Only applies with renderMode is Screen Space. - - - - - The normalized grid size that the canvas will split the renderable area into. - - - - - Unique ID of the Canvas' sorting layer. - - - - - Name of the Canvas' sorting layer. - - - - - Canvas' order within a sorting layer. - - - - - For Overlay mode, display index on which the UI canvas will appear. - - - - - Event that is called just before Canvas rendering happens. - - - - - - Camera used for sizing the Canvas when in Screen Space - Camera. Also used as the Camera that events will be sent through for a World Space [[Canvas]. - - - - - Force all canvases to update their content. - - - - - Returns the default material that can be used for rendering normal elements on the Canvas. - - - - - Returns the default material that can be used for rendering text elements on the Canvas. - - - - - Gets or generates the ETC1 Material. - - - The generated ETC1 Material from the Canvas. - - - - - A Canvas placable element that can be used to modify children Alpha, Raycasting, Enabled state. - - - - - Set the alpha of the group. - - - - - Does this group block raycasting (allow collision). - - - - - Should the group ignore parent groups? - - - - - Is the group interactable (are the elements beneath the group enabled). - - - - - Returns true if the Group allows raycasts. - - - - - - - A component that will render to the screen after all normal rendering has completed when attached to a Canvas. Designed for GUI application. - - - - - Depth of the renderer relative to the root canvas. - - - - - Indicates whether geometry emitted by this renderer is ignored. - - - - - Indicates whether geometry emitted by this renderer can be ignored when the vertex color alpha is close to zero for every vertex of the mesh. - - - - - True if any change has occured that would invalidate the positions of generated geometry. - - - - - Enable 'render stack' pop draw call. - - - - - True if rect clipping has been enabled on this renderer. -See Also: CanvasRenderer.EnableRectClipping, CanvasRenderer.DisableRectClipping. - - - - - Is the UIRenderer a mask component. - - - - - The number of materials usable by this renderer. - - - - - (Editor Only) Event that gets fired whenever the data in the CanvasRenderer gets invalidated and needs to be rebuilt. - - - - - - The number of materials usable by this renderer. Used internally for masking. - - - - - Depth of the renderer realative to the parent canvas. - - - - - Take the Vertex steam and split it corrisponding arrays (positions, colors, uv0s, uv1s, normals and tangents). - - The UIVertex list to split. - The destination list for the verts positions. - The destination list for the verts colors. - The destination list for the verts uv0s. - The destination list for the verts uv1s. - The destination list for the verts normals. - The destination list for the verts tangents. - - - - Remove all cached vertices. - - - - - Convert a set of vertex components into a stream of UIVertex. - - - - - - - - - - - - - Disables rectangle clipping for this CanvasRenderer. - - - - - Enables rect clipping on the CanvasRendered. Geometry outside of the specified rect will be clipped (not rendered). - - - - - - Get the current alpha of the renderer. - - - - - Get the current color of the renderer. - - - - - Get the final inherited alpha calculated by including all the parent alphas from included parent CanvasGroups. - - - The calculated inherited alpha. - - - - - Gets the current Material assigned to the CanvasRenderer. - - The material index to retrieve (0 if this parameter is omitted). - - Result. - - - - - Gets the current Material assigned to the CanvasRenderer. - - The material index to retrieve (0 if this parameter is omitted). - - Result. - - - - - Gets the current Material assigned to the CanvasRenderer. Used internally for masking. - - - - - - Set the alpha of the renderer. Will be multiplied with the UIVertex alpha and the Canvas alpha. - - Alpha. - - - - The Alpha Texture that will be passed to the Shader under the _AlphaTex property. - - The Texture to be passed. - - - - Set the color of the renderer. Will be multiplied with the UIVertex color and the Canvas color. - - Renderer multiply color. - - - - Set the material for the canvas renderer. If a texture is specified then it will be used as the 'MainTex' instead of the material's 'MainTex'. -See Also: CanvasRenderer.SetMaterialCount, CanvasRenderer.SetTexture. - - Material for rendering. - Material texture overide. - Material index. - - - - Set the material for the canvas renderer. If a texture is specified then it will be used as the 'MainTex' instead of the material's 'MainTex'. -See Also: CanvasRenderer.SetMaterialCount, CanvasRenderer.SetTexture. - - Material for rendering. - Material texture overide. - Material index. - - - - Sets the Mesh used by this renderer. - - - - - - Set the material for the canvas renderer. Used internally for masking. - - - - - - - Sets the texture used by this renderer's material. - - - - - - Set the vertices for the UIRenderer. - - Array of vertices to set. - Number of vertices to set. - - - - Set the vertices for the UIRenderer. - - Array of vertices to set. - Number of vertices to set. - - - - Given a list of UIVertex, split the stream into it's component types. - - - - - - - - - - - - - Use this struct to set up a capsule cast command that is performed asynchronously during a job. - - - - - The direction of the capsule cast. - - - - - The maximum distance the capsule cast checks for collision. - - - - - A LayerMask that selectively ignores Colliders when casting a capsule. - - - - - The center of the sphere at the start of the capsule. - - - - - The center of the sphere at the end of the capsule. - - - - - The radius of the capsule. - - - - - Creates a CapsulecastCommand. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The direction of the capsule cast - The maximum length of the sweep. - The LayerMask that selectively ignores Colliders when casting a capsule. - - - - Schedules a batch of capsule casts which are performed in a job. - - A NaviveArray of CapsulecastCommands to perform. - A NavtiveArray of RaycastHit where the result of commands are stored. - The minimum number of jobs which should be performed in a single job. - A jobHandle of a job that must be completed before performing capsule casts. - - Returns a JobHandle of the job that will performs the capsule casts. - - - - - A capsule-shaped primitive collider. - - - - - The center of the capsule, measured in the object's local space. - - - - - The direction of the capsule. - - - - - The height of the capsule measured in the object's local space. - - - - - The radius of the sphere, measured in the object's local space. - - - - - A capsule-shaped primitive collider. - - - - - The direction that the capsule sides can extend. - - - - - The width and height of the capsule area. - - - - - The direction that the capsule sides can extend. - - - - - The capsule sides extend horizontally. - - - - - The capsule sides extend vertically. - - - - - A CharacterController allows you to easily do movement constrained by collisions without having to deal with a rigidbody. - - - - - The center of the character's capsule relative to the transform's position. - - - - - What part of the capsule collided with the environment during the last CharacterController.Move call. - - - - - Determines whether other rigidbodies or character controllers collide with this character controller (by default this is always enabled). - - - - - Enables or disables overlap recovery. - Enables or disables overlap recovery. Used to depenetrate character controllers from static objects when an overlap is detected. - - - - - The height of the character's capsule. - - - - - Was the CharacterController touching the ground during the last move? - - - - - Gets or sets the minimum move distance of the character controller. - - - - - The radius of the character's capsule. - - - - - The character's collision skin width. - - - - - The character controllers slope limit in degrees. - - - - - The character controllers step offset in meters. - - - - - The current relative velocity of the Character (see notes). - - - - - A more complex move function taking absolute movement deltas. - - - - - - Moves the character with speed. - - - - - - Specification for how to render a character from the font texture. See Font.characterInfo. - - - - - The horizontal distance, rounded to the nearest integer, from the origin of this character to the origin of the next character. - - - - - The horizontal distance from the origin of this glyph to the begining of the glyph image. - - - - - Is the character flipped? - - - - - The height of the glyph image. - - - - - The width of the glyph image. - - - - - Unicode value of the character. - - - - - The maximum extend of the glyph image in the x-axis. - - - - - The maximum extend of the glyph image in the y-axis. - - - - - The minium extend of the glyph image in the x-axis. - - - - - The minimum extend of the glyph image in the y-axis. - - - - - The size of the character or 0 if it is the default font size. - - - - - The style of the character. - - - - - UV coordinates for the character in the texture. - - - - - The uv coordinate matching the bottom left of the glyph image in the font texture. - - - - - The uv coordinate matching the bottom right of the glyph image in the font texture. - - - - - The uv coordinate matching the top left of the glyph image in the font texture. - - - - - The uv coordinate matching the top right of the glyph image in the font texture. - - - - - Screen coordinates for the character in generated text meshes. - - - - - How far to advance between the beginning of this charcater and the next. - - - - - Character Joints are mainly used for Ragdoll effects. - - - - - Brings violated constraints back into alignment even when the solver fails. - - - - - The upper limit around the primary axis of the character joint. - - - - - The lower limit around the primary axis of the character joint. - - - - - Set the angular tolerance threshold (in degrees) for projection. - - - - - Set the linear tolerance threshold for projection. - - - - - The angular limit of rotation (in degrees) around the primary axis of the character joint. - - - - - The angular limit of rotation (in degrees) around the primary axis of the character joint. - - - - - The secondary axis around which the joint can rotate. - - - - - The configuration of the spring attached to the swing limits of the joint. - - - - - The configuration of the spring attached to the twist limits of the joint. - - - - - Collider for 2D physics representing an circle. - - - - - The center point of the collider in local space. - - - - - Radius of the circle. - - - - - The Cloth class provides an interface to cloth simulation physics. - - - - - Bending stiffness of the cloth. - - - - - An array of CapsuleColliders which this Cloth instance should collide with. - - - - - Number of cloth solver iterations per second. - - - - - The cloth skinning coefficients used to set up how the cloth interacts with the skinned mesh. - - - - - How much to increase mass of colliding particles. - - - - - Damp cloth motion. - - - - - Enable continuous collision to improve collision stability. - - - - - Is this cloth enabled? - - - - - A constant, external acceleration applied to the cloth. - - - - - The friction of the cloth when colliding with the character. - - - - - The current normals of the cloth object. - - - - - A random, external acceleration applied to the cloth. - - - - - Minimum distance at which two cloth particles repel each other (default: 0.0). - - - - - Self-collision stiffness defines how strong the separating impulse should be for colliding particles. - - - - - Cloth's sleep threshold. - - - - - An array of ClothSphereColliderPairs which this Cloth instance should collide with. - - - - - Sets the stiffness frequency parameter. - - - - - Stretching stiffness of the cloth. - - - - - Should gravity affect the cloth simulation? - - - - - Use Tether Anchors. - - - - - Add one virtual particle per triangle to improve collision stability. - - - - - The current vertex positions of the cloth object. - - - - - How much world-space acceleration of the character will affect cloth vertices. - - - - - How much world-space movement of the character will affect cloth vertices. - - - - - Clear the pending transform changes from affecting the cloth simulation. - - - - - Get list of particles to be used for self and inter collision. - - List to be populated with cloth particle indices that are used for self and/or inter collision. - - - - Get list of indices to be used when generating virtual particles. - - List to be populated with virtual particle indices. - - - - Get weights to be used when generating virtual particles for cloth. - - List to populate with virtual particle weights. - - - - Fade the cloth simulation in or out. - - Fading enabled or not. - - - - - This allows you to set the cloth indices used for self and inter collision. - - List of cloth particles indices to use for cloth self and/or inter collision. - - - - Set indices to use when generating virtual particles. - - List of cloth particle indices to use when generating virtual particles. - - - - Sets weights to be used when generating virtual particles for cloth. - - List of weights to be used when setting virutal particles for cloth. - - - - The ClothSkinningCoefficient struct is used to set up how a Cloth component is allowed to move with respect to the SkinnedMeshRenderer it is attached to. - - - - - Definition of a sphere a vertex is not allowed to enter. This allows collision against the animated cloth. - - - - - Distance a vertex is allowed to travel from the skinned mesh vertex position. - - - - - A pair of SphereColliders used to define shapes for Cloth objects to collide against. - - - - - The first SphereCollider of a ClothSphereColliderPair. - - - - - The second SphereCollider of a ClothSphereColliderPair. - - - - - Creates a ClothSphereColliderPair. If only one SphereCollider is given, the ClothSphereColliderPair will define a simple sphere. If two SphereColliders are given, the ClothSphereColliderPair defines a conic capsule shape, composed of the two spheres and the cone connecting the two. - - The first SphereCollider of a ClothSphereColliderPair. - The second SphereCollider of a ClothSphereColliderPair. - - - - Creates a ClothSphereColliderPair. If only one SphereCollider is given, the ClothSphereColliderPair will define a simple sphere. If two SphereColliders are given, the ClothSphereColliderPair defines a conic capsule shape, composed of the two spheres and the cone connecting the two. - - The first SphereCollider of a ClothSphereColliderPair. - The second SphereCollider of a ClothSphereColliderPair. - - - - Interface for reading and writing inputs in a Unity Cluster. - - - - - Add a new VRPN input entry. - - Name of the input entry. This has to be unique. - Device name registered to VRPN server. - URL to the vrpn server. - Index of the Input entry, refer to vrpn.cfg if unsure. - Type of the input. - - True if the operation succeed. - - - - - Check the connection status of the device to the VRPN server it connected to. - - Name of the input entry. - - - - Edit an input entry which added via ClusterInput.AddInput. - - Name of the input entry. This has to be unique. - Device name registered to VRPN server. - URL to the vrpn server. - Index of the Input entry, refer to vrpn.cfg if unsure. - Type of the ClusterInputType as follow. - - - - Returns the axis value as a continous float. - - Name of input to poll.c. - - - - Returns the binary value of a button. - - Name of input to poll. - - - - Return the position of a tracker as a Vector3. - - Name of input to poll. - - - - Returns the rotation of a tracker as a Quaternion. - - Name of input to poll. - - - - Sets the axis value for this input. Only works for input typed Custom. - - Name of input to modify. - Value to set. - - - - Sets the button value for this input. Only works for input typed Custom. - - Name of input to modify. - Value to set. - - - - Sets the tracker position for this input. Only works for input typed Custom. - - Name of input to modify. - Value to set. - - - - Sets the tracker rotation for this input. Only works for input typed Custom. - - Name of input to modify. - Value to set. - - - - Values to determine the type of input value to be expect from one entry of ClusterInput. - - - - - Device is an analog axis that provides continuous value represented by a float. - - - - - Device that return a binary result of pressed or not pressed. - - - - - A user customized input. - - - - - Device that provide position and orientation values. - - - - - A helper class that contains static method to inquire status of Unity Cluster. - - - - - Check whether the current instance is disconnected from the cluster network. - - - - - Check whether the current instance is a master node in the cluster network. - - - - - To acquire or set the node index of the current machine from the cluster network. - - - - - A base class of all colliders. - - - - - The rigidbody the collider is attached to. - - - - - The world space bounding volume of the collider (Read Only). - - - - - Contact offset value of this collider. - - - - - Enabled Colliders will collide with other Colliders, disabled Colliders won't. - - - - - Is the collider a trigger? - - - - - The material used by the collider. - - - - - The shared physic material of this collider. - - - - - Returns a point on the collider that is closest to a given location. - - Location you want to find the closest point to. - - The point on the collider that is closest to the specified location. - - - - - The closest point to the bounding box of the attached collider. - - - - - - Casts a Ray that ignores all Colliders except this one. - - The starting point and direction of the ray. - If true is returned, hitInfo will contain more information about where the collider was hit. - The max length of the ray. - - True when the ray intersects the collider, otherwise false. - - - - - Parent class for collider types used with 2D gameplay. - - - - - The Rigidbody2D attached to the Collider2D. - - - - - Get the bounciness used by the collider. - - - - - The world space bounding area of the collider. - - - - - Get the CompositeCollider2D that is available to be attached to the collider. - - - - - The density of the collider used to calculate its mass (when auto mass is enabled). - - - - - Get the friction used by the collider. - - - - - Is this collider configured as a trigger? - - - - - The local offset of the collider geometry. - - - - - The number of separate shaped regions in the collider. - - - - - The PhysicsMaterial2D that is applied to this collider. - - - - - Sets whether the Collider will be used or not used by a CompositeCollider2D. - - - - - Whether the collider is used by an attached effector or not. - - - - - Casts the collider shape into the Scene starting at the collider position ignoring the collider itself. - - Vector representing the direction to cast the shape. - Array to receive results. - Maximum distance over which to cast the shape. - Should colliders attached to the same Rigidbody2D (known as sibling colliders) be ignored? - - The number of results returned. - - - - - Casts the collider shape into the Scene starting at the collider position ignoring the collider itself. - - Vector representing the direction to cast the shape. - Filter results defined by the contact filter. - Array to receive results. - Maximum distance over which to cast the shape. - Should colliders attached to the same Rigidbody2D (known as sibling colliders) be ignored? - - The number of results returned. - - - - - Calculates the minimum separation of this collider against another collider. - - A collider used to calculate the minimum separation against this collider. - - The minimum separation of collider and this collider. - - - - - Retrieves all contact points for this collider. - - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with this collider. - - An array of Collider2D used to receive the results. - - Returns the number of contacts placed in the colliders array. - - - - - Retrieves all contact points for this collider, with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with this collider, with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of Collider2D used to receive the results. - - Returns the number of collidersplaced in the colliders array. - - - - - Check whether this collider is touching the collider or not. - - The collider to check if it is touching this collider. - - Whether this collider is touching the collider or not. - - - - - Check whether this collider is touching the collider or not with the results filtered by the ContactFilter2D. - - The collider to check if it is touching this collider. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether this collider is touching the collider or not. - - - - - Check whether this collider is touching other colliders or not with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether this collider is touching the collider or not. - - - - - Checks whether this collider is touching any colliders on the specified layerMask or not. - - Any colliders on any of these layers count as touching. - - Whether this collider is touching any collider on the specified layerMask or not. - - - - - Get a list of all colliders that overlap this collider. - - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Check if a collider overlaps a point in space. - - A point in world space. - - Does point overlap the collider? - - - - - Casts a ray into the Scene starting at the collider position ignoring the collider itself. - - Vector representing the direction of the ray. - Array to receive results. - Maximum distance over which to cast the ray. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - Filter results defined by the contact filter. - - The number of results returned. - - - - - Casts a ray into the Scene starting at the collider position ignoring the collider itself. - - Vector representing the direction of the ray. - Array to receive results. - Maximum distance over which to cast the ray. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - Filter results defined by the contact filter. - - The number of results returned. - - - - - Represents the separation or overlap of two Collider2D. - - - - - Gets the distance between two colliders. - - - - - Gets whether the distance represents an overlap or not. - - - - - Gets whether the distance is valid or not. - - - - - A normalized vector that points from pointB to pointA. - - - - - A point on a Collider2D that is a specific distance away from pointB. - - - - - A point on a Collider2D that is a specific distance away from pointA. - - - - - Describes a collision. - - - - - The Collider we hit (Read Only). - - - - - Gets the number of contacts for this collision. - - - - - The contact points generated by the physics engine. You should avoid using this as it produces memory garbage. Use GetContact or GetContacts instead. - - - - - The GameObject whose collider you are colliding with. (Read Only). - - - - - The total impulse applied to this contact pair to resolve the collision. - - - - - The relative linear velocity of the two colliding objects (Read Only). - - - - - The Rigidbody we hit (Read Only). This is null if the object we hit is a collider with no rigidbody attached. - - - - - The Transform of the object we hit (Read Only). - - - - - Gets the contact point at the specified index. - - The index of the contact to retrieve. - - The contact at the specified index. - - - - - Retrieves all contact points for this collision. - - An array of ContactPoint used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Collision details returned by 2D physics callback functions. - - - - - The incoming Collider2D involved in the collision with the otherCollider. - - - - - Gets the number of contacts for this collision. - - - - - The specific points of contact with the incoming Collider2D. You should avoid using this as it produces memory garbage. Use GetContact or GetContacts instead. - - - - - Indicates whether the collision response or reaction is enabled or disabled. - - - - - The incoming GameObject involved in the collision. - - - - - The other Collider2D involved in the collision with the collider. - - - - - The other Rigidbody2D involved in the collision with the rigidbody. - - - - - The relative linear velocity of the two colliding objects (Read Only). - - - - - The incoming Rigidbody2D involved in the collision with the otherRigidbody. - - - - - The Transform of the incoming object involved in the collision. - - - - - Gets the contact point at the specified index. - - The index of the contact to retrieve. - - The contact at the specified index. - - - - - Retrieves all contact points for contacts between collider and otherCollider. - - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - The collision detection mode constants used for Rigidbody.collisionDetectionMode. - - - - - Continuous collision detection is on for colliding with static mesh geometry. - - - - - Continuous collision detection is on for colliding with static and dynamic geometry. - - - - - Speculative continuous collision detection is on for static and dynamic geometries - - - - - Continuous collision detection is off for this Rigidbody. - - - - - Controls how collisions are detected when a Rigidbody2D moves. - - - - - Ensures that all collisions are detected when a Rigidbody2D moves. - - - - - When a Rigidbody2D moves, only collisions at the new position are detected. - - - - - This mode is obsolete. You should use Discrete mode. - - - - - CollisionFlags is a bitmask returned by CharacterController.Move. - - - - - CollisionFlags is a bitmask returned by CharacterController.Move. - - - - - CollisionFlags is a bitmask returned by CharacterController.Move. - - - - - CollisionFlags is a bitmask returned by CharacterController.Move. - - - - - CollisionFlags is a bitmask returned by CharacterController.Move. - - - - - Representation of RGBA colors. - - - - - Alpha component of the color (0 is transparent, 1 is opaque). - - - - - Blue component of the color. - - - - - Solid black. RGBA is (0, 0, 0, 1). - - - - - Solid blue. RGBA is (0, 0, 1, 1). - - - - - Completely transparent. RGBA is (0, 0, 0, 0). - - - - - Cyan. RGBA is (0, 1, 1, 1). - - - - - Green component of the color. - - - - - A version of the color that has had the gamma curve applied. - - - - - Gray. RGBA is (0.5, 0.5, 0.5, 1). - - - - - The grayscale value of the color. (Read Only) - - - - - Solid green. RGBA is (0, 1, 0, 1). - - - - - English spelling for gray. RGBA is the same (0.5, 0.5, 0.5, 1). - - - - - A linear value of an sRGB color. - - - - - Magenta. RGBA is (1, 0, 1, 1). - - - - - Returns the maximum color component value: Max(r,g,b). - - - - - Red component of the color. - - - - - Solid red. RGBA is (1, 0, 0, 1). - - - - - Solid white. RGBA is (1, 1, 1, 1). - - - - - Yellow. RGBA is (1, 0.92, 0.016, 1), but the color is nice to look at! - - - - - Constructs a new Color with given r,g,b,a components. - - Red component. - Green component. - Blue component. - Alpha component. - - - - Constructs a new Color with given r,g,b components and sets a to 1. - - Red component. - Green component. - Blue component. - - - - Creates an RGB colour from HSV input. - - Hue [0..1]. - Saturation [0..1]. - Brightness value [0..1]. - Output HDR colours. If true, the returned colour will not be clamped to [0..1]. - - An opaque colour with HSV matching the input. - - - - - Creates an RGB colour from HSV input. - - Hue [0..1]. - Saturation [0..1]. - Brightness value [0..1]. - Output HDR colours. If true, the returned colour will not be clamped to [0..1]. - - An opaque colour with HSV matching the input. - - - - - Colors can be implicitly converted to and from Vector4. - - - - - - Colors can be implicitly converted to and from Vector4. - - - - - - Linearly interpolates between colors a and b by t. - - Color a. - Color b. - Float for combining a and b. - - - - Linearly interpolates between colors a and b by t. - - - - - - - - Divides color a by the float b. Each color component is scaled separately. - - - - - - - Subtracts color b from color a. Each component is subtracted separately. - - - - - - - Multiplies two colors together. Each component is multiplied separately. - - - - - - - Multiplies color a by the float b. Each color component is scaled separately. - - - - - - - Multiplies color a by the float b. Each color component is scaled separately. - - - - - - - Adds two colors together. Each component is added separately. - - - - - - - Calculates the hue, saturation and value of an RGB input color. - - An input color. - Output variable for hue. - Output variable for saturation. - Output variable for value. - - - - Access the r, g, b,a components using [0], [1], [2], [3] respectively. - - - - - Returns a nicely formatted string of this color. - - - - - - Returns a nicely formatted string of this color. - - - - - - Representation of RGBA colors in 32 bit format. - - - - - Alpha component of the color. - - - - - Blue component of the color. - - - - - Green component of the color. - - - - - Red component of the color. - - - - - Constructs a new Color32 with given r, g, b, a components. - - - - - - - - - Color32 can be implicitly converted to and from Color. - - - - - - Color32 can be implicitly converted to and from Color. - - - - - - Linearly interpolates between colors a and b by t. - - - - - - - - Linearly interpolates between colors a and b by t. - - - - - - - - Returns a nicely formatted string of this color. - - - - - - Returns a nicely formatted string of this color. - - - - - - Represents a color gamut. - - - - - sRGB color gamut. - - - - - Display-P3 color gamut. - - - - - DolbyHDR high dynamic range color gamut. - - - - - HDR10 high dynamic range color gamut. - - - - - Rec. 2020 color gamut. - - - - - Rec. 709 color gamut. - - - - - Color space for player settings. - - - - - Gamma color space. - - - - - Linear color space. - - - - - Uninitialized color space. - - - - - Attribute used to configure the usage of the ColorField and Color Picker for a color. - - - - - If set to true the Color is treated as a HDR color. - - - - - Maximum allowed HDR color component value when using the HDR Color Picker. - - - - - Maximum exposure value allowed in the HDR Color Picker. - - - - - Minimum allowed HDR color component value when using the Color Picker. - - - - - Minimum exposure value allowed in the HDR Color Picker. - - - - - If false then the alpha bar is hidden in the ColorField and the alpha value is not shown in the Color Picker. - - - - - Attribute for Color fields. Used for configuring the GUI for the color. - - If false then the alpha channel info is hidden both in the ColorField and in the Color Picker. - Set to true if the color should be treated as a HDR color (default value: false). - Minimum allowed HDR color component value when using the HDR Color Picker (default value: 0). - Maximum allowed HDR color component value when using the HDR Color Picker (default value: 8). - Minimum exposure value allowed in the HDR Color Picker (default value: 1/8 = 0.125). - Maximum exposure value allowed in the HDR Color Picker (default value: 3). - - - - Attribute for Color fields. Used for configuring the GUI for the color. - - If false then the alpha channel info is hidden both in the ColorField and in the Color Picker. - Set to true if the color should be treated as a HDR color (default value: false). - Minimum allowed HDR color component value when using the HDR Color Picker (default value: 0). - Maximum allowed HDR color component value when using the HDR Color Picker (default value: 8). - Minimum exposure value allowed in the HDR Color Picker (default value: 1/8 = 0.125). - Maximum exposure value allowed in the HDR Color Picker (default value: 3). - - - - Attribute for Color fields. Used for configuring the GUI for the color. - - If false then the alpha channel info is hidden both in the ColorField and in the Color Picker. - Set to true if the color should be treated as a HDR color (default value: false). - Minimum allowed HDR color component value when using the HDR Color Picker (default value: 0). - Maximum allowed HDR color component value when using the HDR Color Picker (default value: 8). - Minimum exposure value allowed in the HDR Color Picker (default value: 1/8 = 0.125). - Maximum exposure value allowed in the HDR Color Picker (default value: 3). - - - - A collection of common color functions. - - - - - Returns the color as a hexadecimal string in the format "RRGGBB". - - The color to be converted. - - Hexadecimal string representing the color. - - - - - Returns the color as a hexadecimal string in the format "RRGGBBAA". - - The color to be converted. - - Hexadecimal string representing the color. - - - - - Attempts to convert a html color string. - - Case insensitive html string to be converted into a color. - The converted color. - - True if the string was successfully converted else false. - - - - - Struct used to describe meshes to be combined using Mesh.CombineMeshes. - - - - - The baked lightmap UV scale and offset applied to the Mesh. - - - - - Mesh to combine. - - - - - The realtime lightmap UV scale and offset applied to the Mesh. - - - - - Sub-Mesh index of the Mesh. - - - - - Matrix to transform the Mesh with before combining. - - - - - Interface into compass functionality. - - - - - Used to enable or disable compass. Note, that if you want Input.compass.trueHeading property to contain a valid value, you must also enable location updates by calling Input.location.Start(). - - - - - Accuracy of heading reading in degrees. - - - - - The heading in degrees relative to the magnetic North Pole. (Read Only) - - - - - The raw geomagnetic data measured in microteslas. (Read Only) - - - - - Timestamp (in seconds since 1970) when the heading was last time updated. (Read Only) - - - - - The heading in degrees relative to the geographic North Pole. (Read Only) - - - - - Base class for everything attached to GameObjects. - - - - - The Animation attached to this GameObject. (Null if there is none attached). - - - - - The AudioSource attached to this GameObject. (Null if there is none attached). - - - - - The Camera attached to this GameObject. (Null if there is none attached). - - - - - The Collider attached to this GameObject. (Null if there is none attached). - - - - - The Collider2D component attached to the object. - - - - - The ConstantForce attached to this GameObject. (Null if there is none attached). - - - - - The game object this component is attached to. A component is always attached to a game object. - - - - - The GUIText attached to this GameObject. (Null if there is none attached). - - - - - The GUITexture attached to this GameObject (Read Only). (null if there is none attached). - - - - - The HingeJoint attached to this GameObject. (Null if there is none attached). - - - - - The Light attached to this GameObject. (Null if there is none attached). - - - - - The NetworkView attached to this GameObject (Read Only). (null if there is none attached). - - - - - The ParticleSystem attached to this GameObject. (Null if there is none attached). - - - - - The Renderer attached to this GameObject. (Null if there is none attached). - - - - - The Rigidbody attached to this GameObject. (Null if there is none attached). - - - - - The Rigidbody2D that is attached to the Component's GameObject. - - - - - The tag of this game object. - - - - - The Transform attached to this GameObject. - - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - Name of the method to call. - Optional parameter to pass to the method (can be any value). - Should an error be raised if the method does not exist for a given target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - Name of the method to call. - Optional parameter to pass to the method (can be any value). - Should an error be raised if the method does not exist for a given target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - Name of the method to call. - Optional parameter to pass to the method (can be any value). - Should an error be raised if the method does not exist for a given target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - Name of the method to call. - Optional parameter to pass to the method (can be any value). - Should an error be raised if the method does not exist for a given target object? - - - - Is this game object tagged with tag ? - - The tag to compare. - - - - Returns the component of Type type if the game object has one attached, null if it doesn't. - - The type of Component to retrieve. - - - - Generic version. See the page for more details. - - - - - Returns the component with name type if the game object has one attached, null if it doesn't. - - - - - - Returns the component of Type type in the GameObject or any of its children using depth first search. - - The type of Component to retrieve. - - A component of the matching type, if found. - - - - - Generic version. See the page for more details. - - - - A component of the matching type, if found. - - - - - Returns the component of Type type in the GameObject or any of its parents. - - The type of Component to retrieve. - - A component of the matching type, if found. - - - - - Generic version. See the page for more details. - - - A component of the matching type, if found. - - - - - Returns all components of Type type in the GameObject. - - The type of Component to retrieve. - - - - Generic version. See the page for more details. - - - - - Returns all components of Type type in the GameObject or any of its children. - - The type of Component to retrieve. - Should Components on inactive GameObjects be included in the found set? includeInactive decides which children of the GameObject will be searched. The GameObject that you call GetComponentsInChildren on is always searched regardless. - - - - Returns all components of Type type in the GameObject or any of its children. - - The type of Component to retrieve. - Should Components on inactive GameObjects be included in the found set? includeInactive decides which children of the GameObject will be searched. The GameObject that you call GetComponentsInChildren on is always searched regardless. - - - - Generic version. See the page for more details. - - Should Components on inactive GameObjects be included in the found set? includeInactive decides which children of the GameObject will be searched. The GameObject that you call GetComponentsInChildren on is always searched regardless. - - A list of all found components matching the specified type. - - - - - Generic version. See the page for more details. - - - A list of all found components matching the specified type. - - - - - Returns all components of Type type in the GameObject or any of its parents. - - The type of Component to retrieve. - Should inactive Components be included in the found set? - - - - Generic version. See the page for more details. - - Should inactive Components be included in the found set? - - - - Generic version. See the page for more details. - - Should inactive Components be included in the found set? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - Name of the method to call. - Optional parameter for the method. - Should an error be raised if the target object doesn't implement the method for the message? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - Name of the method to call. - Optional parameter for the method. - Should an error be raised if the target object doesn't implement the method for the message? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - Name of the method to call. - Optional parameter for the method. - Should an error be raised if the target object doesn't implement the method for the message? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - Name of the method to call. - Optional parameter for the method. - Should an error be raised if the target object doesn't implement the method for the message? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - Name of method to call. - Optional parameter value for the method. - Should an error be raised if the method does not exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - Name of method to call. - Optional parameter value for the method. - Should an error be raised if the method does not exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - Name of method to call. - Optional parameter value for the method. - Should an error be raised if the method does not exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - Name of method to call. - Optional parameter value for the method. - Should an error be raised if the method does not exist on the target object? - - - - A Collider that can merge other Colliders together. - - - - - Controls the radius of all edges created by the Collider. - - - - - Specifies when to generate the Composite Collider geometry. - - - - - Specifies the type of geometry the Composite Collider should generate. - - - - - The number of paths in the Collider. - - - - - Gets the total number of points in all the paths within the Collider. - - - - - Controls the minimum distance allowed between generated vertices. - - - - - Regenerates the Composite Collider geometry. - - - - - Specifies when to generate the Composite Collider geometry. - - - - - Sets the Composite Collider geometry to not automatically update when a Collider used by the Composite Collider changes. - - - - - Sets the Composite Collider geometry to update synchronously immediately when a Collider used by the Composite Collider changes. - - - - - Specifies the type of geometry the Composite Collider generates. - - - - - Sets the Composite Collider to generate closed outlines for the merged Collider geometry consisting of only edges. - - - - - Sets the Composite Collider to generate closed outlines for the merged Collider geometry consisting of convex polygon shapes. - - - - - Gets a path from the Collider by its index. - - The index of the path from 0 to pathCount. - An ordered array of the vertices or points in the selected path. - - Returns the number of points placed in the points array. - - - - - Gets the number of points in the specified path from the Collider by its index. - - The index of the path from 0 to pathCount. - - Returns the number of points in the path specified by index. - - - - - Compression Levels relate to how much time should be spent compressing Assets into an Asset Bundle. - - - - - No compression. - - - - - Compression Method for Asset Bundles. - - - - - LZ4 compression results in larger compressed files than LZMA, but does not require the entire bundle to be decompressed before use. - - - - - LZ4HC is a high compression variant of LZ4. LZ4HC compression results in larger compressed files than LZMA, but does not require the entire bundle to be decompressed before use. - - - - - LZMA compression results in smaller compressed Asset Bundles but they must be entirely decompressed before use. - - - - - Uncompressed Asset Bundles are larger than compressed Asset Bundles, but they are the fastest to access once downloaded. - - - - - GPU data buffer, mostly for use with compute shaders. - - - - - Number of elements in the buffer (Read Only). - - - - - Size of one element in the buffer (Read Only). - - - - - Copy counter value of append/consume buffer into another buffer. - - Append/consume buffer to copy the counter from. - A buffer to copy the counter to. - Target byte offset in dst. - - - - Create a Compute Buffer. - - Number of elements in the buffer. - Size of one element in the buffer. Has to match size of buffer type in the shader. See for cross-platform compatibility information. - Type of the buffer, default is ComputeBufferType.Default (structured buffer). - - - - Create a Compute Buffer. - - Number of elements in the buffer. - Size of one element in the buffer. Has to match size of buffer type in the shader. See for cross-platform compatibility information. - Type of the buffer, default is ComputeBufferType.Default (structured buffer). - - - - Read data values from the buffer into an array. The array can only use <a href="https:docs.microsoft.comen-usdotnetframeworkinteropblittable-and-non-blittable-types">blittable<a> types. - - An array to receive the data. - - - - Partial read of data values from the buffer into an array. - - An array to receive the data. - The first element index in data where retrieved elements are copied. - The first element index of the compute buffer from which elements are read. - The number of elements to retrieve. - - - - Retrieve a native (underlying graphics API) pointer to the buffer. - - - Pointer to the underlying graphics API buffer. - - - - - Returns true if this compute buffer is valid and false otherwise. - - - - - Release a Compute Buffer. - - - - - Sets counter value of append/consume buffer. - - Value of the append/consume counter. - - - - Set the buffer with values from an array. - - Array of values to fill the buffer. - - - - Partial copy of data values from an array into the buffer. - - Array of values to fill the buffer. - The first element index in data to copy to the compute buffer. - The first element index in compute buffer to receive the data. - The number of elements to copy. - - - - ComputeBuffer type. - - - - - Append-consume ComputeBuffer type. - - - - - ComputeBuffer with a counter. - - - - - Default ComputeBuffer type (structured buffer). - - - - - ComputeBuffer used for Graphics.DrawProceduralIndirect, ComputeShader.DispatchIndirect or Graphics.DrawMeshInstancedIndirect arguments. - - - - - Raw ComputeBuffer type (byte address buffer). - - - - - Compute Shader asset. - - - - - Execute a compute shader. - - Which kernel to execute. A single compute shader asset can have multiple kernel entry points. - Number of work groups in the X dimension. - Number of work groups in the Y dimension. - Number of work groups in the Z dimension. - - - - Execute a compute shader. - - Which kernel to execute. A single compute shader asset can have multiple kernel entry points. - Buffer with dispatch arguments. - The byte offset into the buffer, where the draw arguments start. - - - - Find ComputeShader kernel index. - - Name of kernel function. - - The Kernel index, or logs a "FindKernel failed" error message if the kernel is not found. - - - - - Get kernel thread group sizes. - - Which kernel to query. A single compute shader asset can have multiple kernel entry points. - Thread group size in the X dimension. - Thread group size in the Y dimension. - Thread group size in the Z dimension. - - - - Checks whether a shader contains a given kernel. - - The name of the kernel to look for. - - True if the kernel is found, false otherwise. - - - - - Set a bool parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a bool parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Sets an input or output compute buffer. - - For which kernel the buffer is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Buffer to set. - - - - Sets an input or output compute buffer. - - For which kernel the buffer is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Buffer to set. - - - - Set a float parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a float parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set multiple consecutive float parameters at once. - - Array variable name in the shader code. - Property name ID, use Shader.PropertyToID to get it. - Value array to set. - - - - Set multiple consecutive float parameters at once. - - Array variable name in the shader code. - Property name ID, use Shader.PropertyToID to get it. - Value array to set. - - - - Set an integer parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set an integer parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set multiple consecutive integer parameters at once. - - Array variable name in the shader code. - Property name ID, use Shader.PropertyToID to get it. - Value array to set. - - - - Set multiple consecutive integer parameters at once. - - Array variable name in the shader code. - Property name ID, use Shader.PropertyToID to get it. - Value array to set. - - - - Set a Matrix parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a Matrix parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a Matrix array parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a Matrix array parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a texture parameter. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Texture to set. - Optional mipmap level of the read-write texture. - - - - Set a texture parameter. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Texture to set. - Optional mipmap level of the read-write texture. - - - - Set a texture parameter. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Texture to set. - Optional mipmap level of the read-write texture. - - - - Set a texture parameter. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Texture to set. - Optional mipmap level of the read-write texture. - - - - Set a texture parameter from a global texture property. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Global texture property to assign to shader. - Property name ID, use Shader.PropertyToID to get it. - - - - Set a texture parameter from a global texture property. - - For which kernel the texture is being set. See FindKernel. - Property name ID, use Shader.PropertyToID to get it. - Name of the buffer variable in shader code. - Global texture property to assign to shader. - Property name ID, use Shader.PropertyToID to get it. - - - - Set a vector parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a vector parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a vector array parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - Set a vector array parameter. - - Variable name in shader code. - Property name ID, use Shader.PropertyToID to get it. - Value to set. - - - - The configurable joint is an extremely flexible joint giving you complete control over rotation and linear motion. - - - - - Definition of how the joint's rotation will behave around its local X axis. Only used if Rotation Drive Mode is Swing & Twist. - - - - - The configuration of the spring attached to the angular X limit of the joint. - - - - - Allow rotation around the X axis to be Free, completely Locked, or Limited according to Low and High Angular XLimit. - - - - - Boundary defining rotation restriction, based on delta from original rotation. - - - - - Allow rotation around the Y axis to be Free, completely Locked, or Limited according to Angular YLimit. - - - - - Definition of how the joint's rotation will behave around its local Y and Z axes. Only used if Rotation Drive Mode is Swing & Twist. - - - - - The configuration of the spring attached to the angular Y and angular Z limits of the joint. - - - - - Boundary defining rotation restriction, based on delta from original rotation. - - - - - Allow rotation around the Z axis to be Free, completely Locked, or Limited according to Angular ZLimit. - - - - - If enabled, all Target values will be calculated in world space instead of the object's local space. - - - - - Boundary defining upper rotation restriction, based on delta from original rotation. - - - - - Boundary defining movement restriction, based on distance from the joint's origin. - - - - - The configuration of the spring attached to the linear limit of the joint. - - - - - Boundary defining lower rotation restriction, based on delta from original rotation. - - - - - Set the angular tolerance threshold (in degrees) for projection. - -If the joint deviates by more than this angle around its locked angular degrees of freedom, -the solver will move the bodies to close the angle. - -Setting a very small tolerance may result in simulation jitter or other artifacts. - -Sometimes it is not possible to project (for example when the joints form a cycle). - - - - - Set the linear tolerance threshold for projection. - -If the joint separates by more than this distance along its locked degrees of freedom, the solver -will move the bodies to close the distance. - -Setting a very small tolerance may result in simulation jitter or other artifacts. - -Sometimes it is not possible to project (for example when the joints form a cycle). - - - - - Brings violated constraints back into alignment even when the solver fails. Projection is not a physical process and does not preserve momentum or respect collision geometry. It is best avoided if practical, but can be useful in improving simulation quality where joint separation results in unacceptable artifacts. - - - - - Control the object's rotation with either X & YZ or Slerp Drive by itself. - - - - - The joint's secondary axis. - - - - - Definition of how the joint's rotation will behave around all local axes. Only used if Rotation Drive Mode is Slerp Only. - - - - - If enabled, the two connected rigidbodies will be swapped, as if the joint was attached to the other body. - - - - - This is a Vector3. It defines the desired angular velocity that the joint should rotate into. - - - - - The desired position that the joint should move into. - - - - - This is a Quaternion. It defines the desired rotation that the joint should rotate into. - - - - - The desired velocity that the joint should move along. - - - - - Definition of how the joint's movement will behave along its local X axis. - - - - - Allow movement along the X axis to be Free, completely Locked, or Limited according to Linear Limit. - - - - - Definition of how the joint's movement will behave along its local Y axis. - - - - - Allow movement along the Y axis to be Free, completely Locked, or Limited according to Linear Limit. - - - - - Definition of how the joint's movement will behave along its local Z axis. - - - - - Allow movement along the Z axis to be Free, completely Locked, or Limited according to Linear Limit. - - - - - Constrains movement for a ConfigurableJoint along the 6 axes. - - - - - Motion along the axis will be completely free and completely unconstrained. - - - - - Motion along the axis will be limited by the respective limit. - - - - - Motion along the axis will be locked. - - - - - The various test results the connection tester may return with. - - - - - A force applied constantly. - - - - - The force applied to the rigidbody every frame. - - - - - The force - relative to the rigid bodies coordinate system - applied every frame. - - - - - The torque - relative to the rigid bodies coordinate system - applied every frame. - - - - - The torque applied to the rigidbody every frame. - - - - - Applies both linear and angular (torque) forces continuously to the rigidbody each physics update. - - - - - The linear force applied to the rigidbody each physics update. - - - - - The linear force, relative to the rigid-body coordinate system, applied each physics update. - - - - - The torque applied to the rigidbody each physics update. - - - - - A set of parameters for filtering contact results. - - - - - Given the current state of the contact filter, determine whether it would filter anything. - - - - - Sets the contact filter to filter the results that only include Collider2D on the layers defined by the layer mask. - - - - - Sets the contact filter to filter the results to only include Collider2D with a Z coordinate (depth) less than this value. - - - - - Sets the contact filter to filter the results to only include contacts with collision normal angles that are less than this angle. - - - - - Sets the contact filter to filter the results to only include Collider2D with a Z coordinate (depth) greater than this value. - - - - - Sets the contact filter to filter the results to only include contacts with collision normal angles that are greater than this angle. - - - - - Sets the contact filter to filter the results by depth using minDepth and maxDepth. - - - - - Sets the contact filter to filter results by layer mask. - - - - - Sets the contact filter to filter the results by the collision's normal angle using minNormalAngle and maxNormalAngle. - - - - - Sets the contact filter to filter within the minDepth and maxDepth range, or outside that range. - - - - - Sets the contact filter to filter within the minNormalAngle and maxNormalAngle range, or outside that range. - - - - - Sets to filter contact results based on trigger collider involvement. - - - - - Turns off depth filtering by setting useDepth to false. The associated values of minDepth and maxDepth are not changed. - - - - - Turns off layer mask filtering by setting useLayerMask to false. The associated value of layerMask is not changed. - - - - - Turns off normal angle filtering by setting useNormalAngle to false. The associated values of minNormalAngle and maxNormalAngle are not changed. - - - - - Checks if the Transform for obj is within the depth range to be filtered. - - The GameObject used to check the z-position (depth) of Transform.position. - - Returns true when obj is excluded by the filter and false if otherwise. - - - - - Checks if the GameObject.layer for obj is included in the layerMask to be filtered. - - The GameObject used to check the GameObject.layer. - - Returns true when obj is excluded by the filter and false if otherwise. - - - - - Checks if the angle of normal is within the normal angle range to be filtered. - - The normal used to calculate an angle. - - Returns true when normal is excluded by the filter and false if otherwise. - - - - - Checks if the angle is within the normal angle range to be filtered. - - The angle used for comparison in the filter. - - Returns true when angle is excluded by the filter and false if otherwise. - - - - - Checks if the collider is a trigger and should be filtered by the useTriggers to be filtered. - - The Collider2D used to check for a trigger. - - Returns true when collider is excluded by the filter and false if otherwise. - - - - - Sets the contact filter to not filter any ContactPoint2D. - - - A copy of the contact filter set to not filter any ContactPoint2D. - - - - - Sets the minDepth and maxDepth filter properties and turns on depth filtering by setting useDepth to true. - - The value used to set minDepth. - The value used to set maxDepth. - - - - Sets the layerMask filter property using the layerMask parameter provided and also enables layer mask filtering by setting useLayerMask to true. - - The value used to set the layerMask. - - - - Sets the minNormalAngle and maxNormalAngle filter properties and turns on normal angle filtering by setting useNormalAngle to true. - - The value used to set the minNormalAngle. - The value used to set the maxNormalAngle. - - - - Describes a contact point where the collision occurs. - - - - - Normal of the contact point. - - - - - The other collider in contact at the point. - - - - - The point of contact. - - - - - The distance between the colliders at the contact point. - - - - - The first collider in contact at the point. - - - - - Details about a specific point of contact involved in a 2D physics collision. - - - - - The incoming Collider2D involved in the collision with the otherCollider. - - - - - Indicates whether the collision response or reaction is enabled or disabled. - - - - - Surface normal at the contact point. - - - - - Gets the impulse force applied at the contact point along the ContactPoint2D.normal. - - - - - The other Collider2D involved in the collision with the collider. - - - - - The other Rigidbody2D involved in the collision with the rigidbody. - - - - - The point of contact between the two colliders in world space. - - - - - Gets the relative velocity of the two colliders at the contact point (Read Only). - - - - - The incoming Rigidbody2D involved in the collision with the otherRigidbody. - - - - - Gets the distance between the colliders at the contact point. - - - - - Gets the impulse force applied at the contact point which is perpendicular to the ContactPoint2D.normal. - - - - - The ContextMenu attribute allows you to add commands to the context menu. - - - - - Adds the function to the context menu of the component. - - The name of the context menu item. - Whether this is a validate function (defaults to false). - Priority used to override the ordering of the menu items (defaults to 1000000). The lower the number the earlier in the menu it will appear. - - - - Adds the function to the context menu of the component. - - The name of the context menu item. - Whether this is a validate function (defaults to false). - Priority used to override the ordering of the menu items (defaults to 1000000). The lower the number the earlier in the menu it will appear. - - - - Adds the function to the context menu of the component. - - The name of the context menu item. - Whether this is a validate function (defaults to false). - Priority used to override the ordering of the menu items (defaults to 1000000). The lower the number the earlier in the menu it will appear. - - - - Use this attribute to add a context menu to a field that calls a named method. - - - - - The name of the function that should be called. - - - - - The name of the context menu item. - - - - - Use this attribute to add a context menu to a field that calls a named method. - - The name of the context menu item. - The name of the function that should be called. - - - - ControllerColliderHit is used by CharacterController.OnControllerColliderHit to give detailed information about the collision and how to deal with it. - - - - - The collider that was hit by the controller. - - - - - The controller that hit the collider. - - - - - The game object that was hit by the controller. - - - - - The direction the CharacterController was moving in when the collision occured. - - - - - How far the character has travelled until it hit the collider. - - - - - The normal of the surface we collided with in world space. - - - - - The impact point in world space. - - - - - The rigidbody that was hit by the controller. - - - - - The transform that was hit by the controller. - - - - - MonoBehaviour.StartCoroutine returns a Coroutine. Instances of this class are only used to reference these coroutines, and do not hold any exposed properties or functions. - - - - - Holds data for a single application crash event and provides access to all gathered crash reports. - - - - - Returns last crash report, or null if no reports are available. - - - - - Returns all currently available reports in a new array. - - - - - Crash report data as formatted text. - - - - - Time, when the crash occured. - - - - - Remove report from available reports list. - - - - - Remove all reports from available reports list. - - - - - Engine API for CrashReporting Service. - - - - - This Boolean field will cause CrashReportHandler to capture exceptions when set to true. By default enable capture exceptions is true. - - - - - The Performance Reporting service will keep a buffer of up to the last X log messages (Debug.Log, etc) to send along with crash reports. The default is 10 log messages, the max is 50. Set this to 0 to disable capture of logs with your crash reports. - - - - - Get a custom crash report metadata field that has been set. - - - - Value that was previously set for the key, or null if no value was found. - - - - - Set a custom metadata key-value pair to be included with crash reports. - - - - - - - Mark a ScriptableObject-derived type to be automatically listed in the Assets/Create submenu, so that instances of the type can be easily created and stored in the project as ".asset" files. - - - - - The default file name used by newly created instances of this type. - - - - - The display name for this type shown in the Assets/Create menu. - - - - - The position of the menu item within the Assets/Create menu. - - - - - Class for handling cube maps, Use this to create or modify existing. - - - - - The format of the pixel data in the texture (Read Only). - - - - - How many mipmap levels are in this texture (Read Only). - - - - - Actually apply all previous SetPixel and SetPixels changes. - - When set to true, mipmap levels are recalculated. - When set to true, system memory copy of a texture is released. - - - - Creates a Unity cubemap out of externally created native cubemap object. - - The width and height of each face of the cubemap should be the same. - Format of underlying cubemap object. - Does the cubemap have mipmaps? - Native cubemap texture object. - - - - - Create a new empty cubemap texture. - - Width/height of a cube face in pixels. - Pixel data format to be used for the Cubemap. - Should mipmaps be created? - - - - - - - Returns pixel color at coordinates (face, x, y). - - - - - - - - Returns pixel colors of a cubemap face. - - The face from which pixel data is taken. - Mipmap level for the chosen face. - - - - Sets pixel color at coordinates (face, x, y). - - - - - - - - - Sets pixel colors of a cubemap face. - - Pixel data for the Cubemap face. - The face to which the new data should be applied. - The mipmap level for the face. - - - - Performs smoothing of near edge regions. - - Pixel distance at edges over which to apply smoothing. - - - - Class for handling Cubemap arrays. - - - - - Number of cubemaps in the array (Read Only). - - - - - Texture format (Read Only). - - - - - Actually apply all previous SetPixels changes. - - When set to true, mipmap levels are recalculated. - When set to true, system memory copy of a texture is released. - - - - Create a new cubemap array. - - Cubemap face size in pixels. - Number of elements in the cubemap array. - Format of the pixel data. - Should mipmaps be created? - Does the texture contain non-color data (i.e. don't do any color space conversions when sampling)? Default is false. - - - - - - - Create a new cubemap array. - - Cubemap face size in pixels. - Number of elements in the cubemap array. - Format of the pixel data. - Should mipmaps be created? - Does the texture contain non-color data (i.e. don't do any color space conversions when sampling)? Default is false. - - - - - - - Returns pixel colors of a single array slice/face. - - Cubemap face to read pixels from. - Array slice to read pixels from. - Mipmap level to read pixels from. - - Array of pixel colors. - - - - - Returns pixel colors of a single array slice/face. - - Cubemap face to read pixels from. - Array slice to read pixels from. - Mipmap level to read pixels from. - - Array of pixel colors in low precision (8 bits/channel) format. - - - - - Set pixel colors for a single array slice/face. - - An array of pixel colors. - Cubemap face to set pixels for. - Array element index to set pixels for. - Mipmap level to set pixels for. - - - - Set pixel colors for a single array slice/face. - - An array of pixel colors in low precision (8 bits/channel) format. - Cubemap face to set pixels for. - Array element index to set pixels for. - Mipmap level to set pixels for. - - - - Cubemap face. - - - - - Left facing side (-x). - - - - - Downward facing side (-y). - - - - - Backward facing side (-z). - - - - - Right facing side (+x). - - - - - Upwards facing side (+y). - - - - - Forward facing side (+z). - - - - - Cubemap face is unknown or unspecified. - - - - - Describes a set of bounding spheres that should have their visibility and distances maintained. - - - - - Pauses culling group execution. - - - - - Sets the callback that will be called when a sphere's visibility and/or distance state has changed. - - - - - Locks the CullingGroup to a specific camera. - - - - - Create a CullingGroup. - - - - - Clean up all memory used by the CullingGroup immediately. - - - - - Erase a given bounding sphere by moving the final sphere on top of it. - - The index of the entry to erase. - - - - Erase a given entry in an arbitrary array by copying the final entry on top of it, then decrementing the number of entries used by one. - - The index of the entry to erase. - An array of entries. - The number of entries in the array that are actually used. - - - - Get the current distance band index of a given sphere. - - The index of the sphere. - - The sphere's current distance band index. - - - - - Returns true if the bounding sphere at index is currently visible from any of the contributing cameras. - - The index of the bounding sphere. - - True if the sphere is visible; false if it is invisible. - - - - - Retrieve the indices of spheres that have particular visibility and/or distance states. - - True if only visible spheres should be retrieved; false if only invisible spheres should be retrieved. - The distance band that retrieved spheres must be in. - An array that will be filled with the retrieved sphere indices. - The index of the sphere to begin searching at. - - The number of sphere indices found and written into the result array. - - - - - Retrieve the indices of spheres that have particular visibility and/or distance states. - - True if only visible spheres should be retrieved; false if only invisible spheres should be retrieved. - The distance band that retrieved spheres must be in. - An array that will be filled with the retrieved sphere indices. - The index of the sphere to begin searching at. - - The number of sphere indices found and written into the result array. - - - - - Retrieve the indices of spheres that have particular visibility and/or distance states. - - True if only visible spheres should be retrieved; false if only invisible spheres should be retrieved. - The distance band that retrieved spheres must be in. - An array that will be filled with the retrieved sphere indices. - The index of the sphere to begin searching at. - - The number of sphere indices found and written into the result array. - - - - - Set bounding distances for 'distance bands' the group should compute, as well as options for how spheres falling into each distance band should be treated. - - An array of bounding distances. The distances should be sorted in increasing order. - An array of CullingDistanceBehaviour settings. The array should be the same length as the array provided to the distances parameter. It can also be omitted or passed as null, in which case all distances will be given CullingDistanceBehaviour.Normal behaviour. - - - - Sets the number of bounding spheres in the bounding spheres array that are actually being used. - - The number of bounding spheres being used. - - - - Sets the array of bounding sphere definitions that the CullingGroup should compute culling for. - - The BoundingSpheres to cull. - - - - Set the reference point from which distance bands are measured. - - A fixed point to measure the distance from. - A transform to measure the distance from. The transform's position will be automatically tracked. - - - - Set the reference point from which distance bands are measured. - - A fixed point to measure the distance from. - A transform to measure the distance from. The transform's position will be automatically tracked. - - - - This delegate is used for recieving a callback when a sphere's distance or visibility state has changed. - - A CullingGroupEvent that provides information about the sphere that has changed. - - - - Provides information about the current and previous states of one sphere in a CullingGroup. - - - - - The current distance band index of the sphere, after the most recent culling pass. - - - - - Did this sphere change from being visible to being invisible in the most recent culling pass? - - - - - Did this sphere change from being invisible to being visible in the most recent culling pass? - - - - - The index of the sphere that has changed. - - - - - Was the sphere considered visible by the most recent culling pass? - - - - - The distance band index of the sphere before the most recent culling pass. - - - - - Was the sphere visible before the most recent culling pass? - - - - - Cursor API for setting the cursor (mouse pointer). - - - - - Determines whether the hardware pointer is locked to the center of the view, constrained to the window, or not constrained at all. - - - - - Determines whether the hardware pointer is visible or not. - - - - - Sets the mouse cursor to the given texture. - - - - - Specify a custom cursor that you wish to use as a cursor. - - The texture to use for the cursor. To use a texture, you must first import it with `Read/Write`enabled. Alternatively, you can use the default cursor import setting. If you created your cursor texture from code, it must be in RGBA32 format, have alphaIsTransparency enabled, and have no mip chain. To use the default cursor, set the texture to `Null`. - The offset from the top left of the texture to use as the target point (must be within the bounds of the cursor). - Allow this cursor to render as a hardware cursor on supported platforms, or force software cursor. - - - - How the cursor should behave. - - - - - Confine cursor to the game window. - - - - - Lock cursor to the center of the game window. - - - - - Cursor behavior is unmodified. - - - - - Determines whether the mouse cursor is rendered using software rendering or, on supported platforms, hardware rendering. - - - - - Use hardware cursors on supported platforms. - - - - - Force the use of software cursors. - - - - - Attribute to define the class as a grid brush and to make it available in the palette window. - - - - - If set to true, brush will replace Unity built-in brush as the default brush in palette window. - -Only one class at any one time should set defaultBrush to true. - - - - - Name of the default instance of this brush. - - - - - Hide all asset instances of this brush in the tile palette window. - - - - - Hide the default instance of brush in the tile palette window. - - - - - Attribute to define the class as a grid brush and to make it available in the palette window. - - If set to true, brush will replace Unity built-in brush as the default brush in palette window. - Name of the default instance of this brush. - Hide all asset instances of this brush in the tile palette window. - Hide the default instance of brush in the tile palette window. - - - - - Attribute to define the class as a grid brush and to make it available in the palette window. - - If set to true, brush will replace Unity built-in brush as the default brush in palette window. - Name of the default instance of this brush. - Hide all asset instances of this brush in the tile palette window. - Hide the default instance of brush in the tile palette window. - - - - - Custom Render Textures are an extension to Render Textures, enabling you to render directly to the Texture using a Shader. - - - - - Bitfield that allows to enable or disable update on each of the cubemap faces. Order from least significant bit is +X, -X, +Y, -Y, +Z, -Z. - - - - - If true, the Custom Render Texture is double buffered so that you can access it during its own update. otherwise the Custom Render Texture will be not be double buffered. - - - - - Color with which the Custom Render Texture is initialized. This parameter will be ignored if an initializationMaterial is set. - - - - - Material with which the Custom Render Texture is initialized. Initialization texture and color are ignored if this parameter is set. - - - - - Specify how the texture should be initialized. - - - - - Specify if the texture should be initialized with a Texture and a Color or a Material. - - - - - Texture with which the Custom Render Texture is initialized (multiplied by the initialization color). This parameter will be ignored if an initializationMaterial is set. - - - - - Material with which the content of the Custom Render Texture is updated. - - - - - Shader Pass used to update the Custom Render Texture. - - - - - Specify how the texture should be updated. - - - - - Space in which the update zones are expressed (Normalized or Pixel space). - - - - - If true, Update zones will wrap around the border of the Custom Render Texture. Otherwise, Update zones will be clamped at the border of the Custom Render Texture. - - - - - Clear all Update Zones. - - - - - Create a new Custom Render Texture. - - - - - - - - - Create a new Custom Render Texture. - - - - - - - - - Create a new Custom Render Texture. - - - - - - - - - Returns the list of Update Zones. - - Output list of Update Zones. - - - - Triggers an initialization of the Custom Render Texture. - - - - - Setup the list of Update Zones for the Custom Render Texture. - - - - - - Triggers the update of the Custom Render Texture. - - Number of upate pass to perform. - - - - Specify the source of a Custom Render Texture initialization. - - - - - Custom Render Texture is initalized with a Material. - - - - - Custom Render Texture is initialized by a Texture multiplied by a Color. - - - - - Frequency of update or initialization of a Custom Render Texture. - - - - - Initialization/Update will only occur when triggered by the script. - - - - - Initialization/Update will occur once at load time and then can be triggered again by script. - - - - - Initialization/Update will occur at every frame. - - - - - Structure describing an Update Zone. - - - - - If true, and if the texture is double buffered, a request is made to swap the buffers before the next update. Otherwise, the buffers will not be swapped. - - - - - Shader Pass used to update the Custom Render Texture for this Update Zone. - - - - - Rotation of the Update Zone. - - - - - Position of the center of the Update Zone within the Custom Render Texture. - - - - - Size of the Update Zone. - - - - - Space in which coordinates are provided for Update Zones. - - - - - Coordinates are normalized. (0, 0) is top left and (1, 1) is bottom right. - - - - - Coordinates are expressed in pixels. (0, 0) is top left (width, height) is bottom right. - - - - - Base class for custom yield instructions to suspend coroutines. - - - - - Indicates if coroutine should be kept suspended. - - - - - Class containing methods to ease debugging while developing a game. - - - - - Reports whether the development console is visible. The development console cannot be made to appear using: - - - - - In the Build Settings dialog there is a check box called "Development Build". - - - - - Get default debug logger. - - - - - Assert a condition and logs an error message to the Unity console on failure. - - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. - - - - Assert a condition and logs an error message to the Unity console on failure. - - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. - - - - Assert a condition and logs an error message to the Unity console on failure. - - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. - - - - Assert a condition and logs an error message to the Unity console on failure. - - Condition you expect to be true. - Object to which the message applies. - String or object to be converted to string representation for display. - - - - Assert a condition and logs a formatted error message to the Unity console on failure. - - Condition you expect to be true. - A composite format string. - Format arguments. - Object to which the message applies. - - - - Assert a condition and logs a formatted error message to the Unity console on failure. - - Condition you expect to be true. - A composite format string. - Format arguments. - Object to which the message applies. - - - - Pauses the editor. - - - - - Clears errors from the developer console. - - - - - Draws a line between specified start and end points. - - Point in world space where the line should start. - Point in world space where the line should end. - Color of the line. - How long the line should be visible for. - Should the line be obscured by objects closer to the camera? - - - - Draws a line between specified start and end points. - - Point in world space where the line should start. - Point in world space where the line should end. - Color of the line. - How long the line should be visible for. - Should the line be obscured by objects closer to the camera? - - - - Draws a line between specified start and end points. - - Point in world space where the line should start. - Point in world space where the line should end. - Color of the line. - How long the line should be visible for. - Should the line be obscured by objects closer to the camera? - - - - Draws a line between specified start and end points. - - Point in world space where the line should start. - Point in world space where the line should end. - Color of the line. - How long the line should be visible for. - Should the line be obscured by objects closer to the camera? - - - - Draws a line from start to start + dir in world coordinates. - - Point in world space where the ray should start. - Direction and length of the ray. - Color of the drawn line. - How long the line will be visible for (in seconds). - Should the line be obscured by other objects closer to the camera? - - - - Draws a line from start to start + dir in world coordinates. - - Point in world space where the ray should start. - Direction and length of the ray. - Color of the drawn line. - How long the line will be visible for (in seconds). - Should the line be obscured by other objects closer to the camera? - - - - Draws a line from start to start + dir in world coordinates. - - Point in world space where the ray should start. - Direction and length of the ray. - Color of the drawn line. - How long the line will be visible for (in seconds). - Should the line be obscured by other objects closer to the camera? - - - - Draws a line from start to start + dir in world coordinates. - - Point in world space where the ray should start. - Direction and length of the ray. - Color of the drawn line. - How long the line will be visible for (in seconds). - Should the line be obscured by other objects closer to the camera? - - - - Logs message to the Unity Console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Debug.Log that logs an assertion message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Debug.Log that logs an assertion message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs a formatted assertion message to the Unity console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - Logs a formatted assertion message to the Unity console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - A variant of Debug.Log that logs an error message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Debug.Log that logs an error message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs a formatted error message to the Unity console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - Logs a formatted error message to the Unity console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - A variant of Debug.Log that logs an error message to the console. - - Object to which the message applies. - Runtime Exception. - - - - A variant of Debug.Log that logs an error message to the console. - - Object to which the message applies. - Runtime Exception. - - - - Logs a formatted message to the Unity Console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - Logs a formatted message to the Unity Console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - A variant of Debug.Log that logs a warning message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Debug.Log that logs a warning message to the console. - - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs a formatted warning message to the Unity Console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - Logs a formatted warning message to the Unity Console. - - A composite format string. - Format arguments. - Object to which the message applies. - - - - Attribute used to make a float, int, or string variable in a script be delayed. - - - - - Attribute used to make a float, int, or string variable in a script be delayed. - - - - - Depth texture generation mode for Camera. - - - - - Generate a depth texture. - - - - - Generate a depth + normals texture. - - - - - Specifies whether motion vectors should be rendered (if possible). - - - - - Do not generate depth texture (Default). - - - - - Detail prototype used by the Terrain GameObject. - - - - - Bend factor of the detailPrototype. - - - - - Color when the DetailPrototypes are "dry". - - - - - Color when the DetailPrototypes are "healthy". - - - - - Maximum height of the grass billboards (if render mode is GrassBillboard). - - - - - Maximum width of the grass billboards (if render mode is GrassBillboard). - - - - - Minimum height of the grass billboards (if render mode is GrassBillboard). - - - - - Minimum width of the grass billboards (if render mode is GrassBillboard). - - - - - How spread out is the noise for the DetailPrototype. - - - - - GameObject used by the DetailPrototype. - - - - - Texture used by the DetailPrototype. - - - - - Render mode for the DetailPrototype. - - - - - Render mode for detail prototypes. - - - - - The detail prototype will use the grass shader. - - - - - The detail prototype will be rendered as billboards that are always facing the camera. - - - - - Will show the prototype using diffuse shading. - - - - - Describes physical orientation of the device as determined by the OS. - - - - - The device is held parallel to the ground with the screen facing downwards. - - - - - The device is held parallel to the ground with the screen facing upwards. - - - - - The device is in landscape mode, with the device held upright and the home button on the right side. - - - - - The device is in landscape mode, with the device held upright and the home button on the left side. - - - - - The device is in portrait mode, with the device held upright and the home button at the bottom. - - - - - The device is in portrait mode but upside down, with the device held upright and the home button at the top. - - - - - The orientation of the device cannot be determined. - - - - - Enumeration for SystemInfo.deviceType, denotes a coarse grouping of kinds of devices. - - - - - A stationary gaming console. - - - - - Desktop or laptop computer. - - - - - A handheld device like mobile phone or a tablet. - - - - - Device type is unknown. You should never see this in practice. - - - - - Specifies the category of crash to cause when calling ForceCrash(). - - - - - Cause a crash by calling the abort() function. - - - - - Cause a crash by performing an invalid memory access. - -The invalid memory access is performed on each platform as follows: - - - - - Cause a crash using Unity's native fatal error implementation. - - - - - Cause a crash by calling a pure virtual function to raise an exception. - - - - - A utility class that you can use for diagnostic purposes. - - - - - Manually causes an application crash in the specified category. - - - - - - Manually causes an assert that outputs the specified message to the log and registers an error. - - - - - - Manually causes a native error that outputs the specified message to the log and registers an error. - - - - - - Manually causes a warning that outputs the specified message to the log and registers an error. - - - - - - Prevents MonoBehaviour of same type (or subtype) to be added more than once to a GameObject. - - - - - Provides access to a display / screen for rendering operations. - - - - - Gets the state of the display and returns true if the display is active and false if otherwise. - - - - - Color RenderBuffer. - - - - - Depth RenderBuffer. - - - - - The list of currently connected Displays. Contains at least one (main) display. - - - - - Main Display. - - - - - Vertical resolution that the display is rendering at. - - - - - Horizontal resolution that the display is rendering at. - - - - - Vertical native display resolution. - - - - - Horizontal native display resolution. - - - - - Activate an external display. Eg. Secondary Monitors connected to the System. - - - - - This overloaded function available for Windows allows specifying desired Window Width, Height and Refresh Rate. - - Desired Width of the Window (for Windows only. On Linux and Mac uses Screen Width). - Desired Height of the Window (for Windows only. On Linux and Mac uses Screen Height). - Desired Refresh Rate. - - - - Query relative mouse coordinates. - - Mouse Input Position as Coordinates. - - - - Set rendering size and position on screen (Windows only). - - Change Window Width (Windows Only). - Change Window Height (Windows Only). - Change Window Position X (Windows Only). - Change Window Position Y (Windows Only). - - - - Sets rendering resolution for the display. - - Rendering width in pixels. - Rendering height in pixels. - - - - Joint that keeps two Rigidbody2D objects a fixed distance apart. - - - - - Should the distance be calculated automatically? - - - - - The distance separating the two ends of the joint. - - - - - Whether to maintain a maximum distance only or not. If not then the absolute distance will be maintained instead. - - - - - A component can be designed to drive a RectTransform. The DrivenRectTransformTracker struct is used to specify which RectTransforms it is driving. - - - - - Add a RectTransform to be driven. - - The object to drive properties. - The RectTransform to be driven. - The properties to be driven. - - - - Clear the list of RectTransforms being driven. - - - - - Resume recording undo of driven RectTransforms. - - - - - Stop recording undo actions from driven RectTransforms. - - - - - An enumeration of transform properties that can be driven on a RectTransform by an object. - - - - - Selects all driven properties. - - - - - Selects driven property RectTransform.anchoredPosition. - - - - - Selects driven property RectTransform.anchoredPosition3D. - - - - - Selects driven property RectTransform.anchoredPosition.x. - - - - - Selects driven property RectTransform.anchoredPosition.y. - - - - - Selects driven property RectTransform.anchoredPosition3D.z. - - - - - Selects driven property combining AnchorMaxX and AnchorMaxY. - - - - - Selects driven property RectTransform.anchorMax.x. - - - - - Selects driven property RectTransform.anchorMax.y. - - - - - Selects driven property combining AnchorMinX and AnchorMinY. - - - - - Selects driven property RectTransform.anchorMin.x. - - - - - Selects driven property RectTransform.anchorMin.y. - - - - - Selects driven property combining AnchorMinX, AnchorMinY, AnchorMaxX and AnchorMaxY. - - - - - Deselects all driven properties. - - - - - Selects driven property combining PivotX and PivotY. - - - - - Selects driven property RectTransform.pivot.x. - - - - - Selects driven property RectTransform.pivot.y. - - - - - Selects driven property Transform.localRotation. - - - - - Selects driven property combining ScaleX, ScaleY && ScaleZ. - - - - - Selects driven property Transform.localScale.x. - - - - - Selects driven property Transform.localScale.y. - - - - - Selects driven property Transform.localScale.z. - - - - - Selects driven property combining SizeDeltaX and SizeDeltaY. - - - - - Selects driven property RectTransform.sizeDelta.x. - - - - - Selects driven property RectTransform.sizeDelta.y. - - - - - Status of the menu item. - - - - - The item is displayed with a checkmark. - - - - - The item is disabled and is not be selectable by the user. - - - - - The item is not displayed. - - - - - The item is displayed normally. - - - - - Describe the unit of a duration. - - - - - A fixed duration is a duration expressed in seconds. - - - - - A normalized duration is a duration expressed in percentage. - - - - - Allows to control the dynamic Global Illumination. - - - - - Allows for scaling the contribution coming from realtime & baked lightmaps. - -Note: this value can be set in the Lighting Window UI and it is serialized, that is not the case for other properties in this class. - - - - - Is precomputed realtime Global Illumination output converged? - - - - - The number of milliseconds that can be spent on material updates. - - - - - When enabled, new dynamic Global Illumination output is shown in each frame. - - - - - Threshold for limiting updates of realtime GI. The unit of measurement is "percentage intensity change". - - - - - Allows to set an emissive color for a given renderer quickly, without the need to render the emissive input for the entire system. - - The Renderer that should get a new color. - The emissive Color. - - - - Allows overriding the distant environment lighting for Realtime GI, without changing the Skybox Material. - - Array of float values to be used for Realtime GI environment lighting. - - - - Schedules an update of the environment texture. - - - - - Schedules an update of the albedo and emissive textures of a system that contains the renderer or the terrain. - - The Renderer to use when searching for a system to update. - The Terrain to use when searching for systems to update. - - - - Schedules an update of the albedo and emissive textures of a system that contains the renderer or the terrain. - - The Renderer to use when searching for a system to update. - The Terrain to use when searching for systems to update. - - - - Schedules an update of the albedo and emissive textures of a system that contains the renderer or the terrain. - - The Renderer to use when searching for a system to update. - The Terrain to use when searching for systems to update. - - - - Collider for 2D physics representing an arbitrary set of connected edges (lines) defined by its vertices. - - - - - Gets the number of edges. - - - - - Controls the radius of all edges created by the collider. - - - - - Gets the number of points. - - - - - Get or set the points defining multiple continuous edges. - - - - - Reset to a single edge consisting of two points. - - - - - A base class for all 2D effectors. - - - - - The mask used to select specific layers allowed to interact with the effector. - - - - - Should the collider-mask be used or the global collision matrix? - - - - - The mode used to apply Effector2D forces. - - - - - The force is applied at a constant rate. - - - - - The force is applied inverse-linear relative to a point. - - - - - The force is applied inverse-squared relative to a point. - - - - - Selects the source and/or target to be used by an Effector2D. - - - - - The source/target is defined by the Collider2D. - - - - - The source/target is defined by the Rigidbody2D. - - - - - A UnityGUI event. - - - - - Is Alt/Option key held down? (Read Only) - - - - - Which mouse button was pressed. - - - - - Is Caps Lock on? (Read Only) - - - - - The character typed. - - - - - How many consecutive mouse clicks have we received. - - - - - Is Command/Windows key held down? (Read Only) - - - - - The name of an ExecuteCommand or ValidateCommand Event. - - - - - Is Control key held down? (Read Only) - - - - - The current event that's being processed right now. - - - - - The relative movement of the mouse compared to last event. - - - - - Index of display that the event belongs to. - - - - - Is the current keypress a function key? (Read Only) - - - - - Is this event a keyboard event? (Read Only) - - - - - Is this event a mouse event? (Read Only) - - - - - The raw key code for keyboard events. - - - - - Which modifier keys are held down. - - - - - The mouse position. - - - - - Is the current keypress on the numeric keyboard? (Read Only) - - - - - Is Shift held down? (Read Only) - - - - - The type of event. - - - - - Returns the current number of events that are stored in the event queue. - - - Current number of events currently in the event queue. - - - - - Get a filtered event type for a given control ID. - - The ID of the control you are querying from. - - - - Create a keyboard event. - - - - - - Get the next queued [Event] from the event system. - - Next Event. - - - - Use this event. - - - - - Types of modifier key that can be active during a keystroke event. - - - - - Alt key. - - - - - Caps lock key. - - - - - Command key (Mac). - - - - - Control key. - - - - - Function key. - - - - - No modifier key pressed during a keystroke event. - - - - - Num lock key. - - - - - Shift key. - - - - - THe mode that a listener is operating in. - - - - - The listener will bind to one argument bool functions. - - - - - The listener will use the function binding specified by the even. - - - - - The listener will bind to one argument float functions. - - - - - The listener will bind to one argument int functions. - - - - - The listener will bind to one argument Object functions. - - - - - The listener will bind to one argument string functions. - - - - - The listener will bind to zero argument functions. - - - - - Zero argument delegate used by UnityEvents. - - - - - One argument delegate used by UnityEvents. - - - - - - Two argument delegate used by UnityEvents. - - - - - - - Three argument delegate used by UnityEvents. - - - - - - - - Four argument delegate used by UnityEvents. - - - - - - - - - A zero argument persistent callback that can be saved with the Scene. - - - - - Add a non persistent listener to the UnityEvent. - - Callback function. - - - - Constructor. - - - - - Invoke all registered callbacks (runtime and persistent). - - - - - Remove a non persistent listener from the UnityEvent. - - Callback function. - - - - One argument version of UnityEvent. - - - - - Two argument version of UnityEvent. - - - - - Three argument version of UnityEvent. - - - - - Four argument version of UnityEvent. - - - - - Abstract base class for UnityEvents. - - - - - Get the number of registered persistent listeners. - - - - - Get the target method name of the listener at index index. - - Index of the listener to query. - - - - Get the target component of the listener at index index. - - Index of the listener to query. - - - - Given an object, function name, and a list of argument types; find the method that matches. - - Object to search for the method. - Function name to search for. - Argument types for the function. - - - - Remove all non-persisent (ie created from script) listeners from the event. - - - - - Modify the execution state of a persistent listener. - - Index of the listener to query. - State to set. - - - - Controls the scope of UnityEvent callbacks. - - - - - Callback is always issued. - - - - - Callback is not issued. - - - - - Callback is only issued in the Runtime and Editor playmode. - - - - - Types of UnityGUI input and processing events. - - - - - An event that is called when the mouse is clicked. - - - - - An event that is called when the mouse is clicked and dragged. - - - - - An event that is called when the mouse is no longer being clicked. - - - - - User has right-clicked (or control-clicked on the mac). - - - - - Editor only: drag & drop operation exited. - - - - - Editor only: drag & drop operation performed. - - - - - Editor only: drag & drop operation updated. - - - - - Execute a special command (eg. copy & paste). - - - - - Event should be ignored. - - - - - A keyboard key was pressed. - - - - - A keyboard key was released. - - - - - A layout event. - - - - - Mouse button was pressed. - - - - - Mouse was dragged. - - - - - Mouse entered a window (Editor views only). - - - - - Mouse left a window (Editor views only). - - - - - Mouse was moved (Editor views only). - - - - - Mouse button was released. - - - - - A repaint event. One is sent every frame. - - - - - The scroll wheel was moved. - - - - - Already processed event. - - - - - Validates a special command (e.g. copy & paste). - - - - - Add this attribute to a class to prevent the class and its inherited classes from being created with ObjectFactory methods. - - - - - Default constructor. - - - - - Add this attribute to a class to prevent creating a Preset from the instances of the class. - - - - - Makes instances of a script always execute, both as part of Play Mode and when editing. - - - - - Makes all instances of a script execute in Edit Mode. - - - - - An exception that will prevent all subsequent immediate mode GUI functions from evaluating for the remainder of the GUI loop. - - - - - A world position that is guaranteed to be on the surface of the NavMesh. - - - - - Unique identifier for the node in the NavMesh to which the world position has been mapped. - - - - - A world position that sits precisely on the surface of the NavMesh or along its links. - - - - - The types of nodes in the navigation data. - - - - - Type of node in the NavMesh representing one surface polygon. - - - - - Type of node in the NavMesh representing a point-to-point connection between two positions on the NavMesh surface. - - - - - Object used for doing navigation operations in a NavMeshWorld. - - - - - Initiates a pathfinding operation between two locations on the NavMesh. - - Array of custom cost values for all of the 32 possible area types. Each value must be at least 1.0f. This parameter is optional and defaults to the area costs configured in the project settings. See Also: NavMesh.GetAreaCost. - Bitmask with values of 1 set at the indices for areas that can be traversed, and values of 0 for areas that are not traversable. This parameter is optional and defaults to NavMesh.AllAreas, if omitted. See Also:. - The start location on the NavMesh for the path. - The location on the NavMesh where the path ends. - - InProgress if the operation was successful and the query is ready to search for a path. - -Failure if the query's NavMeshWorld or any of the received parameters are no longer valid. - - - - - Returns a valid NavMeshLocation for a position and a polygon provided by the user. - - World position of the NavMeshLocation to be created. - Valid identifier for the NavMesh node. - - Object containing the desired position and NavMesh node. - - - - - Creates the NavMeshQuery object and allocates memory to store NavMesh node information, if required. - - NavMeshWorld object used as an entry point to the collection of NavMesh objects. This object that can be used by query operations. - Label indicating the desired life time of the object. (Known issue: Currently allocator has no effect). - The number of nodes that can be temporarily stored in the query during search operations. This value defaults to 0 if no other value is specified. - - - - Destroys the NavMeshQuery and deallocates all memory used by it. - - - - - Obtains the number of nodes in the path that has been computed during a successful NavMeshQuery.UpdateFindPath operation. - - A reference to an int which will be set to the number of NavMesh nodes in the found path. - - Success when the number of nodes in the path was retrieved correctly. - -PartialPath when a path was found but it falls short of the desired end location. - -Failure when the path size can not be evaluated because the preceding call to UpdateFindPath was not successful. - - - - - Returns the identifier of the agent type the NavMesh was baked for or for which the link has been configured. - - Identifier of a node from a NavMesh surface or link. - - Agent type identifier. - - - - - Copies into the provided array the list of NavMesh nodes that form the path found by the NavMeshQuery operation. - - Data array to be filled with the sequence of NavMesh nodes that comprises the found path. - - Number of path nodes successfully copied into the provided array. - - - - - Returns whether the NavMesh node is a polygon or a link. - - Identifier of a node from a NavMesh surface or link. - - Ground when the node is a polygon on a NavMesh surface. - -OffMeshConnection when the node is a. - - - - - Obtains the end points of the line segment common to two adjacent NavMesh nodes. - - First NavMesh node. - Second NavMesh node. - One of the world points for the resulting separation edge which must be passed through when traversing between the two specified nodes. This point is the left side of the edge when traversing from the first node to the second. - One of the world points for the resulting separation edge which must be passed through when traversing between the two specified nodes. This point is the right side of the edge when traversing from the first node to the second. - - True if a connection exists between the two NavMesh nodes. -False if no connection exists between the two NavMesh nodes. - - - - - Returns true if the node referenced by the specified PolygonId is active in the NavMesh. - - Identifier of the NavMesh node to be checked. - - - - Returns true if the node referenced by the PolygonId contained in the NavMeshLocation is active in the NavMesh. - - Location on the NavMesh to be checked. Same as checking location.polygon directly. - - - - Finds the closest point and PolygonId on the NavMesh for a given world position. - - World position for which the closest point on the NavMesh needs to be found. - Maximum distance, from the specified position, expanding along all three axes, within which NavMesh surfaces are searched. - Identifier for the agent type whose NavMesh surfaces should be selected for this operation. The Humanoid agent type exists for all NavMeshes and has an ID of 0. Other agent types can be defined manually through the Editor. A separate NavMesh surface needs to be baked for each agent type. - Bitmask used to represent areas of the NavMesh that should (value of 1) or shouldn't (values of 0) be sampled. This parameter is optional and defaults to NavMesh.AllAreas if unspecified. See Also:. - - An object with position and valid PolygonId - when a point on the NavMesh has been found. - -An invalid object - when no NavMesh surface with the desired features has been found within the search area. See Also: NavMeshQuery.IsValid. - - - - - Translates a NavMesh location to another position without losing contact with the surface. - - Position to be moved across the NavMesh surface. - World position you require the agent to move to. - Bitmask with values of 1 set at the indices corresponding to areas that can be traversed, and with values of 0 for areas that should not be traversed. This parameter can be omitted, in which case it defaults to NavMesh.AllAreas. See Also:. - - A new location on the NavMesh placed as closely as possible to the specified target position. - -The start location is returned when that start is inside an area which is not allowed by the areaMask. - - - - - Translates a series of NavMesh locations to other positions without losing contact with the surface. - - Array of positions to be moved across the NavMesh surface. At the end of the method call this array contains the resulting locations. - World positions to be used as movement targets by the agent. - Filters for the areas which can be traversed during the movement to each of the locations. - - - - Translates a series of NavMesh locations to other positions without losing contact with the surface, given one common area filter for all of them. - - Array of positions to be moved across the NavMesh surface. At the end of the method call this array contains the resulting locations. - World positions you want the agent to reach when moving to each of the locations. - Filters for the areas which can be traversed during the movement to each of the locations. - - - - Returns the transformation matrix of the NavMesh surface that contains the specified NavMesh node (Read Only). - - NavMesh node for which its owner's transform must be determined. - - Transformation matrix for the surface owning the specified polygon. - -Matrix4x4.identity when the NavMesh node is a. - - - - - Returns the inverse transformation matrix of the NavMesh surface that contains the specified NavMesh node (Read Only). - - NavMesh node for which its owner's inverse transform must be determined. - - Inverse transformation matrix of the surface owning the specified polygon. - -Matrix4x4.identity when the NavMesh node is a. - - - - - Trace a line between two points on the NavMesh. - - Holds the properties of the raycast resulting location. - The start location of the ray on the NavMesh. start.polygon must be of the type NavMeshPolyTypes.Ground. - The desired end of the ray, in world coordinates. - Bitmask that correlates index positions with area types. The index goes from 0 to 31. In each relevant index position, you have to set the value to either 1 or 0. 1 indicates area types that the ray can pass through. 0 indicates area types that block the ray. This parameter is optional. If you leave out this parameter, it defaults to NavMesh.AllAreas. To learn more, see:. - Array of custom cost values for all of the 32 possible area types. They act as multipliers to the distance reported by the ray when crossing various areas. This parameter is optional. If you omit it, it defaults to the area costs that you configured in the Project settings. To learn more, see NavMesh.GetAreaCost. - - Success if the ray can be correctly traced using the provided arguments. - -Failure if the start location is not valid in the query's NavMeshWorld, or if it is inside an area not permitted by the areaMask argument, or when it is on a. - - - - - Trace a line between two points on the NavMesh, and return the list of polygons through which it passed. - - Holds the properties of the raycast resulting location. - A buffer that will be filled with the sequence of polygons through which the ray passes. - The reported number of polygons through which the ray has passed, all stored in the path buffer. It will not be greater than path.Length. - The start location of the ray on the NavMesh. start.polygon must be of the type NavMeshPolyTypes.Ground. - The desired end of the ray, in world coordinates. - A bitfield that specifies which NavMesh areas can be traversed when the ray is traced. This parameter is optional. If you do not fill out this parameter, it defaults to NavMesh.AllAreas. - Cost multipliers that affect the distance reported by the ray over different area types. This parameter is optional. If you omit it, it defaults to the area costs that you configured in the Project settings. - - Success if the ray can be correctly traced using the provided arguments. - -Failure if the start location is not valid in the query's NavMeshWorld, or if it is inside an area not permitted by the areaMask argument, or when it is on a. - -BufferTooSmall is part of the returned flags when the provided path buffer is not large enough to hold all the polygons that the ray passed through. - - - - - Continues a path search that is in progress. - - Maximum number of nodes to be traversed by the search algorithm during this call. - Outputs the actual number of nodes that have been traversed during this call. - - InProgress if the search needs to continue further by calling UpdateFindPath again. - -Success if the search is completed and a path has been found or not. - -Failure if the search for the desired position could not be completed because the NavMesh has changed significantly since the search was initiated. - -Additionally the returned value can contain the OutOfNodes flag when the pathNodePoolSize parameter for the NavMeshQuery initialization was not large enough to accommodate the search space. - - - - - Assembles together a collection of NavMesh surfaces and links that are used as a whole for performing navigation operations. - - - - - Tells the NavMesh world to halt any changes until the specified job is completed. - - The job that needs to be completed before the NavMesh world can be modified in any way. - - - - Returns a reference to the single NavMeshWorld that can currently exist and be used in Unity. - - - - - Returns true if the NavMeshWorld has been properly initialized. - - - - - Bit flags representing the resulting state of NavMeshQuery operations. - - - - - The node buffer of the query was too small to store all results. - - - - - The operation has failed. - - - - - The operation is in progress. - - - - - A parameter did not contain valid information, useful for carring out the NavMesh query. - - - - - Operation ran out of memory. - - - - - Query ran out of node stack space during a search. - - - - - Query did not reach the end location, returning best guess. - - - - - Bitmask that has 0 set for the Success, Failure and InProgress bits and 1 set for all the other flags. - - - - - The operation was successful. - - - - - Data in the NavMesh cannot be recognized and used. - - - - - Data in the NavMesh world has a wrong version. - - - - - Represents a compact identifier for the data of a NavMesh node. - - - - - Returns true if two PolygonId objects refer to the same NavMesh node. - - - - - - - Returns true if two PolygonId objects refer to the same NavMesh node. - - - - - - - Returns the hash code for use in collections. - - - - - Returns true if the PolygonId has been created empty and has never pointed to any node in the NavMesh. - - - - - Returns true if two PolygonId objects refer to the same NavMesh node or if they are both null. - - - - - - - Returns true if two PolygonId objects refer to different NavMesh nodes or if only one of them is null. - - - - - - - The humanoid stream of animation data passed from one Playable to another. - - - - - The position of the body center of mass relative to the root. - - - - - The rotation of the body center of mass relative to the root. - - - - - The position of the body center of mass in world space. - - - - - The rotation of the body center of mass in world space. - - - - - The scale of the Avatar. (Read Only) - - - - - Returns true if the stream is valid; false otherwise. (Read Only) - - - - - The left foot height from the floor. (Read Only) - - - - - The left foot velocity from the last evaluated frame. (Read Only) - - - - - The right foot height from the floor. (Read Only) - - - - - The right foot velocity from the last evaluated frame. (Read Only) - - - - - Returns the position of this IK goal relative to the root. - - The AvatarIKGoal that is queried. - - The position of this IK goal. - - - - - Returns the rotation of this IK goal relative to the root. - - The AvatarIKGoal that is queried. - - The rotation of this IK goal. - - - - - Returns the position of this IK goal in world space. - - The AvatarIKGoal that is queried. - - The position of this IK goal. - - - - - Returns the position of this IK goal in world space computed from the stream current pose. - - The AvatarIKGoal that is queried. - - The position of this IK goal. - - - - - Returns the rotation of this IK goal in world space. - - The AvatarIKGoal that is queried. - - The rotation of this IK goal. - - - - - Returns the rotation of this IK goal in world space computed from the stream current pose. - - The AvatarIKGoal that is queried. - - The rotation of this IK goal. - - - - - Returns the position weight of the IK goal. - - The AvatarIKGoal that is queried. - - The position weight of the IK goal. - - - - - Returns the rotation weight of the IK goal. - - The AvatarIKGoal that is queried. - - The rotation weight of the IK goal. - - - - - Returns the position of this IK Hint in world space. - - The AvatarIKHint that is queried. - - The position of this IK Hint. - - - - - Returns the position weight of the IK Hint. - - The AvatarIKHint that is queried. - - The position weight of the IK Hint. - - - - - Returns the muscle value. - - The Muscle that is queried. - - The muscle value. - - - - - Reset the current pose to the stance pose (T Pose). - - - - - Sets the position of this IK goal relative to the root. - - The AvatarIKGoal that is queried. - The position of this IK goal. - - - - Sets the rotation of this IK goal relative to the root. - - The AvatarIKGoal that is queried. - The rotation of this IK goal. - - - - Sets the position of this IK goal in world space. - - The AvatarIKGoal that is queried. - The position of this IK goal. - - - - Sets the rotation of this IK goal in world space. - - The AvatarIKGoal that is queried. - The rotation of this IK goal. - - - - Sets the position weight of the IK goal. - - The AvatarIKGoal that is queried. - The position weight of the IK goal. - - - - Sets the rotation weight of the IK goal. - - The AvatarIKGoal that is queried. - The rotation weight of the IK goal. - - - - Sets the position of this IK hint in world space. - - The AvatarIKHint that is queried. - The position of this IK hint. - - - - Sets the position weight of the IK Hint. - - The AvatarIKHint that is queried. - The position weight of the IK Hint. - - - - Sets the LookAt body weight. - - The LookAt body weight. - - - - Sets the LookAt clamp weight. - - The LookAt clamp weight. - - - - Sets the LookAt eyes weight. - - The LookAt eyes weight. - - - - Sets the LookAt head weight. - - The LookAt head weight. - - - - Sets the look at position in world space. - - The look at position. - - - - Sets the muscle value. - - The Muscle that is queried. - The muscle value. - - - - Execute the IK solver. - - - - - A Playable that can run a custom, multi-threaded animation job. - - - - - Creates an AnimationScriptPlayable in the PlayableGraph. - - The PlayableGraph object that will own the AnimationScriptPlayable. - The IAnimationJob to execute when processing the playable. - The number of inputs on the playable. - - - A new AnimationScriptPlayable linked to the PlayableGraph. - - - - - Gets the job data contained in the playable. - - - Returns the IAnimationJob data contained in the playable. - - - - - Returns whether the playable inputs will be processed or not. - - - true if the inputs will be processed; false otherwise. - - - - - Sets a new job data in the playable. - - The new IAnimationJob data to set in the playable. - - - - Sets the new value for processing the inputs or not. - - The new value for processing the inputs or not. - - - - The stream of animation data passed from one Playable to another. - - - - - Gets or sets the avatar angular velocity for the evaluated frame. - - - - - Gets the delta time for the evaluated frame. (Read Only) - - - - - Gets the number of input streams. (Read Only) - - - - - Returns true if the stream is from a humanoid avatar; false otherwise. (Read Only) - - - - - Returns true if the stream is valid; false otherwise. (Read Only) - - - - - Gets the root motion position for the evaluated frame. (Read Only) - - - - - Gets the root motion rotation for the evaluated frame. (Read Only) - - - - - Gets or sets the avatar velocity for the evaluated frame. - - - - - Gets the same stream, but as an AnimationHumanStream. - - - Returns the same stream, but as an AnimationHumanStream. - - - - - Gets the AnimationStream of the playable input at index. - - The input index. - - Returns the AnimationStream of the playable input at index. Returns an invalid stream if the input is not an animation Playable. - - - - - Static class providing extension methods for Animator and the animation C# jobs. - - - - - Create a PropertySceneHandle representing the new binding on the Component property of a Transform in the Scene. - - The Animator instance the method is called on. - The Transform to target. - The Component type. - The property to bind. - isObjectReference need to be set to true if the property to bind does access an Object like SpriteRenderer.sprite. - - The PropertySceneHandle representing the new binding. - - - - - Create a PropertySceneHandle representing the new binding on the Component property of a Transform in the Scene. - - The Animator instance the method is called on. - The Transform to target. - The Component type. - The property to bind. - isObjectReference need to be set to true if the property to bind does access an Object like SpriteRenderer.sprite. - - The PropertySceneHandle representing the new binding. - - - - - Create a TransformSceneHandle representing the new binding between the Animator and a Transform in the Scene. - - The Animator instance the method is called on. - The Transform to bind. - - The TransformSceneHandle representing the new binding. - - - - - Create a PropertyStreamHandle representing the new binding on the Component property of a Transform already bound to the Animator. - - The Animator instance the method is called on. - The Transform to target. - The Component type. - The property to bind. - isObjectReference need to be set to true if the property to bind does animate an Object like SpriteRenderer.sprite. - - The PropertyStreamHandle representing the new binding. - - - - - Create a PropertyStreamHandle representing the new binding on the Component property of a Transform already bound to the Animator. - - The Animator instance the method is called on. - The Transform to target. - The Component type. - The property to bind. - isObjectReference need to be set to true if the property to bind does animate an Object like SpriteRenderer.sprite. - - The PropertyStreamHandle representing the new binding. - - - - - Create a TransformStreamHandle representing the new binding between the Animator and a Transform already bound to the Animator. - - The Animator instance the method is called on. - The Transform to bind. - - The TransformStreamHandle representing the new binding. - - - - - Close a stream that has been opened using OpenAnimationStream. - - The Animator instance the method is called on. - The stream to close. - - - - Open a new stream on the Animator. - - The Animator instance the method is called on. - The new stream. - - Whether or not the stream have been opened. - - - - - Newly created handles are always resolved lazily on the next access when the jobs are run. To avoid a cpu spike while evaluating the jobs you can manually resolve all handles from the main thread. - - The Animator instance the method is called on. - - - - Newly created handles are always resolved lazily on the next access when the jobs are run. To avoid a cpu spike while evaluating the jobs you can manually resolve all handles from the main thread. - - The Animator instance the method is called on. - - - - The interface defining an animation job to use with an IAnimationJobPlayable. - - - - - Defines what to do when processing the animation. - - The animation stream to work on. - - - - Defines what to do when processing the root motion. - - The animation stream to work on. - - - - The interface defining an animation playable that uses IAnimationJob. - - - - - Gets the job data contained in the playable. - - - Returns the IAnimationJob data contained in the playable. - - - - - Sets a new job data in the playable. - - The new IAnimationJob data to set in the playable. - - - - Handle for a muscle in the AnimationHumanStream. - - - - - The muscle human sub-part. (Read Only) - - - - - The muscle human part. (Read Only) - - - - - The total number of DoF parts in a humanoid. (Read Only) - - - - - The name of the muscle. (Read Only) - - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - The different constructors that creates the muscle handle. - - The muscle body sub-part. - The muscle head sub-part. - The muscle human part. - The muscle leg sub-part. - The muscle arm sub-part. - The muscle finger sub-part. - - - - Fills the array with all the possible muscle handles on a humanoid. - - An array of MuscleHandle. - - - - Handle for a Component property on an object in the Scene. - - - - - Gets the boolean property value from an object in the Scene. - - The AnimationStream managing this handle. - - The boolean property value. - - - - - Gets the float property value from an object in the Scene. - - The AnimationStream managing this handle. - - The float property value. - - - - - Gets the integer property value from an object in the Scene. - - The AnimationStream managing this handle. - - The integer property value. - - - - - Returns whether or not the handle is resolved. - - The AnimationStream managing this handle. - - Returns true if the handle is resolved, false otherwise. - - - - - Returns whether or not the handle is valid. - - The AnimationStream managing this handle. - - Whether or not the handle is valid. - - - - - Resolves the handle. - - The AnimationStream managing this handle. - - - - Sets the boolean property value to an object in the Scene. - - The AnimationStream managing this handle. - The new boolean property value. - - - - Sets the float property value to an object in the Scene. - - The AnimationStream managing this handle. - The new float property value. - - - - Sets the integer property value to an object in the Scene. - - The AnimationStream managing this handle. - The new integer property value. - - - - Handle for a Component property on an object in the AnimationStream. - - - - - Gets the boolean property value from a stream. - - The AnimationStream holding the animated values. - - The boolean property value. - - - - - Gets the float property value from a stream. - - The AnimationStream holding the animated values. - - The float property value. - - - - - Gets the integer property value from a stream. - - The AnimationStream holding the animated values. - - The integer property value. - - - - - Returns whether or not the handle is resolved. - - The AnimationStream holding the animated values. - - Returns true if the handle is resolved, false otherwise. - - - - - Returns whether or not the handle is valid. - - The AnimationStream holding the animated values. - - Whether or not the handle is valid. - - - - - Resolves the handle. - - The AnimationStream holding the animated values. - - - - Sets the boolean property value into a stream. - - The AnimationStream holding the animated values. - The new boolean property value. - - - - Sets the float property value into a stream. - - The AnimationStream holding the animated values. - The new float property value. - - - - Sets the integer property value into a stream. - - The AnimationStream holding the animated values. - The new integer property value. - - - - Position, rotation and scale of an object in the Scene. - - - - - Gets the position of the transform relative to the parent. - - The AnimationStream that manage this handle. - - The position of the transform relative to the parent. - - - - - Gets the rotation of the transform relative to the parent. - - The AnimationStream that manage this handle. - - The rotation of the transform relative to the parent. - - - - - Gets the scale of the transform relative to the parent. - - The AnimationStream that manage this handle. - - The scale of the transform relative to the parent. - - - - - Gets the position of the transform in world space. - - The AnimationStream that manage this handle. - - The position of the transform in world space. - - - - - Gets the rotation of the transform in world space. - - The AnimationStream that manage this handle. - - The rotation of the transform in world space. - - - - - Returns whether this is a valid handle. - - The AnimationStream that manage this handle. - - Whether this is a valid handle. - - - - - Sets the position of the transform relative to the parent. - - The AnimationStream that manage this handle. - The position of the transform relative to the parent. - - - - Sets the rotation of the transform relative to the parent. - - The AnimationStream that manage this handle. - The rotation of the transform relative to the parent. - - - - Sets the scale of the transform relative to the parent. - - The AnimationStream that manage this handle. - The scale of the transform relative to the parent. - - - - Sets the position of the transform in world space. - - The AnimationStream that manage this handle. - The position of the transform in world space. - - - - Sets the rotation of the transform in world space. - - The AnimationStream that manage this handle. - The rotation of the transform in world space. - - - - Position, rotation and scale of an object in the AnimationStream. - - - - - Gets the position of the transform relative to the parent. - - The AnimationStream that hold the animated values. - - The position of the transform relative to the parent. - - - - - Gets the rotation of the transform relative to the parent. - - The AnimationStream that hold the animated values. - - The rotation of the transform relative to the parent. - - - - - Gets the scale of the transform relative to the parent. - - The AnimationStream that hold the animated values. - - The scale of the transform relative to the parent. - - - - - Gets the position of the transform in world space. - - The AnimationStream that hold the animated values. - - The position of the transform in world space. - - - - - Gets the rotation of the transform in world space. - - The AnimationStream that hold the animated values. - - The rotation of the transform in world space. - - - - - Returns whether this handle is resolved. - - The AnimationStream that hold the animated values. - - Returns true if the handle is resolved, false otherwise. - - - - - Returns whether this is a valid handle. - - The AnimationStream that hold the animated values. - - Whether this is a valid handle. - - - - - Bind this handle with an animated values from the AnimationStream. - - The AnimationStream that hold the animated values. - - - - Sets the position of the transform relative to the parent. - - The AnimationStream that hold the animated values. - The position of the transform relative to the parent. - - - - Sets the rotation of the transform relative to the parent. - - The AnimationStream that hold the animated values. - The rotation of the transform relative to the parent. - - - - Sets the scale of the transform relative to the parent. - - The scale of the transform relative to the parent. - The AnimationStream that hold the animated values. - - - - Sets the position of the transform in world space. - - The position of the transform in world space. - The AnimationStream that hold the animated values. - - - - Sets the rotation of the transform in world space. - - The AnimationStream that hold the animated values. - The rotation of the transform in world space. - - - - Provides access to the audio samples generated by Unity objects such as VideoPlayer. - - - - - Number of sample frames available for consuming with Experimental.Audio.AudioSampleProvider.ConsumeSampleFrames. - - - - - The number of audio channels per sample frame. - - - - - Pointer to the native function that provides access to audio sample frames. - - - - - Enables the Experimental.Audio.AudioSampleProvider.sampleFramesAvailable events. - - - - - If true, buffers produced by ConsumeSampleFrames will get padded when silence if there are less available than asked for. Otherwise, the extra sample frames in the buffer will be left unchanged. - - - - - Number of sample frames that can still be written to by the sample producer before overflowing. - - - - - Then the free sample count falls below this threshold, the Experimental.Audio.AudioSampleProvider.sampleFramesAvailable event and associated native is emitted. - - - - - Unique identifier for this instance. - - - - - The maximum number of sample frames that can be accumulated inside the internal buffer before an overflow event is emitted. - - - - - Object where this provider came from. - - - - - Invoked when the number of available sample frames goes beyond the threshold set with Experimental.Audio.AudioSampleProvider.freeSampleFrameCountLowThreshold. - - Number of available sample frames. - - - - Invoked when the number of available sample frames goes beyond the maximum that fits in the internal buffer. - - The number of sample frames that were dropped due to the overflow. - - - - The expected playback rate for the sample frames produced by this class. - - - - - Index of the track in the object that created this provider. - - - - - True if the object is valid. - - - - - Clear the native handler set with Experimental.Audio.AudioSampleProvider.SetSampleFramesAvailableNativeHandler. - - - - - Clear the native handler set with Experimental.Audio.AudioSampleProvider.SetSampleFramesOverflowNativeHandler. - - - - - Consume sample frames from the internal buffer. - - Buffer where the consumed samples will be transferred. - - How many sample frames were written into the buffer passed in. - - - - - Type that represents the native function pointer for consuming sample frames. - - Id of the provider. See Experimental.Audio.AudioSampleProvider.id. - Pointer to the sample frames buffer to fill. The actual C type is float*. - Number of sample frames that can be written into interleavedSampleFrames. - - - - Release internal resources. Inherited from IDisposable. - - - - - Type that represents the native function pointer for handling sample frame events. - - User data specified when the handler was set. The actual C type is void*. - Id of the provider. See Experimental.Audio.AudioSampleProvider.id. - Number of sample frames available or overflowed, depending on event type. - - - - Delegate for sample frame events. - - Provider emitting the event. - How many sample frames are available, or were dropped, depending on the event. - - - - Set the native event handler for events emitted when the number of available sample frames crosses the threshold. - - Pointer to the function to invoke when the event is emitted. - User data to be passed to the handler when invoked. The actual C type is void*. - - - - Set the native event handler for events emitted when the internal sample frame buffer overflows. - - Pointer to the function to invoke when the event is emitted. - User data to be passed to the handler when invoked. The actual C type is void*. - - - - A helper structure used to initialize a LightDataGI structure as a directional light. - - - - - The direct light color. - - - - - The direction of the light. - - - - - The indirect light color. - - - - - The light's instanceID. - - - - - The lightmode. - - - - - The penumbra width for soft shadows in radians. - - - - - True if the light casts shadows, otherwise False. - - - - - A helper structure used to initialize a LightDataGI structure as a disc light. - - - - - The direct light color. - - - - - The indirect light color. - - - - - The light's instanceID. - - - - - The lightmode. - - - - - The light's orientation. - - - - - The light's position. - - - - - The radius of the disc light. - - - - - The light's range. - - - - - True if the light casts shadows, otherwise False. - - - - - Available falloff models for baking. - - - - - Inverse squared distance falloff model. - - - - - Inverse squared distance falloff model (without smooth range attenuation). - - - - - Quadratic falloff model. - - - - - Linear falloff model. - - - - - Falloff model is undefined. - - - - - The interop structure to pass light information to the light baking backends. There are helper structures for Directional, Point, Spot and Rectangle lights to correctly initialize this structure. - - - - - The color of the light. - - - - - The cone angle for spot lights. - - - - - The falloff model to use for baking point and spot lights. - - - - - The indirect color of the light. - - - - - The inner cone angle for spot lights. - - - - - The light's instanceID. - - - - - The lightmap mode for the light. - - - - - The orientation of the light. - - - - - The position of the light. - - - - - The range of the light. Unused for directional lights. - - - - - Set to 1 for shadow casting lights, 0 otherwise. - - - - - The light's sphere radius for point and spot lights, or the width for rectangle lights. - - - - - The height for rectangle lights. - - - - - The type of the light. - - - - - Initialize the struct with the parameters from the given light type. - - - - - - Initialize the struct with the parameters from the given light type. - - - - - - Initialize the struct with the parameters from the given light type. - - - - - - Initialize the struct with the parameters from the given light type. - - - - - - Initialize a light so that the baking backends ignore it. - - - - - - Utility class for converting Unity Lights to light types recognized by the baking backends. - - - - - Extracts informations from Lights. - - The lights baketype. - - Returns the light's light mode. - - - - - Extract type specific information from Lights. - - The input light. - Extracts directional light information. - Extracts point light information. - Extracts spot light information. - Extracts rectangle light information. - - - - Extract type specific information from Lights. - - The input light. - Extracts directional light information. - Extracts point light information. - Extracts spot light information. - Extracts rectangle light information. - - - - Extract type specific information from Lights. - - The input light. - Extracts directional light information. - Extracts point light information. - Extracts spot light information. - Extracts rectangle light information. - - - - Extract type specific information from Lights. - - The input light. - Extracts directional light information. - Extracts point light information. - Extracts spot light information. - Extracts rectangle light information. - - - - Extracts the indirect color from a light. - - - - - - Extracts the inner cone angle of spot lights. - - - - - - Interface to the light baking backends. - - - - - Get the currently set conversion delegate. - - - Returns the currently set conversion delegate. - - - - - Delegate called when converting lights into a form that the baking backends understand. - - The list of lights to be converted. - The output generated by the delegate function. Lights that should be skipped must be added to the output, initialized with InitNoBake on the LightDataGI structure. - - - - Resets the light conversion delegate to Unity's default conversion function. - - - - - Set a delegate that converts a list of lights to a list of LightDataGI structures that are passed to the baking backends. Must be reset by calling ResetDelegate again. - - - - - - The lightmode. A light can be realtime, mixed, baked or unknown. Unknown lights will be ignored by the baking backends. - - - - - The light is fully baked and has no realtime component. - - - - - The light is mixed. Mixed lights are interpreted based on the global light mode setting in the lighting window. - - - - - The light is realtime. No contribution will be baked in lightmaps or light probes. - - - - - The light should be ignored by the baking backends. - - - - - The light type. - - - - - An infinite directional light. - - - - - A light shaped like a disc emitting light into the hemisphere that it is facing. - - - - - A point light emitting light in all directions. - - - - - A light shaped like a rectangle emitting light into the hemisphere that it is facing. - - - - - A spot light emitting light in a direction with a cone shaped opening angle. - - - - - Contains normalized linear color values for red, green, blue in the range of 0 to 1, and an additional intensity value. - - - - - The blue color value in the range of 0.0 to 1.0. - - - - - The green color value in the range of 0.0 to 1.0. - - - - - The intensity value used to scale the red, green and blue values. - - - - - The red color value in the range of 0.0 to 1.0. - - - - - Returns a black color. - - - Returns a black color. - - - - - Converts a Light's color value to a normalized linear color value, automatically handling gamma conversion if necessary. - - Light color. - Light intensity. - - Returns the normalized linear color value. - - - - - A helper structure used to initialize a LightDataGI structure as a point light. - - - - - The direct light color. - - - - - The falloff model to use for baking the point light. - - - - - The indirect light color. - - - - - The light's instanceID. - - - - - The lightmode. - - - - - The light's position. - - - - - The light's range. - - - - - True if the light casts shadows, otherwise False. - - - - - The light's sphere radius, influencing soft shadows. - - - - - A helper structure used to initialize a LightDataGI structure as a rectangle light. - - - - - The direct light color. - - - - - The height of the rectangle light. - - - - - The indirect light color. - - - - - The light's instanceID. - - - - - The lightmode. - - - - - The light's orientation. - - - - - The light's position. - - - - - The light's range. - - - - - True if the light casts shadows, otherwise False. - - - - - The width of the rectangle light. - - - - - A helper structure used to initialize a LightDataGI structure as a spot light. - - - - - The direct light color. - - - - - The outer angle for the spot light. - - - - - The falloff model to use for baking the spot light. - - - - - The indirect light color. - - - - - The inner angle for the spot light. - - - - - The light's instanceID. - - - - - The lightmode. - - - - - The light's orientation. - - - - - The light's position. - - - - - The light's range. - - - - - True if the light casts shadows, otherwise False. - - - - - The light's sphere radius, influencing soft shadows. - - - - - An IntegratedSubsystem is initialized from an IntegratedSubsystemDescriptor for a given Subsystem (Example, Input, Environment, Display, etc.) and provides an interface to interact with that given IntegratedSubsystem until it is Destroyed. After an IntegratedSubsystem is created it can be Started or Stopped to turn on and off functionality (and preserve performance). The base type for IntegratedSubsystem only exposes this functionality; this class is designed to be a base class for derived classes that expose more functionality specific to a given IntegratedSubsystem. - - Note: initializing a second IntegratedSubsystem from the same IntegratedSubsystemDescriptor will return a reference to the existing IntegratedSubsystem as only one IntegratedSubsystem is currently allowed for a single IntegratedSubsystem provider. - - - - - - Destroys this instance of a subsystem. - - - - - Starts an instance of a subsystem. - - - - - Stops an instance of a subsystem. - - - - - Information about a subsystem that can be queried before creating a subsystem instance. - - - - - A unique string that identifies the subsystem that this Descriptor can create. - - - - - Interface implemented by both Subsystem and IntegratedSubsystem which provides control over the state of either. - - - - - - Destroys this instance of a subsystem. - - - - - Starts an instance of a subsystem. - - - - - Stops an instance of a subsystem. - - - - - A subsystem descriptor is metadata about a subsystem which can be inspected before loading / initializing a subsystem. - - - - - - The class representing the player loop in Unity. - - - - - Returns the default update order of all engine systems in Unity. - - - - - Set a new custom update order of all engine systems in Unity. - - - - - The representation of a single system being updated by the player loop in Unity. - - - - - The loop condition for a native engine system. To get a valid value for this, you must copy it from one of the PlayerLoopSystems returned by PlayerLoop.GetDefaultPlayerLoop. - - - - - A list of sub systems which run as part of this item in the player loop. - - - - - This property is used to identify which native system this belongs to, or to get the name of the managed system to show in the profiler. - - - - - A managed delegate. You can set this to create a new C# entrypoint in the player loop. - - - - - A native engine system. To get a valid value for this, you must copy it from one of the PlayerLoopSystems returned by PlayerLoop.GetDefaultPlayerLoop. - - - - - The type of the connected target. - - - - - The connected target is an Editor. - - - - - No target is connected, this is only possible in a Player. - - - - - The connected target is a Player. - - - - - The state of an Editor-to-Player or Editor-to-Editor connection to be used in Experimental.Networking.PlayerConnection.EditorGUI.AttachToPlayerDropdown or Experimental.Networking.PlayerConnection.EditorGUILayout.AttachToPlayerDropdown. - - - - - Supplies the type of the established connection, as in whether the target is a Player or an Editor. - - - - - The name of the connected target. - - - - - An implementation of IPlayable that produces a Camera texture. - - - - - Creates a CameraPlayable in the PlayableGraph. - - The PlayableGraph object that will own the CameraPlayable. - Camera used to produce a texture in the PlayableGraph. - - A CameraPlayable linked to the PlayableGraph. - - - - - An implementation of IPlayable that allows application of a Material shader to one or many texture inputs to produce a texture output. - - - - - Creates a MaterialEffectPlayable in the PlayableGraph. - - The PlayableGraph object that will own the MaterialEffectPlayable. - Material used to modify linked texture playable inputs. - Shader pass index.(Note: -1 for all passes). - - A MaterialEffectPlayable linked to the PlayableGraph. - - - - - An implementation of IPlayable that allows mixing two textures. - - - - - Creates a TextureMixerPlayable in the PlayableGraph. - - The PlayableGraph object that will own the TextureMixerPlayable. - - A TextureMixerPlayable linked to the PlayableGraph. - - - - - A PlayableBinding that contains information representing a TexturePlayableOutput. - - - - - Creates a PlayableBinding that contains information representing a TexturePlayableOutput. - - A reference to a UnityEngine.Object that acts as a key for this binding. - The name of the TexturePlayableOutput. - - Returns a PlayableBinding that contains information that is used to create a TexturePlayableOutput. - - - - - An IPlayableOutput implementation that will be used to manipulate textures. - - - - - Returns an invalid TexturePlayableOutput. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Update phase in the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Native engine system updated by the native player loop. - - - - - Values for the blend state. - - - - - Turns on alpha-to-coverage. - - - - - Blend state for render target 0. - - - - - Blend state for render target 1. - - - - - Blend state for render target 2. - - - - - Blend state for render target 3. - - - - - Blend state for render target 4. - - - - - Blend state for render target 5. - - - - - Blend state for render target 6. - - - - - Blend state for render target 7. - - - - - Determines whether each render target uses a separate blend state. - - - - - Creates a new blend state with the specified values. - - Determines whether each render target uses a separate blend state. - Turns on alpha-to-coverage. - - - - Default values for the blend state. - - - - - Camera related properties in CullingParameters. - - - - - Get a camera culling plane. - - Plane index (up to 5). - - Camera culling plane. - - - - - Get a shadow culling plane. - - Plane index (up to 5). - - Shadow culling plane. - - - - - Set a camera culling plane. - - Plane index (up to 5). - Camera culling plane. - - - - Set a shadow culling plane. - - Plane index (up to 5). - Shadow culling plane. - - - - Core Camera related properties in CullingParameters. - - - - - Culling results (visible objects, lights, reflection probes). - - - - - Array of visible lights. - - - - - Off screen lights that still effect visible Scene vertices. - - - - - Array of visible reflection probes. - - - - - Visible renderers. - - - - - Calculates the view and projection matrices and shadow split data for a directional light. - - The index into the active light array. - The cascade index. - The number of cascades. - The cascade ratios. - The resolution of the shadowmap. - The near plane offset for the light. - The computed view matrix. - The computed projection matrix. - The computed cascade data. - - If false, the shadow map for this cascade does not need to be rendered this frame. - - - - - Calculates the view and projection matrices and shadow split data for a point light. - - The index into the active light array. - The cubemap face to be rendered. - The amount by which to increase the camera FOV above 90 degrees. - The computed view matrix. - The computed projection matrix. - The computed split data. - - If false, the shadow map for this light and cubemap face does not need to be rendered this frame. - - - - - Calculates the view and projection matrices and shadow split data for a spot light. - - The index into the active light array. - The computed view matrix. - The computed projection matrix. - The computed split data. - - If false, the shadow map for this light does not need to be rendered this frame. - - - - - Perform culling for a Camera. - - Camera to cull for. - Render loop the culling results will be used with. - Culling results. - - Flag indicating whether culling succeeded. - - - - - Perform culling with custom CullingParameters. - - Parameters for culling. - Render loop the culling results will be used with. - - Culling results. - - - - - Fills a compute buffer with per-object light indices. - - The compute buffer object to fill. - - - - Get culling parameters for a camera. - - Camera to get parameters for. - Resultant culling parameters. - Generate single-pass stereo aware culling parameters. - - Flag indicating whether culling parameters are valid. - - - - - Get culling parameters for a camera. - - Camera to get parameters for. - Resultant culling parameters. - Generate single-pass stereo aware culling parameters. - - Flag indicating whether culling parameters are valid. - - - - - If a RenderPipeline sorts or otherwise modifies the VisibleLight list, an index remap will be necessary to properly make use of per-object light lists. - - - Array of indices that map from VisibleLight indices to internal per-object light list indices. - - - - - Gets the number of per-object light indices. - - - The number of per-object light indices. - - - - - Returns the bounding box that encapsulates the visible shadow casters. Can be used to, for instance, dynamically adjust cascade ranges. - - The index of the shadow-casting light. - The bounds to be computed. - - True if the light affects at least one shadow casting object in the Scene. - - - - - If a RenderPipeline sorts or otherwise modifies the VisibleLight list, an index remap will be necessary to properly make use of per-object light lists. -If an element of the array is set to -1, the light corresponding to that element will be disabled. - - Array with light indices that map from VisibleLight to internal per-object light lists. - - - - Values for the depth state. - - - - - How should depth testing be performed. - - - - - Controls whether pixels from this object are written to the depth buffer. - - - - - Creates a new depth state with the given values. - - Controls whether pixels from this object are written to the depth buffer. - How should depth testing be performed. - - - - Default values for the depth state. - - - - - Flags controlling RenderLoop.DrawRenderers. - - - - - When set, enables dynamic batching. - - - - - When set, enables GPU instancing. - - - - - No flags are set. - - - - - Settings for ScriptableRenderContext.DrawRenderers. - - - - - Other flags controlling object rendering. - - - - - The maxiumum number of passes that can be rendered in 1 DrawRenderers call. - - - - - What kind of per-object data to setup during rendering. - - - - - How to sort objects during rendering. - - - - - Create a draw settings struct. - - Camera to use. Camera's transparency sort mode is used to determine whether to use orthographic or distance based sorting. - Shader pass to use. - - - - Set the Material to use for all drawers that would render in this group. - - Override material. - Pass to use in the material. - - - - Set the shader passes that this draw call can render. - - Index of the shader pass to use. - Name of the shader pass. - - - - Type of sorting to use while rendering. - - - - - Sort objects based on distance along a custom axis. - - - - - Orthographic sorting mode. - - - - - Perspective sorting mode. - - - - - This struct describes the methods to sort objects during rendering. - - - - - Used to calculate distance to objects, by comparing the positions of objects to this axis. - - - - - Used to calculate the distance to objects. - - - - - What kind of sorting to do while rendering. - - - - - Type of sorting to use while rendering. - - - - - Should orthographic sorting be used? - - - - - Used to calculate the distance to objects. - - - - - Settings for ScriptableRenderContext.DrawShadows. - - - - - Culling results to use. - - - - - The index of the shadow-casting light to be rendered. - - - - - The split data. - - - - - Create a shadow settings object. - - The cull results for this light. - The light index. - - - - Filter settings for ScriptableRenderContext.DrawRenderers. - - - - - Set to true to exclude objects that are currently in motion from rendering. The default value is false. - - - - - Only render objects in the given layer mask. - - - - - The rendering layer mask to use when filtering available renderers for drawing. - - - - - Render objects whose material render queue in inside this range. - - - - - - - Specifies whether the values of the struct should be initialized. - - - - Describes a subset of objects to be rendered. - -See Also: ScriptableRenderContext.DrawRenderers. - - - - - Use this format usages to figure out the capabilities of specific GraphicsFormat - - - - - To blend on a rendertexture. - - - - - To sample textures with a linear filter - - - - - To perform resource load and store on a texture - - - - - To create and render to a MSAA 2X rendertexture. - - - - - To create and render to a MSAA 4X rendertexture. - - - - - To create and render to a MSAA 8X rendertexture. - - - - - To create and render to a rendertexture. - - - - - To create and sample textures. - - - - - Use this format to create either Textures or RenderTextures from scripts. - - - - - A four-component, 64-bit packed unsigned normalized format that has a 10-bit A component in bits 30..39, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are gamma encoded and their values range from -0.5271 to 1.66894. The alpha component is clamped to either 0.0 or 1.0 on sampling, rendering, and writing operations. - - - - - A four-component, 64-bit packed unsigned normalized format that has a 10-bit A component in bits 30..39, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are linearly encoded and their values range from -0.752941 to 1.25098 (pre-expansion). The alpha component is clamped to either 0.0 or 1.0 on sampling, rendering, and writing operations. - - - - - A four-component, 16-bit packed unsigned normalized format that has a 1-bit A component in bit 15, a 5-bit R component in bits 10..14, a 5-bit G component in bits 5..9, and a 5-bit B component in bits 0..4. - - - - - A four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. - - - - - A four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. - - - - - A four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. - - - - - A four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are gamma encoded and their values range from -0.5271 to 1.66894. The alpha component is clamped to either 0.0 or 1.0 on sampling, rendering, and writing operations. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are linearly encoded and their values range from -0.752941 to 1.25098 (pre-expansion). The alpha component is clamped to either 0.0 or 1.0 on sampling, rendering, and writing operations. - - - - - A three-component, 32-bit packed unsigned floating-point format that has a 10-bit B component in bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component in bits 0..10. - - - - - A four-component, 16-bit packed unsigned normalized format that has a 4-bit B component in bits 12..15, a 4-bit G component in bits 8..11, a 4-bit R component in bits 4..7, and a 4-bit A component in bits 0..3. - - - - - A four-component, 16-bit packed unsigned normalized format that has a 5-bit B component in bits 11..15, a 5-bit G component in bits 6..10, a 5-bit R component in bits 1..5, and a 1-bit A component in bit 0. - - - - - A three-component, 16-bit packed unsigned normalized format that has a 5-bit B component in bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit R component in bits 0..4. - - - - - A three-component, 24-bit signed integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2. - - - - - A three-component, 24-bit signed normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2. - - - - - A three-component, 24-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB nonlinear encoding in byte 2. - - - - - A three-component, 24-bit unsigned integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2 - - - - - A three-component, 24-bit unsigned normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2. - - - - - A four-component, 32-bit signed integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit signed normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned normalized format that has an 8-bit B component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, an 8-bit R component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3. - - - - - A one-component, 16-bit unsigned normalized format that has a single 16-bit depth component. - - - - - A two-component, 32-bit format that has 24 unsigned normalized bits in the depth component and, optionally: 8 bits that are unused. - - - - - A two-component, 32-bit packed format that has 8 unsigned integer bits in the stencil component, and 24 unsigned normalized bits in the depth component. - - - - - A one-component, 32-bit signed floating-point format that has 32-bits in the depth component. - - - - - A two-component format that has 32 signed float bits in the depth component and 8 unsigned integer bits in the stencil component. There are optionally: 24-bits that are unused. - - - - - A three-component, 32-bit packed unsigned floating-point format that has a 5-bit shared exponent in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G component mantissa in bits 9..17, and a 9-bit R component mantissa in bits 0..8. - - - - - The format is not specified. - - - - - A one-component, block-compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of signed normalized red texel data. - - - - - A one-component, block-compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized red texel data. - - - - - A one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of signed normalized red texel data. - - - - - A one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized red texel data. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are gamma encoded and their values range from -0.5271 to 1.66894. The alpha component is clamped to either 0.0 or 1.0 on sampling, rendering, and writing operations. - - - - - A four-component, 32-bit packed unsigned normalized format that has a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. The components are linearly encoded and their values range from -0.752941 to 1.25098 (pre-expansion). - - - - - A one-component, 16-bit signed floating-point format that has a single 16-bit R component. - - - - - A one-component, 16-bit signed integer format that has a single 16-bit R component. - - - - - A one-component, 16-bit signed normalized format that has a single 16-bit R component. - - - - - A one-component, 16-bit unsigned integer format that has a single 16-bit R component. - - - - - A one-component, 16-bit unsigned normalized format that has a single 16-bit R component. - - - - - A two-component, 32-bit signed floating-point format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. - - - - - A two-component, 32-bit signed integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. - - - - - A two-component, 32-bit signed normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. - - - - - A two-component, 32-bit unsigned integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. - - - - - A two-component, 32-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. - - - - - A three-component, 48-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. - - - - - A three-component, 48-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. - - - - - A three-component, 48-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. - - - - - A three-component, 48-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. - - - - - A three-component, 48-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. - - - - - A four-component, 64-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. - - - - - A four-component, 64-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. - - - - - A four-component, 64-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. - - - - - A four-component, 64-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. - - - - - A four-component, 64-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. - - - - - A one-component, 32-bit signed floating-point format that has a single 32-bit R component. - - - - - A one-component, 32-bit signed integer format that has a single 32-bit R component. - - - - - A one-component, 32-bit unsigned integer format that has a single 32-bit R component. - - - - - A two-component, 64-bit signed floating-point format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7. - - - - - A two-component, 64-bit signed integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7. - - - - - A two-component, 64-bit unsigned integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7. - - - - - A three-component, 96-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11. - - - - - A three-component, 96-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11. - - - - - A three-component, 96-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11. - - - - - A four-component, 128-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15. - - - - - A four-component, 128-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15. - - - - - A four-component, 128-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15. - - - - - A four-component, 16-bit packed unsigned normalized format that has a 4-bit R component in bits 12..15, a 4-bit G component in bits 8..11, a 4-bit B component in bits 4..7, and a 4-bit A component in bits 0..3. - - - - - A four-component, 16-bit packed unsigned normalized format that has a 5-bit R component in bits 11..15, a 5-bit G component in bits 6..10, a 5-bit B component in bits 1..5, and a 1-bit A component in bit 0. - - - - - A three-component, 16-bit packed unsigned normalized format that has a 5-bit R component in bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit B component in bits 0..4. - - - - - A one-component, 8-bit signed integer format that has a single 8-bit R component. - - - - - A one-component, 8-bit signed normalized format that has a single 8-bit R component. - - - - - A one-component, 8-bit unsigned normalized format that has a single 8-bit R component stored with sRGB nonlinear encoding. - - - - - A one-component, 8-bit unsigned integer format that has a single 8-bit R component. - - - - - A one-component, 8-bit unsigned normalized format that has a single 8-bit R component. - - - - - A two-component, 16-bit signed integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1. - - - - - A two-component, 16-bit signed normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding in byte 1. - - - - - A two-component, 16-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding in byte 1. - - - - - A two-component, 16-bit unsigned integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1. - - - - - A two-component, 16-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding in byte 1. - - - - - A three-component, 24-bit signed integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2. - - - - - A three-component, 24-bit signed normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2. - - - - - A three-component, 24-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB nonlinear encoding in byte 2. - - - - - A three-component, 24-bit unsigned integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2. - - - - - A three-component, 24-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2. - - - - - A four-component, 32-bit signed integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit signed normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, an 8-bit B component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3. - - - - - A four-component, 32-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3. - - - - - A two-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. - - - - - A two-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. - - - - - A two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. - - - - - A two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. - - - - - A four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit of alpha. - - - - - A four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha. - - - - - A three-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of signed floating-point RGB texel data. - - - - - A three-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned floating-point RGB texel data. - - - - - A three-component, ETC compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque. - - - - - A three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque. - - - - - A three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque. - - - - - A three-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 8×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque. - - - - - A three-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 8×4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque. - - - - - A three-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque. - - - - - A three-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×10 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×10 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12×12 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12×12 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5×5 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6×6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6×6 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 8×8 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 8×8 rectangle of unsigned normalized RGBA texel data. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data. - - - - - A three-component, block-compressed format. Each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has a 1 bit alpha channel. - - - - - A three-component, block-compressed format. Each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has a 1 bit alpha channel. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding. - - - - - A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values. - - - - - A four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding applied. - - - - - A four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values. - - - - - A four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 8×4 rectangle of unsigned normalized RGBA texel data with the first 32 bits encoding alpha values followed by 32 bits encoding RGB values with sRGB nonlinear encoding applied. - - - - - A four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 8×4 rectangle of unsigned normalized RGBA texel data with the first 32 bits encoding alpha values followed by 32 bits encoding RGB values. - - - - - A four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 32 bits encoding alpha values followed by 32 bits encoding RGB values with sRGB nonlinear encoding applied. - - - - - A four-component, PVRTC compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 32 bits encoding alpha values followed by 32 bits encoding RGB values. - - - - - A one-component, 8-bit unsigned integer format that has 8-bits in the stencil component. - - - - - Defines a series of commands and settings that describes how Unity renders a frame. - - - - - When the IRenderPipeline is invalid or destroyed this returns true. - - - - - Defines custom rendering for this RenderPipeline. - - Structure that holds the rendering commands for this loop. - Cameras to render. - - - - An asset that produces a specific IRenderPipeline. - - - - - Create a IRenderPipeline specific to this asset. - - - Created pipeline. - - - - - Override this method to destroy RenderPipeline cached state. - - - - - The render index for the terrain brush in the editor. - - - Queue index. - - - - - Defines the required members for a Runtime Reflection Systems. - - - - - Update the reflection probes. - - - Whether a reflection probe was updated. - - - - - LODGroup culling parameters. - - - - - Rendering view height in pixels. - - - - - Camera position. - - - - - Camera's field of view. - - - - - Indicates whether camera is orthographic. - - - - - Orhographic camera size. - - - - - Values for the raster state. - - - - - Controls which sides of polygons should be culled (not drawn). - - - - - Enable clipping based on depth. - - - - - Scales the maximum Z slope. - - - - - Scales the minimum resolvable depth buffer value. - - - - - Creates a new raster state with the given values. - - Controls which sides of polygons should be culled (not drawn). - Scales the minimum resolvable depth buffer value. - Scales the maximum Z slope. - - - - - Default values for the raster state. - - - - - Visible reflection probes sorting options. - - - - - Sort probes by importance. - - - - - Sort probes by importance, then by size. - - - - - Do not sort reflection probes. - - - - - Sort probes from largest to smallest. - - - - - What kind of per-object data to setup during rendering. - - - - - Do not setup any particular per-object data besides the transformation matrix. - - - - - Setup per-object lightmaps. - - - - - Setup per-object light probe SH data. - - - - - Setup per-object light probe proxy volume data. - - - - - Setup per-object motion vectors. - - - - - Setup per-object occlusion probe data. - - - - - Setup per-object occlusion probe proxy volume data (occlusion in alpha channels). - - - - - Setup per-object reflection probe data. - - - - - Setup per-object shadowmask. - - - - - Setup per-object light indices. - - - - - Object encapsulating the duration of a single renderpass that contains one or more subpasses. - -The RenderPass object provides a new way to switch rendertargets in the context of a Scriptable Rendering Pipeline. As opposed to the SetRenderTargets function, the RenderPass object specifies a clear beginning and an end for the rendering, alongside explicit load/store actions on the rendering surfaces. - -The RenderPass object also allows running multiple subpasses within the same renderpass, where the pixel shaders have a read access to the current pixel value within the renderpass. This allows for efficient implementation of various rendering methods on tile-based GPUs, such as deferred rendering. - -RenderPasses are natively implemented on Metal (iOS) and Vulkan, but the API is fully functional on all rendering backends via emulation (using legacy SetRenderTargets calls and reading the current pixel values via texel fetches). - -A quick example on how to use the RenderPass API within the Scriptable Render Pipeline to implement deferred rendering: - -The RenderPass mechanism has the following limitations: -- All attachments must have the same resolution and MSAA sample count -- The rendering results of previous subpasses are only available within the same screen-space pixel - coordinate via the UNITY_READ_FRAMEBUFFER_INPUT(x) macro in the shader; the attachments cannot be bound - as textures or otherwise accessed until the renderpass has ended -- iOS Metal does not allow reading from the Z-Buffer, so an additional render target is needed to work around that -- The maximum amount of attachments allowed per RenderPass is currently 8 + depth, but note that various GPUs may - have stricter limits. - - - - - Read only: array of RenderPassAttachment objects currently bound into this RenderPass. - - - - - Read only: The ScriptableRenderContext object this RenderPass was created for. - - - - - Read only: The depth/stencil attachment used in this RenderPass, or null if none. - - - - - Read only: The height of the RenderPass surfaces in pixels. - - - - - Read only: MSAA sample count for this RenderPass. - - - - - Read only: The width of the RenderPass surfaces in pixels. - - - - - Create a RenderPass and start it within the ScriptableRenderContext. - - The ScriptableRenderContext object currently being rendered. - The width of the RenderPass surfaces in pixels. - The height of the RenderPass surfaces in pixels. - MSAA sample count; set to 1 to disable antialiasing. - Array of color attachments to use within this RenderPass. - The attachment to be used as the depthstencil buffer for this RenderPass, or null to disable depthstencil. - - - - End the RenderPass. - - - - - This class encapsulates a single subpass within a RenderPass. RenderPasses can never be standalone, they must always contain at least one SubPass. See Also: RenderPass. - - - - - Create a subpass and start it. - - The RenderPass object this subpass is part of. - Array of attachments to be used as the color render targets in this subpass. All attachments in this array must also be declared in the RenderPass constructor. - Array of attachments to be used as input attachments in this subpass. All attachments in this array must also be declared in the RenderPass constructor. - If true, the depth attachment is read-only in this subpass. Some renderers require this in order to be able to use the depth attachment as input. - - - - End the subpass. - - - - - A declaration of a single color or depth rendering surface to be attached into a RenderPass. - - - - - The currently assigned clear color for this attachment. Default is black. - - - - - Currently assigned depth clear value for this attachment. Default value is 1.0. - - - - - Currently assigned stencil clear value for this attachment. Default is 0. - - - - - The RenderTextureFormat of this attachment. - - - - - The load action to be used on this attachment when the RenderPass starts. - - - - - The store action to use with this attachment when the RenderPass ends. Only used when either BindSurface or BindResolveSurface has been called. - - - - - When the renderpass that uses this attachment ends, resolve the MSAA surface into the given target. - - The target surface to receive the MSAA-resolved pixels. - - - - Binds this RenderPassAttachment to the given target surface. - - The surface to use as the backing storage for this RenderPassAttachment. - Whether to read in the existing contents of the surface when the RenderPass starts. - Whether to store the rendering results of the attachment when the RenderPass ends. - - - - When the RenderPass starts, clear this attachment into the color or depth/stencil values given (depending on the format of this attachment). Changes loadAction to RenderBufferLoadAction.Clear. - - Color clear value. Ignored on depth/stencil attachments. - Depth clear value. Ignored on color surfaces. - Stencil clear value. Ignored on color or depth-only surfaces. - - - - Create a RenderPassAttachment to be used with RenderPass. - - The format of this attachment. - - - - Defines a series of commands and settings that describes how Unity renders a frame. - - - - - Call that should be issued by an SRP when the SRP begins to render a Camera so that other systems can inject per camera render logic. - - - - - - Call that should be issued by an SRP when the SRP begins to render so that other systems can inject 'pre render' logic. - - - - - - When the IRenderPipeline is invalid or destroyed this returns true. - - - - - Call the delegate used during SRP rendering before a single camera starts rendering. - - - - - - Call the delegate used during SRP rendering before a render begins. - - - - - - Dispose the Renderpipeline destroying all internal state. - - - - - Defines custom rendering for this RenderPipeline. - - - - - - - An asset that produces a specific IRenderPipeline. - - - - - Returns the list of current IRenderPipeline's created by the asset. - - - Enumerable of created pipelines. - - - - - Create a IRenderPipeline specific to this asset. - - - Created pipeline. - - - - - Destroys all cached data and created IRenderLoop's. - - - - - Retrieves the default Autodesk Interactive masked Shader for this pipeline. - - - Returns the default shader. - - - - - Retrieves the default Autodesk Interactive Shader for this pipeline. - - - Returns the default shader. - - - - - Retrieves the default Autodesk Interactive transparent Shader for this pipeline. - - - Returns the default shader. - - - - - Return the default 2D Material for this pipeline. - - - Default material. - - - - - Return the default Line Material for this pipeline. - - - Default material. - - - - - Return the default Material for this pipeline. - - - Default material. - - - - - Return the default particle Material for this pipeline. - - - Default material. - - - - - Return the default Shader for this pipeline. - - - Default shader. - - - - - Return the default Terrain Material for this pipeline. - - - Default material. - - - - - Return the default UI ETC1 Material for this pipeline. - - - Default material. - - - - - Return the default UI Material for this pipeline. - - - Default material. - - - - - Return the default UI overdraw Material for this pipeline. - - - Default material. - - - - - Returns the list of names used to display Rendering Layer Mask UI for this pipeline. - - - Array of 32 Rendering Layer Mask names. - - - - - The render index for the terrain brush in the editor. - - - Queue index. - - - - - Create a IRenderPipeline specific to this asset. - - - Created pipeline. - - - - - Default implementation of OnDisable for RenderPipelineAsset. See ScriptableObject.OnDisable - - - - - Default implementation of OnValidate for RenderPipelineAsset. See MonoBehaviour.OnValidate - - - - - Render Pipeline manager. - - - - - Returns the instance of the currently used Render Pipeline. - - - - - Describes a material render queue range. - - - - - A range that includes all objects. - - - - - Inclusive upper bound for the range. - - - - - Inclusive lower bound for the range. - - - - - A range that includes only opaque objects. - - - - - A range that includes only transparent objects. - - - - - A set of values used to override the render state. Note that it is not enough to set e.g. blendState, but that mask must also include RenderStateMask.Blend for the override to occur. - - - - - Specifies the new blend state. - - - - - Specifies the new depth state. - - - - - Specifies which parts of the render state that is overriden. - - - - - Specifies the new raster state. - - - - - The value to be compared against and/or the value to be written to the buffer based on the stencil state. - - - - - Specifies the new stencil state. - - - - - Creates a new render state block with the specified mask. - - Specifies which parts of the render state that is overriden. - - - - Maps a RenderType to a specific render state override. - - - - - Specifices the RenderType to override the render state for. - - - - - Specifies the values to override the render state with. - - - - - Creates a new render state mapping with the specified values. - - Specifices the RenderType to override the render state for. - Specifies the values to override the render state with. - - - - Creates a new render state mapping with the specified values. - - Specifices the RenderType to override the render state for. - Specifies the values to override the render state with. - - - - Specifies which parts of the render state that is overriden. - - - - - When set, the blend state is overridden. - - - - - When set, the depth state is overridden. - - - - - When set, all render states are overridden. - - - - - No render states are overridden. - - - - - When set, the raster state is overridden. - - - - - When set, the stencil state and reference value is overridden. - - - - - Values for the blend state. - - - - - Operation used for blending the alpha (A) channel. - - - - - Operation used for blending the color (RGB) channel. - - - - - Blend factor used for the alpha (A) channel of the destination. - - - - - Blend factor used for the color (RGB) channel of the destination. - - - - - Blend factor used for the alpha (A) channel of the source. - - - - - Blend factor used for the color (RGB) channel of the source. - - - - - Specifies which color components will get written into the target framebuffer. - - - - - Creates a new blend state with the given values. - - Specifies which color components will get written into the target framebuffer. - Blend factor used for the color (RGB) channel of the source. - Blend factor used for the color (RGB) channel of the destination. - Blend factor used for the alpha (A) channel of the source. - Blend factor used for the alpha (A) channel of the destination. - Operation used for blending the color (RGB) channel. - Operation used for blending the alpha (A) channel. - - - - Default values for the blend state. - - - - - Parameters controlling culling process in CullResults. - - - - - This parameter determines query distance for occlusion culling. The accurateOcclusionThreshold controls the distance where the level of detail (LOD) changes. - -The default value of this parameter is -1, and any value less than 0 has the same effect. Default values result in automatic calculation of the LOD. - -When you use occlusion culling, the occlusion data of the world varies in level of detail. In the occlusion data, there are tiles of various sizes. Each tile contains a cells-and-portals graph. In each cell, visibility is the same. This means that any two points are visible within the cell. Portals are the openings between the cells, which determine the visibility between them. - -The tiles are in a k-d tree. The tree contains different sized tiles, where each tile represents a level of detail. When you query a small tile, you get accurate culling results at the price of query time. - -During the culling, the tile size varies with the distance from the camera. This gives finer detail closer to the camera, and coarser detail at further distance. - -The higher the value is, the higher the accuracy is far away form the camera. High values can have a negative impact on performance. - - - - - Camera Properties used for culling. - - - - - Culling Flags for the culling. - - - - - CullingMask used for culling. - - - - - CullingMatrix used for culling. - - - - - Number of culling planes to use. - - - - - The projection matrix generated for single-pass stereo culling. - - - - - Distance between the virtual eyes. - - - - - The view matrix generated for single-pass stereo culling. - - - - - Is the cull orthographic. - - - - - Layers to cull. - - - - - LODParameters for culling. - - - - - Position for the origin of th cull. - - - - - Reflection Probe Sort options for the cull. - - - - - Scene Mask to use for the cull. - - - - - Shadow distance to use for the cull. - - - - - Fetch the culling plane at the given index. - - - - - - Get the distance for the culling of a specific layer. - - - - - - Set the culling plane at a given index. - - - - - - - Set the distance for the culling of a specific layer. - - - - - - - Defines state and drawing commands used in a custom render pipelines. - - - - - Draw subset of visible objects. - - Specifies parts of the render state to override. - Specifies parts of the render state to override for specific render types. - Specifies which set of visible objects to draw. - Specifies how to draw the objects. - Specifies how the renderers should be further filtered. - - - - Draw subset of visible objects. - - Specifies parts of the render state to override. - Specifies parts of the render state to override for specific render types. - Specifies which set of visible objects to draw. - Specifies how to draw the objects. - Specifies how the renderers should be further filtered. - - - - Draw subset of visible objects. - - Specifies parts of the render state to override. - Specifies parts of the render state to override for specific render types. - Specifies which set of visible objects to draw. - Specifies how to draw the objects. - Specifies how the renderers should be further filtered. - - - - Draw shadow casters for a single light. - - Specifies which set of shadow casters to draw, and how to draw them. - - - - Draw skybox. - - Camera to draw the skybox for. - - - - Emit UI geometry into the Scene view for rendering. - - Camera to emit the geometry for. - - - - Execute a custom graphics command buffer. - - Command buffer to execute. - - - - Executes a command buffer on an async compute queue with the queue selected based on the ComputeQueueType parameter passed. - -It is required that all of the commands within the command buffer be of a type suitable for execution on the async compute queues. If the buffer contains any commands that are not appropriate then an error will be logged and displayed in the editor window. Specifically the following commands are permitted in a CommandBuffer intended for async execution: - -CommandBuffer.BeginSample - -CommandBuffer.CopyCounterValue - -CommandBuffer.CopyTexture - -CommandBuffer.CreateGPUFence - -CommandBuffer.DispatchCompute - -CommandBuffer.EndSample - -CommandBuffer.IssuePluginEvent - -CommandBuffer.SetComputeBufferParam - -CommandBuffer.SetComputeFloatParam - -CommandBuffer.SetComputeFloatParams - -CommandBuffer.SetComputeTextureParam - -CommandBuffer.SetComputeVectorParam - -CommandBuffer.WaitOnGPUFence - -All of the commands within the buffer are guaranteed to be executed on the same queue. If the target platform does not support async compute queues then the work is dispatched on the graphics queue. - - The CommandBuffer to be executed. - Describes the desired async compute queue the supplied CommandBuffer should be executed on. - - - - Setup camera specific global shader variables. - - Camera to setup shader variables for. - Set up the stereo shader variables and state. - - - - Setup camera specific global shader variables. - - Camera to setup shader variables for. - Set up the stereo shader variables and state. - - - - Fine-grain control to begin stereo rendering on the scriptable render context. - - Camera to enable stereo rendering on. - - - - Indicate completion of stereo rendering on a single frame. - - Camera to indicate completion of stereo rendering. - - - - Stop stereo rendering on the scriptable render context. - - Camera to disable stereo rendering on. - - - - Submit rendering loop for execution. - - - - - Empty implementation of IScriptableRuntimeReflectionSystem. - - - - - Update the reflection probes. - - - Whether a reflection probe was updated. - - - - - Global settings for the scriptable runtime reflection system. - - - - - The current scriptable runtime reflection system instance. - - - - - Shader pass name identifier. - - - - - Create shader pass name identifier. - - Pass name. - - - - Describes the culling information for a given shadow split (e.g. directional cascade). - - - - - The number of culling planes. - - - - - The culling sphere. The first three components of the vector describe the sphere center, and the last component specifies the radius. - - - - - Gets a culling plane. - - The culling plane index. - - The culling plane. - - - - - Sets a culling plane. - - The index of the culling plane to set. - The culling plane. - - - - How to sort objects during rendering. - - - - - Sort objects back to front. - - - - - Sort renderers taking canvas order into account. - - - - - Typical sorting for opaque objects. - - - - - Typical sorting for transparencies. - - - - - Do not sort objects. - - - - - Sort objects to reduce draw state changes. - - - - - Sort objects in rough front-to-back buckets. - - - - - Sorts objects by renderer priority. - - - - - Sort by material render queue. - - - - - Sort by renderer sorting layer. - - - - - Values for the stencil state. - - - - - The function used to compare the reference value to the current contents of the buffer. - - - - - The function used to compare the reference value to the current contents of the buffer for back-facing geometry. - - - - - The function used to compare the reference value to the current contents of the buffer for front-facing geometry. - - - - - Controls whether the stencil buffer is enabled. - - - - - What to do with the contents of the buffer if the stencil test fails. - - - - - What to do with the contents of the buffer if the stencil test fails for back-facing geometry. - - - - - What to do with the contents of the buffer if the stencil test fails for front-facing geometry. - - - - - What to do with the contents of the buffer if the stencil test (and the depth test) passes. - - - - - What to do with the contents of the buffer if the stencil test (and the depth test) passes for back-facing geometry. - - - - - What to do with the contents of the buffer if the stencil test (and the depth test) passes for front-facing geometry. - - - - - An 8 bit mask as an 0–255 integer, used when comparing the reference value with the contents of the buffer. - - - - - An 8 bit mask as an 0–255 integer, used when writing to the buffer. - - - - - What to do with the contents of the buffer if the stencil test passes, but the depth test fails. - - - - - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for back-facing geometry. - - - - - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for front-facing geometry. - - - - - Creates a new stencil state with the given values. - - An 8 bit mask as an 0–255 integer, used when comparing the reference value with the contents of the buffer. - An 8 bit mask as an 0–255 integer, used when writing to the buffer. - Controls whether the stencil buffer is enabled. - The function used to compare the reference value to the current contents of the buffer for front-facing geometry. - What to do with the contents of the buffer if the stencil test (and the depth test) passes for front-facing geometry. - What to do with the contents of the buffer if the stencil test fails for front-facing geometry. - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for front-facing geometry. - The function used to compare the reference value to the current contents of the buffer for back-facing geometry. - What to do with the contents of the buffer if the stencil test (and the depth test) passes for back-facing geometry. - What to do with the contents of the buffer if the stencil test fails for back-facing geometry. - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for back-facing geometry. - The function used to compare the reference value to the current contents of the buffer. - What to do with the contents of the buffer if the stencil test (and the depth test) passes. - What to do with the contents of the buffer if the stencil test fails. - What to do with the contents of the buffer if the stencil test passes, but the depth test. - - - - Creates a new stencil state with the given values. - - An 8 bit mask as an 0–255 integer, used when comparing the reference value with the contents of the buffer. - An 8 bit mask as an 0–255 integer, used when writing to the buffer. - Controls whether the stencil buffer is enabled. - The function used to compare the reference value to the current contents of the buffer for front-facing geometry. - What to do with the contents of the buffer if the stencil test (and the depth test) passes for front-facing geometry. - What to do with the contents of the buffer if the stencil test fails for front-facing geometry. - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for front-facing geometry. - The function used to compare the reference value to the current contents of the buffer for back-facing geometry. - What to do with the contents of the buffer if the stencil test (and the depth test) passes for back-facing geometry. - What to do with the contents of the buffer if the stencil test fails for back-facing geometry. - What to do with the contents of the buffer if the stencil test passes, but the depth test fails for back-facing geometry. - The function used to compare the reference value to the current contents of the buffer. - What to do with the contents of the buffer if the stencil test (and the depth test) passes. - What to do with the contents of the buffer if the stencil test fails. - What to do with the contents of the buffer if the stencil test passes, but the depth test. - - - - Default values for the stencil state. - - - - - Describes the rendering features supported by a given render pipeline. - - - - - Get / Set a SupportedRenderingFeatures. - - - - - This is the fallback mode if the mode the user had previously selected is no longer available. See SupportedRenderingFeatures.supportedMixedLightingModes. - - - - - Flags for supported reflection probes. - - - - - Determines if the renderer will override the Environment Lighting and will no longer need the built-in UI for it. - - - - - Determines if the renderer will override the fog settings in the Lighting Panel and will no longer need the built-in UI for it. - - - - - Determines if the renderer will override halo and flare settings in the Lighting Panel and will no longer need the built-in UI for it. - - - - - Are light probe proxy volumes supported? - - - - - Are motion vectors supported? - - - - - Can renderers support receiving shadows? - - - - - Are reflection probes supported? - - - - - Determines if the renderer supports renderer priority sorting. - - - - - What baking types are supported. The unsupported ones will be hidden from the UI. See LightmapBakeType. - - - - - Specifies what modes are supported. Has to be at least one. See LightmapsMode. - - - - - Specifies what LightmapMixedBakeMode that are supported. Please define a SupportedRenderingFeatures.defaultMixedLightingMode in case multiple modes are supported. - - - - - Same as MixedLightingMode for baking, but is used to determine what is supported by the pipeline. - - - - - Same as MixedLightingMode.IndirectOnly but determines if it is supported by the pipeline. - - - - - No mode is supported. - - - - - Determines what is supported by the rendering pipeline. This enum is similar to MixedLightingMode. - - - - - Same as MixedLightingMode.Subtractive but determines if it is supported by the pipeline. - - - - - Supported modes for ReflectionProbes. - - - - - Default reflection probe support. - - - - - Rotated reflection probes are supported. - - - - - Holds data of a visible light. - - - - - Light color multiplied by intensity. - - - - - Light flags, see VisibleLightFlags. - - - - - Accessor to Light component. - - - - - Light type. - - - - - Light transformation matrix. - - - - - Light range. - - - - - Light's influence rectangle on screen. - - - - - Spot light angle. - - - - - Flags for VisibleLight. - - - - - Light intersects far clipping plane. - - - - - Light intersects near clipping plane. - - - - - No flags are set. - - - - - Holds data of a visible reflection probe. - - - - - Probe blending distance. - - - - - Probe bounding box. - - - - - Should probe use box projection. - - - - - Probe projection center. - - - - - Shader data for probe HDR texture decoding. - - - - - Probe importance. - - - - - Probe transformation matrix. - - - - - Accessor to ReflectionProbe component. - - - - - Probe texture. - - - - - Experimental render settings features. - - - - - If enabled, ambient trilight will be sampled using the old radiance sampling method. - - - - - A Subsystem is initialized from a SubsystemDescriptor for a given Subsystem (Example, Input, Environment, Display, etc.) and provides an interface to interact with that given Subsystem until it is Destroyed. After a Subsystem is created it can be Started or Stopped to turn on and off functionality (and preserve performance). The base type for Subsystem only exposes this functionality; this class is designed to be a base class for derived classes that expose more functionality specific to a given Subsystem. - - Note: initializing a second Subsystem from the same SubsystemDescriptor will return a reference to the existing Subsystem as only one Subsystem is currently allowed for a single Subsystem provider. - - - - - - Destroys this instance of a subsystem. - - - - - Starts an instance of a subsystem. - - - - - Stops an instance of a subsystem. - - - - - Information about a subsystem that can be queried before creating a subsystem instance. - - - - - A unique string that identifies the subsystem that this Descriptor can create. - - - - - The System.Type of the subsystem implementation associated with this descriptor. - - - - - Gives access to subsystems which provide additional functionality through plugins. - - - - - Returns active Subsystems of a specific instance type. - - Active instances. - - - - Returns a list of SubsystemDescriptors which describe additional functionality that can be enabled. - - Subsystem specific descriptors. - - - - Represents a linear 2D transformation between brush UV space and a target XY space (typically this is a Terrain-local object space.) - - - - - (Read Only) Brush UV origin, in XY space. - - - - - (Read Only) Brush U vector, in XY space. - - - - - (Read Only) Brush V vector, in XY space. - - - - - (Read Only) Target XY origin, in Brush UV space. - - - - - (Read Only) Target X vector, in Brush UV space. - - - - - (Read Only) Target Y vector, in Brush UV space. - - - - - Creates a BrushTransform. - - Origin of the brush, in target XY space. - Brush U vector, in target XY space. - Brush V vector, in target XY space. - - - - Applies the transform to convert a Brush UV coordinate to the target XY space. - - Brush UV coordinate to transform. - - Target XY coordinate. - - - - - Creates an axis-aligned BrushTransform from a rectangle. - - Brush rectangle, in target XY coordinates. - - BrushTransform describing the brush. - - - - - Get the axis-aligned bounding rectangle of the brush, in target XY space. - - - Bounding rectangle in target XY space. - - - - - Applies the transform to convert a target XY coordinate to Brush UV space. - - Point in target XY space. - - Point transformed to Brush UV space. - - - - - The context for a paint operation that may span multiple connected Terrains. - - - - - (Read Only) RenderTexture that an edit operation writes to modify the data. - - - - - (Read Only) The value of RenderTexture.active at the time CreateRenderTargets is called. - - - - - (Read Only) The Terrain used to build the PaintContext. - - - - - (Read Only) The pixel rectangle that this PaintContext represents. - - - - - (Read Only) The size of a PaintContext pixel in terrain units (as defined by originTerrain.) - - - - - (Read Only) Render target that stores the original data from the Terrains. - - - - - (Read Only) The height of the target terrain texture. This is the resolution for a single Terrain. - - - - - (Read Only) The width of the target terrain texture. This is the resolution for a single Terrain. - - - - - (Read Only) The number of Terrains in this PaintContext. - - - - - Flushes the delayed actions created by PaintContext heightmap and alphamap modifications. - - - - - Releases the allocated resources of this PaintContext. - - When true, indicates that this function restores RenderTexture.active - - - - Constructs a PaintContext that you can use to edit a texture on a Terrain, in the region defined by boundsInTerrainSpace and extraBorderPixels. - - Terrain that defines terrain space for this PaintContext. - Terrain space bounds to edit in the target terrain texture. - Width of the target terrain texture (per Terrain). - Height of the target terrain texture (per Terrain). - Number of extra border pixels required. - - - - - - Creates the sourceRenderTexture and destinationRenderTexture. - - Render Texture format. - - - - Creates a new PaintContext, to edit a target texture on a Terrain, in a region defined by pixelRect. - - Terrain that defines terrain space for this PaintContext. - Pixel rectangle to edit in the target terrain texture. - Width of the target terrain texture (per Terrain). - Height of the target terrain texture (per Terrain). - - - - Gathers the alphamap information into sourceRenderTexture. - - TerrainLayer used for painting. - Set to true to specify that the inputLayer is added to the terrain if it does not already exist. Set to false to specify that terrain layers are not added to the terrain. - - - - Gathers the heightmap information into sourceRenderTexture. - - - - - Gathers the normal information into sourceRenderTexture. - - - - - Retrieves the clipped pixel rectangle for a Terrain, relative to the PaintContext render textures. - - Index of the Terrain. - - Returns the clipped pixel rectangle. - - - - - Retrieves the clipped pixel rectangle for a Terrain. - - Index of the Terrain. - - Returns the clipped pixel rectangle. - - - - - Retrieves a Terrain from the PaintContext. - - Index of the terrain. - - Returns the Terrain object. - - - - - Applies an edited alphamap PaintContext by copying modifications back to the source Terrains. - - Unique name used for the undo stack. - - - - Applies an edited heightmap PaintContext by copying modifications back to the source Terrains. - - Unique name used for the undo stack. - - - - A set of utility functions for custom terrain paint tools. - - - - - Helper function to set up a PaintContext for modifying the heightmap of one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and heightmap resolution. - The region in terrain space to edit. - Number of extra border pixels required. - - PaintContext containing the combined heightmap data for the specified region. - - - - - Helper function to set up a PaintContext for modifying the heightmap of one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and heightmap resolution. - The region in terrain space to edit. - Number of extra border pixels required. - - PaintContext containing the combined heightmap data for the specified region. - - - - - Helper function to set up a PaintContext for modifying the alphamap of one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and alphamap resolution. - Selects the alphamap to paint. - The region in terrain space to edit. - Number of extra border pixels required. - - PaintContext containing the combined alphamap data for the specified region. - - - - - Helper function to set up a PaintContext for modifying the alphamap of one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and alphamap resolution. - Selects the alphamap to paint. - The region in terrain space to edit. - Number of extra border pixels required. - - PaintContext containing the combined alphamap data for the specified region. - - - - - Builds a Scale & Offset transform to convert between one PaintContext's UV space and another PaintContext's UV space. - - Source PaintContext. - Destination PaintContext. - ScaleOffset transform. - - - - Enumeration of the render passes in the built-in paint material. - - - - - Built-in render pass for painting the splatmap texture. - - - - - Built-in render pass for raising and lowering terrain height. - - - - - Built-in render pass for setting terrain height. - - - - - Built-in render pass for smoothing the terrain height. - - - - - Built-in render pass for stamping heights on the terrain. - - - - - Creates a BrushTransform from the input parameters. - - Reference terrain, defines terrain UV and object space. - Center point of the brush, in terrain UV space (0-1 across the terrain tile). - Size of the brush, in terrain space. - Brush rotation in degrees (clockwise). - - Transform from terrain space to Brush UVs. - - - - - Helper function to set up a PaintContext that collects mesh normal data from one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and heightmap resolution. - The region in terrain space from which to collect normals. - Number of extra border pixels required. - - PaintContext containing the combined normalmap data for the specified region. - - - - - Helper function to set up a PaintContext that collects mesh normal data from one or more Terrain tiles. - - Reference Terrain tile. Defines terrain space and heightmap resolution. - The region in terrain space from which to collect normals. - Number of extra border pixels required. - - PaintContext containing the combined normalmap data for the specified region. - - - - - Helper function for completing a heightmap modification. - - The heightmap paint context to complete. - Unique name used for the undo stack. - - - - Helper function for completing a texture alphamap modification. - - The texture paint context to complete. - Unique name used for the undo stack. - - - - Finds the index of a TerrainLayer in a Terrain tile. - - Terrain tile. - Terrain layer to search for. - - Returns the index of the terrain layer if it exists or -1 if it doesn't exist. - - - - - Returns the default material for blitting operations. - - - Built in "Hidden/BlitCopy" material. - - - - - Returns the built-in in paint material used by the built-in tools. - - - Built-in terrain paint material. - - - - - Returns the default copy terrain layer material. - - - Built in "HiddenTerrainTerrainLayerUtils" material. - - - - - Returns the alphamap texture at mapIndex. - - Terrain tile. - Index to retrieve. - - Alphamap texture at mapIndex. - - - - - Releases the allocated resources of the specified PaintContext. - - The PaintContext containing the resources to release. - - - - Sets up all of the material properties used by functions in TerrainTool.cginc. - - PaintContext describing the area we are editing, and the terrain space. - BrushTransform from terrain space to Brush UVs. - Material to populate with transform properties. - - - - Provides a set of utility functions that are used by the terrain tools. - - - - - Automatically connects neighboring terrains. - - - - - Type for mapping Terrain.groupingID coordinates to TerrainMap. - - - - - Type for mapping 2D (X,Y) coordinates to a Terrain object. - - - - - Indicates the error status of the TerrainMap. - - - - - Mapping from TileCoord to Terrain. - - - - - Creates a TerrainMap. - - Defines the grid origin and size, as well as group id if no filter is specified. - Origin of the grid. - Size of the grid. Typically takes the terrain size.x and size.z. - Filter to be applied when populating the map. See Also: TerrainFilter. If null, the filter will fall back to matching terrains in the same group as the origin. - Validate the terrain map. Default is true. - - The resulting terrain map. Can return null when no terrains pass the filter. - - - - - Creates a TerrainMap. - - Defines the grid origin and size, as well as group id if no filter is specified. - Origin of the grid. - Size of the grid. Typically takes the terrain size.x and size.z. - Filter to be applied when populating the map. See Also: TerrainFilter. If null, the filter will fall back to matching terrains in the same group as the origin. - Validate the terrain map. Default is true. - - The resulting terrain map. Can return null when no terrains pass the filter. - - - - - Retrieves the Terrain object corresponding to the tile coordinates (tileX,tileZ). - - Tile X coordinate. - Tile Z coordinate. - - Returns a valid Terrain object if successful, null otherwise. - - - - - Describes the information about the edge and how to tessellate it. - - - - - The maximum angle to be considered within this range. - - - - - The render order of the edges that belong in this range. - - - - - The list of Sprites that are associated with this range. - - - - - The minimum angle to be considered within this range. - - - - - A collection of APIs that facilitate pixel perfect rendering of sprite-based renderers. - - - - - To achieve a pixel perfect render, Sprites must be displaced to discrete positions at render time. This value defines the minimum distance between these positions. This doesn’t affect the GameObject's transform position. - - - - - Data that describes the important points of the shape. - - - - - The position of the left tangent in local space. - - - - - The various modes of the tangent handles. They could be continuous or broken. - - - - - The position of this point in the object's local space. - - - - - The position of the right tangent point in the local space. - - - - - A struct that holds a rich set of information that describes the bind pose of this Sprite. - - - - - The length of the bone. This is important for the leaf bones to describe their length without needing another bone as the terminal bone. - - - - - The name of the bone. This is useful when recreating bone hierarchy at editor or runtime. You can also use this as a way of resolving the bone path when a Sprite is bound to a more complex or richer hierarchy. - - - - - The ID of the parent of this bone. - - - - - The position in local space of this bone. - - - - - The rotation of this bone in local space. - - - - - A list of methods designed for reading and writing to the rich internal data of a Sprite. - - - - - Returns an array of BindPoses. - - The sprite to retrieve the bind pose from. - - A list of bind poses for this sprite. There is no need to dispose the returned NativeArray. - - - - - Returns a list of SpriteBone in this Sprite. - - The sprite to get the list of SpriteBone from. - - An array of SpriteBone that belongs to this Sprite. - - - - - Returns a list of BoneWeight that corresponds to each and every vertice in this Sprite. - - The Sprite to get the BoneWeights from. - - The list of BoneWeight. The length should equal the number of vertices. There is no need to call dispose on this NativeArray. - - - - - Returns a list of indices. This is the same as Sprite.triangle. - - - - A read-only list of indices indicating how the triangles are formed between the vertices. The array is marked as undisposable. - - - - - Retrieves a strided accessor to the internal vertex attributes. - - - - - A read-only list of. - - - - - Returns the number of vertices in this Sprite. - - - - - - Checks if a specific channel exists for this Sprite. - - - - - True if the channel exists. - - - - - Sets the bind poses for this Sprite. - - The list of bind poses for this Sprite. The array must be disposed of by the caller. - - - - - Sets the SpriteBones for this Sprite. - - - - - - - Sets the BoneWeight for this Sprite. The length of the input array must match the number of vertices. - - The list of BoneWeight for this Sprite. The array must be disposed of by the caller. - - - - - Set the indices for this Sprite. This is the same as Sprite.triangle. - - The list of indices for this Sprite. The array must be disposed of by the caller. - - - - - Sets a specific channel of the VertexAttribute. - - The list of values for this specific VertexAttribute channel. The array must be disposed of by the caller. - - - - - - Sets the vertex count. This resizes the internal buffer. It also preserves any configurations of VertexAttributes. - - - - - - - A list of methods that allow the caller to override what the SpriteRenderer renders. - - - - - Stop using the deformable buffer to render the Sprite and use the original mesh instead. - - - - - - Returns an array of vertices to be deformed by the caller. - - - - - - Provides the JobHandle that updates the deform buffer to the SpriteRenderer. - - - - - - - Additional data about the shape's control point. This is useful during tessellation of the shape. - - - - - The threshold of the angle that decides if it should be tessellated as a curve or a corner. - - - - - The radius of the curve to be tessellated. - - - - - True will indicate that this point should be tessellated as a corner or a continuous line otherwise. - - - - - The height of the tessellated edge. - - - - - The Sprite to be used for a particular edge. - - - - - Input parameters for the SpriteShape tessellator. - - - - - If enabled, the tessellator will adapt the size of the quads based on the height of the edge. - - - - - The threshold of the angle that indicates whether it is a corner or not. - - - - - The threshold of the angle that decides if it should be tessellated as a curve or a corner. - - - - - The radius of the curve to be tessellated. - - - - - The local displacement of the Sprite when tessellated. - - - - - If true, the Shape will be tessellated as a closed form. - - - - - The scale to be used to calculate the UVs of the fill texture. - - - - - The texture to be used for the fill of the SpriteShape. - - - - - If enabled the tessellator will consider creating corners based on the various input parameters. - - - - - The tessellation quality of the input Spline that determines the complexity of the mesh. - - - - - The borders to be used for calculating the uv of the edges based on the border info found in Sprites. - - - - - The world space transform of the game object used for calculating the UVs of the fill texture. - - - - - Renders SpriteShapes defined through the SpriteShapeUtility.GenerateSpriteShape API. - - - - - A static class that helps tessellate a SpriteShape mesh. - - - - - Generate a mesh based on input parameters. - - The output mesh. - Input parameters for the SpriteShape tessellator. - A list of control points that describes the shape. - Additional data about the shape's control point. This is useful during tessellation of the shape. - The list of Sprites that could be used for the edges. - The list of Sprites that could be used for the corners. - A parameter that determins how to tessellate each of the edge. - - - - Generate a mesh based on input parameters. - - SpriteShapeRenderer to which the generated geometry is fed to. - Input parameters for the SpriteShape tessellator. - A list of control points that describes the shape. - Additional data about the shape's control point. This is useful during tessellation of the shape. - The list of Sprites that could be used for the edges. - The list of Sprites that could be used for the corners. - A parameter that determins how to tessellate each of the edge. - - - - Event sent after an element is added to an element that is a descendent of a panel. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Abstract base class for controls. - - - - - The value associated with the field. - - - - - Allow to set a value without being of the change, if any. - - New Value to set. - - - - UxmlTraits for the BaseField. - - - - - Enumerator to get the child elements of the UxmlTraits of BaseField. - - - - - Constructor. - - - - - This is a base class for the Slider fields. - - - - - This is the actual property to contain the direction of the slider. - - - - - This is the maximum value that the slider encodes. - - - - - This is the minimum value that the slider encodes. - - - - - This is a generic page size used to change the value when clicking in the slider. - - - - - This is the range from the minimum value to the maximum value of the slider. - - - - - The actual value of the slider. - - - - - Method used to adjust the dragelement. Mainly used in a scroller. - - The factor used to adjust the drag element, where a value > 1 will make it invisible. - - - - Element that can be bound to a property. - - - - - Binding object that will be updated. - - - - - Path of the target property to be bound. - - - - - Constructor. - - - - - Instantiates a BindableElement using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the BindableElement. - - - - - Constructor. - - - - - Initialize EnumField properties using values from the attribute bag. - - - - - - - - Event sent immediately after an element has lost focus. This event trickles down, it does not bubble up, and it cannot be cancelled. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Styled visual element to match the IMGUI Box Style. - - - - - Instantiates a Box using the data read from a UXML file. - - - - - Constructor. - - - - - Instantiates a Button using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the UI.Button. - - - - - Constructor. - - - - - Interface for classes capable of having callbacks to handle events. - - - - - Handle an event, most often by executing the callbacks associated with the event. - - The event to handle. - - - - Return true if event handlers for the event propagation BubbleUp phase have been attached on this object. - - - True if object has event handlers for the BubbleUp phase. - - - - - Returns true if event handlers, for the event propagation TrickleDown phase, are attached to this object. - - - True if object has event handlers for the TrickleDown phase. - - - - - Adds an event handler to the instance. If the event handler has already been registered for the same phase (either TrickleDown or BubbleUp) then this method has no effect. - - The event handler to add. - By default, this callback is called during the BubbleUp phase. Pass TrickleDown.TrickleDown to call this callback during the TrickleDown phase. - Data to pass to the callback. - - - - Adds an event handler to the instance. If the event handler has already been registered for the same phase (either TrickleDown or BubbleUp) then this method has no effect. - - The event handler to add. - By default, this callback is called during the BubbleUp phase. Pass TrickleDown.TrickleDown to call this callback during the TrickleDown phase. - Data to pass to the callback. - - - - Sends an event to the event handler. - - The event to send. - - - - Remove callback from the instance. - - The callback to remove. - Set this parameter to true to remove the callback from the TrickleDown phase. Set this parameter to false to remove the callback from the BubbleUp phase. - - - - Remove callback from the instance. - - The callback to remove. - Set this parameter to true to remove the callback from the TrickleDown phase. Set this parameter to false to remove the callback from the BubbleUp phase. - - - - Sends an event when a value in a field changes. - - - - - The new value. - - - - - The value before the change occured. - - - - - Constructor. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The previous value. - The new value. - - Returns an initialized event. - - - - - Sets the event to its initial state. - - - - - Enum which describes the various types of changes that can occur on a VisualElement. - - - - - All change types have been flagged. - - - - - Persistence key or parent has changed on the current VisualElement. - - - - - Persistence key or parent has changed on some child of the current VisualElement. - - - - - Base class for command events. - - - - - Name of the command. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The command name. - An IMGUI command event. - - Returns an initialized event. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The command name. - An IMGUI command event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - The event sent when clicking the right mouse button. - - - - - Constructor. - - - - - Use this class to display a contextual menu. - - - - - Displays the contextual menu. - - The event that triggered the display of the menu. - The element for which the menu is displayed. - - - - Checks if the event triggers the display of the contextual menu. This method also displays the menu. - - The element for which the menu is displayed. - The event to inspect. - - - - Manipulator that displays a contextual menu when the user clicks the right mouse button or presses the menu key on the keyboard. - - - - - Constructor. - - - - - - Register the event callbacks on the manipulator target. - - - - - Unregister the event callbacks from the manipulator target. - - - - - The event sent when a contextual menu requires menu items. - - - - - The menu to populate. - - - - - The event that triggered the ContextualMenuPopulateEvent. - - - - - Constructor. - - - - - Retrieves an event from the event pool. Use this method to retrieve a mouse event and initialize the event, instead of creating a new mouse event. Events obtained from this method should be released back to the pool using Dispose(). - - The event that triggered the display of the contextual menu. - The menu to populate. - The element that triggered the display of the contextual menu. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - This class is used during UXML template instantiation. - - - - - Script interface for VisualElement cursor style property IStyle.cursor. - - - - - The offset from the top left of the texture to use as the target point (must be within the bounds of the cursor). - - - - - The texture to use for the cursor style. To use a texture as a cursor, import the texture with "Read/Write enabled" in the texture importer (or using the "Cursor" defaults). - - - - - Event sent just before an element is detach from its parent, if the parent is the descendant of a panel. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Base class for drag and drop events. - - - - - Use the DragEnterEvent class to manage events that occur when dragging enters an element or one of its descendants. The DragEnterEvent is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid renewing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - The event sent to a dragged element when the drag and drop process ends. - - - - - Constructor. - - - - - Resets the event members to their initial values. - - - - - Use the DragLeaveEvent class to manage events sent when dragging leaves an element or one of its descendants. The DragLeaveEvent is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid renewing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - The event sent to an element when another element is dragged and dropped on the element. - - - - - Constructor. - - - - - The event sent when the element being dragged enters a possible drop target. - - - - - Constructor. - - - - - A drop-down menu. - - - - - Add an item that will execute an action in the drop-down menu. The item is added at the end of the current item list. - - Name of the item. This name will be displayed in the drop-down menu. - Callback to execute when the user selects this item in the menu. - Callback to execute to determine the status of the item. - An object that will be stored in the userData property of the MenuAction item. - - - - Add a separator line in the menu. The separator is added at the end of the current item list. - - The submenu path where the separator will be added. Path components are delimited by forward slashes ('/'). - - - - Add a separator line in the menu. The separator is added at the end of the current item list. - - The submenu path where the separator will be added. Path components are delimited by forward slashes ('/'). - - - - Constructor. - - - - - A class holding information about the event that triggered the display of the drop-down menu. - - - - - If the triggering event was a mouse event, this property is the mouse position. The position is expressed using the coordinate system of the element that received the mouse event. Otherwise this property is zero. - - - - - If modifier keys (Alt, Control, Shift, Windows/Command) were pressed to trigger the display of the dropdown menu, this property lists the modifier keys. - - - - - If the triggering event was a mouse event, this property is the mouse position expressed using the global coordinate system. Otherwise this property is zero. - - - - - Constructor. - - - - - - Add an item that will execute an action in the drop-down menu. The item is added at the end of the specified index in the list. - - Name of the item. This name will be displayed in the drop-down menu. - Callback to execute when the user selects this item in the menu. - Callback to execute to determine the status of the item. - Index where the item should be inserted. - An object that will be stored in the userData property of the MenuAction item. This object is accessible through the action callback. - - - - Add a separator line in the menu. The separator is added at the end of the specified index in the list. - - Index where the separator should be inserted. - The submenu path where the separator is added. Path components are delimited by forward slashes ('/'). - - - - A menu action item. - - - - - Provides information on the event that triggered the drop-down menu. - - - - - The name of the item. The name can be prefixed by its submenu path. Path components are delimited by forward slashes ('/'). - - - - - The status of the item. - - - - - The userData object stored by the constructor. - - - - - Status callback that always returns StatusFlags.Disabled. - - Unused parameter. - - Always return StatusFlags.Disabled. - - - - - Status callback that always returns StatusFlags.Enabled. - - Unused parameter. - - Always return StatusFlags.Enabled. - - - - - Constructor. - - The path and name of the menu item. Use the path, delimited by forward slashes ('/'), to place the menu item within a submenu. - Action to be executed when the menu item is selected. - Function called to determine if the menu item is enabled. - An object that will be stored in the userData property. - - - - Execute the callback associated with this item. - - - - - Update the status flag of this item by calling the item status callback. - - Information about the event that triggered the display of the drop-down menu, such as the mouse position or the key pressed. - - - - An item in a drop-down menu. - - - - - Get the list of menu items. - - - The list of items in the menu. - - - - - Update the status of all items by calling their status callback and remove the separators in excess. This is called just before displaying the menu. - - - - - - Remove the menu item at index. - - The index of the item to remove. - - - - A separator menu item. - - - - - The submenu path where the separator will be added. Path components are delimited by forward slashes ('/'). - - - - - Constructor. - - The path for the submenu. Path components are delimited by forward slashes ('/'). - - - - The base class for all UIElements events. - - - - - Whether this event type bubbles up in the event propagation path. - - - - - The current target of the event. The current target is the element in the propagation path for which event handlers are currently being executed. - - - - - Whether the event is being dispatched to a visual element. An event cannot be redispatched while it being dispatched. If you need to recursively dispatch an event, it is recommended that you use a copy of the event. - - - - - Flags for the event. - - - - - The IMGUIEvent at the source of this event. The source can be null since not all events are generated by IMGUI. - - - - - Return true if the default actions should not be executed for this event. - - - - - Whether StopImmediatePropagation() was called for this event. - - - - - Whether StopPropagation() was called for this event. - - - - - The original mouse position of the IMGUI event, before it is transformed to the current target local coordinates. - - - - - Whether the event is allocated from a pool of events. - - - - - The current propagation phase. - - - - - The target visual element that received this event. Unlike currentTarget, this target does not change when the event is sent to other elements along the propagation path. - - - - - The time when the event was created. - - - - - Whether this event is sent down the event propagation path during the TrickleDown phase. - - - - - Implementation of IDisposable. - - - - - Retrieves the type id for this event instance. - - - The type ID. - - - - - Resets all event members to their initial values. - - - - - Whether the default actions are prevented from being executed for this event. - - - - - Registers an event class to the event type system. - - - The type ID. - - - - - Immediately stops the propagation of the event. The event is not sent to other elements along the propagation path. This method prevents other event handlers from executing on the current target. - - - - - Stops propagating this event. The event is not sent to other elements along the propagation path. This method does not prevent other event handlers from executing on the current target. - - - - - Generic base class for events, implementing event pooling and automatic registration to the event type system. - - - - - Implementation of IDispose. - - - - - Retrieves the type id for this event instance. - - - The type ID. - - - - - Gets an event from the event pool. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - - Returns an initialized event. - - - - - Resets all event members to their initial values. - - - - - Gets the type id for the event class. - - - The event class type id. - - - - - Dispatches events to a IPanel. - - - - - Gates control when the dispatcher processes events. - - - - - Constructor. - - The dispatcher controlled by this gate. - - - - Implementation of IDisposable.Dispose. Opens the gate. If all gates are open, events in the queue are processed. - - - - - The event sent when an element should execute a command. - - - - - Constructor. - - - - - Use this structure to set the IStyle.Flex shorthand property which sets the IStyle.flexGrow, IStyle.flexShrink, and IStyle.flexBasis properties. - - - - - The value for the IStyle.flexBasis property. - - - - - The value for the IStyle.flexBasis property. - - - - - The value for the IStyle.flexBasis property. - - - - - Constructor. - - - - - - - - Base class for objects that can get the focus. - - - - - Return true if the element can be focused. - - - - - Return the focus controller for this element. - - - - - An integer used to sort focusables in the focus ring. A negative value means that the element can not be focused. - - - - - Tell the element to release the focus. - - - - - Attempt to give the focus to this element. - - - - - Base class for defining in which direction the focus moves in a focus ring. - - - - - Last value for the direction defined by this class. - - - - - The null direction. This is usually used when the focus stays on the same element. - - - - - Focus came from an unspecified direction, for example after a mouse down. - - - - - The underlying integer value for this direction. - - - - - - Class in charge of managing the focus inside a Panel. - - - - - The currently focused element. - - - - - Constructor. - - - - - Ask the controller to change the focus according to the event. The focus controller will use its focus ring to choose the next element to be focused. - - - - - - Event sent immediately after an element has gained focus. This event trickles down, it does not bubble up, and it cannot be cancelled. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Base class for focus related events. - - - - - Direction of the focus change. - - - - - For FocusOut and Blur events, contains the element that gains the focus. For FocusIn and Focus events, contains the element that loses the focus. - - - - - Gets an event from the event pool and initializes the event with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The event target. - The related target. - The direction of the focus change. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Event sent immediately before an element gains focus. This event trickles down and bubbles up. This event cannot be cancelled. - - - - - Constructor. - - - - - Resets the event members to their initial values. - - - - - Event sent immediately before an element loses focus. This event trickles down and bubbles up. This event cannot be cancelled. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - Collapsable section of UI. - - - - - Contains the collapse state. True if the Foldout is open and the contents are visible. False if it's collapsed. - - - - - Instantiates a Foldout using the data read from a UXML file. - - - - - Constructor. - - - - - Event sent after layout calculations, when the position or the dimension of an element changes. This event cannot be cancelled, it does not trickle down, and it does not bubble up. - - - - - The new dimensions of the element. - - - - - The old dimensions of the element. - - - - - Constructor. - - - - - Gets an event from the event pool and initializes the event with the specified values. Use this method instead of instancing new events. Use Dispose() to release events back to the event pool. - - The old dimensions of the element. - The new dimensions of the element. - - Returns an initialized event. - - - - - Resets the event values to their initial values. - - - - - Interface for all bindable fields. - - - - - Binding object that will be updated. - - - - - Path of the target property to be bound. - - - - - Base interface for Binding objects. - - - - - Called at regular intervals to synchronize bound properties to their IBindable counterparts. Called before the Update() method. - - - - - Disconnects the field from its bound property - - - - - Called at regular intervals to synchronize bound properties to their IBindable counterparts. - - - - - Extensions methods to provide additional IBindable functionality. - - - - - Checks if a IBindable is bound to a property. - - This Bindable object. - - Returns true if this IBindable is bound to a property. - - - - - Base interface for ChangeEvent. - - - - - Interface for Command events. - - - - - Name of the command. - - - - - Interface for drag and drop events. - - - - - Interface for class capable of handling events. - - - - - Handle an event. - - The event to handle. - - - - Return true if event handlers for the event propagation BubbleUp phase have been attached on this object. - - - True if object has event handlers for the BubbleUp phase. - - - - - Returns true if event handlers, for the event propagation TrickleDown phase, are attached to this object. - - - Returns true if the object already has event handlers for the TrickleDown phase. - - - - - Sends an event to the event handler. - - The event to send. - - - - Interface for focus events. - - - - - Direction of the focus change. - - - - - Related target. See implementation for specific meaning. - - - - - Interface for classes implementing focus rings. - - - - - Get the direction of the focus change for the given event. For example, when the Tab key is pressed, focus should be given to the element to the right. - - - - - - - Get the next element in the given direction. - - - - - - - Interface for keyboard events. - - - - - Returns true if the platform specific action key is pressed. This key is Command on macOS and Control otherwise. - - - - - Return true if the Alt key is pressed. - - - - - The character. - - - - - Return true if the Windows/Command key is pressed. - - - - - Return true if the Control key is pressed. - - - - - The key code. - - - - - Flag set holding the pressed modifier keys (Alt, Control, Shift, Windows/Command). - - - - - Return true if the Shift key is pressed. - - - - - A VisualElement representing a source texture. - - - - - The source texture of the Image element. - - - - - The source rectangle inside the texture relative to the top left corner. - - - - - The base texture coordinates of the Image relative to the bottom left corner. - - - - - Instantiates an Image using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Image. - - - - - Returns an empty enumerable, as images generally do not have children. - - - - - Constructor. - - - - - An interface for Manipulator classes. - - - - - The element that handles the interaction. - - - - - Marks layout as dirty to trigger a redraw. - - - - - Instantiates an IMGUIContainer using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the IMGUIContainer. - - - - - Returns an empty enumerable, as IMGUIContainer cannot have VisualElement children. - - - - - Constructor. - - - - - Class used to send a IMGUI event that has no equivalent UIElements event. - - - - - Constructor. Use GetPooled() to get an event from a pool of reusable events. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The IMGUI event used to initialize the event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Interface for mouse capture events. - - - - - Interface for mouse events. - - - - - Returns true if the platform specific action key is pressed. This key is Command on macOS and Control otherwise. - - - - - Return true if the Alt key is pressed. - - - - - Integer representing the pressed mouse button: 0 is left, 1 is right, 2 is center. - - - - - Number of clicks. - - - - - Return true if the Windows/Command key is pressed. - - - - - Return true if the Control key is pressed. - - - - - The mouse position in the current target coordinate system. - - - - - Flag set holding the pressed modifier keys (Alt, Control, Shift, Windows/Command). - - - - - Mouse position difference between the last mouse event and this one. - - - - - The mouse position in the panel coordinate system. - - - - - Return true if the Shift key is pressed. - - - - - Interface for controls that hold a value and can notify when it is changed by user input. - - - - - The Value held by the control. - - - - - Registers this callback to receive ChangeEvent<T> when value is changed by user input. - - - - - - Unregisters this callback from receiving ChangeEvent<T> when value is changed by user input. - - - - - - Set the value and, if different, notifies registers callbacks with a ChangeEvent<T> - - The new value to be set. - - - - Set the value and, even if different, does not notify registers callbacks with a ChangeEvent<T> - - The new value to be set. - - - - Sends an event when text from a TextField changes. - - - - - The new text. - - - - - The text before the change occured. - - - - - Constructor. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The new text. - The text before the change occured. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Interface for classes implementing UI panels. - - - - - Return the focus controller for this panel. - - - - - Interface for panel change events. - - - - - A reference to a scheduled action. - - - - - A scheduler allows you to register actions to be executed at a later point. - - - - - Add this item to the list of scheduled tasks. - - The item to register. - - - - Schedule this action to be executed later. The item will be automatically unscheduled after it has ran for the amount of time specified with the durationMs parameter. - - Action to be executed. - The minimum delay in milliseconds before executing the action. - The minimum interval in milliseconds between each execution. - The total duration in milliseconds where this item will be active. - - Internal reference to the scheduled action. - - - - - Schedule this action to be executed later. After the execution, the item will be automatically unscheduled. - - Action to be executed. - The minimum delay in milliseconds before executing the action. - - Internal reference to the scheduled action. - - - - - Schedule this action to be executed later. Item will be unscheduled when condition is met. - - Action to be executed. - The minimum delay in milliseconds before executing the action. - The minimum interval in milliseconds bettwen each execution. - When condition returns true, the item will be unscheduled. - - Internal reference to the scheduled action. - - - - - Manually unschedules a previously scheduled action. - - The item to be removed from this scheduler. - - - - This interface provides access to a VisualElement style data. - - - - - Alignment of the whole area of children on the cross axis if they span over multiple lines in this container. - - - - - Alignment of children on the cross axis of this container. - - - - - Similar to align-items, but only for this specific element. - - - - - Background color to paint in the element's box. - - - - - Background image to paint in the element's box. - - - - - Background image scaling in the element's box. - - - - - Space reserved for the bottom edge of the border during the layout phase. - - - - - This is the radius of the bottom-left corner when a rounded rectangle is drawn in the element's box. - - - - - This is the radius of the bottom-right corner when a rounded rectangle is drawn in the element's box. - - - - - Space reserved for the bottom edge of the border during the layout phase. - - - - - Color of the border to paint inside the element's box. - - - - - Space reserved for the left edge of the border during the layout phase. - - - - - Space reserved for the left edge of the border during the layout phase. - - - - - This is the radius of every corner when a rounded rectangle is drawn in the element's box. - - - - - Space reserved for the right edge of the border during the layout phase. - - - - - Space reserved for the right edge of the border during the layout phase. - - - - - Space reserved for the top edge of the border during the layout phase. - - - - - This is the radius of the top-left corner when a rounded rectangle is drawn in the element's box. - - - - - This is the radius of the top-right corner when a rounded rectangle is drawn in the element's box. - - - - - Space reserved for the top edge of the border during the layout phase. - - - - - Color to use when drawing the text of an element. - - - - - Mouse cursor to display when the mouse pointer is over an element. - - - - - Ration of this element in its parent during the layout phase. - - - - - Initial main size of a flex item, on the main flex axis. The final layout mught be smaller or larger, according to the flex shrinking and growing determined by the flex property. - - - - - Direction of the main axis to layout children in a container. - - - - - Specifies how much the item will grow relative to the rest of the flexible items inside the same container. - - - - - Specifies how the item will shrink relative to the rest of the flexible items inside the same container. - - - - - Placement of children over multiple lines if not enough space is available in this container. - - - - - Font to draw the element's text. - - - - - Font size to draw the element's text. - - - - - Font style and weight (normal, bold, italic) to draw the element's text. - - - - - Fixed height of an element for the layout. - - - - - Justification of children on the main axis of this container. - - - - - Space reserved for the bottom edge of the margin during the layout phase. - - - - - Space reserved for the left edge of the margin during the layout phase. - - - - - Space reserved for the right edge of the margin during the layout phase. - - - - - Space reserved for the top edge of the margin during the layout phase. - - - - - Maximum height for an element, when it is flexible or measures its own size. - - - - - Maximum width for an element, when it is flexible or measures its own size. - - - - - Minimum height for an element, when it is flexible or measures its own size. - - - - - Minimum height for an element, when it is flexible or measures its own size. - - - - - Space reserved for the bottom edge of the padding during the layout phase. - - - - - Space reserved for the left edge of the padding during the layout phase. - - - - - Space reserved for the right edge of the padding during the layout phase. - - - - - Space reserved for the top edge of the padding during the layout phase. - - - - - Bottom distance from the element's box during layout. - - - - - Left distance from the element's box during layout. - - - - - Right distance from the element's box during layout. - - - - - Top distance from the element's box during layout. - - - - - Element's positioning in its parent container. - - - - - Size of the 9-slice's bottom edge when painting an element's background image. - - - - - Size of the 9-slice's left edge when painting an element's background image. - - - - - Size of the 9-slice's right edge when painting an element's background image. - - - - - Size of the 9-slice's top edge when painting an element's background image. - - - - - Clipping if the text does not fit in the element's box. - - - - - Horizontal and vertical text alignment in the element's box. - - - - - Specifies whether or not an element is visible. - - - - - Fixed width of an element for the layout. - - - - - Word wrapping over multiple lines if not enough space is available to draw the text of an element. - - - - - This interface provides access to a VisualElement transform data. - - - - - Transformation matrix calculated from the position, rotation and scale of the transform (Read Only). - - - - - The position of the VisualElement's transform. - - - - - The rotation of the VisualElement's transform stored as a Quaternion. - - - - - The scale of the VisualElement's transform. - - - - - Interface allowing access to this elements datawatch. - - - - - Starts watching an object. When watched, all changes on an object will trigger the callback to be invoked. - - The object to watch. - Callback. - - A reference to this datawatch request. Disposing it will ensure any native resources will also be released. - - - - - Unregisters a previously watched request. - - The registered request. - - - - An internal reference to a data watch request. - - - - - This type allows UXML attribute value retrieval during the VisualElement instantiation. An instance will be provided to the factory method - see UXMLFactoryAttribute. - - - - - Get the value of an attribute as a string. - - Attribute name. - The attribute value or null if not found. - - True if the attribute was found, false otherwise. - - - - - Interface for UXML factories. While it is not strictly required, concrete factories should derive from the generic class UxmlFactory. - - - - - Must return true if the UXML element attributes are not restricted to the values enumerated by uxmlAttributesDescription. - - - - - The type of element for which this element type can substitute for. - - - - - The UXML namespace for the type returned by substituteForTypeName. - - - - - The fully qualified XML name for the type returned by substituteForTypeName. - - - - - Describes the UXML attributes expected by the element. The attributes enumerated here will appear in the UXML schema. - - - - - Describes the types of element that can appear as children of this element in a UXML file. - - - - - The name of the UXML element read by the factory. - - - - - The namespace of the UXML element read by the factory. - - - - - The fully qualified name of the UXML element read by the factory. - - - - - Returns true if the factory accepts the content of the attribute bag. - - The attribute bag. - - True if the factory accepts the content of the attribute bag. False otherwise. - - - - - Instanciate and initialize an object of type T0. - - A bag of name-value pairs, one for each attribute of the UXML element. This can be used to initialize the properties of the created object. - When the element is created as part of a template instance inserted in another document, this contains information about the insertion point. - - The created object. - - - - - Represents a scheduled task created with a VisualElement's schedule interface. - - - - - Returns the VisualElement this object is associated with. - - - - - Will be true when this item is scheduled. Note that an item's callback will only be executed when it's VisualElement is attached to a panel. - - - - - Repeats this action after a specified time. - - Minimum amount of time in milliseconds between each action execution. - - This ScheduledItem. - - - - - Cancels any previously scheduled execution of this item and re-schedules the item. - - Minimum time in milliseconds before this item will be executed. - - - - After specified duration, the item will be automatically unscheduled. - - The total duration in milliseconds where this item will be active. - - This ScheduledItem. - - - - - Removes this item from its VisualElement's scheduler. - - - - - If not already active, will schedule this item on its VisualElement's scheduler. - - - - - Adds a delay to the first invokation. - - The minimum number of milliseconds after activation where this item's action will be executed. - - This ScheduledItem. - - - - - Item will be unscheduled automatically when specified condition is met. - - When condition returns true, the item will be unscheduled. - - This ScheduledItem. - - - - - A scheduler allows you to register actions to be executed at a later point. - - - - - Schedule this action to be executed later. - - The action to be executed. - The action to be executed. - - Reference to the scheduled action. - - - - - Schedule this action to be executed later. - - The action to be executed. - The action to be executed. - - Reference to the scheduled action. - - - - - Base class for keyboard events. - - - - - Returns true if the platform specific action key is pressed. This key is Command on macOS and Control otherwise. - - - - - Returns true if the Alt key is pressed. - - - - - The character. - - - - - Returns true if the Windows/Command key is pressed. - - - - - Returns true if the Control key is pressed. - - - - - The key code. - - - - - Flags holding the pressed modifier keys (Alt, Control, Shift, Windows/Command). - - - - - Returns true if the Shift key is pressed. - - - - - Gets a keyboard event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The character for this event. - The keyCode for this event. - Event modifier keys that are active for this event. - A keyboard IMGUI event. - - Returns an initialized event. - - - - - Gets a keyboard event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - The character for this event. - The keyCode for this event. - Event modifier keys that are active for this event. - A keyboard IMGUI event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Event sent when a key is pressed on the keyboard. This event trickles down and bubbles up. This event is cancellable. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Event sent when a key is released on the keyboard. This event trickles down and bubbles up. This event is cancellable. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Instantiates a Label using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Label. - - - - - Constructor. - - - - - A vertically scrollable area that only creates visual elements for visible items while allowing the binding of many more items. As the user scrolls, visual elements are recycled and re-bound to new data items. - - - - - Callback for binding a data item to the visual element. - - - - - ListView requires all visual elements to have the same height so that it can calculate a sensible scroller size. This property must be set for the list view to function. - - - - - The items data source. This property must be set for the list view to function. - - - - - Callback for constructing the VisualElement that will serve as the template for each recycled and re-bound element in the list. This property must be set for the list view to function. - - - - - Callback for when an item is chosen (double-click). This is different from just a selection. - - The chosen item. - - - - Callback for a selection change. - - List of selected items. - - - - Currently selected item index in the items source. If multiple items are selected, this will return the first selected item's index. - - - - - The currently selected item from the items source. If multiple items are selected, this will return the first selected item. - - - - - Controls the selection state, whether: selections are disabled, there is only one selectable item, or if there are multiple selectable items. - - - - - Clear, recreate all visible visual elements, and rebind all items. This should be called whenever the items source changes. - - - - - Scroll to a specific visual element. - - Element to scroll to. - - - - Scroll so that a specific item index from the items source is visible. - - Item index to scroll to. - - - - Instantiates a ListView using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ListView. - - - - - Returns an empty enumerable, as list views generally do not have children. - - - - - Constructor. - - - - - Initialize ListView properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Base class for objects that define user interaction with a VisualElement. Most often manipulators hold state for complex interactions, for example interactions that require a mouse down, mouse move mouse up sequence. - - - - - The element that handles the interaction. - - - - - Register event callbacks on the target visual element. - - - - - Unregister event callbacks on the target visual element. - - - - - Used by manipulators to match events against their requirements. - - - - - The button that activates the manipulation. - - - - - Number of mouse clicks required to activate the manipulator. - - - - - Any modifier keys (ie. ctrl, alt, ...) that are needed to activate the manipulation. - - - - - Returns true if the current mouse event satisfies the activation requirements. - - The mouse event. - - True if the event matches the requirements. - - - - - A min/max slider containing a representation of a range. - - - - - This is the high limit of the slider. - - - - - This is the low limit of the slider. - - - - - This is the high value of the range represented on the slider. - - - - - This is the low value of the range represented on the slider. - - - - - Returns the range of the low/high limits of the slider. - - - - - This is the value of the slider. This is a Vector2 where the x is the lower bound and the y is the higher bound. - - - - - Constructor. - - The minimum value in the range to be represented. - The maximum value in the range to be represented. - The minimum value of the slider limit. - The maximum value of the slider limit. - This is the sldier direction, for now, only Horizontal is supported. - - - - Constructor. - - The minimum value in the range to be represented. - The maximum value in the range to be represented. - The minimum value of the slider limit. - The maximum value of the slider limit. - This is the sldier direction, for now, only Horizontal is supported. - - - - Instantiates a MinMaxSlider using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the MinMaxSlider. - - - - - Constructor. - - - - - Initialize MinMaxSlider properties using values from the attribute bag. - - The element to initialize. - The bag of attributes. - Creation Context, unused. - - - - Class that manages capturing mouse events. - - - - - Assigns an event handler to capture mouse events. - - The event handler that captures mouse events. - - - - Checks if the event handler is capturing the mouse. - - Event handler to check. - - True if the handler captures the mouse. - - - - - Checks if there is a handler capturing the mouse. - - - Returns true if a handler is capturing the mouse, false otherwise. - - - - - Stops an event handler from capturing the mouse. - - The event handler to stop capturing the mouse. If this handler is not assigned to capturing the mouse, nothing happens. - - - - Stops an event handler from capturing the mouse. - - The event handler to stop capturing the mouse. If this handler is not assigned to capturing the mouse, nothing happens. - - - - Event sent after a handler starts capturing the mouse. - - - - - Constructor. - - - - - Event sent when the handler capturing the mouse changes. - - - - - In the case of a MouseCaptureEvent, this property is the IEventHandler that loses the capture. In the case of a MouseCaptureOutEvent, this property is the IEventHandler that gains the capture. - - - - - Retrieves an event from the event pool. Use this method to retrieve a mouse event and initialize the event, instead of creating a new mouse event. Events obtained from this method should be released back to the pool using Dispose(). - - The handler taking or releasing the mouse capture. - The related target. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Event sent before a handler stops capturing the mouse. - - - - - Constructor. - - - - - Mouse down event. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Event sent when the mouse pointer enters an element or one of its descendent elements. The event is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - Event sent when the mouse pointer enters a window. The event is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - The base class for mouse events. - - - - - Returns true if the platform specific action key is pressed. This key is Command on macOS and Control otherwise. - - - - - Returns true if the Alt key is pressed. - - - - - Integer representing the pressed mouse button: 0 is left, 1 is right, 2 is center. - - - - - Number of clicks. - - - - - Returns true if the Windows/Command key is pressed. - - - - - Returns true if the Control key is pressed. - - - - - The current target of the event. The current target is the element in the propagation path for which event handlers are currently being executed. - - - - - The mouse position in the current target coordinate system. - - - - - Flags holding the pressed modifier keys (Alt, Control, Shift, Windows/Command). - - - - - The difference of the mouse position between the previous mouse event and the current mouse event. - - - - - The mouse position in the screen coordinate system. - - - - - Returns true if the Shift key is pressed. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - A mouse IMGUI event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Event sent when the mouse pointer exits an element and all its descendent elements. The event is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - Event sent when the mouse pointer exits a window. The event is cancellable, it does not trickle down, and it does not bubble up. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Resets the event members to their initial values. - - - - - Mouse move event. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Event sent when the mouse pointer exits an element. The event trickles down, it bubbles up, and it is cancellable. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Event sent when the mouse pointer enters an element. The event trickles down, it bubbles up, and it is cancellable. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Mouse up event. - - - - - Constructor. Avoid newing events. Instead, use GetPooled() to get an event from a pool of reusable events. - - - - - Abstract base class for events notifying of a panel change. - - - - - In the case of AttachToPanelEvent, the panel to which the event target element is now attached. In the case of DetachFromPanelEvent, the panel to which the event target element will be attached. - - - - - In the case of AttachToPanelEvent, the panel to which the event target element was attached. In the case of DetachFromPanelEvent, the panel from which the event target element is detached. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - Sets the originPanel property of the event. - Sets the destinationPanel property of the event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - Styled visual element that matches the EditorGUILayout.Popup IMGUI element. - - - - - Instantiates a PopupWindow using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the PopupWindow. - - - - - Returns an empty enumerable, as popup windows generally do not have children. - - - - - Constructor. - - - - - The propagation phases of an event. - - - - - The event is being sent to the event target. - - - - - The event is being sent to the event target parent element up to the root element. - - - - - The event is being sent to the target element for it to execute its default actions for this event. Event handlers do not get the events in this phase. Instead, ExecuteDefaultAction is called on the target. - - - - - The event is not being propagated. - - - - - The event is being sent from the root element to the target parent element. - - - - - A button that executes an action repeatedly while it is pressed. - - - - - Constructor. - - The action to execute when the button is pressed. - The initial delay before the action is executed for the first time. - The interval between each execution of the action. - - - - Constructor. - - The action to execute when the button is pressed. - The initial delay before the action is executed for the first time. - The interval between each execution of the action. - - - - Set the action that should be executed when the button is pressed. - - The action to execute. - The initial delay before the action is executed for the first time. - The interval between each execution of the action. - - - - Instantiates a RepeatButton using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the RepeatButton. - - - - - Constructor. - - - - - Initialize RepeatButton properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Instantiates a Scroller using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Scroller. - - - - - Returns an empty enumerable, as scrollers do not have children. - - - - - Constructor. - - - - - Initialize Scroller properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Instantiates a ScrollerButton using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ScrollerButton. - - - - - Returns an empty enumerable, as buttons generally do not have children. - - - - - Constructor. - - - - - Initialize ScrollerButton properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - This property is controlling the scrolling speed of the horizontal scroller. - - - - - Indicates whether the content of ScrollView should fill the width of its viewport. The default value is false. - - - - - This property is controlling the scrolling speed of the vertical scroller. - - - - - Scroll to a specific child element. - - The child to scroll to. - - - - Replaces the contentContainer with this element. The previous contents container will be removed the hierarchy - - The element to display in this ScrollView - - - - Instantiates a ScrollView using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the ScrollView. - - - - - Constructor. - - - - - Initialize ScrollView properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Controls how many items can be selected at once. - - - - - Multiple items are selectable at once. - - - - - Selections are disabled. - - - - - Only one item is selectable. - - - - - Experimental.UIElements.Slider is a controller allowing the selection of a value from a range (min, max, value). - - - - - Instantiates a Slider using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Slider. - - - - - Returns an empty enumerable, as sliders generally do not have children. - - - - - Constructor. - - - - - Initialize Slider properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - This is the direction of the Slider and SliderInt. - - - - - An horizontal slider is made with a SliderDirection Horizontal. - - - - - An vertical slider is made with a SliderDirection Vertical. - - - - - A slider containing Integer discrete values. - - - - - The value to add or remove to the SliderInt.value when it is clicked. - - - - - Constructors for the SliderInt. - - This is the low value of the slider. - This is the high value of the slider. - This is the slider direction, horizontal or vertical. - This is the number of values to change when the slider is clicked. - - - - Constructors for the SliderInt. - - This is the low value of the slider. - This is the high value of the slider. - This is the slider direction, horizontal or vertical. - This is the number of values to change when the slider is clicked. - - - - Instantiates a SliderInt using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the SliderInt. - - - - - Returns an empty enumerable, as sliders generally do not have children. - - - - - Constructor. - - - - - Initialize SliderInt properties using values from the attribute bag. - - The object to initialize. - The bag of attributes. - The creation context; unused. - - - - This enumeration contains values to control how an element is aligned in its parent during the layout phase. - - - - - Default value (currently FlexStart). - - - - - Items are centered on the cross axis. - - - - - Items are aligned at the end on the cross axis. - - - - - Items are aligned at the beginning on the cross axis. - - - - - Stretches items on the cross axis. - - - - - This enumeration defines values used to control in which direction a container will place its children during layout. - - - - - Vertical layout. - - - - - Vertical layout in reverse order. - - - - - Horizontal layout. - - - - - Horizontal layout in reverse order. - - - - - This enumeration contains values to control how children are justified during layout. - - - - - Items are centered. - - - - - Items are justified towards the end of the layout direction. - - - - - Items are justified towards the beginning of the main axis. - - - - - Items are evenly distributed in the line with extra space on each end of the line. - - - - - Items are evenly distributed in the line; first item is at the beginning of the line, last item is at the end. - - - - - This enumeration contains values to control how an element is positioned in its parent container. - - - - - The element is positioned in relation to its parent box and does not contribute to the layout anymore. - - - - - The element is positioned in relation to its default box as calculated by layout. - - - - - This enumeration contains values to specify whether or not an element is visible. - - - - - The picking and rendering of this element is skipped. It still takes space in the layout. - - - - - The element is drawn normally (default). - - - - - This enumeration contains values to control how elements are placed in a container if not enough space is available. - - - - - All elements are placed on the same line. - - - - - Elements are placed over multiple lines. - - - - - Elements are placed over multiple lines with new lines occuring in the reverse order set in the container. - - - - - This interface exposes methods to read custom style properties applied from USS files to visual elements. - - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - Read a style property value into the specified StyleValue<T>. - - Name of the property in USS. - Target StyleValue<T> field or variable to write to. - - - - This generic structure encodes a value type that can come from USS or be specified programmatically. - - - - - This represents the default value for a StyleValue<T> of the according generic type. - - - - - The actual value of the StyleValue<T>. - - - - - Creates a StyleValue of the according generic type directly from a value. - - Value to be used as inline style. - - The result StyleValue<T> - - - - - This constructor can be used to specified an alternate default value but it is recommended to use StyleValue<T>.nil. - - Default starting value. - - - - Utility function to be used when reading custom styles values and provide a default value in one step. - - Default value to be returned if no value is set. - - The value to be used for the custom style. - - - - - Template Container. - - - - - Instantiates and clones a TemplateContainer using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the TemplateContainer. - - - - - Returns an empty enumerable, as template instance do not have children. - - - - - Constructor. - - - - - Initialize TemplateContainer properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Abstract base class for VisualElement containing text. - - - - - The text associated with the element. - - - - - Computes the size needed to display a text string based on element style values such as font, font-size, word-wrap, and so on. - - The text to measure. - Suggested width. Can be zero. - Width restrictions. - Suggested height. - Height restrictions. - - Returns the horizontal and vertical size needed to display the text string. - - - - - Instantiates a TextElement using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the TextElement. - - - - - Enumerator to get the child elements of the UxmlTraits of TextElement. - - - - - Constructor. - - - - - Initializer for the UxmlTraits for the TextElement. - - VisualElement to initialize. - Bag of attributes where to get the value from. - Creation Context, not used. - - - - A textfield is a rectangular area where the user can edit a string. - - - - - Set this to true to mask the characters and false if otherwise. - - - - - Set this to true to allow multiple lines in the textfield and false if otherwise. - - - - - The string currently being exposed by the field. - - - - - Creates a new textfield. - - The maximum number of characters this textfield can hold. If 0, there is no limit. - Set this to true to allow multiple lines in the textfield and false if otherwise. - Set this to true to mask the characters and false if otherwise. - The character used for masking in a password field. - - - - Creates a new textfield. - - The maximum number of characters this textfield can hold. If 0, there is no limit. - Set this to true to allow multiple lines in the textfield and false if otherwise. - Set this to true to mask the characters and false if otherwise. - The character used for masking in a password field. - - - - Called when the persistent data is accessible and/or when the data or persistence key have changed (VisualElement is properly parented). - - - - - Selects text in the textfield between cursorIndex and selectionIndex. - - The caret and selection start position. - The selection end position. - - - - Instantiates a TextField using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the TextField. - - - - - Constructor. - - - - - Initialize TextField properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Abstract base class used for all text-based fields. - - - - - Color of the cursor. - - - - - The current cursor position index in the text input field. - - - - - Controls whether double clicking selects the word under the mouse pointer or not. - - - - - If set to true, the value property is not updated until either the user presses Enter or the text field loses focus. - - - - - Returns true if the field is used to edit a password. - - - - - The character used for masking in a password field. - - - - - Maximum number of characters for the field. - - - - - The current selection position index in the text input field. - - - - - Background color of selected text. - - - - - Controls whether triple clicking selects the entire line under the mouse pointer or not. - - - - - Add menu items to the text field contextual menu. - - The event holding the menu to populate. - - - - Constructor. - - Maximum number of characters for the field. - The character used for masking in a password field. - - - - Selects all the text. - - - - - UxmlTraits for the TextInputFieldBase. - - - - - Constructor. - - - - - Initialize TextInputFieldBase properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - This is the Toggle field. - - - - - Optional text after the toggle. - - - - - (Obsolete) Sets the event callback for this toggle button. Use OnValueChanged() instead. - - The action to be called when this Toggle is clicked. - - - - Instantiates a Toggle using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the Toggle. - - - - - Constructor. - - - - - Initialize Toggle properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - Event sent to find the first element that displays a tooltip. - - - - - Rectangle of the hovered element in the panel coordinate system. - - - - - Text to display inside the tooltip box. - - - - - Resets the event members to their initial values. - - - - - Use this enum to specify during which phases the event handler is executed. - - - - - The event handler should be executed during the AtTarget and BubbleUp phases. - - - - - The event handler should be executed during the TrickleDown and AtTarget phases. - - - - - UQuery is a set of extension methods allowing you to select individual or collection of visualElements inside a complex hierarchy. - - - - - Utility Object that contructs a set of selection rules to be ran on a root visual element. - - - - - Selects all elements that are active. - - - A QueryBuilder with the selection rules. - - - - - Convenience overload, shorthand for Build().AtIndex(). - - - - - - Compiles the selection rules into a QueryState object. - - - - - Selects all elements that are checked. - - - - - Selects all direct child elements of elements matching the previous rules. - - - - - - - - Selects all direct child elements of elements matching the previous rules. - - - - - - - - Selects all elements with the given class. Not to be confused with Type (see OfType<>()). - - - - - - Initializes a QueryBuilder. - - The root element on which to condfuct the search query. - - - - Selects all elements that are descendants of currently matching ancestors. - - - - - - - - Selects all elements that are descendants of currently matching ancestors. - - - - - - - - Selects all elements that are enabled. - - - - - Convenience overload, shorthand for Build().First(). - - - The first element matching all the criteria, or null if none was found. - - - - - Selects all elements that are enabled. - - - - - Convenience overload, shorthand for Build().ForEach(). - - The function to be invoked with each matching element. - - - - Convenience overload, shorthand for Build().ForEach(). - - The function to be invoked with each matching element. - Each return value will be added to this list. - - - - Convenience overload, shorthand for Build().ForEach(). - - The function to be invoked with each matching element. - - Returns a list of all the results of the function calls. - - - - - Selects all elements that are hovered. - - - - - Convenience overload, shorthand for Build().Last(). - - - The last element matching all the criteria, or null if none was found. - - - - - Selects element with this name. - - - - - - Selects all elements that are not active. - - - - - Selects all elements that npot checked. - - - - - Selects all elements that are not enabled. - - - - - Selects all elements that don't currently own the focus. - - - - - Selects all elements that are not hovered. - - - - - Selects all elements that are not selected. - - - - - Selects all elements that are not visible. - - - - - Selects all elements of the specified Type (eg: Label, Button, ScrollView, etc). - - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Selects all elements of the specified Type (eg: Label, Button, ScrollView, etc). - - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Selects all elements that are selected. - - - - - Convenience method. shorthand for Build().ToList. - - - Returns a list containing elements satisfying selection rules. - - - - - Convenience method. Shorthand gor Build().ToList(). - - Adds all elements satisfying selection rules to the list. - - - - Selects all elements that are visible. - - - - - Selects all elements satifying the predicate. - - Predicate that must return true for selected elements. - - QueryBuilder configured with the associated selection rules. - - - - - Query object containing all the selection rules. Can be saved and rerun later without re-allocating memory. - - - - - Selects the n th element matching all the criteria, or null if not enough elements were found. - - The index of the matched element. - - The match element at the specified index. - - - - - The first element matching all the criteria, or null if none was found. - - - The first element matching all the criteria, or null if none was found. - - - - - Invokes function on all elements matching the query. - - The action to be invoked with each matching element. - - - - Invokes function on all elements matching the query. - - Each return value will be added to this list. - The function to be invoked with each matching element. - - - - Invokes function on all elements matching the query. Overloaded for convenience. - - The function to be invoked with each matching element. - - Returns a list of all the results of the function calls. - - - - - The last element matching all the criteria, or null if none was found. - - - The last element matching all the criteria, or null if none was found. - - - - - Creates a new QueryState with the same selection rules, applied on another VisualElement. - - The element on which to apply the selection rules. - - A new QueryState with the same selection rules, applied on this element. - - - - - Returns a list containing elements satisfying selection rules. - - - Returns a list containing elements satisfying selection rules. - - - - - Adds all elements satisfying selection rules to the list. - - Adds all elements satisfying selection rules to the list. - - - - UQuery is a set of extension methods allowing you to select individual or collection of visualElements inside a complex hierarchy. - - - - - Convenience overload, shorthand for Query<T>.Build().First(). - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - The first element matching all the criteria, or null if none was found. - - - - - Convenience overload, shorthand for Query<T>.Build().First(). - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - The first element matching all the criteria, or null if none was found. - - - - - Initializes a QueryBuilder with the specified selection rules. - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Initializes a QueryBuilder with the specified selection rules. - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Initializes a QueryBuilder with the specified selection rules. Template parameter specifies the type of elements the selector applies to (ie: Label, Button, etc). - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Initializes a QueryBuilder with the specified selection rules. Template parameter specifies the type of elements the selector applies to (ie: Label, Button, etc). - - Root VisualElement on which the selector will be applied. - If specified, will select elements with this name. - If specified, will select elements with the given class (not to be confused with Type). - If specified, will select elements with the given class (not to be confused with Type). - - QueryBuilder configured with the associated selection rules. - - - - - Initializes an empty QueryBuilder on a specified root element. - - Root VisualElement on which the selector will be applied. - - An empty QueryBuilder on a specified root element. - - - - - Base class for describing an XML attribute. - - - - - The default value for the attribute, as a string. - - - - - The attribute name. - - - - - A list of obsolete names for this attribute. - - - - - Restrictions on the possible values of the attribute. - - - - - Attribute type. - - - - - Attribute namespace. - - - - - Whether the attribute is optional, required or prohibited. - - - - - Get the attribute value from the attribute bag. - - A bag containg attributes and their values as strings. - The context in which the values are retrieved. - A function to convert a string value to type T. - The value to return if the attribute is not found in the bag. - - The attribute value from the bag, or defaultValue if the attribute is not found. - - - - - An enum to describe attribute use. - - - - - There is no restriction on the use of this attribute with the element. - - - - - The attribute is optional for the element. - - - - - The attribute should not appear for the element. - - - - - The attribute must appear in the element tag. - - - - - Describes a XML bool attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describe an allowed child element for an element. - - - - - The name of the allowed child element. - - - - - The namespace name of the allowed child element. - - - - - Constructor. - - - - - - Describes a XML attribute representing a Color as a string. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describes a XML double attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describes a XML attribute representing an enum as a string. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Restricts the value of an attribute to be taken from a list of values. - - - - - The list of values the attribute can take. - - - - - Constructor. - - - - - Indicates whether the current UxmlEnumeration object is equal to another object of the same type. - - The object to compare with. - - True if the otheer object is equal to this one. - - - - - UxmlFactory specialization for classes that derive from VisualElement and that shares its traits, VisualElementTraits. - - - - - Constructor. - - - - - Generic base class for UXML factories, which instantiate a VisualElement using the data read from a UXML file. - - - - - Returns UxmlTraits.canHaveAnyAttribute (where UxmlTraits is the argument for T1). - - - - - Returns an empty string if T0 is not VisualElement; otherwise, returns "VisualElement". - - - - - Returns the namespace for substituteForTypeName. - - - - - Returns the fully qualified name for substituteForTypeName. - - - - - Returns an empty enumerable. - - - - - Returns an empty enumerable. - - - - - Returns the type name of T0. - - - - - Returns the namespace name of T0. - - - - - Returns the typefully qualified name of T0. - - - - - Returns true. - - The attribute bag. - - Always true. - - - - - Instantiate an object of type T0 and initialize it by calling T1 UxmlTraits.Init method. - - A bag of name-value pairs, one for each attribute of the UXML element. This can be used to initialize the properties of the created object. - When the element is created as part of a template instance inserted in another document, this contains information about the insertion point. - - The created element. - - - - - Returns the Type of the objects created by this factory. - - - - - If implemented by your factory, this function will be called to instantiate an object of type T0. Otherwise, the default constructor of T0 will be used. - - A bag of name-value pairs, one for each attribute of the UXML element. This can be used to initialize the properties of the created object. - When the element is created as part of a template instance inserted in another document, this contains information about the insertion point. - - The created element. - - - - - Describes a XML float attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describes a XML int attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describes a XML long attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Factory for the root UXML element. - - - - - Returns the empty string, as the root element can not appear anywhere else bit at the root of the document. - - - - - Returns the empty string, as the root element can not appear anywhere else bit at the root of the document. - - - - - Returns the empty string, as the root element can not appear anywhere else bit at the root of the document. - - - - - Returns "UXML". - - - - - Returns the qualified name for this element. - - - - - Returns null. - - - - - - - Constructor. - - - - - UxmlTraits for the UXML root element. - - - - - Returns an enumerable containing UxmlChildElementDescription(typeof(VisualElement)), since the root element can contain VisualElements. - - - - - Constructor. - - - - - Describes a XML string attribute. - - - - - The default value for the attribute. - - - - - The default value for the attribute, as a string. - - - - - Constructor. - - - - - Retrieves the value of this attribute from the attribute bag. Returns it if it is found, otherwise return defaultValue. - - The bag of attributes. - - The value of the attribute. - - - - - Describes a VisualElement derived class for the parsing of UXML files and the generation of UXML schema definition. - - - - - Must return true if the UXML element attributes are not restricted to the values enumerated by UxmlTraits.uxmlAttributesDescription. - - - - - Describes the UXML attributes expected by the element. The attributes enumerated here will appear in the UXML schema. - - - - - Describes the types of element that can appear as children of this element in a UXML file. - - - - - Initialize a VisualElement instance with values from the UXML element attributes. - - The VisualElement to initialize. - A bag of name-value pairs, one for each attribute of the UXML element. - When the element is created as part of a template instance inserted in another document, this contains information about the insertion point. - - - - Base class to restricts the value of an attribute. - - - - - Indicates whether the current UxmlTypeRestriction object is equal to another object of the same type. - - The object to compare with. - - True if the otheer object is equal to this one. - - - - - Restricts the value of an attribute to be within the specified bounds. - - - - - True if the bounds exclude max. - - - - - True if the bounds exclude min. - - - - - The maximum value for the attribute. - - - - - The minimum value for the attribute. - - - - - Constructor. - - - - - Indicates whether the current UxmlValueBounds object is equal to another object of the same type. - - The object to compare with. - - True if the otheer object is equal to this one. - - - - - Restricts the value of an attribute to match a regular expression. - - - - - The regular expression that should be matched by the value. - - - - - Constructor. - - - - - Indicates whether the current UxmlValueMatches object is equal to another object of the same type. - - The object to compare with. - - True if the otheer object is equal to this one. - - - - - The event sent to probe which elements accepts a command. - - - - - Constructor. - - - - - Instantiates a VisualElement using the data read from a UXML file. - - - - - Returns the VisualElement type name. - - - - - Returns the VisualElement type namespace. - - - - - Returns the VisualElement qualified name. - - - - - Returns VisualContainer type name. - - - - - Returns VisualContainer namespace name. - - - - - Returns VisualContainer full name. - - - - - Constructor. - - - - - Base class for objects that are part of the UIElements visual tree. - - - - - Number of child elements in this object's contentContainer - - - - - - Should this element clip painting to its boundaries. - - - - - child elements are added to this element, usually this - - - - - - Access to this element data watch interface. - - - - - The default focus index for newly created elements. - - - - - Returns true if the VisualElement is enabled in its own hierarchy. - - - - - Returns true if the VisualElement is enabled locally. - - - - - Used for view data persistence (ie. tree expanded states, scroll position, zoom level). - - - - - Retrieves this VisualElement's IVisualElementScheduler - - - - - Access to this element physical hierarchy - - - - - - Reference to the style object of this element. - - - - - Text to display inside an information box after the user hovers the element for a small amount of time. - - - - - This property can be used to associate application-specific user data with this VisualElement. - - - - - Add an element to this element's contentContainer - - - - - - Adds this stylesheet file to this element list of applied styles - - - - - - Checks if any of the ChangeTypes have been marked dirty. - - The ChangeType(s) to check. - - True if at least one of the checked ChangeTypes have been marked dirty. - - - - - Brings this element to the end of its parent children list. The element will be visually in front of any overlapping sibling elements. - - - - - Returns the elements from its contentContainer - - - - - Remove all child elements from this element's contentContainer - - - - - Options to select clipping strategy. - - - - - Enables clipping and renders contents to a cache texture. - - - - - Will enable clipping. This VisualElement and its children's content will be limited to this element's bounds. - - - - - Will disable clipping and let children VisualElements paint outside its bounds. - - - - - Returns true if the element is a direct child of this VisualElement - - - - - - Retrieves the child element at position - - - - - - Enables or disables the class with the given name. - - The name of the class to enable or disable. - A boolean flag that adds or removes the class name from the class list. If true, EnableInClassList adds the class name to the class list. If false, EnableInClassList removes the class name from the class list. - - - - Searchs up the hierachy of this VisualElement and retrieves stored userData, if any is found. - - - - - Finds the lowest commont ancestor between two VisualElements inside the VisualTree hierarchy - - - - - - Allows to iterate into this elements children - - - - - Walks up the hierarchy, starting from this element's parent, and returns the first VisualElement of this type - - - - - Walks up the hierarchy, starting from this element, and returns the first VisualElement of this type - - - - - Combine this VisualElement's VisualElement.persistenceKey with those of its parents to create a more unique key for use with VisualElement.GetOrCreatePersistentData. - - - Full hierarchical persistence key. - - - - - Takes a reference to an existing persisted object and a key and returns the object either filled with the persisted state or as-is. - - An existing object to be persisted, or null to create a new object. If no persisted state is found, a non-null object will be returned as-is. - The key for the current VisualElement to be used with the persistence store on the EditorWindow. - - The same object being passed in (or a new one if null was passed in), but possibly with its persistent state restored. - - - - - Takes a reference to an existing persisted object and a key and returns the object either filled with the persisted state or as-is. - - An existing object to be persisted, or null to create a new object. If no persisted state is found, a non-null object will be returned as-is. - The key for the current VisualElement to be used with the persistence store on the EditorWindow. - - The same object being passed in (or a new one if null was passed in), but possibly with its persistent state restored. - - - - - Checks if this stylesheet file is in this element list of applied styles - - - - - Hierarchy is a sctuct allowing access to the shadow hierarchy of visual elements - - - - - Number of child elements in this object's contentContainer - - - - - - Access the physical parent of this element in the hierarchy - - - - - - Add an element to this element's contentContainer - - - - - - Returns the elements from its contentContainer - - - - - Remove all child elements from this element's contentContainer - - - - - Retrieves the child element at position - - - - - - Retrieves the index of the specified VisualElement in the Hierarchy. - - The element to return the index for. - - Returns the index of the element, or -1 if the element is not found. - - - - - Insert an element into this element's contentContainer - - - - - Removes this child from the hierarchy - - - - - - Remove the child element located at this position from this element's contentContainer - - - - - - Reorders child elements from this VisualElement contentContainer. - - Sorting criteria. - - - - Access to this element physical hierarchy - - - - - - Retrieves the child index of the specified VisualElement. - - The child to return the index for. - - Returns the index of the child, or -1 if the child is not found. - - - - - Insert an element into this element's contentContainer - - - - - Triggers a repaint of the VisualElement on the next frame. - - - - - The modes available to measure VisualElement sizes. - - - - - At Most. The element should give its preferred width/height but no more than the value passed. - - - - - The element should give the width/height that is passed in and derive the opposite site from this value (for example, calculate text size from a fixed width). - - - - - The element should give its preferred width/height without any constraint. - - - - - Called when the persistent data is accessible and/or when the data or persistence key have changed (VisualElement is properly parented). - - - - - Callback when the styles of an object have changed. - - - - - - Overwrite object from the persistent data store. - - The key for the current VisualElement to be used with the persistence store on the EditorWindow. - Object to overwrite. - - - - Places this element right before the sibling element in their parent children list. If the element and the sibling position overlap, the element will be visually behind of its sibling. - - The sibling element. - - - - Places this element right after the sibling element in their parent children list. If the element and the sibling position overlap, the element will be visually in front of its sibling. - - The sibling element. - - - - Removes this child from the hierarchy - - - - - - Remove the child element located at this position from this element's contentContainer - - - - - - Removes this element from its parent hierarchy - - - - - Removes this stylesheet file from this element list of applied styles - - - - - - Write persistence data to file. - - - - - Sends an event to the event handler. - - The event to send. - - - - Sends this element to the beginning of its parent children list. The element will be visually behind any overlapping sibling elements. - - - - - Changes whether the current VisualElement is enabled or not. When disabled, a VisualElement does not receive most events. - - New enabled state. - - - - Reorders child elements from this VisualElement contentContainer. - - Sorting criteria. - - - - Access to this element physical hierarchy - - - - - - Toggles between adding and removing the given class name from the class list. - - The class name to add or remove from the class list. - - - - Instantiates a VisualElement using the data read from a UXML file. - - - - - Constructor. - - - - - UxmlTraits for the VisualElement. - - - - - Returns an enumerable containing UxmlChildElementDescription(typeof(VisualElement)), since VisualElements can contain other VisualElements. - - - - - Constructor. - - - - - Initialize VisualElement properties using values from the attribute bag. - - The object to initialize. - The attribute bag. - The creation context; unused. - - - - VisualElementExtensions is a set of extension methods useful for VisualElement. - - - - - Add a manipulator associated to a VisualElement. - - VisualElement associated to the manipulator. - Manipulator to be added to the VisualElement. - - - - Remove a manipulator associated to a VisualElement. - - VisualElement associated to the manipulator. - Manipulator to be removed from the VisualElement. - - - - The given VisualElement's left and right edges will be aligned with the corresponding edges of the parent element. - - - - - - Define focus change directions for the VisualElementFocusRing. - - - - - Last value for the direction defined by this class. - - - - - The focus is moving to the left. - - - - - The focus is moving to the right. - - - - - Implementation of a linear focus ring. Elements are sorted according to their focusIndex. - - - - - The focus order for elements having 0 has a focusIndex. - - - - - Constructor. - - The root of the element tree for which we want to build a focus ring. - Default ordering of the elements in the ring. - - - - Ordering of elements in the focus ring. - - - - - Order elements using a depth-first pre-order traversal of the element tree. - - - - - Order elements according to their position, first by X, then by Y. - - - - - Order elements according to their position, first by Y, then by X. - - - - - Get the direction of the focus change for the given event. For example, when the Tab key is pressed, focus should be given to the element to the right in the focus ring. - - - - - - - Get the next element in the given direction. - - - - - - - Instances of this class hold a tree of `VisualElementAsset`s. It is created from an UXML file, and each `VisualElementAsset` represents a UXML node inside this file. A `VisualTreeAsset` can be Cloned to yield a tree of `VisualElement`s. - - - - - Build a tree of VisualElements from the asset. - - A mapping of slot names to the VisualElements at their root. - Path of the target property to be bound to the cloned tree root. - - The root of the tree of VisualElements that was just cloned. - - - - - Build a tree of VisualElements from the asset. - - A mapping of slot names to the VisualElements at their root. - Path of the target property to be bound to the cloned tree root. - - The root of the tree of VisualElements that was just cloned. - - - - - Build a tree of VisualElements from the asset. - - A VisualElement that will act as the root of the cloned tree. - A mapping of slot names to the VisualElements at their root. - - - - Constructor. - - - - - Mouse wheel event. - - - - - The amount of scrolling applied with the mouse wheel. - - - - - Constructor. Use GetPooled() to get an event from a pool of reusable events. - - - - - Gets an event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained from this method should be released back to the pool using Dispose(). - - A wheel IMGUI event. - - Returns an initialized event. - - - - - Resets the event members to their initial values. - - - - - The class VFXEventAttribute handles properties transmitted to a system with a Experimental.VFX.VisualEffect.SendEvent. - - - - - Copy stored values from another event attribute. - - The source event attribute. - - - - Copy constructor. - - Source event attribute. - - - - Gets a named stored boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored boolean value (or false if Experimental.VFX.VFXEventAttribute.HasBool returns false). - - - - - Gets a named stored boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored boolean value (or false if Experimental.VFX.VFXEventAttribute.HasBool returns false). - - - - - Gets a named stored float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored float (or 0.0f if Experimental.VFX.VFXEventAttribute.HasFloat returns false). - - - - - Gets a named stored float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored float (or 0.0f if Experimental.VFX.VFXEventAttribute.HasFloat returns false). - - - - - Gets a named stored integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored integer value (or 0 if Experimental.VFX.VFXEventAttribute.HasInt returns false). - - - - - Gets a named stored integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored integer value (or 0 if Experimental.VFX.VFXEventAttribute.HasInt returns false). - - - - - Gets a named stored Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Matrix4x4 (or Matrix4x4.identity if Experimental.VFX.VFXEventAttribute.HasMatrix4x4 returns false). - - - - - Gets a named stored Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Matrix4x4 (or Matrix4x4.identity if Experimental.VFX.VFXEventAttribute.HasMatrix4x4 returns false). - - - - - Gets a named stored unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored unsigned integer value (or 0 if Experimental.VFX.VFXEventAttribute.HasUint returns false). - - - - - Gets a named stored unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored unsigned integer value (or 0 if Experimental.VFX.VFXEventAttribute.HasUint returns false). - - - - - Gets a named stored Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector2 (or Vector2.zero if Experimental.VFX.VFXEventAttribute.HasVector2 returns false). - - - - - Gets a named stored Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector2 (or Vector2.zero if Experimental.VFX.VFXEventAttribute.HasVector2 returns false). - - - - - Gets a named stored Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector3 (or Vector3.zero if Experimental.VFX.VFXEventAttribute.HasVector3 returns false). - - - - - Gets a named stored Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector3 (or Vector3.zero if Experimental.VFX.VFXEventAttribute.HasVector3 returns false). - - - - - Gets a named stored Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector4 (or Vector4.zero if Experimental.VFX.VFXEventAttribute.HasVector4 returns false). - - - - - Gets a named stored Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The stored Vector4 (or Vector4.zero if Experimental.VFX.VFXEventAttribute.HasVector4 returns false). - - - - - Returns true if event attribute stores this named boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if event attribute stores this named Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Sets a named boolean value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new boolean value. - - - - Sets a named boolean value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new boolean value. - - - - Sets a named float value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new float value. - - - - Sets a named float value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new float value. - - - - Sets a named integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new integer value. - - - - Sets a named integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new integer value. - - - - Sets a named Matrix4x4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Matrix4x4 value. - - - - Sets a named Matrix4x4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Matrix4x4 value. - - - - Sets a named unsigned integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new unsigned integer value. - - - - Sets a named unsigned integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new unsigned integer value. - - - - Sets a named Vector2 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector2 value. - - - - Sets a named Vector2 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector2 value. - - - - Sets a named Vector3 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector3 value. - - - - Sets a named Vector3 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector3 value. - - - - Sets a named Vector4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector4 value. - - - - Sets a named Vector4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector4 value. - - - - This class is a wrapper to the set of expression values. - - - - - Returns a an animation curve that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a an animation curve that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a boolean that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a boolean that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a float that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a float that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a gradient that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a gradient that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns an integer that corresponds to the bound named expression. IF this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns an integer that corresponds to the bound named expression. IF this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Matrix4 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Matrix4 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a mesh that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a mesh that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a texture that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a texture that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns an unsigned integer that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns an unsigned integer that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector2 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector2 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector3 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector3 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector4 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns a Vector4 that corresponds to the bound named expression. If this entry is not available, or the type doesn't match, an exception is thrown. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - The VFX Manager lets you set a number of properties that control VisualEffect behavior within your game. - - - - - The fixed interval in which the frame rate updates. The tick rate is in seconds. - - - - - The maximum allowed delta time for an update interval. This limit affects fixedDeltaTime and deltaTime. The tick rate is in seconds. - - - - - This abstract class provides a way to implement custom spawner block in C#. - - - - - This method is invoked when Play is triggered on parent spawner system. - - The spawner state. - The values of expression (input properties for a spawner block). - The visual effect. - - - - This method is invoked when stop is triggered on parent spawner system. - - The spawner state. - The values of expression (input properties for a spawner block). - The visual effect. - - - - This method is invoked when update is triggered on parent spawner system. - - The spawner state. - The values of expression (input properties for a spawner block). - The visual effect. - - - - The spawn state of a Spawn system. - - - - - The current delta time. - - - - - The current playing state. - - - - - The current Spawn count. - - - - - The accumulated delta time since the last Play event. - - - - - Gets the modifiable current event attribute (Read Only). - - - - - The visual effect class that references an Experimental.VFX.VisualEffectAsset instance within the Scene. - - - - - Returns the sum of all alive particles within the visual effect. - - - - - Is this visual effect culled (not visible) from any camera ? (Read Only) - - - - - The paused state of visual effect. - - - - - A multiplier applied to the delta time when updating the VisualEffect. The default value is 1.0f. - - - - - Controls whether the visual effect generates a new random number to seed the random number generator for each call to Experimental.VFX.VisualEffect.Play function. - - - - - The initial seed used used for internal random number generator. - - - - - The visual effect asset used by the visual effect. - - - - - If Experimental.VFX.VisualEffect._pause is true, the method processes the next visual effect update for exactly one frame with the current delta time. - - - - - Create a new event attribute class. - - - - - The visual effect constructor. - - - - - Gets a named exposed animation curve. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed animation curve value (or empty animation curve if Experimental.VFX.VisualEffect.HasAnimationCurve returns false). - - - - - Gets a named exposed animation curve. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed animation curve value (or empty animation curve if Experimental.VFX.VisualEffect.HasAnimationCurve returns false). - - - - - Get a named exposed boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed boolean value (or false if Experimental.VFX.VisualEffect.HasBool returns false). - - - - - Get a named exposed boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed boolean value (or false if Experimental.VFX.VisualEffect.HasBool returns false). - - - - - Gets a named exposed float (o. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed float value (or 0.0f if Experimental.VFX.VisualEffect.HasFloat returns false). - - - - - Gets a named exposed float (o. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed float value (or 0.0f if Experimental.VFX.VisualEffect.HasFloat returns false). - - - - - Gets a named exposed gradient. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed gradient value (or empty gradient if Experimental.VFX.VisualEffect.HasGradient returns false). - - - - - Gets a named exposed gradient. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed gradient value (or empty gradient if Experimental.VFX.VisualEffect.HasGradient returns false). - - - - - Get named exposed integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed integer value (or 0 if Experimental.VFX.VisualEffect.HasInt returns false). - - - - - Get named exposed integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed integer value (or 0 if Experimental.VFX.VisualEffect.HasInt returns false). - - - - - Gets named exposed Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Matrix4x4 value (or Matrix4x4.zero if Experimental.VFX.VisualEffect.HasMatrix4x4 returns false). - - - - - Gets named exposed Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Matrix4x4 value (or Matrix4x4.zero if Experimental.VFX.VisualEffect.HasMatrix4x4 returns false). - - - - - Gets named exposed mesh. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed mesh value (or null if Experimental.VFX.VisualEffect.HasMesh returns false). - - - - - Gets named exposed mesh. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed mesh value (or null if Experimental.VFX.VisualEffect.HasMesh returns false). - - - - - Gets named exposed texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed texture value (or null if Experimental.VFX.VisualEffect.HasTexture returns false). - - - - - Gets named exposed texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed texture value (or null if Experimental.VFX.VisualEffect.HasTexture returns false). - - - - - Get expected texture dimension for a named exposed texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get expected texture dimension for a named exposed texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get named exposed unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed unsigned integer value (or 0 if Experimental.VFX.VisualEffect.HasUInt returns false). - - - - - Get named exposed unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed unsigned integer value (or 0 if Experimental.VFX.VisualEffect.HasUInt returns false). - - - - - Gets named exposed Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector2 value (or Vector2.zero if Experimental.VFX.VisualEffect.HasVector2 returns false). - - - - - Gets named exposed Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector2 value (or Vector2.zero if Experimental.VFX.VisualEffect.HasVector2 returns false). - - - - - Gets named exposed Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector3 value (or Vector3.zero if Experimental.VFX.VisualEffect.HasVector3 returns false). - - - - - Gets named exposed Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector3 value (or Vector3.zero if Experimental.VFX.VisualEffect.HasVector3 returns false). - - - - - Gets named exposed Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector4 value (or Vector4.zero if Experimental.VFX.VisualEffect.HasVector4 returns false). - - - - - Gets named exposed Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - The exposed Vector4 value (or Vector4.zero if Experimental.VFX.VisualEffect.HasVector4 returns false). - - - - - Returns true if visual effect can override this named animation curve. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named animation curve. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override the boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override the boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named gradient. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named gradient. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Matrix4x4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named mesh. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named mesh. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if the visual effect can override this named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Returns true if visual effect can override this named Vector4. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Sends a stop event to all Spawn systems. If Experimental.VFX.VisualEffect._resetSeedOnPlay is true, this methods recomputes a new random seed for the random value generator and resets internal total time to zero. - - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Sends a stop event to all Spawn systems. If Experimental.VFX.VisualEffect._resetSeedOnPlay is true, this methods recomputes a new random seed for the random value generator and resets internal total time to zero. - - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Reintialize visual effect. - - - - - Sets the overridden state to false, and restores the default value that is specified in the visual effect Asset. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Sets the overridden state to false, and restores the default value that is specified in the visual effect Asset. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Send a custom named event. - - The name of the event. - The name ID of the event retrieved by Shader.PropertyToID. - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Send a custom named event. - - The name of the event. - The name ID of the event retrieved by Shader.PropertyToID. - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Send a custom named event. - - The name of the event. - The name ID of the event retrieved by Shader.PropertyToID. - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Send a custom named event. - - The name of the event. - The name ID of the event retrieved by Shader.PropertyToID. - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Sets a named animation curve value. - - The name ID of the property retrieved by Shader.PropertyToID. - The new animation curve. - The name of the property. - - - - Sets a named animation curve value. - - The name ID of the property retrieved by Shader.PropertyToID. - The new animation curve. - The name of the property. - - - - Sets the value for a named boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new boolean value. - - - - Sets the value for a named boolean. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new boolean value. - - - - Sets the value for a named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new float value. - - - - Sets the value for a named float. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new float value. - - - - Sets a named gradient value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new gradient value. - - - - Sets a named gradient value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new gradient value. - - - - Sets the value for a named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new integer value. - - - - Sets the value for a named integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new integer value. - - - - Sets a named Matrix4x4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Matrix4x4 value. - - - - Sets a named Matrix4x4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Matrix4x4 value. - - - - Sets a named mesh value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new mesh value. - - - - Sets a named mesh value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new mesh value. - - - - Sets a named texture value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new texture value. - - - - Sets a named texture value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new texture value. - - - - Sets the value for a named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new unsigned integer value. - - - - Sets the value for a named unsigned integer. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new unsigned integer value. - - - - Sets the value for a named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector2 value. - - - - Sets the value for a named Vector2. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector2 value. - - - - Sets the value for a named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector3 value. - - - - Sets the value for a named Vector3. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector3 value. - - - - Sets a named Vector4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector4 value. - - - - Sets a named Vector4 value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The new Vector4 value. - - - - Send a stop event to all Spawn systems. - - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - Send a stop event to all Spawn systems. - - Can be null or eventAttribute instantiated with Experimental.VFX.VisualEffect.CreateVFXEventAttribute. - - - - This class contains a graph of the elements needed to describe a visual effect. These include: the visual effects system, generated shaders, and compiled data. - - - - - The visual effect Asset constructor. - - - - - An implementation of IPlayable that controls playback of a VideoClip. - - - - - Creates a VideoClipPlayable in the PlayableGraph. - - The PlayableGraph object that will own the VideoClipPlayable. - Indicates if VideoClip loops when it reaches the end. - VideoClip used to produce textures in the PlayableGraph. - - A VideoClipPlayable linked to the PlayableGraph. - - - - - Extension methods for the Video.VideoPlayer class. - - - - - Return the Experimental.Audio.AudioSampleProvider for the specified track, used to receive audio samples during playback. - - The "this" pointer for the extension method. - The audio track index for which the sample provider is queried. - - The sample provider for the specified track. - - - - - Structure describing a bounded plane representing a real-world surface. - - - - - The alignment of the plane, e.g., horizontal or vertical. - - - - - Center point of the plane in device space. - - - - - Outputs four points, in device space, representing the four corners of the plane. The corners are in clockwise order. - - The vertex of the first corner. - The vertex of the second corner. - The vertex of the third corner. - The vertex of the fourth corner. - - - - Current height of the plane. - - - - - A session-unique identifier for the plane. - - - - - Normal vector of the plane in device space. - - - - - Returns the infinite Plane associated with this BoundedPlane. - - - - - Pose of the plane in device space. - - - - - Current size of the plane. - - - - - A session-unique identifier for the BoundedPlane that subsumed this plane. - - - - - Try to retrieve a list of positions in device space describing current plane boundary. - - A list of vertices representing the boundary. - - True if the plane exists (i.e., is still being tracked), otherwise false. - - - - - Current width of the plane. - - - - - Structure containing data passed during Frame Received Event. - - - - - Reference to the XRCameraSubsystem associated with this event. - - - - - The state of a tracked mesh since the last query. - - - - - The mesh has been added since the last call to XRMeshSubsystem.TryGetMeshInfos. - - - - - The mesh has been removed since the last call to XRMeshSubsystem.TryGetMeshInfos. - - - - - The mesh has not changed since the last call to XRMeshSubsystem.TryGetMeshInfos. - - - - - The mesh has been updated since the last call to XRMeshSubsystem.TryGetMeshInfos. - - - - - Contains event information related to a generated mesh. - - - - - The MeshVertexAttributes that were written to the MeshGenerationResult.Mesh. - - - - - If the generation was successful, data has been written to this Mesh. - - - - - If the generation was successful, physics data has been written to this MeshCollider. - - - - - The TrackableId of the tracked mesh that was generated. - - - - - The MeshGenerationStatus of the mesh generation task. - - - - - The status of a XRMeshSubsystem.GenerateMeshAsync. - - - - - The mesh generation was canceled. - - - - - The XRMeshSubsystem was already generating the requested mesh. - - - - - The mesh generation failed because the mesh does not exist. - - - - - The mesh generation was successful. - - - - - The mesh generation failed for unknown reasons. - - - - - Contains state information related to a tracked mesh. - - - - - The change state (e.g., Added, Removed) of the tracked mesh. - - - - - The TrackableId of the tracked mesh. - - - - - A hint that can be used to determine when this mesh should be processed. - - - - - A set of vertex attributes. - - - - - Vertex normals - - - - - No vertex attributes - - - - - Vertex normals - - - - - Vertex tangents - - - - - Vertex UVs - - - - - Contains data supplied to a XRPlaneSubsystem.PlaneAdded event. - - - - - The BoundedPlane that was added. - - - - - A reference to the PlaneSubsystem object from which the event originated. - - - - - Describes current plane alignment in mixed reality space. - - - - - Plane has horizontal alignment. - - - - - Plane is not alligned along cardinal (X, Y or Z) axis. - - - - - Plane has vertical alignment. - - - - - Contains data supplied to a XRPlaneSubsystem.PlaneRemoved event. - - - - - The BoundedPlane that was removed. - - - - - A reference to the XRPlaneSubsystem object from which the event originated. - - - - - Contains data supplied to a XRPlaneSubsystem.PlaneUpdated event. - - - - - The BoundedPlane that was updated. - - - - - A reference to the XRPlaneSubsystem object from which the event originated. - - - - - Contains data supplied to a XRDepth.PointCloudUpdated event. - - - - - A reference to the XRDepthSubsystem object from which the event originated. - - - - - Describes the transform data of a real-world point. - - - - - ID for the reference point that is unique across the session. - - - - - The pose (position and rotation) of the reference point. Respond to changes in this pose to correct for changes in the device's understanding of where this point is in the real world. - - - - - The TrackingState of the reference point. - - - - - Data to be passed to the user when the device corrects its understanding of the world enough that the ReferencePoint's position or rotation has changed. - - - - - The previous Pose of the ReferencePoint, prior to this event. - - - - - The previous TrackingState of the ReferencePoint, prior to this event. - - - - - The reference point that has the value of its position, rotation, or both changed enough through the device correcting its understanding of where this point should be located in device space. - - - - - Structure defining Tracking State Changed event arguments passed when tracking state changes. - - - - - New Tracking State. - - - - - Reference to the XRSessionSubsystem object associated with the event. - - - - - A session-unique identifier for trackables in the environment, e.g., planes and feature points. - - - - - Represents an invalid id. - - - - - Generates a nicely formatted version of the id. - - - A string unique to this id - - - - - A trackable is feature in the physical environment that a device is able to track, such as a plane. - - - - - All trackables (planes and point cloud) - - - - - A feature point. - - - - - No trackable. - - - - - An estimated plane. - - - - - Any of the plane types. - - - - - Within the BoundedPlane.Size of a BoundedPlane - - - - - The infinite plane of a BoundedPlane - - - - - The boundary of a BoundedPlane - - - - - Current tracking state of the device. - - - - - Tracking is currently working. - - - - - Tracking is not available. - - - - - Tracking state is unknown. - - - - - Provides access to a device's camera. - - - - - Set current Camera component within the app to be used by this XRCameraInstance. - - - - - Event raised when a new camera frame is received. - - - - - - Fills the provided texturesOut with the texture(s) associated with the XRCameraSubsystem. - - A List of Texture2D to be filled. Passing null will throw an ArgumentNullException. - - - - The frame during which the camera subsystem was last successfully updated. - - - - - True if the XRCameraSubsystem should try to provide light estimation. - - - - - Set current Material to be used while rendering to the render target. - - - - - Provides brightness for the whole image as an average of all pixels' brightness. - - An estimated average brightness for the environment. - - Returns true if average brigthness was provided. - - - - - Provides color temperature for the whole image as an average of all pixels' color temperature. - - An estimated color temperature. - - Return true if succesful. - - - - - Provides display matrix defining how texture is being rendered on the screen. - - - - - - Provides projection matrix used by camera subsystem. - - - - - - Provides shader name used by Camera subsystem to render texture. - - - - - - Provides timestamp. - - - - - - Class providing information about XRCameraSubsystem registration. - - - - - Specifies if current subsystem is allowed to provide average brightness. - - - - - Specifies if current subsystem is allowed to provide average camera temperature. - - - - - Specifies if current subsystem is allowed to provide display matrix. - - - - - Specifies if current subsystem is allowed to provide projection matrix. - - - - - Specifies if current subsystem is allowed to provide timestamp. - - - - - Provides access to depth data of the physical environment, such as a point cloud. - - - - - Retrieves the confidence values for each point in the point cloud. - - A list of floats containing all confidence values for the point cloud. - - - - Retrieves the point cloud points. - - A list of Vector3s containing all points in the point cloud. - - - - The frame during which the point cloud was last updated. - - - - - Raised once during each frame in which the point cloud is updated. - - - - - - Class providing information about XRDepthSubsystem registration. - - - - - When true, XRDepthSubsystem will provide list of feature points detected so far. - - - - - An XRDisplaySubsystem controls rendering to a head tracked display. - - - - - Class providing information about XRDisplaySubsystem registration. - - - - - XRInputSubsystem -Instance is used to enable and disable the inputs coming from a specific plugin. - - - - - Information about an Input subsystem. - - - - - When true, will suppress legacy support for Daydream, Oculus, OpenVR, and Windows MR built directly into the Unity runtime from generating input. This is useful when adding an XRInputSubsystem that supports these devices. - - - - - Allows external systems to provide dynamic meshes to Unity. - - - - - Request that the mesh with TrackableId meshId gets generated. onMeshGenerationComplete is called when generation is complete. - - The TrackableId of the mesh you wish to generate. - The Mesh to write the results into. - (Optional) The MeshCollider to populate with physics data. This may be null. - The vertex attributes you'd like to use. - The delegate to invoke when the generation completes. - - - - Get information about every mesh tracked by the system. - - A List of MeshInfos to be filled. Passing null will throw an ArgumentNullException. - - True if the List was populated. - - - - - Information about an XRMeshSubsystem. - - - - - Provides methods, events, and properties that provides information about planes detected in the environment. - - - - - Get all the BoundedPlanes currently tracked by the system. - - A list of BoundedPlanes containing all planes currently tracked by the system. - - - - The frame during which the planes were last updated. - - - - - Raised for each BoundedPlane that has been added in the current frame. - - - - - - Raised for each BoundedPlane that has been removed in the current frame. - - - - - - Raised for each plane that has been updated in the current frame. - - - - - - Get a BoundedPlane by TrackableId - - The session-unique TrackableId of the plane to get. - The BoundedPlane with the supplied planeId - - True if the BoundedPlane with planeId exists, false otherwise. - - - - - Try to retrieve a list of positions in device space describing the current plane boundary. - - The session-unique TrackableId of the plane. - A list of vertices representing the plane's boundary. - - True if the plane exists (i.e., is still being tracked), otherwise false. - - - - - Class providing information about XRPlaneSubsystem registration. - - - - - Structure describing the result of a XRRaycastSubsystem.Raycast hit. - - - - - The distance, in meters, from the screen to the hit's XRRaycastSubsystemHit.Position. - - - - - The TrackableType(s) that were hit. - - - - - The position and rotation of the hit result in device space where the ray hit the trackable. - - - - - The TrackableId of the trackable that was hit by the raycast. - - - - - Provides methods and properties that allow for querying portions of the physical environment that are near a provided specified ray. These trackables include planes and depth data. - - - - - Casts a ray from a screen point against selected trackables (e.g., planes and feature points). - - The screen point from which to cast. - The resulting list of XRRaycastHit. - An optional mask of TrackableType to raycast against. - - - - Casts a ray using ray against selected trackables (e.g., planes and feature points). - - The Ray to use. - The XRDepthSubsystem to raycast against. May be null. - The XRPlaneSubsystem to raycast against. May be null. - The resulting list of XRRaycastHit. - An optional mask of TrackableType to raycast against. - When raycasting against feature points, cast a cone with this angle. - - - - Class providing information about XRRaycastSubsystem registration. - - - - - Provides methods and properties that allow for querying, creating, and removing of reference points. These reference points are cues to the XRSessionSubsystem that indicate areas of interest in the environment which helps assure that tracking of these points remains accurate. - - - - - Retrieves all ReferencePoints added by calls to XRReferencePointSubsystem.TryAddReferencePoint. - - A list of ReferencePoints containing all reference points. - - - - The frame during which the reference points were last updated. - - - - - Raised each frame for each ReferencePoint that had the values of its position, rotation, or both changed enough by the device correcting its understanding of where the point should be located in Unity space. - - - - - - Attempt to add a ReferencePoint that gets tracked by the device. - - Current position, in device space, of a point you want the device to track. - Current rotation, in device space, of a point you want the device to track. - If this method returns true, this is filled out with the ID (unique to the session) of the point. - - If the ReferencePoint was added successfully, this method returns true. Otherwise, it returns false. - - - - - Attempt to add a ReferencePoint that gets tracked by the device. - - Current pose, in device space, of a point you want the device to track. - If this method returns true, this is filled out with the ID (unique to the session) of the point. - - If the ReferencePoint was added successfully, this method returns true. Otherwise, it returns false. - - - - - Attempt to retrieve a ReferencePoint. - - The ID of the ReferencePoint that TryAddReferencePoint filled out when you added this point. - The ReferencePoint to be filled out that matches the ID passed in. - - If the ReferencePoint was found and filled out successfully, this method returns true. Otherwise, it return false. - - - - - Attempt to remove a ReferencePoint getting tracked by the device. - - ID of the ReferencePoint you wish to remove so the device no longer tries to track it. - - If the ReferencePoint was removed successfully, this method returns true. Otherwise, it returns false. - - - - - Class providing information about XRReferencePointSubsystem registration. - - - - - A collection of methods and properties used to interact with and configure an XR session. - - - - - The frame during which the tracking state was last updated. - - - - - Get current tracking status of the device. - - - - - Raised when the TrackingState changes. - - - - - - Class providing information about XRSessionSubsystem registration. - - - - - Object that is used to resolve references to an ExposedReference field. - - - - - Creates a type whos value is resolvable at runtime. - - - - - The default value, in case the value cannot be resolved. - - - - - The name of the ExposedReference. - - - - - Gets the value of the reference by resolving it given the ExposedPropertyResolver context object. - - The ExposedPropertyResolver context object. - - The resolved reference value. - - - - - Spectrum analysis windowing types. - - - - - W[n] = 0.42 - (0.5 * COS(nN) ) + (0.08 * COS(2.0 * nN) ). - - - - - W[n] = 0.35875 - (0.48829 * COS(1.0 * nN)) + (0.14128 * COS(2.0 * nN)) - (0.01168 * COS(3.0 * n/N)). - - - - - W[n] = 0.54 - (0.46 * COS(n/N) ). - - - - - W[n] = 0.5 * (1.0 - COS(n/N) ). - - - - - W[n] = 1.0. - - - - - W[n] = TRI(2n/N). - - - - - Filtering mode for textures. Corresponds to the settings in a. - - - - - Bilinear filtering - texture samples are averaged. - - - - - Point filtering - texture pixels become blocky up close. - - - - - Trilinear filtering - texture samples are averaged and also blended between mipmap levels. - - - - - Enumeration of all the muscles in a finger. - - - - - The distal close-open muscle. - - - - - The intermediate close-open muscle. - - - - - The last value of the FingerDof enum. - - - - - The proximal down-up muscle. - - - - - The proximal in-out muscle. - - - - - The Fixed joint groups together 2 rigidbodies, making them stick together in their bound position. - - - - - Connects two Rigidbody2D together at their anchor points using a configurable spring. - - - - - The amount by which the spring force is reduced in proportion to the movement speed. - - - - - The frequency at which the spring oscillates around the distance between the objects. - - - - - The angle referenced between the two bodies used as the constraint for the joint. - - - - - A flare asset. Read more about flares in the. - - - - - FlareLayer component. - - - - - Used by GUIUtility.GetControlID to inform the IMGUI system if a given control can get keyboard focus. This allows the IMGUI system to give focus appropriately when a user presses tab for cycling between controls. - - - - - This control can receive keyboard focus. - - - - - This control can not receive keyboard focus. - - - - - Fog mode to use. - - - - - Exponential fog. - - - - - Exponential squared fog (default). - - - - - Linear fog. - - - - - Script interface for. - - - - - The ascent of the font. - - - - - Access an array of all characters contained in the font texture. - - - - - Is the font a dynamic font. - - - - - The default size of the font. - - - - - The line height of the font. - - - - - The material used for the font display. - - - - - Set a function to be called when the dynamic font texture is rebuilt. - - - - - - Creates a Font object which lets you render a font installed on the user machine. - - The name of the OS font to use for this font object. - The default character size of the generated font. - Am array of names of OS fonts to use for this font object. When rendering characters using this font object, the first font which is installed on the machine, which contains the requested character will be used. - - The generate Font object. - - - - - Creates a Font object which lets you render a font installed on the user machine. - - The name of the OS font to use for this font object. - The default character size of the generated font. - Am array of names of OS fonts to use for this font object. When rendering characters using this font object, the first font which is installed on the machine, which contains the requested character will be used. - - The generate Font object. - - - - - Create a new Font. - - The name of the created Font object. - - - - Create a new Font. - - The name of the created Font object. - - - - Get rendering info for a specific character. - - The character you need rendering information for. - Returns the CharacterInfo struct with the rendering information for the character (if available). - The size of the character (default value of zero will use font default size). - The style of the character. - - - - Get rendering info for a specific character. - - The character you need rendering information for. - Returns the CharacterInfo struct with the rendering information for the character (if available). - The size of the character (default value of zero will use font default size). - The style of the character. - - - - Get rendering info for a specific character. - - The character you need rendering information for. - Returns the CharacterInfo struct with the rendering information for the character (if available). - The size of the character (default value of zero will use font default size). - The style of the character. - - - - Returns the maximum number of verts that the text generator may return for a given string. - - Input string. - - - - Get names of fonts installed on the machine. - - - An array of the names of all fonts installed on the machine. - - - - - Does this font have a specific character? - - The character to check for. - - Whether or not the font has the character specified. - - - - - Request characters to be added to the font texture (dynamic fonts only). - - The characters which are needed to be in the font texture. - The size of the requested characters (the default value of zero will use the font's default size). - The style of the requested characters. - - - - Font Style applied to GUI Texts, Text Meshes or GUIStyles. - - - - - Bold style applied to your texts. - - - - - Bold and Italic styles applied to your texts. - - - - - Italic style applied to your texts. - - - - - No special style is applied. - - - - - Use ForceMode to specify how to apply a force using Rigidbody.AddForce. - - - - - Add a continuous acceleration to the rigidbody, ignoring its mass. - - - - - Add a continuous force to the rigidbody, using its mass. - - - - - Add an instant force impulse to the rigidbody, using its mass. - - - - - Add an instant velocity change to the rigidbody, ignoring its mass. - - - - - Option for how to apply a force using Rigidbody2D.AddForce. - - - - - Add a force to the Rigidbody2D, using its mass. - - - - - Add an instant force impulse to the rigidbody2D, using its mass. - - - - - Struct containing basic FrameTimings and accompanying relevant data. - - - - - The CPU time for a given frame, in ms. - - - - - This is the CPU clock time at the point GPU finished rendering the frame and interrupted the CPU. - - - - - This is the CPU clock time at the point Present was called for the current frame. - - - - - The GPU time for a given frame, in ms. - - - - - This was the height scale factor of the Dynamic Resolution system(if used) for the given frame and the linked frame timings. - - - - - This was the vsync mode for the given frame and the linked frame timings. - - - - - This was the width scale factor of the Dynamic Resolution system(if used) for the given frame and the linked frame timings. - - - - - The FrameTimingManager allows the user to capture and access FrameTiming data for multple frames. - - - - - This function triggers the FrameTimingManager to capture a snapshot of FrameTiming's data, that can then be accessed by the user. - - - - - This returns the frequency of CPU timer on the current platform, used to interpret timing results. If the platform does not support returning this value it will return 0. - - - CPU timer frequency for current platform. - - - - - This returns the frequency of GPU timer on the current platform, used to interpret timing results. If the platform does not support returning this value it will return 0. - - - GPU timer frequency for current platform. - - - - - Allows the user to access the currently captured FrameTimings. - - User supplies a desired number of frames they would like FrameTimings for. This should be equal to or less than the maximum FrameTimings the platform can capture. - An array of FrameTiming structs that is passed in by the user and will be filled with data as requested. It is the users job to make sure the array that is passed is large enough to hold the requested number of FrameTimings. - - Returns the number of FrameTimings it actually was able to get. This will always be equal to or less than the requested numFrames depending on availability of captured FrameTimings. - - - - - This returns the number of vsyncs per second on the current platform, used to interpret timing results. If the platform does not support returning this value it will return 0. - - - Number of vsyncs per second of the current platform. - - - - - Applies both force and torque to reduce both the linear and angular velocities to zero. - - - - - The maximum force that can be generated when trying to maintain the friction joint constraint. - - - - - The maximum torque that can be generated when trying to maintain the friction joint constraint. - - - - - This struct contains the view space coordinates of the near projection plane. - - - - - Position in view space of the bottom side of the near projection plane. - - - - - Position in view space of the left side of the near projection plane. - - - - - Position in view space of the right side of the near projection plane. - - - - - Position in view space of the top side of the near projection plane. - - - - - Z distance from the origin of view space to the far projection plane. - - - - - Z distance from the origin of view space to the near projection plane. - - - - - Platform agnostic fullscreen mode. Not all platforms support all modes. - - - - - Exclusive Mode. - - - - - Fullscreen window. - - - - - Maximized window. - - - - - Windowed. - - - - - Describes options for displaying movie playback controls. - - - - - Do not display any controls, but cancel movie playback if input occurs. - - - - - Display the standard controls for controlling movie playback. - - - - - Do not display any controls. - - - - - Display minimal set of controls controlling movie playback. - - - - - Describes scaling modes for displaying movies. - - - - - Scale the movie until the movie fills the entire screen. - - - - - Scale the movie until one dimension fits on the screen exactly. - - - - - Scale the movie until both dimensions fit the screen exactly. - - - - - Do not scale the movie. - - - - - Base class for all entities in Unity Scenes. - - - - - Defines whether the GameObject is active in the Scene. - - - - - The local active state of this GameObject. (Read Only) - - - - - The Animation attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The AudioSource attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Camera attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Collider attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Collider2D component attached to this object. - - - - - The ConstantForce attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The GUIText attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The GUITexture attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The HingeJoint attached to this GameObject (Read Only). (Null if there is none attached). - - - - - Editor only API that specifies if a game object is static. - - - - - The layer the game object is in. - - - - - The Light attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The NetworkView attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The ParticleSystem attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Renderer attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Rigidbody attached to this GameObject (Read Only). (Null if there is none attached). - - - - - The Rigidbody2D component attached to this GameObject. (Read Only) - - - - - Scene that the GameObject is part of. - - - - - The tag of this game object. - - - - - The Transform attached to this GameObject. - - - - - Adds a component class named className to the game object. - - - - - - Adds a component class of type componentType to the game object. C# Users can use a generic version. - - - - - - Generic version. See the page for more details. - - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - - - - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - - - - - - - Calls the method named methodName on every MonoBehaviour in this game object or any of its children. - - - - - - - - - - - - - - - Is this game object tagged with tag ? - - The tag to compare. - - - - Creates a game object with a primitive mesh renderer and appropriate collider. - - The type of primitive object to create. - - - - Creates a new game object, named name. - - The name that the GameObject is created with. - A list of Components to add to the GameObject on creation. - - - - Creates a new game object, named name. - - The name that the GameObject is created with. - A list of Components to add to the GameObject on creation. - - - - Creates a new game object, named name. - - The name that the GameObject is created with. - A list of Components to add to the GameObject on creation. - - - - Finds a GameObject by name and returns it. - - - - - - Returns a list of active GameObjects tagged tag. Returns empty array if no GameObject was found. - - The name of the tag to search GameObjects for. - - - - Returns one active GameObject tagged tag. Returns null if no GameObject was found. - - The tag to search for. - - - - Returns the component of Type type if the game object has one attached, null if it doesn't. - - The type of Component to retrieve. - - - - Generic version. See the page for more details. - - - - - Returns the component with name type if the game object has one attached, null if it doesn't. - - The type of Component to retrieve. - - - - Returns the component of Type type in the GameObject or any of its children using depth first search. - - The type of Component to retrieve. - - - A component of the matching type, if found. - - - - - Returns the component of Type type in the GameObject or any of its children using depth first search. - - The type of Component to retrieve. - - - A component of the matching type, if found. - - - - - Generic version. See the page for more details. - - - - A component of the matching type, if found. - - - - - Generic version. See the page for more details. - - - - A component of the matching type, if found. - - - - - Returns the component of Type type in the GameObject or any of its parents. - - Type of component to find. - - - - Returns the component <T> in the GameObject or any of its parents. - - - - - Returns all components of Type type in the GameObject. - - The type of Component to retrieve. - - - - Generic version. See the page for more details. - - - - - Returns all components of Type type in the GameObject into List results. Note that results is of type Component, not the type of the component retrieved. - - The type of Component to retrieve. - List to receive the results. - - - - Returns all components of Type type in the GameObject into List results. - - List of type T to receive the results. - - - - Returns all components of Type type in the GameObject or any of its children. - - The type of Component to retrieve. - Should Components on inactive GameObjects be included in the found set? - - - - Returns all components of Type type in the GameObject or any of its children. - - The type of Component to retrieve. - Should Components on inactive GameObjects be included in the found set? - - - - Generic version. See the page for more details. - - Should inactive GameObjects be included in the found set? - - A list of all found components matching the specified type. - - - - - Generic version. See the page for more details. - - Should inactive GameObjects be included in the found set? - - A list of all found components matching the specified type. - - - - - Return all found Components into List results. - - List to receive found Components. - Should inactive GameObjects be included in the found set? - - - - Return all found Components into List results. - - List to receive found Components. - Should inactive GameObjects be included in the found set? - - - - Returns all components of Type type in the GameObject or any of its parents. - - The type of Component to retrieve. - Should inactive Components be included in the found set? - - - - Generic version. See the page for more details. - - Should inactive Components be included in the found set? - - - - Generic version. See the page for more details. - - Should inactive Components be included in the found set? - - - - Find Components in GameObject or parents, and return them in List results. - - Should inactive Components be included in the found set? - List holding the found Components. - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - - - - - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - Calls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour. - - The name of the method to call. - An optional parameter value to pass to the called method. - Should an error be raised if the method doesn't exist on the target object? - - - - - - - - - - - Activates/Deactivates the GameObject. - - Activate or deactivate the object. - - - - Utility class for common geometric functions. - - - - - Calculates a bounding box given an array of positions and a transformation matrix. - - - - - - - Calculates frustum planes. - - The camera with the view frustum that you want to calculate planes from. - - The planes that form the camera's view frustum. - - - - - Calculates frustum planes. - - The camera with the view frustum that you want to calculate planes from. - An array of 6 Planes that will be overwritten with the calculated plane values. - - - - Calculates frustum planes. - - A matrix that transforms from world space to projection space, from which the planes will be calculated. - - The planes that enclose the projection space described by the matrix. - - - - - Calculates frustum planes. - - A matrix that transforms from world space to projection space, from which the planes will be calculated. - An array of 6 Planes that will be overwritten with the calculated plane values. - - - - Returns true if bounds are inside the plane array. - - - - - - - Creates a plane from a given list of vertices. Works for concave polygons and polygons that have multiple aligned vertices. - - An array of vertex positions that define the shape of a polygon. - If successful, a valid plane that goes through all the vertices. - - Returns true on success, false if the algorithm failed to create a plane from the given vertices. - - - - - Gizmos are used to give visual debugging or setup aids in the Scene view. - - - - - Sets the color for the gizmos that will be drawn next. - - - - - Set the gizmo matrix used to draw all gizmos. - - - - - Draw a solid box with center and size. - - - - - - - Draw a camera frustum using the currently set Gizmos.matrix for it's location and rotation. - - The apex of the truncated pyramid. - Vertical field of view (ie, the angle at the apex in degrees). - Distance of the frustum's far plane. - Distance of the frustum's near plane. - Width/height ratio. - - - - Draw a texture in the Scene. - - The size and position of the texture on the "screen" defined by the XY plane. - The texture to be displayed. - An optional material to apply the texture. - Inset from the rectangle's left edge. - Inset from the rectangle's right edge. - Inset from the rectangle's top edge. - Inset from the rectangle's bottom edge. - - - - Draw a texture in the Scene. - - The size and position of the texture on the "screen" defined by the XY plane. - The texture to be displayed. - An optional material to apply the texture. - Inset from the rectangle's left edge. - Inset from the rectangle's right edge. - Inset from the rectangle's top edge. - Inset from the rectangle's bottom edge. - - - - Draw a texture in the Scene. - - The size and position of the texture on the "screen" defined by the XY plane. - The texture to be displayed. - An optional material to apply the texture. - Inset from the rectangle's left edge. - Inset from the rectangle's right edge. - Inset from the rectangle's top edge. - Inset from the rectangle's bottom edge. - - - - Draw a texture in the Scene. - - The size and position of the texture on the "screen" defined by the XY plane. - The texture to be displayed. - An optional material to apply the texture. - Inset from the rectangle's left edge. - Inset from the rectangle's right edge. - Inset from the rectangle's top edge. - Inset from the rectangle's bottom edge. - - - - Draw an icon at a position in the Scene view. - - - - - - - - Draw an icon at a position in the Scene view. - - - - - - - - Draws a line starting at from towards to. - - - - - - - Draws a mesh. - - Mesh to draw as a gizmo. - Position (default is zero). - Rotation (default is no rotation). - Scale (default is no scale). - Submesh to draw (default is -1, which draws whole mesh). - - - - Draws a mesh. - - Mesh to draw as a gizmo. - Position (default is zero). - Rotation (default is no rotation). - Scale (default is no scale). - Submesh to draw (default is -1, which draws whole mesh). - - - - Draws a ray starting at from to from + direction. - - - - - - - - Draws a ray starting at from to from + direction. - - - - - - - - Draws a solid sphere with center and radius. - - - - - - - Draw a wireframe box with center and size. - - - - - - - Draws a wireframe mesh. - - Mesh to draw as a gizmo. - Position (default is zero). - Rotation (default is no rotation). - Scale (default is no scale). - Submesh to draw (default is -1, which draws whole mesh). - - - - Draws a wireframe mesh. - - Mesh to draw as a gizmo. - Position (default is zero). - Rotation (default is no rotation). - Scale (default is no scale). - Submesh to draw (default is -1, which draws whole mesh). - - - - Draws a wireframe sphere with center and radius. - - - - - - - Low-level graphics library. - - - - - Select whether to invert the backface culling (true) or not (false). - - - - - The current modelview matrix. - - - - - Controls whether Linear-to-sRGB color conversion is performed while rendering. - - - - - Should rendering be done in wireframe? - - - - - Begin drawing 3D primitives. - - Primitives to draw: can be TRIANGLES, TRIANGLE_STRIP, QUADS or LINES. - - - - Clear the current render buffer. - - Should the depth buffer be cleared? - Should the color buffer be cleared? - The color to clear with, used only if clearColor is true. - The depth to clear Z buffer with, used only if clearDepth is true. - - - - Clear the current render buffer with camera's skybox. - - Should the depth buffer be cleared? - Camera to get projection parameters and skybox from. - - - - Sets current vertex color. - - - - - - End drawing 3D primitives. - - - - - Sends queued-up commands in the driver's command buffer to the GPU. - - - - - Compute GPU projection matrix from camera's projection matrix. - - Source projection matrix. - Will this projection be used for rendering into a RenderTexture? - - Adjusted projection matrix for the current graphics API. - - - - - Invalidate the internally cached render state. - - - - - Send a user-defined event to a native code plugin. - - User defined id to send to the callback. - Native code callback to queue for Unity's renderer to invoke. - - - - Send a user-defined event to a native code plugin. - - User defined id to send to the callback. - Native code callback to queue for Unity's renderer to invoke. - - - - Mode for Begin: draw line strip. - - - - - Mode for Begin: draw lines. - - - - - Load the identity matrix to the current modelview matrix. - - - - - Helper function to set up an ortho perspective transform. - - - - - Setup a matrix for pixel-correct rendering. - - - - - Setup a matrix for pixel-correct rendering. - - - - - - - - - Load an arbitrary matrix to the current projection matrix. - - - - - - Sets current texture coordinate (v.x,v.y,v.z) to the actual texture unit. - - - - - - - Sets current texture coordinate (x,y) for the actual texture unit. - - - - - - - - Sets current texture coordinate (x,y,z) to the actual texture unit. - - - - - - - - - Sets the current modelview matrix to the one specified. - - - - - - Restores both projection and modelview matrices off the top of the matrix stack. - - - - - Saves both projection and modelview matrices to the matrix stack. - - - - - Mode for Begin: draw quads. - - - - - Resolves the render target for subsequent operations sampling from it. - - - - - Sets current texture coordinate (v.x,v.y,v.z) for all texture units. - - - - - - Sets current texture coordinate (x,y) for all texture units. - - - - - - - Sets current texture coordinate (x,y,z) for all texture units. - - - - - - - - Mode for Begin: draw triangle strip. - - - - - Mode for Begin: draw triangles. - - - - - Submit a vertex. - - - - - - Submit a vertex. - - - - - - - - Set the rendering viewport. - - - - - - Gradient used for animating colors. - - - - - All alpha keys defined in the gradient. - - - - - All color keys defined in the gradient. - - - - - Control how the gradient is evaluated. - - - - - Create a new Gradient object. - - - - - Calculate color at a given time. - - Time of the key (0 - 1). - - - - Setup Gradient with an array of color keys and alpha keys. - - Color keys of the gradient (maximum 8 color keys). - Alpha keys of the gradient (maximum 8 alpha keys). - - - - Alpha key used by Gradient. - - - - - Alpha channel of key. - - - - - Time of the key (0 - 1). - - - - - Gradient alpha key. - - Alpha of key (0 - 1). - Time of the key (0 - 1). - - - - Color key used by Gradient. - - - - - Color of key. - - - - - Time of the key (0 - 1). - - - - - Gradient color key. - - Color of key. - Time of the key (0 - 1). - - - - - Select how gradients will be evaluated. - - - - - Find the 2 keys adjacent to the requested evaluation time, and linearly interpolate between them to obtain a blended color. - - - - - Return a fixed color, by finding the first key whose time value is greater than the requested evaluation time. - - - - - Attribute used to configure the usage of the GradientField and Gradient Editor for a gradient. - - - - - If set to true the Gradient uses HDR colors. - - - - - Attribute for Gradient fields. Used for configuring the GUI for the Gradient Editor. - - Set to true if the colors should be treated as HDR colors (default value: false). - - - - Raw interface to Unity's drawing functions. - - - - - Currently active color buffer (Read Only). - - - - - Returns the currently active color gamut. - - - - - Currently active depth/stencil buffer (Read Only). - - - - - Graphics Tier classification for current device. -Changing this value affects any subsequently loaded shaders. Initially this value is auto-detected from the hardware in use. - - - - - Copies source texture into destination render texture with a shader. - - Source texture. - The destination RenderTexture. Set this to null to blit directly to screen. See description for more information. - Material to use. Material's shader could do some post-processing effect, for example. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - Offset applied to the source texture coordinate. - Scale applied to the source texture coordinate. - - - - Copies source texture into destination render texture with a shader. - - Source texture. - The destination RenderTexture. Set this to null to blit directly to screen. See description for more information. - Material to use. Material's shader could do some post-processing effect, for example. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - Offset applied to the source texture coordinate. - Scale applied to the source texture coordinate. - - - - Copies source texture into destination render texture with a shader. - - Source texture. - The destination RenderTexture. Set this to null to blit directly to screen. See description for more information. - Material to use. Material's shader could do some post-processing effect, for example. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - Offset applied to the source texture coordinate. - Scale applied to the source texture coordinate. - - - - Copies source texture into destination render texture with a shader. - - Source texture. - The destination RenderTexture. Set this to null to blit directly to screen. See description for more information. - Material to use. Material's shader could do some post-processing effect, for example. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - Offset applied to the source texture coordinate. - Scale applied to the source texture coordinate. - - - - Copies source texture into destination, for multi-tap shader. - - Source texture. - Destination RenderTexture, or null to blit directly to screen. - Material to use for copying. Material's shader should do some post-processing effect. - Variable number of filtering offsets. Offsets are given in pixels. - - - - Clear random write targets for level pixel shaders. - - - - - This function provides an efficient way to convert between textures of different formats and dimensions. -The destination texture format should be uncompressed and correspond to a supported RenderTextureFormat. - - Source texture. - Destination texture. - Source element (e.g. cubemap face). Set this to 0 for 2d source textures. - Destination element (e.g. cubemap face or texture array element). - - True if the call succeeded. - - - - - This function provides an efficient way to convert between textures of different formats and dimensions. -The destination texture format should be uncompressed and correspond to a supported RenderTextureFormat. - - Source texture. - Destination texture. - Source element (e.g. cubemap face). Set this to 0 for 2d source textures. - Destination element (e.g. cubemap face or texture array element). - - True if the call succeeded. - - - - - Copy texture contents. - - Source texture. - Destination texture. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Copy texture contents. - - Source texture. - Destination texture. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Copy texture contents. - - Source texture. - Destination texture. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Creates a GPUFence which will be passed after the last Blit, Clear, Draw, Dispatch or Texture Copy command prior to this call has been completed on the GPU. - - On some platforms there is a significant gap between the vertex processing completing and the pixel processing begining for a given draw call. This parameter allows for the fence to be passed after either the vertex or pixel processing for the proceeding draw has completed. If a compute shader dispatch was the last task submitted then this parameter is ignored. - - Returns a new GPUFence. - - - - - Draw a mesh. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). - Material to use. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be rendered in the given camera only. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - Should the mesh cast shadows? - Should the mesh receive shadows? - Should the mesh use light probes? - If used, the mesh will use this Transform's position to sample light probes and find the matching reflection probe. - LightProbeUsage for the mesh. - - - - - Draw a mesh. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). - Material to use. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be rendered in the given camera only. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - Should the mesh cast shadows? - Should the mesh receive shadows? - Should the mesh use light probes? - If used, the mesh will use this Transform's position to sample light probes and find the matching reflection probe. - LightProbeUsage for the mesh. - - - - - Draw a mesh. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). - Material to use. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be rendered in the given camera only. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - Should the mesh cast shadows? - Should the mesh receive shadows? - Should the mesh use light probes? - If used, the mesh will use this Transform's position to sample light probes and find the matching reflection probe. - LightProbeUsage for the mesh. - - - - - Draw a mesh. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). - Material to use. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be rendered in the given camera only. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - Should the mesh cast shadows? - Should the mesh receive shadows? - Should the mesh use light probes? - If used, the mesh will use this Transform's position to sample light probes and find the matching reflection probe. - LightProbeUsage for the mesh. - - - - - Draw a mesh. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). - Material to use. - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be rendered in the given camera only. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - Should the mesh cast shadows? - Should the mesh receive shadows? - Should the mesh use light probes? - If used, the mesh will use this Transform's position to sample light probes and find the matching reflection probe. - LightProbeUsage for the mesh. - - - - - Draw the same mesh multiple times using GPU instancing. - - The Mesh to draw. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Material to use. - The array of object transformation matrices. - The number of instances to be drawn. - Additional material properties to apply. See MaterialPropertyBlock. - Should the meshes cast shadows? - Should the meshes receive shadows? - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be drawn in the given camera only. - LightProbeUsage for the instances. - - - - - Draw the same mesh multiple times using GPU instancing. - - The Mesh to draw. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Material to use. - The array of object transformation matrices. - The number of instances to be drawn. - Additional material properties to apply. See MaterialPropertyBlock. - Should the meshes cast shadows? - Should the meshes receive shadows? - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be drawn in the given camera only. - LightProbeUsage for the instances. - - - - - Draw the same mesh multiple times using GPU instancing. - - The Mesh to draw. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Material to use. - The bounding volume surrounding the instances you intend to draw. - The GPU buffer containing the arguments for how many instances of this mesh to draw. - The byte offset into the buffer, where the draw arguments start. - Additional material properties to apply. See MaterialPropertyBlock. - Should the mesh cast shadows? - Should the mesh receive shadows? - to use. - If null (default), the mesh will be drawn in all cameras. Otherwise it will be drawn in the given camera only. - LightProbeUsage for the instances. - - - - - Draw a mesh immediately. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). Note that the mesh will not be displayed correctly if matrix has negative scale. - Subset of the mesh to draw. - - - - Draw a mesh immediately. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). Note that the mesh will not be displayed correctly if matrix has negative scale. - Subset of the mesh to draw. - - - - Draw a mesh immediately. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). Note that the mesh will not be displayed correctly if matrix has negative scale. - Subset of the mesh to draw. - - - - Draw a mesh immediately. - - The Mesh to draw. - Position of the mesh. - Rotation of the mesh. - Transformation matrix of the mesh (combines position, rotation and other transformations). Note that the mesh will not be displayed correctly if matrix has negative scale. - Subset of the mesh to draw. - - - - Draws a fully procedural geometry on the GPU. - - - - - - - - Draws a fully procedural geometry on the GPU. - - Topology of the procedural geometry. - Buffer with draw arguments. - Byte offset where in the buffer the draw arguments are. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Draw a texture in screen coordinates. - - Rectangle on the screen to use for the texture. In pixel coordinates with (0,0) in the upper-left corner. - Texture to draw. - Region of the texture to use. In normalized coordinates with (0,0) in the bottom-left corner. - Number of pixels from the left that are not affected by scale. - Number of pixels from the right that are not affected by scale. - Number of pixels from the top that are not affected by scale. - Number of pixels from the bottom that are not affected by scale. - Color that modulates the output. The neutral value is (0.5, 0.5, 0.5, 0.5). Set as vertex color for the shader. - Custom Material that can be used to draw the texture. If null is passed, a default material with the Internal-GUITexture.shader is used. - If -1 (default), draws all passes in the material. Otherwise, draws given pass only. - - - - Execute a command buffer. - - The buffer to execute. - - - - Executes a command buffer on an async compute queue with the queue selected based on the ComputeQueueType parameter passed. - -It is required that all of the commands within the command buffer be of a type suitable for execution on the async compute queues. If the buffer contains any commands that are not appropriate then an error will be logged and displayed in the editor window. Specifically the following commands are permitted in a CommandBuffer intended for async execution: - -CommandBuffer.BeginSample - -CommandBuffer.CopyCounterValue - -CommandBuffer.CopyTexture - -CommandBuffer.CreateGPUFence - -CommandBuffer.DispatchCompute - -CommandBuffer.EndSample - -CommandBuffer.IssuePluginEvent - -CommandBuffer.SetComputeBufferParam - -CommandBuffer.SetComputeFloatParam - -CommandBuffer.SetComputeFloatParams - -CommandBuffer.SetComputeTextureParam - -CommandBuffer.SetComputeVectorParam - -CommandBuffer.WaitOnGPUFence - -All of the commands within the buffer are guaranteed to be executed on the same queue. If the target platform does not support async compute queues then the work is dispatched on the graphics queue. - - The CommandBuffer to be executed. - Describes the desired async compute queue the suuplied CommandBuffer should be executed on. - - - - Set random write target for level pixel shaders. - - Index of the random write target in the shader. - RenderTexture to set as write target. - Whether to leave the append/consume counter value unchanged. - - - - Set random write target for level pixel shaders. - - Index of the random write target in the shader. - RenderTexture to set as write target. - Whether to leave the append/consume counter value unchanged. - - - - Sets current render target. - - RenderTexture to set as active render target. - Mipmap level to render into (use 0 if not mipmapped). - Cubemap face to render into (use Unknown if not a cubemap). - Depth slice to render into (use 0 if not a 3D or 2DArray render target). - Color buffer to render into. - Depth buffer to render into. - Color buffers to render into (for multiple render target effects). - Full render target setup information. - - - - Sets current render target. - - RenderTexture to set as active render target. - Mipmap level to render into (use 0 if not mipmapped). - Cubemap face to render into (use Unknown if not a cubemap). - Depth slice to render into (use 0 if not a 3D or 2DArray render target). - Color buffer to render into. - Depth buffer to render into. - Color buffers to render into (for multiple render target effects). - Full render target setup information. - - - - Sets current render target. - - RenderTexture to set as active render target. - Mipmap level to render into (use 0 if not mipmapped). - Cubemap face to render into (use Unknown if not a cubemap). - Depth slice to render into (use 0 if not a 3D or 2DArray render target). - Color buffer to render into. - Depth buffer to render into. - Color buffers to render into (for multiple render target effects). - Full render target setup information. - - - - Sets current render target. - - RenderTexture to set as active render target. - Mipmap level to render into (use 0 if not mipmapped). - Cubemap face to render into (use Unknown if not a cubemap). - Depth slice to render into (use 0 if not a 3D or 2DArray render target). - Color buffer to render into. - Depth buffer to render into. - Color buffers to render into (for multiple render target effects). - Full render target setup information. - - - - Instructs the GPU's processing of the graphics queue to wait until the given GPUFence is passed. - - The GPUFence that the GPU will be instructed to wait upon before proceeding with its processing of the graphics queue. - On some platforms there is a significant gap between the vertex processing completing and the pixel processing begining for a given draw call. This parameter allows for requested wait to be before the next items vertex or pixel processing begins. If a compute shader dispatch is the next item to be submitted then this parameter is ignored. - - - - Grid is the base class for plotting a layout of uniformly spaced points and lines. - - - - - The size of the gap between each cell in the Grid. - - - - - The layout of the cells in the Grid. - - - - - The size of each cell in the Grid. - - - - - The cell swizzle for the Grid. - - - - - Get the logical center coordinate of a grid cell in local space. - - Grid cell position. - - Center of the cell transformed into local space coordinates. - - - - - Get the logical center coordinate of a grid cell in world space. - - Grid cell position. - - Center of the cell transformed into world space coordinates. - - - - - Does the inverse swizzle of the given position for given swizzle order. - - Determines the rearrangement order for the inverse swizzle. - Position to inverse swizzle. - - The inversed swizzled position. - - - - - Swizzles the given position with the given swizzle order. - - Determines the rearrangement order for the swizzle. - Position to swizzle. - - The swizzled position. - - - - - Base class for authoring data on a grid with grid painting tools like paint, erase, pick, select and fill. - - - - - Erases data on a grid within the given bounds. - - Grid used for layout. - Target of the erase operation. By default the currently selected GameObject. - The bounds to erase data from. - - - - Box fills tiles and GameObjects into given bounds within the selected layers. - - Grid used for layout. - Target of box fill operation. By default the currently selected GameObject. - The bounds to box fill data to. - - - - Changes the Z position of the GridBrushBase. - - Modify the Z position of GridBrushBase by this value. - - - - Erases data on a grid within the given bounds. - - Grid used for layout. - Target of the erase operation. By default the currently selected GameObject. - The coordinates of the cell to erase data from. - - - - - Flips the grid brush in the given FlipAxis. - - Axis to flip by. - CellLayout for flipping. - - - - Axis to flip tiles in the GridBrushBase by. - - - - - Flip the brush in the X Axis. - - - - - Flip the brush in the Y Axis. - - - - - Flood fills data onto a grid given the starting coordinates of the cell. - - Grid used for layout. - Targets of flood fill operation. By default the currently selected GameObject. - Starting position of the flood fill. - - - - Move is called when user moves the area previously selected with the selection marquee. - - Grid used for layout. - Target of the move operation. By default the currently selected GameObject. - Source bounds of the move. - Target bounds of the move. - - - - - MoveEnd is called when user has ended the move of the area previously selected with the selection marquee. - - Layers affected by the move operation. - Target of the move operation. By default the currently selected GameObject. - Grid used for layout. - - - - - MoveEnd is called when user starts moving the area previously selected with the selection marquee. - - Grid used for layout. - Target of the move operation. By default the currently selected GameObject. - Position where the move operation has started. - - - - - Paints data into a grid within the given bounds. - - Grid used for layout. - Target of the paint operation. By default the currently selected GameObject. - The coordinates of the cell to paint data to. - - - - - Picks data from a grid given the coordinates of the cells. - - Grid used for layout. - Target of the paint operation. By default the currently selected GameObject. - The coordinates of the cells to paint data from. - Pivot of the picking brush. - - - - - Resets Z position changes of the GridBrushBase. - - - - - Rotates all tiles on the grid brush with the given RotationDirection. - - Direction to rotate by. - CellLayout for rotating. - - - - Rotate tiles in the GridBrushBase in this direction. - - - - - Rotates tiles clockwise. - - - - - Rotates tiles counter-clockwise. - - - - - Select an area of a grid. - - Grid used for layout. - Targets of paint operation. By default the currently selected GameObject. - Area to get selected. - - - - - Tool mode for the GridBrushBase. - - - - - Box Fill. - - - - - Erase. - - - - - Flood Fill. - - - - - Move. - - - - - Paint. - - - - - Pick. - - - - - Select. - - - - - An abstract class that defines a grid layout. - - - - - The size of the gap between each cell in the layout. - - - - - The layout of the cells. - - - - - The size of each cell in the layout. - - - - - The cell swizzle for the layout. - - - - - The layout of the GridLayout. - - - - - Hexagonal layout for cells in the GridLayout. - - - - - Isometric layout for cells in the GridLayout. - - - - - Isometric layout for cells in the GridLayout where any Z cell value set will be added as a Y value. - - - - - Rectangular layout for cells in the GridLayout. - - - - - Swizzles cell positions to other positions. - - - - - Keeps the cell positions at XYZ. - - - - - Swizzles the cell positions from XYZ to XZY. - - - - - Swizzles the cell positions from XYZ to YXZ. - - - - - Swizzles the cell positions from XYZ to YZX. - - - - - Swizzles the cell positions from XYZ to ZXY. - - - - - Swizzles the cell positions from XYZ to ZYX. - - - - - Converts a cell position to local position space. - - Cell position to convert. - - Local position of the cell position. - - - - - Converts an interpolated cell position in floats to local position space. - - Interpolated cell position to convert. - - Local position of the cell position. - - - - - Converts a cell position to world position space. - - Cell position to convert. - - World position of the cell position. - - - - - Returns the local bounds for a cell at the location. - - Location of the cell. - - - Local bounds of cell at the position. - - - - - Get the default center coordinate of a cell for the set layout of the Grid. - - - Cell Center coordinate. - - - - - Converts a local position to cell position. - - Local Position to convert. - - Cell position of the local position. - - - - - Converts a local position to cell position. - - Local Position to convert. - - Interpolated cell position of the local position. - - - - - Converts a local position to world position. - - Local Position to convert. - - World position of the local position. - - - - - Converts a world position to cell position. - - World Position to convert. - - Cell position of the world position. - - - - - Converts a world position to local position. - - World Position to convert. - - Local position of the world position. - - - - - The GUI class is the interface for Unity's GUI with manual positioning. - - - - - Global tinting color for all background elements rendered by the GUI. - - - - - Returns true if any controls changed the value of the input data. - - - - - Global tinting color for the GUI. - - - - - Tinting color for all text rendered by the GUI. - - - - - The sorting depth of the currently executing GUI behaviour. - - - - - Is the GUI enabled? - - - - - The GUI transform matrix. - - - - - The global skin to use. - - - - - The tooltip of the control the mouse is currently over, or which has keyboard focus. (Read Only). - - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a group. Must be matched with a call to EndGroup. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Begin a scrolling view inside your GUI. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when viewRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when viewRect is taller than position. - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin a scrolling view inside your GUI. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when viewRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when viewRect is taller than position. - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin a scrolling view inside your GUI. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when viewRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when viewRect is taller than position. - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin a scrolling view inside your GUI. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when viewRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when viewRect is taller than position. - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Create a Box on the GUI Layer. - - Rectangle on the screen to use for the box. - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - - - - Bring a specific window to back of the floating windows. - - The identifier used when you created the window in the Window call. - - - - Bring a specific window to front of the floating windows. - - The identifier used when you created the window in the Window call. - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a single press button. The user clicks them and something happens immediately. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - true when the users clicks the button. - - - - - Make a window draggable. - - The part of the window that can be dragged. This is clipped to the actual window. - - - - If you want to have the entire window background to act as a drag area, use the version of DragWindow that takes no parameters and put it at the end of the window function. - - - - - Draw a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - - - - Draw a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - - - - Draw a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - - - - Draw a texture within a rectangle. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - - - - Draws a border with rounded corners within a rectangle. The texture is used to pattern the border. Note that this method only works on shader model 2.5 and above. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - A tint color to apply on the texture. - The width of the border. If 0, the full texture is drawn. - The width of the borders (left, top, right and bottom). If Vector4.zero, the full texture is drawn. - The radius for rounded corners. If 0, corners will not be rounded. - The radiuses for rounded corners (top-left, top-right, bottom-right and bottom-left). If Vector4.zero, corners will not be rounded. - - - - Draws a border with rounded corners within a rectangle. The texture is used to pattern the border. Note that this method only works on shader model 2.5 and above. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to apply alpha blending when drawing the image (enabled by default). - Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of the source image to be adjusted without changing the pixel width and height. - A tint color to apply on the texture. - The width of the border. If 0, the full texture is drawn. - The width of the borders (left, top, right and bottom). If Vector4.zero, the full texture is drawn. - The radius for rounded corners. If 0, corners will not be rounded. - The radiuses for rounded corners (top-left, top-right, bottom-right and bottom-left). If Vector4.zero, corners will not be rounded. - - - - Draw a texture within a rectangle with the given texture coordinates. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to alpha blend the image on to the display (the default). If false, the picture is drawn on to the display. - - - - Draw a texture within a rectangle with the given texture coordinates. - - Rectangle on the screen to draw the texture within. - Texture to display. - How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be drawn within. - Whether to alpha blend the image on to the display (the default). If false, the picture is drawn on to the display. - - - - End a group. - - - - - Ends a scrollview started with a call to BeginScrollView. - - - - - - Ends a scrollview started with a call to BeginScrollView. - - - - - - Move keyboard focus to a named control. - - Name set using SetNextControlName. - - - - Make a window become the active window. - - The identifier used when you created the window in the Window call. - - - - Get the name of named control that has focus. - - - - - Disposable helper class for managing BeginGroup / EndGroup. - - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Create a new GroupScope and begin the corresponding group. - - Rectangle on the screen to use for the group. - Text to display on the group. - Texture to display on the group. - Text, image and tooltip for this group. If supplied, any mouse clicks are "captured" by the group and not If left out, no background is rendered, and mouse clicks are passed. - The style to use for the background. - - - - Make a horizontal scrollbar. Scrollbars are what you use to scroll through a document. Most likely, you want to use scrollViews instead. - - Rectangle on the screen to use for the scrollbar. - The position between min and max. - How much can we see? - The value at the left end of the scrollbar. - The value at the right end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - Make a horizontal scrollbar. Scrollbars are what you use to scroll through a document. Most likely, you want to use scrollViews instead. - - Rectangle on the screen to use for the scrollbar. - The position between min and max. - How much can we see? - The value at the left end of the scrollbar. - The value at the right end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - A horizontal slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - - The value that has been set by the user. - - - - - A horizontal slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - - The value that has been set by the user. - - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Make a text or texture label on screen. - - Rectangle on the screen to use for the label. - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Show a Modal Window. - - A unique id number. - Position and size of the window. - A function which contains the immediate mode GUI code to draw the contents of your window. - Text to appear in the title-bar area of the window, if any. - An image to appear in the title bar of the window, if any. - GUIContent to appear in the title bar of the window, if any. - Style to apply to the window. - - - - Make a text field where the user can enter a password. - - Rectangle on the screen to use for the text field. - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited password. - - - - - Make a text field where the user can enter a password. - - Rectangle on the screen to use for the text field. - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited password. - - - - - Make a text field where the user can enter a password. - - Rectangle on the screen to use for the text field. - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited password. - - - - - Make a text field where the user can enter a password. - - Rectangle on the screen to use for the text field. - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited password. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Make a button that is active as long as the user holds it down. - - Rectangle on the screen to use for the button. - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - - True when the users clicks the button. - - - - - Scrolls all enclosing scrollviews so they try to make position visible. - - - - - - Disposable helper class for managing BeginScrollView / EndScrollView. - - - - - Whether this ScrollView should handle scroll wheel events. (default: true). - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when clientRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when clientRect is taller than position. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when clientRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when clientRect is taller than position. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when clientRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when clientRect is taller than position. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - Rectangle on the screen to use for the ScrollView. - The pixel distance that the view is scrolled in the X and Y directions. - The rectangle used inside the scrollview. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when clientRect is wider than position. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when clientRect is taller than position. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Make a grid of buttons. - - Rectangle on the screen to use for the grid. - The index of the selected grid button. - An array of strings to show on the grid buttons. - An array of textures on the grid buttons. - An array of text, image and tooltips for the grid button. - How many elements to fit in the horizontal direction. The controls will be scaled to fit unless the style defines a fixedWidth to use. - The style to use. If left out, the button style from the current GUISkin is used. - - - The index of the selected button. - - - - - Set the name of the next control. - - - - - - Make a Multi-line text area where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - - The edited string. - - - - - Make a Multi-line text area where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - - The edited string. - - - - - Make a Multi-line text area where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - - The edited string. - - - - - Make a Multi-line text area where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Rectangle on the screen to use for the text field. - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - The edited string. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make an on/off toggle button. - - Rectangle on the screen to use for the button. - Is this button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the toggle style from the current GUISkin is used. - - The new value of the button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - Rectangle on the screen to use for the toolbar. - The index of the selected button. - An array of strings to show on the toolbar buttons. - An array of textures on the toolbar buttons. - An array of text, image and tooltips for the toolbar buttons. - The style to use. If left out, the button style from the current GUISkin is used. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Determines how toolbar button size is calculated. - - - - - The width of each toolbar button is calculated based on the width of its content. - - - - - Calculates the button size by dividing the available width by the number of buttons. The minimum size is the maximum content width. - - - - - Remove focus from all windows. - - - - - Make a vertical scrollbar. Scrollbars are what you use to scroll through a document. Most likely, you want to use scrollViews instead. - - Rectangle on the screen to use for the scrollbar. - The position between min and max. - How much can we see? - The value at the top of the scrollbar. - The value at the bottom of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - Make a vertical scrollbar. Scrollbars are what you use to scroll through a document. Most likely, you want to use scrollViews instead. - - Rectangle on the screen to use for the scrollbar. - The position between min and max. - How much can we see? - The value at the top of the scrollbar. - The value at the bottom of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - A vertical slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the top end of the slider. - The value at the bottom end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - - The value that has been set by the user. - - - - - A vertical slider the user can drag to change a value between a min and a max. - - Rectangle on the screen to use for the slider. - The value the slider shows. This determines the position of the draggable thumb. - The value at the top end of the slider. - The value at the bottom end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - - The value that has been set by the user. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Make a popup window. - - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - ID number for the window (can be any value as long as it is unique). - Onscreen rectangle denoting the window's position and size. - Script function to display the window's contents. - Text to render inside the window. - Image to render inside the window. - GUIContent to render inside the window. - Style information for the window. - Text displayed in the window's title bar. - - Onscreen rectangle denoting the window's position and size. - - - - - Callback to draw GUI within a window (used with GUI.Window). - - - - - - The contents of a GUI element. - - - - - The icon image contained. - - - - - Shorthand for empty content. - - - - - The text contained. - - - - - The tooltip of this element. - - - - - Constructor for GUIContent in all shapes and sizes. - - - - - Build a GUIContent object containing only text. - - - - - - Build a GUIContent object containing only an image. - - - - - - Build a GUIContent object containing both text and an image. - - - - - - - Build a GUIContent containing some text. When the user hovers the mouse over it, the global GUI.tooltip is set to the tooltip. - - - - - - - Build a GUIContent containing an image. When the user hovers the mouse over it, the global GUI.tooltip is set to the tooltip. - - - - - - - Build a GUIContent that contains both text, an image and has a tooltip defined. When the user hovers the mouse over it, the global GUI.tooltip is set to the tooltip. - - - - - - - - Build a GUIContent as a copy of another GUIContent. - - - - - - Base class for images & text strings displayed in a GUI. - - - - - Returns bounding rectangle of GUIElement in screen coordinates. - - - - - - Returns bounding rectangle of GUIElement in screen coordinates. - - - - - - Is a point on screen inside the element? - - - - - - - Is a point on screen inside the element? - - - - - - - Component added to a camera to make it render 2D GUI elements. - - - - - Get the GUI element at a specific screen position. - - - - - - The GUILayout class is the interface for Unity gui with automatic layout. - - - - - Disposable helper class for managing BeginArea / EndArea. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Create a new AreaScope and begin the corresponding Area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a GUILayout block of GUI controls in a fixed screen area. - - Optional text to display in the area. - Optional texture to display in the area. - Optional text, image and tooltip top display for this area. - The style to use. If left out, the empty GUIStyle (GUIStyle.none) is used, giving a transparent background. - - - - - Begin a Horizontal control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a Horizontal control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a Horizontal control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a Horizontal control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a Horizontal control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin an automatically laid out scrollview. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Begin a vertical control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a vertical control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a vertical control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a vertical control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Begin a vertical control group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout box. - - Text to display on the box. - Texture to display on the box. - Text, image and tooltip for this box. - The style to use. If left out, the box style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Make a single press button. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the users clicks the button. - - - - - Close a GUILayout block started with BeginArea. - - - - - Close a group started with BeginHorizontal. - - - - - End a scroll view begun with a call to BeginScrollView. - - - - - Close a group started with BeginVertical. - - - - - Option passed to a control to allow or disallow vertical expansion. - - - - - - Option passed to a control to allow or disallow horizontal expansion. - - - - - - Insert a flexible space element. - - - - - Option passed to a control to give it an absolute height. - - - - - - Disposable helper class for managing BeginHorizontal / EndHorizontal. - - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new HorizontalScope and begin the corresponding horizontal group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a horizontal scrollbar. - - The position between min and max. - How much can we see? - The value at the left end of the scrollbar. - The value at the right end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - Make a horizontal scrollbar. - - The position between min and max. - How much can we see? - The value at the left end of the scrollbar. - The value at the right end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - A horizontal slider the user can drag to change a value between a min and a max. - - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The value that has been set by the user. - - - - - A horizontal slider the user can drag to change a value between a min and a max. - - The value the slider shows. This determines the position of the draggable thumb. - The value at the left end of the slider. - The value at the right end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The value that has been set by the user. - - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make an auto-layout label. - - Text to display on the label. - Texture to display on the label. - Text, image and tooltip for this label. - The style to use. If left out, the label style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Option passed to a control to specify a maximum height. - - - - - - Option passed to a control to specify a maximum width. - - - - - - Option passed to a control to specify a minimum height. - - - - - - Option passed to a control to specify a minimum width. - - - - - - - Make a text field where the user can enter a password. - - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - - The edited password. - - - - - Make a text field where the user can enter a password. - - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - - The edited password. - - - - - Make a text field where the user can enter a password. - - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - - The edited password. - - - - - Make a text field where the user can enter a password. - - Password to edit. The return value of this function should be assigned back to the string as shown in the example. - Character to mask the password with. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - - - The edited password. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Make a repeating button. The button returns true as long as the user holds down the mouse. - - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - true when the holds down the mouse. - - - - - Disposable helper class for managing BeginScrollView / EndScrollView. - - - - - Whether this ScrollView should handle scroll wheel events. (default: true). - - - - - The modified scrollPosition. Feed this back into the variable you pass in, as shown in the example. - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Create a new ScrollViewScope and begin the corresponding ScrollView. - - The position to use display. - Optional parameter to always show the horizontal scrollbar. If false or left out, it is only shown when the content inside the ScrollView is wider than the scrollview itself. - Optional parameter to always show the vertical scrollbar. If false or left out, it is only shown when content inside the ScrollView is taller than the scrollview itself. - Optional GUIStyle to use for the horizontal scrollbar. If left out, the horizontalScrollbar style from the current GUISkin is used. - Optional GUIStyle to use for the vertical scrollbar. If left out, the verticalScrollbar style from the current GUISkin is used. - - - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Make a Selection Grid. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - How many elements to fit in the horizontal direction. The elements will be scaled to fit unless the style defines a fixedWidth to use. The height of the control will be determined from the number of elements. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - The index of the selected button. - - - - - Insert a space in the current layout group. - - - - - - Make a multi-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.&amp;lt;br&amp;gt; -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a multi-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.&amp;lt;br&amp;gt; -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a multi-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.&amp;lt;br&amp;gt; -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a multi-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textField style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.&amp;lt;br&amp;gt; -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make a single-line text field where the user can edit a string. - - Text to edit. The return value of this function should be assigned back to the string as shown in the example. - The maximum length of the string. If left out, the user can type for ever and ever. - The style to use. If left out, the textArea style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The edited string. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make an on/off toggle button. - - Is the button on or off? - Text to display on the button. - Texture to display on the button. - Text, image and tooltip for this button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The new value of the button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Make a toolbar. - - The index of the selected button. - An array of strings to show on the buttons. - An array of textures on the buttons. - An array of text, image and tooltips for the button. - The style to use. If left out, the button style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - Determines how toolbar button size is calculated. - - The index of the selected button. - - - - - Disposable helper class for managing BeginVertical / EndVertical. - - - - - Create a new VerticalScope and begin the corresponding vertical group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new VerticalScope and begin the corresponding vertical group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new VerticalScope and begin the corresponding vertical group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new VerticalScope and begin the corresponding vertical group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Create a new VerticalScope and begin the corresponding vertical group. - - Text to display on group. - Texture to display on group. - Text, image, and tooltip for this group. - The style to use for background image and padding values. If left out, the background is transparent. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - - - Make a vertical scrollbar. - - The position between min and max. - How much can we see? - The value at the top end of the scrollbar. - The value at the bottom end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - Make a vertical scrollbar. - - The position between min and max. - How much can we see? - The value at the top end of the scrollbar. - The value at the bottom end of the scrollbar. - The style to use for the scrollbar background. If left out, the horizontalScrollbar style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - The modified value. This can be changed by the user by dragging the scrollbar, or clicking the arrows at the end. - - - - - A vertical slider the user can drag to change a value between a min and a max. - - The value the slider shows. This determines the position of the draggable thumb. - The value at the top end of the slider. - The value at the bottom end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - - - The value that has been set by the user. - - - - - A vertical slider the user can drag to change a value between a min and a max. - - The value the slider shows. This determines the position of the draggable thumb. - The value at the top end of the slider. - The value at the bottom end of the slider. - The GUIStyle to use for displaying the dragging area. If left out, the horizontalSlider style from the current GUISkin is used. - The GUIStyle to use for displaying draggable thumb. If left out, the horizontalSliderThumb style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style. - - - - The value that has been set by the user. - - - - - Option passed to a control to give it an absolute width. - - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Make a popup window that layouts its contents automatically. - - A unique ID to use for each window. This is the ID you'll use to interface to it. - Rectangle on the screen to use for the window. The layouting system will attempt to fit the window inside it - if that cannot be done, it will adjust the rectangle to fit. - The function that creates the GUI inside the window. This function must take one parameter - the id of the window it's currently making GUI for. - Text to display as a title for the window. - Texture to display an image in the titlebar. - Text, image and tooltip for this window. - An optional style to use for the window. If left out, the window style from the current GUISkin is used. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style or the screenRect you pass in.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectangle the window is at. This can be in a different position and have a different size than the one you passed in. - - - - - Class internally used to pass layout options into GUILayout functions. You don't use these directly, but construct them with the layouting functions in the GUILayout class. - - - - - Utility functions for implementing and extending the GUILayout class. - - - - - Reserve layout space for a rectangle with a specific aspect ratio. - - The aspect ratio of the element (width / height). - An optional style. If specified, the style's padding value will be added to the sizes of the returned rectangle & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rect for the control. - - - - - Reserve layout space for a rectangle with a specific aspect ratio. - - The aspect ratio of the element (width / height). - An optional style. If specified, the style's padding value will be added to the sizes of the returned rectangle & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rect for the control. - - - - - Reserve layout space for a rectangle with a specific aspect ratio. - - The aspect ratio of the element (width / height). - An optional style. If specified, the style's padding value will be added to the sizes of the returned rectangle & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rect for the control. - - - - - Reserve layout space for a rectangle with a specific aspect ratio. - - The aspect ratio of the element (width / height). - An optional style. If specified, the style's padding value will be added to the sizes of the returned rectangle & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rect for the control. - - - - - Get the rectangle last used by GUILayout for a control. - - - The last used rectangle. - - - - - Reserve layout space for a rectangle for displaying some contents with a specific style. - - The content to make room for displaying. - The GUIStyle to layout for. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle that is large enough to contain content when rendered in style. - - - - - Reserve layout space for a rectangle for displaying some contents with a specific style. - - The content to make room for displaying. - The GUIStyle to layout for. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle that is large enough to contain content when rendered in style. - - - - - Reserve layout space for a rectangle with a fixed content area. - - The width of the area you want. - The height of the area you want. - An optional GUIStyle to layout for. If specified, the style's padding value will be added to your sizes & its margin value will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectanlge to put your control in. - - - - - Reserve layout space for a rectangle with a fixed content area. - - The width of the area you want. - The height of the area you want. - An optional GUIStyle to layout for. If specified, the style's padding value will be added to your sizes & its margin value will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectanlge to put your control in. - - - - - Reserve layout space for a rectangle with a fixed content area. - - The width of the area you want. - The height of the area you want. - An optional GUIStyle to layout for. If specified, the style's padding value will be added to your sizes & its margin value will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectanlge to put your control in. - - - - - Reserve layout space for a rectangle with a fixed content area. - - The width of the area you want. - The height of the area you want. - An optional GUIStyle to layout for. If specified, the style's padding value will be added to your sizes & its margin value will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - The rectanlge to put your control in. - - - - - Reserve layout space for a flexible rect. - - The minimum width of the area passed back. - The maximum width of the area passed back. - The minimum width of the area passed back. - The maximum width of the area passed back. - An optional style. If specified, the style's padding value will be added to the sizes requested & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle with size between minWidth & maxWidth on both axes. - - - - - Reserve layout space for a flexible rect. - - The minimum width of the area passed back. - The maximum width of the area passed back. - The minimum width of the area passed back. - The maximum width of the area passed back. - An optional style. If specified, the style's padding value will be added to the sizes requested & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle with size between minWidth & maxWidth on both axes. - - - - - Reserve layout space for a flexible rect. - - The minimum width of the area passed back. - The maximum width of the area passed back. - The minimum width of the area passed back. - The maximum width of the area passed back. - An optional style. If specified, the style's padding value will be added to the sizes requested & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle with size between minWidth & maxWidth on both axes. - - - - - Reserve layout space for a flexible rect. - - The minimum width of the area passed back. - The maximum width of the area passed back. - The minimum width of the area passed back. - The maximum width of the area passed back. - An optional style. If specified, the style's padding value will be added to the sizes requested & the style's margin values will be used for spacing. - An optional list of layout options that specify extra layouting properties. Any values passed in here will override settings defined by the style.<br> -See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, -GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight. - - A rectangle with size between minWidth & maxWidth on both axes. - - - - - General settings for how the GUI behaves. - - - - - The color of the cursor in text fields. - - - - - The speed of text field cursor flashes. - - - - - Should double-clicking select words in text fields. - - - - - The color of the selection rect in text fields. - - - - - Should triple-clicking select whole text in text fields. - - - - - Defines how GUI looks and behaves. - - - - - Style used by default for GUI.Box controls. - - - - - Style used by default for GUI.Button controls. - - - - - Array of GUI styles for specific needs. - - - - - The default font to use for all styles. - - - - - Style used by default for the background part of GUI.HorizontalScrollbar controls. - - - - - Style used by default for the left button on GUI.HorizontalScrollbar controls. - - - - - Style used by default for the right button on GUI.HorizontalScrollbar controls. - - - - - Style used by default for the thumb that is dragged in GUI.HorizontalScrollbar controls. - - - - - Style used by default for the background part of GUI.HorizontalSlider controls. - - - - - Style used by default for the thumb that is dragged in GUI.HorizontalSlider controls. - - - - - Style used by default for GUI.Label controls. - - - - - Style used by default for the background of ScrollView controls (see GUI.BeginScrollView). - - - - - Generic settings for how controls should behave with this skin. - - - - - Style used by default for GUI.TextArea controls. - - - - - Style used by default for GUI.TextField controls. - - - - - Style used by default for GUI.Toggle controls. - - - - - Style used by default for the background part of GUI.VerticalScrollbar controls. - - - - - Style used by default for the down button on GUI.VerticalScrollbar controls. - - - - - Style used by default for the thumb that is dragged in GUI.VerticalScrollbar controls. - - - - - Style used by default for the up button on GUI.VerticalScrollbar controls. - - - - - Style used by default for the background part of GUI.VerticalSlider controls. - - - - - Style used by default for the thumb that is dragged in GUI.VerticalSlider controls. - - - - - Style used by default for Window controls (SA GUI.Window). - - - - - Try to search for a GUIStyle. This functions returns NULL and does not give an error. - - - - - - Get a named GUIStyle. - - - - - - Styling information for GUI elements. - - - - - Rendering settings for when the control is pressed down. - - - - - Text alignment. - - - - - The borders of all background images. - - - - - What to do when the contents to be rendered is too large to fit within the area given. - - - - - Pixel offset to apply to the content of this GUIstyle. - - - - - If non-0, any GUI elements rendered with this style will have the height specified here. - - - - - If non-0, any GUI elements rendered with this style will have the width specified here. - - - - - Rendering settings for when the element has keyboard focus. - - - - - The font to use for rendering. If null, the default font for the current GUISkin is used instead. - - - - - The font size to use (for dynamic fonts). - - - - - The font style to use (for dynamic fonts). - - - - - Rendering settings for when the mouse is hovering over the control. - - - - - How image and text of the GUIContent is combined. - - - - - The height of one line of text with this style, measured in pixels. (Read Only) - - - - - The margins between elements rendered in this style and any other GUI elements. - - - - - The name of this GUIStyle. Used for getting them based on name. - - - - - Shortcut for an empty GUIStyle. - - - - - Rendering settings for when the component is displayed normally. - - - - - Rendering settings for when the element is turned on and pressed down. - - - - - Rendering settings for when the element has keyboard and is turned on. - - - - - Rendering settings for when the control is turned on and the mouse is hovering it. - - - - - Rendering settings for when the control is turned on. - - - - - Extra space to be added to the background image. - - - - - Space from the edge of GUIStyle to the start of the contents. - - - - - Enable HTML-style tags for Text Formatting Markup. - - - - - Can GUI elements of this style be stretched vertically for better layout? - - - - - Can GUI elements of this style be stretched horizontally for better layouting? - - - - - Should the text be wordwrapped? - - - - - How tall this element will be when rendered with content and a specific width. - - - - - - - Calculate the minimum and maximum widths for this style rendered with content. - - - - - - - - Calculate the size of an element formatted with this style, and a given space to content. - - - - - - Calculate the size of some content if it is rendered with this style. - - - - - - Constructor for empty GUIStyle. - - - - - Constructs GUIStyle identical to given other GUIStyle. - - - - - - Draw this GUIStyle on to the screen, internal version. - - - - - - - - - - Draw the GUIStyle with a text string inside. - - - - - - - - - - - Draw the GUIStyle with an image inside. If the image is too large to fit within the content area of the style it is scaled down. - - - - - - - - - - - Draw the GUIStyle with text and an image inside. If the image is too large to fit within the content area of the style it is scaled down. - - - - - - - - - - - - Draw the GUIStyle with text and an image inside. If the image is too large to fit within the content area of the style it is scaled down. - - - - - - - - - - - - Draw the GUIStyle with text and an image inside. If the image is too large to fit within the content area of the style it is scaled down. - - - - - - - - - - - - Draw this GUIStyle with selected content. - - - - - - - - - Draw this GUIStyle with selected content. - - - - - - - - - - Get the pixel position of a given string index. - - - - - - - - Get the cursor position (indexing into contents.text) when the user clicked at cursorPixelPosition. - - - - - - - - Get a named GUI style from the current skin. - - - - - - Specialized values for the given states used by GUIStyle objects. - - - - - The background image used by GUI elements in this given state. - - - - - Background images used by this state when on a high-resolution screen. It should either be left empty, or contain a single image that is exactly twice the resolution of background. This is only used by the editor. The field is not copied to player data, and is not accessible from player code. - - - - - The text color used by GUI elements in this state. - - - - - Allows to control for which display the OnGUI is called. - - - - - Default constructor initializes the attribute for OnGUI to be called for all available displays. - - Display index. - Display index. - Display index list. - - - - Default constructor initializes the attribute for OnGUI to be called for all available displays. - - Display index. - Display index. - Display index list. - - - - Default constructor initializes the attribute for OnGUI to be called for all available displays. - - Display index. - Display index. - Display index list. - - - - Default constructor initializes the attribute for OnGUI to be called for all available displays. - - Display index. - Display index. - Display index list. - - - - A text string displayed in a GUI. - - - - - The alignment of the text. - - - - - The anchor of the text. - - - - - The color used to render the text. - - - - - The font used for the text. - - - - - The font size to use (for dynamic fonts). - - - - - The font style to use (for dynamic fonts). - - - - - The line spacing multiplier. - - - - - The Material to use for rendering. - - - - - The pixel offset of the text. - - - - - Enable HTML-style tags for Text Formatting Markup. - - - - - The tab width multiplier. - - - - - The text to display. - - - - - A texture image used in a 2D GUI. - - - - - The border defines the number of pixels from the edge that are not affected by scale. - - - - - The color of the GUI texture. - - - - - Pixel inset used for pixel adjustments for size and position. - - - - - The texture used for drawing. - - - - - Utility class for making new GUI controls. - - - - - A global property, which is true if a ModalWindow is being displayed, false otherwise. - - - - - The controlID of the current hot control. - - - - - The controlID of the control that has keyboard focus. - - - - - Get access to the system-wide clipboard. - - - - - Align a local space rectangle to the pixel grid. - - The local space rectangle that needs to be processed. - Width, in pixel units, of the axis-aligned bounding box that encompasses the aligned points. - Height, in pixel units, of the axis-aligned bounding box that encompasses the aligned points. - - - The aligned rectangle in local space. - - - - - Align a local space rectangle to the pixel grid. - - The local space rectangle that needs to be processed. - Width, in pixel units, of the axis-aligned bounding box that encompasses the aligned points. - Height, in pixel units, of the axis-aligned bounding box that encompasses the aligned points. - - - The aligned rectangle in local space. - - - - - Puts the GUI in a state that will prevent all subsequent immediate mode GUI functions from evaluating for the remainder of the GUI loop by throwing an ExitGUIException. - - - - - Get a unique ID for a control. - - - - - - - Get a unique ID for a control. - - - - - - - Get a unique ID for a control, using an integer as a hint to help ensure correct matching of IDs to controls. - - - - - - - - - Get a unique ID for a control, using an integer as a hint to help ensure correct matching of IDs to controls. - - - - - - - - - Get a unique ID for a control, using a the label content as a hint to help ensure correct matching of IDs to controls. - - - - - - - - Get a unique ID for a control, using a the label content as a hint to help ensure correct matching of IDs to controls. - - - - - - - - Get a state object from a controlID. - - - - - - - Convert a point from GUI position to screen space. - - - - - - Get an existing state object from a controlID. - - - - - - - Helper function to rotate the GUI around a point. - - - - - - - Helper function to scale the GUI around a point. - - - - - - - Convert a point from screen space to GUI position. - - - - - - Interface into the Gyroscope. - - - - - Returns the attitude (ie, orientation in space) of the device. - - - - - Sets or retrieves the enabled status of this gyroscope. - - - - - Returns the gravity acceleration vector expressed in the device's reference frame. - - - - - Returns rotation rate as measured by the device's gyroscope. - - - - - Returns unbiased rotation rate as measured by the device's gyroscope. - - - - - Sets or retrieves gyroscope interval in seconds. - - - - - Returns the acceleration that the user is giving to the device. - - - - - Interface into functionality unique to handheld devices. - - - - - Determines whether or not a 32-bit display buffer will be used. - - - - - Gets the current activity indicator style. - - - - - Plays a full-screen movie. - - Filesystem path to the movie file. - Background color. - How the playback controls are to be displayed. - How the movie is to be scaled to fit the screen. - - - - Plays a full-screen movie. - - Filesystem path to the movie file. - Background color. - How the playback controls are to be displayed. - How the movie is to be scaled to fit the screen. - - - - Plays a full-screen movie. - - Filesystem path to the movie file. - Background color. - How the playback controls are to be displayed. - How the movie is to be scaled to fit the screen. - - - - Plays a full-screen movie. - - Filesystem path to the movie file. - Background color. - How the playback controls are to be displayed. - How the movie is to be scaled to fit the screen. - - - - Sets the desired activity indicator style. - - - - - - Sets the desired activity indicator style. - - - - - - Starts os activity indicator. - - - - - Stops os activity indicator. - - - - - Triggers device vibration. - - - - - Represent the hash value. - - - - - Get if the hash value is valid or not. (Read Only) - - - - - Compute a hash of the input string. - - - - - - Construct the Hash128. - - - - - - - - - Convert the input string to Hash128. - - - - - - Convert Hash128 to string. - - - - - Utilities to compute hashes with unsafe code. - - - - - Compute a 128 bit hash based on a data. - - Pointer to the data to hash. - The number of bytes to hash. - A pointer to store the low 64 bits of the computed hash. - A pointer to store the high 64 bits of the computed hash. - A pointer to the Hash128 to updated with the computed hash. - - - - Compute a 128 bit hash based on a data. - - Pointer to the data to hash. - The number of bytes to hash. - A pointer to store the low 64 bits of the computed hash. - A pointer to store the high 64 bits of the computed hash. - A pointer to the Hash128 to updated with the computed hash. - - - - Utilities to compute hashes. - - - - - Append inHash in outHash. - - Hash to append. - Hash that will be updated. - - - - Compute a 128 bit hash based on a value. the type of the value must be a value type. - - A reference to the value to hash. - A reference to the Hash128 to updated with the computed hash. - - - - Compute a Hash128 of a Matrix4x4. - - The Matrix4x4 to hash. - The computed hash. - - - - Compute a Hash128 of a Vector3. - - The Vector3 to hash. - The computed hash. - - - - Enumeration of all the muscles in the head. - - - - - The head front-back muscle. - - - - - The head left-right muscle. - - - - - The head roll left-right muscle. - - - - - The jaw down-up muscle. - - - - - The jaw left-right muscle. - - - - - The last value of the HeadDof enum. - - - - - The left eye down-up muscle. - - - - - The left eye in-out muscle. - - - - - The neck front-back muscle. - - - - - The neck left-right muscle. - - - - - The neck roll left-right muscle. - - - - - The right eye down-up muscle. - - - - - The right eye in-out muscle. - - - - - Use this PropertyAttribute to add a header above some fields in the Inspector. - - - - - The header text. - - - - - Add a header above some fields in the Inspector. - - The header text. - - - - Provide a custom documentation URL for a class. - - - - - Initialize the HelpURL attribute with a documentation url. - - The custom documentation URL for this class. - - - - The documentation URL specified for this class. - - - - - Bit mask that controls object destruction, saving and visibility in inspectors. - - - - - The object will not be saved to the Scene. It will not be destroyed when a new Scene is loaded. It is a shortcut for HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor | HideFlags.DontUnloadUnusedAsset. - - - - - The object will not be saved when building a player. - - - - - The object will not be saved to the Scene in the editor. - - - - - The object will not be unloaded by Resources.UnloadUnusedAssets. - - - - - The GameObject is not shown in the Hierarchy, not saved to to Scenes, and not unloaded by Resources.UnloadUnusedAssets. - - - - - The object will not appear in the hierarchy. - - - - - It is not possible to view it in the inspector. - - - - - A normal, visible object. This is the default. - - - - - The object is not be editable in the inspector. - - - - - Makes a variable not show up in the inspector but be serialized. - - - - - The HingeJoint groups together 2 rigid bodies, constraining them to move like connected by a hinge. - - - - - The current angle in degrees of the joint relative to its rest position. (Read Only) - - - - - Limit of angular rotation (in degrees) on the hinge joint. - - - - - The motor will apply a force up to a maximum force to achieve the target velocity in degrees per second. - - - - - The spring attempts to reach a target angle by adding spring and damping forces. - - - - - Enables the joint's limits. Disabled by default. - - - - - Enables the joint's motor. Disabled by default. - - - - - Enables the joint's spring. Disabled by default. - - - - - The angular velocity of the joint in degrees per second. (Read Only) - - - - - Joint that allows a Rigidbody2D object to rotate around a point in space or a point on another object. - - - - - The current joint angle (in degrees) with respect to the reference angle. - - - - - The current joint speed. - - - - - Limit of angular rotation (in degrees) on the joint. - - - - - Gets the state of the joint limit. - - - - - Parameters for the motor force applied to the joint. - - - - - The angle (in degrees) referenced between the two bodies used as the constraint for the joint. - - - - - Should limits be placed on the range of rotation? - - - - - Should the joint be rotated automatically by a motor torque? - - - - - Gets the motor torque of the joint given the specified timestep. - - The time to calculate the motor torque for. - - - - Wrapping modes for text that reaches the horizontal boundary. - - - - - Text can exceed the horizontal boundary. - - - - - Text will word-wrap when reaching the horizontal boundary. - - - - - This is the data structure for holding individual host information. - - - - - A miscellaneous comment (can hold data). - - - - - Currently connected players. - - - - - The name of the game (like John Doe's Game). - - - - - The type of the game (like "MyUniqueGameType"). - - - - - The GUID of the host, needed when connecting with NAT punchthrough. - - - - - Server IP address. - - - - - Does the server require a password? - - - - - Maximum players limit. - - - - - Server port. - - - - - Does this server require NAT punchthrough? - - - - - Human Body Bones. - - - - - This is the Chest bone. - - - - - This is the Head bone. - - - - - This is the Hips bone. - - - - - This is the Jaw bone. - - - - - This is the Last bone index delimiter. - - - - - This is the Left Eye bone. - - - - - This is the Left Ankle bone. - - - - - This is the Left Wrist bone. - - - - - This is the left index 3rd phalange. - - - - - This is the left index 2nd phalange. - - - - - This is the left index 1st phalange. - - - - - This is the left little 3rd phalange. - - - - - This is the left little 2nd phalange. - - - - - This is the left little 1st phalange. - - - - - This is the Left Elbow bone. - - - - - This is the Left Knee bone. - - - - - This is the left middle 3rd phalange. - - - - - This is the left middle 2nd phalange. - - - - - This is the left middle 1st phalange. - - - - - This is the left ring 3rd phalange. - - - - - This is the left ring 2nd phalange. - - - - - This is the left ring 1st phalange. - - - - - This is the Left Shoulder bone. - - - - - This is the left thumb 3rd phalange. - - - - - This is the left thumb 2nd phalange. - - - - - This is the left thumb 1st phalange. - - - - - This is the Left Toes bone. - - - - - This is the Left Upper Arm bone. - - - - - This is the Left Upper Leg bone. - - - - - This is the Neck bone. - - - - - This is the Right Eye bone. - - - - - This is the Right Ankle bone. - - - - - This is the Right Wrist bone. - - - - - This is the right index 3rd phalange. - - - - - This is the right index 2nd phalange. - - - - - This is the right index 1st phalange. - - - - - This is the right little 3rd phalange. - - - - - This is the right little 2nd phalange. - - - - - This is the right little 1st phalange. - - - - - This is the Right Elbow bone. - - - - - This is the Right Knee bone. - - - - - This is the right middle 3rd phalange. - - - - - This is the right middle 2nd phalange. - - - - - This is the right middle 1st phalange. - - - - - This is the right ring 3rd phalange. - - - - - This is the right ring 2nd phalange. - - - - - This is the right ring 1st phalange. - - - - - This is the Right Shoulder bone. - - - - - This is the right thumb 3rd phalange. - - - - - This is the right thumb 2nd phalange. - - - - - This is the right thumb 1st phalange. - - - - - This is the Right Toes bone. - - - - - This is the Right Upper Arm bone. - - - - - This is the Right Upper Leg bone. - - - - - This is the first Spine bone. - - - - - This is the Upper Chest bone. - - - - - The mapping between a bone in the model and the conceptual bone in the Mecanim human anatomy. - - - - - The name of the bone to which the Mecanim human bone is mapped. - - - - - The name of the Mecanim human bone to which the bone from the model is mapped. - - - - - The rotation limits that define the muscle for this bone. - - - - - Class that holds humanoid avatar parameters to pass to the AvatarBuilder.BuildHumanAvatar function. - - - - - Amount by which the arm's length is allowed to stretch when using IK. - - - - - Modification to the minimum distance between the feet of a humanoid model. - - - - - True for any human that has a translation Degree of Freedom (DoF). It is set to false by default. - - - - - Mapping between Mecanim bone names and bone names in the rig. - - - - - Amount by which the leg's length is allowed to stretch when using IK. - - - - - Defines how the lower arm's roll/twisting is distributed between the elbow and wrist joints. - - - - - Defines how the lower leg's roll/twisting is distributed between the knee and ankle. - - - - - List of bone Transforms to include in the model. - - - - - Defines how the upper arm's roll/twisting is distributed between the shoulder and elbow joints. - - - - - Defines how the upper leg's roll/twisting is distributed between the thigh and knee joints. - - - - - This class stores the rotation limits that define the muscle for a single human bone. - - - - - Length of the bone to which the limit is applied. - - - - - The default orientation of a bone when no muscle action is applied. - - - - - The maximum rotation away from the initial value that this muscle can apply. - - - - - The maximum negative rotation away from the initial value that this muscle can apply. - - - - - Should this limit use the default values? - - - - - Enumeration of all the parts in a human. - - - - - The human body part. - - - - - The human head part. - - - - - The human left arm part. - - - - - The human left index finger part. - - - - - The human left leg part. - - - - - The human left little finger part. - - - - - The human left middle finger part. - - - - - The human left ring finger part. - - - - - The human left thumb finger part. - - - - - The human right arm part. - - - - - The human right index finger part. - - - - - The human right leg part. - - - - - The human right little finger part. - - - - - The human right middle finger part. - - - - - The human right ring finger part. - - - - - The human right thumb finger part. - - - - - Retargetable humanoid pose. - - - - - The human body position for that pose. - - - - - The human body orientation for that pose. - - - - - The array of muscle values for that pose. - - - - - A handler that lets you read or write a HumanPose from or to a humanoid avatar skeleton hierarchy. - - - - - Creates a human pose handler from an avatar and a root transform. - - The avatar that defines the humanoid rig on skeleton hierarchy with root as the top most parent. - The top most node of the skeleton hierarchy defined in humanoid avatar. - - - - Gets a human pose from the handled avatar skeleton. - - The output human pose. - - - - Sets a human pose on the handled avatar skeleton. - - The human pose to be set. - - - - Details of all the human bone and muscle types defined by Mecanim. - - - - - The number of human bone types defined by Mecanim. - - - - - Return the bone to which a particular muscle is connected. - - Muscle index. - - - - Array of the names of all human bone types defined by Mecanim. - - - - - Gets the bone hierarchy mass. - - The humanoid bone index. - - The bone hierarchy mass. - - - - - Get the default maximum value of rotation for a muscle in degrees. - - Muscle index. - - - - Get the default minimum value of rotation for a muscle in degrees. - - Muscle index. - - - - Returns parent humanoid bone index of a bone. - - Humanoid bone index to get parent from. - - Humanoid bone index of parent. - - - - - The number of human muscle types defined by Mecanim. - - - - - Obtain the muscle index for a particular bone index and "degree of freedom". - - Bone index. - Number representing a "degree of freedom": 0 for X-Axis, 1 for Y-Axis, 2 for Z-Axis. - - - - Array of the names of all human muscle types defined by Mecanim. - - - - - Is the bone a member of the minimal set of bones that Mecanim requires for a human model? - - Index of the bone to test. - - - - The number of bone types that are required by Mecanim for any human model. - - - - - Use this interface to have a class provide its own list of Animation Clips to the Animation Window. The class must inherit from MonoBehaviour. - - - - - Returns a list of Animation Clips. - - - - - - This element can filter raycasts. If the top level element is hit it can further 'check' if the location is valid. - - - - - Given a point and a camera is the raycast valid. - - Screen position. - Raycast camera. - - Valid. - - - - - Interface for objects used as resolvers on ExposedReferences. - - - - - Remove a value for the given reference. - - Identifier of the ExposedReference. - - - - Retrieves a value for the given identifier. - - Identifier of the ExposedReference. - Is the identifier valid? - - The value stored in the table. - - - - - Assigns a value for an ExposedReference. - - Identifier of the ExposedReference. - The value to assigned to the ExposedReference. - - - - Interface for custom logger implementation. - - - - - To selective enable debug log message. - - - - - To runtime toggle debug logging [ON/OFF]. - - - - - Set Logger.ILogHandler. - - - - - Check logging is enabled based on the LogType. - - - - Retrun true in case logs of LogType will be logged otherwise returns false. - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - Logs message to the Unity Console using default logger. - - - - - - - - - A variant of ILogger.Log that logs an error message. - - - - - - - - A variant of ILogger.Log that logs an error message. - - - - - - - - A variant of ILogger.Log that logs an exception message. - - - - - - Logs a formatted message. - - - - - - - - A variant of Logger.Log that logs an warning message. - - - - - - - - A variant of Logger.Log that logs an warning message. - - - - - - - - Interface for custom log handler implementation. - - - - - A variant of ILogHandler.LogFormat that logs an exception message. - - Runtime Exception. - Object to which the message applies. - - - - Logs a formatted message. - - The type of the log message. - Object to which the message applies. - A composite format string. - Format arguments. - - - - This class provides utility and extension methods to convert image data from or to PNG, EXR, TGA, and JPEG formats. - - - - - Encodes this texture into the EXR format. - - The texture to convert. - Flags used to control compression and the output format. - - - - Encodes this texture into JPG format. - - Text texture to convert. - JPG quality to encode with, 1..100 (default 75). - - - - Encodes this texture into JPG format. - - Text texture to convert. - JPG quality to encode with, 1..100 (default 75). - - - - Encodes this texture into PNG format. - - The texture to convert. - - - - Encodes the specified texture in TGA format. - - The texture to encode. - - - - Loads PNG/JPG image byte array into a texture. - - The byte array containing the image data to load. - Set to false by default, pass true to optionally mark the texture as non-readable. - The texture to load the image into. - - Returns true if the data can be loaded, false otherwise. - - - - - Any Image Effect with this attribute will be rendered after Dynamic Resolution stage. - - - - - Any Image Effect with this attribute can be rendered into the Scene view camera. - - - - - Any Image Effect with this attribute will be rendered after opaque geometry but before transparent geometry. - - - - - When using HDR rendering it can sometime be desirable to switch to LDR rendering during ImageEffect rendering. - - - - - How image and text is placed inside GUIStyle. - - - - - Image is above the text. - - - - - Image is to the left of the text. - - - - - Only the image is displayed. - - - - - Only the text is displayed. - - - - - Controls IME input. - - - - - Enable IME input only when a text field is selected (default). - - - - - Disable IME input. - - - - - Enable IME input. - - - - - Interface into the Input system. - - - - - Last measured linear acceleration of a device in three-dimensional space. (Read Only) - - - - - Number of acceleration measurements which occurred during last frame. - - - - - Returns list of acceleration measurements which occurred during the last frame. (Read Only) (Allocates temporary variables). - - - - - Is any key or mouse button currently held down? (Read Only) - - - - - Returns true the first frame the user hits any key or mouse button. (Read Only) - - - - - Should Back button quit the application? - -Only usable on Android, Windows Phone or Windows Tablets. - - - - - Property for accessing compass (handheld devices only). (Read Only) - - - - - This property controls if input sensors should be compensated for screen orientation. - - - - - The current text input position used by IMEs to open windows. - - - - - The current IME composition string being typed by the user. - - - - - Device physical orientation as reported by OS. (Read Only) - - - - - Property indicating whether keypresses are eaten by a textinput if it has focus (default true). - - - - - Returns default gyroscope. - - - - - Controls enabling and disabling of IME input composition. - - - - - Does the user have an IME keyboard input source selected? - - - - - Returns the keyboard input entered this frame. (Read Only) - - - - - Property for accessing device location (handheld devices only). (Read Only) - - - - - The current mouse position in pixel coordinates. (Read Only) - - - - - Indicates if a mouse device is detected. - - - - - The current mouse scroll delta. (Read Only) - - - - - Property indicating whether the system handles multiple touches. - - - - - Enables/Disables mouse simulation with touches. By default this option is enabled. - - - - - Returns true when Stylus Touch is supported by a device or platform. - - - - - Number of touches. Guaranteed not to change throughout the frame. (Read Only) - - - - - Returns list of objects representing status of all touches during last frame. (Read Only) (Allocates temporary variables). - - - - - Bool value which let's users check if touch pressure is supported. - - - - - Returns whether the device on which application is currently running supports touch input. - - - - - Returns specific acceleration measurement which occurred during last frame. (Does not allocate temporary variables). - - - - - - Returns the value of the virtual axis identified by axisName. - - - - - - Returns the value of the virtual axis identified by axisName with no smoothing filtering applied. - - - - - - Returns true while the virtual button identified by buttonName is held down. - - The name of the button such as Jump. - - True when an axis has been pressed and not released. - - - - - Returns true during the frame the user pressed down the virtual button identified by buttonName. - - - - - - Returns true the first frame the user releases the virtual button identified by buttonName. - - - - - - Returns an array of strings describing the connected joysticks. - - - - - Returns true while the user holds down the key identified by name. - - - - - - Returns true while the user holds down the key identified by the key KeyCode enum parameter. - - - - - - Returns true during the frame the user starts pressing down the key identified by name. - - - - - - Returns true during the frame the user starts pressing down the key identified by the key KeyCode enum parameter. - - - - - - Returns true during the frame the user releases the key identified by name. - - - - - - Returns true during the frame the user releases the key identified by the key KeyCode enum parameter. - - - - - - Returns whether the given mouse button is held down. - - - - - - Returns true during the frame the user pressed the given mouse button. - - - - - - Returns true during the frame the user releases the given mouse button. - - - - - - Returns object representing status of a specific touch. (Does not allocate temporary variables). - - - - - - Determine whether a particular joystick model has been preconfigured by Unity. (Linux-only). - - The name of the joystick to check (returned by Input.GetJoystickNames). - - True if the joystick layout has been preconfigured; false otherwise. - - - - - Resets all input. After ResetInputAxes all axes return to 0 and all buttons return to 0 for one frame. - - - - - ActivityIndicator Style (iOS Specific). - - - - - Do not show ActivityIndicator. - - - - - The standard gray style of indicator (UIActivityIndicatorViewStyleGray). - - - - - The standard white style of indicator (UIActivityIndicatorViewStyleWhite). - - - - - The large white style of indicator (UIActivityIndicatorViewStyleWhiteLarge). - - - - - ADBannerView is a wrapper around the ADBannerView class found in the Apple iAd framework and is only available on iOS. - - - - - Banner layout. - - - - - Checks if banner contents are loaded. - - - - - The position of the banner view. - - - - - The size of the banner view. - - - - - Banner visibility. Initially banner is not visible. - - - - - Will be fired when banner ad failed to load. - - - - - Will be fired when banner was clicked. - - - - - Will be fired when banner loaded new ad. - - - - - Creates a banner view with given type and auto-layout params. - - - - - - - Checks if the banner type is available (e.g. MediumRect is available only starting with ios6). - - - - - - Specifies how banner should be layed out on screen. - - - - - Traditional Banner: align to screen bottom. - - - - - Rect Banner: align to screen bottom, placing at the center. - - - - - Rect Banner: place in bottom-left corner. - - - - - Rect Banner: place in bottom-right corner. - - - - - Rect Banner: place exactly at screen center. - - - - - Rect Banner: align to screen left, placing at the center. - - - - - Rect Banner: align to screen right, placing at the center. - - - - - Completely manual positioning. - - - - - Traditional Banner: align to screen top. - - - - - Rect Banner: align to screen top, placing at the center. - - - - - Rect Banner: place in top-left corner. - - - - - Rect Banner: place in top-right corner. - - - - - The type of the banner view. - - - - - Traditional Banner (it takes full screen width). - - - - - Rect Banner (300x250). - - - - - ADInterstitialAd is a wrapper around the ADInterstitialAd class found in the Apple iAd framework and is only available on iPad. - - - - - Checks if InterstitialAd is available (it is available on iPad since iOS 4.3, and on iPhone since iOS 7.0). - - - - - Has the interstitial ad object downloaded an advertisement? (Read Only) - - - - - Creates an interstitial ad. - - - - - - Creates an interstitial ad. - - - - - - Will be called when ad is ready to be shown. - - - - - Will be called when user viewed ad contents: i.e. they went past the initial screen. Please note that it is impossible to determine if they clicked on any links in ad sequences that follows the initial screen. - - - - - Reload advertisement. - - - - - Shows full-screen advertisement to user. - - - - - Specify calendar types. - - - - - Identifies the Buddhist calendar. - - - - - Identifies the Chinese calendar. - - - - - Identifies the Gregorian calendar. - - - - - Identifies the Hebrew calendar. - - - - - Identifies the Indian calendar. - - - - - Identifies the Islamic calendar. - - - - - Identifies the Islamic civil calendar. - - - - - Identifies the ISO8601. - - - - - Identifies the Japanese calendar. - - - - - Identifies the Persian calendar. - - - - - Identifies the Republic of China (Taiwan) calendar. - - - - - Specify calendrical units. - - - - - Specifies the day unit. - - - - - Specifies the era unit. - - - - - Specifies the hour unit. - - - - - Specifies the minute unit. - - - - - Specifies the month unit. - - - - - Specifies the quarter of the calendar. - - - - - Specifies the second unit. - - - - - Specifies the week unit. - - - - - Specifies the weekday unit. - - - - - Specifies the ordinal weekday unit. - - - - - Specifies the year unit. - - - - - Interface into iOS specific functionality. - - - - - Advertising ID. - - - - - Is advertising tracking enabled. - - - - - Defer system gestures until the second swipe on specific edges. - - - - - The generation of the device. (Read Only) - - - - - Specifies whether the home button should be hidden in the iOS build of this application. - - - - - iOS version. - - - - - Vendor ID. - - - - - Request App Store rating and review from the user. - - - Value indicating whether the underlying API is available or not. False indicates that the iOS version isn't recent enough or that the StoreKit framework is not linked with the app. - - - - - Reset "no backup" file flag: file will be synced with iCloud/iTunes backup and can be deleted by OS in low storage situations. - - - - - - Set file flag to be excluded from iCloud/iTunes backup. - - - - - - iOS device generation. - - - - - iPad, first generation. - - - - - iPad, second generation. - - - - - iPad, third generation. - - - - - iPad, fourth generation. - - - - - iPad Air, fifth generation. - - - - - iPad Air. - - - - - iPad Air 2. - - - - - iPadMini, first generation. - - - - - iPadMini Retina, second generation. - - - - - iPad Mini 3. - - - - - iPad Mini, fourth generation. - - - - - iPad Pro 9.7", first generation. - - - - - iPad Pro 10.5", second generation 10" iPad. - - - - - iPad Pro 11". - - - - - iPad Pro 12.9", first generation. - - - - - iPad Pro 12.9", second generation. - - - - - iPad Pro 12.9", third generation. - - - - - Yet unknown iPad. - - - - - iPhone, first generation. - - - - - iPhone, second generation. - - - - - iPhone, third generation. - - - - - iPhone, fourth generation. - - - - - iPhone, fifth generation. - - - - - iPhone5. - - - - - iPhone 5C. - - - - - iPhone 5S. - - - - - iPhone 6. - - - - - iPhone 6 plus. - - - - - iPhone 6S. - - - - - iPhone 6S Plus. - - - - - iPhone 7. - - - - - iPhone 7 Plus. - - - - - iPhone 8. - - - - - iPhone 8 Plus. - - - - - iPhone SE, first generation. - - - - - Yet unknown iPhone. - - - - - iPhone X. - - - - - iPhone XR. - - - - - iPhone XS. - - - - - iPhone XSMax. - - - - - iPod Touch, first generation. - - - - - iPod Touch, second generation. - - - - - iPod Touch, third generation. - - - - - iPod Touch, fourth generation. - - - - - iPod Touch, fifth generation. - - - - - iPod Touch, sixth generation. - - - - - Yet unknown iPod Touch. - - - - - iOS.LocalNotification is a wrapper around the UILocalNotification class found in the Apple UIKit framework and is only available on iPhoneiPadiPod Touch. - - - - - The title of the action button or slider. - - - - - The message displayed in the notification alert. - - - - - Identifies the image used as the launch image when the user taps the action button. - - - - - A short description of the reason for the alert. - - - - - The number to display as the application's icon badge. - - - - - The default system sound. (Read Only) - - - - - The date and time when the system should deliver the notification. - - - - - A boolean value that controls whether the alert action is visible or not. - - - - - The calendar type (Gregorian, Chinese, etc) to use for rescheduling the notification. - - - - - The calendar interval at which to reschedule the notification. - - - - - The name of the sound file to play when an alert is displayed. - - - - - The time zone of the notification's fire date. - - - - - A dictionary for passing custom information to the notified application. - - - - - Creates a new local notification. - - - - - NotificationServices is only available on iPhoneiPadiPod Touch. - - - - - Device token received from Apple Push Service after calling NotificationServices.RegisterForRemoteNotificationTypes. (Read Only) - - - - - Enabled local and remote notification types. - - - - - The number of received local notifications. (Read Only) - - - - - The list of objects representing received local notifications. (Read Only) - - - - - Returns an error that might occur on registration for remote notifications via NotificationServices.RegisterForRemoteNotificationTypes. (Read Only) - - - - - The number of received remote notifications. (Read Only) - - - - - The list of objects representing received remote notifications. (Read Only) - - - - - All currently scheduled local notifications. - - - - - Cancels the delivery of all scheduled local notifications. - - - - - Cancels the delivery of the specified scheduled local notification. - - - - - - Discards of all received local notifications. - - - - - Discards of all received remote notifications. - - - - - Returns an object representing a specific local notification. (Read Only) - - - - - - Returns an object representing a specific remote notification. (Read Only) - - - - - - Presents a local notification immediately. - - - - - - Register to receive local and remote notifications of the specified types from a provider via Apple Push Service. - - Notification types to register for. - Specify true to also register for remote notifications. - - - - Register to receive local and remote notifications of the specified types from a provider via Apple Push Service. - - Notification types to register for. - Specify true to also register for remote notifications. - - - - Schedules a local notification. - - - - - - Unregister for remote notifications. - - - - - Specifies local and remote notification types. - - - - - Notification is an alert message. - - - - - Notification is a badge shown above the application's icon. - - - - - No notification types specified. - - - - - Notification is an alert sound. - - - - - On Demand Resources API. - - - - - Indicates whether player was built with "Use On Demand Resources" player setting enabled. - - - - - Creates an On Demand Resources (ODR) request. - - Tags for On Demand Resources that should be included in the request. - - Object representing ODR request. - - - - - Represents a request for On Demand Resources (ODR). It's an AsyncOperation and can be yielded in a coroutine. - - - - - Returns an error after operation is complete. - - - - - Sets the priority for request. - - - - - Release all resources kept alive by On Demand Resources (ODR) request. - - - - - Gets file system's path to the resource available in On Demand Resources (ODR) request. - - Resource name. - - - - RemoteNotification is only available on iPhoneiPadiPod Touch. - - - - - The message displayed in the notification alert. (Read Only) - - - - - A short description of the reason for the alert. (Read Only) - - - - - The number to display as the application's icon badge. (Read Only) - - - - - A boolean value that controls whether the alert action is visible or not. (Read Only) - - - - - The name of the sound file to play when an alert is displayed. (Read Only) - - - - - A dictionary for passing custom information to the notified application. (Read Only) - - - - - Bit-mask used to control the deferring of system gestures on iOS. - - - - - Identifies all screen edges. - - - - - Identifies bottom screen edge. - - - - - Identifies left screen edge. - - - - - Disables gesture deferring on all edges. - - - - - Identifies right screen edge. - - - - - Identifies top screen edge. - - - - - Interface to receive callbacks upon serialization and deserialization. - - - - - Implement this method to receive a callback after Unity deserializes your object. - - - - - Implement this method to receive a callback before Unity serializes your object. - - - - - IJobParallelForTransform. - - - - - Execute. - - Index. - TransformAccessArray. - - - - Extension methods for IJobParallelForTransform. - - - - - Schedule. - - Job data. - TransformAccessArray. - Job handle dependency. - - Job handle. - - - - - Position, rotation and scale of an object. - - - - - The position of the transform relative to the parent. - - - - - The rotation of the transform relative to the parent transform's rotation. - - - - - The scale of the transform relative to the parent. - - - - - The position of the transform in world space. - - - - - The rotation of the transform in world space stored as a Quaternion. - - - - - TransformAccessArray. - - - - - Returns array capacity. - - - - - isCreated. - - - - - Length. - - - - - Add. - - Transform. - - - - Allocate. - - Capacity. - Desired job count. - TransformAccessArray. - - - - Constructor. - - Transforms. - Desired job count. - Capacity. - - - - Constructor. - - Transforms. - Desired job count. - Capacity. - - - - Dispose. - - - - - Remove item at index. - - Index. - - - - Set transforms. - - Transforms. - - - - Array indexer. - - - - - Joint is the base class for all joints. - - - - - The Position of the anchor around which the joints motion is constrained. - - - - - Should the connectedAnchor be calculated automatically? - - - - - The Direction of the axis around which the body is constrained. - - - - - The force that needs to be applied for this joint to break. - - - - - The torque that needs to be applied for this joint to break. - - - - - Position of the anchor relative to the connected Rigidbody. - - - - - A reference to another rigidbody this joint connects to. - - - - - The scale to apply to the inverse mass and inertia tensor of the connected body prior to solving the constraints. - - - - - The force applied by the solver to satisfy all constraints. - - - - - The torque applied by the solver to satisfy all constraints. - - - - - Enable collision between bodies connected with the joint. - - - - - Toggle preprocessing for this joint. - - - - - The scale to apply to the inverse mass and inertia tensor of the body prior to solving the constraints. - - - - - Parent class for joints to connect Rigidbody2D objects. - - - - - The Rigidbody2D attached to the Joint2D. - - - - - The force that needs to be applied for this joint to break. - - - - - The torque that needs to be applied for this joint to break. - - - - - Can the joint collide with the other Rigidbody2D object to which it is attached? - - - - - The Rigidbody2D object to which the other end of the joint is attached (ie, the object without the joint component). - - - - - Should the two rigid bodies connected with this joint collide with each other? - - - - - Gets the reaction force of the joint. - - - - - Gets the reaction torque of the joint. - - - - - Gets the reaction force of the joint given the specified timeStep. - - The time to calculate the reaction force for. - - The reaction force of the joint in the specified timeStep. - - - - - Gets the reaction torque of the joint given the specified timeStep. - - The time to calculate the reaction torque for. - - The reaction torque of the joint in the specified timeStep. - - - - - Angular limits on the rotation of a Rigidbody2D object around a HingeJoint2D. - - - - - Upper angular limit of rotation. - - - - - Lower angular limit of rotation. - - - - - How the joint's movement will behave along its local X axis. - - - - - Amount of force applied to push the object toward the defined direction. - - - - - Whether the drive should attempt to reach position, velocity, both or nothing. - - - - - Resistance strength against the Position Spring. Only used if mode includes Position. - - - - - Strength of a rubber-band pull toward the defined direction. Only used if mode includes Position. - - - - - The ConfigurableJoint attempts to attain position / velocity targets based on this flag. - - - - - Don't apply any forces to reach the target. - - - - - Try to reach the specified target position. - - - - - Try to reach the specified target position and velocity. - - - - - Try to reach the specified target velocity. - - - - - JointLimits is used by the HingeJoint to limit the joints angle. - - - - - The minimum impact velocity which will cause the joint to bounce. - - - - - Determines the size of the bounce when the joint hits it's limit. Also known as restitution. - - - - - Distance inside the limit value at which the limit will be considered to be active by the solver. - - - - - The upper angular limit (in degrees) of the joint. - - - - - The lower angular limit (in degrees) of the joint. - - - - - Represents the state of a joint limit. - - - - - Represents a state where the joint limit is at the specified lower and upper limits (they are identical). - - - - - Represents a state where the joint limit is inactive. - - - - - Represents a state where the joint limit is at the specified lower limit. - - - - - Represents a state where the joint limit is at the specified upper limit. - - - - - The JointMotor is used to motorize a joint. - - - - - The motor will apply a force. - - - - - If freeSpin is enabled the motor will only accelerate but never slow down. - - - - - The motor will apply a force up to force to achieve targetVelocity. - - - - - Parameters for the optional motor force applied to a Joint2D. - - - - - The maximum force that can be applied to the Rigidbody2D at the joint to attain the target speed. - - - - - The desired speed for the Rigidbody2D to reach as it moves with the joint. - - - - - Determines how to snap physics joints back to its constrained position when it drifts off too much. - - - - - Don't snap at all. - - - - - Snap both position and rotation. - - - - - Snap Position only. - - - - - JointSpring is used add a spring force to HingeJoint and PhysicMaterial. - - - - - The damper force uses to dampen the spring. - - - - - The spring forces used to reach the target position. - - - - - The target position the joint attempts to reach. - - - - - Joint suspension is used to define how suspension works on a WheelJoint2D. - - - - - The world angle (in degrees) along which the suspension will move. - - - - - The amount by which the suspension spring force is reduced in proportion to the movement speed. - - - - - The frequency at which the suspension spring oscillates. - - - - - Motion limits of a Rigidbody2D object along a SliderJoint2D. - - - - - Maximum distance the Rigidbody2D object can move from the Slider Joint's anchor. - - - - - Minimum distance the Rigidbody2D object can move from the Slider Joint's anchor. - - - - - Utility functions for working with JSON data. - - - - - Create an object from its JSON representation. - - The JSON representation of the object. - - An instance of the object. - - - - - Create an object from its JSON representation. - - The JSON representation of the object. - The type of object represented by the Json. - - An instance of the object. - - - - - Overwrite data in an object by reading from its JSON representation. - - The JSON representation of the object. - The object that should be overwritten. - - - - Generate a JSON representation of the public fields of an object. - - The object to convert to JSON form. - If true, format the output for readability. If false, format the output for minimum size. Default is false. - - The object's data in JSON format. - - - - - Generate a JSON representation of the public fields of an object. - - The object to convert to JSON form. - If true, format the output for readability. If false, format the output for minimum size. Default is false. - - The object's data in JSON format. - - - - - Key codes returned by Event.keyCode. These map directly to a physical key on the keyboard. - - - - - 'a' key. - - - - - The '0' key on the top of the alphanumeric keyboard. - - - - - The '1' key on the top of the alphanumeric keyboard. - - - - - The '2' key on the top of the alphanumeric keyboard. - - - - - The '3' key on the top of the alphanumeric keyboard. - - - - - The '4' key on the top of the alphanumeric keyboard. - - - - - The '5' key on the top of the alphanumeric keyboard. - - - - - The '6' key on the top of the alphanumeric keyboard. - - - - - The '7' key on the top of the alphanumeric keyboard. - - - - - The '8' key on the top of the alphanumeric keyboard. - - - - - The '9' key on the top of the alphanumeric keyboard. - - - - - Alt Gr key. - - - - - Ampersand key '&'. - - - - - Asterisk key '*'. - - - - - At key '@'. - - - - - 'b' key. - - - - - Back quote key '`'. - - - - - Backslash key '\'. - - - - - The backspace key. - - - - - Break key. - - - - - 'c' key. - - - - - Capslock key. - - - - - Caret key '^'. - - - - - The Clear key. - - - - - Colon ':' key. - - - - - Comma ',' key. - - - - - 'd' key. - - - - - The forward delete key. - - - - - Dollar sign key '$'. - - - - - Double quote key '"'. - - - - - Down arrow key. - - - - - 'e' key. - - - - - End key. - - - - - Equals '=' key. - - - - - Escape key. - - - - - Exclamation mark key '!'. - - - - - 'f' key. - - - - - F1 function key. - - - - - F10 function key. - - - - - F11 function key. - - - - - F12 function key. - - - - - F13 function key. - - - - - F14 function key. - - - - - F15 function key. - - - - - F2 function key. - - - - - F3 function key. - - - - - F4 function key. - - - - - F5 function key. - - - - - F6 function key. - - - - - F7 function key. - - - - - F8 function key. - - - - - F9 function key. - - - - - 'g' key. - - - - - Greater than '>' key. - - - - - 'h' key. - - - - - Hash key '#'. - - - - - Help key. - - - - - Home key. - - - - - 'i' key. - - - - - Insert key key. - - - - - 'j' key. - - - - - Button 0 on first joystick. - - - - - Button 1 on first joystick. - - - - - Button 10 on first joystick. - - - - - Button 11 on first joystick. - - - - - Button 12 on first joystick. - - - - - Button 13 on first joystick. - - - - - Button 14 on first joystick. - - - - - Button 15 on first joystick. - - - - - Button 16 on first joystick. - - - - - Button 17 on first joystick. - - - - - Button 18 on first joystick. - - - - - Button 19 on first joystick. - - - - - Button 2 on first joystick. - - - - - Button 3 on first joystick. - - - - - Button 4 on first joystick. - - - - - Button 5 on first joystick. - - - - - Button 6 on first joystick. - - - - - Button 7 on first joystick. - - - - - Button 8 on first joystick. - - - - - Button 9 on first joystick. - - - - - Button 0 on second joystick. - - - - - Button 1 on second joystick. - - - - - Button 10 on second joystick. - - - - - Button 11 on second joystick. - - - - - Button 12 on second joystick. - - - - - Button 13 on second joystick. - - - - - Button 14 on second joystick. - - - - - Button 15 on second joystick. - - - - - Button 16 on second joystick. - - - - - Button 17 on second joystick. - - - - - Button 18 on second joystick. - - - - - Button 19 on second joystick. - - - - - Button 2 on second joystick. - - - - - Button 3 on second joystick. - - - - - Button 4 on second joystick. - - - - - Button 5 on second joystick. - - - - - Button 6 on second joystick. - - - - - Button 7 on second joystick. - - - - - Button 8 on second joystick. - - - - - Button 9 on second joystick. - - - - - Button 0 on third joystick. - - - - - Button 1 on third joystick. - - - - - Button 10 on third joystick. - - - - - Button 11 on third joystick. - - - - - Button 12 on third joystick. - - - - - Button 13 on third joystick. - - - - - Button 14 on third joystick. - - - - - Button 15 on third joystick. - - - - - Button 16 on third joystick. - - - - - Button 17 on third joystick. - - - - - Button 18 on third joystick. - - - - - Button 19 on third joystick. - - - - - Button 2 on third joystick. - - - - - Button 3 on third joystick. - - - - - Button 4 on third joystick. - - - - - Button 5 on third joystick. - - - - - Button 6 on third joystick. - - - - - Button 7 on third joystick. - - - - - Button 8 on third joystick. - - - - - Button 9 on third joystick. - - - - - Button 0 on forth joystick. - - - - - Button 1 on forth joystick. - - - - - Button 10 on forth joystick. - - - - - Button 11 on forth joystick. - - - - - Button 12 on forth joystick. - - - - - Button 13 on forth joystick. - - - - - Button 14 on forth joystick. - - - - - Button 15 on forth joystick. - - - - - Button 16 on forth joystick. - - - - - Button 17 on forth joystick. - - - - - Button 18 on forth joystick. - - - - - Button 19 on forth joystick. - - - - - Button 2 on forth joystick. - - - - - Button 3 on forth joystick. - - - - - Button 4 on forth joystick. - - - - - Button 5 on forth joystick. - - - - - Button 6 on forth joystick. - - - - - Button 7 on forth joystick. - - - - - Button 8 on forth joystick. - - - - - Button 9 on forth joystick. - - - - - Button 0 on fifth joystick. - - - - - Button 1 on fifth joystick. - - - - - Button 10 on fifth joystick. - - - - - Button 11 on fifth joystick. - - - - - Button 12 on fifth joystick. - - - - - Button 13 on fifth joystick. - - - - - Button 14 on fifth joystick. - - - - - Button 15 on fifth joystick. - - - - - Button 16 on fifth joystick. - - - - - Button 17 on fifth joystick. - - - - - Button 18 on fifth joystick. - - - - - Button 19 on fifth joystick. - - - - - Button 2 on fifth joystick. - - - - - Button 3 on fifth joystick. - - - - - Button 4 on fifth joystick. - - - - - Button 5 on fifth joystick. - - - - - Button 6 on fifth joystick. - - - - - Button 7 on fifth joystick. - - - - - Button 8 on fifth joystick. - - - - - Button 9 on fifth joystick. - - - - - Button 0 on sixth joystick. - - - - - Button 1 on sixth joystick. - - - - - Button 10 on sixth joystick. - - - - - Button 11 on sixth joystick. - - - - - Button 12 on sixth joystick. - - - - - Button 13 on sixth joystick. - - - - - Button 14 on sixth joystick. - - - - - Button 15 on sixth joystick. - - - - - Button 16 on sixth joystick. - - - - - Button 17 on sixth joystick. - - - - - Button 18 on sixth joystick. - - - - - Button 19 on sixth joystick. - - - - - Button 2 on sixth joystick. - - - - - Button 3 on sixth joystick. - - - - - Button 4 on sixth joystick. - - - - - Button 5 on sixth joystick. - - - - - Button 6 on sixth joystick. - - - - - Button 7 on sixth joystick. - - - - - Button 8 on sixth joystick. - - - - - Button 9 on sixth joystick. - - - - - Button 0 on seventh joystick. - - - - - Button 1 on seventh joystick. - - - - - Button 10 on seventh joystick. - - - - - Button 11 on seventh joystick. - - - - - Button 12 on seventh joystick. - - - - - Button 13 on seventh joystick. - - - - - Button 14 on seventh joystick. - - - - - Button 15 on seventh joystick. - - - - - Button 16 on seventh joystick. - - - - - Button 17 on seventh joystick. - - - - - Button 18 on seventh joystick. - - - - - Button 19 on seventh joystick. - - - - - Button 2 on seventh joystick. - - - - - Button 3 on seventh joystick. - - - - - Button 4 on seventh joystick. - - - - - Button 5 on seventh joystick. - - - - - Button 6 on seventh joystick. - - - - - Button 7 on seventh joystick. - - - - - Button 8 on seventh joystick. - - - - - Button 9 on seventh joystick. - - - - - Button 0 on eighth joystick. - - - - - Button 1 on eighth joystick. - - - - - Button 10 on eighth joystick. - - - - - Button 11 on eighth joystick. - - - - - Button 12 on eighth joystick. - - - - - Button 13 on eighth joystick. - - - - - Button 14 on eighth joystick. - - - - - Button 15 on eighth joystick. - - - - - Button 16 on eighth joystick. - - - - - Button 17 on eighth joystick. - - - - - Button 18 on eighth joystick. - - - - - Button 19 on eighth joystick. - - - - - Button 2 on eighth joystick. - - - - - Button 3 on eighth joystick. - - - - - Button 4 on eighth joystick. - - - - - Button 5 on eighth joystick. - - - - - Button 6 on eighth joystick. - - - - - Button 7 on eighth joystick. - - - - - Button 8 on eighth joystick. - - - - - Button 9 on eighth joystick. - - - - - Button 0 on any joystick. - - - - - Button 1 on any joystick. - - - - - Button 10 on any joystick. - - - - - Button 11 on any joystick. - - - - - Button 12 on any joystick. - - - - - Button 13 on any joystick. - - - - - Button 14 on any joystick. - - - - - Button 15 on any joystick. - - - - - Button 16 on any joystick. - - - - - Button 17 on any joystick. - - - - - Button 18 on any joystick. - - - - - Button 19 on any joystick. - - - - - Button 2 on any joystick. - - - - - Button 3 on any joystick. - - - - - Button 4 on any joystick. - - - - - Button 5 on any joystick. - - - - - Button 6 on any joystick. - - - - - Button 7 on any joystick. - - - - - Button 8 on any joystick. - - - - - Button 9 on any joystick. - - - - - 'k' key. - - - - - Numeric keypad 0. - - - - - Numeric keypad 1. - - - - - Numeric keypad 2. - - - - - Numeric keypad 3. - - - - - Numeric keypad 4. - - - - - Numeric keypad 5. - - - - - Numeric keypad 6. - - - - - Numeric keypad 7. - - - - - Numeric keypad 8. - - - - - Numeric keypad 9. - - - - - Numeric keypad '/'. - - - - - Numeric keypad enter. - - - - - Numeric keypad '='. - - - - - Numeric keypad '-'. - - - - - Numeric keypad '*'. - - - - - Numeric keypad '.'. - - - - - Numeric keypad '+'. - - - - - 'l' key. - - - - - Left Alt key. - - - - - Left Command key. - - - - - Left arrow key. - - - - - Left square bracket key '['. - - - - - Left Command key. - - - - - Left Control key. - - - - - Left curly bracket key '{'. - - - - - Left Parenthesis key '('. - - - - - Left shift key. - - - - - Left Windows key. - - - - - Less than '<' key. - - - - - 'm' key. - - - - - Menu key. - - - - - Minus '-' key. - - - - - The Left (or primary) mouse button. - - - - - Right mouse button (or secondary mouse button). - - - - - Middle mouse button (or third button). - - - - - Additional (fourth) mouse button. - - - - - Additional (fifth) mouse button. - - - - - Additional (or sixth) mouse button. - - - - - Additional (or seventh) mouse button. - - - - - 'n' key. - - - - - Not assigned (never returned as the result of a keystroke). - - - - - Numlock key. - - - - - 'o' key. - - - - - 'p' key. - - - - - Page down. - - - - - Page up. - - - - - Pause on PC machines. - - - - - Percent '%' key. - - - - - Period '.' key. - - - - - Pipe '|' key. - - - - - Plus key '+'. - - - - - Print key. - - - - - 'q' key. - - - - - Question mark '?' key. - - - - - Quote key '. - - - - - 'r' key. - - - - - Return key. - - - - - Right Alt key. - - - - - Right Command key. - - - - - Right arrow key. - - - - - Right square bracket key ']'. - - - - - Right Command key. - - - - - Right Control key. - - - - - Right curly bracket key '}'. - - - - - Right Parenthesis key ')'. - - - - - Right shift key. - - - - - Right Windows key. - - - - - 's' key. - - - - - Scroll lock key. - - - - - Semicolon ';' key. - - - - - Slash '/' key. - - - - - Space key. - - - - - Sys Req key. - - - - - 't' key. - - - - - The tab key. - - - - - Tilde '~' key. - - - - - 'u' key. - - - - - Underscore '_' key. - - - - - Up arrow key. - - - - - 'v' key. - - - - - 'w' key. - - - - - 'x' key. - - - - - 'y' key. - - - - - 'z' key. - - - - - A single keyframe that can be injected into an animation curve. - - - - - Sets the incoming tangent for this key. The incoming tangent affects the slope of the curve from the previous key to this key. - - - - - Sets the incoming weight for this key. The incoming weight affects the slope of the curve from the previous key to this key. - - - - - Sets the outgoing tangent for this key. The outgoing tangent affects the slope of the curve from this key to the next key. - - - - - Sets the outgoing weight for this key. The outgoing weight affects the slope of the curve from this key to the next key. - - - - - TangentMode is deprecated. Use AnimationUtility.SetKeyLeftTangentMode or AnimationUtility.SetKeyRightTangentMode instead. - - - - - The time of the keyframe. - - - - - The value of the curve at keyframe. - - - - - Weighted mode for the keyframe. - - - - - Create a keyframe. - - - - - - - Create a keyframe. - - - - - - - - - Create a keyframe. - - - - - - - - - - - Specifies Layers to use in a Physics.Raycast. - - - - - Converts a layer mask value to an integer value. - - - - - Given a set of layer names as defined by either a Builtin or a User Layer in the, returns the equivalent layer mask for all of them. - - List of layer names to convert to a layer mask. - - The layer mask created from the layerNames. - - - - - Implicitly converts an integer to a LayerMask. - - - - - - Given a layer number, returns the name of the layer as defined in either a Builtin or a User Layer in the. - - - - - - Given a layer name, returns the layer index as defined by either a Builtin or a User Layer in the. - - - - - - Enumeration of all the muscles in a leg. - - - - - The foot close-open muscle. - - - - - The foot in-out muscle. - - - - - The last value of the LegDof enum. - - - - - The leg close-open muscle. - - - - - The leg roll in-out muscle. - - - - - The toes up-down muscle. - - - - - The upper leg front-back muscle. - - - - - The upper leg in-out muscle. - - - - - The upper leg roll in-out muscle. - - - - - Script interface for a. - - - - - The strength of the flare. - - - - - The color of the flare. - - - - - The fade speed of the flare. - - - - - The to use. - - - - - Script interface for. - - - - - The size of the area light. - - - - - This property describes the output of the last Global Illumination bake. - - - - - The multiplier that defines the strength of the bounce lighting. - - - - - The color of the light. - - - - - - The color temperature of the light. - Correlated Color Temperature (abbreviated as CCT) is multiplied with the color filter when calculating the final color of a light source. The color temperature of the electromagnetic radiation emitted from an ideal black body is defined as its surface temperature in Kelvin. White is 6500K according to the D65 standard. Candle light is 1800K. - If you want to use lightsUseCCT, lightsUseLinearIntensity has to be enabled to ensure physically correct output. - See Also: GraphicsSettings.lightsUseLinearIntensity, GraphicsSettings.lightsUseCCT. - - - - - - Number of command buffers set up on this light (Read Only). - - - - - The cookie texture projected by the light. - - - - - The size of a directional light's cookie. - - - - - This is used to light certain objects in the Scene selectively. - - - - - The to use for this light. - - - - - The Intensity of a light is multiplied with the Light color. - - - - - Is the light contribution already stored in lightmaps and/or lightprobes (Read Only). Obsolete; replaced by Light-lightmapBakeType. - - - - - Per-light, per-layer shadow culling distances. - - - - - This property describes what part of a light's contribution can be baked. - - - - - Allows you to override the global Shadowmask Mode per light. Only use this with render pipelines that can handle per light Shadowmask modes. Incompatible with the legacy renderers. - - - - - The range of the light. - - - - - How to render the light. - - - - - Controls the amount of artificial softening applied to the edges of shadows cast by directional lights. - - - - - Shadow mapping constant bias. - - - - - The custom resolution of the shadow map. - - - - - Near plane value to use for shadow frustums. - - - - - Shadow mapping normal-based bias. - - - - - Controls the amount of artificial softening applied to the edges of shadows cast by the Point or Spot light. - - - - - The resolution of the shadow map. - - - - - How this light casts shadows - - - - - Strength of light's shadows. - - - - - The angle of the light's spotlight cone in degrees. - - - - - The type of the light. - - - - - Add a command buffer to be executed at a specified place. - - When to execute the command buffer during rendering. - The buffer to execute. - A mask specifying which shadow passes to execute the buffer for. - - - - Add a command buffer to be executed at a specified place. - - When to execute the command buffer during rendering. - The buffer to execute. - A mask specifying which shadow passes to execute the buffer for. - - - - Adds a command buffer to the GPU's async compute queues and executes that command buffer when graphics processing reaches a given point. - - The point during the graphics processing at which this command buffer should commence on the GPU. - The buffer to execute. - The desired async compute queue type to execute the buffer on. - A mask specifying which shadow passes to execute the buffer for. - - - - Adds a command buffer to the GPU's async compute queues and executes that command buffer when graphics processing reaches a given point. - - The point during the graphics processing at which this command buffer should commence on the GPU. - The buffer to execute. - The desired async compute queue type to execute the buffer on. - A mask specifying which shadow passes to execute the buffer for. - - - - Get command buffers to be executed at a specified place. - - When to execute the command buffer during rendering. - - Array of command buffers. - - - - - Remove all command buffers set on this light. - - - - - Remove command buffer from execution at a specified place. - - When to execute the command buffer during rendering. - The buffer to execute. - - - - Remove command buffers from execution at a specified place. - - When to execute the command buffer during rendering. - - - - Revert all light parameters to default. - - - - - Sets a light dirty to notify the light baking backends to update their internal light representation. - - - - - Struct describing the result of a Global Illumination bake for a given light. - - - - - Is the light contribution already stored in lightmaps and/or lightprobes? - - - - - This property describes what part of a light's contribution was baked. - - - - - In case of a LightmapBakeType.Mixed light, describes what Mixed mode was used to bake the light, irrelevant otherwise. - - - - - In case of a LightmapBakeType.Mixed light, contains the index of the occlusion mask channel to use if any, otherwise -1. - - - - - In case of a LightmapBakeType.Mixed light, contains the index of the light as seen from the occlusion probes point of view if any, otherwise -1. - - - - - Enum describing what part of a light contribution can be baked. - - - - - Baked lights cannot move or change in any way during run time. All lighting for static objects gets baked into lightmaps. Lighting and shadows for dynamic objects gets baked into Light Probes. - - - - - Mixed lights allow a mix of realtime and baked lighting, based on the Mixed Lighting Mode used. These lights cannot move, but can change color and intensity at run time. Changes to color and intensity only affect direct lighting as indirect lighting gets baked. If using Subtractive mode, changes to color or intensity are not calculated at run time on static objects. - - - - - Realtime lights cast run time light and shadows. They can change position, orientation, color, brightness, and many other properties at run time. No lighting gets baked into lightmaps or light probes.. - - - - - Data of a lightmap. - - - - - Lightmap storing color of incoming light. - - - - - Lightmap storing dominant direction of incoming light. - - - - - Texture storing occlusion mask per light (ShadowMask, up to four lights). - - - - - Stores lightmaps of the Scene. - - - - - Lightmap array. - - - - - NonDirectional or CombinedDirectional Specular lightmaps rendering mode. - - - - - Holds all data needed by the light probes. - - - - - Lightmap (and lighting) configuration mode, controls how lightmaps interact with lighting and what kind of information they store. - - - - - Directional information for direct light is combined with directional information for indirect light, encoded as 2 lightmaps. - - - - - Light intensity (no directional information), encoded as 1 lightmap. - - - - - Directional information for direct light is stored separately from directional information for indirect light, encoded as 4 lightmaps. - - - - - Single, dual, or directional lightmaps rendering mode, used only in GIWorkflowMode.Legacy - - - - - Directional rendering mode. - - - - - Dual lightmap rendering mode. - - - - - Single, traditional lightmap rendering mode. - - - - - Light Probe Group. - - - - - Removes ringing from probes if enabled. - - - - - Editor only function to access and modify probe positions. - - - - - The Light Probe Proxy Volume component offers the possibility to use higher resolution lighting for large non-static GameObjects. - - - - - The bounding box mode for generating the 3D grid of interpolated Light Probes. - - - - - The world-space bounding box in which the 3D grid of interpolated Light Probes is generated. - - - - - The 3D grid resolution on the z-axis. - - - - - The 3D grid resolution on the y-axis. - - - - - The 3D grid resolution on the z-axis. - - - - - Checks if Light Probe Proxy Volumes are supported. - - - - - The local-space origin of the bounding box in which the 3D grid of interpolated Light Probes is generated. - - - - - Interpolated Light Probe density. - - - - - The mode in which the interpolated Light Probe positions are generated. - - - - - Determines how many Spherical Harmonics bands will be evaluated to compute the ambient color. - - - - - Sets the way the Light Probe Proxy Volume refreshes. - - - - - The resolution mode for generating the grid of interpolated Light Probes. - - - - - The size of the bounding box in which the 3D grid of interpolated Light Probes is generated. - - - - - The bounding box mode for generating a grid of interpolated Light Probes. - - - - - The bounding box encloses the current Renderer and all the relevant Renderers down the hierarchy, in local space. - - - - - The bounding box encloses the current Renderer and all the relevant Renderers down the hierarchy, in world space. - - - - - A custom local-space bounding box is used. The user is able to edit the bounding box. - - - - - The mode in which the interpolated Light Probe positions are generated. - - - - - Divide the volume in cells based on resolution, and generate interpolated Light Probe positions in the center of the cells. - - - - - Divide the volume in cells based on resolution, and generate interpolated Light Probes positions in the corner/edge of the cells. - - - - - An enum describing the Quality option used by the Light Probe Proxy Volume component. - - - - - This option will use only two SH coefficients bands: L0 and L1. The coefficients are sampled from the Light Probe Proxy Volume 3D Texture. Using this option might increase the draw call batch sizes by not having to change the L2 coefficients per Renderer. - - - - - This option will use L0 and L1 SH coefficients from the Light Probe Proxy Volume 3D Texture. The L2 coefficients are constant per Renderer. By having to provide the L2 coefficients, draw call batches might be broken. - - - - - An enum describing the way a Light Probe Proxy Volume refreshes in the Player. - - - - - Automatically detects updates in Light Probes and triggers an update of the Light Probe volume. - - - - - Causes Unity to update the Light Probe Proxy Volume every frame. - - - - - Use this option to indicate that the Light Probe Proxy Volume is never to be automatically updated by Unity. - - - - - The resolution mode for generating a grid of interpolated Light Probes. - - - - - The automatic mode uses a number of interpolated Light Probes per unit area, and uses the bounding volume size to compute the resolution. The final resolution value is a power of 2. - - - - - The custom mode allows you to specify the 3D grid resolution. - - - - - Triggers an update of the Light Probe Proxy Volume. - - - - - Stores light probes for the Scene. - - - - - Coefficients of baked light probes. - - - - - The number of cells space is divided into (Read Only). - - - - - The number of light probes (Read Only). - - - - - Positions of the baked light probes (Read Only). - - - - - Calculate light probes and occlusion probes at the given world space positions. - - The array of world space positions used to evaluate the probes. - The array where the resulting light probes are written to. - The array where the resulting occlusion probes are written to. - - - - Calculate light probes and occlusion probes at the given world space positions. - - The array of world space positions used to evaluate the probes. - The array where the resulting light probes are written to. - The array where the resulting occlusion probes are written to. - - - - Returns an interpolated probe for the given position for both realtime and baked light probes combined. - - - - - - - - How the Light is rendered. - - - - - Automatically choose the render mode. - - - - - Force the Light to be a pixel light. - - - - - Force the Light to be a vertex light. - - - - - Allows mixed lights to control shadow caster culling when Shadowmasks are present. - - - - - Use the global Shadowmask Mode from the quality settings. - - - - - Render all shadow casters into the shadow map. This corresponds with the distance Shadowmask mode. - - - - - Render only non-lightmapped objects into the shadow map. This corresponds with the Shadowmask mode. - - - - - Shadow casting options for a Light. - - - - - Cast "hard" shadows (with no shadow filtering). - - - - - Do not cast shadows (default). - - - - - Cast "soft" shadows (with 4x PCF filtering). - - - - - The type of a Light. - - - - - The light is a directional light. - - - - - The light is a disc shaped area light. It affects only baked lightmaps and lightprobes. - - - - - The light is a point light. - - - - - The light is a rectangle shaped area light. It affects only baked lightmaps and lightprobes. - - - - - The light is a spot light. - - - - - Control the direction lines face, when using the LineRenderer or TrailRenderer. - - - - - Lines face the direction of the Transform Component. - - - - - Lines face the Z axis of the Transform Component. - - - - - Lines face the camera. - - - - - The line renderer is used to draw free-floating lines in 3D space. - - - - - Select whether the line will face the camera, or the orientation of the Transform Component. - - - - - Set the color gradient describing the color of the line at various points along its length. - - - - - Set the color at the end of the line. - - - - - Set the width at the end of the line. - - - - - Configures a line to generate Normals and Tangents. With this data, Scene lighting can affect the line via Normal Maps and the Unity Standard Shader, or your own custom-built Shaders. - - - - - Connect the start and end positions of the line together to form a continuous loop. - - - - - Set this to a value greater than 0, to get rounded corners on each end of the line. - - - - - Set this to a value greater than 0, to get rounded corners between each segment of the line. - - - - - Set the number of line segments. - - - - - Set/get the number of vertices. - - - - - Apply a shadow bias to prevent self-shadowing artifacts. The specified value is the proportion of the line width at each segment. - - - - - Set the color at the start of the line. - - - - - Set the width at the start of the line. - - - - - Choose whether the U coordinate of the line texture is tiled or stretched. - - - - - If enabled, the lines are defined in world space. - - - - - Set the curve describing the width of the line at various points along its length. - - - - - Set an overall multiplier that is applied to the LineRenderer.widthCurve to get the final width of the line. - - - - - Creates a snapshot of LineRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the line. - The camera used for determining which way camera-space lines will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of LineRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the line. - The camera used for determining which way camera-space lines will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of LineRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the line. - The camera used for determining which way camera-space lines will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of LineRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the line. - The camera used for determining which way camera-space lines will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Get the position of a vertex in the line. - - The index of the position to retrieve. - - The position at the specified index in the array. - - - - - Get the positions of all vertices in the line. - - The array of positions to retrieve. The array passed should be of at least positionCount in size. - - How many positions were actually stored in the output array. - - - - - Set the line color at the start and at the end. - - - - - - - Set the position of a vertex in the line. - - Which position to set. - The new position. - - - - Set the positions of all vertices in the line. - - The array of positions to set. - - - - Set the number of line segments. - - - - - - Set the line width at the start and at the end. - - - - - - - Generates a simplified version of the original line by removing points that fall within the specified tolerance. - - This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. - - - - Choose how textures are applied to Lines and Trails. - - - - - Map the texture once along the entire length of the line, assuming all vertices are evenly spaced. - - - - - Repeat the texture along the line, repeating at a rate of once per line segment. To adjust the tiling rate, use Material.SetTextureScale. - - - - - Map the texture once along the entire length of the line. - - - - - Repeat the texture along the line, based on its length in world units. To set the tiling rate, use Material.SetTextureScale. - - - - - A collection of common line functions. - - - - - Generates a simplified version of the original line by removing points that fall within the specified tolerance. - - The points that make up the original line. - This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. - Populated by this function. Contains the indexes of the points that should be generate a simplified version.. - Populated by this function. Contains the points that form the simplified line. - - - - Generates a simplified version of the original line by removing points that fall within the specified tolerance. - - The points that make up the original line. - This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. - Populated by this function. Contains the indexes of the points that should be generate a simplified version.. - Populated by this function. Contains the points that form the simplified line. - - - - Generates a simplified version of the original line by removing points that fall within the specified tolerance. - - The points that make up the original line. - This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. - Populated by this function. Contains the indexes of the points that should be generate a simplified version.. - Populated by this function. Contains the points that form the simplified line. - - - - Generates a simplified version of the original line by removing points that fall within the specified tolerance. - - The points that make up the original line. - This value is used to evaluate which points should be removed from the line. A higher value results in a simpler line (less points). A positive value close to zero results in a line with little to no reduction. A value of zero or less has no effect. - Populated by this function. Contains the indexes of the points that should be generate a simplified version.. - Populated by this function. Contains the points that form the simplified line. - - - - An asset to represent a table of localized strings for one specific locale. - - - - - Is this asset used to localize UI components of the Unity Editor - - - - - ISO Code used to identify the locale. ex: en-uk, zh-hans, ja - - - - - Creates a new empty LocalizationAsset object. - - - - - Get the localized string for the specified key. - - Original string acting as key. - - Localized string matching the original in the LocalizationAsset locale - - - - - Set the localized string for the specified key - - Original string acting as key. - Localized string matching the original in the LocalizationAsset locale - - - - Structure describing device location. - - - - - Geographical device location altitude. - - - - - Horizontal accuracy of the location. - - - - - Geographical device location latitude. - - - - - Geographical device location latitude. - - - - - Timestamp (in seconds since 1970) when location was last time updated. - - - - - Vertical accuracy of the location. - - - - - Interface into location functionality. - - - - - Specifies whether location service is enabled in user settings. - - - - - Last measured device geographical location. - - - - - Returns location service status. - - - - - Starts location service updates. Last location coordinates could be. - - - - - - - Starts location service updates. Last location coordinates could be. - - - - - - - Starts location service updates. Last location coordinates could be. - - - - - - - Stops location service updates. This could be useful for saving battery life. - - - - - Describes location service status. - - - - - Location service failed (user denied access to location service). - - - - - Location service is initializing, some time later it will switch to. - - - - - Location service is running and locations could be queried. - - - - - Location service is stopped. - - - - - Structure for building a LOD for passing to the SetLODs function. - - - - - Width of the cross-fade transition zone (proportion to the current LOD's whole length) [0-1]. Only used if it's not animated. - - - - - List of renderers for this LOD level. - - - - - The screen relative height to use for the transition [0-1]. - - - - - Construct a LOD. - - The screen relative height to use for the transition [0-1]. - An array of renderers to use for this LOD level. - - - - The LOD fade modes. Modes other than LODFadeMode.None will result in Unity calculating a blend factor for blending/interpolating between two neighbouring LODs and pass it to your shader. - - - - - Perform cross-fade style blending between the current LOD and the next LOD if the distance to camera falls in the range specified by the LOD.fadeTransitionWidth of each LOD. - - - - - Indicates the LOD fading is turned off. - - - - - By specifying this mode, your LODGroup will perform a SpeedTree-style LOD fading scheme: - - -* For all the mesh LODs other than the last (most crude) mesh LOD, the fade factor is calculated as the percentage of the object's current screen height, compared to the whole range of the LOD. It is 1, if the camera is right at the position where the previous LOD switches out and 0, if the next LOD is just about to switch in. - - -* For the last mesh LOD and the billboard LOD, the cross-fade mode is used. - - - - - LODGroup lets you group multiple Renderers into LOD levels. - - - - - Specify if the cross-fading should be animated by time. The animation duration is specified globally as crossFadeAnimationDuration. - - - - - The cross-fading animation duration in seconds. ArgumentException will be thrown if it is set to zero or a negative value. - - - - - Enable / Disable the LODGroup - Disabling will turn off all renderers. - - - - - The LOD fade mode used. - - - - - The local reference point against which the LOD distance is calculated. - - - - - The number of LOD levels. - - - - - The size of the LOD object in local space. - - - - - - - The LOD level to use. Passing index < 0 will return to standard LOD processing. - - - - Returns the array of LODs. - - - The LOD array. - - - - - Recalculate the bounding region for the LODGroup (Relatively slow, do not call often). - - - - - Set the LODs for the LOD group. This will remove any existing LODs configured on the LODGroup. - - The LODs to use for this group. - - - - Initializes a new instance of the Logger. - - - - - To selective enable debug log message. - - - - - To runtime toggle debug logging [ON/OFF]. - - - - - Set Logger.ILogHandler. - - - - - Create a custom Logger. - - Pass in default log handler or custom log handler. - - - - Check logging is enabled based on the LogType. - - The type of the log message. - - Retrun true in case logs of LogType will be logged otherwise returns false. - - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - Logs message to the Unity Console using default logger. - - The type of the log message. - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Logger.Log that logs an error message. - - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Logger.Log that logs an error message. - - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Logger.Log that logs an exception message. - - Runtime Exception. - Object to which the message applies. - - - - A variant of Logger.Log that logs an exception message. - - Runtime Exception. - Object to which the message applies. - - - - Logs a formatted message. - - The type of the log message. - Object to which the message applies. - A composite format string. - Format arguments. - - - - Logs a formatted message. - - The type of the log message. - Object to which the message applies. - A composite format string. - Format arguments. - - - - A variant of Logger.Log that logs an warning message. - - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - A variant of Logger.Log that logs an warning message. - - Used to identify the source of a log message. It usually identifies the class where the log call occurs. - String or object to be converted to string representation for display. - Object to which the message applies. - - - - The type of the log message in Debug.unityLogger.Log or delegate registered with Application.RegisterLogCallback. - - - - - LogType used for Asserts. (These could also indicate an error inside Unity itself.) - - - - - LogType used for Errors. - - - - - LogType used for Exceptions. - - - - - LogType used for regular log messages. - - - - - LogType used for Warnings. - - - - - The Master Server is used to make matchmaking between servers and clients easy. - - - - - Report this machine as a dedicated server. - - - - - The IP address of the master server. - - - - - The connection port of the master server. - - - - - Set the minimum update rate for master server host information update. - - - - - Clear the host list which was received by MasterServer.PollHostList. - - - - - Check for the latest host list received by using MasterServer.RequestHostList. - - - - - Register this server on the master server. - - - - - - - - Register this server on the master server. - - - - - - - - Request a host list from the master server. - - - - - - Unregister this server from the master server. - - - - - Describes status messages from the master server as returned in MonoBehaviour.OnMasterServerEvent|OnMasterServerEvent. - - - - - Use this struct to specify the position and rotation weight mask for Animator.MatchTarget. - - - - - Position XYZ weight. - - - - - Rotation weight. - - - - - MatchTargetWeightMask contructor. - - Position XYZ weight. - Rotation weight. - - - - The material class. - - - - - The main material's color. - - - - - Gets and sets whether the Double Sided Global Illumination setting is enabled for this material. - - - - - Gets and sets whether GPU instancing is enabled for this material. - - - - - Defines how the material should interact with lightmaps and lightprobes. - - - - - The material's texture. - - - - - The texture offset of the main texture. - - - - - The texture scale of the main texture. - - - - - How many passes are in this material (Read Only). - - - - - Render queue of this material. - - - - - The shader used by the material. - - - - - Additional shader keywords set by this material. - - - - - Copy properties from other material into this material. - - - - - - - - - - - - Create a temporary Material. - - Create a material with a given Shader. - Create a material by copying all properties from another material. - - - - Create a temporary Material. - - Create a material with a given Shader. - Create a material by copying all properties from another material. - - - - Unset a shader keyword. - - - - - - Sets a shader keyword that is enabled by this material. - - - - - - Returns the index of the pass passName. - - - - - - Get a named color value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named color value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named color array. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named color array. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a named color array into a list. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The list to hold the returned array. - - - - Fetch a named color array into a list. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The list to hold the returned array. - - - - Get a named float value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named float value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named float array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Get a named float array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Fetch a named float array into a list. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The list to hold the returned array. - - - - Fetch a named float array into a list. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - The list to hold the returned array. - - - - Get a named integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named integer value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named matrix value from the shader. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named matrix value from the shader. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named matrix array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Get a named matrix array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Fetch a named matrix array into a list. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The list to hold the returned array. - - - - Fetch a named matrix array into a list. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The list to hold the returned array. - - - - Returns the name of the shader pass at index pass. - - - - - - Checks whether a given Shader pass is enabled on this Material. - - Shader pass name (case insensitive). - - True if the Shader pass is enabled. - - - - - Get the value of material's shader tag. - - - - - - - - Get the value of material's shader tag. - - - - - - - - Get a named texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named texture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets the placement offset of texture propertyName. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets the placement offset of texture propertyName. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Return the name IDs of all texture properties exposed on this material. - - IDs of all texture properties exposed on this material. - - IDs of all texture properties exposed on this material. - - - - - Return the name IDs of all texture properties exposed on this material. - - IDs of all texture properties exposed on this material. - - IDs of all texture properties exposed on this material. - - - - - Returns the names of all texture properties exposed on this material. - - Names of all texture properties exposed on this material. - - Names of all texture properties exposed on this material. - - - - - Returns the names of all texture properties exposed on this material. - - Names of all texture properties exposed on this material. - - Names of all texture properties exposed on this material. - - - - - Gets the placement scale of texture propertyName. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets the placement scale of texture propertyName. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named vector value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named vector value. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a named vector array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Get a named vector array. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - - - - Fetch a named vector array into a list. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The list to hold the returned array. - - - - Fetch a named vector array into a list. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The list to hold the returned array. - - - - Checks if material's shader has a property of a given name. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Checks if material's shader has a property of a given name. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Is the shader keyword enabled on this material? - - - - - - Interpolate properties between two materials. - - - - - - - - Sets a named ComputeBuffer value. - - Property name ID, use Shader.PropertyToID to get it. - Property name. - The ComputeBuffer value to set. - - - - Sets a named ComputeBuffer value. - - Property name ID, use Shader.PropertyToID to get it. - Property name. - The ComputeBuffer value to set. - - - - Sets a named color value. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_Color". - Color value to set. - - - - Sets a named color value. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_Color". - Color value to set. - - - - Sets a color array property. - - Property name. - Property name ID, use Shader.PropertyToID to get it. - Array of values to set. - - - - Sets a color array property. - - Property name. - Property name ID, use Shader.PropertyToID to get it. - Array of values to set. - - - - Sets a color array property. - - Property name. - Property name ID, use Shader.PropertyToID to get it. - Array of values to set. - - - - Sets a color array property. - - Property name. - Property name ID, use Shader.PropertyToID to get it. - Array of values to set. - - - - Sets a named float value. - - Property name ID, use Shader.PropertyToID to get it. - Float value to set. - Property name, e.g. "_Glossiness". - - - - Sets a named float value. - - Property name ID, use Shader.PropertyToID to get it. - Float value to set. - Property name, e.g. "_Glossiness". - - - - Sets a float array property. - - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Array of values to set. - - - - Sets a float array property. - - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Array of values to set. - - - - Sets a float array property. - - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Array of values to set. - - - - Sets a float array property. - - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Array of values to set. - - - - Sets a named integer value. - - Property name ID, use Shader.PropertyToID to get it. - Integer value to set. - Property name, e.g. "_SrcBlend". - - - - Sets a named integer value. - - Property name ID, use Shader.PropertyToID to get it. - Integer value to set. - Property name, e.g. "_SrcBlend". - - - - Sets a named matrix for the shader. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_CubemapRotation". - Matrix value to set. - - - - Sets a named matrix for the shader. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_CubemapRotation". - Matrix value to set. - - - - Sets a matrix array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a matrix array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a matrix array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a matrix array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets an override tag/value on the material. - - Name of the tag to set. - Name of the value to set. Empty string to clear the override flag. - - - - Activate the given pass for rendering. - - Shader pass number to setup. - - If false is returned, no rendering should be done. - - - - - Enables or disables a Shader pass on a per-Material level. - - Shader pass name (case insensitive). - Flag indicating whether this Shader pass should be enabled. - - - - Sets a named texture. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_MainTex". - Texture to set. - - - - Sets a named texture. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_MainTex". - Texture to set. - - - - Sets the placement offset of texture propertyName. - - Property name ID, use Shader.PropertyToID to get it. - Property name, for example: "_MainTex". - Texture placement offset. - - - - Sets the placement offset of texture propertyName. - - Property name ID, use Shader.PropertyToID to get it. - Property name, for example: "_MainTex". - Texture placement offset. - - - - Sets the placement scale of texture propertyName. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_MainTex". - Texture placement scale. - - - - Sets the placement scale of texture propertyName. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_MainTex". - Texture placement scale. - - - - Sets a named vector value. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_WaveAndDistance". - Vector value to set. - - - - Sets a named vector value. - - Property name ID, use Shader.PropertyToID to get it. - Property name, e.g. "_WaveAndDistance". - Vector value to set. - - - - Sets a vector array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a vector array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a vector array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - Sets a vector array property. - - Property name. - Array of values to set. - Property name ID, use Shader.PropertyToID to get it. - - - - How the material interacts with lightmaps and lightprobes. - - - - - Helper Mask to be used to query the enum only based on whether realtime GI or baked GI is set, ignoring all other bits. - - - - - The emissive lighting affects baked Global Illumination. It emits lighting into baked lightmaps and baked lightprobes. - - - - - The emissive lighting is guaranteed to be black. This lets the lightmapping system know that it doesn't have to extract emissive lighting information from the material and can simply assume it is completely black. - - - - - The emissive lighting does not affect Global Illumination at all. - - - - - The emissive lighting will affect realtime Global Illumination. It emits lighting into realtime lightmaps and realtime lightprobes. - - - - - A block of material values to apply. - - - - - Is the material property block empty? (Read Only) - - - - - Clear material property values. - - - - - This function copies the entire source array into a Vector4 property array named unity_ProbesOcclusion for use with instanced rendering. - - The array of probe occlusion values to copy from. - - - - This function copies the entire source array into a Vector4 property array named unity_ProbesOcclusion for use with instanced rendering. - - The array of probe occlusion values to copy from. - - - - This function copies the source array into a Vector4 property array named unity_ProbesOcclusion with the specified source and destination range for use with instanced rendering. - - The array of probe occlusion values to copy from. - The index of the first element in the source array to copy from. - The index of the first element in the destination MaterialPropertyBlock array to copy to. - The number of elements to copy. - - - - This function copies the source array into a Vector4 property array named unity_ProbesOcclusion with the specified source and destination range for use with instanced rendering. - - The array of probe occlusion values to copy from. - The index of the first element in the source array to copy from. - The index of the first element in the destination MaterialPropertyBlock array to copy to. - The number of elements to copy. - - - - This function converts and copies the entire source array into 7 Vector4 property arrays named unity_SHAr, unity_SHAg, unity_SHAb, unity_SHBr, unity_SHBg, unity_SHBb and unity_SHC for use with instanced rendering. - - The array of SH values to copy from. - - - - This function converts and copies the entire source array into 7 Vector4 property arrays named unity_SHAr, unity_SHAg, unity_SHAb, unity_SHBr, unity_SHBg, unity_SHBb and unity_SHC for use with instanced rendering. - - The array of SH values to copy from. - - - - This function converts and copies the source array into 7 Vector4 property arrays named unity_SHAr, unity_SHAg, unity_SHAb, unity_SHBr, unity_SHBg, unity_SHBb and unity_SHC with the specified source and destination range for use with instanced rendering. - - The array of SH values to copy from. - The index of the first element in the source array to copy from. - The index of the first element in the destination MaterialPropertyBlock array to copy to. - The number of elements to copy. - - - - This function converts and copies the source array into 7 Vector4 property arrays named unity_SHAr, unity_SHAg, unity_SHAb, unity_SHBr, unity_SHBg, unity_SHBb and unity_SHC with the specified source and destination range for use with instanced rendering. - - The array of SH values to copy from. - The index of the first element in the source array to copy from. - The index of the first element in the destination MaterialPropertyBlock array to copy to. - The number of elements to copy. - - - - Get a color from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a color from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a float from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a float from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a float array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a float array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a float array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a float array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get an int from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get an int from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a matrix from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a matrix from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a matrix array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a matrix array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a matrix array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a matrix array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a texture from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a texture from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a vector from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a vector from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a vector array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Get a vector array from the property block. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a vector array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetch a vector array from the property block into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Set a ComputeBuffer property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The ComputeBuffer to set. - - - - Set a ComputeBuffer property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The ComputeBuffer to set. - - - - Set a color property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Color value to set. - - - - Set a color property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Color value to set. - - - - Set a float property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The float value to set. - - - - Set a float property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The float value to set. - - - - Set a float array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a float array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a float array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a float array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Adds a property to the block. If an int property with the given name already exists, the old value is replaced. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The int value to set. - - - - Adds a property to the block. If an int property with the given name already exists, the old value is replaced. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The int value to set. - - - - Set a matrix property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The matrix value to set. - - - - Set a matrix property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The matrix value to set. - - - - Set a matrix array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a matrix array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a matrix array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a matrix array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a texture property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Texture to set. - - - - Set a texture property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Texture to set. - - - - Set a vector property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Vector4 value to set. - - - - Set a vector property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The Vector4 value to set. - - - - Set a vector array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a vector array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a vector array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - Set a vector array property. - - The name of the property. - The name ID of the property retrieved by Shader.PropertyToID. - The array to set. - - - - A collection of common math functions. - - - - - Returns the absolute value of f. - - - - - - Returns the absolute value of value. - - - - - - Returns the arc-cosine of f - the angle in radians whose cosine is f. - - - - - - Compares two floating point values and returns true if they are similar. - - - - - - - Returns the arc-sine of f - the angle in radians whose sine is f. - - - - - - Returns the arc-tangent of f - the angle in radians whose tangent is f. - - - - - - Returns the angle in radians whose Tan is y/x. - - - - - - - Returns the smallest integer greater to or equal to f. - - - - - - Returns the smallest integer greater to or equal to f. - - - - - - Clamps a value between a minimum float and maximum float value. - - - - - - - - Clamps value between min and max and returns value. - - - - - - - - Clamps value between 0 and 1 and returns value. - - - - - - Returns the closest power of two value. - - - - - - Convert a color temperature in Kelvin to RGB color. - - Temperature in Kelvin. Range 1000 to 40000 Kelvin. - - Correlated Color Temperature as floating point RGB color. - - - - - Returns the cosine of angle f. - - The input angle, in radians. - - The return value between -1 and 1. - - - - - Degrees-to-radians conversion constant (Read Only). - - - - - Calculates the shortest difference between two given angles given in degrees. - - - - - - - A tiny floating point value (Read Only). - - - - - Returns e raised to the specified power. - - - - - - Returns the largest integer smaller than or equal to f. - - - - - - Returns the largest integer smaller to or equal to f. - - - - - - Converts the given value from gamma (sRGB) to linear color space. - - - - - - A representation of positive infinity (Read Only). - - - - - Calculates the linear parameter t that produces the interpolant value within the range [a, b]. - - Start value. - End value. - Value between start and end. - - Percentage of value between start and end. - - - - - Returns true if the value is power of two. - - - - - - Linearly interpolates between a and b by t. - - The start value. - The end value. - The interpolation value between the two floats. - - The interpolated float result between the two float values. - - - - - Same as Lerp but makes sure the values interpolate correctly when they wrap around 360 degrees. - - - - - - - - Linearly interpolates between a and b by t with no limit to t. - - The start value. - The end value. - The interpolation between the two floats. - - The float value as a result from the linear interpolation. - - - - - Converts the given value from linear to gamma (sRGB) color space. - - - - - - Returns the logarithm of a specified number in a specified base. - - - - - - - Returns the natural (base e) logarithm of a specified number. - - - - - - Returns the base 10 logarithm of a specified number. - - - - - - Returns largest of two or more values. - - - - - - - - Returns largest of two or more values. - - - - - - - - Returns the largest of two or more values. - - - - - - - - Returns the largest of two or more values. - - - - - - - - Returns the smallest of two or more values. - - - - - - - - Returns the smallest of two or more values. - - - - - - - - Returns the smallest of two or more values. - - - - - - - - Returns the smallest of two or more values. - - - - - - - - Moves a value current towards target. - - The current value. - The value to move towards. - The maximum change that should be applied to the value. - - - - Same as MoveTowards but makes sure the values interpolate correctly when they wrap around 360 degrees. - - - - - - - - A representation of negative infinity (Read Only). - - - - - Returns the next power of two that is equal to, or greater than, the argument. - - - - - - Generate 2D Perlin noise. - - X-coordinate of sample point. - Y-coordinate of sample point. - - Value between 0.0 and 1.0. (Return value might be slightly beyond 1.0.) - - - - - The well-known 3.14159265358979... value (Read Only). - - - - - PingPongs the value t, so that it is never larger than length and never smaller than 0. - - - - - - - Returns f raised to power p. - - - - - - - Radians-to-degrees conversion constant (Read Only). - - - - - Loops the value t, so that it is never larger than length and never smaller than 0. - - - - - - - Returns f rounded to the nearest integer. - - - - - - Returns f rounded to the nearest integer. - - - - - - Returns the sign of f. - - - - - - Returns the sine of angle f. - - The input angle, in radians. - - The return value between -1 and +1. - - - - - Gradually changes a value towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a value towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a value towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes an angle given in degrees towards a desired goal angle over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes an angle given in degrees towards a desired goal angle over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes an angle given in degrees towards a desired goal angle over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Interpolates between min and max with smoothing at the limits. - - - - - - - - Returns square root of f. - - - - - - Returns the tangent of angle f in radians. - - - - - - A standard 4x4 transformation matrix. - - - - - This property takes a projection matrix and returns the six plane coordinates that define a projection frustum. - - - - - The determinant of the matrix. - - - - - Returns the identity matrix (Read Only). - - - - - The inverse of this matrix (Read Only). - - - - - Is this the identity matrix? - - - - - Attempts to get a scale value from the matrix. - - - - - Attempts to get a rotation quaternion from this matrix. - - - - - Returns the transpose of this matrix (Read Only). - - - - - Returns a matrix with all elements set to zero (Read Only). - - - - - This function returns a projection matrix with viewing frustum that has a near plane defined by the coordinates that were passed in. - - The X coordinate of the left side of the near projection plane in view space. - The X coordinate of the right side of the near projection plane in view space. - The Y coordinate of the bottom side of the near projection plane in view space. - The Y coordinate of the top side of the near projection plane in view space. - Z distance to the near plane from the origin in view space. - Z distance to the far plane from the origin in view space. - Frustum planes struct that contains the view space coordinates of that define a viewing frustum. - - - A projection matrix with a viewing frustum defined by the plane coordinates passed in. - - - - - This function returns a projection matrix with viewing frustum that has a near plane defined by the coordinates that were passed in. - - The X coordinate of the left side of the near projection plane in view space. - The X coordinate of the right side of the near projection plane in view space. - The Y coordinate of the bottom side of the near projection plane in view space. - The Y coordinate of the top side of the near projection plane in view space. - Z distance to the near plane from the origin in view space. - Z distance to the far plane from the origin in view space. - Frustum planes struct that contains the view space coordinates of that define a viewing frustum. - - - A projection matrix with a viewing frustum defined by the plane coordinates passed in. - - - - - Get a column of the matrix. - - - - - - Returns a row of the matrix. - - - - - - Given a source point, a target point, and an up vector, computes a transformation matrix that corresponds to a camera viewing the target from the source, such that the right-hand vector is perpendicular to the up vector. - - The source point. - The target point. - The vector describing the up direction (typically Vector3.up). - - The resulting transformation matrix. - - - - - Transforms a position by this matrix (generic). - - - - - - Transforms a position by this matrix (fast). - - - - - - Transforms a direction by this matrix. - - - - - - Multiplies two matrices. - - - - - - - Transforms a Vector4 by a matrix. - - - - - - - Creates an orthogonal projection matrix. - - - - - - - - - - - Creates a perspective projection matrix. - - - - - - - - - Creates a rotation matrix. - - - - - - Creates a scaling matrix. - - - - - - Sets a column of the matrix. - - - - - - - Sets a row of the matrix. - - - - - - - Sets this matrix to a translation, rotation and scaling matrix. - - - - - - - - Access element at [row, column]. - - - - - Access element at sequential index (0..15 inclusive). - - - - - Returns a nicely formatted string for this matrix. - - - - - - Returns a nicely formatted string for this matrix. - - - - - - Returns a plane that is transformed in space. - - - - - - Creates a translation matrix. - - - - - - Creates a translation, rotation and scaling matrix. - - - - - - - - Checks if this matrix is a valid transform matrix. - - - - - A class that allows creating or modifying meshes from scripts. - - - - - The bind poses. The bind pose at each index refers to the bone with the same index. - - - - - Returns BlendShape count on this mesh. - - - - - The bone weights of each vertex. - - - - - The bounding volume of the mesh. - - - - - Vertex colors of the Mesh. - - - - - Vertex colors of the Mesh. - - - - - Format of the mesh index buffer data. - - - - - Returns true if the Mesh is read/write enabled, or false if it is not. - - - - - The normals of the Mesh. - - - - - The number of sub-meshes inside the Mesh object. - - - - - The tangents of the Mesh. - - - - - An array containing all triangles in the Mesh. - - - - - The base texture coordinates of the Mesh. - - - - - The second texture coordinate set of the mesh, if present. - - - - - The third texture coordinate set of the mesh, if present. - - - - - The fourth texture coordinate set of the mesh, if present. - - - - - The fifth texture coordinate set of the mesh, if present. - - - - - The sixth texture coordinate set of the mesh, if present. - - - - - The seventh texture coordinate set of the mesh, if present. - - - - - The eighth texture coordinate set of the mesh, if present. - - - - - Gets the number of vertex buffers present in the Mesh. (Read Only) - - - - - Returns the number of vertices in the Mesh (Read Only). - - - - - Returns a copy of the vertex positions or assigns a new vertex positions array. - - - - - Adds a new blend shape frame. - - Name of the blend shape to add a frame to. - Weight for the frame being added. - Delta vertices for the frame being added. - Delta normals for the frame being added. - Delta tangents for the frame being added. - - - - Clears all vertex data and all triangle indices. - - - - - - Clears all blend shapes from Mesh. - - - - - Combines several Meshes into this Mesh. - - Descriptions of the Meshes to combine. - Defines whether Meshes should be combined into a single sub-mesh. - Defines whether the transforms supplied in the CombineInstance array should be used or ignored. - - - - - Creates an empty Mesh. - - - - - Gets the base vertex index of the given sub-mesh. - - The sub-mesh index. See subMeshCount. - - The offset applied to all vertex indices of this sub-mesh. - - - - - Gets the bind poses for this instance. - - A list of bind poses to populate. - - - - Returns the frame count for a blend shape. - - The shape index to get frame count from. - - - - Retreives deltaVertices, deltaNormals and deltaTangents of a blend shape frame. - - The shape index of the frame. - The frame index to get the weight from. - Delta vertices output array for the frame being retreived. - Delta normals output array for the frame being retreived. - Delta tangents output array for the frame being retreived. - - - - Returns the weight of a blend shape frame. - - The shape index of the frame. - The frame index to get the weight from. - - - - Returns index of BlendShape by given name. - - - - - - Returns name of BlendShape by given index. - - - - - - Gets the bone weights for this instance. - - A list of bone weights to populate. - - - - Gets the vertex colors for this instance. - - A list of vertex colors to populate. - - - - Gets the vertex colors for this instance. - - A list of vertex colors to populate. - - - - Gets the index count of the given sub-mesh. - - - - - - Gets the starting index location within the Mesh's index buffer, for the given sub-mesh. - - - - - - Fetches the index list for the specified sub-mesh. - - A list of indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - Fetches the index list for the specified sub-mesh. - - A list of indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - Retrieves a native (underlying graphics API) pointer to the index buffer. - - - Pointer to the underlying graphics API index buffer. - - - - - Retrieves a native (underlying graphics API) pointer to the vertex buffer. - - Which vertex buffer to get (some Meshes might have more than one). See vertexBufferCount. - - - Pointer to the underlying graphics API vertex buffer. - - - - - Gets the vertex normals for this instance. - - A list of vertex normals to populate. - - - - Gets the tangents for this instance. - - A list of tangents to populate. - - - - Gets the topology of a sub-mesh. - - - - - - Fetches the triangle list for the specified sub-mesh on this object. - - A list of vertex indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - Fetches the triangle list for the specified sub-mesh on this object. - - A list of vertex indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - Fetches the triangle list for the specified sub-mesh on this object. - - A list of vertex indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - Fetches the triangle list for the specified sub-mesh on this object. - - A list of vertex indices to populate. - The sub-mesh index. See subMeshCount. - True (default value) will apply base vertex offset to returned indices. - - - - The UV distribution metric can be used to calculate the desired mipmap level based on the position of the camera. - - UV set index to return the UV distibution metric for. 0 for first. - - Average of triangle area / uv area. - - - - - Gets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - A list of UVs to populate. - - - - Gets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - A list of UVs to populate. - - - - Gets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - A list of UVs to populate. - - - - Gets the vertex positions for this instance. - - A list of vertex positions to populate. - - - - Optimize mesh for frequent updates. - - - - - Optimizes the Mesh for display. - - - - - Recalculate the bounding volume of the Mesh from the vertices. - - - - - Recalculates the normals of the Mesh from the triangles and vertices. - - - - - Recalculates the tangents of the Mesh from the normals and texture coordinates. - - - - - Vertex colors of the Mesh. - - Per-Vertex Colours. - - - - Vertex colors of the Mesh. - - Per-Vertex Colours. - - - - Sets the index buffer for the sub-mesh. - - The array of indices that define the Mesh. - The topology of the Mesh, e.g: Triangles, Lines, Quads, Points, etc. See MeshTopology. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the indices. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the indices. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the index buffer for the sub-mesh. - - The array of indices that define the Mesh. - The topology of the Mesh, e.g: Triangles, Lines, Quads, Points, etc. See MeshTopology. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the indices. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the indices. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the index buffer for the sub-mesh. - - The array of indices that define the Mesh. - The topology of the Mesh, e.g: Triangles, Lines, Quads, Points, etc. See MeshTopology. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the indices. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the indices. - Optional vertex offset that is added to all triangle vertex indices. - - - - Set the normals of the Mesh. - - Per-vertex normals. - - - - Set the tangents of the Mesh. - - Per-vertex tangents. - - - - Sets the triangle list for the sub-mesh. - - The list of indices that define the triangles. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the triangles. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the triangles. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the triangle list for the sub-mesh. - - The list of indices that define the triangles. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the triangles. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the triangles. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the triangle list for the sub-mesh. - - The list of indices that define the triangles. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the triangles. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the triangles. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the triangle list for the sub-mesh. - - The list of indices that define the triangles. - The sub-mesh to modify. - Calculate the bounding box of the Mesh after setting the triangles. This is done by default. -Use false when you want to use the existing bounding box and reduce the CPU cost of setting the triangles. - Optional vertex offset that is added to all triangle vertex indices. - - - - Sets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - List of UVs to set for the given index. - - - - Sets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - List of UVs to set for the given index. - - - - Sets the UVs of the Mesh. - - The UV channel. Indices start at 0, which corresponds to uv. Note that 1 corresponds to uv2. - List of UVs to set for the given index. - - - - Assigns a new vertex positions array. - - Per-vertex position. - - - - Upload previously done Mesh modifications to the graphics API. - - Frees up system memory copy of mesh data when set to true. - - - - A mesh collider allows you to do between meshes and primitives. - - - - - Use a convex collider from the mesh. - - - - - Options used to enable or disable certain features in mesh cooking. - - - - - Allow the physics engine to increase the volume of the input mesh in attempt to generate a valid convex mesh. - - - - - The mesh object used for collision detection. - - - - - Used when set to inflateMesh to determine how much inflation is acceptable. - - - - - Uses interpolated normals for sphere collisions instead of flat polygonal normals. - - - - - Cooking options that are available with MeshCollider. - - - - - Toggle between cooking for faster simulation or faster cooking time. - - - - - Toggle cleaning of the mesh. - - - - - Allow the physics engine to increase the volume of the input mesh in attempt to generate a valid convex mesh. - - - - - No optional cooking steps will be run. - - - - - Toggle the removal of equal vertices. - - - - - A class to access the Mesh of the. - - - - - Returns the instantiated Mesh assigned to the mesh filter. - - - - - Returns the shared mesh of the mesh filter. - - - - - Renders meshes inserted by the MeshFilter or TextMesh. - - - - - Vertex attributes in this mesh will override or add attributes of the primary mesh in the MeshRenderer. - - - - - Index of the first sub-mesh to use from the Mesh associated with this MeshRenderer (Read Only). - - - - - Topology of Mesh faces. - - - - - Mesh is made from lines. - - - - - Mesh is a line strip. - - - - - Mesh is made from points. - - - - - Mesh is made from quads. - - - - - Mesh is made from triangles. - - - - - Use this class to record to an AudioClip using a connected microphone. - - - - - A list of available microphone devices, identified by name. - - - - - Stops recording. - - The name of the device. - - - - Get the frequency capabilities of a device. - - The name of the device. - Returns the minimum sampling frequency of the device. - Returns the maximum sampling frequency of the device. - - - - Get the position in samples of the recording. - - The name of the device. - - - - Query if a device is currently recording. - - The name of the device. - - - - Start Recording with device. - - The name of the device. - Indicates whether the recording should continue recording if lengthSec is reached, and wrap around and record from the beginning of the AudioClip. - Is the length of the AudioClip produced by the recording. - The sample rate of the AudioClip produced by the recording. - - The function returns null if the recording fails to start. - - - - - Attribute used to make a float or int variable in a script be restricted to a specific minimum value. - - - - - The minimum allowed value. - - - - - Attribute used to make a float or int variable in a script be restricted to a specific minimum value. - - The minimum allowed value. - - - - Enum describing what lighting mode to be used with Mixed lights. - - - - - Mixed lights provide realtime direct lighting while indirect light is baked into lightmaps and light probes. - - - - - Mixed lights provide realtime direct lighting. Indirect lighting gets baked into lightmaps and light probes. Shadowmasks and light probe occlusion get generated for baked shadows. The Shadowmask Mode used at run time can be set in the Quality Settings panel. - - - - - Mixed lights provide baked direct and indirect lighting for static objects. Dynamic objects receive realtime direct lighting and cast shadows on static objects using the main directional light in the Scene. - - - - - MonoBehaviour is the base class from which every Unity script derives. - - - - - Logs message to the Unity Console (identical to Debug.Log). - - - - - - Allow a specific instance of a MonoBehaviour to run in edit mode (only available in the editor). - - - - - Disabling this lets you skip the GUI layout phase. - - - - - Cancels all Invoke calls on this MonoBehaviour. - - - - - Cancels all Invoke calls with name methodName on this behaviour. - - - - - - Invokes the method methodName in time seconds. - - - - - - - Invokes the method methodName in time seconds, then repeatedly every repeatRate seconds. - - - - - - - - Is any invoke on methodName pending? - - - - - - Is any invoke pending on this MonoBehaviour? - - - - - Starts a coroutine. - - - - - - Starts a coroutine named methodName. - - - - - - - Starts a coroutine named methodName. - - - - - - - Starts a Coroutine named coroutine. - - Name of the created Coroutine. - - - - Stops all coroutines running on this behaviour. - - - - - Stops the first coroutine named methodName, or the coroutine stored in routine running on this behaviour. - - Name of coroutine. - Name of the function in code, including coroutines. - - - - Stops the first coroutine named methodName, or the coroutine stored in routine running on this behaviour. - - Name of coroutine. - Name of the function in code, including coroutines. - - - - Stops the first coroutine named methodName, or the coroutine stored in routine running on this behaviour. - - Name of coroutine. - Name of the function in code, including coroutines. - - - - Base class for AnimationClips and BlendTrees. - - - - - The type of motion vectors that should be generated. - - - - - Use only camera movement to track motion. - - - - - Do not track motion. Motion vectors will be 0. - - - - - Use a specific pass (if required) to track motion. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - Attribute to make a string be edited with a multi-line textfield. - - - - - Attribute used to make a string value be shown in a multiline textarea. - - How many lines of text to make room for. Default is 3. - - - - Attribute used to make a string value be shown in a multiline textarea. - - How many lines of text to make room for. Default is 3. - - - - The network class is at the heart of the network implementation and provides the core functions. - - - - - All connected players. - - - - - The IP address of the connection tester used in Network.TestConnection. - - - - - The port of the connection tester used in Network.TestConnection. - - - - - Set the password for the server (for incoming connections). - - - - - Returns true if your peer type is client. - - - - - Enable or disable the processing of network messages. - - - - - Returns true if your peer type is server. - - - - - Set the log level for network messages (default is Off). - - - - - Set the maximum amount of connections/players allowed. - - - - - Get or set the minimum number of ViewID numbers in the ViewID pool given to clients by the server. - - - - - The IP address of the NAT punchthrough facilitator. - - - - - The port of the NAT punchthrough facilitator. - - - - - The status of the peer type, i.e. if it is disconnected, connecting, server or client. - - - - - Get the local NetworkPlayer instance. - - - - - The IP address of the proxy server. - - - - - Set the proxy server password. - - - - - The port of the proxy server. - - - - - The default send rate of network updates for all Network Views. - - - - - Get the current network time (seconds). - - - - - Indicate if proxy support is needed, in which case traffic is relayed through the proxy server. - - - - - Query for the next available network view ID number and allocate it (reserve). - - - - - Close the connection to another system. - - - - - - - Connect to the specified host (ip or domain name) and server port. - - - - - - - - Connect to the specified host (ip or domain name) and server port. - - - - - - - - This function is exactly like Network.Connect but can accept an array of IP addresses. - - - - - - - - This function is exactly like Network.Connect but can accept an array of IP addresses. - - - - - - - - Connect to a server GUID. NAT punchthrough can only be performed this way. - - - - - - - Connect to a server GUID. NAT punchthrough can only be performed this way. - - - - - - - Connect to the host represented by a HostData structure returned by the Master Server. - - - - - - - Connect to the host represented by a HostData structure returned by the Master Server. - - - - - - - Destroy the object associated with this view ID across the network. - - - - - - Destroy the object across the network. - - - - - - Destroy all the objects based on view IDs belonging to this player. - - - - - - Close all open connections and shuts down the network interface. - - - - - - Close all open connections and shuts down the network interface. - - - - - - The last average ping time to the given player in milliseconds. - - - - - - The last ping time to the given player in milliseconds. - - - - - - Check if this machine has a public IP address. - - - - - Initializes security layer. - - - - - Initialize the server. - - - - - - - - Initialize the server. - - - - - - - - Network instantiate a Prefab. - - - - - - - - - Remove all RPC functions which belong to this player ID. - - - - - - Remove all RPC functions which belong to this player ID and were sent based on the given group. - - - - - - - Remove the RPC function calls accociated with this view ID number. - - - - - - Remove all RPC functions which belong to given group number. - - - - - - Set the level prefix which will then be prefixed to all network ViewID numbers. - - - - - - Enable or disables the reception of messages in a specific group number from a specific player. - - - - - - - - Enables or disables transmission of messages and RPC calls on a specific network group number. - - - - - - - Enable or disable transmission of messages and RPC calls based on target network player as well as the network group. - - - - - - - - Test this machines network connection. - - - - - - Test this machines network connection. - - - - - - Test the connection specifically for NAT punch-through connectivity. - - - - - - Test the connection specifically for NAT punch-through connectivity. - - - - - - Possible status messages returned by Network.Connect and in MonoBehaviour.OnFailedToConnect|OnFailedToConnect in case the error was not immediate. - - - - - The reason a disconnect event occured, like in MonoBehaviour.OnDisconnectedFromServer|OnDisconnectedFromServer. - - - - - Responsible for rejecting or accepting certificates received on https requests. - - - - - Signals that this [CertificateHandler] is no longer being used, and should clean up any resources it is using. - - - - - Callback, invoked for each leaf certificate sent by the remote server. - - Certificate data in PEM or DER format. If certificate data contains multiple certificates, the first one is the leaf certificate. - - true if the certificate should be accepted, false if not. - - - - - Defines parameters of channels. - - - - - Returns true if the channel belongs to a shared group. - - - - - UnderlyingModel.MemDoc.MemDocModel. - - Requested type of quality of service (default Unreliable). - Copy constructor. - - - - UnderlyingModel.MemDoc.MemDocModel. - - Requested type of quality of service (default Unreliable). - Copy constructor. - - - - UnderlyingModel.MemDoc.MemDocModel. - - Requested type of quality of service (default Unreliable). - Copy constructor. - - - - Channel quality of service. - - - - - Defines size of the buffer holding reliable messages, before they will be acknowledged. - - - - - Ack buffer can hold 128 messages. - - - - - Ack buffer can hold 32 messages. - - - - - Ack buffer can hold 64 messages. - - - - - Ack buffer can hold 96 messages. - - - - - This class defines parameters of connection between two peers, this definition includes various timeouts and sizes as well as channel configuration. - - - - - Defines the duration in milliseconds that the receiver waits for before it sends an acknowledgement back without waiting for any data payload. Default value = 33. - -Network clients that send data to a server may do so using many different quality of service (QOS) modes, some of which (reliable modes) expect the server to send back acknowledgement of receipt of data sent. - -Servers must periodically acknowledge data packets received over channels with reliable QOS modes by sending packets containing acknowledgement data (also known as "acks") back to the client. If the server were to send an acknowledgement immediately after receiving each packet from the client there would be significant overhead (the acknowledgement is a 32 or 64 bit integer, which is very small compared to the whole size of the packet which also contains the IP and the UDP header). AckDelay allows the server some time to accumulate a list of received reliable data packets to acknowledge, and decreases traffic overhead by combining many acknowledgements into a single packet. - - - - - Determines the size of the buffer used to store reliable messages that are waiting for acknowledgement. It can be set to Acks32, Acks64, Acks96, or Acks128. Depends of this setting buffer can hold 32, 64, 96, or 128 messages. Default value = Ack32. - -Messages sent on reliable quality of service channels are stored in a special buffer while they wait for acknowledgement from the peer. This buffer can be either 32, 64, 96 or 128 positions long. It is recommended to begin with this value set to Ack32, which defines a buffer up to 32 messages in size. If you receive NoResources errors often when you send reliable messages, change this value to the next possible size. - - - - - Adds a new channel to the configuration and returns the unique id of that channel. - -Channels are logical delimiters of traffic between peers. Every time you send data to a peer, you should use two ids: connection id and channel id. Channels are not only logically separate traffic but could each be configured with a different quality of service (QOS). In the example below, a configuration is created containing two channels with Unreliable and Reliable QOS types. This configuration is then used for sending data. - - Add new channel to configuration. - - Channel id, user can use this id to send message via this channel. - - - - - Defines the timeout in milliseconds after which messages sent via the AllCost channel will be re-sent without waiting for acknowledgement. Default value = 20 ms. - -AllCost delivery quality of service (QOS) is a special QOS for delivering game-critical information, such as when the game starts, or when bullets are shot. - -Due to packets dropping, sometimes reliable messages cannot be delivered and need to be re-sent. Reliable messages will re-sent after RTT+Delta time, (RTT is round trip time) where RTT is a dynamic value and can reach couple of hundred milliseconds. For the AllCost delivery channel this timeout can be user-defined to force game critical information to be re-sent. - - - - - Defines, when multiplied internally by InitialBandwidth, the maximum bandwidth that can be used under burst conditions. - - - - - (Read Only) The number of channels in the current configuration. - - - - - The list of channels belonging to the current configuration. - -Note: any ConnectionConfig passed as a parameter to a function in Unity Multiplayer is deep copied (that is, an entirely new copy is made, with no references to the original). - - - - - Timeout in ms which library will wait before it will send another connection request. - - - - - Will create default connection config or will copy them from another. - - Connection config. - - - - Will create default connection config or will copy them from another. - - Connection config. - - - - Defines the timeout in milliseconds before a connection is considered to have been disconnected. Default value = 2000. - -Unity Multiplayer defines conditions under which a connection is considered as disconnected. Disconnection can happen for the following reasons: - -(1) A disconnection request was received. - -(2) The connection has not received any traffic at all for a time longer than DisconnectTimeout (Note that live connections receive regular keep-alive packets, so in this case "no traffic" means not only no user traffic but also absence of any keep-alive traffic as well). - -(3) Flow control determines that the time between sending packets is longer than DisconnectTimeout. Keep-alive packets are regularly delivered from peers and contain statistical information. This information includes values of packet loss due to network and peer overflow conditions. Setting NetworkDropThreshold and OverflowDropThreshold defines thresholds for flow control which can decrease packet frequency. When the time before sending the next packet is longer than DisconnectTimeout, the connection will be considered as disconnected and a disconnect event is received. - - - - - Defines the fragment size for fragmented messages (for QOS: ReliableFragmented and UnreliableFragmented). Default value = 500. - -Under fragmented quality of service modes, the original message is split into fragments (up to 64) of up to FragmentSize bytes each. The fragment size depends on the frequency and size of reliable messages sent. Each reliable message potentially could be re-sent, so you need to choose a fragment size less than the remaining free space in a UDP packet after retransmitted reliable messages are added to the packet. For example, if Networking.ConnectionConfig.PacketSize is 1440 bytes, and a reliable message's average size is 200 bytes, it would be wise to set this parameter to 900 – 1000 bytes. - - - - - Return the QoS set for the given channel or throw an out of range exception. - - Index in array. - - Channel QoS. - - - - - Return IList<byte> of channel IDs which belong to the group. - - Group id. - - List of channel IDs belonging to the group. - - - - - Gets or sets the bandwidth in bytes per second that can be used by Unity Multiplayer. No traffic over this limit is allowed. Unity Multiplayer may internally reduce the bandwidth it uses due to flow control. The default value is 1.5MB/sec (1,536,000 bytes per second). The default value is intentionally a large number to allow all traffic to pass without delay. - - - - - Allows you to combine multiple channels into a single group, so those channels share a common receiving order. - - The list of channel indices which should be grouped together. The list can include both reliable and unreliable channels. - - - - Defines the maximum number of small reliable messages that can be included in one combined message. Default value = 10. - -Since each message sent to a server contains IP information and a UDP header, duplicating this information for every message sent can be inefficient in the case where there are many small messages being sent frequently. Many small reliable messages can be combined into one longer reliable message, saving space in the waiting buffer. Unity Multiplayer will automatically combine up to MaxCombinedReliableMessageCount small messages into one message. To qualify as a small message, the data payload of the message should not be greater than MaxCombinedReliableMessageSize. - - - - - Defines the maximum size in bytes of a reliable message which is considered small enough to include in a combined message. Default value = 100. - -Since each message sent to a server contains IP information and a UDP header, duplicating this information for every message sent can be inefficient in the case where there are many small messages being sent frequently. Many small reliable messages can be combined into one longer reliable message, saving space in the waiting buffer. Unity Multiplayer will automatically combine up to MaxCombinedReliableMessageCount small messages into one message. To qualify as a small message, the data payload of the message should not be greater than MaxCombinedReliableMessageSize. - - - - - Defines the maximum number of times Unity Multiplayer will attempt to send a connection request without receiving a response before it reports that it cannot establish a connection. Default value = 10. - - - - - Defines maximum number of messages that can be held in the queue for sending. Default value = 128. - -This buffer serves to smooth spikes in traffic and decreases network jitter. If the queue is full, a NoResources error will result from any calls to Send(). Setting this value greater than around 300 is likely to cause significant delaying of message delivering and can make game unplayable. - - - - - Defines minimum time in milliseconds between sending packets. This duration may be automatically increased if required by flow control. Default value = 10. - -When Send() is called, Unity Multiplayer won’t send the message immediately. Instead, once every SendTimeout milliseconds each connection is checked to see if it has something to send. While initial and minimal send timeouts can be set, these may be increased internally due to network conditions or buffer overflows. - - - - - Defines the percentage (from 0 to 100) of packets that need to be dropped due to network conditions before the SendUpdate timeout is automatically increased (and send rate is automatically decreased). Default value = 5. - -To avoid receiver overflow, Unity Multiplayer supports flow control. Each ping packet sent between connected peers contains two values: - -(1) Packets lost due to network conditions. - -(2) Packets lost because the receiver does not have free space in its incoming buffers. - -Like OverflowDropThreshold, both values are reported in percent. Use NetworkDropThreshold and OverflowDropThreshold to set thresholds for these values. If a value reported in the ping packet exceeds the corresponding threshold, Unity Multiplayer increases the sending timeout for packets up to a maximum value of DisconnectTimeout. - -Note: wireless networks usually exhibit 5% or greater packet loss. For wireless networks it is advisable to use a NetworkDropThreshold of 40-50%. - - - - - Defines the percentage (from 0 to 100) of packets that need to be dropped due to lack of space in internal buffers before the SendUpdate timeout is automatically increased (and send rate is automatically decreased). Default value = 5. - -To avoid receiver overflow, Unity Multiplayer supports flow control. Each ping packet sent between connected peers contains two values: - -(1) Packets lost due to network conditions. - -(2) Packets lost because the receiver does not have free space in its incoming buffers. - -Like NetworkDropThreshold, both values are reported in percent. Use NetworkDropThreshold and OverflowDropThreshold to set thresholds for these values. If a value reported in the ping packet exceeds the corresponding threshold, Unity Multiplayer increases the sending timeout for packets up to a maximum value of DisconnectTimeout. - -Note: wireless networks usually exhibit 5% or greater packet loss. For wireless networks it is advisable to use a NetworkDropThreshold of 40-50%. - - - - - Defines maximum packet size (in bytes) (including payload and all header). Packet can contain multiple messages inside. Default value = 1500. - -Note that this default value is suitable for local testing only. Usually you should change this value; a recommended setting for PC or mobile is 1470. For games consoles this value should probably be less than ~1100. Wrong size definition can cause packet dropping. - - - - - Defines the duration in milliseconds between keep-alive packets, also known as pings. Default value = 500. - -The ping frequency should be long enough to accumulate good statistics and short enough to compare with DisconnectTimeout. A good guideline is to have more than 3 pings per disconnect timeout, and more than 5 messages per ping. For example, with a DisconnectTimeout of 2000ms, a PingTimeout of 500ms works well. - - - - - Defines the maximum wait time in milliseconds before the "not acknowledged" message is re-sent. Default value = 1200. - -It does not make a lot of sense to wait for acknowledgement forever. This parameter sets an upper time limit at which point reliable messages are re-sent. - - - - - Gets or sets the delay in milliseconds after a call to Send() before packets are sent. During this time, new messages may be combined in queued packets. Default value: 10ms. - - - - - (Read Only) The number of shared order groups in current configuration. - - - - - Defines the path to the file containing the certification authority (CA) certificate for WebSocket via SSL communication. - - - - - Defines path to SSL certificate file, for WebSocket via SSL communication. - - - - - Defines the path to the file containing the private key for WebSocket via SSL communication. - - - - - Defines the size in bytes of the receiving buffer for UDP sockets. It is useful to set this parameter equal to the maximum size of a fragmented message. Default value is OS specific (usually 8kb). - - - - - When starting a server use protocols that make use of platform specific optimisations where appropriate rather than cross-platform protocols. (Sony consoles only). - - - - - Validate parameters of connection config. Will throw exceptions if parameters are incorrect. - - - - - - WebSocket only. Defines the buffer size in bytes for received frames on a WebSocket host. If this value is 0 (the default), a 4 kilobyte buffer is used. Any other value results in a buffer of that size, in bytes. - -WebSocket message fragments are called "frames". A WebSocket host has a buffer to store incoming message frames. Therefore this buffer should be set to the largest legal frame size supported. If an incoming frame exceeds the buffer size, no error is reported. However, the buffer will invoke the user callback in order to create space for the overflow. - - - - - Create configuration for network simulator; You can use this class in editor and developer build only. - - - - - Will create object describing network simulation parameters. - - Minimal simulation delay for outgoing traffic in ms. - Average simulation delay for outgoing traffic in ms. - Minimal simulation delay for incoming traffic in ms. - Average simulation delay for incoming traffic in ms. - Probability of packet loss 0 <= p <= 1. - - - - Destructor. - - - - - Manage and process HTTP response body data received from a remote server. - - - - - Returns the raw bytes downloaded from the remote server, or null. (Read Only) - - - - - Returns true if this DownloadHandler has been informed by its parent UnityWebRequest that all data has been received, and this DownloadHandler has completed any necessary post-download processing. (Read Only) - - - - - Convenience property. Returns the bytes from data interpreted as a UTF8 string. (Read Only) - - - - - Callback, invoked when all data has been received from the remote server. - - - - - Signals that this DownloadHandler is no longer being used, and should clean up any resources it is using. - - - - - Callback, invoked when the data property is accessed. - - - Byte array to return as the value of the data property. - - - - - Callback, invoked when UnityWebRequest.downloadProgress is accessed. - - - The return value for UnityWebRequest.downloadProgress. - - - - - Callback, invoked when the text property is accessed. - - - String to return as the return value of the text property. - - - - - Callback, invoked with a Content-Length header is received. - - The value of the received Content-Length header. - - - - Callback, invoked as data is received from the remote server. - - A buffer containing unprocessed data, received from the remote server. - The number of bytes in data which are new. - - True if the download should continue, false to abort. - - - - - A DownloadHandler subclass specialized for downloading AssetBundles. - - - - - Returns the downloaded AssetBundle, or null. (Read Only) - - - - - Standard constructor for non-cached asset bundles. - - The nominal (pre-redirect) URL at which the asset bundle is located. - A checksum to compare to the downloaded data for integrity checking, or zero to skip integrity checking. - - - - Simple versioned constructor. Caches downloaded asset bundles. - - The nominal (pre-redirect) URL at which the asset bundle is located. - A checksum to compare to the downloaded data for integrity checking, or zero to skip integrity checking. - Current version number of the asset bundle at url. Increment to redownload. - - - - Versioned constructor. Caches downloaded asset bundles. - - The nominal (pre-redirect) URL at which the asset bundle is located. - A checksum to compare to the downloaded data for integrity checking, or zero to skip integrity checking. - A hash object defining the version of the asset bundle. - - - - Versioned constructor. Caches downloaded asset bundles to a customized cache path. - - The nominal (pre-redirect) URL at which the asset bundle is located. - A hash object defining the version of the asset bundle. - A checksum to compare to the downloaded data for integrity checking, or zero to skip integrity checking. - A structure used to download a given version of AssetBundle to a customized cache path. - AssetBundle name which is used as the customized cache path. - - - - Versioned constructor. Caches downloaded asset bundles to a customized cache path. - - The nominal (pre-redirect) URL at which the asset bundle is located. - A hash object defining the version of the asset bundle. - A checksum to compare to the downloaded data for integrity checking, or zero to skip integrity checking. - A structure used to download a given version of AssetBundle to a customized cache path. - AssetBundle name which is used as the customized cache path. - - - - Returns the downloaded AssetBundle, or null. - - A finished UnityWebRequest object with DownloadHandlerAssetBundle attached. - - The same as DownloadHandlerAssetBundle.assetBundle - - - - - Not implemented. Throws <a href="http:msdn.microsoft.comen-uslibrarysystem.notsupportedexception">NotSupportedException<a>. - - - Not implemented. - - - - - Not implemented. Throws <a href="http:msdn.microsoft.comen-uslibrarysystem.notsupportedexception">NotSupportedException<a>. - - - Not implemented. - - - - - A DownloadHandler subclass specialized for downloading audio data for use as AudioClip objects. - - - - - Returns the downloaded AudioClip, or null. (Read Only) - - - - - Create AudioClip that is compressed in memory. - - - - - Create streaming AudioClip. - - - - - Constructor, specifies what kind of audio data is going to be downloaded. - - The nominal (pre-redirect) URL at which the audio clip is located. - Value to set for AudioClip type. - - - - Returns the downloaded AudioClip, or null. - - A finished UnityWebRequest object with DownloadHandlerAudioClip attached. - - The same as DownloadHandlerAudioClip.audioClip - - - - - Called by DownloadHandler.data. Returns a copy of the downloaded clip data as raw bytes. - - - A copy of the downloaded data. - - - - - A general-purpose DownloadHandler implementation which stores received data in a native byte buffer. - - - - - Default constructor. - - - - - Returns a copy of the native-memory buffer interpreted as a UTF8 string. - - A finished UnityWebRequest object with DownloadHandlerBuffer attached. - - The same as DownloadHandlerBuffer.text - - - - - Returns a copy of the contents of the native-memory data buffer as a byte array. - - - A copy of the data which has been downloaded. - - - - - Download handler for saving the downloaded data to file. - - - - - Should the created file be removed if download is aborted (manually or due to an error). Default: false. - - - - - Creates a new instance and a file on disk where downloaded data will be written to. - - Path to file to be written. - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - A UnityWebRequest with attached DownloadHandlerMovieTexture. - - A MovieTexture created out of downloaded bytes. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - Raw downloaded bytes. - - - - - An abstract base class for user-created scripting-driven DownloadHandler implementations. - - - - - Create a DownloadHandlerScript which allocates new buffers when passing data to callbacks. - - - - - Create a DownloadHandlerScript which reuses a preallocated buffer to pass data to callbacks. - - A byte buffer into which data will be copied, for use by DownloadHandler.ReceiveData. - - - - A DownloadHandler subclass specialized for downloading images for use as Texture objects. - - - - - Returns the downloaded Texture, or null. (Read Only) - - - - - Default constructor. - - - - - Constructor, allows TextureImporter.isReadable property to be set. - - Value to set for TextureImporter.isReadable. - - - - Returns the downloaded Texture, or null. - - A finished UnityWebRequest object with DownloadHandlerTexture attached. - - The same as DownloadHandlerTexture.texture - - - - - Called by DownloadHandler.data. Returns a copy of the downloaded image data as raw bytes. - - - A copy of the downloaded data. - - - - - Defines global paramters for network library. - - - - - Defines the callback delegate which you can use to get a notification when a connection is ready to send data. - - - - - Create new global config object. - - - - - Defines how many hosts you can use. Default Value = 16. Max value = 128. - - - - - Deprecated. Defines maximum delay for network simulator. See Also: MaxTimerTimeout. - - - - - Defines maximum possible packet size in bytes for all network connections. - - - - - Defines the maximum timeout in milliseconds for any configuration. The default value is 12 seconds (12000ms). - - - - - Deprecated. Defines the minimal timeout for network simulator. You cannot set up any delay less than this value. See Also: MinTimerTimeout. - - - - - Defines the minimum timeout in milliseconds recognised by the system. The default value is 1 ms. - - - - - Defines the callback delegate which you can use to get a notification when the host (defined by hostID) has a network event. The callback is called for all event types except Networking.NetworkEventType.Nothing. - -See Also: Networking.NetworkEventType - - - - - This property determines the initial size of the queue that holds messages received by Unity Multiplayer before they are processed. - - - - - Defines the initial size of the send queue. Messages are placed in this queue ready to be sent in packets to their destination. - - - - - Defines reactor model for the network library. - - - - - Defines (1) for select reactor, minimum time period, when system will check if there are any messages for send (2) for fixrate reactor, minimum interval of time, when system will check for sending and receiving messages. - - - - - Defines how many worker threads are available to handle incoming and outgoing messages. - - - - - Class defines network topology for host (socket opened by Networking.NetworkTransport.AddHost function). This topology defines: (1) how many connection with default config will be supported and (2) what will be special connections (connections with config different from default). - - - - - Add special connection to topology (for example if you need to keep connection to standalone chat server you will need to use this function). Returned id should be use as one of parameters (with ip and port) to establish connection to this server. - - Connection config for special connection. - - Id of this connection. You should use this id when you call Networking.NetworkTransport.Connect. - - - - - Create topology. - - Default config. - Maximum default connections. - - - - Defines config for default connections in the topology. - - - - - Return reference to special connection config. Parameters of this config can be changed. - - Config id. - - Connection config. - - - - - Defines how many connection with default config be permitted. - - - - - Defines the maximum number of messages that each host can hold in its pool of received messages. The default size is 128. - - - - - Defines the maximum number of messages that each host can hold in its pool of messages waiting to be sent. The default size is 128. - - - - - List of special connection configs. - - - - - Returns count of special connection added to topology. - - - - - An interface for composition of data into multipart forms. - - - - - Returns the value to use in the Content-Type header for this form section. - - - The value to use in the Content-Type header, or null. - - - - - Returns a string denoting the desired filename of this section on the destination server. - - - The desired file name of this section, or null if this is not a file section. - - - - - Returns the raw binary data contained in this section. Must not return null or a zero-length array. - - - The raw binary data contained in this section. Must not be null or empty. - - - - - Returns the name of this section, if any. - - - The section's name, or null. - - - - - Details about a UNET MatchMaker match. - - - - - The binary access token this client uses to authenticate its session for future commands. - - - - - IP address of the host of the match,. - - - - - The numeric domain for the match. - - - - - The unique ID of this match. - - - - - NodeID for this member client in the match. - - - - - Port of the host of the match. - - - - - This flag indicates whether or not the match is using a Relay server. - - - - - A class describing the match information as a snapshot at the time the request was processed on the MatchMaker. - - - - - The average Elo score of the match. - - - - - The current number of players in the match. - - - - - The collection of direct connect info classes describing direct connection information supplied to the MatchMaker. - - - - - The NodeID of the host for this match. - - - - - Describes if the match is private. Private matches are unlisted in ListMatch results. - - - - - The collection of match attributes on this match. - - - - - The maximum number of players this match can grow to. - - - - - The text name for this match. - - - - - The network ID for this match. - - - - - A class describing one member of a match and what direct connect information other clients have supplied. - - - - - The host priority for this direct connect info. Host priority describes the order in which this match member occurs in the list of clients attached to a match. - - - - - NodeID of the match member this info refers to. - - - - - The private network address supplied for this direct connect info. - - - - - The public network address supplied for this direct connect info. - - - - - A component for communicating with the Unity Multiplayer Matchmaking service. - - - - - The base URI of the MatchMaker that this NetworkMatch will communicate with. - - - - - A delegate that can handle MatchMaker responses that return basic response types (generally only indicating success or failure and extended information if a failure did happen). - - Indicates if the request succeeded. - A text description of the failure if success is false. - - - - Use this function to create a new match. The client which calls this function becomes the host of the match. - - The text string describing the name for this match. - When creating a match, the matchmaker will use either this value, or the maximum size you have configured online at https:multiplayer.unity3d.com, whichever is lower. This way you can specify different match sizes for a particular game, but still maintain an overall size limit in the online control panel. - A bool indicating if this match should be available in NetworkMatch.ListMatches results. - A text string indicating if this match is password protected. If it is, all clients trying to join this match must supply the correct match password. - The optional public client address. This value is stored on the matchmaker and given to clients listing matches. It is intended to be a network address for connecting to this client directly over the internet. This value will only be present if a publicly available address is known, and direct connection is supported by the matchmaker. - The optional private client address. This value is stored on the matchmaker and given to clients listing matches. It is intended to be a network address for connecting to this client directly on a local area network. This value will only be present if direct connection is supported by the matchmaker. This may be an empty string and it will not affect the ability to interface with matchmaker or use relay server. - The Elo score for the client hosting the match being created. If this number is set on all clients to indicate relative skill level, this number is used to return matches ordered by those that are most suitable for play given a listing player's skill level. This may be 0 on all clients, which would disable any Elo calculations in the MatchMaker. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback to be called when this function completes. This will be called regardless of whether the function succeeds or fails. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - Response delegate containing basic information plus a data member. This is used on a subset of MatchMaker callbacks that require data passed in along with the success/failure information of the call itself. - - Indicates if the request succeeded. - If success is false, this will contain a text string indicating the reason. - The generic passed in containing data required by the callback. This typically contains data returned from a call to the service backend. - - - - This function is used to tell MatchMaker to destroy a match in progress, regardless of who is connected. - - The NetworkID of the match to terminate. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback to be called when the request completes. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - A function to allow an individual client to be dropped from a match. - - The NetworkID of the match the client to drop belongs to. - The NodeID of the client to drop inside the specified match. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback to invoke when the request completes. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - The function used to tell MatchMaker the current client wishes to join a specific match. - - The NetworkID of the match to join. This is found through calling NetworkMatch.ListMatches and picking a result from the returned list of matches. - The password of the match. Leave empty if there is no password for the match, and supply the text string password if the match was configured to have one of the NetworkMatch.CreateMatch request. - The optional public client address. This value will be stored on the matchmaker and given to other clients listing matches. You should send this value if you want your players to be able to connect directly with each other over the internet. Alternatively you can pass an empty string and it will not affect the ability to interface with matchmaker or use relay server. - The optional private client address. This value will be stored on the matchmaker and given to other clients listing matches. You should send this value if you want your players to be able to connect directly with each other over a Local Area Network. Alternatively you can pass an empty string and it will not affect the ability to interface with matchmaker or use relay server. - The Elo score for the client joining the match being created. If this number is set on all clients to indicate relative skill level, this number is used to return matches ordered by those that are most suitable for play given a listing player's skill level. This may be 0 on all clients, which would disable any Elo calculations in the MatchMaker. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback to be invoked when this call completes. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - The function to list ongoing matches in the MatchMaker. - - The current page to list in the return results. - The size of the page requested. This determines the maximum number of matches contained in the list of matches passed into the callback. - The text string name filter. This is a partial wildcard search against match names that are currently active, and can be thought of as matching equivalent to *<matchNameFilter>* where any result containing the entire string supplied here will be in the result set. - Boolean that indicates if the response should contain matches that are private (meaning matches that are password protected). - The Elo score target for the match list results to be grouped around. If used, this should be set to the Elo level of the client listing the matches so results will more closely match that player's skill level. If not used this can be set to 0 along with all other Elo refereces in funcitons like NetworkMatch.CreateMatch or NetworkMatch.JoinMatch. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback invoked when this call completes on the MatchMaker. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - This function allows the caller to change attributes on a match in progress. - - The NetworkID of the match to set attributes on. - A bool indicating whether the match should be listed in NetworkMatch.ListMatches results after this call is complete. - The request domain for this request. Only requests in the same domain can interface with each other. For example if a NetworkMatch.CreateMatch is made with domain 1, only ListMatches that also specify domain 1 will find that match. Use this value to silo different (possibly incompatible) client versions. - The callback invoked after the call has completed, indicating if it was successful or not. - - This function is asynchronous and will complete at some point in the future, when the coroutine has finished communicating with the service backend. - - - - - This method is deprecated. Please instead log in through the editor services panel and setup the project under the Unity Multiplayer section. This will populate the required infomation from the cloud site automatically. - - Deprecated, see description. - - - - A helper object for form sections containing generic, non-file data. - - - - - Returns the value to use in this section's Content-Type header. - - - The Content-Type header for this section, or null. - - - - - Returns a string denoting the desired filename of this section on the destination server. - - - The desired file name of this section, or null if this is not a file section. - - - - - Returns the raw binary data contained in this section. Will not return null or a zero-length array. - - - The raw binary data contained in this section. Will not be null or empty. - - - - - Returns the name of this section, if any. - - - The section's name, or null. - - - - - Raw data section, unnamed and no Content-Type header. - - Data payload of this section. - - - - Raw data section with a section name, no Content-Type header. - - Section name. - Data payload of this section. - - - - A raw data section with a section name and a Content-Type header. - - Section name. - Data payload of this section. - The value for this section's Content-Type header. - - - - A named raw data section whose payload is derived from a string, with a Content-Type header. - - Section name. - String data payload for this section. - The value for this section's Content-Type header. - An encoding to marshal data to or from raw bytes. - - - - A named raw data section whose payload is derived from a UTF8 string, with a Content-Type header. - - Section name. - String data payload for this section. - C. - - - - A names raw data section whose payload is derived from a UTF8 string, with a default Content-Type. - - Section name. - String data payload for this section. - - - - An anonymous raw data section whose payload is derived from a UTF8 string, with a default Content-Type. - - String data payload for this section. - - - - A helper object for adding file uploads to multipart forms via the [IMultipartFormSection] API. - - - - - Returns the value of the section's Content-Type header. - - - The Content-Type header for this section, or null. - - - - - Returns a string denoting the desired filename of this section on the destination server. - - - The desired file name of this section, or null if this is not a file section. - - - - - Returns the raw binary data contained in this section. Will not return null or a zero-length array. - - - The raw binary data contained in this section. Will not be null or empty. - - - - - Returns the name of this section, if any. - - - The section's name, or null. - - - - - Contains a named file section based on the raw bytes from data, with a custom Content-Type and file name. - - Name of this form section. - Raw contents of the file to upload. - Name of the file uploaded by this form section. - The value for this section's Content-Type header. - - - - Contains an anonymous file section based on the raw bytes from data, assigns a default Content-Type and file name. - - Raw contents of the file to upload. - - - - Contains an anonymous file section based on the raw bytes from data with a specific file name. Assigns a default Content-Type. - - Raw contents of the file to upload. - Name of the file uploaded by this form section. - - - - Contains a named file section with data drawn from data, as marshaled by dataEncoding. Assigns a specific file name from fileName and a default Content-Type. - - Name of this form section. - Contents of the file to upload. - A string encoding. - Name of the file uploaded by this form section. - - - - An anonymous file section with data drawn from data, as marshaled by dataEncoding. Assigns a specific file name from fileName and a default Content-Type. - - Contents of the file to upload. - A string encoding. - Name of the file uploaded by this form section. - - - - An anonymous file section with data drawn from the UTF8 string data. Assigns a specific file name from fileName and a default Content-Type. - - Contents of the file to upload. - Name of the file uploaded by this form section. - - - - Possible Networking.NetworkTransport errors. - - - - - Not a data message. - - - - - The Networking.ConnectionConfig does not match the other endpoint. - - - - - The address supplied to connect to was invalid or could not be resolved. - - - - - The message is too long to fit the buffer. - - - - - Not enough resources are available to process this request. - - - - - The operation completed successfully. - - - - - Connection timed out. - - - - - This error will occur if any function is called with inappropriate parameter values. - - - - - The protocol versions are not compatible. Check your library versions. - - - - - The specified channel doesn't exist. - - - - - The specified connectionId doesn't exist. - - - - - The specified host not available. - - - - - Operation is not supported. - - - - - Event that is returned when calling the Networking.NetworkTransport.Receive and Networking.NetworkTransport.ReceiveFromHost functions. - - - - - Broadcast discovery event received. -To obtain sender connection info and possible complimentary message from them, call Networking.NetworkTransport.GetBroadcastConnectionInfo() and Networking.NetworkTransport.GetBroadcastConnectionMessage() functions. - - - - - Connection event received. Indicating that a new connection was established. - - - - - Data event received. Indicating that data was received. - - - - - Disconnection event received. - - - - - No new event was received. - - - - - Transport Layer API. - - - - - Creates a host based on Networking.HostTopology. - - The Networking.HostTopology associated with the host. - Port to bind to (when 0 is selected, the OS will choose a port at random). - IP address to bind to. - - Returns the ID of the host that was created. - - - - - Create a host and configure them to simulate Internet latency (works on Editor and development build only). - - The Networking.HostTopology associated with the host. - Minimum simulated delay in milliseconds. - Maximum simulated delay in milliseconds. - Port to bind to (when 0 is selected, the OS will choose a port at random). - IP address to bind to. - - Returns host ID just created. - - - - - Created web socket host. - - Port to bind to. - The Networking.HostTopology associated with the host. - IP address to bind to. - - Web socket host id. - - - - - Created web socket host. - - Port to bind to. - The Networking.HostTopology associated with the host. - IP address to bind to. - - Web socket host id. - - - - - Tries to establish a connection to another peer. - - Host ID associated with this connection (retrieved when calling Networking.NetworkTransport.AddHost). - IPv4 address of the other peer. - Port of the other peer. - Set to 0 in the case of a default connection. - Error (can be cast to Networking.NetworkError for more information). - - - A unique connection identifier on success (otherwise zero). - - - - - Create dedicated connection to Relay server. - - Host ID associated with this connection (Retrieved when calling Networking.NetworkTransport.AddHost). - IPv4 address of the relay. - Port of the relay. - GUID for the relay match, retrieved by calling Networking.Match.NetworkMatch.CreateMatch and using the Networking.Match.MatchInfo.networkId. - GUID for the source, can be retrieved by calling Utility.GetSourceID. - Error (can be cast to Networking.NetworkError for more information). - Slot ID for this user, retrieved by calling Networking.Match.NetworkMatch.CreateMatch and using the Networking.Match.MatchInfo.nodeId. - - - - Try to establish connection to other peer, where the peer is specified using a C# System.EndPoint. - - Host ID associated with this connection (Retrieved when calling Networking.NetworkTransport.AddHost). - Error (can be cast to Networking.NetworkError for more information). - A valid System.EndPoint. - Set to 0 in the case of a default connection. - - - A unique connection identifier on success (otherwise zero). - - - - - Create a connection to another peer in the Relay group. - - Host ID associated with this connection (retrieved when calling Networking.NetworkTransport.AddHost). - IP address of the peer, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.address. - Port of the peer, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.port. - Set to 0 in the case of a default connection. - ID of the remote peer in relay. - GUID for the relay match, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.networkId. - GUID for the source, can be retrieved by calling Utility.GetSourceID. - Error (can be cast to Networking.NetworkError for more information). - Slot ID reserved for the user, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.nodeId. - Allowed peak bandwidth (peak bandwidth = factor*bytesPerSec, recommended value is 2.0) If data has not been sent for a long time, it is allowed to send more data, with factor 2 it is allowed send 2*bytesPerSec bytes per sec. - Average bandwidth (bandwidth will be throttled on this level). - - A unique connection identifier on success (otherwise zero). - - - - - Create a connection to another peer in the Relay group. - - Host ID associated with this connection (retrieved when calling Networking.NetworkTransport.AddHost). - IP address of the peer, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.address. - Port of the peer, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.port. - Set to 0 in the case of a default connection. - ID of the remote peer in relay. - GUID for the relay match, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.networkId. - GUID for the source, can be retrieved by calling Utility.GetSourceID. - Error (can be cast to Networking.NetworkError for more information). - Slot ID reserved for the user, retrieved by calling Networking.Match.NetworkMatch.JoinMatch and using the Networking.Match.MatchInfo.nodeId. - Allowed peak bandwidth (peak bandwidth = factor*bytesPerSec, recommended value is 2.0) If data has not been sent for a long time, it is allowed to send more data, with factor 2 it is allowed send 2*bytesPerSec bytes per sec. - Average bandwidth (bandwidth will be throttled on this level). - - A unique connection identifier on success (otherwise zero). - - - - - Connect with simulated latency. - - Host ID associated with this connection (Retrieved when calling Networking.NetworkTransport.AddHost). - IPv4 address of the other peer. - Port of the other peer. - Set to 0 in the case of a default connection. - Error (can be cast to Networking.NetworkError for more information). - A Networking.ConnectionSimulatorConfig defined for this connection. - - A unique connection identifier on success (otherwise zero). - - - - - Send a disconnect signal to the connected peer and close the connection. Poll Networking.NetworkTransport.Receive() to be notified that the connection is closed. This signal is only sent once (best effort delivery). If this packet is dropped for some reason, the peer closes the connection by timeout. - - Host ID associated with this connection. - The connection ID of the connection you want to close. - Error (can be cast to Networking.NetworkError for more information). - - - - This will disconnect the host and disband the group. -DisconnectNetworkHost can only be called by the group owner on the relay server. - - Host ID associated with this connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Finalizes sending of a message to a group of connections. Only one multicast message at a time is allowed per host. - - Host ID associated with this connection (retrieved when calling Networking.NetworkTransport.AddHost). - Error (can be cast to Networking.NetworkError for more information). - - - - Returns size of reliable buffer. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Size of ack buffer. - - - - - The Unity Multiplayer spawning system uses assetIds to identify what remote objects to spawn. This function allows you to get the assetId for the Prefab associated with an object. - - Target GameObject to get assetId for. - - The assetId of the game object's Prefab. - - - - - After Networking.NetworkTransport.Receive() returns Networking.NetworkEventType.BroadcastEvent, this function will return the connection information of the broadcast sender. This information can then be used for connecting to the broadcast sender. - - ID of the broadcast receiver. - IPv4 address of broadcast sender. - Port of broadcast sender. - Error (can be cast to Networking.NetworkError for more information). - - - - After Networking.NetworkTransport.Receive() returns Networking.NetworkEventType.BroadcastEvent, this function returns a complimentary message from the broadcast sender. - - ID of broadcast receiver. - Message buffer provided by caller. - Buffer size. - Received size (if received size > bufferSize, corresponding error will be set). - Error (can be cast to Networking.NetworkError for more information). - - - - Returns the connection parameters for the specified connectionId. These parameters can be sent to other users to establish a direct connection to this peer. If this peer is connected to the host via Relay, the Relay-related parameters are set. - - Host ID associated with this connection. - ID of connection. - IP address. - Port. - Relay network guid. - Error (can be cast to Networking.NetworkError for more information). - Destination slot id. - - - - Returns the number of unread messages in the read-queue. - - - - - Returns the total number of messages still in the write-queue. - - - - - Return the round trip time for the given connectionId. - - Error (can be cast to Networking.NetworkError for more information). - Host ID associated with this connection. - ID of the connection. - - Current round trip time in ms. - - - - - Returns the port number assigned to the host. - - Host ID. - - The UDP port number, or -1 if an error occurred. - - - - - Returns the number of received messages waiting in the queue for processing. - - Host ID associated with this queue. - Error code. Cast this value to Networking.NetworkError for more information. - - The number of messages in the queue. - - - - - Returns how many packets have been received from start for connection. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - The absolute number of packets received since the connection was established. - - - - - Returns how many packets have been received from start. (from Networking.NetworkTransport.Init call). - - - Packets count received from start for all hosts. - - - - - How many packets have been dropped due lack space in incoming queue (absolute value, countinf from start). - - - Dropping packet count. - - - - - Returns how many incoming packets have been lost due transmitting (dropped by network). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - The absolute number of packets that have been lost since the connection was established. - - - - - Gets the currently-allowed network bandwidth in bytes per second. The value returned can vary because bandwidth can be throttled by flow control. If the bandwidth is throttled to zero, the connection is disconnected.ted. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Currently-allowed bandwidth in bytes per second. - - - - - Function returns time spent on network I/O operations in microseconds. - - - Time in micro seconds. - - - - - Return the total number of packets that has been lost. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Get a network timestamp. Can be used in your messages to investigate network delays together with Networking.GetRemoteDelayTimeMS. - - - Timestamp. - - - - - Returns how much raw data (in bytes) have been sent from start for all hosts (from Networking.NetworkTransport.Init call). - - - Total data (user payload, protocol specific data, ip and udp headers) (in bytes) sent from start for all hosts. - - - - - Returns how much raw data (in bytes) have been sent from start for connection (from call Networking.NetworkTransport.Connect for active connect or from connection request receiving for passive connect). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Total data (user payload, protocol specific data, ip and udp headers) (in bytes) sent from start for connection. - - - - - Returns how much raw data (in bytes) have been sent from start for the host (from call Networking.NetworkTransport.AddHost). - - ID of the host. - Error (can be cast to Networking.NetworkError for more information). - - Total data (user payload, protocol specific data, ip and udp headers) (in bytes) sent from start for the host. - - - - - Returns how many messages have been sent from start (from Networking.NetworkTransport.Init call). - - - Messages count sent from start (from call Networking.NetworkTransport.Init) for all hosts. - - - - - Returns how many packets have been sent from start for connection (from call Networking.NetworkTransport.Connect for active connect or from connection request receiving for passive connect). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Messages count sending from start for connection. - - - - - Returns how many messages have been sent from start for host (from call Networking.NetworkTransport.AddHost). - - ID of the host. - Error (can be cast to Networking.NetworkError for more information). - - Messages count sending from start for the host. - - - - - Returns the number of messages waiting in the outgoing message queue to be sent. - - Host ID associated with this queue. - Error code. Cast this value to Networking.NetworkError for more information. - - The number of messages waiting in the outgoing message queue to be sent. - - - - - Returns how many packets have been sent from start (from call Networking.NetworkTransport.Init) for all hosts. - - - Packets count sent from networking library start (from call Networking.NetworkTransport.Init) for all hosts. - - - - - Returns how many packets have been sent for connection from it start (from call Networking.NetworkTransport.Connect for active connect or from connection request receiving for passive connect). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Packets count sent for connection from it start. - - - - - Returns how many packets have been sent for host from it start (from call Networking.NetworkTransport.AddHost). - - ID of the host. - Error (can be cast to Networking.NetworkError for more information). - - Count packets have been sent from host start. - - - - - Returns the value in percent of the number of sent packets that were dropped by the network and not received by the peer. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - The number of packets dropped by the network in the last ping timeout period expressed as an integer percentage from 0 to 100. - - - - - Returns the value in percent of the number of sent packets that were dropped by the peer. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - The number of packets dropped by the peer in the last ping timeout period expressed as an integer percentage from 0 to 100. - - - - - Returns how much user payload and protocol system headers (in bytes) have been sent from start (from Networking.NetworkTransport.Init call). - - - Total payload and protocol system headers (in bytes) sent from start for all hosts. - - - - - Returns how much payload and protocol system headers (in bytes) have been sent from start for connection (from call Networking.NetworkTransport.Connect for active connect or from connection request receiving for passive connect). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Total user payload and protocol system headers (in bytes) sent from start for connection. - - - - - Returns how much payload and protocol system headers (in bytes) have been sent from start for the host (from call Networking.NetworkTransport.AddHost). - - ID of the host. - Error (can be cast to Networking.NetworkError for more information). - - Total user payload and protocol system headers (in bytes) sent from start for the host. - - - - - Returns how much payload (user) bytes have been sent from start (from Networking.NetworkTransport.Init call). - - - Total payload (in bytes) sent from start for all hosts. - - - - - Returns how much payload (user) bytes have been sent from start for connection (from call Networking.NetworkTransport.Connect for active connect or from connection request receiving for passive connect). - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - Total payload (in bytes) sent from start for connection. - - - - - Returns how much payload (user) bytes have been sent from start for the host (from call Networking.NetworkTransport.AddHost). - - ID of the host. - Error (can be cast to Networking.NetworkError for more information). - - Total payload (in bytes) sent from start for the host. - - - - - Return the current receive rate in bytes per second. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Return the current send rate in bytes per second. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Returns the delay for the timestamp received. - - Host ID associated with this connection. - ID of the connection. - Timestamp delivered from peer. - Error (can be cast to Networking.NetworkError for more information). - - - - Deprecated. Use Networking.NetworkTransport.GetNetworkLostPacketNum() instead. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Initializes the NetworkTransport. Should be called before any other operations on the NetworkTransport are done. - - - - - Check if the broadcast discovery sender is running. - - - True if it is running. False if it is not running. - - - - - Deprecated. - - - - - This method allows you to specify that notifications callbacks should be called when Unity's networking can send more messages than defined in notificationLevel. - - Host ID. - Connection ID. - Defines how many free slots in the incoming queue should be available before [GlobalConfig.ConnectionReadyForSend] callback is triggered. - Error code. - - Result, if false error will show error code. - - - - - Function is queueing but not sending messages. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - The channel ID to send on. - Buffer containing the data to send. - Size of the buffer. - - True if success. - - - - - Called to poll the underlying system for events. - - Host ID associated with the event. - The connectionID that received the event. - The channel ID associated with the event. - The buffer that will hold the data received. - Size of the buffer supplied. - The actual receive size of the data. - Error (can be cast to Networking.NetworkError for more information). - - Type of event returned. - - - - - Similar to Networking.NetworkTransport.Receive but will only poll for the provided hostId. - - The host ID to check for events. - The connection ID that received the event. - The channel ID associated with the event. - The buffer that will hold the data received. - Size of the buffer supplied. - The actual receive size of the data. - Error (can be cast to Networking.NetworkError for more information). - - Type of event returned. - - - - - Polls the host for the following events: Networking.NetworkEventType.ConnectEvent and Networking.NetworkEventType.DisconnectEvent. -Can only be called by the relay group owner. - - The host ID to check for events. - Error (can be cast to Networking.NetworkError for more information). - - Type of event returned. - - - - - Closes the opened socket, and closes all connections belonging to that socket. - - Host ID to remove. - - - - Send data to peer. - - Host ID associated with this connection. - ID of the connection. - The channel ID to send on. - Buffer containing the data to send. - Size of the buffer. - Error (can be cast to Networking.NetworkError for more information). - - - - Add a connection for the multicast send. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - - - Sends messages, previously queued by NetworkTransport.QueueMessageForSending function. - - Host ID associated with this connection. - ID of the connection. - Error (can be cast to Networking.NetworkError for more information). - - True if hostId and connectioId are valid. - - - - - Sets the credentials required for receiving broadcast messages. Should any credentials of a received broadcast message not match, the broadcast discovery message is dropped. - - Host ID associated with this broadcast. - Key part of the credentials associated with this broadcast. - Version part of the credentials associated with this broadcast. - Subversion part of the credentials associated with this broadcast. - Error (can be cast to Networking.NetworkError for more information). - - - - Used to inform the profiler of network packet statistics. - - The ID of the message being reported. - Number of messages being reported. - Number of bytes used by reported messages. - Whether the packet is outgoing (-1) or incoming (0). - - - - Shut down the NetworkTransport. - - - - - Starts sending a broadcasting message in all local subnets. - - Host ID which should be reported via broadcast (broadcast receivers will connect to this host). - Port used for the broadcast message. - Key part of the credentials associated with this broadcast. - Version part of the credentials associated with this broadcast. - Subversion part of the credentials associated with this broadcast. - Complimentary message. This message will delivered to the receiver with the broadcast event. - Size of message. - Specifies how often the broadcast message should be sent in milliseconds. - Error (can be cast to Networking.NetworkError for more information). - - Return true if broadcasting request has been submitted. - - - - - Start to multicast send. - - Host ID associated with this connection. - The channel ID. - Buffer containing the data to send. - Size of the buffer. - Error (can be cast to Networking.NetworkError for more information). - - - - Stop sending the broadcast discovery message. - - - - - Arguments passed to Action callbacks registered in PlayerConnection. - - - - - Data that is received. - - - - - The Player ID that the data is received from. - - - - - Used for handling the network connection from the Player to the Editor. - - - - - Singleton instance. - - - - - Returns true when Editor is connected to the player. - - - - - Blocks the calling thread until either a message with the specified messageId is received or the specified time-out elapses. - - The type ID of the message that is sent to the Editor. - The time-out specified in milliseconds. - - Returns true when the message is received and false if the call timed out. - - - - - This disconnects all of the active connections. - - - - - Registers a listener for a specific message ID, with an Action to be executed whenever that message is received by the Editor. -This ID must be the same as for messages sent from EditorConnection.Send(). - - The message ID that should cause the Action callback to be executed when received. - Action that is executed when a message with ID messageId is received by the Editor. -The callback includes the data that is sent from the Player, and the Player ID. -The Player ID is always 1, because only one Editor can be connected. - - - - Registers a callback that is invoked when the Editor connects to the Player. - - Action called when Player connects, with the Player ID of the Editor. - - - - Registers a callback to be called when Editor disconnects. - - The Action that is called when a Player disconnects. - - - - Sends data to the Editor. - - The type ID of the message that is sent to the Editor. - - - - - Deregisters a message listener. - - Message ID associated with the callback that you wish to deregister. - The associated callback function you wish to deregister. - - - - Enumeration of all supported quality of service channel modes. - - - - - A reliable message that will be re-sent with a high frequency until it is acknowledged. - - - - - Each message is guaranteed to be delivered but not guaranteed to be in order. - - - - - Each message is guaranteed to be delivered, also allowing fragmented messages with up to 32 fragments per message. - - - - - Each message is guaranteed to be delivered in order, also allowing fragmented messages with up to 32 fragments per message. - - - - - Each message is guaranteed to be delivered and in order. - - - - - A reliable message. Note: Only the last message in the send buffer is sent. Only the most recent message in the receive buffer will be delivered. - - - - - An unreliable message. Only the last message in the send buffer is sent. Only the most recent message in the receive buffer will be delivered. - - - - - There is no guarantee of delivery or ordering. - - - - - There is no guarantee of delivery or ordering, but allowing fragmented messages with up to 32 fragments per message. - - - - - There is garantee of ordering, no guarantee of delivery, but allowing fragmented messages with up to 32 fragments per message. - - - - - There is no guarantee of delivery and all unordered messages will be dropped. Example: VoIP. - - - - - Define how unet will handle network io operation. - - - - - Network thread will sleep up to threadawake timeout, after that it will try receive up to maxpoolsize amount of messages and then will try perform send operation for connection whihc ready to send. - - - - - Network thread will sleep up to threadawake timeout, or up to receive event on socket will happened. Awaked thread will try to read up to maxpoolsize packets from socket and will try update connections ready to send (with fixing awaketimeout rate). - - - - - The AppID identifies the application on the Unity Cloud or UNET servers. - - - - - Invalid AppID. - - - - - An Enum representing the priority of a client in a match, starting at 0 and increasing. - - - - - The Invalid case for a HostPriority. An Invalid host priority is not a valid host. - - - - - Describes the access levels granted to this client. - - - - - Administration access level, generally describing clearence to perform game altering actions against anyone inside a particular match. - - - - - Invalid access level, signifying no access level has been granted/specified. - - - - - Access level Owner, generally granting access for operations key to the peer host server performing it's work. - - - - - User access level. This means you can do operations which affect yourself only, like disconnect yourself from the match. - - - - - Access token used to authenticate a client session for the purposes of allowing or disallowing match operations requested by that client. - - - - - Binary field for the actual token. - - - - - Accessor to get an encoded string from the m_array data. - - - - - Checks if the token is a valid set of data with respect to default values (returns true if the values are not default, does not validate the token is a current legitimate token with respect to the server's auth framework). - - - - - Network ID, used for match making. - - - - - Invalid NetworkID. - - - - - The NodeID is the ID used in Relay matches to track nodes in a network. - - - - - The invalid case of a NodeID. - - - - - Identifies a specific game instance. - - - - - Invalid SourceID. - - - - - The UnityWebRequest object is used to communicate with web servers. - - - - - Holds a reference to a CertificateHandler object, which manages certificate validation for this UnityWebRequest. - - - - - Indicates whether the UnityWebRequest system should employ the HTTP/1.1 chunked-transfer encoding method. - - - - - If true, any CertificateHandler attached to this UnityWebRequest will have CertificateHandler.Dispose called automatically when UnityWebRequest.Dispose is called. - - - - - If true, any DownloadHandler attached to this UnityWebRequest will have DownloadHandler.Dispose called automatically when UnityWebRequest.Dispose is called. - - - - - If true, any UploadHandler attached to this UnityWebRequest will have UploadHandler.Dispose called automatically when UnityWebRequest.Dispose is called. - - - - - Returns the number of bytes of body data the system has downloaded from the remote server. (Read Only) - - - - - Holds a reference to a DownloadHandler object, which manages body data received from the remote server by this UnityWebRequest. - - - - - Returns a floating-point value between 0.0 and 1.0, indicating the progress of downloading body data from the server. (Read Only) - - - - - A human-readable string describing any system errors encountered by this UnityWebRequest object while handling HTTP requests or responses. (Read Only) - - - - - Returns true after the UnityWebRequest has finished communicating with the remote server. (Read Only) - - - - - Returns true after this UnityWebRequest receives an HTTP response code indicating an error. (Read Only) - - - - - Returns true while a UnityWebRequest’s configuration properties can be altered. (Read Only) - - - - - Returns true after this UnityWebRequest encounters a system error. (Read Only) - - - - - The string "CREATE", commonly used as the verb for an HTTP CREATE request. - - - - - The string "DELETE", commonly used as the verb for an HTTP DELETE request. - - - - - The string "GET", commonly used as the verb for an HTTP GET request. - - - - - The string "HEAD", commonly used as the verb for an HTTP HEAD request. - - - - - The string "POST", commonly used as the verb for an HTTP POST request. - - - - - The string "PUT", commonly used as the verb for an HTTP PUT request. - - - - - Defines the HTTP verb used by this UnityWebRequest, such as GET or POST. - - - - - Indicates the number of redirects which this UnityWebRequest will follow before halting with a “Redirect Limit Exceeded” system error. - - - - - The numeric HTTP response code returned by the server, such as 200, 404 or 500. (Read Only) - - - - - Sets UnityWebRequest to attempt to abort after the number of seconds in timeout have passed. - - - - - Returns the number of bytes of body data the system has uploaded to the remote server. (Read Only) - - - - - Holds a reference to the UploadHandler object which manages body data to be uploaded to the remote server. - - - - - Returns a floating-point value between 0.0 and 1.0, indicating the progress of uploading body data to the server. - - - - - Defines the target URI for the UnityWebRequest to communicate with. - - - - - Defines the target URL for the UnityWebRequest to communicate with. - - - - - Determines whether this UnityWebRequest will include Expect: 100-Continue in its outgoing request headers. (Default: true). - - - - - If in progress, halts the UnityWebRequest as soon as possible. - - - - - Clears stored cookies from the cache. - - An optional URL to define which cookies are removed. Only cookies that apply to this URL will be removed from the cache. - - - - Clears stored cookies from the cache. - - An optional URL to define which cookies are removed. Only cookies that apply to this URL will be removed from the cache. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest with the default options and no attached DownloadHandler or UploadHandler. Default method is GET. - - The target URL with which this UnityWebRequest will communicate. Also accessible via the url property. - The target URI to which form data will be transmitted. - HTTP GET, POST, etc. methods. - Replies from the server. - Upload data to the server. - - - - Creates a UnityWebRequest configured for HTTP DELETE. - - The URI to which a DELETE request should be sent. - - A UnityWebRequest configured to send an HTTP DELETE request. - - - - - Signals that this UnityWebRequest is no longer being used, and should clean up any resources it is using. - - - - - Escapes characters in a string to ensure they are URL-friendly. - - A string with characters to be escaped. - The text encoding to use. - - - - Escapes characters in a string to ensure they are URL-friendly. - - A string with characters to be escaped. - The text encoding to use. - - - - Generate a random 40-byte array for use as a multipart form boundary. - - - 40 random bytes, guaranteed to contain only printable ASCII values. - - - - - Creates a UnityWebRequest configured for HTTP GET. - - The URI of the resource to retrieve via HTTP GET. - - A UnityWebRequest object configured to retrieve data from uri. - - - - - Deprecated. Replaced by UnityWebRequestAssetBundle.GetAssetBundle. - - - - - - - - - - Deprecated. Replaced by UnityWebRequestAssetBundle.GetAssetBundle. - - - - - - - - - - Deprecated. Replaced by UnityWebRequestAssetBundle.GetAssetBundle. - - - - - - - - - - Deprecated. Replaced by UnityWebRequestAssetBundle.GetAssetBundle. - - - - - - - - - - OBSOLETE. Use UnityWebRequestMultimedia.GetAudioClip(). - - - - - - - Retrieves the value of a custom request header. - - Name of the custom request header. Case-insensitive. - - The value of the custom request header. If no custom header with a matching name has been set, returns an empty string. - - - - - Retrieves the value of a response header from the latest HTTP response received. - - The name of the HTTP header to retrieve. Case-insensitive. - - The value of the HTTP header from the latest HTTP response. If no header with a matching name has been received, or no responses have been received, returns null. - - - - - Retrieves a dictionary containing all the response headers received by this UnityWebRequest in the latest HTTP response. - - - A dictionary containing all the response headers received in the latest HTTP response. If no responses have been received, returns null. - - - - - Creates a UnityWebRequest intended to download an image via HTTP GET and create a Texture based on the retrieved data. - - The URI of the image to download. - If true, the texture's raw data will not be accessible to script. This can conserve memory. Default: false. - - A UnityWebRequest properly configured to download an image and convert it to a Texture. - - - - - Creates a UnityWebRequest intended to download an image via HTTP GET and create a Texture based on the retrieved data. - - The URI of the image to download. - If true, the texture's raw data will not be accessible to script. This can conserve memory. Default: false. - - A UnityWebRequest properly configured to download an image and convert it to a Texture. - - - - - Creates a UnityWebRequest configured to send a HTTP HEAD request. - - The URI to which to send a HTTP HEAD request. - - A UnityWebRequest configured to transmit a HTTP HEAD request. - - - - - Creates a UnityWebRequest configured to send form data to a server via HTTP POST. - - The target URI to which form data will be transmitted. - Form body data. Will be URLEncoded prior to transmission. - - A UnityWebRequest configured to send form data to uri via POST. - - - - - Create a UnityWebRequest configured to send form data to a server via HTTP POST. - - The target URI to which form data will be transmitted. - Form fields or files encapsulated in a WWWForm object, for formatting and transmission to the remote server. - - A UnityWebRequest configured to send form data to uri via POST. - - - - - Create a UnityWebRequest configured to send form data to a server via HTTP POST. - - The target URI to which form data will be transmitted. - A list of form fields or files to be formatted and transmitted to the remote server. - A unique boundary string, which will be used when separating form fields in a multipart form. If not supplied, a boundary will be generated for you. - - A UnityWebRequest configured to send form data to uri via POST. - - - - - Create a UnityWebRequest configured to send form data to a server via HTTP POST. - - The target URI to which form data will be transmitted. - A list of form fields or files to be formatted and transmitted to the remote server. - A unique boundary string, which will be used when separating form fields in a multipart form. If not supplied, a boundary will be generated for you. - - A UnityWebRequest configured to send form data to uri via POST. - - - - - Create a UnityWebRequest configured to send form data to a server via HTTP POST. - - The target URI to which form data will be transmitted. - Strings indicating the keys and values of form fields. Will be automatically formatted into a URL-encoded form body. - - A UnityWebRequest configured to send form data to uri via POST. - - - - - Creates a UnityWebRequest configured to upload raw data to a remote server via HTTP PUT. - - The URI to which the data will be sent. - The data to transmit to the remote server. - -If a string, the string will be converted to raw bytes via <a href="http:msdn.microsoft.comen-uslibrarysystem.text.encoding.utf8">System.Text.Encoding.UTF8<a>. - - A UnityWebRequest configured to transmit bodyData to uri via HTTP PUT. - - - - - Creates a UnityWebRequest configured to upload raw data to a remote server via HTTP PUT. - - The URI to which the data will be sent. - The data to transmit to the remote server. - -If a string, the string will be converted to raw bytes via <a href="http:msdn.microsoft.comen-uslibrarysystem.text.encoding.utf8">System.Text.Encoding.UTF8<a>. - - A UnityWebRequest configured to transmit bodyData to uri via HTTP PUT. - - - - - Begin communicating with the remote server. - - - An AsyncOperation indicating the progress/completion state of the UnityWebRequest. Yield this object to wait until the UnityWebRequest is done. - - - - - Begin communicating with the remote server. - - - - - Converts a List of IMultipartFormSection objects into a byte array containing raw multipart form data. - - A List of IMultipartFormSection objects. - A unique boundary string to separate the form sections. - - A byte array of raw multipart form data. - - - - - Serialize a dictionary of strings into a byte array containing URL-encoded UTF8 characters. - - A dictionary containing the form keys and values to serialize. - - A byte array containing the serialized form. The form's keys and values have been URL-encoded. - - - - - Set a HTTP request header to a custom value. - - The key of the header to be set. Case-sensitive. - The header's intended value. - - - - Converts URL-friendly escape sequences back to normal text. - - A string containing escaped characters. - The text encoding to use. - - - - Converts URL-friendly escape sequences back to normal text. - - A string containing escaped characters. - The text encoding to use. - - - - Helpers for downloading asset bundles using UnityWebRequest. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Creates a UnityWebRequest optimized for downloading a Unity Asset Bundle via HTTP GET. - - The URI of the asset bundle to download. - If nonzero, this number will be compared to the checksum of the downloaded asset bundle data. If the CRCs do not match, an error will be logged and the asset bundle will not be loaded. If set to zero, CRC checking will be skipped. - An integer version number, which will be compared to the cached version of the asset bundle to download. Increment this number to force Unity to redownload a cached asset bundle. - -Analogous to the version parameter for WWW.LoadFromCacheOrDownload. - A version hash. If this hash does not match the hash for the cached version of this asset bundle, the asset bundle will be redownloaded. - A structure used to download a given version of AssetBundle to a customized cache path. - - A UnityWebRequest configured to downloading a Unity Asset Bundle. - - - - - Asynchronous operation object returned from UnityWebRequest.SendWebRequest(). - -You can yield until it continues, register an event handler with AsyncOperation.completed, or manually check whether it's done (AsyncOperation.isDone) or progress (AsyncOperation.progress). - - - - - Returns the associated UnityWebRequest that created the operation. - - - - - Helpers for downloading multimedia files using UnityWebRequest. - - - - - Create a UnityWebRequest to download an audio clip via HTTP GET and create an AudioClip based on the retrieved data. - - The URI of the audio clip to download. - The type of audio encoding for the downloaded audio clip. See AudioType. - - A UnityWebRequest properly configured to download an audio clip and convert it to an AudioClip. - - - - - Create a UnityWebRequest intended to download a movie clip via HTTP GET and create an MovieTexture based on the retrieved data. - - The URI of the movie clip to download. - - A UnityWebRequest properly configured to download a movie clip and convert it to a MovieTexture. - - - - - Helpers for downloading image files into Textures using UnityWebRequest. - - - - - Create a UnityWebRequest intended to download an image via HTTP GET and create a Texture based on the retrieved data. - - The URI of the image to download. - If true, the texture's raw data will not be accessible to script. This can conserve memory. Default: false. - - A UnityWebRequest properly configured to download an image and convert it to a Texture. - - - - - Create a UnityWebRequest intended to download an image via HTTP GET and create a Texture based on the retrieved data. - - The URI of the image to download. - If true, the texture's raw data will not be accessible to script. This can conserve memory. Default: false. - - A UnityWebRequest properly configured to download an image and convert it to a Texture. - - - - - Helper object for UnityWebRequests. Manages the buffering and transmission of body data during HTTP requests. - - - - - Determines the default Content-Type header which will be transmitted with the outbound HTTP request. - - - - - The raw data which will be transmitted to the remote server as body data. (Read Only) - - - - - Returns the proportion of data uploaded to the remote server compared to the total amount of data to upload. (Read Only) - - - - - Signals that this UploadHandler is no longer being used, and should clean up any resources it is using. - - - - - A specialized UploadHandler that reads data from a given file and sends raw bytes to the server as the request body. - - - - - Create a new upload handler to send data from the given file to the server. - - A file containing data to send. - - - - A general-purpose UploadHandler subclass, using a native-code memory buffer. - - - - - General constructor. Contents of the input argument are copied into a native buffer. - - Raw data to transmit to the remote server. - - - - Networking Utility. - - - - - This property is deprecated and does not need to be set or referenced. - - - - - Utility function to get this client's access token for a particular network, if it has been set. - - - - - - Utility function to fetch the program's ID for UNET Cloud interfacing. - - - - - Utility function to get the client's SourceID for unique identification. - - - - - Utility function that accepts the access token for a network after it's received from the server. - - - - - - - Deprecated; Setting the AppID is no longer necessary. Please log in through the editor and set up the project there. - - - - - - Describes different levels of log information the network layer supports. - - - - - This data structure contains information on a message just received from the network. - - - - - The NetworkView who sent this message. - - - - - The player who sent this network message (owner). - - - - - The time stamp when the Message was sent in seconds. - - - - - Describes the status of the network interface peer type as returned by Network.peerType. - - - - - The NetworkPlayer is a data structure with which you can locate another player over the network. - - - - - Returns the external IP address of the network interface. - - - - - Returns the external port of the network interface. - - - - - The GUID for this player, used when connecting with NAT punchthrough. - - - - - The IP address of this player. - - - - - The port of this player. - - - - - Describes network reachability options. - - - - - Network is not reachable. - - - - - Network is reachable via carrier data network. - - - - - Network is reachable via WiFi or cable. - - - - - Different types of synchronization for the NetworkView component. - - - - - The network view is the binding material of multiplayer games. - - - - - The network group number of this network view. - - - - - Is the network view controlled by this object? - - - - - The component the network view is observing. - - - - - The NetworkPlayer who owns this network view. - - - - - The type of NetworkStateSynchronization set for this network view. - - - - - The ViewID of this network view. - - - - - Call a RPC function on all connected peers. - - - - - - - - Call a RPC function on a specific player. - - - - - - - - The NetworkViewID is a unique identifier for a network view instance in a multiplayer game. - - - - - True if instantiated by me. - - - - - The NetworkPlayer who owns the NetworkView. Could be the server. - - - - - Represents an invalid network view ID. - - - - - NPOT Texture2D|textures support. - - - - - Full NPOT support. - - - - - NPOT textures are not supported. Will be upscaled/padded at loading time. - - - - - Limited NPOT support: no mip-maps and clamp TextureWrapMode|wrap mode will be forced. - - - - - Base class for all objects Unity can reference. - - - - - Should the object be hidden, saved with the Scene or modifiable by the user? - - - - - The name of the object. - - - - - Removes a gameobject, component or asset. - - The object to destroy. - The optional amount of time to delay before destroying the object. - - - - Removes a gameobject, component or asset. - - The object to destroy. - The optional amount of time to delay before destroying the object. - - - - Destroys the object obj immediately. You are strongly recommended to use Destroy instead. - - Object to be destroyed. - Set to true to allow assets to be destroyed. - - - - Destroys the object obj immediately. You are strongly recommended to use Destroy instead. - - Object to be destroyed. - Set to true to allow assets to be destroyed. - - - - Do not destroy the target Object when loading a new Scene. - - An Object not destroyed on Scene change. - - - - Returns the first active loaded object of Type type. - - The type of object to find. - - This returns the Object that matches the specified type. It returns null if no Object matches the type. - - - - - Returns a list of all active loaded objects of Type type. - - The type of object to find. - - The array of objects found matching the type specified. - - - - - Returns a list of all active and inactive loaded objects of Type type. - - The type of object to find. - - The array of objects found matching the type specified. - - - - - Returns a list of all active and inactive loaded objects of Type type, including assets. - - The type of object or asset to find. - - The array of objects and assets found matching the type specified. - - - - - Returns the instance id of the object. - - - - - Does the object exist? - - - - - - Clones the object original and returns the clone. - - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - Parent that will be assigned to the new object. - Pass true when assigning a parent Object to maintain the world position of the Object, instead of setting its position relative to the new parent. Pass false to set the Object's position relative to its new parent. - - The instantiated clone. - - - - - Clones the object original and returns the clone. - - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - Parent that will be assigned to the new object. - Pass true when assigning a parent Object to maintain the world position of the Object, instead of setting its position relative to the new parent. Pass false to set the Object's position relative to its new parent. - - The instantiated clone. - - - - - Clones the object original and returns the clone. - - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - Parent that will be assigned to the new object. - Pass true when assigning a parent Object to maintain the world position of the Object, instead of setting its position relative to the new parent. Pass false to set the Object's position relative to its new parent. - - The instantiated clone. - - - - - Clones the object original and returns the clone. - - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - Parent that will be assigned to the new object. - Pass true when assigning a parent Object to maintain the world position of the Object, instead of setting its position relative to the new parent. Pass false to set the Object's position relative to its new parent. - - The instantiated clone. - - - - - Clones the object original and returns the clone. - - An existing object that you want to make a copy of. - Position for the new object. - Orientation of the new object. - Parent that will be assigned to the new object. - Pass true when assigning a parent Object to maintain the world position of the Object, instead of setting its position relative to the new parent. Pass false to set the Object's position relative to its new parent. - - The instantiated clone. - - - - - You can also use Generics to instantiate objects. See the page for more details. - - Object of type T that you want to make a clone of. - - - - - - Object of type T. - - - - - You can also use Generics to instantiate objects. See the page for more details. - - Object of type T that you want to make a clone of. - - - - - - Object of type T. - - - - - You can also use Generics to instantiate objects. See the page for more details. - - Object of type T that you want to make a clone of. - - - - - - Object of type T. - - - - - You can also use Generics to instantiate objects. See the page for more details. - - Object of type T that you want to make a clone of. - - - - - - Object of type T. - - - - - You can also use Generics to instantiate objects. See the page for more details. - - Object of type T that you want to make a clone of. - - - - - - Object of type T. - - - - - Compares two object references to see if they refer to the same object. - - The first Object. - The Object to compare against the first. - - - - Compares if two objects refer to a different object. - - - - - - - Returns the name of the GameObject. - - - The name returned by ToString. - - - - - OcclusionArea is an area in which occlusion culling is performed. - - - - - Center of the occlusion area relative to the transform. - - - - - Size that the occlusion area will have. - - - - - The portal for dynamically changing occlusion at runtime. - - - - - Gets / sets the portal's open state. - - - - - Enumeration for SystemInfo.operatingSystemFamily. - - - - - Linux operating system family. - - - - - macOS operating system family. - - - - - Returned for operating systems that do not fall into any other category. - - - - - Windows operating system family. - - - - - Information about a particle collision. - - - - - The Collider for the GameObject struck by the particles. - - - - - The Collider or Collider2D for the GameObject struck by the particles. - - - - - Intersection point of the collision in world coordinates. - - - - - Geometry normal at the intersection point of the collision. - - - - - Incident velocity at the intersection point of the collision. - - - - - Method extension for Physics in Particle System. - - - - - Get the particle collision events for a GameObject. Returns the number of events written to the array. - - The GameObject for which to retrieve collision events. - Array to write collision events to. - - - - - Safe array size for use with ParticleSystem.GetCollisionEvents. - - - - - - Safe array size for use with ParticleSystem.GetTriggerParticles. - - Particle system. - Type of trigger to return size for. - - Number of particles with this trigger event type. - - - - - Get the particles that met the condition in the particle trigger module. Returns the number of particles written to the array. - - Particle system. - Type of trigger to return particles for. - The array of particles matching the trigger event type. - - Number of particles with this trigger event type. - - - - - Write modified particles back to the particle system, during a call to OnParticleTrigger. - - Particle system. - Type of trigger to set particles for. - Particle array. - Offset into the array, if you only want to write back a subset of the returned particles. - Number of particles to write, if you only want to write back a subset of the returned particles. - - - - Write modified particles back to the particle system, during a call to OnParticleTrigger. - - Particle system. - Type of trigger to set particles for. - Particle array. - Offset into the array, if you only want to write back a subset of the returned particles. - Number of particles to write, if you only want to write back a subset of the returned particles. - - - - Script interface for Particle Systems (Shuriken). - - - - - Does this system support Automatic Culling? - - - - - Script interface for the Particle System collision module. - - - - - Script interface for the Particle System color by lifetime module. - - - - - Script interface for the Particle System color over lifetime module. - - - - - Script interface for the Particle System Custom Data module. - - - - - The duration of the Particle System in seconds (Read Only). - - - - - Script interface for the Particle System emission module. - - - - - The rate of particle emission. - - - - - When set to false, the Particle System will not emit particles. - - - - - Script interface for the Particle System external forces module. - - - - - Script interface for the Particle System force over lifetime module. - - - - - Scale being applied to the gravity defined by Physics.gravity. - - - - - Script interface for the Particle System velocity inheritance module. - - - - - Determines whether the Particle System is emitting particles. A Particle System may stop emitting when its emission module has finished, it has been paused or if the system has been stopped using ParticleSystem.Stop|Stop with the ParticleSystemStopBehavior.StopEmitting|StopEmitting flag. Resume emitting by calling ParticleSystem.Play|Play. - - - - - Determines whether the Particle System is paused. - - - - - Determines whether the Particle System is playing. - - - - - Determines whether the Particle System is stopped. - - - - - Script interface for the Particle System Lights module. - - - - - Script interface for the Particle System Limit Velocity over Lifetime module. - - - - - Determines whether the Particle System is looping. - - - - - Access the main Particle System settings. - - - - - The maximum number of particles to emit. - - - - - Script interface for the Particle System Noise module. - - - - - The current number of particles (Read Only). - - - - - The playback speed of the Particle System. 1 is normal playback speed. - - - - - If set to true, the Particle System will automatically start playing on startup. - - - - - Does this system support Procedural Simulation? - - - - - Override the random seed used for the Particle System emission. - - - - - Script interface for the Particle System Rotation by Speed module. - - - - - Script interface for the Particle System Rotation over Lifetime module. - - - - - The scaling mode applied to particle sizes and positions. - - - - - Script interface for the Particle System Shape module. - - - - - This selects the space in which to simulate particles. It can be either world or local space. - - - - - Script interface for the Particle System Size by Speed module. - - - - - Script interface for the Particle System Size over Lifetime module. - - - - - The initial color of particles when emitted. - - - - - Start delay in seconds. - - - - - The total lifetime in seconds that particles will have when emitted. When using curves, this value acts as a scale on the curve. This value is set in the particle when it is created by the Particle System. - - - - - The initial rotation of particles when emitted. When using curves, this value acts as a scale on the curve. - - - - - The initial 3D rotation of particles when emitted. When using curves, this value acts as a scale on the curves. - - - - - The initial size of particles when emitted. When using curves, this value acts as a scale on the curve. - - - - - The initial speed of particles when emitted. When using curves, this value acts as a scale on the curve. - - - - - Script interface for the Particle System Sub Emitters module. - - - - - Script interface for the Particle System Texture Sheet Animation module. - - - - - Playback position in seconds. - - - - - Script interface for the Particle System Trails module. - - - - - Script interface for the Particle System Trigger module. - - - - - Controls whether the Particle System uses an automatically-generated random number to seed the random number generator. - - - - - Script interface for the Particle System Velocity over Lifetime module. - - - - - Script interface for a Burst. - - - - - Number of particles to be emitted. - - - - - How many times to play the burst. (0 means infinitely). - - - - - Maximum number of particles to be emitted. - - - - - Minimum number of particles to be emitted. - - - - - The chance that the burst will trigger. - - - - - How often to repeat the burst, in seconds. - - - - - The time that each burst occurs. - - - - - Construct a new Burst with a time and count. - - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - Number of particles to emit. - Number of times to play the burst. (0 means indefinitely). - How often to repeat the burst, in seconds. - - - - Construct a new Burst with a time and count. - - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - Number of particles to emit. - Number of times to play the burst. (0 means indefinitely). - How often to repeat the burst, in seconds. - - - - Construct a new Burst with a time and count. - - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - Number of particles to emit. - Number of times to play the burst. (0 means indefinitely). - How often to repeat the burst, in seconds. - - - - Construct a new Burst with a time and count. - - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - Number of particles to emit. - Number of times to play the burst. (0 means indefinitely). - How often to repeat the burst, in seconds. - - - - Construct a new Burst with a time and count. - - Time to emit the burst. - Minimum number of particles to emit. - Maximum number of particles to emit. - Number of particles to emit. - Number of times to play the burst. (0 means indefinitely). - How often to repeat the burst, in seconds. - - - - Remove all particles in the Particle System. - - Clear all child Particle Systems as well. - - - - Script interface for the Collision module. - - - - - How much force is applied to each particle after a collision. - - - - - Change the bounce multiplier. - - - - - How much force is applied to a Collider when hit by particles from this Particle System. - - - - - Control which layers this particle system collides with. - - - - - How much speed is lost from each particle after a collision. - - - - - Change the dampen multiplier. - - - - - Enable/disable the Collision module. - - - - - Allow particles to collide with dynamic colliders when using world collision mode. - - - - - Allow particles to collide when inside colliders. - - - - - How much a particle's lifetime is reduced after a collision. - - - - - Change the lifetime loss multiplier. - - - - - The maximum number of collision shapes that will be considered for particle collisions. Excess shapes will be ignored. Terrains take priority. - - - - - Kill particles whose speed goes above this threshold, after a collision. - - - - - The maximum number of planes it is possible to set as colliders. - - - - - Kill particles whose speed falls below this threshold, after a collision. - - - - - Choose between 2D and 3D world collisions. - - - - - If true, the collision angle is considered when applying forces from particles to Colliders. - - - - - If true, particle sizes are considered when applying forces to Colliders. - - - - - If true, particle speeds are considered when applying forces to Colliders. - - - - - Specifies the accuracy of particle collisions against colliders in the Scene. - - - - - A multiplier applied to the size of each particle before collisions are processed. - - - - - Send collision callback messages. - - - - - The type of particle collision to perform. - - - - - Size of voxels in the collision cache. - - - - - Get a collision plane associated with this particle system. - - Specifies which plane to access. - - The plane. - - - - - Set a collision plane to be used with this particle system. - - Specifies which plane to set. - The plane to set. - - - - Script interface for the Color By Speed module. - - - - - The gradient controlling the particle colors. - - - - - Enable/disable the Color By Speed module. - - - - - Apply the color gradient between these minimum and maximum speeds. - - - - - Script interface for the Color Over Lifetime module. - - - - - The gradient controlling the particle colors. - - - - - Enable/disable the Color Over Lifetime module. - - - - - Script interface for the Custom Data module. - - - - - Enable/disable the Custom Data module. - - - - - Get a ParticleSystem.MinMaxGradient, that is being used to generate custom HDR color data. - - The name of the custom data stream to retrieve the gradient from. - - The color gradient being used to generate custom color data. - - - - - Find out the type of custom data that is being generated for the chosen data stream. - - The name of the custom data stream to query. - - The type of data being generated for the requested stream. - - - - - Get a ParticleSystem.MinMaxCurve, that is being used to generate custom data. - - The name of the custom data stream to retrieve the curve from. - The component index to retrieve the curve for (0-3, mapping to the xyzw components of a Vector4 or float4). - - The curve being used to generate custom data. - - - - - Query how many ParticleSystem.MinMaxCurve elements are being used to generate this stream of custom data. - - The name of the custom data stream to retrieve the curve from. - - The number of curves. - - - - - Set a ParticleSystem.MinMaxGradient, in order to generate custom HDR color data. - - The name of the custom data stream to apply the gradient to. - The gradient to be used for generating custom color data. - - - - Choose the type of custom data to generate for the chosen data stream. - - The name of the custom data stream to enable data generation on. - The type of data to generate. - - - - Set a ParticleSystem.MinMaxCurve, in order to generate custom data. - - The name of the custom data stream to apply the curve to. - The component index to apply the curve to (0-3, mapping to the xyzw components of a Vector4 or float4). - The curve to be used for generating custom data. - - - - Specify how many curves are used to generate custom data for this stream. - - The name of the custom data stream to apply the curve to. - The number of curves to generate data for. - - - - - Script interface for the Emission module. - - - - - The current number of bursts. - - - - - Enable/disable the Emission module. - - - - - The rate at which new particles are spawned. - - - - - Change the rate multiplier. - - - - - The rate at which new particles are spawned, over distance. - - - - - Change the rate over distance multiplier. - - - - - The rate at which new particles are spawned, over time. - - - - - Change the rate over time multiplier. - - - - - The emission type. - - - - - Get a single burst from the array of bursts. - - The index of the burst to retrieve. - - The burst data at the given index. - - - - - Get the burst array. - - Array of bursts to be filled in. - - The number of bursts in the array. - - - - - Set a single burst in the array of bursts. - - The index of the burst to retrieve. - The new burst data to apply to the Particle System. - - - - Set the burst array. - - Array of bursts. - Optional array size, if burst count is less than array size. - - - - Set the burst array. - - Array of bursts. - Optional array size, if burst count is less than array size. - - - - Emit count particles immediately. - - Number of particles to emit. - - - - Emit a number of particles from script. - - Overidden particle properties. - Number of particles to emit. - - - - - - - - - - - - - - - - - - - - Script interface for Particle System emission parameters. - - - - - Override the angular velocity of emitted particles. - - - - - Override the 3D angular velocity of emitted particles. - - - - - When overriding the position of particles, setting this flag to true allows you to retain the influence of the shape module. - - - - - Override the axis of rotation of emitted particles. - - - - - Override the position of emitted particles. - - - - - Override the random seed of emitted particles. - - - - - Override the rotation of emitted particles. - - - - - Override the 3D rotation of emitted particles. - - - - - Override the initial color of emitted particles. - - - - - Override the lifetime of emitted particles. - - - - - Override the initial size of emitted particles. - - - - - Override the initial 3D size of emitted particles. - - - - - Override the velocity of emitted particles. - - - - - Reverts angularVelocity and angularVelocity3D back to the values specified in the inspector. - - - - - Revert the axis of rotation back to the value specified in the inspector. - - - - - Revert the position back to the value specified in the inspector. - - - - - Revert the random seed back to the value specified in the inspector. - - - - - Reverts rotation and rotation3D back to the values specified in the inspector. - - - - - Revert the initial color back to the value specified in the inspector. - - - - - Revert the lifetime back to the value specified in the inspector. - - - - - Revert the initial size back to the value specified in the inspector. - - - - - Revert the velocity back to the value specified in the inspector. - - - - - Script interface for the External Forces module. - - - - - Enable/disable the External Forces module. - - - - - The number of Force Fields explicitly provided to the influencers list. - - - - - Apply all Force Fields belonging to a matching layer to this Particle System. - - - - - Multiplies the magnitude of applied external forces. - - - - - Adds a ParticleSystemForceField to the influencers list. - - The Force Field to add to the influencers list. - - - - Returns the ParticleSystemForceField at the given index in the influencers list. - - The index to return the chosen Force Field from. - - The ForceField from the list. - - - - - Determines whether any particles are inside the influence of a Force Field. - - The Force Field to test. - - Whether the Force Field affects the Particle System. - - - - - Removes the Force Field from the influencers list at the given index. - - The index to remove the chosen Force Field from. - The Force Field to remove from the list. - - - - Removes the Force Field from the influencers list at the given index. - - The index to remove the chosen Force Field from. - The Force Field to remove from the list. - - - - Assigns the Force Field at the given index in the influencers list. - - Index to assign the Force Field. - Force Field that will be assigned. - - - - Script interface for the Force Over Lifetime module. - - - - - Enable/disable the Force Over Lifetime module. - - - - - When randomly selecting values between two curves or constants, this flag will cause a new random force to be chosen on each frame. - - - - - Are the forces being applied in local or world space? - - - - - The curve defining particle forces in the X axis. - - - - - Change the X axis mulutiplier. - - - - - The curve defining particle forces in the Y axis. - - - - - Change the Y axis multiplier. - - - - - The curve defining particle forces in the Z axis. - - - - - Change the Z axis multiplier. - - - - - Get a stream of custom per-particle data. - - The array of per-particle data. - Which stream to retrieve the data from. - - The amount of valid per-particle data. - - - - - Gets the particles of this Particle System. - - Output particle buffer, containing the current particle state. - The number of elements that are read from the Particle System. - The offset into the active particle list, from which to copy the particles. - - The number of particles written to the input particle array (the number of particles currently alive). - - - - - Gets the particles of this Particle System. - - Output particle buffer, containing the current particle state. - The number of elements that are read from the Particle System. - The offset into the active particle list, from which to copy the particles. - - The number of particles written to the input particle array (the number of particles currently alive). - - - - - Gets the particles of this Particle System. - - Output particle buffer, containing the current particle state. - The number of elements that are read from the Particle System. - The offset into the active particle list, from which to copy the particles. - - The number of particles written to the input particle array (the number of particles currently alive). - - - - - The Inherit Velocity Module controls how the velocity of the emitter is transferred to the particles as they are emitted. - - - - - Curve to define how much emitter velocity is applied during the lifetime of a particle. - - - - - Change the curve multiplier. - - - - - Enable/disable the InheritVelocity module. - - - - - How to apply emitter velocity to particles. - - - - - Does the Particle System contain any live particles, or will it produce more? - - Check all child Particle Systems as well. - - True if the Particle System contains live particles or is still creating new particles. False if the Particle System has stopped emitting particles and all particles are dead. - - - - - Does the Particle System contain any live particles, or will it produce more? - - Check all child Particle Systems as well. - - True if the Particle System contains live particles or is still creating new particles. False if the Particle System has stopped emitting particles and all particles are dead. - - - - - Access the ParticleSystem Lights Module. - - - - - Toggle whether the particle alpha gets multiplied by the light intensity, when computing the final light intensity. - - - - - Enable/disable the Lights module. - - - - - Define a curve to apply custom intensity scaling to particle lights. - - - - - Intensity multiplier. - - - - - Select what Light Prefab you want to base your particle lights on. - - - - - Set a limit on how many lights this Module can create. - - - - - Define a curve to apply custom range scaling to particle lights. - - - - - Range multiplier. - - - - - Choose what proportion of particles will receive a dynamic light. - - - - - Toggle where the particle size will be multiplied by the light range, to determine the final light range. - - - - - Toggle whether the particle lights will have their color multiplied by the particle color. - - - - - Randomly assign lights to new particles based on ParticleSystem.LightsModule.ratio. - - - - - Script interface for the Limit Velocity Over Lifetime module. - - - - - Controls how much the velocity that exceeds the velocity limit should be dampened. - - - - - Controls the amount of drag applied to the particle velocities. - - - - - Change the drag multiplier. - - - - - Enable/disable the Limit Force Over Lifetime module. - - - - - Maximum velocity curve, when not using one curve per axis. - - - - - Change the limit multiplier. - - - - - Maximum velocity curve for the X axis. - - - - - Change the limit multiplier on the X axis. - - - - - Maximum velocity curve for the Y axis. - - - - - Change the limit multiplier on the Y axis. - - - - - Maximum velocity curve for the Z axis. - - - - - Change the limit multiplier on the Z axis. - - - - - Adjust the amount of drag applied to particles, based on their sizes. - - - - - Adjust the amount of drag applied to particles, based on their speeds. - - - - - Set the velocity limit on each axis separately. - - - - - Specifies if the velocity limits are in local space (rotated with the transform) or world space. - - - - - Script interface for the main module. - - - - - Configure whether the Particle System will still be simulated each frame, when it is offscreen. - - - - - Simulate particles relative to a custom transform component. - - - - - The duration of the particle system in seconds. - - - - - Control how the Particle System calculates its velocity, when moving in the world. - - - - - Makes some particles spin in the opposite direction. - - - - - Scale applied to the gravity, defined by Physics.gravity. - - - - - Change the gravity multiplier. - - - - - Is the particle system looping? - - - - - The maximum number of particles to emit. - - - - - If set to true, the particle system will automatically start playing on startup. - - - - - When looping is enabled, this controls whether this particle system will look like it has already simulated for one loop when first becoming visible. - - - - - Cause some particles to spin in the opposite direction. - - - - - When ParticleSystem.MainModule.ringBufferMode is set to loop, this value defines the proportion of the particle life that is looped. - - - - - Configure the Particle System to not kill its particles when their lifetimes are exceeded. - - - - - Control how the particle system's Transform Component is applied to the particle system. - - - - - This selects the space in which to simulate particles. It can be either world or local space. - - - - - Override the default playback speed of the Particle System. - - - - - The initial color of particles when emitted. - - - - - Start delay in seconds. - - - - - Start delay multiplier in seconds. - - - - - The total lifetime in seconds that each new particle will have. - - - - - Start lifetime multiplier. - - - - - The initial rotation of particles when emitted. - - - - - A flag to enable 3D particle rotation. - - - - - The initial rotation multiplier of particles when emitted. - - - - - The initial rotation of particles around the X axis when emitted. - - - - - The initial rotation multiplier of particles around the X axis when emitted. - - - - - The initial rotation of particles around the Y axis when emitted. - - - - - The initial rotation multiplier of particles around the Y axis when emitted. - - - - - The initial rotation of particles around the Z axis when emitted. - - - - - The initial rotation multiplier of particles around the Z axis when emitted. - - - - - The initial size of particles when emitted. - - - - - A flag to enable specifying particle size individually for each axis. - - - - - A multiplier of the initial size of particles when emitted. - - - - - The initial size of particles along the X axis when emitted. - - - - - The initial size multiplier of particles along the X axis when emitted. - - - - - The initial size of particles along the Y axis when emitted. - - - - - The initial size multiplier of particles along the Y axis when emitted. - - - - - The initial size of particles along the Z axis when emitted. - - - - - The initial size multiplier of particles along the Z axis when emitted. - - - - - The initial speed of particles when emitted. - - - - - A multiplier of the initial speed of particles when emitted. - - - - - Select whether to Disable or Destroy the GameObject, or to call the OnParticleSystemStopped script Callback, when the Particle System is stopped and all particles have died. - - - - - When true, use the unscaled delta time to simulate the Particle System. Otherwise, use the scaled delta time. - - - - - Script interface for a Min-Max Curve. - - - - - Set the constant value. - - - - - Set a constant for the upper bound. - - - - - Set a constant for the lower bound. - - - - - Set the curve. - - - - - Set a curve for the upper bound. - - - - - Set a curve for the lower bound. - - - - - Set a multiplier to be applied to the curves. - - - - - Set the mode that the min-max curve will use to evaluate values. - - - - - A single constant value for the entire curve. - - Constant value. - - - - Use one curve when evaluating numbers along this Min-Max curve. - - A multiplier to be applied to the curve. - A single curve for evaluating against. - - - - - Randomly select values based on the interval between the minimum and maximum curves. - - A multiplier to be applied to the curves. - The curve describing the minimum values to be evaluated. - The curve describing the maximum values to be evaluated. - - - - - Randomly select values based on the interval between the minimum and maximum constants. - - The constant describing the minimum values to be evaluated. - The constant describing the maximum values to be evaluated. - - - - Manually query the curve to calculate values based on what mode it is in. - - Normalized time (in the range 0 - 1, where 1 represents 100%) at which to evaluate the curve. This is valid when ParticleSystem.MinMaxCurve.mode is set to ParticleSystemCurveMode.Curve or ParticleSystemCurveMode.TwoCurves. - Blend between the 2 curves/constants (Valid when ParticleSystem.MinMaxCurve.mode is set to ParticleSystemCurveMode.TwoConstants or ParticleSystemCurveMode.TwoCurves). - - Calculated curve/constant value. - - - - - Manually query the curve to calculate values based on what mode it is in. - - Normalized time (in the range 0 - 1, where 1 represents 100%) at which to evaluate the curve. This is valid when ParticleSystem.MinMaxCurve.mode is set to ParticleSystemCurveMode.Curve or ParticleSystemCurveMode.TwoCurves. - Blend between the 2 curves/constants (Valid when ParticleSystem.MinMaxCurve.mode is set to ParticleSystemCurveMode.TwoConstants or ParticleSystemCurveMode.TwoCurves). - - Calculated curve/constant value. - - - - - MinMaxGradient contains two Gradients, and returns a Color based on ParticleSystem.MinMaxGradient.mode. Depending on the mode, the Color returned may be randomized. -Gradients are edited via the ParticleSystem Inspector once a ParticleSystemGradientMode requiring them has been selected. Some modes do not require gradients, only colors. - - - - - Set a constant color. - - - - - Set a constant color for the upper bound. - - - - - Set a constant color for the lower bound. - - - - - Set the gradient. - - - - - Set a gradient for the upper bound. - - - - - Set a gradient for the lower bound. - - - - - Set the mode that the min-max gradient will use to evaluate colors. - - - - - A single constant color for the entire gradient. - - Constant color. - - - - Use one gradient when evaluating numbers along this Min-Max gradient. - - A single gradient for evaluating against. - - - - Randomly select colors based on the interval between the minimum and maximum constants. - - The constant color describing the minimum colors to be evaluated. - The constant color describing the maximum colors to be evaluated. - - - - Randomly select colors based on the interval between the minimum and maximum gradients. - - The gradient describing the minimum colors to be evaluated. - The gradient describing the maximum colors to be evaluated. - - - - Manually query the gradient to calculate colors based on what mode it is in. - - Normalized time (in the range 0 - 1, where 1 represents 100%) at which to evaluate the gradient. This is valid when ParticleSystem.MinMaxGradient.mode is set to ParticleSystemGradientMode.Gradient or ParticleSystemGradientMode.TwoGradients. - Blend between the 2 gradients/colors (Valid when ParticleSystem.MinMaxGradient.mode is set to ParticleSystemGradientMode.TwoColors or ParticleSystemGradientMode.TwoGradients). - - Calculated gradient/color value. - - - - - Manually query the gradient to calculate colors based on what mode it is in. - - Normalized time (in the range 0 - 1, where 1 represents 100%) at which to evaluate the gradient. This is valid when ParticleSystem.MinMaxGradient.mode is set to ParticleSystemGradientMode.Gradient or ParticleSystemGradientMode.TwoGradients. - Blend between the 2 gradients/colors (Valid when ParticleSystem.MinMaxGradient.mode is set to ParticleSystemGradientMode.TwoColors or ParticleSystemGradientMode.TwoGradients). - - Calculated gradient/color value. - - - - - Script interface for the Noise Module. - -The Noise Module allows you to apply turbulence to the movement of your particles. Use the low quality settings to create computationally efficient Noise, or simulate smoother, richer Noise with the higher quality settings. You can also choose to define the behavior of the Noise individually for each axis. - - - - - Higher frequency noise will reduce the strength by a proportional amount, if enabled. - - - - - Enable/disable the Noise module. - - - - - Low values create soft, smooth noise, and high values create rapidly changing noise. - - - - - Layers of noise that combine to produce final noise. - - - - - When combining each octave, scale the intensity by this amount. - - - - - When combining each octave, zoom in by this amount. - - - - - How much the noise affects the particle positions. - - - - - Generate 1D, 2D or 3D noise. - - - - - Define how the noise values are remapped. - - - - - Enable remapping of the final noise values, allowing for noise values to be translated into different values. - - - - - Remap multiplier. - - - - - Define how the noise values are remapped on the X axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - X axis remap multiplier. - - - - - Define how the noise values are remapped on the Y axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - Y axis remap multiplier. - - - - - Define how the noise values are remapped on the Z axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - Z axis remap multiplier. - - - - - How much the noise affects the particle rotation, in degrees per second. - - - - - Scroll the noise map over the particle system. - - - - - Scroll speed multiplier. - - - - - Control the noise separately for each axis. - - - - - How much the noise affects the particle sizes, applied as a multiplier on the size of each particle. - - - - - How strong the overall noise effect is. - - - - - Strength multiplier. - - - - - Define the strength of the effect on the X axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - X axis strength multiplier. - - - - - Define the strength of the effect on the Y axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - Y axis strength multiplier. - - - - - Define the strength of the effect on the Z axis, when using the ParticleSystem.NoiseModule.separateAxes option. - - - - - Z axis strength multiplier. - - - - - Script interface for a Particle. - - - - - The angular velocity of the particle. - - - - - The 3D angular velocity of the particle. - - - - - The animated velocity of the particle. - - - - - Mesh particles will rotate around this axis. - - - - - The lifetime of the particle. - - - - - The position of the particle. - - - - - The random seed of the particle. - - - - - The random value of the particle. - - - - - The remaining lifetime of the particle. - - - - - The rotation of the particle. - - - - - The 3D rotation of the particle. - - - - - The initial color of the particle. The current color of the particle is calculated procedurally based on this value and the active color modules. - - - - - The starting lifetime of the particle. - - - - - The initial size of the particle. The current size of the particle is calculated procedurally based on this value and the active size modules. - - - - - The initial 3D size of the particle. The current size of the particle is calculated procedurally based on this value and the active size modules. - - - - - The total velocity of the particle. - - - - - The velocity of the particle. - - - - - Calculate the current color of the particle by applying the relevant curves to its startColor property. - - The particle system from which this particle was emitted. - - Current color. - - - - - Calculate the current size of the particle by applying the relevant curves to its startSize property. - - The particle system from which this particle was emitted. - - Current size. - - - - - Calculate the current 3D size of the particle by applying the relevant curves to its startSize3D property. - - The particle system from which this particle was emitted. - - Current size. - - - - - Pauses the system so no new particles are emitted and the existing particles are not updated. - - Pause all child Particle Systems as well. - - - - Pauses the system so no new particles are emitted and the existing particles are not updated. - - Pause all child Particle Systems as well. - - - - Starts the Particle System. - - Play all child Particle Systems as well. - - - - Starts the Particle System. - - Play all child Particle Systems as well. - - - - Reset the cache of reserved graphics memory used for efficient rendering of Particle Systems. - - - - - Script interface for the Rotation By Speed module. - - - - - Enable/disable the Rotation By Speed module. - - - - - Apply the rotation curve between these minimum and maximum speeds. - - - - - Set the rotation by speed on each axis separately. - - - - - Rotation by speed curve for the X axis. - - - - - Speed multiplier along the X axis. - - - - - Rotation by speed curve for the Y axis. - - - - - Speed multiplier along the Y axis. - - - - - Rotation by speed curve for the Z axis. - - - - - Speed multiplier along the Z axis. - - - - - Script interface for the Rotation Over Lifetime module. - - - - - Enable/disable the Rotation Over Lifetime module. - - - - - Set the rotation over lifetime on each axis separately. - - - - - Rotation over lifetime curve for the X axis. - - - - - Rotation multiplier around the X axis. - - - - - Rotation over lifetime curve for the Y axis. - - - - - Rotation multiplier around the Y axis. - - - - - Rotation over lifetime curve for the Z axis. - - - - - Rotation multiplier around the Z axis. - - - - - Set a stream of custom per-particle data. - - The array of per-particle data. - Which stream to assign the data to. - - - - Sets the particles of this Particle System. - - Input particle buffer, containing the desired particle state. - The number of elements in the particles array that is written to the Particle System. - The offset into the destination particle list, to assign these particles. - - - - Sets the particles of this Particle System. - - Input particle buffer, containing the desired particle state. - The number of elements in the particles array that is written to the Particle System. - The offset into the destination particle list, to assign these particles. - - - - Sets the particles of this Particle System. - - Input particle buffer, containing the desired particle state. - The number of elements in the particles array that is written to the Particle System. - The offset into the destination particle list, to assign these particles. - - - - Script interface for the Shape module. - - - - - Align particles based on their initial direction of travel. - - - - - Angle of the cone to emit particles from. - - - - - Angle of the circle arc to emit particles from. - - - - - The mode used for generating particles around the arc. - - - - - In animated modes, this determines how quickly the particle emission position moves around the arc. - - - - - A multiplier of the arc speed of the particle emission shape. - - - - - Control the gap between particle emission points around the arc. - - - - - Scale of the box to emit particles from. - - - - - Thickness of the box to emit particles from. - - - - - The radius of the Donut shape to emit particles from. - - - - - Enable/disable the Shape module. - - - - - Length of the cone to emit particles from. - - - - - Mesh to emit particles from. - - - - - Emit particles from a single material of a mesh. - - - - - MeshRenderer to emit particles from. - - - - - Apply a scaling factor to the mesh that particles are emitted from. - - - - - Where on the mesh to emit particles from. - - - - - The mode used for generating particles on a mesh. - - - - - In animated modes, this determines how quickly the particle emission position moves across the mesh. - - - - - A multiplier of the mesh spawn speed. - - - - - Control the gap between particle emission points across the mesh. - - - - - Move particles away from the surface of the source mesh. - - - - - Apply an offset to the position from which particles are emitted. - - - - - Radius of the shape to emit particles from. - - - - - The mode used for generating particles along the radius. - - - - - In animated modes, this determines how quickly the particle emission position moves along the radius. - - - - - A multiplier of the radius speed of the particle emission shape. - - - - - Control the gap between particle emission points along the radius. - - - - - Radius thickness of the shape's edge from which to emit particles. - - - - - Randomizes the starting direction of particles. - - - - - Randomizes the starting direction of particles. - - - - - Randomizes the starting position of particles. - - - - - Apply a rotation to the shape from which particles are emitted. - - - - - Apply scale to the shape from which particles are emitted. - - - - - Type of shape to emit particles from. - - - - - SkinnedMeshRenderer to emit particles from. - - - - - Makes particles move in a spherical direction from their starting point. - - - - - Sprite to emit particles from. - - - - - SpriteRenderer to emit particles from. - - - - - Selects a texture to be used for tinting particle start colors. - - - - - When enabled, the alpha channel of the texture is applied to the particle alpha when spawned. - - - - - When enabled, 4 neighboring samples are taken from the texture, and combined to give the final particle value. - - - - - Selects which channel of the texture is used for discarding particles. - - - - - Discards particles when they are spawned on an area of the texture with a value lower than this threshold. - - - - - When enabled, the RGB channels of the texture are applied to the particle color when spawned. - - - - - When using a Mesh as a source shape type, this option controls which UV channel on the Mesh is used for reading the source texture. - - - - - Modulate the particle colors with the vertex colors, or the material color if no vertex colors exist. - - - - - Emit particles from a single material, or the whole mesh. - - - - - Fast-forwards the Particle System by simulating particles over the given period of time, then pauses it. - - Time period in seconds to advance the ParticleSystem simulation by. If restart is true, the ParticleSystem will be reset to 0 time, and then advanced by this value. If restart is false, the ParticleSystem simulation will be advanced in time from its current state by this value. - Fast-forward all child Particle Systems as well. - Restart and start from the beginning. - Only update the system at fixed intervals, based on the value in "Fixed Time" in the Time options. - - - - Fast-forwards the Particle System by simulating particles over the given period of time, then pauses it. - - Time period in seconds to advance the ParticleSystem simulation by. If restart is true, the ParticleSystem will be reset to 0 time, and then advanced by this value. If restart is false, the ParticleSystem simulation will be advanced in time from its current state by this value. - Fast-forward all child Particle Systems as well. - Restart and start from the beginning. - Only update the system at fixed intervals, based on the value in "Fixed Time" in the Time options. - - - - Fast-forwards the Particle System by simulating particles over the given period of time, then pauses it. - - Time period in seconds to advance the ParticleSystem simulation by. If restart is true, the ParticleSystem will be reset to 0 time, and then advanced by this value. If restart is false, the ParticleSystem simulation will be advanced in time from its current state by this value. - Fast-forward all child Particle Systems as well. - Restart and start from the beginning. - Only update the system at fixed intervals, based on the value in "Fixed Time" in the Time options. - - - - Fast-forwards the Particle System by simulating particles over the given period of time, then pauses it. - - Time period in seconds to advance the ParticleSystem simulation by. If restart is true, the ParticleSystem will be reset to 0 time, and then advanced by this value. If restart is false, the ParticleSystem simulation will be advanced in time from its current state by this value. - Fast-forward all child Particle Systems as well. - Restart and start from the beginning. - Only update the system at fixed intervals, based on the value in "Fixed Time" in the Time options. - - - - Script interface for the Size By Speed module. - - - - - Enable/disable the Size By Speed module. - - - - - Apply the size curve between these minimum and maximum speeds. - - - - - Set the size by speed on each axis separately. - - - - - Curve to control particle size based on speed. - - - - - Size multiplier. - - - - - Size by speed curve for the X axis. - - - - - X axis size multiplier. - - - - - Size by speed curve for the Y axis. - - - - - Y axis size multiplier. - - - - - Size by speed curve for the Z axis. - - - - - Z axis size multiplier. - - - - - Script interface for the Size Over Lifetime module. - - - - - Enable/disable the Size Over Lifetime module. - - - - - Set the size over lifetime on each axis separately. - - - - - Curve to control particle size based on lifetime. - - - - - Size multiplier. - - - - - Size over lifetime curve for the X axis. - - - - - X axis size multiplier. - - - - - Size over lifetime curve for the Y axis. - - - - - Y axis size multiplier. - - - - - Size over lifetime curve for the Z axis. - - - - - Z axis size multiplier. - - - - - Stops playing the Particle System using the supplied stop behaviour. - - Stop all child Particle Systems as well. - Stop emitting or stop emitting and clear the system. - - - - Stops playing the Particle System using the supplied stop behaviour. - - Stop all child Particle Systems as well. - Stop emitting or stop emitting and clear the system. - - - - Stops playing the Particle System using the supplied stop behaviour. - - Stop all child Particle Systems as well. - Stop emitting or stop emitting and clear the system. - - - - Script interface for the Sub Emitters module. - - - - - Sub particle system which spawns at the locations of the birth of the particles from the parent system. - - - - - Sub particle system which spawns at the locations of the birth of the particles from the parent system. - - - - - Sub particle system which spawns at the locations of the collision of the particles from the parent system. - - - - - Sub particle system which spawns at the locations of the collision of the particles from the parent system. - - - - - Sub particle system which spawns at the locations of the death of the particles from the parent system. - - - - - Sub particle system to spawn on death of the parent system's particles. - - - - - Enable/disable the Sub Emitters module. - - - - - The total number of sub-emitters. - - - - - Add a new sub-emitter. - - The sub-emitter to be added. - The event that creates new particles. - The properties of the new particles. - The probability that the sub-emitter emits particles. Accepts values from 0 to 1, where 0 is never and 1 is always. - - - - Add a new sub-emitter. - - The sub-emitter to be added. - The event that creates new particles. - The properties of the new particles. - The probability that the sub-emitter emits particles. Accepts values from 0 to 1, where 0 is never and 1 is always. - - - - Returns the probability that the sub-emitter emits particles. - - The index of the desired sub-emitter. - - The emission probability for the desired sub-emitter - - - - - Get the properties of the sub-emitter at the given index. - - The index of the desired sub-emitter. - - The properties of the requested sub-emitter. - - - - - Get the sub-emitter Particle System at the given index. - - The index of the desired sub-emitter. - - The sub-emitter being requested. - - - - - Get the type of the sub-emitter at the given index. - - The index of the desired sub-emitter. - - The type of the requested sub-emitter. - - - - - Remove a sub-emitter from the given index in the array. - - The index from which to remove a sub-emitter. - - - - Sets the probability that the sub-emitter emits particles. - - The index of the sub-emitter being modified. - Sets the emission probability of the sub-emitter at the given index. - - - - Set the properties of the sub-emitter at the given index. - - The index of the sub-emitter being modified. - The new properties to assign to this sub-emitter. - - - - Set the Particle System to use as the sub-emitter at the given index. - - The index of the sub-emitter being modified. - The Particle System being used as this sub-emitter. - - - - Set the type of the sub-emitter at the given index. - - The index of the sub-emitter being modified. - The new spawning type to assign to this sub-emitter. - - - - Script interface for the Texture Sheet Animation module. - - - - - Specifies the animation type. - - - - - Specifies how many times the animation will loop during the lifetime of the particle. - - - - - Enable/disable the Texture Sheet Animation module. - - - - - Flip the U coordinate on particles, causing them to appear mirrored horizontally. - - - - - Flip the V coordinate on particles, causing them to appear mirrored vertically. - - - - - Control how quickly the animation plays. - - - - - Curve to control which frame of the texture sheet animation to play. - - - - - Frame over time mutiplier. - - - - - Select whether the animated texture information comes from a grid of frames on a single texture, or from a list of Sprite objects. - - - - - Defines the tiling of the texture in the X axis. - - - - - Defines the tiling of the texture in the Y axis. - - - - - Explicitly select which row of the texture sheet is used, when ParticleSystem.TextureSheetAnimationModule.useRandomRow is set to false. - - - - - Specify how particle speeds are mapped to the animation frames. - - - - - The total number of sprites. - - - - - Define a random starting frame for the texture sheet animation. - - - - - Starting frame multiplier. - - - - - Select whether the playback is based on mapping a curve to the lifetime of each particle, by using the particle speeds, or if playback simply uses a constant frames per second. - - - - - Use a random row of the texture sheet for each particle emitted. - - - - - Choose which UV channels will receive texture animation. - - - - - Add a new Sprite. - - The Sprite to be added. - - - - Get the Sprite at the given index. - - The index of the desired Sprite. - - The Sprite being requested. - - - - - Remove a Sprite from the given index in the array. - - The index from which to remove a Sprite. - - - - Set the Sprite at the given index. - - The index of the Sprite being modified. - The Sprite being assigned. - - - - Access the particle system trails module. - - - - - Adds an extra position to each ribbon, connecting it to the location of the Transform Component. - - - - - The gradient controlling the trail colors during the lifetime of the attached particle. - - - - - The gradient controlling the trail colors over the length of the trail. - - - - - If enabled, Trails will disappear immediately when their owning particle dies. Otherwise, the trail will persist until all its points have naturally expired, based on its lifetime. - - - - - Enable/disable the Trail module. - - - - - Configures the trails to generate Normals and Tangents. With this data, Scene lighting can affect the trails via Normal Maps and the Unity Standard Shader, or your own custom-built Shaders. - - - - - Toggle whether the trail will inherit the particle color as its starting color. - - - - - The curve describing the trail lifetime, throughout the lifetime of the particle. - - - - - Change the lifetime multiplier. - - - - - Set the minimum distance each trail can travel before a new vertex is added to it. - - - - - Choose how particle trails are generated. - - - - - Choose what proportion of particles will receive a trail. - - - - - Select how many lines to create through the Particle System. - - - - - Apply a shadow bias to prevent self-shadowing artifacts. The specified value is the proportion of the trail width at each segment. - - - - - Set whether the particle size will act as a multiplier on top of the trail lifetime. - - - - - Set whether the particle size will act as a multiplier on top of the trail width. - - - - - When used on a sub emitter, ribbons will connect particles from each parent particle independently. - - - - - Choose whether the U coordinate of the trail texture is tiled or stretched. - - - - - The curve describing the width, of each trail point. - - - - - Change the width multiplier. - - - - - Drop new trail points in world space, regardless of Particle System Simulation Space. - - - - - Script interface for the Trigger module. - - - - - Enable/disable the Trigger module. - - - - - Choose what action to perform when particles enter the trigger volume. - - - - - Choose what action to perform when particles leave the trigger volume. - - - - - Choose what action to perform when particles are inside the trigger volume. - - - - - The maximum number of collision shapes that can be attached to this particle system trigger. - - - - - Choose what action to perform when particles are outside the trigger volume. - - - - - A multiplier applied to the size of each particle before overlaps are processed. - - - - - Get a collision shape associated with this particle system trigger. - - Which collider to return. - - The collider at the given index. - - - - - Set a collision shape associated with this particle system trigger. - - Which collider to set. - The collider to associate with this trigger. - - - - Triggers the specified sub emitter on all particles of the Particle System. - - Index of the sub emitter to trigger. - - - - Triggers the specified sub emitter on the specified particle(s) of the Particle System. - - Index of the sub emitter to trigger. - Triggers the sub emtter on a single particle. - Triggers the sub emtter on a list of particles. - - - - Triggers the specified sub emitter on the specified particle(s) of the Particle System. - - Index of the sub emitter to trigger. - Triggers the sub emtter on a single particle. - Triggers the sub emtter on a list of particles. - - - - Script interface for the Velocity Over Lifetime module. - - - - - Enable/disable the Velocity Over Lifetime module. - - - - - Specify a custom center of rotation for the orbital and radial velocities. - - - - - This method is more efficient than accessing the whole curve, if you only want to change the overall offset multiplier. - - - - - Specify a custom center of rotation for the orbital and radial velocities. - - - - - This method is more efficient than accessing the whole curve, if you only want to change the overall offset multiplier. - - - - - Specify a custom center of rotation for the orbital and radial velocities. - - - - - This method is more efficient than accessing the whole curve, if you only want to change the overall offset multiplier. - - - - - Curve to control particle speed based on lifetime, around the X axis. - - - - - X axis speed multiplier. - - - - - Curve to control particle speed based on lifetime, around the Y axis. - - - - - Y axis speed multiplier. - - - - - Curve to control particle speed based on lifetime, around the Z axis. - - - - - Z axis speed multiplier. - - - - - Curve to control particle speed based on lifetime, away from a center position. - - - - - Radial speed multiplier. - - - - - Specifies if the velocities are in local space (rotated with the transform) or world space. - - - - - Curve to control particle speed based on lifetime, without affecting the direction of the particles. - - - - - Speed multiplier. - - - - - Curve to control particle speed based on lifetime, on the X axis. - - - - - X axis speed multiplier. - - - - - Curve to control particle speed based on lifetime, on the Y axis. - - - - - Y axis speed multiplier. - - - - - Curve to control particle speed based on lifetime, on the Z axis. - - - - - Z axis speed multiplier. - - - - - The animation mode. - - - - - Use a regular grid to construct a sequence of animation frames. - - - - - Use a list of sprites to construct a sequence of animation frames. - - - - - Control how animation frames are selected. - - - - - Select animation frames sequentially at a constant rate of the specified frames per second. - - - - - Select animation frames based on the particle ages. - - - - - Select animation frames based on the particle speeds. - - - - - The animation type. - - - - - Animate a single row in the sheet from left to right. - - - - - Animate over the whole texture sheet from left to right, top to bottom. - - - - - Whether to use 2D or 3D colliders for particle collisions. - - - - - Use 2D colliders to collide particles against. - - - - - Use 3D colliders to collide particles against. - - - - - Quality of world collisions. Medium and low quality are approximate and may leak particles. - - - - - The most accurate world collisions. - - - - - Fastest and most approximate world collisions. - - - - - Approximate world collisions. - - - - - The type of collisions to use for a given particle system. - - - - - Collide with a list of planes. - - - - - Collide with the world geometry. - - - - - The action to perform when the Particle System is offscreen. - - - - - Continue simulating the Particle System when it is offscreen. - - - - - For looping effects, the simulation is paused when offscreen, and for one-shot effects, the simulation will continue playing. - - - - - Pause the Particle System simulation when it is offscreen. - - - - - Pause the Particle System simulation when it is offscreen, and perform an extra simulation when the system comes back onscreen, creating the impression that it was never paused. - - - - - The particle curve mode (Shuriken). - - - - - Use a single constant for the ParticleSystem.MinMaxCurve. - - - - - Use a single curve for the ParticleSystem.MinMaxCurve. - - - - - Use a random value between 2 constants for the ParticleSystem.MinMaxCurve. - - - - - Use a random value between 2 curves for the ParticleSystem.MinMaxCurve. - - - - - Which stream of custom particle data to set. - - - - - The first stream of custom per-particle data. - - - - - The second stream of custom per-particle data. - - - - - Which mode the Custom Data module uses to generate its data. - - - - - Generate data using ParticleSystem.MinMaxGradient. - - - - - Don't generate any data. - - - - - Generate data using ParticleSystem.MinMaxCurve. - - - - - The mode in which particles are emitted. - - - - - Emit when emitter moves. - - - - - Emit over time. - - - - - Control how a Particle System calculates its velocity. - - - - - Calculate the Particle System velocity by using a Rigidbody or Rigidbody2D component, if one exists on the Game Object. - - - - - Calculate the Particle System velocity by using the Transform component. - - - - - Script interface for Particle System Force Fields. - - - - - Apply a linear force along the local X axis to particles within the volume of the Force Field. - - - - - Apply a linear force along the local Y axis to particles within the volume of the Force Field. - - - - - Apply a linear force along the local Z axis to particles within the volume of the Force Field. - - - - - Apply drag to particles within the volume of the Force Field. - - - - - Determines the size of the shape used for influencing particles. - - - - - Apply gravity to particles within the volume of the Force Field. - - - - - When using the gravity force, set this value between 0 and 1 to control the focal point of the gravity effect. - - - - - Describes the length of the Cylinder when using the Cylinder Force Field shape to influence particles. - - - - - When using Drag, the drag strength will be multiplied by the size of the particles if this toggle is enabled. - - - - - When using Drag, the drag strength will be multiplied by the speed of the particles if this toggle is enabled. - - - - - Controls how strongly particles are dragged into the vortex motion. - - - - - Apply randomness to the Force Field axis that particles will travel around. - - - - - The speed at which particles are propelled around a vortex. - - - - - Selects the type of shape used for influencing particles. - - - - - Setting a value greater than 0 creates a hollow Force Field shape. This will cause particles to not be affected by the Force Field when closer to the center of the volume than the startRange property. - - - - - Apply forces to particles within the volume of the Force Field, by using a 3D texture containing vector field data. - - - - - Controls how strongly particles are dragged into the vector field motion. - - - - - The speed at which particles are propelled through the vector field. - - - - - The type of shape used for influencing particles in the Force Field Component. - - - - - Influence particles inside a box shape. - - - - - Influence particles inside a cylinder shape. - - - - - Influence particles inside a hemisphere shape. - - - - - Influence particles inside a sphere shape. - - - - - The particle Game Object filtering mode that specifies which objects are used by specific Particle System modules (Shuriken). - - - - - Include objects based on a layer mask, where all objects that match the mask are included. - - - - - Include objects based on an explicitly provided list. - - - - - The particle gradient mode (Shuriken). - - - - - Use a single color for the ParticleSystem.MinMaxGradient. - - - - - Use a single color gradient for the ParticleSystem.MinMaxGradient. - - - - - Define a list of colors in the ParticleSystem.MinMaxGradient, to be chosen from at random. - - - - - Use a random value between 2 colors for the ParticleSystem.MinMaxGradient. - - - - - Use a random value between 2 color gradients for the ParticleSystem.MinMaxGradient. - - - - - How to apply emitter velocity to particles. - - - - - Each particle's velocity is set to the emitter's current velocity value, every frame. - - - - - Each particle inherits the emitter's velocity on the frame when it was initially emitted. - - - - - The mesh emission type. - - - - - Emit from the edges of the mesh. - - - - - Emit from the surface of the mesh. - - - - - Emit from the vertices of the mesh. - - - - - The quality of the generated noise. - - - - - High quality 3D noise. - - - - - Low quality 1D noise. - - - - - Medium quality 2D noise. - - - - - What action to perform when the particle trigger module passes a test. - - - - - Send the OnParticleTrigger command to the particle system's script. - - - - - Do nothing. - - - - - Kill all particles that pass this test. - - - - - Renders particles on to the screen (Shuriken). - - - - - The number of currently active custom vertex streams. - - - - - Control the direction that particles face. - - - - - Allow billboard particles to roll around their Z axis. - - - - - How much are the particles stretched depending on the Camera's speed. - - - - - Enables GPU Instancing on platforms where it is supported. - - - - - Flip a percentage of the particles, along each axis. - - - - - How much are the particles stretched in their direction of motion. - - - - - Specifies how the Particle System Renderer interacts with SpriteMask. - - - - - Clamp the maximum particle size. - - - - - Mesh used as particle instead of billboarded texture. - - - - - The number of meshes being used for particle rendering. - - - - - Clamp the minimum particle size. - - - - - How much are billboard particle normals oriented towards the camera. - - - - - Modify the pivot point used for rotating particles. - - - - - How particles are drawn. - - - - - Apply a shadow bias to prevent self-shadowing artifacts. The specified value is the proportion of the particle size. - - - - - Biases particle system sorting amongst other transparencies. - - - - - Sort particles within a system. - - - - - Set the material used by the Trail module for attaching trails to particles. - - - - - How much are the particles stretched depending on "how fast they move". - - - - - Query whether the particle system renderer uses a particular set of vertex streams. - - Streams to query. - - Whether all the queried streams are enabled or not. - - - - - Creates a snapshot of ParticleSystemRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the particles. - The camera used for determining which way camera-space particles will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystemRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the particles. - The camera used for determining which way camera-space particles will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystemRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the particles. - The camera used for determining which way camera-space particles will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystemRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the particles. - The camera used for determining which way camera-space particles will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystem Trails and stores them in mesh. - - A static mesh that will receive the snapshot of the particle trails. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystem Trails and stores them in mesh. - - A static mesh that will receive the snapshot of the particle trails. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystem Trails and stores them in mesh. - - A static mesh that will receive the snapshot of the particle trails. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of ParticleSystem Trails and stores them in mesh. - - A static mesh that will receive the snapshot of the particle trails. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Disable a set of vertex shader streams on the particle system renderer. -The position stream is always enabled, and any attempts to remove it will be ignored. - - Streams to disable. - - - - Enable a set of vertex shader streams on the particle system renderer. - - Streams to enable. - - - - Query which vertex shader streams are enabled on the ParticleSystemRenderer. - - The array of streams to be populated. - - - - Query whether the particle system renderer uses a particular set of vertex streams. - - Streams to query. - - Returns the subset of the queried streams that are actually enabled. - - - - - Get the array of meshes to be used as particles. - - This array will be populated with the list of meshes being used for particle rendering. - - The number of meshes actually written to the destination array. - - - - - Enable a set of vertex shader streams on the ParticleSystemRenderer. - - The new array of enabled vertex streams. - - - - Set an array of meshes to be used as particles when the ParticleSystemRenderer.renderMode is set to ParticleSystemRenderMode.Mesh. - - Array of meshes to be used. - Number of elements from the mesh array to be applied. - - - - Set an array of meshes to be used as particles when the ParticleSystemRenderer.renderMode is set to ParticleSystemRenderMode.Mesh. - - Array of meshes to be used. - Number of elements from the mesh array to be applied. - - - - The rendering mode for particle systems (Shuriken). - - - - - Render particles as billboards facing the active camera. (Default) - - - - - Render particles as billboards always facing up along the y-Axis. - - - - - Render particles as meshes. - - - - - Do not render particles. - - - - - Stretch particles in the direction of motion. - - - - - Render particles as billboards always facing the player, but not pitching along the x-Axis. - - - - - How particles are aligned when rendered. - - - - - Particles face the eye position. - - - - - Particles align with their local transform. - - - - - Particles are aligned to their direction of travel. - - - - - Particles face the camera plane. - - - - - Particles align with the world. - - - - - Control how particles are removed from the Particle System. - - - - - Particles are removed when their age exceeds their lifetime. - - - - - Particles are removed when creating new particles would exceed the Max Particles property. Before being removed, particles remain alive until their age exceeds their lifetime. - - - - - Particles are removed when creating new particles would exceed the Max Particles property. - - - - - Control how particle systems apply transform scale. - - - - - Scale the particle system using the entire transform hierarchy. - - - - - Scale the particle system using only its own transform scale. (Ignores parent scale). - - - - - Only apply transform scale to the shape component, which controls where - particles are spawned, but does not affect their size or movement. - - - - - - The mode used to generate new points in a shape (Shuriken). - - - - - Distribute new particles around the shape evenly. - - - - - Animate the emission point around the shape. - - - - - Animate the emission point around the shape, alternating between clockwise and counter-clockwise directions. - - - - - Generate points randomly. (Default) - - - - - The texture channel (Shuriken). - - - - - The alpha channel. - - - - - The blue channel. - - - - - The green channel. - - - - - The red channel. - - - - - The emission shape (Shuriken). - - - - - Emit from the volume of a box. - - - - - Emit from the edges of a box. - - - - - Emit from the surface of a box. - - - - - Emit from a circle. - - - - - Emit from the edge of a circle. - - - - - Emit from the base of a cone. - - - - - Emit from the base surface of a cone. - - - - - Emit from a cone. - - - - - Emit from the surface of a cone. - - - - - Emit from a Donut. - - - - - Emit from a half-sphere. - - - - - Emit from the surface of a half-sphere. - - - - - Emit from a mesh. - - - - - Emit from a mesh renderer. - - - - - Emit from a rectangle. - - - - - Emit from an edge. - - - - - Emit from a skinned mesh renderer. - - - - - Emit from a sphere. - - - - - Emit from the surface of a sphere. - - - - - Emit from a sprite. - - - - - Emit from a sprite renderer. - - - - - The space to simulate particles in. - - - - - Simulate particles relative to a custom transform component, defined by ParticleSystem.MainModule.customSimulationSpace. - - - - - Simulate particles in local space. - - - - - Simulate particles in world space. - - - - - The sorting mode for particle systems. - - - - - Sort based on distance. - - - - - No sorting. - - - - - Sort the oldest particles to the front. - - - - - Sort the youngest particles to the front. - - - - - The action to perform when the Particle System stops. - - - - - Call OnParticleSystemStopped on the ParticleSystem script. - - - - - Destroy the GameObject containing the Particle System. - - - - - Disable the GameObject containing the Particle System. - - - - - Do nothing. - - - - - The behavior to apply when calling ParticleSystem.Stop|Stop. - - - - - Stops particle system emitting any further particles. All existing particles will remain until they expire. - - - - - Stops particle system emitting and removes all existing emitted particles. - - - - - The properties of sub-emitter particles. - - - - - When spawning new particles, multiply the start color by the color of the parent particles. - - - - - When spawning new particles, use the duration and age properties from the parent system, when sampling Main module curves in the Sub-Emitter. - - - - - When spawning new particles, inherit all available properties from the parent particles. - - - - - New particles will have a shorter lifespan, the closer their parent particles are to death. - - - - - When spawning new particles, do not inherit any properties from the parent particles. - - - - - When spawning new particles, add the start rotation to the rotation of the parent particles. - - - - - When spawning new particles, multiply the start size by the size of the parent particles. - - - - - The events that cause new particles to be spawned. - - - - - Spawns new particles when particles from the parent system are born. - - - - - Spawns new particles when particles from the parent system collide with something. - - - - - Spawns new particles when particles from the parent system die. - - - - - Spawns new particles when triggered from script using ParticleSystem.TriggerSubEmitter. - - - - - Spawns new particles when particles from the parent system pass conditions in the Trigger Module. - - - - - Choose how Particle Trails are generated. - - - - - Makes a trail behind each particle as the particle moves. - - - - - Draws a line between each particle, connecting the youngest particle to the oldest. - - - - - Choose how textures are applied to Particle Trails. - - - - - Map the texture once along the entire length of the trail, assuming all vertices are evenly spaced. - - - - - Repeat the texture along the trail, repeating at a rate of once per trail segment. To adjust the tiling rate, use Material.SetTextureScale. - - - - - Map the texture once along the entire length of the trail. - - - - - Repeat the texture along the trail. To set the tiling rate, use Material.SetTextureScale. - - - - - The different types of particle triggers. - - - - - Trigger when particles enter the collision volume. - - - - - Trigger when particles leave the collision volume. - - - - - Trigger when particles are inside the collision volume. - - - - - Trigger when particles are outside the collision volume. - - - - - All possible particle system vertex shader inputs. - - - - - The normalized age of each particle, from 0 to 1. - - - - - The amount to blend between animated texture frames, from 0 to 1. - - - - - The current animation frame index of each particle. - - - - - The center position of the entire particle, in world space. - - - - - The color of each particle. - - - - - One custom value for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Two custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Three custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Four custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - One custom value for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Two custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Three custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - Four custom values for each particle, defined by the Custom Data Module, or ParticleSystem.SetCustomParticleData. - - - - - The reciprocal of the starting lifetime, in seconds (1.0f / startLifetime). - - - - - The X axis noise on the current frame. - - - - - The X and Y axis noise on the current frame. - - - - - The 3D noise on the current frame. - - - - - The accumulated X axis noise, over the lifetime of the particle. - - - - - The accumulated X and Y axis noise, over the lifetime of the particle. - - - - - The accumulated 3D noise, over the lifetime of the particle. - - - - - The vertex normal of each particle. - - - - - The position of each particle vertex, in world space. - - - - - The Z axis rotation of each particle. - - - - - The 3D rotation of each particle. - - - - - The Z axis rotational speed of each particle. - - - - - The 3D rotational speed of each particle. - - - - - The X axis size of each particle. - - - - - The X and Y axis sizes of each particle. - - - - - The 3D size of each particle. - - - - - The speed of each particle, calculated by taking the magnitude of the velocity. - - - - - A random number for each particle, which remains constant during their lifetime. - - - - - Two random numbers for each particle, which remain constant during their lifetime. - - - - - Three random numbers for each particle, which remain constant during their lifetime. - - - - - Four random numbers for each particle, which remain constant during their lifetime. - - - - - The tangent vector for each particle (for normal mapping). - - - - - The first UV stream of each particle. - - - - - The second UV stream of each particle. - - - - - The third UV stream of each particle (only for meshes). - - - - - The fourth UV stream of each particle (only for meshes). - - - - - A random number for each particle, which changes during their lifetime. - - - - - Two random numbers for each particle, which change during their lifetime. - - - - - Three random numbers for each particle, which change during their lifetime. - - - - - Four random numbers for each particle, which change during their lifetime. - - - - - The velocity of each particle, in world space. - - - - - The vertex ID of each particle. - - - - - All possible particle system vertex shader inputs. - - - - - A mask with all vertex streams enabled. - - - - - The center position of each particle, with the vertex ID of each particle, from 0-3, stored in the w component. - - - - - The color of each particle. - - - - - The first stream of custom data, supplied from script. - - - - - The second stream of custom data, supplied from script. - - - - - Alive time as a 0-1 value in the X component, and Total Lifetime in the Y component. -To get the current particle age, simply multiply X by Y. - - - - - A mask with no vertex streams enabled. - - - - - The normal of each particle. - - - - - The world space position of each particle. - - - - - 4 random numbers. The first 3 are deterministic and assigned once when each particle is born, but the 4th value will change during the lifetime of the particle. - - - - - The rotation of each particle. - - - - - The size of each particle. - - - - - Tangent vectors for normal mapping. - - - - - The texture coordinates of each particle. - - - - - With the Texture Sheet Animation module enabled, this contains the UVs for the second texture frame, the blend factor for each particle, and the raw frame, allowing for blending of frames. - - - - - The 3D velocity of each particle. - - - - - Structure containing minimum and maximum terrain patch height values. - - - - - Maximum height of a terrain patch. - - - - - Minimum height of a terrain patch. - - - - - Physics material describes how to handle colliding objects (friction, bounciness). - - - - - Determines how the bounciness is combined. - - - - - How bouncy is the surface? A value of 0 will not bounce. A value of 1 will bounce without any loss of energy. - - - - - The friction used when already moving. This value is usually between 0 and 1. - - - - - If anisotropic friction is enabled, dynamicFriction2 will be applied along frictionDirection2. - - - - - Determines how the friction is combined. - - - - - The direction of anisotropy. Anisotropic friction is enabled if the vector is not zero. - - - - - The friction coefficient used when an object is lying on a surface. - - - - - If anisotropic friction is enabled, staticFriction2 will be applied along frictionDirection2. - - - - - Creates a new material. - - - - - Creates a new material named name. - - - - - - Describes how physics materials of the colliding objects are combined. - -The friction force as well as the residual bounce impulse are applied symmertrically to both of the colliders in contact, so each pair of overlapping colliders must have a single set of friction and bouciness settings. However, one can set arbitrary physics materials to any colliders. For that particular reason, there is a mechanism that allows the combination of two different sets of properties that correspond to each of the colliders in contact into one set to be used in the solver. - -Specifying Average, Maximum, Minimum or Multiply as the physics material combine mode, you directly set the function that is used to combine the settings corresponding to the two overlapping colliders into one set of settings that can be used to apply the material effect. - -Note that there is a special case when the two overlapping colliders have physics materials with different combine modes set. In this particular case, the function that has the highest priority is used. The priority order is as follows: Average < Minimum < Multiply < Maximum. For example, if one material has Average set but the other one has Maximum, then the combine function to be used is Maximum, since it has higher priority. - - - - - Averages the friction/bounce of the two colliding materials. - - - - - Uses the larger friction/bounce of the two colliding materials. - - - - - Uses the smaller friction/bounce of the two colliding materials. - - - - - Multiplies the friction/bounce of the two colliding materials. - - - - - Global physics properties and helper methods. - - - - - Sets whether the physics should be simulated automatically or not. - - - - - Whether or not to automatically sync transform changes with the physics system whenever a Transform component changes. - - - - - Two colliding objects with a relative velocity below this will not bounce (default 2). Must be positive. - - - - - The default contact offset of the newly created colliders. - - - - - The PhysicsScene automatically created when Unity starts. - - - - - The defaultSolverIterations determines how accurately Rigidbody joints and collision contacts are resolved. (default 6). Must be positive. - - - - - The defaultSolverVelocityIterations affects how accurately the Rigidbody joints and collision contacts are resolved. (default 1). Must be positive. - - - - - The gravity applied to all rigid bodies in the Scene. - - - - - Sets the minimum separation distance for cloth inter-collision. - - - - - Sets the cloth inter-collision stiffness. - - - - - The default maximum angular velocity permitted for any rigid bodies (default 7). Must be positive. - - - - - The minimum contact penetration value in order to apply a penalty force (default 0.05). Must be positive. - - - - - Whether physics queries should hit back-face triangles. - - - - - Specifies whether queries (raycasts, spherecasts, overlap tests, etc.) hit Triggers by default. - - - - - Determines whether the garbage collector should reuse only a single instance of a Collision type for all collision callbacks. - - - - - The default angular velocity, below which objects start sleeping (default 0.14). Must be positive. - - - - - The mass-normalized energy threshold, below which objects start going to sleep. - - - - - The default linear velocity, below which objects start going to sleep (default 0.15). Must be positive. - - - - - Layer mask constant to select all layers. - - - - - Casts the box along a ray and returns detailed information on what was hit. - - Center of the box. - Half the size of the box in each dimension. - The direction in which to cast the box. - Rotation of the box. - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - True, if any intersections were found. - - - - - Casts the box along a ray and returns detailed information on what was hit. - - Center of the box. - Half the size of the box in each dimension. - The direction in which to cast the box. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - Rotation of the box. - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - True, if any intersections were found. - - - - - Like Physics.BoxCast, but returns all hits. - - Center of the box. - Half the size of the box in each dimension. - The direction in which to cast the box. - Rotation of the box. - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - All colliders that were hit. - - - - - Cast the box along the direction, and store hits in the provided buffer. - - Center of the box. - Half the size of the box in each dimension. - The direction in which to cast the box. - The buffer to store the results in. - Rotation of the box. - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - The amount of hits stored to the results buffer. - - - - - Casts a capsule against all colliders in the Scene and returns detailed information on what was hit. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The direction into which to sweep the capsule. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - True when the capsule sweep intersects any collider, otherwise false. - - - - - - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The direction into which to sweep the capsule. - The max length of the sweep. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - - Like Physics.CapsuleCast, but this function will return all hits the capsule sweep intersects. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The direction into which to sweep the capsule. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - An array of all colliders hit in the sweep. - - - - - Casts a capsule against all colliders in the Scene and returns detailed information on what was hit into the buffer. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The direction into which to sweep the capsule. - The buffer to store the hits into. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - The amount of hits stored into the buffer. - - - - - Check whether the given box overlaps with other colliders or not. - - Center of the box. - Half the size of the box in each dimension. - Rotation of the box. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True, if the box overlaps with any colliders. - - - - - Checks if any colliders overlap a capsule-shaped volume in world space. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - - - Returns true if there are any colliders overlapping the sphere defined by position and radius in world coordinates. - - Center of the sphere. - Radius of the sphere. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - - Returns a point on the given collider that is closest to the specified location. - - Location you want to find the closest point to. - The collider that you find the closest point on. - The position of the collider. - The rotation of the collider. - - The point on the collider that is closest to the specified location. - - - - - Compute the minimal translation required to separate the given colliders apart at specified poses. - - The first collider. - Position of the first collider. - Rotation of the first collider. - The second collider. - Position of the second collider. - Rotation of the second collider. - Direction along which the translation required to separate the colliders apart is minimal. - The distance along direction that is required to separate the colliders apart. - - True, if the colliders overlap at the given poses. - - - - - Layer mask constant to select default raycast layers. - - - - - Are collisions between layer1 and layer2 being ignored? - - - - - - - Makes the collision detection system ignore all collisions between collider1 and collider2. - - Starting point of the collider. - End point of the collider. - Ignore collision. - - - - Makes the collision detection system ignore all collisions between any collider in layer1 and any collider in layer2. - -Note that IgnoreLayerCollision will reset the trigger state of affected colliders, so you might receive OnTriggerExit and OnTriggerEnter messages in response to calling this. - - - - - - - - Layer mask constant to select ignore raycast layer. - - - - - Returns true if there is any collider intersecting the line between start and end. - - Start point. - End point. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - - Returns true if there is any collider intersecting the line between start and end. - - Start point. - End point. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - - - - Find all colliders touching or inside of the given box. - - Center of the box. - Half of the size of the box in each dimension. - Rotation of the box. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - Colliders that overlap with the given box. - - - - - Find all colliders touching or inside of the given box, and store them into the buffer. - - Center of the box. - Half of the size of the box in each dimension. - The buffer to store the results in. - Rotation of the box. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - The amount of colliders stored in results. - - - - - Check the given capsule against the physics world and return all overlapping colliders. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - Colliders touching or inside the capsule. - - - - - Check the given capsule against the physics world and return all overlapping colliders in the user-provided buffer. - - The center of the sphere at the start of the capsule. - The center of the sphere at the end of the capsule. - The radius of the capsule. - The buffer to store the results into. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - The amount of entries written to the buffer. - - - - - Returns an array with all colliders touching or inside the sphere. - - Center of the sphere. - Radius of the sphere. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - - Computes and stores colliders touching or inside the sphere into the provided buffer. - - Center of the sphere. - Radius of the sphere. - The buffer to store the results into. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - The amount of colliders stored into the results buffer. - - - - - Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the Scene. - - The starting point of the ray in world coordinates. - The direction of the ray. - The max distance the ray should check for collisions. - A that is used to selectively ignore Colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True if the ray intersects with a Collider, otherwise false. - - - - - Casts a ray against all colliders in the Scene and returns detailed information on what was hit. - - The starting point of the ray in world coordinates. - The direction of the ray. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - The max distance the ray should check for collisions. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True when the ray intersects any collider, otherwise false. - - - - - Same as above using ray.origin and ray.direction instead of origin and direction. - - The starting point and direction of the ray. - The max distance the ray should check for collisions. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True when the ray intersects any collider, otherwise false. - - - - - Same as above using ray.origin and ray.direction instead of origin and direction. - - The starting point and direction of the ray. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - The max distance the ray should check for collisions. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True when the ray intersects any collider, otherwise false. - - - - - Casts a ray through the Scene and returns all hits. Note that order is not guaranteed. - - The starting point and direction of the ray. - The max distance the rayhit is allowed to be from the start of the ray. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - - See Also: Raycast. - - The starting point of the ray in world coordinates. - The direction of the ray. - The max distance the rayhit is allowed to be from the start of the ray. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - - - Cast a ray through the Scene and store the hits into the buffer. - - The starting point and direction of the ray. - The buffer to store the hits into. - The max distance the rayhit is allowed to be from the start of the ray. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - The amount of hits stored into the results buffer. - - - - - Cast a ray through the Scene and store the hits into the buffer. - - The starting point and direction of the ray. - The buffer to store the hits into. - The direction of the ray. - The max distance the rayhit is allowed to be from the start of the ray. - A that is used to selectively ignore colliders when casting a ray. - Specifies whether this query should hit Triggers. - - - The amount of hits stored into the results buffer. - - - - - Rebuild the broadphase interest regions as well as set the world boundaries. - - Boundaries of the physics world. - How many cells to create along x and z axis. - - - - Simulate physics in the Scene. - - The time to advance physics by. - - - - Casts a sphere along a ray and returns detailed information on what was hit. - - The center of the sphere at the start of the sweep. - The radius of the sphere. - The direction into which to sweep the sphere. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - True when the sphere sweep intersects any collider, otherwise false. - - - - - Casts a sphere along a ray and returns detailed information on what was hit. - - The starting point and direction of the ray into which the sphere sweep is cast. - The radius of the sphere. - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - True when the sphere sweep intersects any collider, otherwise false. - - - - - - - The starting point and direction of the ray into which the sphere sweep is cast. - The radius of the sphere. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - The max length of the cast. - A that is used to selectively ignore colliders when casting a capsule. - Specifies whether this query should hit Triggers. - - - - Like Physics.SphereCast, but this function will return all hits the sphere sweep intersects. - - The center of the sphere at the start of the sweep. - The radius of the sphere. - The direction in which to sweep the sphere. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a sphere. - Specifies whether this query should hit Triggers. - - An array of all colliders hit in the sweep. - - - - - Like Physics.SphereCast, but this function will return all hits the sphere sweep intersects. - - The starting point and direction of the ray into which the sphere sweep is cast. - The radius of the sphere. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a sphere. - Specifies whether this query should hit Triggers. - - - - Cast sphere along the direction and store the results into buffer. - - The center of the sphere at the start of the sweep. - The radius of the sphere. - The direction in which to sweep the sphere. - The buffer to save the hits into. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a sphere. - Specifies whether this query should hit Triggers. - - The amount of hits stored into the results buffer. - - - - - Cast sphere along the direction and store the results into buffer. - - The starting point and direction of the ray into which the sphere sweep is cast. - The radius of the sphere. - The buffer to save the results to. - The max length of the sweep. - A that is used to selectively ignore colliders when casting a sphere. - Specifies whether this query should hit Triggers. - - The amount of hits stored into the results buffer. - - - - - Apply Transform changes to the physics engine. - - - - - Global settings and helpers for 2D physics. - - - - - Should the collider gizmos always be shown even when they are not selected? - - - - - A rigid-body cannot sleep if its angular velocity is above this tolerance. - - - - - Sets whether the physics should be simulated automatically or not. - - - - - Whether or not to automatically sync transform changes with the physics system whenever a Transform component changes. - - - - - The scale factor that controls how fast overlaps are resolved. - - - - - The scale factor that controls how fast TOI overlaps are resolved. - - - - - Use this to control whether or not the appropriate OnCollisionExit2D or OnTriggerExit2D callbacks should be called when a Collider2D is disabled. - - - - - Whether or not to stop reporting collision callbacks immediately if any of the objects involved in the collision are deleted/moved. - - - - - Sets the color used by the gizmos to show all Collider axis-aligned bounding boxes (AABBs). - - - - - The color used by the gizmos to show all asleep colliders (collider is asleep when the body is asleep). - - - - - The color used by the gizmos to show all awake colliders (collider is awake when the body is awake). - - - - - The color used by the gizmos to show all collider contacts. - - - - - The scale of the contact arrow used by the collider gizmos. - - - - - The default contact offset of the newly created colliders. - - - - - The PhysicsScene2D automatically created when Unity starts. - - - - - Ets the collision callbacks to stop or continue processing if any of the objects involved in the collision are deleted. - - - - - Acceleration due to gravity. - - - - - A set of options that control how physics operates when using the job system to multithread the physics simulation. - - - - - A rigid-body cannot sleep if its linear velocity is above this tolerance. - - - - - The maximum angular position correction used when solving constraints. This helps to prevent overshoot. - - - - - The maximum linear position correction used when solving constraints. This helps to prevent overshoot. - - - - - The maximum angular speed of a rigid-body per physics update. Increasing this can cause numerical problems. - - - - - The maximum linear speed of a rigid-body per physics update. Increasing this can cause numerical problems. - - - - - This property is obsolete. You should use defaultContactOffset instead. - - - - - The number of iterations of the physics solver when considering objects' positions. - - - - - Do raycasts detect Colliders configured as triggers? - - - - - Sets the raycasts or linecasts that start inside Colliders to detect or not detect those Colliders. - - - - - Sets the raycasts to either detect or not detect Triggers. - - - - - Do ray/line casts that start inside a collider(s) detect those collider(s)? - - - - - Determines whether the garbage collector should reuse only a single instance of a Collision2D type for all collision callbacks. - - - - - Should the collider gizmos show the AABBs for each collider? - - - - - Should the collider gizmos show current contacts for each collider? - - - - - Should the collider gizmos show the sleep-state for each collider? - - - - - The time in seconds that a rigid-body must be still before it will go to sleep. - - - - - The number of iterations of the physics solver when considering objects' velocities. - - - - - Any collisions with a relative linear velocity below this threshold will be treated as inelastic. - - - - - Layer mask constant that includes all layers. - - - - - Casts a box against colliders in the Scene, returning the first collider to contact with it. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction of the box. - Maximum distance over which to cast the box. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a box against the colliders in the Scene and returns all colliders that are in contact with it. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction of the box. - Maximum distance over which to cast the box. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a box against colliders in the Scene, returning all colliders that contact with it. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction of the box. - Maximum distance over which to cast the box. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a box into the Scene, returning colliders that contact with it into the provided results array. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction of the box. - Array to receive results. - Maximum distance over which to cast the box. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - Returns the number of results placed in the results array. - - - - - Casts a capsule against colliders in the Scene, returning the first collider to contact with it. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - - - - Casts a capsule against the colliders in the Scene and returns all colliders that are in contact with it. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Maximum distance over which to cast the capsule. - - Returns the number of results placed in the results array. - - - - - Casts a capsule against colliders in the Scene, returning all colliders that contact with it. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - - - - Casts a capsule into the Scene, returning colliders that contact with it into the provided results array. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Array to receive results. - Maximum distance over which to cast the capsule. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - Returns the number of results placed in the results array. - - - - - Casts a circle against colliders in the Scene, returning the first collider to contact with it. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction of the circle. - Maximum distance over which to cast the circle. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a circle against colliders in the Scene, returning all colliders that contact with it. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction of the circle. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Maximum distance over which to cast the circle. - - Returns the number of results placed in the results array. - - - - - Casts a circle against colliders in the Scene, returning all colliders that contact with it. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction of the circle. - Maximum distance over which to cast the circle. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a circle into the Scene, returning colliders that contact with it into the provided results array. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction of the circle. - Array to receive results. - Maximum distance over which to cast the circle. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - Returns the number of results placed in the results array. - - - - - Layer mask constant that includes all layers participating in raycasts by default. - - - - - Calculates the minimum distance between two colliders. - - A collider used to calculate the minimum distance against colliderB. - A collider used to calculate the minimum distance against colliderA. - - The minimum distance between colliderA and colliderB. - - - - - Retrieves all colliders in contact with the collider. - - The collider to retrieve contacts for. - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Retrieves all contact points in contact with the collider. - - The collider to retrieve contacts for. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all contact points in contact with the collider, with the results filtered by the ContactFilter2D. - - The collider to retrieve contacts for. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with the collider, with the results filtered by the ContactFilter2D. - - The collider to retrieve contacts for. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Retrieves all contact points in for contacts between with the collider1 and collider2, with the results filtered by the ContactFilter2D. - - The collider to check if it has contacts against collider2. - The collider to check if it has contacts against collider1. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all contact points in contact with any of the collider(s) attached to this rigidbody. - - The rigidbody to retrieve contacts for. All colliders attached to this rigidbody will be checked. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with any of the collider(s) attached to this rigidbody. - - The rigidbody to retrieve contacts for. All colliders attached to this rigidbody will be checked. - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Retrieves all contact points in contact with any of the collider(s) attached to this rigidbody, with the results filtered by the ContactFilter2D. - - The rigidbody to retrieve contacts for. All colliders attached to this rigidbody will be checked. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with any of the collider(s) attached to this rigidbody, with the results filtered by the ContactFilter2D. - - The rigidbody to retrieve contacts for. All colliders attached to this rigidbody will be checked. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Checks whether the collision detection system will ignore all collisionstriggers between collider1 and collider2/ or not. - - The first collider to compare to collider2. - The second collider to compare to collider1. - - Whether the collision detection system will ignore all collisionstriggers between collider1 and collider2/ or not. - - - - - Checks whether collisions between the specified layers be ignored or not. - - ID of first layer. - ID of second layer. - - Whether collisions between the specified layers be ignored or not. - - - - - Get the collision layer mask that indicates which layer(s) the specified layer can collide with. - - The layer to retrieve the collision layer mask for. - - A mask where each bit indicates a layer and whether it can collide with layer or not. - - - - - Cast a 3D ray against the colliders in the Scene returning the first collider along the ray. - - The 3D ray defining origin and direction to test. - Maximum distance over which to cast the ray. - Filter to detect colliders only on certain layers. - - The cast results returned. - - - - - Cast a 3D ray against the colliders in the Scene returning all the colliders along the ray. - - The 3D ray defining origin and direction to test. - Maximum distance over which to cast the ray. - Filter to detect colliders only on certain layers. - - The cast results returned. - - - - - Cast a 3D ray against the colliders in the Scene returning the colliders along the ray. - - The 3D ray defining origin and direction to test. - Maximum distance over which to cast the ray. - Filter to detect colliders only on certain layers. - Array to receive results. - - The number of results returned. - - - - - Makes the collision detection system ignore all collisionstriggers between collider1 and collider2/. - - The first collider to compare to collider2. - The second collider to compare to collider1. - Whether collisionstriggers between collider1 and collider2/ should be ignored or not. - - - - Choose whether to detect or ignore collisions between a specified pair of layers. - - ID of the first layer. - ID of the second layer. - Should collisions between these layers be ignored? - - - - Layer mask constant for the default layer that ignores raycasts. - - - - - Checks whether the passed colliders are in contact or not. - - The collider to check if it is touching collider2. - The collider to check if it is touching collider1. - - Whether collider1 is touching collider2 or not. - - - - - Checks whether the passed colliders are in contact or not. - - The collider to check if it is touching any other collider filtered by the contactFilter. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether the collider is touching any other collider filtered by the contactFilter or not. - - - - - Checks whether the passed colliders are in contact or not. - - The collider to check if it is touching collider2. - The collider to check if it is touching collider1. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether collider1 is touching collider2 or not. - - - - - Checks whether the collider is touching any colliders on the specified layerMask or not. - - The collider to check if it is touching colliders on the layerMask. - Any colliders on any of these layers count as touching. - - Whether the collider is touching any colliders on the specified layerMask or not. - - - - - Casts a line segment against colliders in the Scene. - - The start point of the line in world space. - The end point of the line in world space. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a line segment against colliders in the Scene with results filtered by ContactFilter2D. - - The start point of the line in world space. - The end point of the line in world space. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a line against colliders in the Scene. - - The start point of the line in world space. - The end point of the line in world space. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a line against colliders in the Scene. - - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - The start point of the line in world space. - The end point of the line in world space. - Returned array of objects that intersect the line. - Filter to detect Colliders only on certain layers. - - Returns the number of results placed in the results array. - - - - - Checks if a collider falls within a rectangular area. - - One corner of the rectangle. - Diagonally opposite the point A corner of the rectangle. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The collider overlapping the area. - - - - - Checks if a collider falls within a rectangular area. - - One corner of the rectangle. - Diagonally opposite the point A corner of the rectangle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that fall within a rectangular area. - - One corner of the rectangle. - Diagonally opposite the point A corner of the rectangle. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Get a list of all colliders that fall within a specified area. - - One corner of the rectangle. - Diagonally opposite the point A corner of the rectangle. - Array to receive results. - Filter to check objects only on specified layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - Returns the number of results placed in the results array. - - - - - Checks if a collider falls within a box area. - - Center of the box. - Size of the box. - Angle of the box. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The collider overlapping the box. - - - - - Checks if a collider falls within a box area. - - Center of the box. - Size of the box. - Angle of the box. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that fall within a box area. - - Center of the box. - Size of the box. - Angle of the box. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - - - - Get a list of all colliders that fall within a box area. - - Center of the box. - Size of the box. - Angle of the box. - Array to receive results. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - Returns the number of results placed in the results array. - - - - - Checks if a collider falls within a capsule area. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The collider overlapping the capsule. - - - - - Checks if a collider falls within a capsule area. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that fall within a capsule area. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - The cast results returned. - - - - - Get a list of all colliders that fall within a capsule area. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - Array to receive results. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than this value. - Only include objects with a Z coordinate (depth) less than this value. - - Returns the number of results placed in the results array. - - - - - Checks if a collider falls within a circular area. - - Centre of the circle. - Radius of the circle. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The collider overlapping the circle. - - - - - Checks if a collider is within a circular area. - - Centre of the circle. - Radius of the circle. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that fall within a circular area. - - Center of the circle. - Radius of the circle. - Filter to check objects only on specified layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results. - - - - - Get a list of all colliders that fall within a circular area. - - Center of the circle. - Radius of the circle. - Array to receive results. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that overlap collider. - - The collider that defines the area used to query for other collider overlaps. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Checks if a collider overlaps a point in space. - - A point in world space. - Filter to check objects only on specific layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The collider overlapping the point. - - - - - Checks if a collider overlaps a point in world space. - - A point in world space. - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Get a list of all colliders that overlap a point in space. - - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - A point in space. - Filter to check objects only on specific layers. - - The cast results returned. - - - - - Get a list of all colliders that overlap a point in space. - - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - A point in space. - Array to receive results. - Filter to check objects only on specific layers. - - Returns the number of results placed in the results array. - - - - - Casts a ray against colliders in the Scene. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a ray against colliders in the Scene. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Maximum distance over which to cast the ray. - - Returns the number of results placed in the results array. - - - - - Casts a ray against colliders in the Scene, returning all colliders that contact with it. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect Colliders only on certain layers. - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - - The cast results returned. - - - - - Casts a ray into the Scene. - - Only include objects with a Z coordinate (depth) greater than or equal to this value. - Only include objects with a Z coordinate (depth) less than or equal to this value. - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Array to receive results. - Maximum distance over which to cast the ray. - Filter to check objects only on specific layers. - - Returns the number of results placed in the results array. - - - - - Set the collision layer mask that indicates which layer(s) the specified layer can collide with. - - The layer to set the collision layer mask for. - A mask where each bit indicates a layer and whether it can collide with layer or not. - - - - Simulate physics in the Scene. - - The time to advance physics by. - - Whether the simulation was run or not. Running the simulation during physics callbacks will always fail. - - - - - Synchronizes. - - - - - A set of options that control how physics operates when using the job system to multithread the physics simulation. - - - - - Controls the minimum number of bodies to be cleared in each simulation job. - - - - - Controls the minimum number of flags to be cleared in each simulation job. - - - - - Controls the minimum number of contacts to collide in each simulation job. - - - - - Controls the minimum number of nearest contacts to find in each simulation job. - - - - - Controls the minimum number of Rigidbody2D being interpolated in each simulation job. - - - - - Controls the minimum number of bodies to solve in each simulation job when performing island solving. - - - - - Scales the cost of each body during discrete island solving. - - - - - Scales the cost of each contact during discrete island solving. - - - - - Controls the minimum number of contacts to solve in each simulation job when performing island solving. - - - - - The minimum threshold cost of all bodies, contacts and joints in an island during discrete island solving. - - - - - Scales the cost of each joint during discrete island solving. - - - - - Controls the minimum number of new contacts to find in each simulation job. - - - - - Controls the minimum number of fixtures to synchronize in the broadphase during continuous island solving in each simulation job. - - - - - Controls the minimum number of fixtures to synchronize in the broadphase during discrete island solving in each simulation job. - - - - - Controls the minimum number of trigger contacts to update in each simulation job. - - - - - Should physics simulation sort multi-threaded results to maintain processing order consistency? - - - - - Should physics simulation use multithreading? - - - - - Asset type that defines the surface properties of a Collider2D. - - - - - The degree of elasticity during collisions. - - - - - Coefficient of friction. - - - - - Represents a single instance of a 3D physics Scene. - - - - - Gets whether the physics Scene is empty or not. - - - Is the physics Scene is empty? - - - - - Gets whether the physics Scene is valid or not. - - - Is the physics scene valid? - - - - - Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the Scene. - - The starting point of the ray in world coordinates. - The direction of the ray. - The max distance the ray should check for collisions. - A that is used to selectively ignore Colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True if the ray intersects with a Collider, otherwise false. - - - - - Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the Scene. - - The starting point of the ray in world coordinates. - The direction of the ray. - If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). - The max distance the ray should check for collisions. - A that is used to selectively ignore Colliders when casting a ray. - Specifies whether this query should hit Triggers. - - True if the ray intersects with a Collider, otherwise false. - - - - - Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the Scene. - - The starting point and direction of the ray. - The direction of the ray. - The buffer to store the hits into. - The max distance the rayhit is allowed to be from the start of the ray. - A that is used to selectively ignore colliders when casting a ray. - The amount of hits stored into the results buffer. - - True if the ray intersects with a Collider, otherwise false. - - - - - Simulate physics associated with this PhysicsScene. - - The time to advance physics by. - - Whether the simulation was run or not. Running the simulation during physics callbacks will always fail. - - - - - Represents a single instance of a 2D physics Scene. - - - - - Casts a box against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction to cast the box. - Maximum distance over which to cast the box. - Filter to detect colliders only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a box against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction to cast the box. - Maximum distance over which to cast the box. - Filter to detect colliders only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a box against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction to cast the box. - Maximum distance over which to cast the box. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect colliders only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a box against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the box originates. - The size of the box. - The angle of the box (in degrees). - Vector representing the direction to cast the box. - Maximum distance over which to cast the box. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect colliders only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a capsule against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a capsule against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a capsule against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a capsule against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the capsule originates. - The size of the capsule. - The direction of the capsule. - The angle of the capsule (in degrees). - Vector representing the direction to cast the capsule. - Maximum distance over which to cast the capsule. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a circle against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction to cast the circle. - Maximum distance over which to cast the circle. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a circle against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction to cast the circle. - Maximum distance over which to cast the circle. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a circle against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction to cast the circle. - Maximum distance over which to cast the circle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a circle against the colliders in the PhysicsScene2D, returning all intersections. - - The point in 2D space where the circle originates. - The radius of the circle. - Vector representing the direction to cast the circle. - Maximum distance over which to cast the circle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Cast a 3D ray against the colliders in the PhysicsScene2D, returning the first intersection only. - - The 3D ray defining origin and direction to test. - Maximum distance over which to cast the ray. - Filter to detect colliders only on certain layers. - - The cast results returned. - - - - - Cast a 3D ray against the colliders in the PhysicsScene2D, returning all intersections. - - The 3D ray defining origin and direction to test. - Maximum distance over which to cast the ray. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect colliders only on certain layers. - - The number of results returned. - - - - - Determines whether the physics Scene is empty or not. - - - True when the physics Scene is empty. - - - - - Determines whether the physics Scene is valid or not. - - - True when the physics Scene valid. - - - - - Casts a line segment against colliders in the PhysicsScene2D, returning the first intersection only. - - The start point of the line in world space. - The end point of the line in world space. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a line segment against colliders in the PhysicsScene2D, returning the first intersection only. - - The start point of the line in world space. - The end point of the line in world space. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - The cast results returned. - - - - - Casts a line segment against colliders in the PhysicsScene2D. - - The start point of the line in world space. - The end point of the line in world space. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Casts a line segment against colliders in the PhysicsScene2D. - - The start point of the line in world space. - The end point of the line in world space. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Returns the number of results placed in the results array. - - - - - Checks an area (non-rotated box) against colliders in the PhysicsScene2D, returning the first intersection only. - - One corner of the rectangle. - The corner of the rectangle diagonally opposite the pointA corner. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the area. - - - - - Checks an area (non-rotated box) against colliders in the PhysicsScene2D, returning the first intersection only. - - One corner of the rectangle. - The corner of the rectangle diagonally opposite the pointA corner. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the area. - - - - - Checks an area (non-rotated box) against colliders in the PhysicsScene2D, returning all intersections. - - One corner of the rectangle. - The corner of the rectangle diagonally opposite the pointA corner. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks an area (non-rotated box) against colliders in the PhysicsScene2D, returning all intersections. - - One corner of the rectangle. - The corner of the rectangle diagonally opposite the pointA corner. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a box against colliders in the PhysicsScene2D, returning the first intersection only. - - Center of the box. - Size of the box. - Angle of the box. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the box. - - - - - Checks a box against colliders in the PhysicsScene2D, returning the first intersection only. - - Center of the box. - Size of the box. - Angle of the box. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the box. - - - - - Checks a box against colliders in the PhysicsScene2D, returning all intersections. - - Center of the box. - Size of the box. - Angle of the box. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a box against colliders in the PhysicsScene2D, returning all intersections. - - Center of the box. - Size of the box. - Angle of the box. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a capsule against colliders in the PhysicsScene2D, returning the first intersection only. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the capsule. - - - - - Checks a capsule against colliders in the PhysicsScene2D, returning the first intersection only. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the capsule. - - - - - Checks a capsule against colliders in the PhysicsScene2D, returning all intersections. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a capsule against colliders in the PhysicsScene2D, returning all intersections. - - Center of the capsule. - Size of the capsule. - The direction of the capsule. - Angle of the capsule. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a circle against colliders in the PhysicsScene2D, returning the first intersection only. - - Centre of the circle. - Radius of the circle. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the circle. - - - - - Checks a circle against colliders in the PhysicsScene2D, returning the first intersection only. - - Centre of the circle. - Radius of the circle. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the circle. - - - - - Checks a circle against colliders in the PhysicsScene2D, returning all intersections. - - Centre of the circle. - Radius of the circle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a circle against colliders in the PhysicsScene2D, returning all intersections. - - Centre of the circle. - Radius of the circle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a collider against colliders in the PhysicsScene2D, returning all intersections. - - The collider that defines the area used to query for other collider overlaps. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the collider. - - - - - Checks a collider against colliders in the PhysicsScene2D, returning all intersections. - - The collider that defines the area used to query for other collider overlaps. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the collider. - - - - - Checks a point against colliders in the PhysicsScene2D, returning the first intersection only. - - A point in world space. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the point. - - - - - Checks a point against colliders in the PhysicsScene2D, returning the first intersection only. - - A point in world space. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - The collider overlapping the point. - - - - - Checks a point against colliders in the PhysicsScene2D, returning all intersections. - - A point in world space. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Checks a point against colliders in the PhysicsScene2D, returning all intersections. - - A point in world space. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - Filter to check objects only on specific layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth. Note that the normal angle is not used for overlap testing. - - Returns the number of results placed in the results array. - - - - - Casts a ray against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth, or normal angle. - - The cast results returned. - - - - - Casts a ray against colliders in the PhysicsScene2D, returning the first intersection only. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth, or normal angle. - - The cast results returned. - - - - - Casts a ray against colliders the PhysicsScene2D, returning all intersections. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth, or normal angle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Casts a ray against colliders the PhysicsScene2D, returning all intersections. - - The point in 2D space where the ray originates. - The vector representing the direction of the ray. - Maximum distance over which to cast the ray. - Filter to detect collider only on certain layers. - The contact filter used to filter the results differently, such as by layer mask and Z depth, or normal angle. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Simulate physics associated with this PhysicsScene. - - The time to advance physics by. - - Whether the simulation was run or not. Running the simulation during physics callbacks will always fail. - - - - - Scene extensions to access the underlying physics scene. - - - - - An extension method that returns the 3D physics Scene from the Scene. - - The Scene from which to return the 3D physics Scene. - - The 3D physics Scene used by the Scene. - - - - - Scene extensions to access the underlying physics scene. - - - - - An extension method that returns the 2D physics Scene from the Scene. - - The Scene from which to return the 2D physics Scene. - - The 2D physics Scene used by the Scene. - - - - - A base type for 2D physics components that required a callback during FixedUpdate. - - - - - Ping any given IP address (given in dot notation). - - - - - The IP target of the ping. - - - - - Has the ping function completed? - - - - - This property contains the ping time result after isDone returns true. - - - - - Perform a ping to the supplied target IP address. - - - - - - Representation of a plane in 3D space. - - - - - Distance from the origin to the plane. - - - - - Returns a copy of the plane that faces in the opposite direction. - - - - - Normal vector of the plane. - - - - - For a given point returns the closest point on the plane. - - The point to project onto the plane. - - A point on the plane that is closest to point. - - - - - Creates a plane. - - - - - - - Creates a plane. - - - - - - - Creates a plane. - - - - - - - - Makes the plane face in the opposite direction. - - - - - Returns a signed distance from plane to point. - - - - - - Is a point on the positive side of the plane? - - - - - - Intersects a ray with the plane. - - - - - - - Are two points on the same side of the plane? - - - - - - - Sets a plane using three points that lie within it. The points go around clockwise as you look down on the top surface of the plane. - - First point in clockwise order. - Second point in clockwise order. - Third point in clockwise order. - - - - Sets a plane using a point that lies within it along with a normal to orient it. - - The plane's normal vector. - A point that lies on the plane. - - - - Returns a copy of the given plane that is moved in space by the given translation. - - The plane to move in space. - The offset in space to move the plane with. - - The translated plane. - - - - - Moves the plane in space by the translation vector. - - The offset in space to move the plane with. - - - - Applies "platform" behaviour such as one-way collisions etc. - - - - - Whether to use one-way collision behaviour or not. - - - - - The rotational offset angle from the local 'up'. - - - - - The angle variance centered on the sides of the platform. Zero angle only matches sides 90-degree to the platform "top". - - - - - The angle of an arc that defines the sides of the platform centered on the local 'left' and 'right' of the effector. Any collision normals within this arc are considered for the 'side' behaviours. - - - - - Whether bounce should be used on the platform sides or not. - - - - - Whether friction should be used on the platform sides or not. - - - - - The angle of an arc that defines the surface of the platform centered of the local 'up' of the effector. - - - - - Should the one-way collision behaviour be used? - - - - - Ensures that all contacts controlled by the one-way behaviour act the same. - - - - - Should bounce be used on the platform sides? - - - - - Should friction be used on the platform sides? - - - - - Implements high-level utility methods to simplify use of the Playable API with Animations. - - - - - Plays the Playable on the given Animator. - - Target Animator. - The Playable that will be played. - The Graph that owns the Playable. - - - - Creates a PlayableGraph to be played on the given Animator. An AnimatorControllerPlayable is also created for the given RuntimeAnimatorController. - - Target Animator. - The RuntimeAnimatorController to create an AnimatorControllerPlayable for. - The created PlayableGraph. - - A handle to the newly-created AnimatorControllerPlayable. - - - - - Creates a PlayableGraph to be played on the given Animator. An AnimationClipPlayable is also created for the given AnimationClip. - - Target Animator. - The AnimationClip to create an AnimationClipPlayable for. - The created PlayableGraph. - - A handle to the newly-created AnimationClipPlayable. - - - - - Creates a PlayableGraph to be played on the given Animator. An AnimationLayerMixerPlayable is also created. - - Target Animator. - The input count for the AnimationLayerMixerPlayable. Defines the number of layers. - The created PlayableGraph. - - A handle to the newly-created AnimationLayerMixerPlayable. - - - - - Creates a PlayableGraph to be played on the given Animator. An AnimationMixerPlayable is also created. - - Target Animator. - The input count for the AnimationMixerPlayable. - The created PlayableGraph. - - A handle to the newly-created AnimationMixerPlayable. - - - - - Describes the type of information that flows in and out of a Playable. This also specifies that this Playable is connectable to others of the same type. - - - - - Describes that the information flowing in and out of the Playable is of Animation type. - - - - - Describes that the information flowing in and out of the Playable is of Audio type. - - - - - Describes that the Playable does not have any particular type. This is use for Playables that execute script code, or that create their own playable graphs, such as the Sequence. - - - - - Describes that the information flowing in and out of the Playable is of type Texture. - - - - - Defines what time source is used to update a Director graph. - - - - - Update is based on DSP (Digital Sound Processing) clock. Use this for graphs that need to be synchronized with Audio. - - - - - Update is based on Time.time. Use this for graphs that need to be synchronized on gameplay, and that need to be paused when the game is paused. - - - - - Update mode is manual. You need to manually call PlayableGraph.Evaluate with your own deltaTime. This can be useful for graphs that are completely disconnected from the rest of the game. For example, localized bullet time. - - - - - Update is based on Time.unscaledTime. Use this for graphs that need to be updated even when gameplay is paused. Example: Menus transitions need to be updated even when the game is paused. - - - - - Wrap mode for Playables. - - - - - Hold the last frame when the playable time reaches it's duration. - - - - - Loop back to zero time and continue playing. - - - - - Do not keep playing when the time reaches the duration. - - - - - This structure contains the frame information a Playable receives in Playable.PrepareFrame. - - - - - Time difference between this frame and the preceding frame. - - - - - The accumulated delay of the parent Playable during the PlayableGraph traversal. - - - - - The accumulated speed of the parent Playable during the PlayableGraph traversal. - - - - - The accumulated play state of this playable. - - - - - The accumulated speed of the Playable during the PlayableGraph traversal. - - - - - The accumulated weight of the Playable during the PlayableGraph traversal. - - - - - Indicates the type of evaluation that caused PlayableGraph.PrepareFrame to be called. - - - - - The current frame identifier. - - - - - The PlayableOutput that initiated this graph traversal. - - - - - Indicates that the local time was explicitly set. - - - - - Indicates the local time did not advance because it has reached the duration and the extrapolation mode is set to Hold. - - - - - Indicates the local time wrapped because it has reached the duration and the extrapolation mode is set to Loop. - - - - - The weight of the current Playable. - - - - - Describes the cause for the evaluation of a PlayableGraph. - - - - - Indicates the graph was updated due to a call to PlayableGraph.Evaluate. - - - - - Indicates the graph was called by the runtime during normal playback due to PlayableGraph.Play being called. - - - - - The base interface for all notifications sent through the playable system. - - - - - The identifier is a name that identifies this notifications, or class of notifications. - - - - - Implement this interface to create a class that will receives notifications from PlayableOutput. - - - - - The method called when a notification is raised. - - The playable that sent the notification. - The received notification. - User defined data that depends on the type of notification. Uses this to pass necessary information that can change with each invocation. - - - - Interface implemented by all C# Playable implementations. - - - - - Interface that permits a class to inject playables into a graph. - - - - - Duration in seconds. - - - - - A description of the PlayableOutputs generated by this asset. - - - - - Implement this method to have your asset inject playables into the given graph. - - The graph to inject playables into. - The game object which initiated the build. - - The playable injected into the graph, or the root playable if multiple playables are injected. - - - - - Interface implemented by all C# Playable Behaviour implementations. - - - - - Interface implemented by all C# Playable output implementations. - - - - - Default implementation for Playable notifications. - - - - - The name that identifies this notification. - - - - - Creates a new notification with the name specified in the argument. - - The name that identifies this notifications. - - - - Playables are customizable runtime objects that can be connected together and are contained in a PlayableGraph to create complex behaviours. - - - - - Returns an invalid Playable. - - - - - A base class for assets that can be used to instantiate a Playable at runtime. - - - - - The playback duration in seconds of the instantiated Playable. - - - - - A description of the outputs of the instantiated Playable. - - - - - Implement this method to have your asset inject playables into the given graph. - - The graph to inject playables into. - The game object which initiated the build. - - The playable injected into the graph, or the root playable if multiple playables are injected. - - - - - PlayableBehaviour is the base class from which every custom playable script derives. - - - - - This function is called when the Playable play state is changed to Playables.PlayState.Delayed. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - - - - This method is invoked when one of the following situations occurs: -<br><br> - The effective play state during traversal is changed to Playables.PlayState.Paused. This state is indicated by FrameData.effectivePlayState.<br><br> - The PlayableGraph is stopped while the playable play state is Playing. This state is indicated by PlayableGraph.IsPlaying returning true. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - - - - This function is called when the Playable play state is changed to Playables.PlayState.Playing. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - - - - This function is called when the PlayableGraph that owns this PlayableBehaviour starts. - - The Playable that owns the current PlayableBehaviour. - - - - This function is called when the PlayableGraph that owns this PlayableBehaviour stops. - - The Playable that owns the current PlayableBehaviour. - - - - This function is called when the Playable that owns the PlayableBehaviour is created. - - The Playable that owns the current PlayableBehaviour. - - - - This function is called when the Playable that owns the PlayableBehaviour is destroyed. - - The Playable that owns the current PlayableBehaviour. - - - - This function is called during the PrepareData phase of the PlayableGraph. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - - - - This function is called during the PrepareFrame phase of the PlayableGraph. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - - - - This function is called during the ProcessFrame phase of the PlayableGraph. - - The Playable that owns the current PlayableBehaviour. - A FrameData structure that contains information about the current frame context. - The user data of the ScriptPlayableOutput that initiated the process pass. - - - - Struct that holds information regarding an output of a PlayableAsset. - - - - - The type of target required by the PlayableOutput for this PlayableBinding. - - - - - A reference to a UnityEngine.Object that acts a key for this binding. - - - - - The name of the output or input stream. - - - - - The type of the output or input stream. - - - - - The default duration used when a PlayableOutput has no fixed duration. - - - - - A constant to represent a PlayableAsset has no bindings. - - - - - Instantiates a PlayableAsset and controls playback of Playable objects. - - - - - The duration of the Playable in seconds. - - - - - Controls how the time is incremented when it goes beyond the duration of the playable. - - - - - The time at which the Playable should start when first played. - - - - - Event that is raised when a PlayableDirector component has paused. - - - - - - The PlayableAsset that is used to instantiate a playable for playback. - - - - - The PlayableGraph created by the PlayableDirector. - - - - - Event that is raised when a PlayableDirector component has begun playing. - - - - - - Whether the playable asset will start playing back as soon as the component awakes. - - - - - The current playing state of the component. (Read Only) - - - - - Event that is raised when a PlayableDirector component has stopped. - - - - - - The component's current time. This value is incremented according to the PlayableDirector.timeUpdateMode when it is playing. You can also change this value manually. - - - - - Controls how time is incremented when playing back. - - - - - Clears the binding of a reference object. - - The source object in the PlayableBinding. - - - - Clears an exposed reference value. - - Identifier of the ExposedReference. - - - - Tells the PlayableDirector to evaluate it's PlayableGraph on the next update. - - - - - Evaluates the currently playing Playable at the current time. - - - - - Returns a binding to a reference object. - - The object that acts as a key. - - - - Retreives an ExposedReference binding. - - Identifier of the ExposedReference. - Whether the reference was found. - - - - Pauses playback of the currently running playable. - - - - - Instatiates a Playable using the provided PlayableAsset and starts playback. - - An asset to instantiate a playable from. - What to do when the time passes the duration of the playable. - - - - Instatiates a Playable using the provided PlayableAsset and starts playback. - - An asset to instantiate a playable from. - What to do when the time passes the duration of the playable. - - - - Instatiates a Playable using the provided PlayableAsset and starts playback. - - An asset to instantiate a playable from. - What to do when the time passes the duration of the playable. - - - - Rebinds each PlayableOutput of the PlayableGraph. - - - - - Discards the existing PlayableGraph and creates a new instance. - - - - - Resume playing a paused playable. - - - - - Sets the binding of a reference object from a PlayableBinding. - - The source object in the PlayableBinding. - The object to bind to the key. - - - - Sets an ExposedReference value. - - Identifier of the ExposedReference. - The object to bind to set the reference value to. - - - - Stops playback of the current Playable and destroys the corresponding graph. - - - - - Extensions for all the types that implements IPlayable. - - - - - Create a new input port and connect it to the output port of the given Playable. - - The Playable used by this operation. - The Playable to connect to. - The output port of the Playable. - The weight of the created input port. - - The index of the newly created input port. - - - - - Connect the output port of a Playable to one of the input ports. - - The Playable used by this operation. - The input port index. - The Playable to connect to. - The output port of the Playable. - The weight of the input port. - - - - Destroys the current Playable. - - The Playable used by this operation. - - - - Disconnect the input port of a Playable. - - The Playable used by this operation. - The input port index. - - - - Returns the delay of the playable. - - The Playable used by this operation. - - The delay in seconds. - - - - - Returns the duration of the Playable. - - The Playable used by this operation. - - The duration in seconds. - - - - - Returns the PlayableGraph that owns this Playable. A Playable can only be used in the graph that was used to create it. - - The Playable used by this operation. - - The PlayableGraph associated with the current Playable. - - - - - Returns the Playable connected at the given input port index. - - The Playable used by this operation. - The port index. - - Playable connected at the index specified, or null if the index is valid but is not connected to anything. This happens if there was once a Playable connected at the index, but was disconnected via PlayableGraph.Disconnect. - - - - - Returns the number of inputs supported by the Playable. - - The Playable used by this operation. - - The count of inputs on the Playable. - - - - - Returns the weight of the Playable connected at the given input port index. - - The Playable used by this operation. - The port index. - - The current weight of the connected Playable. - - - - - Returns the Playable lead time in seconds. - - The Playable used by this operation. - - - - Returns the Playable connected at the given output port index. - - The Playable used by this operation. - The port index. - - Playable connected at the output index specified, or null if the index is valid but is not connected to anything. This happens if there was once a Playable connected at the index, but was disconnected via PlayableGraph.Disconnect. - - - - - Returns the number of outputs supported by the Playable. - - The Playable used by this operation. - - The count of outputs on the Playable. - - - - - Returns the current PlayState of the Playable. - - The Playable used by this operation. - - The current PlayState of the Playable. - - - - - Returns the previous local time of the Playable. - - The Playable used by this operation. - - The previous time in seconds. - - - - - Returns the time propagation behavior of this Playable. - - The Playable used by this operation. - - True if time propagation is enabled. - - - - - Returns the speed multiplier that is applied to the the current Playable. - - The Playable used by this operation. - - The current speed. - - - - - Returns the current local time of the Playable. - - The Playable used by this operation. - - The current time in seconds. - - - - - Returns the propagation mode for the multi-output playable. - - - - Traversal mode (Mix or Passthrough). - - - - - Returns whether or not the Playable has a delay. - - The Playable used by this operation. - - True if the playable is delayed, false otherwise. - - - - - Returns a flag indicating that a playable has completed its operation. - - The Playable used by this operation. - - True if the playable has completed its operation, false otherwise. - - - - - Returns true if the Playable is null, false otherwise. - - The Playable used by this operation. - - - - Returns the vality of the current Playable. - - The Playable used by this operation. - - True if the Playable is properly constructed by the PlayableGraph and has not been destroyed, false otherwise. - - - - - Tells to pause the Playable. - - The Playable used by this operation. - - - - Starts to play the Playable. - - The Playable used by this operation. - - - - Set a delay until the playable starts. - - The Playable used by this operation. - The delay in seconds. - - - - Changes a flag indicating that a playable has completed its operation. - - The Playable used by this operation. - True if the operation is completed, false otherwise. - - - - Changes the duration of the Playable. - - The Playable used by this operation. - The new duration in seconds, must be a positive value. - - - - Changes the number of inputs supported by the Playable. - - The Playable used by this operation. - - - - - Changes the weight of the Playable connected to the current Playable. - - The Playable used by this operation. - The connected Playable to change. - The weight. Should be between 0 and 1. - - - - - Changes the weight of the Playable connected to the current Playable. - - The Playable used by this operation. - The connected Playable to change. - The weight. Should be between 0 and 1. - - - - - Sets the Playable lead time in seconds. - - The Playable used by this operation. - The new lead time in seconds. - - - - Changes the number of outputs supported by the Playable. - - The Playable used by this operation. - - - - - Changes the current PlayState of the Playable. - - The Playable used by this operation. - The new PlayState. - - - - Changes the time propagation behavior of this Playable. - - The Playable used by this operation. - True to enable time propagation. - - - - Changes the speed multiplier that is applied to the the current Playable. - - The Playable used by this operation. - The new speed. - - - - Changes the current local time of the Playable. - - The Playable used by this operation. - The current time in seconds. - - - - Sets the propagation mode of PrepareFrame and ProcessFrame for the multi-output playable. - - The Playable used by this operation. - The new traversal mode. - - - - Use the PlayableGraph to manage Playable creations and destructions. - - - - - Connects two Playable instances. - - The source playable or its handle. - The port used in the source playable. - The destination playable or its handle. - The port used in the destination playable. - - Returns true if connection is successful. - - - - - Creates a PlayableGraph. - - The name of the graph. - - The newly created PlayableGraph. - - - - - Creates a PlayableGraph. - - The name of the graph. - - The newly created PlayableGraph. - - - - - Destroys the graph. - - - - - Destroys the PlayableOutput. - - The output to destroy. - - - - Destroys the Playable. - - The playable to destroy. - - - - Destroys the Playable and all its inputs, recursively. - - The Playable to destroy. - - - - Disconnects the Playable. The connections determine the topology of the PlayableGraph and how it is evaluated. - - The source playabe or its handle. - The port used in the source playable. - - - - Evaluates all the PlayableOutputs in the graph, and updates all the connected Playables in the graph. - - The time in seconds by which to advance each Playable in the graph. - - - - Evaluates all the PlayableOutputs in the graph, and updates all the connected Playables in the graph. - - The time in seconds by which to advance each Playable in the graph. - - - - Returns the name of the PlayableGraph. - - - - - Get PlayableOutput at the given index in the graph. - - The output index. - - The PlayableOutput at this given index, otherwise null. - - - - - Get PlayableOutput of the requested type at the given index in the graph. - - The output index. - - The PlayableOutput at the given index among all the PlayableOutput of the same type T. - - - - - Returns the number of PlayableOutput in the graph. - - - The number of PlayableOutput in the graph. - - - - - Get the number of PlayableOutput of the requested type in the graph. - - - The number of PlayableOutput of the same type T in the graph. - - - - - Returns the number of Playable owned by the Graph. - - - - - Returns the table used by the graph to resolve ExposedReferences. - - - - - Returns the Playable with no output connections at the given index. - - The index of the root Playable. - - - - Returns the number of Playable owned by the Graph that have no connected outputs. - - - - - Returns how time is incremented when playing back. - - - - - Indicates that a graph has completed its operations. - - - A boolean indicating if the graph is done playing or not. - - - - - Indicates that a graph is presently running. - - - A boolean indicating if the graph is playing or not. - - - - - Returns true if the PlayableGraph has been properly constructed using PlayableGraph.CreateGraph and is not deleted. - - - A boolean indicating if the graph is invalid or not. - - - - - Plays the graph. - - - - - Changes the table used by the graph to resolve ExposedReferences. - - - - - - Changes how time is incremented when playing back. - - The new DirectorUpdateMode. - - - - Stops the graph, if it is playing. - - - - - See: Playables.IPlayableOutput. - - - - - Returns an invalid PlayableOutput. - - - - - Extensions for all the types that implements IPlayableOutput. - - - - - Registers a new receiver that listens for notifications. - - The target output. - The receiver to register. - - - - Retrieves the list of notification receivers currently registered on the output. - - The output holding the receivers. - - Returns the list of registered receivers. - - - - - Returns the source playable's output connection index. - - The PlayableOutput used by this operation. - - The output port. - - - - - Returns the source playable. - - The PlayableOutput used by this operation. - - The source playable. - - - - - Returns the opaque user data. This is the same value as the last last argument of ProcessFrame. - - The PlayableOutput used by this operation. - - The user data. - - - - - Returns the weight of the connection from the PlayableOutput to the source playable. - - The PlayableOutput used by this operation. - - The weight of the connection to the source playable. - - - - - Returns true if the PlayableOutput is null, false otherwise. - - The PlayableOutput used by this operation. - - - - - - The PlayableOutput used by this operation. - - True if the PlayableOutput has not yet been destroyed and false otherwise. - - - - - Queues a notification to be sent through the Playable system. - - The output sending the notification. - The originating playable of the notification. - The notification to be sent. - Extra information about the state when the notification was fired. - - - - Unregisters a receiver on the output. - - The target output. - The receiver to unregister. - - - - Sets the bound object to a new value. Used to associate an output to an object (Track asset in case of Timeline). - - The PlayableOutput used by this operation. - The new reference object value. - - - - Sets the source playable's output connection index. For playables with multiple outputs, this determines which sub-branch of the source playable generates this output. - - The PlayableOutput used by this operation. - The new output port value. - - - - Sets which playable that computes the output and which sub-tree index. - - The PlayableOutput used by this operation. - The new source Playable. - The new output port value. - - - - Sets which playable that computes the output. - - The PlayableOutput used by this operation. - The new source Playable. - - - - Sets the opaque user data. This same data is passed as the last argument to ProcessFrame. - - The PlayableOutput used by this operation. - The new user data. - - - - Sets the weight of the connection from the PlayableOutput to the source playable. - - The PlayableOutput used by this operation. - The new weight. - - - - Traversal mode for Playables. - - - - - Causes the Playable to prepare and process it's inputs when demanded by an output. - - - - - Causes the Playable to act as a passthrough for PrepareFrame and ProcessFrame. If the PlayableOutput being processed is connected to the n-th input port of the Playable, the Playable only propagates the n-th output port. Use this enum value in conjunction with PlayableOutput SetSourceOutputPort. - - - - - Status of a Playable. - - - - - The Playable has been delayed, using PlayableExtensions.SetDelay. It will not start until the delay is entirely consumed. - - - - - The Playable has been paused. Its local time will not advance. - - - - - The Playable is currently Playing. - - - - - A IPlayable implementation that contains a PlayableBehaviour for the PlayableGraph. PlayableBehaviour can be used to write custom Playable that implement their own PrepareFrame callback. - - - - - A PlayableBinding that contains information representing a ScriptingPlayableOutput. - - - - - Creates a PlayableBinding that contains information representing a ScriptPlayableOutput. - - A reference to a UnityEngine.Object that acts as a key for this binding. - The type of object that will be bound to the ScriptPlayableOutput. - The name of the ScriptPlayableOutput. - - Returns a PlayableBinding that contains information that is used to create a ScriptPlayableOutput. - - - - - A IPlayableOutput implementation that contains a script output for the a PlayableGraph. - - - - - Creates a new ScriptPlayableOutput in the associated PlayableGraph. - - The PlayableGraph that will contain the ScriptPlayableOutput. - The name of this ScriptPlayableOutput. - - The created ScriptPlayableOutput. - - - - - Returns an invalid ScriptPlayableOutput. - - - - - Stores and accesses player preferences between game sessions. - - - - - Removes all keys and values from the preferences. Use with caution. - - - - - Removes key and its corresponding value from the preferences. - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns the value corresponding to key in the preference file if it exists. - - - - - - - Returns true if key exists in the preferences. - - - - - - Writes all modified preferences to disk. - - - - - Sets the value of the preference identified by key. - - - - - - - Sets the value of the preference identified by key. - - - - - - - Sets the value of the preference identified by key. - - - - - - - An exception thrown by the PlayerPrefs class in a web player build. - - - - - Used by Animation.Play function. - - - - - Will stop all animations that were started with this component before playing. - - - - - Will stop all animations that were started in the same layer. This is the default when playing animations. - - - - - Applies forces to attract/repulse against a point. - - - - - The angular drag to apply to rigid-bodies. - - - - - The scale applied to the calculated distance between source and target. - - - - - The linear drag to apply to rigid-bodies. - - - - - The magnitude of the force to be applied. - - - - - The mode used to apply the effector force. - - - - - The source which is used to calculate the centroid point of the effector. The distance from the target is defined from this point. - - - - - The target for where the effector applies any force. - - - - - The variation of the magnitude of the force to be applied. - - - - - Collider for 2D physics representing an arbitrary polygon defined by its vertices. - - - - - Determines whether the PolygonCollider2D's shape is automatically updated based on a SpriteRenderer's tiling properties. - - - - - The number of paths in the polygon. - - - - - Corner points that define the collider's shape in local space. - - - - - Creates as regular primitive polygon with the specified number of sides. - - The number of sides in the polygon. This must be greater than two. - The X/Y scale of the polygon. These must be greater than zero. - The X/Y offset of the polygon. - - - - Gets a path from the Collider by its index. - - The index of the path to retrieve. - - An ordered array of the vertices or points in the selected path. - - - - - Return the total number of points in the polygon in all paths. - - - - - Define a path by its constituent points. - - Index of the path to set. - Points that define the path. - - - - Representation of a Position, and a Rotation in 3D Space - - - - - Returns the forward vector of the pose. - - - - - Shorthand for pose which represents zero position, and an identity rotation. - - - - - The position component of the pose. - - - - - Returns the right vector of the pose. - - - - - The rotation component of the pose. - - - - - Returns the up vector of the pose. - - - - - Creates a new pose with the given vector, and quaternion values. - - - - - Transforms the current pose into the local space of the provided pose. - - - - - - Transforms the current pose into the local space of the provided pose. - - - - - - Returns true if two poses are equal. - - - - - - - Returns true if two poses are not equal. - - - - - - - Prefer ScriptableObject derived type to use binary serialization regardless of project's asset serialization mode. - - - - - The various primitives that can be created using the GameObject.CreatePrimitive function. - - - - - A capsule primitive. - - - - - A cube primitive. - - - - - A cylinder primitive. - - - - - A plane primitive. - - - - - A quad primitive. - - - - - A sphere primitive. - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - - Deprecated feature, no longer available - - - - - Triggers an immediate (synchronous) rebuild of this ProceduralMaterial's dirty textures. - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - Deprecated feature, no longer available - - - - - - - - - Deprecated feature, no longer available - - - - - Custom CPU Profiler label used for profiling arbitrary code blocks. - - - - - Begin profiling a piece of code with a custom label defined by this instance of CustomSampler. - - - - - - Begin profiling a piece of code with a custom label defined by this instance of CustomSampler. - - - - - - Creates a new CustomSampler for profiling parts of your code. - - Name of the Sampler. - - CustomSampler object or null if a built-in Sampler with the same name exists. - - - - - End profiling a piece of code with a custom label. - - - - - Flags that specify which fields to capture in a snapshot. - - - - - Corresponds to the ManagedHeapSections, ManagedStacks, Connections, TypeDescriptions fields in a Memory Snapshot. - - - - - Corresponds to the NativeAllocations, NativeMemoryRegions, NativeRootReferences, and NativeMemoryLabels fields in a Memory Snapshot. - - - - - Corresponds to the NativeAllocationSite field in a Memory Snapshot. - - - - - Corresponds to the NativeObject and NativeType fields in a Memory Snapshot. - - - - - Corresponds to the NativeCallstackSymbol field in a Memory Snapshot. - - - - - Memory profiling API container class. - - - - - Event to which meta data collection methods can be subscribed to. - - - - - - Trigger memory snapshot capture. - - Destination path for the memory snapshot file. - Event that is fired once the memory snapshot has finished the process of capturing data. - Flag mask defining the content of the memory snapshot. - - - - Trigger memory snapshot capture to Application.temporaryCachePath folder. - - Event that is fired once the memory snapshot has finished the process of capturing data. - Flag mask defining the content of the memory snapshot. - - - - Container for memory snapshot meta data. - - - - - User defined meta data. - - - - - Memory snapshot meta data containing platform information. - - - - - Screenshot stored in the memory snapshot. - - - - - Controls the from script. - - - - - The number of ProfilerArea|Profiler Areas that you can profile. - - - - - Enables the logging of profiling data to a file. - - - - - Enables the Profiler. - - - - - Specifies the file to use when writing profiling data. - - - - - Resize the profiler sample buffers to allow the desired amount of samples per thread. - - - - - Sets the maximum amount of memory that Profiler uses for buffering data. This property is expressed in bytes. - - - - - Heap size used by the program. - - - Size of the used heap in bytes, (or 0 if the profiler is disabled). - - - - - Returns the number of bytes that Unity has allocated. This does not include bytes allocated by external libraries or drivers. - - - Size of the memory allocated by Unity (or 0 if the profiler is disabled). - - - - - Displays the recorded profile data in the profiler. - - The name of the file containing the frame data, including extension. - - - - Begin profiling a piece of code with a custom label. - - A string to identify the sample in the Profiler window. - An object that provides context to the sample,. - - - - Begin profiling a piece of code with a custom label. - - A string to identify the sample in the Profiler window. - An object that provides context to the sample,. - - - - Enables profiling on the thread from which you call this method. - - The name of the thread group to which the thread belongs. - The name of the thread. - - - - Ends the current profiling sample. - - - - - Frees the internal resources used by the Profiler for the thread. - - - - - Returns the amount of allocated memory for the graphics driver, in bytes. - -Only available in development players and editor. - - - - - Returns whether or not a given ProfilerArea is currently enabled. - - Which area you want to check the state of. - - Returns whether or not a given ProfilerArea is currently enabled. - - - - - Returns the size of the mono heap. - - - - - Returns the size of the reserved space for managed-memory. - - - The size of the managed heap. This returns 0 if the Profiler is not available. - - - - - Returns the used size from mono. - - - - - The allocated managed-memory for live objects and non-collected objects. - - - A long integer value of the memory in use. This returns 0 if the Profiler is not available. - - - - - Returns the runtime memory usage of the resource. - - - - - - Gathers the native-memory used by a Unity object. - - The target Unity object. - - The amount of native-memory used by a Unity object. This returns 0 if the Profiler is not available. - - - - - Returns the size of the temp allocator. - - - Size in bytes. - - - - - Returns the amount of allocated and used system memory. - - - - - The total memory allocated by the internal allocators in Unity. Unity reserves large pools of memory from the system. This function returns the amount of used memory in those pools. - - - The amount of memory allocated by Unity. This returns 0 if the Profiler is not available. - - - - - Returns the amount of reserved system memory. - - - - - The total memory Unity has reserved. - - - Memory reserved by Unity in bytes. This returns 0 if the Profiler is not available. - - - - - Returns the amount of reserved but not used system memory. - - - - - Unity allocates memory in pools for usage when unity needs to allocate memory. This function returns the amount of unused memory in these pools. - - - The amount of unused memory in the reserved pools. This returns 0 if the Profiler is not available. - - - - - Enable or disable a given ProfilerArea. - - The area you want to enable or disable. - Enable or disable the collection of data for this area. - - - - Sets the size of the temp allocator. - - Size in bytes. - - Returns true if requested size was successfully set. Will return false if value is disallowed (too small). - - - - - The different areas of profiling, corresponding to the charts in ProfilerWindow. - - - - - Audio statistics. - - - - - CPU statistics. - - - - - Global Illumination statistics. - - - - - GPU statistics. - - - - - Memory statistics. - - - - - Network messages statistics. - - - - - Network operations statistics. - - - - - 3D Physics statistics. - - - - - 2D physics statistics. - - - - - Rendering statistics. - - - - - UI statistics. - - - - - Detailed UI statistics. - - - - - Video playback statistics. - - - - - Records profiling data produced by a specific Sampler. - - - - - Accumulated time of Begin/End pairs for the previous frame in nanoseconds. (Read Only) - - - - - Enables recording. - - - - - Returns true if Recorder is valid and can collect data. (Read Only) - - - - - Number of time Begin/End pairs was called during the previous frame. (Read Only) - - - - - Configures the recorder to collect samples from all threads. - - - - - Configures the recorder to only collect data from the current thread. - - - - - Use this function to get a Recorder for the specific Profiler label. - - Sampler name. - - Recorder object for the specified Sampler. - - - - - Provides control over a CPU Profiler label. - - - - - Returns true if Sampler is valid. (Read Only) - - - - - Sampler name. (Read Only) - - - - - Returns Sampler object for the specific CPU Profiler label. - - Profiler Sampler name. - - Sampler object which represents specific profiler label. - - - - - Returns number and names of all registered Profiler labels. - - Preallocated list the Sampler names are written to. Or null if you want to get number of Samplers only. - - Number of active Samplers. - - - - - Returns Recorder associated with the Sampler. - - - Recorder object associated with the Sampler. - - - - - A script interface for a. - - - - - The aspect ratio of the projection. - - - - - The far clipping plane distance. - - - - - The field of view of the projection in degrees. - - - - - Which object layers are ignored by the projector. - - - - - The material that will be projected onto every object. - - - - - The near clipping plane distance. - - - - - Is the projection orthographic (true) or perspective (false)? - - - - - Projection's half-size when in orthographic mode. - - - - - Base class to derive custom property attributes from. Use this to create custom attributes for script variables. - - - - - Optional field to specify the order that multiple DecorationDrawers should be drawn in. - - - - - Represents a string as an int for efficient lookup and comparison. Use this for common PropertyNames. - -Internally stores just an int to represent the string. A PropertyName can be created from a string but can not be converted back to a string. The same string always results in the same int representing that string. Thus this is a very efficient string representation in both memory and speed when all you need is comparison. - -PropertyName is serializable. - -ToString() is only implemented for debugging purposes in the editor it returns "theName:3737" in the player it returns "Unknown:3737". - - - - - Initializes the PropertyName using a string. - - - - - - Determines whether this instance and a specified object, which must also be a PropertyName object, have the same value. - - - - - - Returns the hash code for this PropertyName. - - - - - Converts the string passed into a PropertyName. See Also: PropertyName.ctor(System.String). - - - - - - Indicates whether the specified PropertyName is an Empty string. - - - - - - Determines whether two specified PropertyName have the same string value. Because two PropertyNames initialized with the same string value always have the same name index, we can simply perform a comparison of two ints to find out if the string value equals. - - - - - - - Determines whether two specified PropertyName have a different string value. - - - - - - - For debugging purposes only. Returns the string value representing the string in the Editor. -Returns "UnityEngine.PropertyName" in the player. - - - - - Script interface for. - - - - - Active color space (Read Only). - - - - - Global anisotropic filtering mode. - - - - - Set The AA Filtering option. - - - - - Async texture upload provides timesliced async texture upload on the render thread with tight control over memory and timeslicing. There are no allocations except for the ones which driver has to do. To read data and upload texture data a ringbuffer whose size can be controlled is re-used. - -Use asyncUploadBufferSize to set the buffer size for asynchronous texture uploads. The size is in megabytes. Minimum value is 2 and maximum is 512. Although the buffer will resize automatically to fit the largest texture currently loading, it is recommended to set the value approximately to the size of biggest texture used in the Scene to avoid re-sizing of the buffer which can incur performance cost. - - - - - This flag controls if the async upload pipeline's ring buffer remains allocated when there are no active loading operations. -To make the ring buffer allocation persist after all upload operations have completed, set this to true. -If you have issues with excessive memory usage, you can set this to false. This means you reduce the runtime memory footprint, but memory fragmentation can occur. -The default value is true. - - - - - Async texture upload provides timesliced async texture upload on the render thread with tight control over memory and timeslicing. There are no allocations except for the ones which driver has to do. To read data and upload texture data a ringbuffer whose size can be controlled is re-used. - -Use asyncUploadTimeSlice to set the time-slice in milliseconds for asynchronous texture uploads per -frame. Minimum value is 1 and maximum is 33. - - - - - If enabled, billboards will face towards camera position rather than camera orientation. - - - - - Blend weights. - - - - - Desired color space (Read Only). - - - - - Global multiplier for the LOD's switching distance. - - - - - A texture size limit applied to all textures. - - - - - A maximum LOD level. All LOD groups. - - - - - Maximum number of frames queued up by graphics driver. - - - - - The indexed list of available Quality Settings. - - - - - Budget for how many ray casts can be performed per frame for approximate collision testing. - - - - - The maximum number of pixel lights that should affect any object. - - - - - Enables realtime reflection probes. - - - - - In resolution scaling mode, this factor is used to multiply with the target Fixed DPI specified to get the actual Fixed DPI to use for this quality setting. - - - - - The normalized cascade distribution for a 2 cascade setup. The value defines the position of the cascade with respect to Zero. - - - - - The normalized cascade start position for a 4 cascade setup. Each member of the vector defines the normalized position of the coresponding cascade with respect to Zero. - - - - - Number of cascades to use for directional light shadows. - - - - - Shadow drawing distance. - - - - - The rendering mode of Shadowmask. - - - - - Offset shadow frustum near plane. - - - - - Directional light shadow projection. - - - - - The default resolution of the shadow maps. - - - - - Realtime Shadows type to be used. - - - - - Should soft blending be used for particles? - - - - - Use a two-pass shader for the vegetation in the terrain engine. - - - - - Enable automatic streaming of texture mipmap levels based on their distance from all active cameras. - - - - - Process all enabled Cameras for texture streaming (rather than just those with StreamingController components). - - - - - The maximum number of active texture file IO requests from the texture streaming system. - - - - - The maximum number of mipmap levels to discard for each texture. - - - - - The total amount of memory to be used by streaming and non-streaming textures. - - - - - Number of renderers used to process each frame during the calculation of desired mipmap levels for the associated textures. - - - - - The VSync Count. - - - - - Decrease the current quality level. - - Should expensive changes be applied (Anti-aliasing etc). - - - - Returns the current graphics quality level. - - - - - Increase the current quality level. - - Should expensive changes be applied (Anti-aliasing etc). - - - - Sets a new graphics quality level. - - Quality index to set. - Should expensive changes be applied (Anti-aliasing etc). - - - - Quaternions are used to represent rotations. - - - - - Returns or sets the euler angle representation of the rotation. - - - - - The identity rotation (Read Only). - - - - - Returns this quaternion with a magnitude of 1 (Read Only). - - - - - W component of the Quaternion. Do not directly modify quaternions. - - - - - X component of the Quaternion. Don't modify this directly unless you know quaternions inside out. - - - - - Y component of the Quaternion. Don't modify this directly unless you know quaternions inside out. - - - - - Z component of the Quaternion. Don't modify this directly unless you know quaternions inside out. - - - - - Returns the angle in degrees between two rotations a and b. - - - - - - - Creates a rotation which rotates angle degrees around axis. - - - - - - - Constructs new Quaternion with given x,y,z,w components. - - - - - - - - - The dot product between two rotations. - - - - - - - Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis. - - - - - - - - Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis. - - - - - - Creates a rotation which rotates from fromDirection to toDirection. - - - - - - - Returns the Inverse of rotation. - - - - - - Interpolates between a and b by t and normalizes the result afterwards. The parameter t is clamped to the range [0, 1]. - - - - - - - - Interpolates between a and b by t and normalizes the result afterwards. The parameter t is not clamped. - - - - - - - - Creates a rotation with the specified forward and upwards directions. - - The direction to look in. - The vector that defines in which direction up is. - - - - Creates a rotation with the specified forward and upwards directions. - - The direction to look in. - The vector that defines in which direction up is. - - - - Converts this quaternion to one with the same orientation but with a magnitude of 1. - - - - - - Are two quaternions equal to each other? - - - - - - - Combines rotations lhs and rhs. - - Left-hand side quaternion. - Right-hand side quaternion. - - - - Rotates the point point with rotation. - - - - - - - Rotates a rotation from towards to. - - - - - - - - Set x, y, z and w components of an existing Quaternion. - - - - - - - - - Creates a rotation which rotates from fromDirection to toDirection. - - - - - - - Creates a rotation with the specified forward and upwards directions. - - The direction to look in. - The vector that defines in which direction up is. - - - - Creates a rotation with the specified forward and upwards directions. - - The direction to look in. - The vector that defines in which direction up is. - - - - Spherically interpolates between a and b by t. The parameter t is clamped to the range [0, 1]. - - - - - - - - Spherically interpolates between a and b by t. The parameter t is not clamped. - - - - - - - - Access the x, y, z, w components using [0], [1], [2], [3] respectively. - - - - - Converts a rotation to angle-axis representation (angles in degrees). - - - - - - - Returns a nicely formatted string of the Quaternion. - - - - - - Returns a nicely formatted string of the Quaternion. - - - - - - Overrides the global Physics.queriesHitTriggers. - - - - - Queries always report Trigger hits. - - - - - Queries never report Trigger hits. - - - - - Queries use the global Physics.queriesHitTriggers setting. - - - - - Used by Animation.Play function. - - - - - Will start playing after all other animations have stopped playing. - - - - - Starts playing immediately. This can be used if you just want to quickly create a duplicate animation. - - - - - Class for generating random data. - - - - - Returns a random point inside a circle with radius 1 (Read Only). - - - - - Returns a random point inside a sphere with radius 1 (Read Only). - - - - - Returns a random point on the surface of a sphere with radius 1 (Read Only). - - - - - Returns a random rotation (Read Only). - - - - - Returns a random rotation with uniform distribution (Read Only). - - - - - Gets/Sets the full internal state of the random number generator. - - - - - Returns a random number between 0.0 [inclusive] and 1.0 [inclusive] (Read Only). - - - - - Generates a random color from HSV and alpha ranges. - - Minimum hue [0..1]. - Maximum hue [0..1]. - Minimum saturation [0..1]. - Maximum saturation[0..1]. - Minimum value [0..1]. - Maximum value [0..1]. - Minimum alpha [0..1]. - Maximum alpha [0..1]. - - A random color with HSV and alpha values in the input ranges. - - - - - Generates a random color from HSV and alpha ranges. - - Minimum hue [0..1]. - Maximum hue [0..1]. - Minimum saturation [0..1]. - Maximum saturation[0..1]. - Minimum value [0..1]. - Maximum value [0..1]. - Minimum alpha [0..1]. - Maximum alpha [0..1]. - - A random color with HSV and alpha values in the input ranges. - - - - - Generates a random color from HSV and alpha ranges. - - Minimum hue [0..1]. - Maximum hue [0..1]. - Minimum saturation [0..1]. - Maximum saturation[0..1]. - Minimum value [0..1]. - Maximum value [0..1]. - Minimum alpha [0..1]. - Maximum alpha [0..1]. - - A random color with HSV and alpha values in the input ranges. - - - - - Generates a random color from HSV and alpha ranges. - - Minimum hue [0..1]. - Maximum hue [0..1]. - Minimum saturation [0..1]. - Maximum saturation[0..1]. - Minimum value [0..1]. - Maximum value [0..1]. - Minimum alpha [0..1]. - Maximum alpha [0..1]. - - A random color with HSV and alpha values in the input ranges. - - - - - Generates a random color from HSV and alpha ranges. - - Minimum hue [0..1]. - Maximum hue [0..1]. - Minimum saturation [0..1]. - Maximum saturation[0..1]. - Minimum value [0..1]. - Maximum value [0..1]. - Minimum alpha [0..1]. - Maximum alpha [0..1]. - - A random color with HSV and alpha values in the input ranges. - - - - - Initializes the random number generator state with a seed. - - Seed used to initialize the random number generator. - - - - Returns a random float number between and min [inclusive] and max [inclusive] (Read Only). - - - - - - - Returns a random integer number between min [inclusive] and max [exclusive] (Read Only). - - - - - - - Serializable structure used to hold the full internal state of the random number generator. See Also: Random.state. - - - - - Attribute used to make a float or int variable in a script be restricted to a specific range. - - - - - Attribute used to make a float or int variable in a script be restricted to a specific range. - - The minimum allowed value. - The maximum allowed value. - - - - Describes an integer range. - - - - - The end index of the range (not inclusive). - - - - - The length of the range. - - - - - The starting index of the range, where 0 is the first position, 1 is the second, 2 is the third, and so on. - - - - - Constructs a new RangeInt with given start, length values. - - The starting index of the range. - The length of the range. - - - - Representation of rays. - - - - - The direction of the ray. - - - - - The origin point of the ray. - - - - - Creates a ray starting at origin along direction. - - - - - - - Returns a point at distance units along the ray. - - - - - - Returns a nicely formatted string for this ray. - - - - - - Returns a nicely formatted string for this ray. - - - - - - A ray in 2D space. - - - - - The direction of the ray in world space. - - - - - The starting point of the ray in world space. - - - - - Creates a 2D ray starting at origin along direction. - - Origin. - Direction. - - - - - - Get a point that lies a given distance along a ray. - - Distance of the desired point along the path of the ray. - - - - Struct used to set up a raycast command to be performed asynchronously during a job. - - - - - The direction of the ray. - - - - - The maximum distance the ray should check for collisions. - - - - - The starting point of the ray in world coordinates. - - - - - A LayerMask that is used to selectively ignore Colliders when casting a ray. - - - - - The maximum number of Colliders the ray can hit. - - - - - Create a RaycastCommand. - - The starting point of the ray in world coordinates. - The direction of the ray. - The maximum distance the ray should check for collisions. - A LayerMask that is used to selectively ignore Colliders when casting a ray. - The maximum number of Colliders the ray can hit. - - - - Schedule a batch of raycasts which are performed in a job. - - A NativeArray of the RaycastCommands to perform. - A NativeArray of the RaycastHits where the results of the commands are stored. - The minimum number of jobs which should be performed in a single job. - A JobHandle of a job which must be completed before the raycast starts. - - The JobHandle of the job which will perform the raycasts. - - - - - Structure used to get information back from a raycast. - - - - - The barycentric coordinate of the triangle we hit. - - - - - The Collider that was hit. - - - - - The distance from the ray's origin to the impact point. - - - - - The uv lightmap coordinate at the impact point. - - - - - The normal of the surface the ray hit. - - - - - The impact point in world space where the ray hit the collider. - - - - - The Rigidbody of the collider that was hit. If the collider is not attached to a rigidbody then it is null. - - - - - The uv texture coordinate at the collision location. - - - - - The secondary uv texture coordinate at the impact point. - - - - - The Transform of the rigidbody or collider that was hit. - - - - - The index of the triangle that was hit. - - - - - Information returned about an object detected by a raycast in 2D physics. - - - - - The centroid of the primitive used to perform the cast. - - - - - The collider hit by the ray. - - - - - The distance from the ray origin to the impact point. - - - - - Fraction of the distance along the ray that the hit occurred. - - - - - The normal vector of the surface hit by the ray. - - - - - The point in world space where the ray hit the collider's surface. - - - - - The Rigidbody2D attached to the object that was hit. - - - - - The Transform of the object that was hit. - - - - - A 2D Rectangle defined by X and Y position, width and height. - - - - - The position of the center of the rectangle. - - - - - The height of the rectangle, measured from the Y position. - - - - - The position of the maximum corner of the rectangle. - - - - - The position of the minimum corner of the rectangle. - - - - - The X and Y position of the rectangle. - - - - - The width and height of the rectangle. - - - - - The width of the rectangle, measured from the X position. - - - - - The X coordinate of the rectangle. - - - - - The maximum X coordinate of the rectangle. - - - - - The minimum X coordinate of the rectangle. - - - - - The Y coordinate of the rectangle. - - - - - The maximum Y coordinate of the rectangle. - - - - - The minimum Y coordinate of the rectangle. - - - - - Shorthand for writing new Rect(0,0,0,0). - - - - - Returns true if the x and y components of point is a point inside this rectangle. If allowInverse is present and true, the width and height of the Rect are allowed to take negative values (ie, the min value is greater than the max), and the test will still work. - - Point to test. - Does the test allow the Rect's width and height to be negative? - - True if the point lies within the specified rectangle. - - - - - Returns true if the x and y components of point is a point inside this rectangle. If allowInverse is present and true, the width and height of the Rect are allowed to take negative values (ie, the min value is greater than the max), and the test will still work. - - Point to test. - Does the test allow the Rect's width and height to be negative? - - True if the point lies within the specified rectangle. - - - - - Returns true if the x and y components of point is a point inside this rectangle. If allowInverse is present and true, the width and height of the Rect are allowed to take negative values (ie, the min value is greater than the max), and the test will still work. - - Point to test. - Does the test allow the Rect's width and height to be negative? - - True if the point lies within the specified rectangle. - - - - - Creates a new rectangle. - - The X value the rect is measured from. - The Y value the rect is measured from. - The width of the rectangle. - The height of the rectangle. - - - - - - - - - - Creates a rectangle given a size and position. - - The position of the minimum corner of the rect. - The width and height of the rect. - - - - Creates a rectangle from min/max coordinate values. - - The minimum X coordinate. - The minimum Y coordinate. - The maximum X coordinate. - The maximum Y coordinate. - - A rectangle matching the specified coordinates. - - - - - Returns a point inside a rectangle, given normalized coordinates. - - Rectangle to get a point inside. - Normalized coordinates to get a point for. - - - - Returns true if the rectangles are the same. - - - - - - - Returns true if the other rectangle overlaps this one. If allowInverse is present and true, the widths and heights of the Rects are allowed to take negative values (ie, the min value is greater than the max), and the test will still work. - - Other rectangle to test overlapping with. - Does the test allow the widths and heights of the Rects to be negative? - - - - Returns true if the other rectangle overlaps this one. If allowInverse is present and true, the widths and heights of the Rects are allowed to take negative values (ie, the min value is greater than the max), and the test will still work. - - Other rectangle to test overlapping with. - Does the test allow the widths and heights of the Rects to be negative? - - - - Returns the normalized coordinates cooresponding the the point. - - Rectangle to get normalized coordinates inside. - A point inside the rectangle to get normalized coordinates for. - - - - Set components of an existing Rect. - - - - - - - - - Returns a nicely formatted string for this Rect. - - - - - - Returns a nicely formatted string for this Rect. - - - - - - A 2D Rectangle defined by x, y, width, height with integers. - - - - - A RectInt.PositionCollection that contains all positions within the RectInt. - - - - - Center coordinate of the rectangle. - - - - - Height of the rectangle. - - - - - Upper right corner of the rectangle. - - - - - Lower left corner of the rectangle. - - - - - Returns the position (x, y) of the RectInt. - - - - - Returns the width and height of the RectInt. - - - - - Width of the rectangle. - - - - - Left coordinate of the rectangle. - - - - - Returns the maximum X value of the RectInt. - - - - - Returns the minimum X value of the RectInt. - - - - - Top coordinate of the rectangle. - - - - - Returns the maximum Y value of the RectInt. - - - - - Returns the minimum Y value of the RectInt. - - - - - Clamps the position and size of the RectInt to the given bounds. - - Bounds to clamp the RectInt. - - - - Returns true if the given position is within the RectInt. - - Position to check. - Whether the max limits are included in the check. - - Whether the position is within the RectInt. - - - - - Returns true if the given position is within the RectInt. - - Position to check. - Whether the max limits are included in the check. - - Whether the position is within the RectInt. - - - - - Returns true if the given RectInt is equal to this RectInt. - - - - - - An iterator that allows you to iterate over all positions within the RectInt. - - - - - Current position of the enumerator. - - - - - Returns this as an iterator that allows you to iterate over all positions within the RectInt. - - - This RectInt.PositionEnumerator. - - - - - Moves the enumerator to the next position. - - - Whether the enumerator has successfully moved to the next position. - - - - - Resets this enumerator to its starting state. - - - - - Sets the bounds to the min and max value of the rect. - - - - - - - Returns the x, y, width and height of the RectInt. - - - - - Offsets for rectangles, borders, etc. - - - - - Bottom edge size. - - - - - Shortcut for left + right. (Read Only) - - - - - Left edge size. - - - - - Right edge size. - - - - - Top edge size. - - - - - Shortcut for top + bottom. (Read Only) - - - - - Add the border offsets to a rect. - - - - - - Creates a new rectangle with offsets. - - - - - - - - - Creates a new rectangle with offsets. - - - - - - - - - Remove the border offsets from a rect. - - - - - - Position, size, anchor and pivot information for a rectangle. - - - - - The position of the pivot of this RectTransform relative to the anchor reference point. - - - - - The 3D position of the pivot of this RectTransform relative to the anchor reference point. - - - - - The normalized position in the parent RectTransform that the upper right corner is anchored to. - - - - - The normalized position in the parent RectTransform that the lower left corner is anchored to. - - - - - The offset of the upper right corner of the rectangle relative to the upper right anchor. - - - - - The offset of the lower left corner of the rectangle relative to the lower left anchor. - - - - - The normalized position in this RectTransform that it rotates around. - - - - - Event that is invoked for RectTransforms that need to have their driven properties reapplied. - - - - - - The calculated rectangle in the local space of the Transform. - - - - - The size of this RectTransform relative to the distances between the anchors. - - - - - An axis that can be horizontal or vertical. - - - - - Horizontal. - - - - - Vertical. - - - - - Enum used to specify one edge of a rectangle. - - - - - The bottom edge. - - - - - The left edge. - - - - - The right edge. - - - - - The top edge. - - - - - Force the recalculation of RectTransforms internal data. - - - - - Get the corners of the calculated rectangle in the local space of its Transform. - - The array that corners are filled into. - - - - Get the corners of the calculated rectangle in world space. - - The array that corners are filled into. - - - - Delegate used for the reapplyDrivenProperties event. - - - - - - Set the distance of this rectangle relative to a specified edge of the parent rectangle, while also setting its size. - - The edge of the parent rectangle to inset from. - The inset distance. - The size of the rectangle along the same direction of the inset. - - - - Makes the RectTransform calculated rect be a given size on the specified axis. - - The axis to specify the size along. - The desired size along the specified axis. - - - - Utility class containing helper methods for working with RectTransform. - - - - - Flips the horizontal and vertical axes of the RectTransform size and alignment, and optionally its children as well. - - The RectTransform to flip. - Flips around the pivot if true. Flips within the parent rect if false. - Flip the children as well? - - - - Flips the alignment of the RectTransform along the horizontal or vertical axis, and optionally its children as well. - - The RectTransform to flip. - Flips around the pivot if true. Flips within the parent rect if false. - Flip the children as well? - The axis to flip along. 0 is horizontal and 1 is vertical. - - - - Convert a given point in screen space into a pixel correct point. - - - - - - Pixel adjusted point. - - - - - Given a rect transform, return the corner points in pixel accurate coordinates. - - - - - Pixel adjusted rect. - - - - - Does the RectTransform contain the screen point as seen from the given camera? - - The RectTransform to test with. - The screen point to test. - The camera from which the test is performed from. (Optional) - - True if the point is inside the rectangle. - - - - - Transform a screen space point to a position in the local space of a RectTransform that is on the plane of its rectangle. - - The RectTransform to find a point inside. - The camera associated with the screen space position. - Screen space position. - Point in local space of the rect transform. - - Returns true if the plane of the RectTransform is hit, regardless of whether the point is inside the rectangle. - - - - - Transform a screen space point to a position in world space that is on the plane of the given RectTransform. - - The RectTransform to find a point inside. - The camera associated with the screen space position. - Screen space position. - Point in world space. - - Returns true if the plane of the RectTransform is hit, regardless of whether the point is inside the rectangle. - - - - - The reflection probe is used to capture the surroundings into a texture which is passed to the shaders and used for reflections. - - - - - The color with which the texture of reflection probe will be cleared. - - - - - Reference to the baked texture of the reflection probe's surrounding. - - - - - Distance around probe used for blending (used in deferred probes). - - - - - The bounding volume of the reflection probe (Read Only). - - - - - Should this reflection probe use box projection? - - - - - The center of the box area in which reflections will be applied to the objects. Measured in the probes's local space. - - - - - How the reflection probe clears the background. - - - - - This is used to render parts of the reflecion probe's surrounding selectively. - - - - - Reference to the baked texture of the reflection probe's surrounding. Use this to assign custom reflection texture. - - - - - Adds a delegate to get notifications when the default specular Cubemap is changed. - - - - - - Texture which is used outside of all reflection probes (Read Only). - - - - - HDR decode values of the default reflection probe texture. - - - - - The far clipping plane distance when rendering the probe. - - - - - Should this reflection probe use HDR rendering? - - - - - Reflection probe importance. - - - - - The intensity modifier that is applied to the texture of reflection probe in the shader. - - - - - Should reflection probe texture be generated in the Editor (ReflectionProbeMode.Baked) or should probe use custom specified texure (ReflectionProbeMode.Custom)? - - - - - The near clipping plane distance when rendering the probe. - - - - - Reference to the realtime texture of the reflection probe's surroundings. Use this to assign a RenderTexture to use for realtime reflection. - - - - - Adds a delegate to get notifications when a Reflection Probe is added to a Scene or removed from a Scene. - - - - - - Sets the way the probe will refresh. - -See Also: ReflectionProbeRefreshMode. - - - - - Resolution of the underlying reflection texture in pixels. - - - - - Shadow drawing distance when rendering the probe. - - - - - The size of the box area in which reflections will be applied to the objects. Measured in the probes's local space. - - - - - Texture which is passed to the shader of the objects in the vicinity of the reflection probe (Read Only). - - - - - HDR decode values of the reflection probe texture. - - - - - Sets this probe time-slicing mode - -See Also: ReflectionProbeTimeSlicingMode. - - - - - Utility method to blend 2 cubemaps into a target render texture. - - Cubemap to blend from. - Cubemap to blend to. - Blend weight. - RenderTexture which will hold the result of the blend. - - Returns trues if cubemaps were blended, false otherwise. - - - - - Checks if a probe has finished a time-sliced render. - - An integer representing the RenderID as returned by the RenderProbe method. - - - True if the render has finished, false otherwise. - - See Also: timeSlicingMode - - - - - - Types of events that occur when ReflectionProbe components are used in a Scene. - - - - - An event that occurs when a Reflection Probe component is added to a Scene or enabled in a Scene. - - - - - An event that occurs when a Reflection Probe component is unloaded from a Scene or disabled in a Scene. - - - - - Refreshes the probe's cubemap. - - Target RendeTexture in which rendering should be done. Specifying null will update the probe's default texture. - - - An integer representing a RenderID which can subsequently be used to check if the probe has finished rendering while rendering in time-slice mode. - - See Also: IsFinishedRendering - See Also: timeSlicingMode - - - - - - Revert all ReflectionProbe parameters to default. - - - - - Keeps two Rigidbody2D at their relative orientations. - - - - - The current angular offset between the Rigidbody2D that the joint connects. - - - - - Should both the linearOffset and angularOffset be calculated automatically? - - - - - Scales both the linear and angular forces used to correct the required relative orientation. - - - - - The current linear offset between the Rigidbody2D that the joint connects. - - - - - The maximum force that can be generated when trying to maintain the relative joint constraint. - - - - - The maximum torque that can be generated when trying to maintain the relative joint constraint. - - - - - The world-space position that is currently trying to be maintained. - - - - - Provides access to your remote settings. - - - - - Dispatched before the RemoteSettings object makes the network request for the latest settings. - - - - - - Dispatched when the network request made by the RemoteSettings object to fetch the remote configuration file is complete. - - - - - - Forces the game to download the newest settings from the server and update its values. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the number of keys in the remote settings configuration. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets an array containing all the keys in the remote settings configuration. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Gets the value corresponding to remote setting identified by key, if it exists. - - The key identifying the setting. - The default value to use if the setting identified by the key parameter cannot be found or is unavailable. - - The current value of the setting identified by key, or the default value. - - - - - Reports whether the specified key exists in the remote settings configuration. - - The key identifying the setting. - - True, if the key exists. - - - - - Dispatched when a remote settings configuration is fetched and successfully parsed from the server or from local cache. - - - - - - Defines the delegate signature for handling RemoteSettings.Updated events. - - - - - Reports whether or not the settings available from the RemoteSettings object were received from the Analytics Service during the current session. - - - True, if the remote settings file was received from the Analytics Service in the current session. False, if the remote settings file was received during an earlier session and cached. - - - - - Color or depth buffer part of a RenderTexture. - - - - - Returns native RenderBuffer. Be warned this is not native Texture, but rather pointer to unity struct that can be used with native unity API. Currently such API exists only on iOS. - - - - - General functionality for all renderers. - - - - - Controls if dynamic occlusion culling should be performed for this renderer. - - - - - The bounding volume of the renderer (Read Only). - - - - - Makes the rendered 3D object visible if enabled. - - - - - Has this renderer been statically batched with any other renderers? - - - - - Is this renderer visible in any camera? (Read Only) - - - - - The index of the baked lightmap applied to this renderer. - - - - - The UV scale & offset used for a lightmap. - - - - - If set, the Renderer will use the Light Probe Proxy Volume component attached to the source GameObject. - - - - - The light probe interpolation type. - - - - - Matrix that transforms a point from local space into world space (Read Only). - - - - - Returns the first instantiated Material assigned to the renderer. - - - - - Returns all the instantiated materials of this object. - - - - - Specifies the mode for motion vector rendering. - - - - - Specifies whether this renderer has a per-object motion vector pass. - - - - - If set, Renderer will use this Transform's position to find the light or reflection probe. - - - - - The index of the realtime lightmap applied to this renderer. - - - - - The UV scale & offset used for a realtime lightmap. - - - - - Does this object receive shadows? - - - - - Should reflection probes be used for this Renderer? - - - - - This value sorts renderers by priority. Lower values are rendered first and higher values are rendered last. - - - - - Determines which rendering layer this renderer lives on. - - - - - Does this object cast shadows? - - - - - The shared material of this object. - - - - - All the shared materials of this object. - - - - - Unique ID of the Renderer's sorting layer. - - - - - Name of the Renderer's sorting layer. - - - - - Renderer's order within a sorting layer. - - - - - Should light probes be used for this Renderer? - - - - - Matrix that transforms a point from world space into local space (Read Only). - - - - - Returns an array of closest reflection probes with weights, weight shows how much influence the probe has on the renderer, this value is also used when blending between reflection probes occur. - - - - - - Returns all the instantiated materials of this object. - - A list of materials to populate. - - - - Get per-Renderer or per-Material property block. - - Material parameters to retrieve. - The index of the Material you want to get overridden parameters from. The index ranges from 0 to Renderer.sharedMaterials.Length-1. - - - - Get per-Renderer or per-Material property block. - - Material parameters to retrieve. - The index of the Material you want to get overridden parameters from. The index ranges from 0 to Renderer.sharedMaterials.Length-1. - - - - Returns all the shared materials of this object. - - A list of materials to populate. - - - - Returns true if the Renderer has a material property block attached via SetPropertyBlock. - - - - - Lets you set or clear per-renderer or per-material parameter overrides. - - Property block with values you want to override. - The index of the Material you want to override the parameters of. The index ranges from 0 to Renderer.sharedMaterial.Length-1. - - - - Lets you set or clear per-renderer or per-material parameter overrides. - - Property block with values you want to override. - The index of the Material you want to override the parameters of. The index ranges from 0 to Renderer.sharedMaterial.Length-1. - - - - Extension methods to the Renderer class, used only for the UpdateGIMaterials method used by the Global Illumination System. - - - - - Schedules an update of the albedo and emissive Textures of a system that contains the Renderer. - - - - - - Ambient lighting mode. - - - - - Ambient lighting is defined by a custom cubemap. - - - - - Flat ambient lighting. - - - - - Skybox-based or custom ambient lighting. - - - - - Trilight ambient lighting. - - - - - Allows the asynchronous read back of GPU resources. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Triggers a request to asynchronously fetch the data from a GPU resource. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Width in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - An optional delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - An AsyncGPUReadbackRequest that can be used to both access the data and check whether it is available. - - - - - Represents an asynchronous request for a GPU resource. - - - - - When reading data from a ComputeBuffer, depth is 1, otherwise, the property takes the value of the requested depth from the texture. - - - - - Checks whether the request has been processed. - - - - - This property is true if the request has encountered an error. - - - - - When reading data from a ComputeBuffer, height is 1, otherwise, the property takes the value of the requested height from the texture. - - - - - Number of layers in the current request. - - - - - The size in bytes of one layer of the readback data. - - - - - The width of the requested GPU data. - - - - - Fetches the data of a successful request. - - The index of the layer to retrieve. - - - - Triggers an update of the request. - - - - - Waits for completion of the request. - - - - - Blend mode for controlling the blending. - - - - - Blend factor is (Ad, Ad, Ad, Ad). - - - - - Blend factor is (Rd, Gd, Bd, Ad). - - - - - Blend factor is (1, 1, 1, 1). - - - - - Blend factor is (1 - Ad, 1 - Ad, 1 - Ad, 1 - Ad). - - - - - Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad). - - - - - Blend factor is (1 - As, 1 - As, 1 - As, 1 - As). - - - - - Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As). - - - - - Blend factor is (As, As, As, As). - - - - - Blend factor is (f, f, f, 1); where f = min(As, 1 - Ad). - - - - - Blend factor is (Rs, Gs, Bs, As). - - - - - Blend factor is (0, 0, 0, 0). - - - - - Blend operation. - - - - - Add (s + d). - - - - - Color burn (Advanced OpenGL blending). - - - - - Color dodge (Advanced OpenGL blending). - - - - - Darken (Advanced OpenGL blending). - - - - - Difference (Advanced OpenGL blending). - - - - - Exclusion (Advanced OpenGL blending). - - - - - Hard light (Advanced OpenGL blending). - - - - - HSL color (Advanced OpenGL blending). - - - - - HSL Hue (Advanced OpenGL blending). - - - - - HSL luminosity (Advanced OpenGL blending). - - - - - HSL saturation (Advanced OpenGL blending). - - - - - Lighten (Advanced OpenGL blending). - - - - - Logical AND (s & d) (D3D11.1 only). - - - - - Logical inverted AND (!s & d) (D3D11.1 only). - - - - - Logical reverse AND (s & !d) (D3D11.1 only). - - - - - Logical Clear (0). - - - - - Logical Copy (s) (D3D11.1 only). - - - - - Logical inverted Copy (!s) (D3D11.1 only). - - - - - Logical Equivalence !(s XOR d) (D3D11.1 only). - - - - - Logical Inverse (!d) (D3D11.1 only). - - - - - Logical NAND !(s & d). D3D11.1 only. - - - - - Logical No-op (d) (D3D11.1 only). - - - - - Logical NOR !(s | d) (D3D11.1 only). - - - - - Logical OR (s | d) (D3D11.1 only). - - - - - Logical inverted OR (!s | d) (D3D11.1 only). - - - - - Logical reverse OR (s | !d) (D3D11.1 only). - - - - - Logical SET (1) (D3D11.1 only). - - - - - Logical XOR (s XOR d) (D3D11.1 only). - - - - - Max. - - - - - Min. - - - - - Multiply (Advanced OpenGL blending). - - - - - Overlay (Advanced OpenGL blending). - - - - - Reverse subtract. - - - - - Screen (Advanced OpenGL blending). - - - - - Soft light (Advanced OpenGL blending). - - - - - Subtract. - - - - - Built-in temporary render textures produced during camera's rendering. - - - - - The raw RenderBuffer pointer to be used. - - - - - Target texture of currently rendering camera. - - - - - Currently active render target. - - - - - Camera's depth texture. - - - - - Camera's depth+normals texture. - - - - - Deferred shading G-buffer #0 (typically diffuse color). - - - - - Deferred shading G-buffer #1 (typically specular + roughness). - - - - - Deferred shading G-buffer #2 (typically normals). - - - - - Deferred shading G-buffer #3 (typically emission/lighting). - - - - - Deferred shading G-buffer #4 (typically occlusion mask for static lights if any). - - - - - G-buffer #5 Available. - - - - - G-buffer #6 Available. - - - - - G-buffer #7 Available. - - - - - Motion Vectors generated when the camera has motion vectors enabled. - - - - - Deferred lighting light buffer. - - - - - Deferred lighting HDR specular light buffer (Xbox 360 only). - - - - - Deferred lighting (normals+specular) G-buffer. - - - - - A globally set property name. - - - - - Reflections gathered from default reflection and reflections probes. - - - - - The given RenderTexture. - - - - - Resolved depth buffer from deferred. - - - - - Defines set by editor when compiling shaders, depending on target platform and tier. - - - - - SHADER_API_DESKTOP is set when compiling shader for "desktop" platforms. - - - - - SHADER_API_MOBILE is set when compiling shader for mobile platforms. - - - - - UNITY_COLORSPACE_GAMMA is set when compiling shaders for Gamma Color Space. - - - - - UNITY_ENABLE_DETAIL_NORMALMAP is set if Detail Normal Map should be sampled if assigned. - - - - - UNITY_ENABLE_NATIVE_SHADOW_LOOKUPS enables use of built-in shadow comparison samplers on OpenGL ES 2.0. - - - - - UNITY_ENABLE_REFLECTION_BUFFERS is set when deferred shading renders reflection probes in deferred mode. With this option set reflections are rendered into a per-pixel buffer. This is similar to the way lights are rendered into a per-pixel buffer. UNITY_ENABLE_REFLECTION_BUFFERS is on by default when using deferred shading, but you can turn it off by setting “No support” for the Deferred Reflections shader option in Graphics Settings. When the setting is off, reflection probes are rendered per-object, similar to the way forward rendering works. - - - - - UNITY_FRAMEBUFFER_FETCH_AVAILABLE is set when compiling shaders for platforms where framebuffer fetch is potentially available. - - - - - UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS is set automatically for platforms that don't require full floating-point precision support in fragment shaders. - - - - - UNITY_HARDWARE_TIER1 is set when compiling shaders for GraphicsTier.Tier1. - - - - - UNITY_HARDWARE_TIER2 is set when compiling shaders for GraphicsTier.Tier2. - - - - - UNITY_HARDWARE_TIER3 is set when compiling shaders for GraphicsTier.Tier3. - - - - - UNITY_LIGHT_PROBE_PROXY_VOLUME is set when Light Probe Proxy Volume feature is supported by the current graphics API and is enabled in the current Tier Settings(Graphics Settings). - - - - - UNITY_LIGHTMAP_DLDR_ENCODING is set when lightmap textures are using double LDR encoding to store the values in the texture. - - - - - UNITY_LIGHTMAP_FULL_HDR is set when lightmap textures are not using any encoding to store the values in the texture. - - - - - UNITY_LIGHTMAP_RGBM_ENCODING is set when lightmap textures are using RGBM encoding to store the values in the texture. - - - - - UNITY_METAL_SHADOWS_USE_POINT_FILTERING is set if shadow sampler should use point filtering on iOS Metal. - - - - - UNITY_NO_DXT5nm is set when compiling shader for platform that do not support DXT5NM, meaning that normal maps will be encoded in RGB instead. - - - - - UNITY_NO_FULL_STANDARD_SHADER is set if Standard shader BRDF3 with extra simplifications should be used. - - - - - UNITY_NO_RGBM is set when compiling shader for platform that do not support RGBM, so dLDR will be used instead. - - - - - UNITY_NO_SCREENSPACE_SHADOWS is set when screenspace cascaded shadow maps are disabled. - - - - - UNITY_PBS_USE_BRDF1 is set if Standard Shader BRDF1 should be used. - - - - - UNITY_PBS_USE_BRDF2 is set if Standard Shader BRDF2 should be used. - - - - - UNITY_PBS_USE_BRDF3 is set if Standard Shader BRDF3 should be used. - - - - - UNITY_SPECCUBE_BLENDING is set if Reflection Probes Blending is enabled. - - - - - UNITY_SPECCUBE_BLENDING is set if Reflection Probes Box Projection is enabled. - - - - - UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS is set when Semitransparent Shadows are enabled. - - - - - Built-in shader modes used by Rendering.GraphicsSettings. - - - - - Don't use any shader, effectively disabling the functionality. - - - - - Use built-in shader (default). - - - - - Use custom shader instead of built-in one. - - - - - Built-in shader types used by Rendering.GraphicsSettings. - - - - - Shader used for deferred reflection probes. - - - - - Shader used for deferred shading calculations. - - - - - Shader used for depth and normals texture when enabled on a Camera. - - - - - Shader used for legacy deferred lighting calculations. - - - - - Default shader used for lens flares. - - - - - Default shader used for light halos. - - - - - Shader used for Motion Vectors when enabled on a Camera. - - - - - Shader used for screen-space cascaded shadows. - - - - - Defines a place in camera's rendering to attach Rendering.CommandBuffer objects to. - - - - - After camera's depth+normals texture is generated. - - - - - After camera's depth texture is generated. - - - - - After camera has done rendering everything. - - - - - After final geometry pass in deferred lighting. - - - - - After transparent objects in forward rendering. - - - - - After opaque objects in forward rendering. - - - - - After deferred rendering G-buffer is rendered. - - - - - After halo and lens flares. - - - - - After image effects. - - - - - After image effects that happen between opaque & transparent objects. - - - - - After lighting pass in deferred rendering. - - - - - After reflections pass in deferred rendering. - - - - - After skybox is drawn. - - - - - Before camera's depth+normals texture is generated. - - - - - Before camera's depth texture is generated. - - - - - Before final geometry pass in deferred lighting. - - - - - Before transparent objects in forward rendering. - - - - - Before opaque objects in forward rendering. - - - - - Before deferred rendering G-buffer is rendered. - - - - - Before halo and lens flares. - - - - - Before image effects. - - - - - Before image effects that happen between opaque & transparent objects. - - - - - Before lighting pass in deferred rendering. - - - - - Before reflections pass in deferred rendering. - - - - - Before skybox is drawn. - - - - - The HDR mode to use for rendering. - - - - - Uses RenderTextureFormat.ARGBHalf. - - - - - Uses RenderTextureFormat.RGB111110Float. - - - - - Specifies which color components will get written into the target framebuffer. - - - - - Write all components (R, G, B and Alpha). - - - - - Write alpha component. - - - - - Write blue component. - - - - - Write green component. - - - - - Write red component. - - - - - List of graphics commands to execute. - - - - - Name of this command buffer. - - - - - Size of this command buffer in bytes (Read Only). - - - - - Adds a command to begin profile sampling. - - Name of the profile information used for sampling. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Add a "blit into a render texture" command. - - Source texture or render target to blit from. - Destination to blit into. - Material to use. - Shader pass to use (default is -1, meaning "all passes"). - Scale applied to the source texture coordinate. - Offset applied to the source texture coordinate. - - - - Clear all commands in the buffer. - - - - - Clear random write targets for level pixel shaders. - - - - - Adds a "clear render target" command. - - Should clear depth buffer? - Should clear color buffer? - Color to clear with. - Depth to clear with (default is 1.0). - - - - Converts and copies a source texture to a destination texture with a different format or dimensions. - - Source texture. - Destination texture. - Source element (e.g. cubemap face). Set this to 0 for 2D source textures. - Destination element (e.g. cubemap face or texture array element). - - - - Converts and copies a source texture to a destination texture with a different format or dimensions. - - Source texture. - Destination texture. - Source element (e.g. cubemap face). Set this to 0 for 2D source textures. - Destination element (e.g. cubemap face or texture array element). - - - - Adds a command to copy ComputeBuffer counter value. - - Append/consume buffer to copy the counter from. - A buffer to copy the counter to. - Target byte offset in dst buffer. - - - - Adds a command to copy a texture into another texture. - - Source texture or identifier, see RenderTargetIdentifier. - Destination texture or identifier, see RenderTargetIdentifier. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Adds a command to copy a texture into another texture. - - Source texture or identifier, see RenderTargetIdentifier. - Destination texture or identifier, see RenderTargetIdentifier. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Adds a command to copy a texture into another texture. - - Source texture or identifier, see RenderTargetIdentifier. - Destination texture or identifier, see RenderTargetIdentifier. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Adds a command to copy a texture into another texture. - - Source texture or identifier, see RenderTargetIdentifier. - Destination texture or identifier, see RenderTargetIdentifier. - Source texture element (cubemap face, texture array layer or 3D texture depth slice). - Source texture mipmap level. - Destination texture element (cubemap face, texture array layer or 3D texture depth slice). - Destination texture mipmap level. - X coordinate of source texture region to copy (left side is zero). - Y coordinate of source texture region to copy (bottom is zero). - Width of source texture region to copy. - Height of source texture region to copy. - X coordinate of where to copy region in destination texture (left side is zero). - Y coordinate of where to copy region in destination texture (bottom is zero). - - - - Creates a GPUFence which will be passed after the last Blit, Clear, Draw, Dispatch or Texture Copy command prior to this call has been completed on the GPU. - - On some platforms there is a significant gap between the vertex processing completing and the pixel processing begining for a given draw call. This parameter allows for the fence to be passed after either the vertex or pixel processing for the proceeding draw has completed. If a compute shader dispatch was the last task submitted then this parameter is ignored. - - Returns a new GPUFence. - - - - - Create a new empty command buffer. - - - - - Add a command to disable the hardware scissor rectangle. - - - - - Adds a command to disable global shader keyword. - - Shader keyword to disable. - - - - Add a command to execute a ComputeShader. - - ComputeShader to execute. - Kernel index to execute, see ComputeShader.FindKernel. - Number of work groups in the X dimension. - Number of work groups in the Y dimension. - Number of work groups in the Z dimension. - ComputeBuffer with dispatch arguments. - Byte offset indicating the location of the dispatch arguments in the buffer. - - - - Add a command to execute a ComputeShader. - - ComputeShader to execute. - Kernel index to execute, see ComputeShader.FindKernel. - Number of work groups in the X dimension. - Number of work groups in the Y dimension. - Number of work groups in the Z dimension. - ComputeBuffer with dispatch arguments. - Byte offset indicating the location of the dispatch arguments in the buffer. - - - - Add a "draw mesh" command. - - Mesh to draw. - Transformation matrix to use. - Material to use. - Which subset of the mesh to render. - Which pass of the shader to use (default is -1, which renders all passes). - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - - - - Add a "draw mesh with instancing" command. - -The command will not immediately fail and throw an exception if Material.enableInstancing is false, but it will log an error and skips rendering each time the command is being executed if such a condition is detected. - -InvalidOperationException will be thrown if the current platform doesn't support this API (i.e. if GPU instancing is not available). See SystemInfo.supportsInstancing. - - The Mesh to draw. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Material to use. - Which pass of the shader to use, or -1 which renders all passes. - The array of object transformation matrices. - The number of instances to be drawn. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - - - - Add a "draw mesh with indirect instancing" command. - - The Mesh to draw. - Which subset of the mesh to draw. This applies only to meshes that are composed of several materials. - Material to use. - Which pass of the shader to use, or -1 which renders all passes. - Additional material properties to apply onto material just before this mesh will be drawn. See MaterialPropertyBlock. - The GPU buffer containing the arguments for how many instances of this mesh to draw. - The byte offset into the buffer, where the draw arguments start. - - - - Add a "draw procedural geometry" command. - - Transformation matrix to use. - Material to use. - Which pass of the shader to use (or -1 for all passes). - Topology of the procedural geometry. - Vertex count to render. - Instance count to render. - Additional material properties to apply just before rendering. See MaterialPropertyBlock. - - - - Add a "draw procedural geometry" command. - - Transformation matrix to use. - Material to use. - Which pass of the shader to use (or -1 for all passes). - Topology of the procedural geometry. - Additional material properties to apply just before rendering. See MaterialPropertyBlock. - Buffer with draw arguments. - Byte offset where in the buffer the draw arguments are. - - - - Add a "draw renderer" command. - - Renderer to draw. - Material to use. - Which subset of the mesh to render. - Which pass of the shader to use (default is -1, which renders all passes). - - - - Add a command to enable the hardware scissor rectangle. - - Viewport rectangle in pixel coordinates. - - - - Adds a command to enable global shader keyword. - - Shader keyword to enable. - - - - Adds a command to begin profile sampling. - - Name of the profile information used for sampling. - - - - Generate mipmap levels of a render texture. - - The render texture requiring mipmaps generation. - - - - Add a "get a temporary render texture" command. - - Shader property name for this texture. - Width in pixels, or -1 for "camera pixel width". - Height in pixels, or -1 for "camera pixel height". - Depth buffer bits (0, 16 or 24). - Texture filtering mode (default is Point). - Format of the render texture (default is ARGB32). - Color space conversion mode. - Anti-aliasing (default is no anti-aliasing). - Should random-write access into the texture be enabled (default is false). - Use this RenderTextureDescriptor for the settings when creating the temporary RenderTexture. - Render texture memoryless mode. - - - - Add a "get a temporary render texture" command. - - Shader property name for this texture. - Width in pixels, or -1 for "camera pixel width". - Height in pixels, or -1 for "camera pixel height". - Depth buffer bits (0, 16 or 24). - Texture filtering mode (default is Point). - Format of the render texture (default is ARGB32). - Color space conversion mode. - Anti-aliasing (default is no anti-aliasing). - Should random-write access into the texture be enabled (default is false). - Use this RenderTextureDescriptor for the settings when creating the temporary RenderTexture. - Render texture memoryless mode. - - - - Add a "get a temporary render texture array" command. - - Shader property name for this texture. - Width in pixels, or -1 for "camera pixel width". - Height in pixels, or -1 for "camera pixel height". - Number of slices in texture array. - Depth buffer bits (0, 16 or 24). - Texture filtering mode (default is Point). - Format of the render texture (default is ARGB32). - Color space conversion mode. - Anti-aliasing (default is no anti-aliasing). - Should random-write access into the texture be enabled (default is false). - - - - Send a user-defined blit event to a native code plugin. - - Native code callback to queue for Unity's renderer to invoke. - User defined command id to send to the callback. - Source render target. - Destination render target. - User data command parameters. - User data command flags. - - - - Deprecated. Use CommandBuffer.IssuePluginCustomTextureUpdateV2 instead. - - Native code callback to queue for Unity's renderer to invoke. - Texture resource to be updated. - User data to send to the native plugin. - - - - Deprecated. Use CommandBuffer.IssuePluginCustomTextureUpdateV2 instead. - - Native code callback to queue for Unity's renderer to invoke. - Texture resource to be updated. - User data to send to the native plugin. - - - - Send a texture update event to a native code plugin. - - Native code callback to queue for Unity's renderer to invoke. - Texture resource to be updated. - User data to send to the native plugin. - - - - Send a user-defined event to a native code plugin. - - Native code callback to queue for Unity's renderer to invoke. - User defined id to send to the callback. - - - - Send a user-defined event to a native code plugin with custom data. - - Native code callback to queue for Unity's renderer to invoke. - Custom data to pass to the native plugin callback. - Built in or user defined id to send to the callback. - - - - Add a "release a temporary render texture" command. - - Shader property name for this texture. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Adds an asynchonous GPU readback request command to the command buffer. - - The resource to read the data from. - Size in bytes of the data to be retrieved from the ComputeBuffer. - Offset in bytes in the ComputeBuffer. - The index of the mipmap to be fetched. - The target TextureFormat of the data. Conversion will happen automatically if format is different from the format stored on GPU. - Starting X coordinate in pixels of the Texture data to be fetched. - Starting Y coordinate in pixels of the Texture data to be fetched. - Start Z coordinate in pixels for the Texture3D being fetched. Index of Start layer for TextureCube, Texture2DArray and TextureCubeArray being fetched. - Depth in pixels for Texture3D being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray. - Width in pixels of the Texture data to be fetched. - Height in pixels of the Texture data to be fetched. - A delegate System.Action called once the request is fullfilled. The done request is passed as parameter to the System.Action. - - - - Force an antialiased render texture to be resolved. - - The antialiased render texture to resolve. - The render texture to resolve into. If set, the target render texture must have the same dimensions and format as the source. - - - - Adds a command to set an input or output buffer parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the buffer is being set for. See ComputeShader.FindKernel. - Name of the buffer variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Buffer to set. - - - - Adds a command to set an input or output buffer parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the buffer is being set for. See ComputeShader.FindKernel. - Name of the buffer variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Buffer to set. - - - - Adds a command to set a float parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a float parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set multiple consecutive float parameters on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Values to set. - - - - Adds a command to set multiple consecutive float parameters on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Values to set. - - - - Adds a command to set an integer parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set an integer parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set multiple consecutive integer parameters on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Values to set. - - - - Adds a command to set multiple consecutive integer parameters on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Values to set. - - - - Adds a command to set a matrix array parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a matrix array parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a matrix parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a matrix parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a texture parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the texture is being set for. See ComputeShader.FindKernel. - Name of the texture variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Texture value or identifier to set, see RenderTargetIdentifier. - Optional mipmap level of the read-write texture. - - - - Adds a command to set a texture parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the texture is being set for. See ComputeShader.FindKernel. - Name of the texture variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Texture value or identifier to set, see RenderTargetIdentifier. - Optional mipmap level of the read-write texture. - - - - Adds a command to set a texture parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the texture is being set for. See ComputeShader.FindKernel. - Name of the texture variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Texture value or identifier to set, see RenderTargetIdentifier. - Optional mipmap level of the read-write texture. - - - - Adds a command to set a texture parameter on a ComputeShader. - - ComputeShader to set parameter for. - Which kernel the texture is being set for. See ComputeShader.FindKernel. - Name of the texture variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Texture value or identifier to set, see RenderTargetIdentifier. - Optional mipmap level of the read-write texture. - - - - Adds a command to set a vector array parameter on a ComputeShader. - - ComputeShader to set parameter for. - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a vector array parameter on a ComputeShader. - - ComputeShader to set parameter for. - Property name. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a vector parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Adds a command to set a vector parameter on a ComputeShader. - - ComputeShader to set parameter for. - Name of the variable in shader code. - Property name ID. Use Shader.PropertyToID to get this ID. - Value to set. - - - - Add a "set global shader buffer property" command. - - - - - - - - Add a "set global shader buffer property" command. - - - - - - - - Add a "set global shader color property" command. - - - - - - - - Add a "set global shader color property" command. - - - - - - - - Add a command to set global depth bias. - - Constant depth bias. - Slope-dependent depth bias. - - - - Add a "set global shader float property" command. - - - - - - - - Add a "set global shader float property" command. - - - - - - - - Add a "set global shader float array property" command. - - - - - - - - Add a "set global shader float array property" command. - - - - - - - - Add a "set global shader float array property" command. - - - - - - - - Add a "set global shader float array property" command. - - - - - - - - Sets the given global integer property for all shaders. - - - - - - - - Sets the given global integer property for all shaders. - - - - - - - - Add a "set global shader matrix property" command. - - - - - - - - Add a "set global shader matrix property" command. - - - - - - - - Add a "set global shader matrix array property" command. - - - - - - - - Add a "set global shader matrix array property" command. - - - - - - - - Add a "set global shader matrix array property" command. - - - - - - - - Add a "set global shader matrix array property" command. - - - - - - - - Add a "set global shader texture property" command, referencing a RenderTexture. - - - - - - - - Add a "set global shader texture property" command, referencing a RenderTexture. - - - - - - - - Add a "set global shader vector property" command. - - - - - - - - Add a "set global shader vector property" command. - - - - - - - - Add a "set global shader vector array property" command. - - - - - - - - Add a "set global shader vector array property" command. - - - - - - - - Add a "set global shader vector array property" command. - - - - - - - - Add a "set global shader vector array property" command. - - - - - - - - Add a "set invert culling" command to the buffer. - - A boolean indicating whether to invert the backface culling (true) or not (false). - - - - Add a command to set the projection matrix. - - Projection (camera to clip space) matrix. - - - - Set random write target for level pixel shaders. - - Index of the random write target in the shader. - ComputeBuffer to set as write targe. - Whether to leave the append/consume counter value unchanged. - RenderTargetIdentifier to set as write target. - - - - Set random write target for level pixel shaders. - - Index of the random write target in the shader. - ComputeBuffer to set as write targe. - Whether to leave the append/consume counter value unchanged. - RenderTargetIdentifier to set as write target. - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set active render target" command. - - Render target to set for both color & depth buffers. - Render target to set as a color buffer. - Render targets to set as color buffers (MRT). - Render target to set as a depth buffer. - The mip level of the render target to render into. - The cubemap face of a cubemap render target to render into. - Slice of a 3D or array render target to set. - Load action that is used for color and depth/stencil buffers. - Store action that is used for color and depth/stencil buffers. - Load action that is used for the color buffer. - Store action that is used for the color buffer. - Load action that is used for the depth/stencil buffer. - Store action that is used for the depth/stencil buffer. - - - - - Add a "set shadow sampling mode" command. - - Shadowmap render target to change the sampling mode on. - New sampling mode. - - - - Add a command to set the view matrix. - - View (world to camera space) matrix. - - - - Add a command to set the rendering viewport. - - Viewport rectangle in pixel coordinates. - - - - Add a command to set the view and projection matrices. - - View (world to camera space) matrix. - Projection (camera to clip space) matrix. - - - - Instructs the GPU to wait until the given GPUFence is passed. - - The GPUFence that the GPU will be instructed to wait upon. - On some platforms there is a significant gap between the vertex processing completing and the pixel processing completing for a given draw call. This parameter allows for requested wait to be before the next items vertex or pixel processing begins. Some platforms can not differentiate between the start of vertex and pixel processing, these platforms will wait before the next items vertex processing. If a compute shader dispatch is the next item to be submitted then this parameter is ignored. - - - - Depth or stencil comparison function. - - - - - Always pass depth or stencil test. - - - - - Depth or stencil test is disabled. - - - - - Pass depth or stencil test when values are equal. - - - - - Pass depth or stencil test when new value is greater than old one. - - - - - Pass depth or stencil test when new value is greater or equal than old one. - - - - - Pass depth or stencil test when new value is less than old one. - - - - - Pass depth or stencil test when new value is less or equal than old one. - - - - - Never pass depth or stencil test. - - - - - Pass depth or stencil test when values are different. - - - - - Describes the desired characteristics with respect to prioritisation and load balancing of the queue that a command buffer being submitted via Graphics.ExecuteCommandBufferAsync or [[ScriptableRenderContext.ExecuteCommandBufferAsync] should be sent to. - - - - - Background queue types would be the choice for tasks intended to run for an extended period of time, e.g for most of a frame or for several frames. Dispatches on background queues would execute at a lower priority than gfx queue tasks. - - - - - This queue type would be the choice for compute tasks supporting or as optimisations to graphics processing. CommandBuffers sent to this queue would be expected to complete within the scope of a single frame and likely be synchronised with the graphics queue via GPUFence’s. Dispatches on default queue types would execute at a lower priority than graphics queue tasks. - - - - - This queue type would be the choice for compute tasks requiring processing as soon as possible and would be prioritised over the graphics queue. - - - - - Support for various Graphics.CopyTexture cases. - - - - - Basic Graphics.CopyTexture support. - - - - - Support for Texture3D in Graphics.CopyTexture. - - - - - Support for Graphics.CopyTexture between different texture types. - - - - - No support for Graphics.CopyTexture. - - - - - Support for RenderTexture to Texture copies in Graphics.CopyTexture. - - - - - Support for Texture to RenderTexture copies in Graphics.CopyTexture. - - - - - Backface culling mode. - - - - - Cull back-facing geometry. - - - - - Cull front-facing geometry. - - - - - Disable culling. - - - - - Default reflection mode. - - - - - Custom default reflection. - - - - - Skybox-based default reflection. - - - - - Used to manage synchronisation between tasks on async compute queues and the graphics queue. - - - - - Has the GPUFence passed? - -Allows for CPU determination of whether the GPU has passed the point in its processing represented by the GPUFence. - - - - - Graphics device API type. - - - - - Direct3D 11 graphics API. - - - - - Direct3D 12 graphics API. - - - - - Direct3D 9 graphics API. - - - - - iOS Metal graphics API. - - - - - Nintendo 3DS graphics API. - - - - - No graphics API. - - - - - OpenGL 2.x graphics API. (deprecated, only available on Linux and MacOSX) - - - - - OpenGL (Core profile - GL3 or later) graphics API. - - - - - OpenGL ES 2.0 graphics API. - - - - - OpenGL ES 3.0 graphics API. - - - - - PlayStation 3 graphics API. - - - - - PlayStation 4 graphics API. - - - - - PlayStation Mobile (PSM) graphics API. - - - - - Nintendo Switch graphics API. - - - - - Vulkan (EXPERIMENTAL). - - - - - Xbox One graphics API using Direct3D 11. - - - - - Xbox One graphics API using Direct3D 12. - - - - - Script interface for. - - - - - Whether to use a Light's color temperature when calculating the final color of that Light." - - - - - If this is true, Light intensity is multiplied against linear color values. If it is false, gamma color values are used. - - - - - The RenderPipelineAsset that describes how the Scene should be rendered. - - - - - An axis that describes the direction along which the distances of objects are measured for the purpose of sorting. - - - - - Transparent object sorting mode. - - - - - Enable/Disable SRP batcher (experimental) at runtime. - - - - - Get custom shader used instead of a built-in shader. - - Built-in shader type to query custom shader for. - - The shader used. - - - - - Get built-in shader mode. - - Built-in shader type to query. - - Mode used for built-in shader. - - - - - Returns true if shader define was set when compiling shaders for current GraphicsTier. - - - - - - - Returns true if shader define was set when compiling shaders for given tier. - - - - - - Set custom shader to use instead of a built-in shader. - - Built-in shader type to set custom shader to. - The shader to use. - - - - Set built-in shader mode. - - Built-in shader type to change. - Mode to use for built-in shader. - - - - Graphics Tier. -See Also: Graphics.activeTier. - - - - - The first graphics tier (Low) - corresponds to shader define UNITY_HARDWARE_TIER1. - - - - - The second graphics tier (Medium) - corresponds to shader define UNITY_HARDWARE_TIER2. - - - - - The third graphics tier (High) - corresponds to shader define UNITY_HARDWARE_TIER3. - - - - - Format of the mesh index buffer data. - - - - - 16 bit mesh index buffer format. - - - - - 32 bit mesh index buffer format. - - - - - Defines a place in light's rendering to attach Rendering.CommandBuffer objects to. - - - - - After directional light screenspace shadow mask is computed. - - - - - After shadowmap is rendered. - - - - - After shadowmap pass is rendered. - - - - - Before directional light screenspace shadow mask is computed. - - - - - Before shadowmap is rendered. - - - - - Before shadowmap pass is rendered. - - - - - Light probe interpolation type. - - - - - Simple light probe interpolation is used. - - - - - The light probe shader uniform values are extracted from the material property block set on the renderer. - - - - - Light Probes are not used. The Scene's ambient probe is provided to the shader. - - - - - Uses a 3D grid of interpolated light probes. - - - - - Shadow resolution options for a Light. - - - - - Use resolution from QualitySettings (default). - - - - - High shadow map resolution. - - - - - Low shadow map resolution. - - - - - Medium shadow map resolution. - - - - - Very high shadow map resolution. - - - - - Opaque object sorting mode of a Camera. - - - - - Default opaque sorting mode. - - - - - Do rough front-to-back sorting of opaque objects. - - - - - Do not sort opaque objects by distance. - - - - - Shader pass type for Unity's lighting pipeline. - - - - - Deferred Shading shader pass. - - - - - Forward rendering additive pixel light pass. - - - - - Forward rendering base pass. - - - - - Legacy deferred lighting (light pre-pass) base pass. - - - - - Legacy deferred lighting (light pre-pass) final pass. - - - - - Shader pass used to generate the albedo and emissive values used as input to lightmapping. - - - - - Motion vector render pass. - - - - - Regular shader pass that does not interact with lighting. - - - - - Custom scriptable pipeline. - - - - - Custom scriptable pipeline when lightmode is set to default unlit or no light mode is set. - - - - - Shadow caster & depth texure shader pass. - - - - - Legacy vertex-lit shader pass. - - - - - Legacy vertex-lit shader pass, with mobile lightmaps. - - - - - Legacy vertex-lit shader pass, with desktop (RGBM) lightmaps. - - - - - A collection of Rendering.ShaderKeyword that represents a specific platform variant. - - - - - Disable a specific shader keyword. - - - - - Enable a specific shader keyword. - - - - - Check whether a specific shader keyword is enabled. - - - - - - How much CPU usage to assign to the final lighting calculations at runtime. - - - - - 75% of the allowed CPU threads are used as worker threads. - - - - - 25% of the allowed CPU threads are used as worker threads. - - - - - 50% of the allowed CPU threads are used as worker threads. - - - - - 100% of the allowed CPU threads are used as worker threads. - - - - - Determines how Unity will compress baked reflection cubemap. - - - - - Baked Reflection cubemap will be compressed if compression format is suitable. - - - - - Baked Reflection cubemap will be compressed. - - - - - Baked Reflection cubemap will be left uncompressed. - - - - - ReflectionProbeBlendInfo contains information required for blending probes. - - - - - Reflection Probe used in blending. - - - - - Specifies the weight used in the interpolation between two probes, value varies from 0.0 to 1.0. - - - - - Values for ReflectionProbe.clearFlags, determining what to clear when rendering a ReflectionProbe. - - - - - Clear with the skybox. - - - - - Clear with a background color. - - - - - Reflection probe's update mode. - - - - - Reflection probe is baked in the Editor. - - - - - Reflection probe uses a custom texture specified by the user. - - - - - Reflection probe is updating in realtime. - - - - - An enum describing the way a realtime reflection probe refreshes in the Player. - - - - - Causes Unity to update the probe's cubemap every frame. -Note that updating a probe is very costly. Setting this option on too many probes could have a significant negative effect on frame rate. Use time-slicing to help improve performance. - -See Also: ReflectionProbeTimeSlicingMode. - - - - - Causes the probe to update only on the first frame it becomes visible. The probe will no longer update automatically, however you may subsequently use RenderProbe to refresh the probe - -See Also: ReflectionProbe.RenderProbe. - - - - - Sets the probe to never be automatically updated by Unity while your game is running. Use this to completely control the probe refresh behavior by script. - -See Also: ReflectionProbe.RenderProbe. - - - - - When a probe's ReflectionProbe.refreshMode is set to ReflectionProbeRefreshMode.EveryFrame, this enum specify whether or not Unity should update the probe's cubemap over several frames or update the whole cubemap in one frame. -Updating a probe's cubemap is a costly operation. Unity needs to render the entire Scene for each face of the cubemap, as well as perform special blurring in order to get glossy reflections. The impact on frame rate can be significant. Time-slicing helps maintaning a more constant frame rate during these updates by performing the rendering over several frames. - - - - - Instructs Unity to use time-slicing by first rendering all faces at once, then spreading the remaining work over the next 8 frames. Using this option, updating the probe will take 9 frames. - - - - - Instructs Unity to spread the rendering of each face over several frames. Using this option, updating the cubemap will take 14 frames. This option greatly reduces the impact on frame rate, however it may produce incorrect results, especially in Scenes where lighting conditions change over these 14 frames. - - - - - Unity will render the probe entirely in one frame. - - - - - Reflection Probe usage. - - - - - Reflection probes are enabled. Blending occurs only between probes, useful in indoor environments. The renderer will use default reflection if there are no reflection probes nearby, but no blending between default reflection and probe will occur. - - - - - Reflection probes are enabled. Blending occurs between probes or probes and default reflection, useful for outdoor environments. - - - - - Reflection probes are disabled, skybox will be used for reflection. - - - - - Reflection probes are enabled, but no blending will occur between probes when there are two overlapping volumes. - - - - - This enum describes what should be done on the render target when it is activated (loaded). - - - - - Upon activating the render buffer, clear its contents. Currently only works together with the RenderPass API. - - - - - When this RenderBuffer is activated, the GPU is instructed not to care about the existing contents of that RenderBuffer. On tile-based GPUs this means that the RenderBuffer contents do not need to be loaded into the tile memory, providing a performance boost. - - - - - When this RenderBuffer is activated, preserve the existing contents of it. This setting is expensive on tile-based GPUs and should be avoided whenever possible. - - - - - This enum describes what should be done on the render target when the GPU is done rendering into it. - - - - - The contents of the RenderBuffer are not needed and can be discarded. Tile-based GPUs will skip writing out the surface contents altogether, providing performance boost. - - - - - Resolve the (MSAA'd) surface. Currently only used with the RenderPass API. - - - - - The RenderBuffer contents need to be stored to RAM. If the surface has MSAA enabled, this stores the non-resolved surface. - - - - - Resolve the (MSAA'd) surface, but also store the multisampled version. Currently only used with the RenderPass API. - - - - - Determine in which order objects are renderered. - - - - - Alpha tested geometry uses this queue. - - - - - This render queue is rendered before any others. - - - - - Opaque geometry uses this queue. - - - - - Last render queue that is considered "opaque". - - - - - This render queue is meant for overlay effects. - - - - - This render queue is rendered after Geometry and AlphaTest, in back-to-front order. - - - - - Describes a render target with one or more color buffers, a depthstencil buffer and the associated loadstore-actions that are applied when the render target is active. - - - - - Load actions for color buffers. - - - - - Color buffers to use as render targets. - - - - - Store actions for color buffers. - - - - - Load action for the depth/stencil buffer. - - - - - Depth/stencil buffer to use as render target. - - - - - Store action for the depth/stencil buffer. - - - - - Constructs RenderTargetBinding. - - Color buffers to use as render targets. - Depth buffer to use as render target. - Load actions for color buffers. - Store actions for color buffers. - Load action for the depth/stencil buffer. - Store action for the depth/stencil buffer. - - - - - - - - - - Constructs RenderTargetBinding. - - Color buffers to use as render targets. - Depth buffer to use as render target. - Load actions for color buffers. - Store actions for color buffers. - Load action for the depth/stencil buffer. - Store action for the depth/stencil buffer. - - - - - - - - - - Constructs RenderTargetBinding. - - Color buffers to use as render targets. - Depth buffer to use as render target. - Load actions for color buffers. - Store actions for color buffers. - Load action for the depth/stencil buffer. - Store action for the depth/stencil buffer. - - - - - - - - - - Identifies a RenderTexture for a Rendering.CommandBuffer. - - - - - Creates a render target identifier. - - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - RenderTexture or Texture object to use. - MipLevel of the RenderTexture to use. - Cubemap face of the Cubemap RenderTexture to use. - Depth slice of the Array RenderTexture to use. - An existing render target identifier. - - - - - Creates a render target identifier. - - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - RenderTexture or Texture object to use. - MipLevel of the RenderTexture to use. - Cubemap face of the Cubemap RenderTexture to use. - Depth slice of the Array RenderTexture to use. - An existing render target identifier. - - - - - Creates a render target identifier. - - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - RenderTexture or Texture object to use. - MipLevel of the RenderTexture to use. - Cubemap face of the Cubemap RenderTexture to use. - Depth slice of the Array RenderTexture to use. - An existing render target identifier. - - - - - Creates a render target identifier. - - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - RenderTexture or Texture object to use. - MipLevel of the RenderTexture to use. - Cubemap face of the Cubemap RenderTexture to use. - Depth slice of the Array RenderTexture to use. - An existing render target identifier. - - - - - Creates a render target identifier. - - Built-in temporary render texture type. - Temporary render texture name. - Temporary render texture name (as integer, see Shader.PropertyToID). - RenderTexture or Texture object to use. - MipLevel of the RenderTexture to use. - Cubemap face of the Cubemap RenderTexture to use. - Depth slice of the Array RenderTexture to use. - An existing render target identifier. - - - - - Identifier of a specific code path in a shader. - - - - - Initializes a new instance of the ShaderKeyword class from a shader keyword name. - - - - - - Returns the string name of the keyword. - - - - - Returns the keyword kind: built-in or user defined. - - - - - Returns true if the keyword has been imported by Unity. - - - - - A collection of Rendering.ShaderKeyword that represents a specific shader variant. - - - - - Disable a specific shader keyword. - - - - - - Enable a specific shader keyword. - - - - - - Return an array with all the enabled keywords in the ShaderKeywordSet. - - - - - Check whether a specific shader keyword is enabled. - - - - - - Type of a shader keyword, eg: built-in or user defined. - - - - - The keyword is built-in the runtime and can be automatically stripped if unusued. - - - - - The keyword is built-in the runtime and it is systematically reserved. - - - - - The keyword is built-in the runtime and it is optionally reserved depending on the features used. - - - - - No type is assigned. - - - - - The keyword is defined by the user. - - - - - How shadows are cast from this object. - - - - - No shadows are cast from this object. - - - - - Shadows are cast from this object. - - - - - Object casts shadows, but is otherwise invisible in the Scene. - - - - - Shadows are cast from this object, treating it as two-sided. - - - - - Allows precise control over which shadow map passes to execute Rendering.CommandBuffer objects attached using Light.AddCommandBuffer. - - - - - All shadow map passes. - - - - - All directional shadow map passes. - - - - - First directional shadow map cascade. - - - - - Second directional shadow map cascade. - - - - - Third directional shadow map cascade. - - - - - Fourth directional shadow map cascade. - - - - - All point light shadow passes. - - - - - -X point light shadow cubemap face. - - - - - -Y point light shadow cubemap face. - - - - - -Z point light shadow cubemap face. - - - - - +X point light shadow cubemap face. - - - - - +Y point light shadow cubemap face. - - - - - +Z point light shadow cubemap face. - - - - - Spotlight shadow pass. - - - - - Used by CommandBuffer.SetShadowSamplingMode. - - - - - Default shadow sampling mode: sampling with a comparison filter. - - - - - In ShadowSamplingMode.None, depths are not compared. Use this value if a Texture is not a shadowmap. - - - - - Shadow sampling mode for sampling the depth value. - - - - - Adding a SortingGroup component to a GameObject will ensure that all Renderers within the GameObject's descendants will be sorted and rendered together. - - - - - Unique ID of the Renderer's sorting layer. - - - - - Name of the Renderer's sorting layer. - - - - - Renderer's order within a sorting layer. - - - - - Spherical harmonics up to the second order (3 bands, 9 coefficients). - - - - - Add ambient lighting to probe data. - - - - - - Add directional light to probe data. - - - - - - - - Clears SH probe to zero. - - - - - Evaluates the Spherical Harmonics for each of the given directions. The result from the first direction is written into the first element of results, the result from the second direction is written into the second element of results, and so on. The array size of directions and results must match and directions must be normalized. - - Normalized directions for which the spherical harmonics are to be evaluated. - Output array for the evaluated values of the corresponding directions. - - - - Returns true if SH probes are equal. - - - - - - - Scales SH by a given factor. - - - - - - - Scales SH by a given factor. - - - - - - - Returns true if SH probes are different. - - - - - - - Adds two SH probes. - - - - - - - Access individual SH coefficients. - - - - - Provides an interface to the Unity splash screen. - - - - - Returns true once the splash screen as finished. This is once all logos have been shown for their specified duration. - - - - - Initializes the splash screen so it is ready to begin drawing. Call this before you start calling Rendering.SplashScreen.Draw. Internally this function resets the timer and prepares the logos for drawing. - - - - - Immediately draws the splash screen. Ensure you have called Rendering.SplashScreen.Begin before you start calling this. - - - - - Specifies the operation that's performed on the stencil buffer when rendering. - - - - - Decrements the current stencil buffer value. Clamps to 0. - - - - - Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable unsigned value when decrementing a stencil buffer value of zero. - - - - - Increments the current stencil buffer value. Clamps to the maximum representable unsigned value. - - - - - Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing the maximum representable unsigned value. - - - - - Bitwise inverts the current stencil buffer value. - - - - - Keeps the current stencil value. - - - - - Replace the stencil buffer value with reference value (specified in the shader). - - - - - Sets the stencil buffer value to zero. - - - - - Broadly describes the stages of processing a draw call on the GPU. - - - - - The process of creating and shading the fragments. - - - - - All aspects of vertex processing. - - - - - Texture "dimension" (type). - - - - - Any texture type. - - - - - Cubemap texture. - - - - - Cubemap array texture (CubemapArray). - - - - - No texture is assigned. - - - - - 2D texture (Texture2D). - - - - - 2D array texture (Texture2DArray). - - - - - 3D volume texture (Texture3D). - - - - - Texture type is not initialized or unknown. - - - - - A flag representing each UV channel. - - - - - First UV channel. - - - - - Second UV channel. - - - - - Third UV channel. - - - - - Fourth UV channel. - - - - - A list of data channels that describe a vertex in a mesh. - - - - - Blend indices for skinned meshes. The common format is Int. - - - - - Blend weights for skinned meshes. The common format is Float. - - - - - The color channel. - - - - - The normal channel. The common format is Vector3. - - - - - The position channel. The common format is Vector3. - - - - - The tangent channel. The common format is Vector4. - - - - - The primary UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Additional UV channel. The common format is Vector2. - - - - - Rendering path of a Camera. - - - - - Deferred Lighting (Legacy). - - - - - Deferred Shading. - - - - - Forward Rendering. - - - - - Use Player Settings. - - - - - Vertex Lit. - - - - - RenderMode for the Canvas. - - - - - Render using the Camera configured on the Canvas. - - - - - Render at the end of the Scene using a 2D Canvas. - - - - - Render using any Camera in the Scene that can render the layer. - - - - - The Render Settings contain values for a range of visual elements in your Scene, like fog and ambient light. - - - - - Ambient lighting coming from the sides. - - - - - Ambient lighting coming from below. - - - - - How much the light from the Ambient Source affects the Scene. - - - - - Flat ambient lighting color. - - - - - Ambient lighting mode. - - - - - Custom or skybox ambient lighting data. - - - - - Ambient lighting coming from above. - - - - - Custom specular reflection cubemap. - - - - - Default reflection mode. - - - - - Cubemap resolution for default reflection. - - - - - The fade speed of all flares in the Scene. - - - - - The intensity of all flares in the Scene. - - - - - Is fog enabled? - - - - - The color of the fog. - - - - - The density of the exponential fog. - - - - - The ending distance of linear fog. - - - - - Fog mode to use. - - - - - The starting distance of linear fog. - - - - - Size of the Light halos. - - - - - The number of times a reflection includes other reflections. - - - - - How much the skybox / custom cubemap reflection affects the Scene. - - - - - The global skybox to use. - - - - - The color used for the sun shadows in the Subtractive lightmode. - - - - - The light used by the procedural skybox. - - - - - Fully describes setup of RenderTarget. - - - - - Color Buffers to set. - - - - - Load Actions for Color Buffers. It will override any actions set on RenderBuffers themselves. - - - - - Store Actions for Color Buffers. It will override any actions set on RenderBuffers themselves. - - - - - Cubemap face to render to. - - - - - Depth Buffer to set. - - - - - Load Action for Depth Buffer. It will override any actions set on RenderBuffer itself. - - - - - Slice of a Texture3D or Texture2DArray to set as a render target. - - - - - Store Actions for Depth Buffer. It will override any actions set on RenderBuffer itself. - - - - - Mip Level to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Constructs RenderTargetSetup. - - Color Buffer(s) to set. - Depth Buffer to set. - Mip Level to render to. - Cubemap face to render to. - - - - - Render textures are textures that can be rendered to. - - - - - Currently active render texture. - - - - - The antialiasing level for the RenderTexture. - - - - - Mipmap levels are generated automatically when this flag is set. - - - - - If true and antiAliasing is greater than 1, the render texture will not be resolved by default. Use this if the render texture needs to be bound as a multisampled texture in a shader. - - - - - Color buffer of the render texture (Read Only). - - - - - The precision of the render texture's depth buffer in bits (0, 16, 24/32 are supported). - - - - - Depth/stencil buffer of the render texture (Read Only). - - - - - This struct contains all the information required to create a RenderTexture. It can be copied, cached, and reused to easily create RenderTextures that all share the same properties. - - - - - Dimensionality (type) of the render texture. - - - - - Enable random access write into this render texture on Shader Model 5.0 level shaders. - - - - - The color format of the render texture. - - - - - The height of the render texture in pixels. - - - - - If enabled, this Render Texture will be used as a Texture3D. - - - - - The render texture memoryless mode property. - - - - - Does this render texture use sRGB read/write conversions? (Read Only). - - - - - Is the render texture marked to be scaled by the Dynamic Resolution system. - - - - - Render texture has mipmaps when this flag is set. - - - - - Volume extent of a 3D render texture or number of slices of array texture. - - - - - If this RenderTexture is a VR eye texture used in stereoscopic rendering, this property decides what special rendering occurs, if any. - - - - - The width of the render texture in pixels. - - - - - Converts the render texture to equirectangular format (both stereoscopic or monoscopic equirect). -The left eye will occupy the top half and the right eye will occupy the bottom. The monoscopic version will occupy the whole texture. -Texture dimension must be of type TextureDimension.Cube. - - RenderTexture to render the equirect format to. - A Camera eye corresponding to the left or right eye for stereoscopic rendering, or neither for monoscopic rendering. - - - - Actually creates the RenderTexture. - - - True if the texture is created, else false. - - - - - Creates a new RenderTexture object. - - Texture width in pixels. - Texture height in pixels. - Number of bits in depth buffer (0, 16 or 24). Note that only 24 bit depth has stencil buffer. - Texture color format. - How or if color space conversions should be done on texture read/write. - Create the RenderTexture with the settings in the RenderTextureDescriptor. - Copy the settings from another RenderTexture. - - - - Creates a new RenderTexture object. - - Texture width in pixels. - Texture height in pixels. - Number of bits in depth buffer (0, 16 or 24). Note that only 24 bit depth has stencil buffer. - Texture color format. - How or if color space conversions should be done on texture read/write. - Create the RenderTexture with the settings in the RenderTextureDescriptor. - Copy the settings from another RenderTexture. - - - - Creates a new RenderTexture object. - - Texture width in pixels. - Texture height in pixels. - Number of bits in depth buffer (0, 16 or 24). Note that only 24 bit depth has stencil buffer. - Texture color format. - How or if color space conversions should be done on texture read/write. - Create the RenderTexture with the settings in the RenderTextureDescriptor. - Copy the settings from another RenderTexture. - - - - Hint the GPU driver that the contents of the RenderTexture will not be used. - - Should the colour buffer be discarded? - Should the depth buffer be discarded? - - - - Hint the GPU driver that the contents of the RenderTexture will not be used. - - Should the colour buffer be discarded? - Should the depth buffer be discarded? - - - - Generate mipmap levels of a render texture. - - - - - Retrieve a native (underlying graphics API) pointer to the depth buffer resource. - - - Pointer to an underlying graphics API depth buffer resource. - - - - - Allocate a temporary render texture. - - Width in pixels. - Height in pixels. - Depth buffer bits (0, 16 or 24). Note that only 24 bit depth has stencil buffer. - Render texture format. - Color space conversion mode. - Number of antialiasing samples to store in the texture. Valid values are 1, 2, 4, and 8. Throws an exception if any other value is passed. - Render texture memoryless mode. - Use this RenderTextureDesc for the settings when creating the temporary RenderTexture. - - - - - - Allocate a temporary render texture. - - Width in pixels. - Height in pixels. - Depth buffer bits (0, 16 or 24). Note that only 24 bit depth has stencil buffer. - Render texture format. - Color space conversion mode. - Number of antialiasing samples to store in the texture. Valid values are 1, 2, 4, and 8. Throws an exception if any other value is passed. - Render texture memoryless mode. - Use this RenderTextureDesc for the settings when creating the temporary RenderTexture. - - - - - - Is the render texture actually created? - - - - - Indicate that there's a RenderTexture restore operation expected. - - - - - Releases the RenderTexture. - - - - - Release a temporary texture allocated with GetTemporary. - - - - - - Force an antialiased render texture to be resolved. - - The render texture to resolve into. If set, the target render texture must have the same dimensions and format as the source. - - - - Force an antialiased render texture to be resolved. - - The render texture to resolve into. If set, the target render texture must have the same dimensions and format as the source. - - - - Assigns this RenderTexture as a global shader property named propertyName. - - - - - - Does a RenderTexture have stencil buffer? - - Render texture, or null for main screen. - - - - Set of flags that control the state of a newly-created RenderTexture. - - - - - Clear this flag when a RenderTexture is a VR eye texture and the device does not automatically flip the texture when being displayed. This is platform specific and -It is set by default. This flag is only cleared when part of a RenderTextureDesc that is returned from GetDefaultVREyeTextureDesc or other VR functions that return a RenderTextureDesc. Currently, only Hololens eye textures need to clear this flag. - - - - - Determines whether or not mipmaps are automatically generated when the RenderTexture is modified. -This flag is set by default, and has no effect if the RenderTextureCreationFlags.MipMap flag is not also set. -See RenderTexture.autoGenerateMips for more details. - - - - - Setting this flag causes the RenderTexture to be bound as a multisampled texture in a shader. The flag prevents the RenderTexture from being resolved by default when RenderTexture.antiAliasing is greater than 1. - - - - - This flag is always set internally when a RenderTexture is created from script. It has no effect when set manually from script code. - - - - - Set this flag to mark this RenderTexture for Dynamic Resolution should the target platform/graphics API support Dynamic Resolution. See ScalabeBufferManager for more details. - - - - - Set this flag to enable random access writes to the RenderTexture from shaders. -Normally, pixel shaders only operate on pixels they are given. Compute shaders cannot write to textures without this flag. Random write enables shaders to write to arbitrary locations on a RenderTexture. See RenderTexture.enableRandomWrite for more details, including supported platforms. - - - - - Set this flag when the Texture is to be used as a VR eye texture. This flag is cleared by default. This flag is set on a RenderTextureDesc when it is returned from GetDefaultVREyeTextureDesc or other VR functions returning a RenderTextureDesc. - - - - - Set this flag to allocate mipmaps in the RenderTexture. See RenderTexture.useMipMap for more details. - - - - - When this flag is set, the engine will not automatically resolve the color surface. - - - - - When this flag is set, reads and writes to this texture are converted to SRGB color space. See RenderTexture.sRGB for more details. - - - - - This struct contains all the information required to create a RenderTexture. It can be copied, cached, and reused to easily create RenderTextures that all share the same properties. - - - - - Mipmap levels are generated automatically when this flag is set. - - - - - If true and msaaSamples is greater than 1, the render texture will not be resolved by default. Use this if the render texture needs to be bound as a multisampled texture in a shader. - - - - - The color format for the RenderTexture. - - - - - The precision of the render texture's depth buffer in bits (0, 16, 24/32 are supported). - -See RenderTexture.depth. - - - - - Dimensionality (type) of the render texture. - -See RenderTexture.dimension. - - - - - Enable random access write into this render texture on Shader Model 5.0 level shaders. - -See RenderTexture.enableRandomWrite. - - - - - A set of RenderTextureCreationFlags that control how the texture is created. - - - - - The height of the render texture in pixels. - - - - - The render texture memoryless mode property. - - - - - The multisample antialiasing level for the RenderTexture. - -See RenderTexture.antiAliasing. - - - - - Determines how the RenderTexture is sampled if it is used as a shadow map. - -See ShadowSamplingMode for more details. - - - - - This flag causes the render texture uses sRGB read/write conversions. - - - - - Render texture has mipmaps when this flag is set. - -See RenderTexture.useMipMap. - - - - - Volume extent of a 3D render texture. - - - - - If this RenderTexture is a VR eye texture used in stereoscopic rendering, this property decides what special rendering occurs, if any. Instead of setting this manually, use the value returned by XR.XRSettings.eyeTextureDesc|eyeTextureDesc or other VR functions returning a RenderTextureDescriptor. - - - - - The width of the render texture in pixels. - - - - - Create a RenderTextureDescriptor with default values, or a certain width, height, and format. - - Width of the RenderTexture in pixels. - Height of the RenderTexture in pixels. - The color format for the RenderTexture. - The number of bits to use for the depth buffer. - - - - Create a RenderTextureDescriptor with default values, or a certain width, height, and format. - - Width of the RenderTexture in pixels. - Height of the RenderTexture in pixels. - The color format for the RenderTexture. - The number of bits to use for the depth buffer. - - - - Create a RenderTextureDescriptor with default values, or a certain width, height, and format. - - Width of the RenderTexture in pixels. - Height of the RenderTexture in pixels. - The color format for the RenderTexture. - The number of bits to use for the depth buffer. - - - - Format of a RenderTexture. - - - - - Color render texture format, 1 bit for Alpha channel, 5 bits for Red, Green and Blue channels. - - - - - Color render texture format. 10 bits for colors, 2 bits for alpha. - - - - - Color render texture format, 8 bits per channel. - - - - - Color render texture format, 4 bit per channel. - - - - - Four color render texture format, 16 bits per channel, fixed point, unsigned normalized. - - - - - Color render texture format, 32 bit floating point per channel. - - - - - Color render texture format, 16 bit floating point per channel. - - - - - Four channel (ARGB) render texture format, 32 bit signed integer per channel. - - - - - Color render texture format, 10 bit per channel, extended range. - - - - - Color render texture format, 10 bit per channel, extended range. - - - - - Color render texture format, 8 bits per channel. - - - - - Default color render texture format: will be chosen accordingly to Frame Buffer format and Platform. - - - - - Default HDR color render texture format: will be chosen accordingly to Frame Buffer format and Platform. - - - - - A depth render texture format. - - - - - Single channel (R) render texture format, 16 bit integer. - - - - - Single channel (R) render texture format, 8 bit integer. - - - - - Scalar (R) render texture format, 32 bit floating point. - - - - - Two channel (RG) render texture format, 8 bits per channel. - - - - - Two color (RG) render texture format, 16 bits per channel, fixed point, unsigned normalized. - - - - - Color render texture format. R and G channels are 11 bit floating point, B channel is 10 bit floating point. - - - - - Color render texture format. - - - - - Four channel (RGBA) render texture format, 16 bit unsigned integer per channel. - - - - - Two color (RG) render texture format, 32 bit floating point per channel. - - - - - Two color (RG) render texture format, 16 bit floating point per channel. - - - - - Two channel (RG) render texture format, 32 bit signed integer per channel. - - - - - Scalar (R) render texture format, 16 bit floating point. - - - - - Scalar (R) render texture format, 32 bit signed integer. - - - - - A native shadowmap render texture format. - - - - - Flags enumeration of the render texture memoryless modes. - - - - - Render texture color pixels are memoryless when RenderTexture.antiAliasing is set to 1. - - - - - Render texture depth pixels are memoryless. - - - - - Render texture color pixels are memoryless when RenderTexture.antiAliasing is set to 2, 4 or 8. - - - - - The render texture is not memoryless. - - - - - Color space conversion mode of a RenderTexture. - - - - - Render texture contains sRGB (color) data, perform Linear<->sRGB conversions on it. - - - - - Default color space conversion based on project settings. - - - - - Render texture contains linear (non-color) data; don't perform color conversions on it. - - - - - The RequireComponent attribute automatically adds required components as dependencies. - - - - - Require a single component. - - - - - - Require two components. - - - - - - - Require three components. - - - - - - - - Represents a display resolution. - - - - - Resolution height in pixels. - - - - - Resolution's vertical refresh rate in Hz. - - - - - Resolution width in pixels. - - - - - Returns a nicely formatted string of the resolution. - - - A string with the format "width x height @ refreshRateHz". - - - - - Asynchronous load request from the Resources bundle. - - - - - Asset object being loaded (Read Only). - - - - - The Resources class allows you to find and access Objects including assets. - - - - - Returns a list of all objects of Type type. - - Type of the class to match while searching. - - An array of objects whose class is type or is derived from type. - - - - - Returns a list of all objects of Type T. - - - - - Loads an asset stored at path in a folder called Resources. - - Pathname of the target folder. - - The requested asset returned as a Type. - - - - - Loads an asset stored at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - The requested asset returned as an Object. - - - - - Loads an asset stored at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - The requested asset returned as an Object. - - - - - Loads all assets in a folder or file at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - - - Loads all assets in a folder or file at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - - - Loads all assets in a folder or file at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - - - - Returns a resource at an asset path (Editor Only). - - Pathname of the target asset. - Type filter for objects returned. - - - - Returns a resource at an asset path (Editor Only). - - Pathname of the target asset. - - - - Asynchronously loads an asset stored at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - - - - Asynchronously loads an asset stored at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - Type filter for objects returned. - - - - - Asynchronously loads an asset stored at path in a Resources folder. - - Pathname of the target folder. When using the empty string (i.e., ""), the function will load the entire contents of the Resources folder. - - - - Unloads assetToUnload from memory. - - - - - - Unloads assets that are not used. - - - Object on which you can yield to wait until the operation completes. - - - - - Control of an object's position through physics simulation. - - - - - The angular drag of the object. - - - - - The angular velocity vector of the rigidbody measured in radians per second. - - - - - The center of mass relative to the transform's origin. - - - - - The Rigidbody's collision detection mode. - - - - - Controls which degrees of freedom are allowed for the simulation of this Rigidbody. - - - - - Should collision detection be enabled? (By default always enabled). - - - - - The drag of the object. - - - - - Controls whether physics will change the rotation of the object. - - - - - The diagonal inertia tensor of mass relative to the center of mass. - - - - - The rotation of the inertia tensor. - - - - - Interpolation allows you to smooth out the effect of running physics at a fixed frame rate. - - - - - Controls whether physics affects the rigidbody. - - - - - The mass of the rigidbody. - - - - - The maximimum angular velocity of the rigidbody measured in radians per second. (Default 7) range { 0, infinity }. - - - - - Maximum velocity of a rigidbody when moving out of penetrating state. - - - - - The position of the rigidbody. - - - - - The rotation of the rigidbody. - - - - - The angular velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }. - - - - - The mass-normalized energy threshold, below which objects start going to sleep. - - - - - The linear velocity below which objects start going to sleep. (Default 0.14) range { 0, infinity }. - - - - - The solverIterations determines how accurately Rigidbody joints and collision contacts are resolved. Overrides Physics.defaultSolverIterations. Must be positive. - - - - - The solverVelocityIterations affects how how accurately Rigidbody joints and collision contacts are resolved. Overrides Physics.defaultSolverVelocityIterations. Must be positive. - - - - - Force cone friction to be used for this rigidbody. - - - - - Controls whether gravity affects this rigidbody. - - - - - The velocity vector of the rigidbody. - - - - - The center of mass of the rigidbody in world space (Read Only). - - - - - Applies a force to a rigidbody that simulates explosion effects. - - The force of the explosion (which may be modified by distance). - The centre of the sphere within which the explosion has its effect. - The radius of the sphere within which the explosion has its effect. - Adjustment to the apparent position of the explosion to make it seem to lift objects. - The method used to apply the force to its targets. - - - - Applies a force to a rigidbody that simulates explosion effects. - - The force of the explosion (which may be modified by distance). - The centre of the sphere within which the explosion has its effect. - The radius of the sphere within which the explosion has its effect. - Adjustment to the apparent position of the explosion to make it seem to lift objects. - The method used to apply the force to its targets. - - - - Applies a force to a rigidbody that simulates explosion effects. - - The force of the explosion (which may be modified by distance). - The centre of the sphere within which the explosion has its effect. - The radius of the sphere within which the explosion has its effect. - Adjustment to the apparent position of the explosion to make it seem to lift objects. - The method used to apply the force to its targets. - - - - Adds a force to the Rigidbody. - - Force vector in world coordinates. - Type of force to apply. - - - - Adds a force to the Rigidbody. - - Force vector in world coordinates. - Type of force to apply. - - - - Adds a force to the Rigidbody. - - Size of force along the world x-axis. - Size of force along the world y-axis. - Size of force along the world z-axis. - Type of force to apply. - - - - Adds a force to the Rigidbody. - - Size of force along the world x-axis. - Size of force along the world y-axis. - Size of force along the world z-axis. - Type of force to apply. - - - - Applies force at position. As a result this will apply a torque and force on the object. - - Force vector in world coordinates. - Position in world coordinates. - - - - - Applies force at position. As a result this will apply a torque and force on the object. - - Force vector in world coordinates. - Position in world coordinates. - - - - - Adds a force to the rigidbody relative to its coordinate system. - - Force vector in local coordinates. - - - - - Adds a force to the rigidbody relative to its coordinate system. - - Force vector in local coordinates. - - - - - Adds a force to the rigidbody relative to its coordinate system. - - Size of force along the local x-axis. - Size of force along the local y-axis. - Size of force along the local z-axis. - - - - - Adds a force to the rigidbody relative to its coordinate system. - - Size of force along the local x-axis. - Size of force along the local y-axis. - Size of force along the local z-axis. - - - - - Adds a torque to the rigidbody relative to its coordinate system. - - Torque vector in local coordinates. - - - - - Adds a torque to the rigidbody relative to its coordinate system. - - Torque vector in local coordinates. - - - - - Adds a torque to the rigidbody relative to its coordinate system. - - Size of torque along the local x-axis. - Size of torque along the local y-axis. - Size of torque along the local z-axis. - - - - - Adds a torque to the rigidbody relative to its coordinate system. - - Size of torque along the local x-axis. - Size of torque along the local y-axis. - Size of torque along the local z-axis. - - - - - Adds a torque to the rigidbody. - - Torque vector in world coordinates. - - - - - Adds a torque to the rigidbody. - - Torque vector in world coordinates. - - - - - Adds a torque to the rigidbody. - - Size of torque along the world x-axis. - Size of torque along the world y-axis. - Size of torque along the world z-axis. - - - - - Adds a torque to the rigidbody. - - Size of torque along the world x-axis. - Size of torque along the world y-axis. - Size of torque along the world z-axis. - - - - - The closest point to the bounding box of the attached colliders. - - - - - - The velocity of the rigidbody at the point worldPoint in global space. - - - - - - The velocity relative to the rigidbody at the point relativePoint. - - - - - - Is the rigidbody sleeping? - - - - - Moves the rigidbody to position. - - The new position for the Rigidbody object. - - - - Rotates the rigidbody to rotation. - - The new rotation for the Rigidbody. - - - - Reset the center of mass of the rigidbody. - - - - - Reset the inertia tensor value and rotation. - - - - - Sets the mass based on the attached colliders assuming a constant density. - - - - - - Forces a rigidbody to sleep at least one frame. - - - - - Tests if a rigidbody would collide with anything, if it was moved through the Scene. - - The direction into which to sweep the rigidbody. - If true is returned, hitInfo will contain more information about where the collider was hit (See Also: RaycastHit). - The length of the sweep. - Specifies whether this query should hit Triggers. - - True when the rigidbody sweep intersects any collider, otherwise false. - - - - - Like Rigidbody.SweepTest, but returns all hits. - - The direction into which to sweep the rigidbody. - The length of the sweep. - Specifies whether this query should hit Triggers. - - An array of all colliders hit in the sweep. - - - - - Forces a rigidbody to wake up. - - - - - Rigidbody physics component for 2D sprites. - - - - - Coefficient of angular drag. - - - - - Angular velocity in degrees per second. - - - - - Returns the number of Collider2D attached to this Rigidbody2D. - - - - - The physical behaviour type of the Rigidbody2D. - - - - - The center of mass of the rigidBody in local space. - - - - - The method used by the physics engine to check if two objects have collided. - - - - - Controls which degrees of freedom are allowed for the simulation of this Rigidbody2D. - - - - - Coefficient of drag. - - - - - Should the rigidbody be prevented from rotating? - - - - - Controls whether physics will change the rotation of the object. - - - - - The degree to which this object is affected by gravity. - - - - - The rigidBody rotational inertia. - - - - - Physics interpolation used between updates. - - - - - Should this rigidbody be taken out of physics control? - - - - - Mass of the Rigidbody. - - - - - The position of the rigidbody. - - - - - The rotation of the rigidbody. - - - - - The PhysicsMaterial2D that is applied to all Collider2D attached to this Rigidbody2D. - - - - - Indicates whether the rigid body should be simulated or not by the physics system. - - - - - The sleep state that the rigidbody will initially be in. - - - - - Should the total rigid-body mass be automatically calculated from the Collider2D.density of attached colliders? - - - - - Should kinematickinematic and kinematicstatic collisions be allowed? - - - - - Linear velocity of the rigidbody. - - - - - Gets the center of mass of the rigidBody in global space. - - - - - Apply a force to the rigidbody. - - Components of the force in the X and Y axes. - The method used to apply the specified force. - - - - Apply a force at a given position in space. - - Components of the force in the X and Y axes. - Position in world space to apply the force. - The method used to apply the specified force. - - - - Adds a force to the rigidbody2D relative to its coordinate system. - - Components of the force in the X and Y axes. - The method used to apply the specified force. - - - - Apply a torque at the rigidbody's centre of mass. - - Torque to apply. - The force mode to use. - - - - All the Collider2D shapes attached to the Rigidbody2D are cast into the Scene starting at each collider position ignoring the colliders attached to the same Rigidbody2D. - - Vector representing the direction to cast each Collider2D shape. - Array to receive results. - Maximum distance over which to cast the shape(s). - - The number of results returned. - - - - - All the Collider2D shapes attached to the Rigidbody2D are cast into the Scene starting at each collider position ignoring the colliders attached to the same Rigidbody2D. - - Vector representing the direction to cast each Collider2D shape. - Filter results defined by the contact filter. - Array to receive results. - Maximum distance over which to cast the shape(s). - - The number of results returned. - - - - - Calculates the minimum distance of this collider against all Collider2D attached to this Rigidbody2D. - - A collider used to calculate the minimum distance against all colliders attached to this Rigidbody2D. - - The minimum distance of collider against all colliders attached to this Rigidbody2D. - - - - - Returns all Collider2D that are attached to this Rigidbody2D. - - An array of Collider2D used to receive the results. - - Returns the number of Collider2D placed in the results array. - - - - - Retrieves all contact points for all of the collider(s) attached to this rigidbody. - - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with any of the collider(s) attached to this rigidbody. - - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Retrieves all contact points for all of the collider(s) attached to this rigidbody, with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of ContactPoint2D used to receive the results. - - Returns the number of contacts placed in the contacts array. - - - - - Retrieves all colliders in contact with any of the collider(s) attached to this rigidbody, with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - An array of Collider2D used to receive the results. - - Returns the number of colliders placed in the colliders array. - - - - - Get a local space point given the point point in rigidBody global space. - - The global space point to transform into local space. - - - - The velocity of the rigidbody at the point Point in global space. - - The global space point to calculate velocity for. - - - - Get a global space point given the point relativePoint in rigidBody local space. - - The local space point to transform into global space. - - - - The velocity of the rigidbody at the point Point in local space. - - The local space point to calculate velocity for. - - - - Get a global space vector given the vector relativeVector in rigidBody local space. - - The local space vector to transform into a global space vector. - - - - Get a local space vector given the vector vector in rigidBody global space. - - The global space vector to transform into a local space vector. - - - - Is the rigidbody "awake"? - - - - - Is the rigidbody "sleeping"? - - - - - Checks whether the collider is touching any of the collider(s) attached to this rigidbody or not. - - The collider to check if it is touching any of the collider(s) attached to this rigidbody. - - Whether the collider is touching any of the collider(s) attached to this rigidbody or not. - - - - - Checks whether the collider is touching any of the collider(s) attached to this rigidbody or not with the results filtered by the ContactFilter2D. - - The collider to check if it is touching any of the collider(s) attached to this rigidbody. - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether the collider is touching any of the collider(s) attached to this rigidbody or not. - - - - - Checks whether any collider is touching any of the collider(s) attached to this rigidbody or not with the results filtered by the ContactFilter2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle. - - Whether any collider is touching any of the collider(s) attached to this rigidbody or not. - - - - - Checks whether any of the collider(s) attached to this rigidbody are touching any colliders on the specified layerMask or not. - - Any colliders on any of these layers count as touching. - - Whether any of the collider(s) attached to this rigidbody are touching any colliders on the specified layerMask or not. - - - - - Moves the rigidbody to position. - - The new position for the Rigidbody object. - - - - Rotates the rigidbody to angle (given in degrees). - - The new rotation angle for the Rigidbody object. - - - - Get a list of all colliders that overlap all colliders attached to this Rigidbody2D. - - The contact filter used to filter the results differently, such as by layer mask, Z depth. Note that normal angle is not used for overlap testing. - The array to receive results. The size of the array determines the maximum number of results that can be returned. - - Returns the number of results placed in the results array. - - - - - Check if any of the Rigidbody2D colliders overlap a point in space. - - A point in world space. - - Whether the point overlapped any of the Rigidbody2D colliders. - - - - - Make the rigidbody "sleep". - - - - - Disables the "sleeping" state of a rigidbody. - - - - - Use these flags to constrain motion of Rigidbodies. - - - - - Freeze rotation and motion along all axes. - - - - - Freeze motion along all axes. - - - - - Freeze motion along the X-axis. - - - - - Freeze motion along the Y-axis. - - - - - Freeze motion along the Z-axis. - - - - - Freeze rotation along all axes. - - - - - Freeze rotation along the X-axis. - - - - - Freeze rotation along the Y-axis. - - - - - Freeze rotation along the Z-axis. - - - - - No constraints. - - - - - Use these flags to constrain motion of the Rigidbody2D. - - - - - Freeze rotation and motion along all axes. - - - - - Freeze motion along the X-axis and Y-axis. - - - - - Freeze motion along the X-axis. - - - - - Freeze motion along the Y-axis. - - - - - Freeze rotation along the Z-axis. - - - - - No constraints. - - - - - Rigidbody interpolation mode. - - - - - Extrapolation will predict the position of the rigidbody based on the current velocity. - - - - - Interpolation will always lag a little bit behind but can be smoother than extrapolation. - - - - - No Interpolation. - - - - - Interpolation mode for Rigidbody2D objects. - - - - - Smooth an object's movement based on an estimate of its position in the next frame. - - - - - Smooth movement based on the object's positions in previous frames. - - - - - Do not apply any smoothing to the object's movement. - - - - - Settings for a Rigidbody2D's initial sleep state. - - - - - Rigidbody2D never automatically sleeps. - - - - - Rigidbody2D is initially asleep. - - - - - Rigidbody2D is initially awake. - - - - - The physical behaviour type of the Rigidbody2D. - - - - - Sets the Rigidbody2D to have dynamic behaviour. - - - - - Sets the Rigidbody2D to have kinematic behaviour. - - - - - Sets the Rigidbody2D to have static behaviour. - - - - - Control ConfigurableJoint's rotation with either X & YZ or Slerp Drive. - - - - - Use Slerp drive. - - - - - Use XY & Z Drive. - - - - - Attribute for setting up RPC functions. - - - - - Option for who will receive an RPC, used by NetworkView.RPC. - - - - - The runtime representation of the AnimatorController. Use this representation to change the Animator Controller during runtime. - - - - - Retrieves all AnimationClip used by the controller. - - - - - Set RuntimeInitializeOnLoadMethod type. - - - - - After Scene is loaded. - - - - - Before Scene is loaded. - - - - - Allow a runtime class method to be initialized when a game is loaded at runtime - without action from the user. - - - - - Set RuntimeInitializeOnLoadMethod type. - - - - - Creation of the runtime class used when Scenes are loaded. - - Determine whether methods are called before or after the - Scene is loaded. - - - - Creation of the runtime class used when Scenes are loaded. - - Determine whether methods are called before or after the - Scene is loaded. - - - - The platform application is running. Returned by Application.platform. - - - - - In the player on the Apple's tvOS. - - - - - In the player on Android devices. - - - - - In the player on the iPhone. - - - - - In the Unity editor on Linux. - - - - - In the player on Linux. - - - - - In the Dashboard widget on macOS. - - - - - In the Unity editor on macOS. - - - - - In the player on macOS. - - - - - In the web player on macOS. - - - - - In the player on the Playstation 4. - - - - - In the player on Nintendo Switch. - - - - - In the player on WebGL - - - - - In the Unity editor on Windows. - - - - - In the player on Windows. - - - - - In the web player on Windows. - - - - - In the player on Windows Store Apps when CPU architecture is ARM. - - - - - In the player on Windows Store Apps when CPU architecture is X64. - - - - - In the player on Windows Store Apps when CPU architecture is X86. - - - - - In the player on Xbox One. - - - - - Scales render textures to support dynamic resolution if the target platform/graphics API supports it. - - - - - Height scale factor to control dynamic resolution. - - - - - Width scale factor to control dynamic resolution. - - - - - Function to resize all buffers marked as DynamicallyScalable. - - New scale factor for the width the ScalableBufferManager will use to resize all render textures the user marked as DynamicallyScalable, has to be some value greater than 0.0 and less than or equal to 1.0. - New scale factor for the height the ScalableBufferManager will use to resize all render textures the user marked as DynamicallyScalable, has to be some value greater than 0.0 and less than or equal to 1.0. - - - - Scaling mode to draw textures with. - - - - - Scales the texture, maintaining aspect ratio, so it completely covers the position rectangle passed to GUI.DrawTexture. If the texture is being draw to a rectangle with a different aspect ratio than the original, the image is cropped. - - - - - Scales the texture, maintaining aspect ratio, so it completely fits withing the position rectangle passed to GUI.DrawTexture. - - - - - Stretches the texture to fill the complete rectangle passed in to GUI.DrawTexture. - - - - - This struct collects all the CreateScene parameters in to a single place. - - - - - See SceneManagement.LocalPhysicsMode. - - - - - Used when loading a Scene in a player. - - - - - Adds the Scene to the current loaded Scenes. - - - - - Closes all current loaded Scenes - and loads a Scene. - - - - - This struct collects all the LoadScene parameters in to a single place. - - - - - See LoadSceneMode. - - - - - See SceneManagement.LocalPhysicsMode. - - - - - Constructor for LoadSceneParameters. See SceneManager.LoadScene. - - See LoadSceneParameters.loadSceneMode. - - - - Provides options for 2D and 3D local physics. - - - - - No local 2D or 3D physics Scene will be created. - - - - - A local 2D physics Scene will be created and owned by the Scene. - - - - - A local 3D physics Scene will be created and owned by the Scene. - - - - - Run-time data structure for *.unity file. - - - - - Return the index of the Scene in the Build Settings. - - - - - Returns true if the Scene is modifed. - - - - - Returns true if the Scene is loaded. - - - - - Returns the name of the Scene. - - - - - Returns the relative path of the Scene. Like: "AssetsMyScenesMyScene.unity". - - - - - The number of root transforms of this Scene. - - - - - Returns all the root game objects in the Scene. - - - An array of game objects. - - - - - Returns all the root game objects in the Scene. - - A list which is used to return the root game objects. - - - - Whether this is a valid Scene. -A Scene may be invalid if, for example, you tried to open a Scene that does not exist. In this case, the Scene returned from EditorSceneManager.OpenScene would return False for IsValid. - - - Whether this is a valid Scene. - - - - - Returns true if the Scenes are equal. - - - - - - - Returns true if the Scenes are different. - - - - - - - Scene management at run-time. - - - - - Subscribe to this event to get notified when the active Scene has changed. - - Use a subscription of either a UnityAction<SceneManagement.Scene, SceneManagement.Scene> or a method that takes two SceneManagement.Scene types arguments. - - - - The total number of currently loaded Scenes. - - - - - Number of Scenes in Build Settings. - - - - - Add a delegate to this to get notifications when a Scene has loaded. - - Use a subscription of either a UnityAction<SceneManagement.Scene, SceneManagement.LoadSceneMode> or a method that takes a SceneManagement.Scene and a SceneManagement.LoadSceneMode. - - - - Add a delegate to this to get notifications when a Scene has unloaded. - - Use a subscription of either a UnityAction<SceneManagement.Scene> or a method that takes a SceneManagement.Scene type argument. - - - - Create an empty new Scene at runtime with the given name. - - The name of the new Scene. It cannot be empty or null, or same as the name of the existing Scenes. - Various parameters used to create the Scene. - - A reference to the new Scene that was created, or an invalid Scene if creation failed. - - - - - Create an empty new Scene at runtime with the given name. - - The name of the new Scene. It cannot be empty or null, or same as the name of the existing Scenes. - Various parameters used to create the Scene. - - A reference to the new Scene that was created, or an invalid Scene if creation failed. - - - - - Gets the currently active Scene. - - - The active Scene. - - - - - Returns an array of all the Scenes currently open in the hierarchy. - - - Array of Scenes in the Hierarchy. - - - - - Get the Scene at index in the SceneManager's list of loaded Scenes. - - Index of the Scene to get. Index must be greater than or equal to 0 and less than SceneManager.sceneCount. - - A reference to the Scene at the index specified. - - - - - Get a Scene struct from a build index. - - Build index as shown in the Build Settings window. - - A reference to the Scene, if valid. If not, an invalid Scene is returned. - - - - - Searches through the Scenes loaded for a Scene with the given name. - - Name of Scene to find. - - A reference to the Scene, if valid. If not, an invalid Scene is returned. - - - - - Searches all Scenes loaded for a Scene that has the given asset path. - - Path of the Scene. Should be relative to the project folder. Like: "AssetsMyScenesMyScene.unity". - - A reference to the Scene, if valid. If not, an invalid Scene is returned. - - - - - Loads the Scene by its name or index in Build Settings. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - Allows you to specify whether or not to load the Scene additively. See SceneManagement.LoadSceneMode for more information about the options. - - - - Loads the Scene by its name or index in Build Settings. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - Allows you to specify whether or not to load the Scene additively. See SceneManagement.LoadSceneMode for more information about the options. - - - - Loads the Scene by its name or index in Build Settings. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - Various parameters used to load the Scene. - - A handle to the Scene being loaded. - - - - - Loads the Scene by its name or index in Build Settings. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - Various parameters used to load the Scene. - - A handle to the Scene being loaded. - - - - - Loads the Scene asynchronously in the background. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - If LoadSceneMode.Single then all current Scenes will be unloaded before loading. - Struct that collects the various parameters into a single place except for the name and index. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Loads the Scene asynchronously in the background. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - If LoadSceneMode.Single then all current Scenes will be unloaded before loading. - Struct that collects the various parameters into a single place except for the name and index. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Loads the Scene asynchronously in the background. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - If LoadSceneMode.Single then all current Scenes will be unloaded before loading. - Struct that collects the various parameters into a single place except for the name and index. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Loads the Scene asynchronously in the background. - - Name or path of the Scene to load. - Index of the Scene in the Build Settings to load. - If LoadSceneMode.Single then all current Scenes will be unloaded before loading. - Struct that collects the various parameters into a single place except for the name and index. - - Use the AsyncOperation to determine if the operation has completed. - - - - - This will merge the source Scene into the destinationScene. - - The Scene that will be merged into the destination Scene. - Existing Scene to merge the source Scene into. - - - - Move a GameObject from its current Scene to a new Scene. - - GameObject to move. - Scene to move into. - - - - Set the Scene to be active. - - The Scene to be set. - - Returns false if the Scene is not loaded yet. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in the Build Settings to unload. - Name or path of the Scene to unload. - Scene to unload. - - Returns true if the Scene is unloaded. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in the Build Settings to unload. - Name or path of the Scene to unload. - Scene to unload. - - Returns true if the Scene is unloaded. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in the Build Settings to unload. - Name or path of the Scene to unload. - Scene to unload. - - Returns true if the Scene is unloaded. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in BuildSettings. - Name or path of the Scene to unload. - Scene to unload. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in BuildSettings. - Name or path of the Scene to unload. - Scene to unload. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Destroys all GameObjects associated with the given Scene and removes the Scene from the SceneManager. - - Index of the Scene in BuildSettings. - Name or path of the Scene to unload. - Scene to unload. - - Use the AsyncOperation to determine if the operation has completed. - - - - - Scene and Build Settings related utilities. - - - - - Get the build index from a Scene path. - - Scene path (e.g: "AssetsScenesScene1.unity"). - - Build index. - - - - - Get the Scene path from a build index. - - - - Scene path (e.g "AssetsScenesScene1.unity"). - - - - - Access to display information. - - - - - Allow auto-rotation to landscape left? - - - - - Allow auto-rotation to landscape right? - - - - - Allow auto-rotation to portrait? - - - - - Allow auto-rotation to portrait, upside down? - - - - - The current screen resolution (Read Only). - - - - - The current DPI of the screen / device (Read Only). - - - - - Is the game running full-screen? - - - - - Set this property to one of the values in FullScreenMode to change the display mode of your application. - - - - - The current height of the screen window in pixels (Read Only). - - - - - Should the cursor be locked? - - - - - Specifies logical orientation of the screen. - - - - - All full-screen resolutions supported by the monitor (Read Only). - - - - - Returns the safe area of the screen in pixels (Read Only). - - - - - Should the cursor be visible? - - - - - A power saving setting, allowing the screen to dim some time after the last active user interaction. - - - - - The current width of the screen window in pixels (Read Only). - - - - - Switches the screen resolution. - - - - - - - - - - Switches the screen resolution. - - - - - - - - - - Switches the screen resolution. - - - - - - - - - - Functionality to take Screenshots. - - - - - Captures a screenshot at path filename as a PNG file. - - Pathname to save the screenshot file to. - Factor by which to increase resolution. - Specifies the eye texture to capture when stereo rendering is enabled. - - - - Captures a screenshot at path filename as a PNG file. - - Pathname to save the screenshot file to. - Factor by which to increase resolution. - Specifies the eye texture to capture when stereo rendering is enabled. - - - - Captures a screenshot of the game view into a Texture2D object. - - Factor by which to increase resolution. - Specifies the eye texture to capture when stereo rendering is enabled. - - - - Captures a screenshot of the game view into a Texture2D object. - - Factor by which to increase resolution. - Specifies the eye texture to capture when stereo rendering is enabled. - - - - Enumeration specifying the eye texture to capture when using ScreenCapture.CaptureScreenshot and when stereo rendering is enabled. - - - - - Both the left and right eyes are captured and composited into one image. - - - - - The Left Eye is captured. This is the default setting for the CaptureScreenshot method. - - - - - The Right Eye is captured. - - - - - Describes screen orientation. - - - - - Auto-rotates the screen as necessary toward any of the enabled orientations. - - - - - Landscape orientation, counter-clockwise from the portrait orientation. - - - - - Landscape orientation, clockwise from the portrait orientation. - - - - - Portrait orientation. - - - - - Portrait orientation, upside down. - - - - - A class you can derive from if you want to create objects that don't need to be attached to game objects. - - - - - Creates an instance of a scriptable object. - - The type of the ScriptableObject to create, as the name of the type. - The type of the ScriptableObject to create, as a System.Type instance. - - The created ScriptableObject. - - - - - Creates an instance of a scriptable object. - - The type of the ScriptableObject to create, as the name of the type. - The type of the ScriptableObject to create, as a System.Type instance. - - The created ScriptableObject. - - - - - Creates an instance of a scriptable object. - - - The created ScriptableObject. - - - - - Ensure an assembly is always processed during managed code stripping. - - - - - Experimental API to control the garbage collector on the Mono and IL2CPP scripting backends. - - - - - Set and get global garbage collector operation mode. - - - - - Subscribe to this event to get notified when GarbageCollector.GCMode changes. - - - - - - Garbage collector operation mode. - - - - - Disable garbage collector. - - - - - Enable garbage collector. - - - - - PreserveAttribute prevents byte code stripping from removing a class, method, field, or property. - - - - - Webplayer security related class. Not supported from 5.4.0 onwards. - - - - - Loads an assembly and checks that it is allowed to be used in the webplayer. (Web Player is no Longer Supported). - - Assembly to verify. - Public key used to verify assembly. - - Loaded, verified, assembly, or null if the assembly cannot be verfied. - - - - - Loads an assembly and checks that it is allowed to be used in the webplayer. (Web Player is no Longer Supported). - - Assembly to verify. - Public key used to verify assembly. - - Loaded, verified, assembly, or null if the assembly cannot be verfied. - - - - - Prefetch the webplayer socket security policy from a non-default port number. - - IP address of server. - Port from where socket policy is read. - Time to wait for response. - - - - Prefetch the webplayer socket security policy from a non-default port number. - - IP address of server. - Port from where socket policy is read. - Time to wait for response. - - - - Add this attribute to a script class to mark its GameObject as a selection base object for Scene View picking. - - - - - Options for how to send a message. - - - - - No receiver is required for SendMessage. - - - - - A receiver is required for SendMessage. - - - - - Use this attribute to rename a field without losing its serialized value. - - - - - The name of the field before the rename. - - - - - - - The name of the field before renaming. - - - - Force Unity to serialize a private field. - - - - - Shader scripts used for all rendering. - - - - - Shader LOD level for all shaders. - - - - - Render pipeline currently in use. - - - - - Shader hardware tier classification for current device. - - - - - Can this shader run on the end-users graphics card? (Read Only) - - - - - Shader LOD level for this shader. - - - - - Render queue of this shader. (Read Only) - - - - - Unset a global shader keyword. - - - - - - Set a global shader keyword. - - - - - - Finds a shader with the given name. - - - - - - Gets a global color property for all shaders previously set using SetGlobalColor. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global color property for all shaders previously set using SetGlobalColor. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global float property for all shaders previously set using SetGlobalFloat. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global float property for all shaders previously set using SetGlobalFloat. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global float array for all shaders previously set using SetGlobalFloatArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global float array for all shaders previously set using SetGlobalFloatArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global float array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global float array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global int property for all shaders previously set using SetGlobalInt. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global int property for all shaders previously set using SetGlobalInt. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global matrix property for all shaders previously set using SetGlobalMatrix. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global matrix property for all shaders previously set using SetGlobalMatrix. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global matrix array for all shaders previously set using SetGlobalMatrixArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global matrix array for all shaders previously set using SetGlobalMatrixArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global matrix array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global matrix array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global texture property for all shaders previously set using SetGlobalTexture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global texture property for all shaders previously set using SetGlobalTexture. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global vector property for all shaders previously set using SetGlobalVector. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global vector property for all shaders previously set using SetGlobalVector. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global vector array for all shaders previously set using SetGlobalVectorArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Gets a global vector array for all shaders previously set using SetGlobalVectorArray. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global vector array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Fetches a global vector array into a list. - - The list to hold the returned array. - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - Is global shader keyword enabled? - - - - - - Gets unique identifier for a shader property name. - - Shader property name. - - Unique integer for the name. - - - - - Sets a global compute buffer property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global compute buffer property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global color property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global color property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global float array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global int property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global int property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global matrix array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global texture property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global texture property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Sets a global vector array property for all shaders. - - The name ID of the property retrieved by Shader.PropertyToID. - The name of the property. - - - - - Fully load all shaders to prevent future performance hiccups. - - - - - ShaderVariantCollection records which shader variants are actually used in each shader. - - - - - Is this ShaderVariantCollection already warmed up? (Read Only) - - - - - Number of shaders in this collection (Read Only). - - - - - Number of total varians in this collection (Read Only). - - - - - Adds a new shader variant to the collection. - - Shader variant to add. - - False if already in the collection. - - - - - Remove all shader variants from the collection. - - - - - Checks if a shader variant is in the collection. - - Shader variant to check. - - True if the variant is in the collection. - - - - - Create a new empty shader variant collection. - - - - - Adds shader variant from the collection. - - Shader variant to add. - - False if was not in the collection. - - - - - Identifies a specific variant of a shader. - - - - - Array of shader keywords to use in this variant. - - - - - Pass type to use in this variant. - - - - - Shader to use in this variant. - - - - - Creates a ShaderVariant structure. - - - - - - - - Fully load shaders in ShaderVariantCollection. - - - - - The rendering mode of Shadowmask. - - - - - Static shadow casters will be rendered into realtime shadow maps. Shadowmasks and occlusion from Light Probes will only be used past the realtime shadow distance. - - - - - Static shadow casters won't be rendered into realtime shadow maps. All shadows from static casters are handled via Shadowmasks and occlusion from Light Probes. - - - - - Shadow projection type for. - - - - - Close fit shadow maps with linear fadeout. - - - - - Stable shadow maps with spherical fadeout. - - - - - Determines which type of shadows should be used. - - - - - Hard and Soft Shadows. - - - - - Disable Shadows. - - - - - Hard Shadows Only. - - - - - Default shadow resolution. - - - - - High shadow map resolution. - - - - - Low shadow map resolution. - - - - - Medium shadow map resolution. - - - - - Very high shadow map resolution. - - - - - SharedBetweenAnimatorsAttribute is an attribute that specify that this StateMachineBehaviour should be instantiate only once and shared among all Animator instance. This attribute reduce the memory footprint for each controller instance. - - - - - Details of the Transform name mapped to the skeleton bone of a model and its default position and rotation in the T-pose. - - - - - The name of the Transform mapped to the bone. - - - - - The T-pose position of the bone in local space. - - - - - The T-pose rotation of the bone in local space. - - - - - The T-pose scaling of the bone in local space. - - - - - The Skinned Mesh filter. - - - - - The bones used to skin the mesh. - - - - - Forces the Skinned Mesh to recalculate its matricies when rendered - - - - - AABB of this Skinned Mesh in its local space. - - - - - The maximum number of bones affecting a single vertex. - - - - - The mesh used for skinning. - - - - - Specifies whether skinned motion vectors should be used for this renderer. - - - - - If enabled, the Skinned Mesh will be updated when offscreen. If disabled, this also disables updating animations. - - - - - Creates a snapshot of SkinnedMeshRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the skinned mesh. - - - - Returns the weight of a BlendShape for this Renderer. - - The index of the BlendShape whose weight you want to retrieve. Index must be smaller than the Mesh.blendShapeCount of the Mesh attached to this Renderer. - - The weight of the BlendShape. - - - - - Sets the weight of a BlendShape for this Renderer. - - The index of the BlendShape to modify. Index must be smaller than the Mesh.blendShapeCount of the Mesh attached to this Renderer. - The weight for this BlendShape. - - - - The maximum number of bones affecting a single vertex. - - - - - Chooses the number of bones from the number current QualitySettings. (Default) - - - - - Use only 1 bone to deform a single vertex. (The most important bone will be used). - - - - - Use 2 bones to deform a single vertex. (The most important bones will be used). - - - - - Use 4 bones to deform a single vertex. - - - - - A script interface for the. - - - - - The material used by the skybox. - - - - - Constants for special values of Screen.sleepTimeout. - - - - - Prevent screen dimming. - - - - - Set the sleep timeout to whatever the user has specified in the system settings. - - - - - Joint that restricts the motion of a Rigidbody2D object to a single line. - - - - - The angle of the line in space (in degrees). - - - - - Should the angle be calculated automatically? - - - - - The current joint speed. - - - - - The current joint translation. - - - - - Restrictions on how far the joint can slide in each direction along the line. - - - - - Gets the state of the joint limit. - - - - - Parameters for a motor force that is applied automatically to the Rigibody2D along the line. - - - - - The angle (in degrees) referenced between the two bodies used as the constraint for the joint. - - - - - Should motion limits be used? - - - - - Should a motor force be applied automatically to the Rigidbody2D? - - - - - Gets the motor force of the joint given the specified timestep. - - The time to calculate the motor force for. - - - - Generic access to the Social API. - - - - - The local user (potentially not logged in). - - - - - This is the currently active social platform. - - - - - Create an IAchievement instance. - - - - - Create an ILeaderboard instance. - - - - - Loads the achievement descriptions accociated with this application. - - - - - - Load the achievements the logged in user has already achieved or reported progress on. - - - - - - Load a default set of scores from the given leaderboard. - - - - - - - Load the user profiles accociated with the given array of user IDs. - - - - - - - Reports the progress of an achievement. - - - - - - - - Report a score to a specific leaderboard. - - - - - - - - Show a default/system view of the games achievements. - - - - - Show a default/system view of the games leaderboards. - - - - - iOS GameCenter implementation for network services. - - - - - Reset all the achievements for the local user. - - - - - - Show the default iOS banner when achievements are completed. - - - - - - Show the leaderboard UI with a specific leaderboard shown initially with a specific time scope selected. - - - - - - - Information for a user's achievement. - - - - - Set to true when percentCompleted is 100.0. - - - - - This achievement is currently hidden from the user. - - - - - The unique identifier of this achievement. - - - - - Set by server when percentCompleted is updated. - - - - - Progress for this achievement. - - - - - Send notification about progress on this achievement. - - - - - - Static data describing an achievement. - - - - - Description when the achivement is completed. - - - - - Hidden achievement are not shown in the list until the percentCompleted has been touched (even if it's 0.0). - - - - - Unique identifier for this achievement description. - - - - - Image representation of the achievement. - - - - - Point value of this achievement. - - - - - Human readable title. - - - - - Description when the achivement has not been completed. - - - - - The leaderboard contains the scores of all players for a particular game. - - - - - Unique identifier for this leaderboard. - - - - - The leaderboad is in the process of loading scores. - - - - - The leaderboard score of the logged in user. - - - - - The total amount of scores the leaderboard contains. - - - - - The rank range this leaderboard returns. - - - - - The leaderboard scores returned by a query. - - - - - The time period/scope searched by this leaderboard. - - - - - The human readable title of this leaderboard. - - - - - The users scope searched by this leaderboard. - - - - - Load scores according to the filters set on this leaderboard. - - - - - - Only search for these user IDs. - - List of user ids. - - - - Represents the local or currently logged in user. - - - - - Checks if the current user has been authenticated. - - - - - The users friends list. - - - - - Is the user underage? - - - - - Authenticate the local user to the current active Social API implementation and fetch his profile data. - - Callback that is called whenever the authentication operation is finished. The first parameter is a Boolean identifying whether the authentication operation was successful. The optional second argument contains a string identifying any errors (if available) if the operation was unsuccessful. - - - - Authenticate the local user to the current active Social API implementation and fetch his profile data. - - Callback that is called whenever the authentication operation is finished. The first parameter is a Boolean identifying whether the authentication operation was successful. The optional second argument contains a string identifying any errors (if available) if the operation was unsuccessful. - - - - Fetches the friends list of the logged in user. The friends list on the ISocialPlatform.localUser|Social.localUser instance is populated if this call succeeds. - - - - - - A game score. - - - - - The date the score was achieved. - - - - - The correctly formatted value of the score, like X points or X kills. - - - - - The ID of the leaderboard this score belongs to. - - - - - The rank or position of the score in the leaderboard. - - - - - The user who owns this score. - - - - - The score value achieved. - - - - - Report this score instance. - - - - - - The generic Social API interface which implementations must inherit. - - - - - See Social.localUser. - - - - - See Social.CreateAchievement.. - - - - - See Social.CreateLeaderboard. - - - - - See Social.LoadAchievementDescriptions. - - - - - - See Social.LoadAchievements. - - - - - - See Social.LoadScores. - - - - - - - - See Social.LoadScores. - - - - - - - - See Social.LoadUsers. - - - - - - - See Social.ReportProgress. - - - - - - - - See Social.ReportScore. - - - - - - - - See Social.ShowAchievementsUI. - - - - - See Social.ShowLeaderboardUI. - - - - - Represents generic user instances, like friends of the local user. - - - - - This users unique identifier. - - - - - Avatar image of the user. - - - - - Is this user a friend of the current logged in user? - - - - - Presence state of the user. - - - - - This user's username or alias. - - - - - The score range a leaderboard query should include. - - - - - The total amount of scores retreived. - - - - - The rank of the first score which is returned. - - - - - Constructor for a score range, the range starts from a specific value and contains a maxium score count. - - The minimum allowed value. - The number of possible values. - - - - The scope of time searched through when querying the leaderboard. - - - - - The scope of the users searched through when querying the leaderboard. - - - - - User presence state. - - - - - The user is offline. - - - - - The user is online. - - - - - The user is online but away from their computer. - - - - - The user is online but set their status to busy. - - - - - The user is playing a game. - - - - - The limits defined by the CharacterJoint. - - - - - When the joint hits the limit, it can be made to bounce off it. - - - - - Determines how far ahead in space the solver can "see" the joint limit. - - - - - If spring is greater than zero, the limit is soft. - - - - - The limit position/angle of the joint (in degrees). - - - - - If greater than zero, the limit is soft. The spring will pull the joint back. - - - - - The configuration of the spring attached to the joint's limits: linear and angular. Used by CharacterJoint and ConfigurableJoint. - - - - - The damping of the spring limit. In effect when the stiffness of the sprint limit is not zero. - - - - - The stiffness of the spring limit. When stiffness is zero the limit is hard, otherwise soft. - - - - - SortingLayer allows you to set the render order of multiple sprites easily. There is always a default SortingLayer named "Default" which all sprites are added to initially. Added more SortingLayers to easily control the order of rendering of groups of sprites. Layers can be ordered before or after the default layer. - - - - - This is the unique id assigned to the layer. It is not an ordered running value and it should not be used to compare with other layers to determine the sorting order. - - - - - Returns all the layers defined in this project. - - - - - Returns the name of the layer as defined in the TagManager. - - - - - This is the relative value that indicates the sort order of this layer relative to the other layers. - - - - - Returns the final sorting layer value. To determine the sorting order between the various sorting layers, use this method to retrieve the final sorting value and use CompareTo to determine the order. - - The unique value of the sorting layer as returned by any renderer's sortingLayerID property. - - The final sorting value of the layer relative to other layers. - - - - - Returns the final sorting layer value. See Also: GetLayerValueFromID. - - The unique value of the sorting layer as returned by any renderer's sortingLayerID property. - - The final sorting value of the layer relative to other layers. - - - - - Returns the unique id of the layer. Will return "<unknown layer>" if an invalid id is given. - - The unique id of the layer. - - The name of the layer with id or "<unknown layer>" for invalid id. - - - - - Returns true if the id provided is a valid layer id. - - The unique id of a layer. - - True if the id provided is valid and assigned to a layer. - - - - - Returns the id given the name. Will return 0 if an invalid name was given. - - The name of the layer. - - The unique id of the layer with name. - - - - - The coordinate space in which to operate. - - - - - Applies transformation relative to the local coordinate system. - - - - - Applies transformation relative to the world coordinate system. - - - - - Use this PropertyAttribute to add some spacing in the Inspector. - - - - - The spacing in pixels. - - - - - Use this DecoratorDrawer to add some spacing in the Inspector. - - The spacing in pixels. - - - - Class for handling Sparse Textures. - - - - - Is the sparse texture actually created? (Read Only) - - - - - Get sparse texture tile height (Read Only). - - - - - Get sparse texture tile width (Read Only). - - - - - Create a sparse texture. - - Texture width in pixels. - Texture height in pixels. - Texture format. - Mipmap count. Pass -1 to create full mipmap chain. - Whether texture data will be in linear or sRGB color space (default is sRGB). - - - - Create a sparse texture. - - Texture width in pixels. - Texture height in pixels. - Texture format. - Mipmap count. Pass -1 to create full mipmap chain. - Whether texture data will be in linear or sRGB color space (default is sRGB). - - - - Unload sparse texture tile. - - Tile X coordinate. - Tile Y coordinate. - Mipmap level of the texture. - - - - Update sparse texture tile with color values. - - Tile X coordinate. - Tile Y coordinate. - Mipmap level of the texture. - Tile color data. - - - - Update sparse texture tile with raw pixel values. - - Tile X coordinate. - Tile Y coordinate. - Mipmap level of the texture. - Tile raw pixel data. - - - - Use this struct to set up a sphere cast command that is performed asynchronously during a job. - - - - - The direction of the sphere cast. - - - - - The maximum distance the sphere should check for collisions. - - - - - The LayerMask that selectively ignores Colliders when casting a sphere. - - - - - The starting point of the sphere cast in world coordinates. - - - - - The radius of the casting sphere. - - - - - Creates a SpherecastCommand. - - The starting point of the sphere cast. - The radius of the casting sphere. - The direction of the sphere cast. - The maximum distance the cast should check for collisions. - The LayerMask that selectively ignores Colliders when casting a sphere. - - - - Schedules a batch of sphere casts to perform in a job. - - A NaviveArray of SpherecastCommands to perform. - A NavtiveArray of RaycastHit where the result of commands are stored. - The minimum number of jobs which should be performed in a single job. - A jobHandle of the job that must be completed before performing the sphere casts. - - Returns a JobHandle of the job that will perform the sphere casts. - - - - - A sphere-shaped primitive collider. - - - - - The center of the sphere in the object's local space. - - - - - The radius of the sphere measured in the object's local space. - - - - - A Splat prototype is just a texture that is used by the TerrainData. - - - - - The metallic value of the splat layer. - - - - - Normal map of the splat applied to the Terrain. - - - - - The smoothness value of the splat layer when the main texture has no alpha channel. - - - - - Texture of the splat applied to the Terrain. - - - - - Offset of the tile texture of the SplatPrototype. - - - - - Size of the tile used in the texture of the SplatPrototype. - - - - - The spring joint ties together 2 rigid bodies, spring forces will be automatically applied to keep the object at the given distance. - - - - - The damper force used to dampen the spring force. - - - - - The maximum distance between the bodies relative to their initial distance. - - - - - The minimum distance between the bodies relative to their initial distance. - - - - - The spring force used to keep the two objects together. - - - - - The maximum allowed error between the current spring length and the length defined by minDistance and maxDistance. - - - - - Joint that attempts to keep two Rigidbody2D objects a set distance apart by applying a force between them. - - - - - Should the distance be calculated automatically? - - - - - The amount by which the spring force is reduced in proportion to the movement speed. - - - - - The distance the spring will try to keep between the two objects. - - - - - The frequency at which the spring oscillates around the distance distance between the objects. - - - - - Represents a Sprite object for use in 2D gameplay. - - - - - Returns the texture that contains the alpha channel from the source texture. Unity generates this texture under the hood for sprites that have alpha in the source, and need to be compressed using techniques like ETC1. - -Returns NULL if there is no associated alpha texture for the source sprite. This is the case if the sprite has not been setup to use ETC1 compression. - - - - - Returns the border sizes of the sprite. - - - - - Bounds of the Sprite, specified by its center and extents in world space units. - - - - - Returns true if this Sprite is packed in an atlas. - - - - - If Sprite is packed (see Sprite.packed), returns its SpritePackingMode. - - - - - If Sprite is packed (see Sprite.packed), returns its SpritePackingRotation. - - - - - Location of the Sprite's center point in the Rect on the original Texture, specified in pixels. - - - - - The number of pixels in the sprite that correspond to one unit in world space. (Read Only) - - - - - Location of the Sprite on the original Texture, specified in pixels. - - - - - Get the reference to the used texture. If packed this will point to the atlas, if not packed will point to the source sprite. - - - - - Get the rectangle this sprite uses on its texture. Raises an exception if this sprite is tightly packed in an atlas. - - - - - Gets the offset of the rectangle this sprite uses on its texture to the original sprite bounds. If sprite mesh type is FullRect, offset is zero. - - - - - Returns a copy of the array containing sprite mesh triangles. - - - - - The base texture coordinates of the sprite mesh. - - - - - Returns a copy of the array containing sprite mesh vertex positions. - - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Create a new Sprite object. - - Texture from which to obtain the sprite graphic. - Rectangular section of the texture to use for the sprite. - Sprite's pivot point relative to its graphic rectangle. - The number of pixels in the sprite that correspond to one unit in world space. - Amount by which the sprite mesh should be expanded outwards. - Controls the type of mesh generated for the sprite. - The border sizes of the sprite (X=left, Y=bottom, Z=right, W=top). - Generates a default physics shape for the sprite. - - - - Gets a physics shape from the Sprite by its index. - - The index of the physics shape to retrieve. - An ordered list of the points in the selected physics shape to store points in. - - The number of points stored in the given list. - - - - - The number of physics shapes for the Sprite. - - - The number of physics shapes for the Sprite. - - - - - The number of points in the selected physics shape for the Sprite. - - The index of the physics shape to retrieve the number of points from. - - The number of points in the selected physics shape for the Sprite. - - - - - Sets up new Sprite geometry. - - Array of vertex positions in Sprite Rect space. - Array of sprite mesh triangle indices. - - - - Sets up a new Sprite physics shape. - - A multidimensional list of points in Sprite.rect space denoting the physics shape outlines. - - - - How a Sprite's graphic rectangle is aligned with its pivot point. - - - - - Pivot is at the center of the bottom edge of the graphic rectangle. - - - - - Pivot is at the bottom left corner of the graphic rectangle. - - - - - Pivot is at the bottom right corner of the graphic rectangle. - - - - - Pivot is at the center of the graphic rectangle. - - - - - Pivot is at a custom position within the graphic rectangle. - - - - - Pivot is at the center of the left edge of the graphic rectangle. - - - - - Pivot is at the center of the right edge of the graphic rectangle. - - - - - Pivot is at the center of the top edge of the graphic rectangle. - - - - - Pivot is at the top left corner of the graphic rectangle. - - - - - Pivot is at the top right corner of the graphic rectangle. - - - - - SpriteRenderer draw mode. - - - - - Displays the full sprite. - - - - - The SpriteRenderer will render the sprite as a 9-slice image where the corners will remain constant and the other sections will scale. - - - - - The SpriteRenderer will render the sprite as a 9-slice image where the corners will remain constant and the other sections will tile. - - - - - A component for masking Sprites and Particles. - - - - - The minimum alpha value used by the mask to select the area of influence defined over the mask's sprite. - - - - - Unique ID of the sorting layer defining the end of the custom range. - - - - - Order within the back sorting layer defining the end of the custom range. - - - - - Unique ID of the sorting layer defining the start of the custom range. - - - - - Order within the front sorting layer defining the start of the custom range. - - - - - Mask sprites from front to back sorting values only. - - - - - The Sprite used to define the mask. - - - - - Determines the position of the Sprite used for sorting the SpriteMask. - - - - - This enum controls the mode under which the sprite will interact with the masking system. - - - - - The sprite will not interact with the masking system. - - - - - The sprite will be visible only in areas where a mask is present. - - - - - The sprite will be visible only in areas where no mask is present. - - - - - Defines the type of mesh generated for a sprite. - - - - - Rectangle mesh equal to the user specified sprite size. - - - - - Tight mesh based on pixel alpha values. As many excess pixels are cropped as possible. - - - - - Sprite packing modes for the Sprite Packer. - - - - - Alpha-cropped ractangle packing. - - - - - Tight mesh based packing. - - - - - Sprite rotation modes for the Sprite Packer. - - - - - Any rotation. - - - - - Sprite is flipped horizontally when packed. - - - - - Sprite is flipped vertically when packed. - - - - - No rotation. - - - - - Sprite is rotated 180 degree when packed. - - - - - Renders a Sprite for 2D graphics. - - - - - The current threshold for Sprite Renderer tiling. - - - - - Rendering color for the Sprite graphic. - - - - - The current draw mode of the Sprite Renderer. - - - - - Flips the sprite on the X axis. - - - - - Flips the sprite on the Y axis. - - - - - Specifies how the sprite interacts with the masks. - - - - - Property to set/get the size to render when the SpriteRenderer.drawMode is set to SpriteDrawMode.Sliced. - - - - - The Sprite to render. - - - - - Determines the position of the Sprite used for sorting the SpriteRenderer. - - - - - The current tile mode of the Sprite Renderer. - - - - - Helper utilities for accessing Sprite data. - - - - - Inner UV's of the Sprite. - - - - - - Minimum width and height of the Sprite. - - - - - - Outer UV's of the Sprite. - - - - - - Return the padding on the sprite. - - - - - - Determines the position of the Sprite used for sorting the Renderer. - - - - - The center of the Sprite is used as the point for sorting the Renderer. - - - - - The pivot of the Sprite is used as the point for sorting the Renderer. - - - - - Tiling mode for SpriteRenderer.tileMode. - - - - - Sprite Renderer tiles the sprite once the Sprite Renderer size is above SpriteRenderer.adaptiveModeThreshold. - - - - - Sprite Renderer tiles the sprite continuously when is set to SpriteRenderer.tileMode. - - - - - Stack trace logging options. - - - - - Native and managed stack trace will be logged. - - - - - No stack trace will be outputed to log. - - - - - Only managed stack trace will be outputed. - - - - - StateMachineBehaviour is a component that can be added to a state machine state. It's the base class every script on a state derives from. - - - - - Called on the first Update frame when a state machine evaluate this state. - - - - - Called on the last update frame when a state machine evaluate this state. - - - - - Called right after MonoBehaviour.OnAnimatorIK. - - - - - Called on the first Update frame when making a transition to a state machine. This is not called when making a transition into a state machine sub-state. - - The Animator playing this state machine. - The full path hash for this state machine. - - - - Called on the last Update frame when making a transition out of a StateMachine. This is not called when making a transition into a StateMachine sub-state. - - The Animator playing this state machine. - The full path hash for this state machine. - - - - Called right after MonoBehaviour.OnAnimatorMove. - - - - - Called at each Update frame except for the first and last frame. - - - - - StaticBatchingUtility can prepare your objects to take advantage of Unity's static batching. - - - - - StaticBatchingUtility.Combine prepares all children of the staticBatchRoot for static batching. - - The GameObject that should become the root of the combined batch. - - - - StaticBatchingUtility.Combine prepares all GameObjects contained in gos for static batching. staticBatchRoot is treated as their parent. - - The GameObjects to prepare for static batching. - The GameObject that should become the root of the combined batch. - - - - Enum values for the Camera's targetEye property. - - - - - Render both eyes to the HMD. - - - - - Render only the Left eye to the HMD. - - - - - Do not render either eye to the HMD. - - - - - Render only the right eye to the HMD. - - - - - A StreamingController controls the streaming settings for an individual camera location. - - - - - Offset applied to the mipmap level chosen by the texture streaming system for any textures visible from this camera. This Offset can take either a positive or negative value. - - - - - Abort preloading. - - - - - Used to find out whether the StreamingController is currently preloading texture mipmaps. - - - True if in a preloading state, otherwise False. - - - - - Initiate preloading of streaming data for this camera. - - Optional timeout before stopping preloading. Set to 0.0f when no timeout is required. - Set to True to activate the connected Camera component when timeout expires. - Camera to deactivate on timeout (if Camera.activateCameraOnTime is True). This parameter can be null. - - - - Applies tangent forces along the surfaces of colliders. - - - - - The scale of the impulse force applied while attempting to reach the surface speed. - - - - - The speed to be maintained along the surface. - - - - - The speed variation (from zero to the variation) added to base speed to be applied. - - - - - Should bounce be used for any contact with the surface? - - - - - Should the impulse force but applied to the contact point? - - - - - Should friction be used for any contact with the surface? - - - - - Access system and hardware information. - - - - - The current battery level (Read Only). - - - - - Returns the current status of the device's battery (Read Only). - - - - - Support for various Graphics.CopyTexture cases (Read Only). - - - - - The model of the device (Read Only). - - - - - The user defined name of the device (Read Only). - - - - - Returns the kind of device the application is running on (Read Only). - - - - - A unique device identifier. It is guaranteed to be unique for every device (Read Only). - - - - - The identifier code of the graphics device (Read Only). - - - - - The name of the graphics device (Read Only). - - - - - The graphics API type used by the graphics device (Read Only). - - - - - The vendor of the graphics device (Read Only). - - - - - The identifier code of the graphics device vendor (Read Only). - - - - - The graphics API type and driver version used by the graphics device (Read Only). - - - - - Amount of video memory present (Read Only). - - - - - Is graphics device using multi-threaded rendering (Read Only)? - - - - - Graphics device shader capability level (Read Only). - - - - - Returns true if the texture UV coordinate convention for this platform has Y starting at the top of the image. - - - - - Returns true when the GPU has native support for indexing uniform arrays in fragment shaders without restrictions. - - - - - True if the GPU supports hidden surface removal. - - - - - Maximum Cubemap texture size (Read Only). - - - - - Maximum texture size (Read Only). - - - - - What NPOT (non-power of two size) texture support does the GPU provide? (Read Only) - - - - - Operating system name with version (Read Only). - - - - - Returns the operating system family the game is running on (Read Only). - - - - - Number of processors present (Read Only). - - - - - Processor frequency in MHz (Read Only). - - - - - Processor name (Read Only). - - - - - How many simultaneous render targets (MRTs) are supported? (Read Only) - - - - - Are 2D Array textures supported? (Read Only) - - - - - Are 32-bit index buffers supported? (Read Only) - - - - - Are 3D (volume) RenderTextures supported? (Read Only) - - - - - Are 3D (volume) textures supported? (Read Only) - - - - - Is an accelerometer available on the device? - - - - - Returns true when the platform supports asynchronous compute queues and false if otherwise. - -Note that asynchronous compute queues are only supported on PS4. - - - - - Returns true if asynchronous readback of GPU data is available for this device and false otherwise. - - - - - Is there an Audio device available for playback? (Read Only) - - - - - Are compute shaders supported? (Read Only) - - - - - Are Cubemap Array textures supported? (Read Only) - - - - - Returns true when the platform supports GPUFences and false if otherwise. - -Note that GPUFences are only supported on PS4. - - - - - Is a gyroscope available on the device? - - - - - Does the hardware support quad topology? (Read Only) - - - - - Are image effects supported? (Read Only) - - - - - Is GPU draw call instancing supported? (Read Only) - - - - - Is the device capable of reporting its location? - - - - - Is streaming of texture mip maps supported? (Read Only) - - - - - Whether motion vectors are supported on this platform. - - - - - Returns true if multisampled textures are resolved automatically - - - - - Are multisampled textures supported? (Read Only) - - - - - Is sampling raw depth from shadowmaps supported? (Read Only) - - - - - Are render textures supported? (Read Only) - - - - - Are cubemap render textures supported? (Read Only) - - - - - Returns true when the platform supports different blend modes when rendering to multiple render targets, or false otherwise. - - - - - Are built-in shadows supported? (Read Only) - - - - - Are sparse textures supported? (Read Only) - - - - - Is the stencil buffer supported? (Read Only) - - - - - Returns true if the 'Mirror Once' texture wrap mode is supported. (Read Only) - - - - - Is the device capable of providing the user haptic feedback by vibration? - - - - - Amount of system memory present (Read Only). - - - - - Value returned by SystemInfo string properties which are not supported on the current platform. - - - - - This property is true if the current platform uses a reversed depth buffer (where values range from 1 at the near plane and 0 at far plane), and false if the depth buffer is normal (0 is near, 1 is far). (Read Only) - - - - - Verifies that the specified graphics format is supported for the specified usage. - - The Experimental.Rendering.GraphicsFormat format to look up. - The Experimental.Rendering.FormatUsage usage to look up. - - Returns true if the format is supported for the specific usage. Returns false otherwise. - - - - - Is blending supported on render texture format? - - The format to look up. - - True if blending is supported on the given format. - - - - - Is render texture format supported? - - The format to look up. - - True if the format is supported. - - - - - Is texture format supported on this device? - - The TextureFormat format to look up. - - True if the format is supported. - - - - - The language the user's operating system is running in. Returned by Application.systemLanguage. - - - - - Afrikaans. - - - - - Arabic. - - - - - Basque. - - - - - Belarusian. - - - - - Bulgarian. - - - - - Catalan. - - - - - Chinese. - - - - - ChineseSimplified. - - - - - ChineseTraditional. - - - - - Czech. - - - - - Danish. - - - - - Dutch. - - - - - English. - - - - - Estonian. - - - - - Faroese. - - - - - Finnish. - - - - - French. - - - - - German. - - - - - Greek. - - - - - Hebrew. - - - - - Hungarian. - - - - - Icelandic. - - - - - Indonesian. - - - - - Italian. - - - - - Japanese. - - - - - Korean. - - - - - Latvian. - - - - - Lithuanian. - - - - - Norwegian. - - - - - Polish. - - - - - Portuguese. - - - - - Romanian. - - - - - Russian. - - - - - Serbo-Croatian. - - - - - Slovak. - - - - - Slovenian. - - - - - Spanish. - - - - - Swedish. - - - - - Thai. - - - - - Turkish. - - - - - Ukrainian. - - - - - Unknown. - - - - - Vietnamese. - - - - - The joint attempts to move a Rigidbody2D to a specific target position. - - - - - The local-space anchor on the rigid-body the joint is attached to. - - - - - Should the target be calculated automatically? - - - - - The amount by which the target spring force is reduced in proportion to the movement speed. - - - - - The frequency at which the target spring oscillates around the target position. - - - - - The maximum force that can be generated when trying to maintain the target joint constraint. - - - - - The world-space position that the joint will attempt to move the body to. - - - - - The Terrain component renders the terrain. - - - - - The active terrain. This is a convenience function to get to the main terrain in the Scene. - - - - - The active terrains in the Scene. - - - - - Specifies if the terrain tile will be automatically connected to adjacent tiles. - - - - - Specifies if an array of internal light probes should be baked for terrain trees. Available only in editor. - - - - - Heightmap patches beyond basemap distance will use a precomputed low res basemap. - - - - - Terrain bottom neighbor. - - - - - Should terrain cast shadows?. - - - - - Collect detail patches from memory. - - - - - Removes ringing from probes on trees if enabled. - - - - - Density of detail objects. - - - - - Detail objects will be displayed up to this distance. - - - - - Specify if terrain heightmap should be drawn. - - - - - Set to true to enable the terrain instance renderer. The default value is false. - - - - - Specify if terrain trees and details should be drawn. - - - - - Controls what part of the terrain should be rendered. - - - - - Whether some per-camera rendering resources for the terrain should be freed after not being used for some frames. - - - - - Grouping ID for auto connect. - - - - - Lets you essentially lower the heightmap resolution used for rendering. - - - - - An approximation of how many pixels the terrain will pop in the worst case when switching lod. - - - - - RenderTextureFormat of the terrain heightmap. - - - - - Texture format of the terrain heightmap. - - - - - Terrain left neighbor. - - - - - The shininess value of the terrain. - - - - - The specular color of the terrain. - - - - - The index of the baked lightmap applied to this terrain. - - - - - The UV scale & offset used for a baked lightmap. - - - - - The custom material used to render the terrain. - - - - - The type of the material used to render the terrain. Could be one of the built-in types or custom. See Terrain.MaterialType. - - - - - Returns the normal map texture computed from sampling the heightmap. It is only used when terrain is rendered using instancing. - - - - - Set the terrain bounding box scale. - - - - - Allows you to specify how Unity chooses the for tree instances. - - - - - The index of the realtime lightmap applied to this terrain. - - - - - The UV scale & offset used for a realtime lightmap. - - - - - How reflection probes are used for terrain. See Rendering.ReflectionProbeUsage. - - - - - Terrain right neighbor. - - - - - The Terrain Data that stores heightmaps, terrain textures, detail meshes and trees. - - - - - Terrain top neighbor. - - - - - Distance from the camera where trees will be rendered as billboards only. - - - - - Total distance delta that trees will use to transition from billboard orientation to mesh orientation. - - - - - The maximum distance at which trees are rendered. - - - - - The multiplier to the current LOD bias used for rendering LOD trees (i.e. SpeedTree trees). - - - - - Maximum number of trees rendered at full LOD. - - - - - Adds a tree instance to the terrain. - - - - - - Update the terrain's LOD and vegetation information after making changes with TerrainData.SetHeightsDelayLOD. - - - - - Creates a Terrain including collider from TerrainData. - - - - - - Flushes any change done in the terrain so it takes effect. - - - - - Fills the list with reflection probes whose AABB intersects with terrain's AABB. Their weights are also provided. Weight shows how much influence the probe has on the terrain, and is used when the blending between multiple reflection probes occurs. - - [in / out] A list to hold the returned reflection probes and their weights. See ReflectionProbeBlendInfo. - - - - Get the position of the terrain. - - - - - Get the previously set splat material properties by copying to the dest MaterialPropertyBlock object. - - - - - - The type of the material used to render a terrain object. Could be one of the built-in types or custom. - - - - - A built-in material that uses the legacy Lambert (diffuse) lighting model and has optional normal map support. - - - - - A built-in material that uses the legacy BlinnPhong (specular) lighting model and has optional normal map support. - - - - - A built-in material that uses the standard physically-based lighting model. Inputs supported: smoothness, metallic / specular, normal. - - - - - Use a custom material given by Terrain.materialTemplate. - - - - - Samples the height at the given position defined in world space, relative to the terrain space. - - - - - - Marks the current connectivity status as invalid. - - - - - Lets you setup the connection between neighboring Terrains. - - - - - - - - - Set the additional material properties when rendering the terrain heightmap using the splat material. - - - - - - Indicate the types of changes to the terrain in OnTerrainChanged callback. - - - - - Indicates a change to the heightmap data without computing LOD. - - - - - Indicates that a change was made to the terrain that was so significant that the internal rendering data need to be flushed and recreated. - - - - - Indicates a change to the heightmap data. - - - - - Indicates a change to the detail data. - - - - - Indicates a change to the tree data. - - - - - Indicates that the TerrainData object is about to be destroyed. - - - - - A heightmap based collider. - - - - - The terrain that stores the heightmap. - - - - - The TerrainData class stores heightmaps, detail mesh positions, tree instances, and terrain texture alpha maps. - - - - - Height of the alpha map. - - - - - Number of alpha map layers. - - - - - Resolution of the alpha map. - - - - - Returns the number of alphamap textures. - - - - - Alpha map textures used by the Terrain. Used by Terrain Inspector for undo. - - - - - Width of the alpha map. - - - - - Resolution of the base map used for rendering far patches on the terrain. - - - - - The local bounding box of the TerrainData object. - - - - - Detail height of the TerrainData. - - - - - The number of patches along a terrain tile edge. This is squared to make a grid of patches. - - - - - Contains the detail texture/meshes that the terrain has. - - - - - Detail Resolution of the TerrainData. - - - - - Detail Resolution of each patch. A larger value will decrease the number of batches used by detail objects. - - - - - Detail width of the TerrainData. - - - - - Height of the terrain in samples (Read Only). - - - - - Resolution of the heightmap. - - - - - The size of each heightmap sample. - - - - - Returns the heightmap texture. - - - - - Width of the terrain in samples (Read Only). - - - - - The total size in world units of the terrain. - - - - - Splat texture used by the terrain. - - - - - Retrieves the terrain layers used by the current terrain. - - - - - The thickness of the terrain used for collision detection. - - - - - Returns the number of tree instances. - - - - - Contains the current trees placed in the terrain. - - - - - The list of tree prototypes this are the ones available in the inspector. - - - - - Amount of waving grass in the terrain. - - - - - Speed of the waving grass. - - - - - Strength of the waving grass in the terrain. - - - - - Color of the waving grass that the terrain has. - - - - - Returns the alpha map at a position x, y given a width and height. - - The x offset to read from. - The y offset to read from. - The width of the alpha map area to read. - The height of the alpha map area to read. - - A 3D array of floats, where the 3rd dimension represents the mixing weight of each splatmap at each x,y coordinate. - - - - - Returns the alphamap texture at the specified index. - - Index of the alphamap. - - Alphamap texture at the specified index. - - - - - Returns a 2D array of the detail object density in the specific location. - - - - - - - - - - Gets the height at a certain point x,y. - - - - - - - Get an array of heightmap samples. - - First x index of heightmap samples to retrieve. - First y index of heightmap samples to retrieve. - Number of samples to retrieve along the heightmap's x axis. - Number of samples to retrieve along the heightmap's y axis. - - - - Gets an interpolated height at a point x,y. - - - - - - - Get an interpolated normal at a given location. - - - - - - - Returns an array of tesselation maximum height error values per renderable terrain patch. The returned array can be modified and passed to OverrideMaximumHeightError. - - - Float array of maximum height error values. - - - - - Returns an array of min max height values for all the renderable patches in a terrain. The returned array can be modified and then passed to OverrideMinMaxPatchHeights. - - - Minimum and maximum height values for each patch. - - - - - Gets the gradient of the terrain at point (x,y). - - - - - - - Returns an array of all supported detail layer indices in the area. - - - - - - - - - Get the tree instance at the specified index. It is used as a faster version of treeInstances[index] as this function doesn't create the entire tree instances array. - - The index of the tree instance. - - - - Override the maximum tessellation height error with user provided values. Note that the overriden values get reset when the terrain resolution is changed and stays unchanged when the terrain heightmap is painted or changed via script. - - Provided maximum height error values. - - - - Override the minimum and maximum patch heights for every renderable terrain patch. Note that the overriden values get reset when the terrain resolution is changed and stays unchanged when the terrain heightmap is painted or changed via script. - - Array of minimum and maximum terrain patch height values. - - - - Reloads all the values of the available prototypes (ie, detail mesh assets) in the TerrainData Object. - - - - - Assign all splat values in the given map area. - - - - - - - - Marks the terrain data as dirty to trigger an update of the terrain basemap texture. - - - - - Sets the detail layer density map. - - - - - - - - - Set the resolution of the detail map. - - Specifies the number of pixels in the detail resolution map. A larger detailResolution, leads to more accurate detail object painting. - Specifies the size in pixels of each individually rendered detail patch. A larger number reduces draw calls, but might increase triangle count since detail patches are culled on a per batch basis. A recommended value is 16. If you use a very large detail object distance and your grass is very sparse, it makes sense to increase the value. - - - - Set an array of heightmap samples. - - First x index of heightmap samples to set. - First y index of heightmap samples to set. - Array of heightmap samples to set (values range from 0 to 1, array indexed as [y,x]). - - - - Set an array of heightmap samples. - - First x index of heightmap samples to set. - First y index of heightmap samples to set. - Array of heightmap samples to set (values range from 0 to 1, array indexed as [y,x]). - - - - Set the tree instance with new parameters at the specified index. However, TreeInstance.prototypeIndex and TreeInstance.position can not be changed otherwise an ArgumentException will be thrown. - - The index of the tree instance. - The new TreeInstance value. - - - - Triggers an update to integrate modifications done to the heightmap outside of unity. - - Start X position of the dirty heightmap region. - Start Y position of the dirty heightmap region. - Width of the the dirty heightmap region. - Width of the the dirty heightmap region. - - - - Extension methods to the Terrain class, used only for the UpdateGIMaterials method used by the Global Illumination System. - - - - - Schedules an update of the albedo and emissive Textures of a system that contains the Terrain. - - - - - - - - - - Schedules an update of the albedo and emissive Textures of a system that contains the Terrain. - - - - - - - - - - Description of a terrain layer. - - - - - A Vector4 value specifying the maximum RGBA value that the diffuse texture maps to when the value of the channel is 1. - - - - - A Vector4 value specifying the minimum RGBA value that the diffuse texture maps to when the value of the channel is 0. - - - - - The diffuse texture used by the terrain layer. - - - - - A Vector4 value specifying the maximum RGBA value that the mask map texture maps to when the value of the channel is 1. - - - - - A Vector4 value specifying the minimum RGBA value that the mask map texture maps to when the value of the channel is 0. - - - - - The mask map texture used by the terrain layer. - - - - - Metallic factor used by the terrain layer. - - - - - Normal map texture used by the terrain layer. - - - - - A float value that scales the normal vector. The minimum value is 0, the maximum value is 1. - - - - - Smoothness of the specular reflection. - - - - - Specular color. - - - - - UV tiling offset. - - - - - UV Tiling size. - - - - - Enum provding terrain rendering options. - - - - - Render all options. - - - - - Render terrain details. - - - - - Render heightmap. - - - - - Render trees. - - - - - Error states used by the TerrainMap. - - - - - Indicates that the adjacent terrain tiles are not aligned edge to edge. - - - - - No error detected. - - - - - Indicates that there are two terrain tiles occupying one grid cell in the TerrainMap. - - - - - Indicates that the adjacent terrain tiles have different sizes. - - - - - Terrain map filter. - - Terrain object to apply filter to. - - - - Specifies a set of 2D tile coordinates. - - - - - Tile X coordinate. - - - - - Tile Z coordinate. - - - - - How multiline text should be aligned. - - - - - Text lines are centered. - - - - - Text lines are aligned on the left side. - - - - - Text lines are aligned on the right side. - - - - - Where the anchor of the text is placed. - - - - - Text is anchored in lower side, centered horizontally. - - - - - Text is anchored in lower left corner. - - - - - Text is anchored in lower right corner. - - - - - Text is centered both horizontally and vertically. - - - - - Text is anchored in left side, centered vertically. - - - - - Text is anchored in right side, centered vertically. - - - - - Text is anchored in upper side, centered horizontally. - - - - - Text is anchored in upper left corner. - - - - - Text is anchored in upper right corner. - - - - - Attribute to make a string be edited with a height-flexible and scrollable text area. - - - - - The maximum amount of lines the text area can show before it starts using a scrollbar. - - - - - The minimum amount of lines the text area will use. - - - - - Attribute to make a string be edited with a height-flexible and scrollable text area. - - The minimum amount of lines the text area will use. - The maximum amount of lines the text area can show before it starts using a scrollbar. - - - - Attribute to make a string be edited with a height-flexible and scrollable text area. - - The minimum amount of lines the text area will use. - The maximum amount of lines the text area can show before it starts using a scrollbar. - - - - Text file assets. - - - - - The raw bytes of the text asset. (Read Only) - - - - - The text contents of the .txt file as a string. (Read Only) - - - - - Create a new TextAsset with the specified text contents. - -This constructor creates a TextAsset, which is not the same as a plain text file. When saved to disk using the AssetDatabase class, the TextAsset should be saved with the .asset extension. - - The text contents for the TextAsset. - - - - Returns the contents of the TextAsset. - - - - - Different methods for how the GUI system handles text being too large to fit the rectangle allocated. - - - - - Text gets clipped to be inside the element. - - - - - Text flows freely outside the element. - - - - - A structure that contains information about a given typeface and for a specific point size. - - - - - The Ascent line is typically located at the top of the tallest glyph in the typeface. - - - - - The Baseline is an imaginary line upon which all glyphs appear to rest on. - - - - - The Cap line is typically located at the top of capital letters. - - - - - The Descent line is typically located at the bottom of the glyph with the lowest descender in the typeface. - - - - - The name of the font typeface also known as family name. - - - - - The line height represents the distance between consecutive lines of text. - - - - - The Mean line is typically located at the top of lowercase letters. - - - - - The point size used for sampling the typeface. - - - - - The relative scale of the typeface. - - - - - The position of the strikethrough. - - - - - The thickness of the strikethrough. - - - - - The style name of the typeface which defines both the visual style and weight of the typeface. - - - - - The position of characters using subscript. - - - - - The relative size / scale of subscript characters. - - - - - The position of characters using superscript. - - - - - The relative size / scale of superscript characters. - - - - - The width of the tab character. - - - - - The position of the underline. - - - - - The thickness of the underline. - - - - - Compares the information in this FaceInfo structure with the information in the given FaceInfo structure to determine whether they have the same values. - - The FaceInfo structure to compare this FaceInfo structure with. - - Returns true if the FaceInfo structures have the same values. False if not. - - - - - A Glyph is the visual representation of a text element or character. - - - - - The index of the atlas texture that contains this glyph. - - - - - A rectangle that defines the position of a glyph within an atlas texture. - - - - - The index of the glyph in the source font file. - - - - - The metrics that define the size, position and spacing of a glyph when performing text layout. - - - - - The relative scale of the glyph. The default value is 1.0. - - - - - Compares two glyphs to determine if they have the same values. - - The glyph to compare with. - - Returns true if the glyphs have the same values. False if not. - - - - - Constructor for a new glyph. - - Glyph used as a reference for the new glyph. - The index of the glyph in the font file. - The metrics of the glyph. - The GlyphRect defining the position of the glyph in the atlas texture. - The relative scale of the glyph. - The index of the atlas texture that contains the glyph. - - - - Constructor for a new glyph. - - Glyph used as a reference for the new glyph. - The index of the glyph in the font file. - The metrics of the glyph. - The GlyphRect defining the position of the glyph in the atlas texture. - The relative scale of the glyph. - The index of the atlas texture that contains the glyph. - - - - Constructor for a new glyph. - - Glyph used as a reference for the new glyph. - The index of the glyph in the font file. - The metrics of the glyph. - The GlyphRect defining the position of the glyph in the atlas texture. - The relative scale of the glyph. - The index of the atlas texture that contains the glyph. - - - - Constructor for a new glyph. - - Glyph used as a reference for the new glyph. - The index of the glyph in the font file. - The metrics of the glyph. - The GlyphRect defining the position of the glyph in the atlas texture. - The relative scale of the glyph. - The index of the atlas texture that contains the glyph. - - - - A set of values that define the size, position and spacing of a glyph when performing text layout. - - - - - The height of the glyph. - - - - - The horizontal distance to increase (left to right) or decrease (right to left) the drawing position relative to the origin of the text element. - - - - - The horizontal distance from the current drawing position (origin) relative to the element's left bounding box edge (bbox). - - - - - The vertical distance from the current baseline relative to the element's top bounding box edge (bbox). - - - - - The width of the glyph. - - - - - Constructs a new GlyphMetrics structure. - - The width of the glyph. - The height of the glyph. - The horizontal bearingX. - The horizontal bearingY. - The horizontal advance. - - - - A rectangle that defines the position of a glyph within an atlas texture. - - - - - The height of the glyph. - - - - - The width of the glyph. - - - - - The x position of the glyph in the font atlas texture. - - - - - The y position of the glyph in the font atlas texture. - - - - - A GlyphRect with all values set to zero. Shorthand for writing GlyphRect(0, 0, 0, 0). - - - - - Constructor for a new GlyphRect. - - The x position of the glyph in the atlas texture. - The y position of the glyph in the atlas texture. - The width of the glyph. - The height of the glyph. - The Rect used to construct the new GlyphRect. - - - - Constructor for a new GlyphRect. - - The x position of the glyph in the atlas texture. - The y position of the glyph in the atlas texture. - The width of the glyph. - The height of the glyph. - The Rect used to construct the new GlyphRect. - - - - The FontEngine is used to access data from source font files. This includes information about individual characters, glyphs and relevant metrics typically used in the process of text parsing, layout and rendering. - -The types of font files supported are TrueType (.ttf, .ttc) and OpenType (.otf). - -The FontEngine is also used to raster the visual representation of characters known as glyphs in a given font atlas texture. - - - - - Destroy and unload resources used by the Font Engine. - - - A value of zero (0) if the Font Engine and used resources were successfully released. - - - - - Get the FaceInfo for the currently loaded and sized typeface. - - - Returns the FaceInfo of the currently loaded typeface. - - - - - Initialize the Font Engine and required resources. - - - A value of zero (0) if the initialization of the Font Engine was successful. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Load a source font file. - - The path of the source font file relative to the project. - The point size used to scale the font face. - An array that contains the font file. - The font to load the data from. The Unity font must be set to Dynamic mode with Include Font Data selected. - - A value of zero (0) if the font face was loaded successfully. - - - - - Set the size of the currently loaded font face. - - The point size used to scale the font face. - - A value of zero (0) if the font face was successfully scaled to the given point size. - - - - - Try to get the glyph index for the character at the given Unicode value. - - The unicode value of the character for which to lookup the glyph index. - The index of the glyph for the given unicode character or the .notdef glyph (index 0) if no glyph is available for the given Unicode value. - - Returns true if the given unicode has a glyph index. - - - - - Try loading the glyph for the given index value and if available populate the glyph. - - The index of the glyph that should be loaded. - The glyph loading flag that should be used to load the glyph. - The glyph using the provided index or the .notdef glyph (index 0) if no glyph was found at that index. - - Returns true if a glyph exists at the given index. Otherwise returns false. - - - - - Try loading a glyph for the given unicode value. If available, populates the glyph and returns true. Otherwise returns false and populates the glyph with the .notdef / missing glyph data. - - The glyph loading flag that should be used to load the glyph. - The glyph using the provided index or the .notdef glyph (index 0) if no glyph was found at that index. - The Unicode value of the character whose glyph should be loaded. - - Returns true if a glyph exists for the given unicode value. Otherwise returns false. - - - - - Error code returned by the various FontEngine functions. - - - - - Error code returned when the FontEngine glyph packing or rendering process has been cancelled. - - - - - Error code returned by the LoadGlyph function when referencing an invalid Unicode character value. - - - - - Error code indicating an invalid font face. - - - - - Error code indicating an invalid font file. - - - - - Error code returned by the LoadFontFace function when the source font file is of an unknown or invalid format. - - - - - Error code returned by the LoadFontFace function when the file path to the source font file appears invalid. - - - - - Error code returned by the LoadFontFace function when the source font file appears invalid or improperly formatted. - - - - - Error code returned by the LoadGlyph function when referencing an invalid or out of range glyph index value. - - - - - Error code indicating failure to initialize the font engine library. - - - - - Error code indicating failure to initialize the font engine library and / or successfully load a font face. - - - - - Error code returned by the LoadGlyph or SetFaceSize functions using an invalid pointSize value. - - - - - Error code indicating failure to load one of the tables of the font file. - - - - - Error code returned when the function was successfully executed. - - - - - The various options (flags) used by the FontEngine when loading glyphs from a font face. - - - - - Load glyph metrics without allocating and loading the bitmap data. - - - - - Load glyph metrics without using the 'hdmx' table. This flag is mostly used to validate font data. - - - - - Load glyph metrics and bitmap representation if available for the current face size. - - - - - Load glyphs using the auto hinter instead of the font's native hinter. - - - - - Load glyph metrics and render outline using 1-bit monochrome. - - - - - Load glyphs using the font's native hinter. - - - - - Load glyphs and ignore embedded bitmap strikes. - - - - - Load glyphs without hinting. - - - - - Load glyphs at default font units without scaling. This flag implies LOAD_NO_HINTING and LOAD_NO_BITMAP and unsets LOAD_RENDER. - - - - - Load glyph metrics and render outline using 8-bit or antialiased image of the glyph. - - - - - The modes available when packing glyphs into an atlas texture. - - - - - Place the glyph into the smallest free space available in which it can fit. - - - - - Place the glyph against the longer side of a free space to minimize the length of the longer leftover side. - - - - - Place the glyph against the short side of a free space to minimize the length of the shorter leftover side. - - - - - Place the glyph into available free space in a Tetris like fashion. - - - - - Place the glyph into the available free space by trying to maximize the contact point between it and other glyphs. - - - - - The rendering modes used by the Font Engine to render glyphs. - - - - - Renders a bitmap representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with no hinting. - - - - - Renders a bitmap representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with no hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with no hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with no hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from a binary (1-bit monochrome) image of the glyph outline with no hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from an 8-bit or antialiased image of the glyph outline with no hinting. - - - - - Renders a signed distance field (SDF) representation of the glyph from an 8-bit or antialiased image of the glyph outline with hinting. - - - - - Renders a bitmap representation of the glyph from an 8-bit or antialiased image of the glyph outline with no hinting. - - - - - Renders a bitmap representation of the glyph from an 8-bit or antialiased image of the glyph outline with hinting. - - - - - A struct that stores the settings for TextGeneration. - - - - - Use the extents of glyph geometry to perform horizontal alignment rather than glyph metrics. - - - - - The base color for the text generation. - - - - - Font to use for generation. - - - - - Font size. - - - - - Font style. - - - - - Continue to generate characters even if the text runs out of bounds. - - - - - Extents that the generator will attempt to fit the text in. - - - - - What happens to text when it reaches the horizontal generation bounds. - - - - - The line spacing multiplier. - - - - - Generated vertices are offset by the pivot. - - - - - Should the text be resized to fit the configured bounds? - - - - - Maximum size for resized text. - - - - - Minimum size for resized text. - - - - - Allow rich text markup in generation. - - - - - A scale factor for the text. This is useful if the Text is on a Canvas and the canvas is scaled. - - - - - How is the generated text anchored. - - - - - Should the text generator update the bounds from the generated text. - - - - - What happens to text when it reaches the bottom generation bounds. - - - - - Class that can be used to generate text for rendering. - - - - - The number of characters that have been generated. - - - - - The number of characters that have been generated and are included in the visible lines. - - - - - Array of generated characters. - - - - - The size of the font that was found if using best fit mode. - - - - - Number of text lines generated. - - - - - Information about each generated text line. - - - - - Extents of the generated text in rect format. - - - - - Number of vertices generated. - - - - - Array of generated vertices. - - - - - Create a TextGenerator. - - - - - - Create a TextGenerator. - - - - - - Populate the given List with UICharInfo. - - List to populate. - - - - Returns the current UICharInfo. - - - Character information. - - - - - Populate the given list with UILineInfo. - - List to populate. - - - - Returns the current UILineInfo. - - - Line information. - - - - - Given a string and settings, returns the preferred height for a container that would hold this text. - - Generation text. - Settings for generation. - - Preferred height. - - - - - Given a string and settings, returns the preferred width for a container that would hold this text. - - Generation text. - Settings for generation. - - Preferred width. - - - - - Populate the given list with generated Vertices. - - List to populate. - - - - Returns the current UIVertex array. - - - Vertices. - - - - - Mark the text generator as invalid. This will force a full text generation the next time Populate is called. - - - - - Will generate the vertices and other data for the given string with the given settings. - - String to generate. - Settings. - - - - Will generate the vertices and other data for the given string with the given settings. - - String to generate. - Generation settings. - The object used as context of the error log message, if necessary. - - True if the generation is a success, false otherwise. - - - - - A script interface for the. - - - - - How lines of text are aligned (Left, Right, Center). - - - - - Which point of the text shares the position of the Transform. - - - - - The size of each character (This scales the whole text). - - - - - The color used to render the text. - - - - - The Font used. - - - - - The font size to use (for dynamic fonts). - - - - - The font style to use (for dynamic fonts). - - - - - How much space will be in-between lines of text. - - - - - How far should the text be offset from the transform.position.z when drawing. - - - - - Enable HTML-style tags for Text Formatting Markup. - - - - - How much space will be inserted for a tab '\t' character. This is a multiplum of the 'spacebar' character offset. - - - - - The text that is displayed. - - - - - Base class for texture handling. Contains functionality that is common to both Texture2D and RenderTexture classes. - - - - - Anisotropic filtering level of the texture. - - - - - The amount of memory currently being used by textures. - - - - - This amount of texture memory would be used before the texture streaming budget is applied. - - - - - Dimensionality (type) of the texture (Read Only). - - - - - Filtering mode of the texture. - - - - - Height of the texture in pixels. (Read Only) - - - - - The hash value of the Texture. - - - - - Returns true if the Read/Write Enabled checkbox was checked when the texture was imported; otherwise returns false. For a dynamic Texture created from script, always returns true. For additional information, see TextureImporter.isReadable. - - - - - Mip map bias of the texture. - - - - - Number of non-streaming textures. - - - - - Total amount of memory being used by non-streaming textures. - - - - - How many times has a texture been uploaded due to texture mipmap streaming. - - - - - Number of renderers registered with the texture streaming system. - - - - - Number of streaming textures. - - - - - Force the streaming texture system to discard all unused mipmaps immediately, rather than caching them until the texture memory budget is exceeded. - - - - - Force streaming textures to load all mipmap levels. - - - - - Number of streaming textures with mipmaps currently loading. - - - - - Number of streaming textures with outstanding mipmaps to be loaded. - - - - - The amount of memory used by textures after the mipmap streaming and budget are applied and loading is complete. - - - - - The total amount of memory that would be used by all textures at mipmap level 0. - - - - - This counter is incremented when the texture is updated. - - - - - Width of the texture in pixels. (Read Only) - - - - - Texture coordinate wrapping mode. - - - - - Texture U coordinate wrapping mode. - - - - - Texture V coordinate wrapping mode. - - - - - Texture W coordinate wrapping mode for Texture3D. - - - - - Retrieve a native (underlying graphics API) pointer to the texture resource. - - - Pointer to an underlying graphics API texture resource. - - - - - Increment the update counter. - - - - - Sets Anisotropic limits. - - - - - - - Uploads additional debug information to materials using textures set to stream mip maps. - - - - - Class for texture handling. - - - - - Indicates whether this texture was imported with TextureImporter.alphaIsTransparency enabled. This setting is available only in the Editor scripts. Note that changing this setting will have no effect; it must be enabled in TextureImporter instead. - - - - - Get a small texture with all black pixels. - - - - - The mipmap level which would have been loaded by the streaming system before memory budgets are applied. - - - - - The format of the pixel data in the texture (Read Only). - - - - - Returns true if the Read/Write Enabled checkbox was checked when the texture was imported; otherwise returns false. For a dynamic Texture created from script, always returns true. For additional information, see TextureImporter.isReadable. - - - - - Which mipmap level is currently loaded by the streaming system. - - - - - Which mipmap level is in the process of being loaded by the mipmap streaming system. - - - - - How many mipmap levels are in this texture (Read Only). - - - - - The mipmap level to load. - - - - - Has mipmap streaming been enabled for this texture. - - - - - Relative priority for this texture when reducing memory size in order to hit the memory budget. - - - - - Get a small texture with all white pixels. - - - - - Actually apply all previous SetPixel and SetPixels changes. - - When set to true, mipmap levels are recalculated. - When set to true, system memory copy of a texture is released. - - - - Resets the requestedMipmapLevel field. - - - - - Compress texture into DXT format. - - - - - - Creates Unity Texture out of externally created native texture object. - - Native 2D texture object. - Width of texture in pixels. - Height of texture in pixels. - Format of underlying texture object. - Does the texture have mipmaps? - Is texture using linear color space? - - - - - Create a new empty texture. - - - - - - - Create a new empty texture. - - - - - - - - - Create a new empty texture. - - - - - - - - - - Flags used to control the encoding to an EXR file. - - - - - This texture will use Wavelet compression. This is best used for grainy images. - - - - - The texture will use RLE (Run Length Encoding) EXR compression format (similar to Targa RLE compression). - - - - - The texture will use the EXR ZIP compression format. - - - - - No flag. This will result in an uncompressed 16-bit float EXR file. - - - - - The texture will be exported as a 32-bit float EXR file (default is 16-bit). - - - - - Packs a set of rectangles into a square atlas, with optional padding between rectangles. - - An array of rectangle dimensions. - Amount of padding to insert between adjacent rectangles in the atlas. - The size of the atlas. - - If the function succeeds, this will contain the packed rectangles. Otherwise, the return value is null. - - - - - Returns pixel color at coordinates (x, y). - - - - - - - Returns filtered pixel color at normalized coordinates (u, v). - - - - - - - Get the pixel colors from the texture. - - The mipmap level to fetch the pixels from. Defaults to zero. - - The array of all pixels in the mipmap level of the texture. - - - - - Get a block of pixel colors. - - The x position of the pixel array to fetch. - The y position of the pixel array to fetch. - The width length of the pixel array to fetch. - The height length of the pixel array to fetch. - The mipmap level to fetch the pixels. Defaults to zero, and is - optional. - - The array of pixels in the texture that have been selected. - - - - - Get a block of pixel colors in Color32 format. - - - - - - Get raw data from a texture for reading or writing. - - - Raw texture data view. - - - - - Get raw data from a texture. - - - Raw texture data as a byte array. - - - - - Has the mipmap level requested by setting requestedMipmapLevel finished loading? - - - True if the mipmap level requested by setting requestedMipmapLevel has finished loading. - - - - - Fills texture pixels with raw preformatted data. - - Raw data array to initialize texture pixels with. - Size of data in bytes. - - - - Fills texture pixels with raw preformatted data. - - Raw data array to initialize texture pixels with. - Size of data in bytes. - - - - Fills texture pixels with raw preformatted data. - - Raw data array to initialize texture pixels with. - Size of data in bytes. - - - - Packs multiple Textures into a texture atlas. - - Array of textures to pack into the atlas. - Padding in pixels between the packed textures. - Maximum size of the resulting texture. - Should the texture be marked as no longer readable? - - An array of rectangles containing the UV coordinates in the atlas for each input texture, or null if packing fails. - - - - - Read pixels from screen into the saved texture data. - - Rectangular region of the view to read from. Pixels are read from current render target. - Horizontal pixel position in the texture to place the pixels that are read. - Vertical pixel position in the texture to place the pixels that are read. - Should the texture's mipmaps be recalculated after reading? - - - - Resizes the texture. - - - - - - - - - Resizes the texture. - - - - - - - Sets pixel color at coordinates (x,y). - - - - - - - - Set a block of pixel colors. - - The array of pixel colours to assign (a 2D image flattened to a 1D array). - The mip level of the texture to write to. - - - - Set a block of pixel colors. - - - - - - - - - - - Set a block of pixel colors. - - - - - - - Set a block of pixel colors. - - - - - - - - - - - Updates Unity texture to use different native texture object. - - Native 2D texture object. - - - - Class for handling 2D texture arrays. - - - - - Number of elements in a texture array (Read Only). - - - - - Texture format (Read Only). - - - - - Returns true if this texture array is Read/Write Enabled; otherwise returns false. For dynamic textures created from script, always returns true. - - - - - Actually apply all previous SetPixels changes. - - When set to true, mipmap levels are recalculated. - When set to true, system memory copy of a texture is released. - - - - Create a new texture array. - - Width of texture array in pixels. - Height of texture array in pixels. - Number of elements in the texture array. - Format of the texture. - Should mipmaps be created? - Does the texture contain non-color data (i.e. don't do any color space conversions when sampling)? Default is false. - - - - - - Create a new texture array. - - Width of texture array in pixels. - Height of texture array in pixels. - Number of elements in the texture array. - Format of the texture. - Should mipmaps be created? - Does the texture contain non-color data (i.e. don't do any color space conversions when sampling)? Default is false. - - - - - - Returns pixel colors of a single array slice. - - Array slice to read pixels from. - Mipmap level to read pixels from. - - Array of pixel colors. - - - - - Returns pixel colors of a single array slice. - - Array slice to read pixels from. - Mipmap level to read pixels from. - - Array of pixel colors in low precision (8 bits/channel) format. - - - - - Set pixel colors for the whole mip level. - - An array of pixel colors. - The texture array element index. - The mip level. - - - - Set pixel colors for the whole mip level. - - An array of pixel colors. - The texture array element index. - The mip level. - - - - Class for handling 3D Textures, Use this to create. - - - - - The depth of the texture (Read Only). - - - - - The format of the pixel data in the texture (Read Only). - - - - - Returns true if this 3D texture is Read/Write Enabled; otherwise returns false. For dynamic textures created from script, always returns true. - - - - - Actually apply all previous SetPixels changes. - - When set to true, mipmap levels are recalculated. - When set to true, system memory copy of a texture is released. - - - - Create a new empty 3D Texture. - - Width of texture in pixels. - Height of texture in pixels. - Depth of texture in pixels. - Texture data format. - Should the texture have mipmaps? - - - - - - Returns an array of pixel colors representing one mip level of the 3D texture. - - - - - - Returns an array of pixel colors representing one mip level of the 3D texture. - - - - - - Sets pixel colors of a 3D texture. - - The colors to set the pixels to. - The mipmap level to be affected by the new colors. - - - - Sets pixel colors of a 3D texture. - - The colors to set the pixels to. - The mipmap level to be affected by the new colors. - - - - Compression Quality. - - - - - Best compression. - - - - - Fast compression. - - - - - Normal compression (default). - - - - - Format used when creating textures from scripts. - - - - - Alpha-only texture format. - - - - - Color with alpha texture format, 8-bits per channel. - - - - - A 16 bits/pixel texture format. Texture stores color with an alpha channel. - - - - - ASTC (10x10 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (12x12 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (4x4 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (5x5 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (6x6 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (8x8 pixel block in 128 bits) compressed RGB texture format. - - - - - ASTC (10x10 pixel block in 128 bits) compressed RGBA texture format. - - - - - ASTC (12x12 pixel block in 128 bits) compressed RGBA texture format. - - - - - ASTC (4x4 pixel block in 128 bits) compressed RGBA texture format. - - - - - ASTC (5x5 pixel block in 128 bits) compressed RGBA texture format. - - - - - ASTC (6x6 pixel block in 128 bits) compressed RGBA texture format. - - - - - ASTC (8x8 pixel block in 128 bits) compressed RGBA texture format. - - - - - Compressed one channel (R) texture format. - - - - - Compressed two-channel (RG) texture format. - - - - - HDR compressed color texture format. - - - - - High quality compressed color texture format. - - - - - Color with alpha texture format, 8-bits per channel. - - - - - Compressed color texture format. - - - - - Compressed color texture format with Crunch compression for smaller storage sizes. - - - - - Compressed color with alpha channel texture format. - - - - - Compressed color with alpha channel texture format with Crunch compression for smaller storage sizes. - - - - - ETC2 EAC (GL ES 3.0) 4 bitspixel compressed unsigned single-channel texture format. - - - - - ETC2 EAC (GL ES 3.0) 4 bitspixel compressed signed single-channel texture format. - - - - - ETC2 EAC (GL ES 3.0) 8 bitspixel compressed unsigned dual-channel (RG) texture format. - - - - - ETC2 EAC (GL ES 3.0) 8 bitspixel compressed signed dual-channel (RG) texture format. - - - - - ETC (GLES2.0) 4 bits/pixel compressed RGB texture format. - - - - - ETC 4 bits/pixel compressed RGB texture format. - - - - - Compressed color texture format with Crunch compression for smaller storage sizes. - - - - - ETC 4 bitspixel RGB + 4 bitspixel Alpha compressed texture format. - - - - - ETC2 (GL ES 3.0) 4 bits/pixel compressed RGB texture format. - - - - - ETC2 (GL ES 3.0) 4 bits/pixel RGB+1-bit alpha texture format. - - - - - ETC2 (GL ES 3.0) 8 bits/pixel compressed RGBA texture format. - - - - - Compressed color with alpha channel texture format using Crunch compression for smaller storage sizes. - - - - - PowerVR (iOS) 2 bits/pixel compressed color texture format. - - - - - PowerVR (iOS) 4 bits/pixel compressed color texture format. - - - - - PowerVR (iOS) 2 bits/pixel compressed with alpha channel texture format. - - - - - PowerVR (iOS) 4 bits/pixel compressed with alpha channel texture format. - - - - - Single channel (R) texture format, 16 bit integer. - - - - - Single channel (R) texture format, 8 bit integer. - - - - - Scalar (R) texture format, 32 bit floating point. - - - - - Two color (RG) texture format, 8-bits per channel. - - - - - Color texture format, 8-bits per channel. - - - - - A 16 bit color texture format. - - - - - RGB HDR format, with 9 bit mantissa per channel and a 5 bit shared exponent. - - - - - Color with alpha texture format, 8-bits per channel. - - - - - Color and alpha texture format, 4 bit per channel. - - - - - RGB color and alpha texture format, 32-bit floats per channel. - - - - - RGB color and alpha texture format, 16 bit floating point per channel. - - - - - Two color (RG) texture format, 32 bit floating point per channel. - - - - - Two color (RG) texture format, 16 bit floating point per channel. - - - - - Scalar (R) texture format, 16 bit floating point. - - - - - A format that uses the YUV color space and is often used for video encoding or playback. - - - - - Wrap mode for textures. - - - - - Clamps the texture to the last pixel at the edge. - - - - - Tiles the texture, creating a repeating pattern by mirroring it at every integer boundary. - - - - - Mirrors the texture once, then clamps to edge pixels. - - - - - Tiles the texture, creating a repeating pattern. - - - - - Priority of a thread. - - - - - Below normal thread priority. - - - - - Highest thread priority. - - - - - Lowest thread priority. - - - - - Normal thread priority. - - - - - Class passed onto when information is queried from the tiles. - - - - - Returns the boundaries of the Tilemap in cell size. - - - - - Returns the boundaries of the Tilemap in local space size. - - - - - The origin of the Tilemap in cell position. - - - - - The size of the Tilemap in cells. - - - - - Gets the color of a. - - Position of the Tile on the Tilemap. - - Color of the at the XY coordinate. - - - - - Returns the component of type T if the GameObject of the tile map has one attached, null if it doesn't. - - - The Component of type T to retrieve. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - Sprite at the XY coordinate. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - placed at the cell. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - placed at the cell. - - - - - Gets the TileFlags of the Tile at the given position. - - Position of the Tile on the Tilemap. - - TileFlags from the Tile. - - - - - Gets the transform matrix of a. - - Position of the Tile on the Tilemap. - - The transform matrix. - - - - - Refreshes a. - - Position of the Tile on the Tilemap. - - - - Class for a default tile in the Tilemap. - - - - - Color of the Tile. - - - - - TileFlags of the Tile. - - - - - GameObject of the Tile. - - - - - Sprite to be rendered at the Tile. - - - - - Matrix4x4|Transform matrix of the Tile. - - - - - Enum for determining what collider shape is generated for this Tile by the TilemapCollider2D. - - - - - The grid layout boundary outline is used as the collider shape for the Tile by the TilemapCollider2D. - - - - - No collider shape is generated for the Tile by the TilemapCollider2D. - - - - - The Sprite outline is used as the collider shape for the Tile by the TilemapCollider2D. - - - - - Retrieves the tile rendering data for the Tile. - - Position of the Tile on the Tilemap. - The Tilemap the tile is present on. - Data to render the tile. This is filled with Tile, Tile.color and Tile.transform. - - Whether the call was successful. This returns true for Tile. - - - - - A Struct for the required data for animating a Tile. - - - - - The array of that are ordered by appearance in the animation. - - - - - The animation speed. - - - - - The start time of the animation. The animation will begin at this time offset. - - - - - Base class for a tile in the Tilemap. - - - - - Retrieves any tile animation data from the scripted tile. - - Position of the Tile on the Tilemap. - The Tilemap the tile is present on. - Data to run an animation on the tile. - - Whether the call was successful. - - - - - Retrieves any tile rendering data from the scripted tile. - - Position of the Tile on the Tilemap. - The Tilemap the tile is present on. - Data to render the tile. - - Whether the call was successful. - - - - - This method is called when the tile is refreshed. - - Position of the Tile on the Tilemap. - The Tilemap the tile is present on. - - - - StartUp is called on the first frame of the running Scene. - - Position of the Tile on the Tilemap. - The Tilemap the tile is present on. - The GameObject instantiated for the Tile. - - Whether the call was successful. - - - - - A Struct for the required data for rendering a Tile. - - - - - Color of the Tile. - - - - - TileFlags of the Tile. - - - - - GameObject of the Tile. - - - - - Sprite to be rendered at the Tile. - - - - - Matrix4x4|Transform matrix of the Tile. - - - - - Flags controlling behavior for the TileBase. - - - - - TileBase does not instantiate its associated GameObject in editor mode and instantiates it only during play mode. - - - - - All lock flags. - - - - - TileBase locks any color set by brushes or the user. - - - - - TileBase locks any transform matrix set by brushes or the user. - - - - - No TileFlags are set. - - - - - The tile map stores component. - - - - - The frame rate for all tile animations in the tile map. - - - - - Returns the boundaries of the Tilemap in cell size. - - - - - The color of the tile map layer. - - - - - The origin of the Tilemap in cell position inclusive of editor preview tiles. - - - - - The size of the Tilemap in cells inclusive of editor preview tiles. - - - - - Gets the Grid associated with this tile map. - - - - - Gets the Grid associated with this tile map. - - - - - Returns the boundaries of the Tilemap in local space size. - - - - - Orientation of the tiles in the Tilemap. - - - - - Orientation Matrix of the orientation of the tiles in the Tilemap. - - - - - The origin of the Tilemap in cell position. - - - - - The size of the Tilemap in cells. - - - - - Gets the anchor point of tiles in the Tilemap. - - - - - Adds the TileFlags onto the Tile at the given position. - - Position of the Tile on the Tilemap. - TileFlags to add (with bitwise or) onto the flags provided by Tile.TileBase. - - - - Does a box fill with the given. Starts from given coordinates and fills the limits from start to end (inclusive). - - Position of the Tile on the Tilemap. - to place. - The minimum X coordinate limit to fill to. - The minimum Y coordinate limit to fill to. - The maximum X coordinate limit to fill to. - The maximum Y coordinate limit to fill to. - - - - Clears all editor preview tiles that are placed in the Tilemap. - - - - - Clears all tiles that are placed in the Tilemap. - - - - - Compresses the origin and size of the Tilemap to bounds where tiles exist. - - - - - Returns true if the Tilemap contains the given. Returns false if not. - - Tile to check. - - Whether the Tilemap contains the tile. - - - - - Does an editor preview of a box fill with the given. Starts from given coordinates and fills the limits from start to end (inclusive). - - Position of the Tile on the Tilemap. - to place. - The start X coordinate limit to fill to. - The start Y coordinate limit to fill to. - The ending X coordinate limit to fill to. - The ending Y coordinate limit to fill to. - - - - Does an editor preview of a flood fill with the given starting from the given coordinates. - - Start position of the flood fill on the Tilemap. - TileBase to place. - - - - Does a flood fill with the given starting from the given coordinates. - - Start position of the flood fill on the Tilemap. - to place. - - - - Get the logical center coordinate of a grid cell in local space. - - Grid cell position. - - Center of the cell transformed into local space coordinates. - - - - - Get the logical center coordinate of a grid cell in world space. - - Grid cell position. - - Center of the cell transformed into world space coordinates. - - - - - Gets the collider type of a. - - Position of the Tile on the Tilemap. - - Collider type of the at the XY coordinate. - - - - - Gets the color of a. - - Position of the Tile on the Tilemap. - - Color of the at the XY coordinate. - - - - - Gets the Color of an editor preview. - - Position of the Tile on the Tilemap. - - Color of the editor preview at the XY coordinate. - - - - - Gets the. - - Position of the editor preview Tile on the Tilemap. - - Sprite at the XY coordinate. - - - - - Gets the editor preview. - - Position of the editor preview Tile on the Tilemap. - - The editor preview placed at the cell. - - - - - Gets the editor preview. - - Position of the editor preview Tile on the Tilemap. - - The editor preview placed at the cell. - - - - - Gets the TileFlags of the editor preview Tile at the given position. - - Position of the Tile on the Tilemap. - - TileFlags from the editor preview Tile. - - - - - Gets the transform matrix of an editor preview. - - Position of the editor preview Tile on the Tilemap. - - The transform matrix. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - GameObject instantiated by the Tile at the position. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - Sprite at the XY coordinate. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - Tilemaps.TileBase placed at the cell. - - - - - Gets the. - - Position of the Tile on the Tilemap. - - Tilemaps.TileBase|Tile of type T placed at the cell. - - - - - Gets the TileFlags of the Tile at the given position. - - Position of the Tile on the Tilemap. - - TileFlags from the Tile. - - - - - Retrieves an array of tiles with the given bounds. - - Bounds to retrieve from. - - An array of at the given bounds. - - - - - Gets the transform matrix of a. - - Position of the Tile on the Tilemap. - - The transform matrix. - - - - - Get the total number of different. - - - The total number of different. - - - - - Fills the given array with the total number of different and returns the number of tiles filled. - - The array to be filled. - - The number of tiles filled. - - - - - Returns whether there is an editor preview tile at the position. - - Position to check. - - True if there is an editor preview tile at the position. False if not. - - - - - Returns whether there is a tile at the position. - - Position to check. - - True if there is a tile at the position. False if not. - - - - - Determines the orientation of. - - - - - Use a custom orientation to all tiles in the tile map. - - - - - Orients tiles in the XY plane. - - - - - Orients tiles in the XZ plane. - - - - - Orients tiles in the YX plane. - - - - - Orients tiles in the YZ plane. - - - - - Orients tiles in the ZX plane. - - - - - Orients tiles in the ZY plane. - - - - - Refreshes all. The tile map will retrieve the rendering data, animation data and other data for all tiles and update all relevant components. - - - - - Refreshes a. - - Position of the Tile on the Tilemap. - - - - Removes the TileFlags onto the Tile at the given position. - - Position of the Tile on the Tilemap. - TileFlags to remove from the Tile. - - - - Resizes tiles in the Tilemap to bounds defined by origin and size. - - - - - Sets the collider type of a. - - Position of the Tile on the Tilemap. - Collider type to set the to at the XYZ coordinate. - - - - Sets the color of a. - - Position of the Tile on the Tilemap. - Color to set the to at the XY coordinate. - - - - Sets the color of an editor preview. - - Position of the editor preview Tile on the Tilemap. - Color to set the editor preview to at the XY coordinate. - - - - Sets an editor preview. - - Position of the editor preview Tile on the Tilemap. - The editor preview to be placed the cell. - - - - Sets the transform matrix of an editor preview tile given the XYZ coordinates of a cell in the. - - Position of the editor preview Tile on the Tilemap. - The transform matrix. - - - - Sets a. - - Position of the Tile on the Tilemap. - to be placed the cell. - - - - Sets the TileFlags onto the Tile at the given position. - - Position of the Tile on the Tilemap. - TileFlags to add onto the Tile. - - - - Sets an array of. - - An array of positions of Tiles on the Tilemap. - An array of to be placed. - - - - Fills bounds with array of tiles. - - Bounds to be filled. - An array of to be placed. - - - - Sets the transform matrix of a tile given the XYZ coordinates of a cell in the. - - Position of the Tile on the Tilemap. - The transform matrix. - - - - Swaps all existing tiles of changeTile to newTile and refreshes all the swapped tiles. - - Tile to swap. - Tile to swap to. - - - - Collider for 2D physics representing shapes defined by the corresponding Tilemap. - - - - - The tile map renderer is used to render the tile map marked out by a component. - - - - - Bounds used for culling of Tilemap chunks. - - - - - Size in number of tiles of each chunk created by the TilemapRenderer. - - - - - Returns whether the TilemapRenderer automatically detects the bounds to extend chunk culling by. - - - - - Specifies how the Tilemap interacts with the masks. - - - - - Maximum number of chunks the TilemapRenderer caches in memory. - - - - - Maximum number of frames the TilemapRenderer keeps unused chunks in memory. - - - - - The mode in which the TileMapRenderer batches the for rendering. - - - - - Active sort order for the TilemapRenderer. - - - - - Returns whether the TilemapRenderer automatically detects the bounds to extend chunk culling by. - - - - - The TilemapRenderer will automatically detect the bounds of extension by inspecting the Sprite/s used in the Tilemap. - - - - - The user adds in the values used for extend the bounds for culling of Tilemap chunks. - - - - - Determines how the TilemapRenderer should batch the for rendering. - - - - - Batches each Sprite from the Tilemap into grouped chunks to be rendered. - - - - - Sends each Sprite from the Tilemap to be rendered individually. - - - - - Sort order for all tiles rendered by the TilemapRenderer. - - - - - Sorts tiles for rendering starting from the tile with the lowest X and the lowest Y cell positions. - - - - - Sorts tiles for rendering starting from the tile with the highest X and the lowest Y cell positions. - - - - - Sorts tiles for rendering starting from the tile with the lowest X and the highest Y cell positions. - - - - - Sorts tiles for rendering starting from the tile with the highest X and the lowest Y cell positions. - - - - - The interface to get time information from Unity. - - - - - Slows game playback time to allow screenshots to be saved between frames. - - - - - The time in seconds it took to complete the last frame (Read Only). - - - - - The interval in seconds at which physics and other fixed frame rate updates (like MonoBehaviour's MonoBehaviour.FixedUpdate) are performed. - - - - - The time the latest MonoBehaviour.FixedUpdate has started (Read Only). This is the time in seconds since the start of the game. - - - - - The timeScale-independent interval in seconds from the last fixed frame to the current one (Read Only). - - - - - The TimeScale-independant time the latest MonoBehaviour.FixedUpdate has started (Read Only). This is the time in seconds since the start of the game. - - - - - The total number of frames that have passed (Read Only). - - - - - Returns true if called inside a fixed time step callback (like MonoBehaviour's MonoBehaviour.FixedUpdate), otherwise returns false. - - - - - The maximum time a frame can take. Physics and other fixed frame rate updates (like MonoBehaviour's MonoBehaviour.FixedUpdate) will be performed only for this duration of time per frame. - - - - - The maximum time a frame can spend on particle updates. If the frame takes longer than this, then updates are split into multiple smaller updates. - - - - - The real time in seconds since the game started (Read Only). - - - - - A smoothed out Time.deltaTime (Read Only). - - - - - The time at the beginning of this frame (Read Only). This is the time in seconds since the start of the game. - - - - - The scale at which the time is passing. This can be used for slow motion effects. - - - - - The time this frame has started (Read Only). This is the time in seconds since the last level has been loaded. - - - - - The timeScale-independent interval in seconds from the last frame to the current one (Read Only). - - - - - The timeScale-independant time for this frame (Read Only). This is the time in seconds since the start of the game. - - - - - Specify a tooltip for a field in the Inspector window. - - - - - The tooltip text. - - - - - Specify a tooltip for a field. - - The tooltip text. - - - - Structure describing the status of a finger touching the screen. - - - - - Value of 0 radians indicates that the stylus is parallel to the surface, pi/2 indicates that it is perpendicular. - - - - - Value of 0 radians indicates that the stylus is pointed along the x-axis of the device. - - - - - The position delta since last change. - - - - - Amount of time that has passed since the last recorded change in Touch values. - - - - - The unique index for the touch. - - - - - The maximum possible pressure value for a platform. If Input.touchPressureSupported returns false, the value of this property will always be 1.0f. - - - - - Describes the phase of the touch. - - - - - The position of the touch in pixel coordinates. - - - - - The current amount of pressure being applied to a touch. 1.0f is considered to be the pressure of an average touch. If Input.touchPressureSupported returns false, the value of this property will always be 1.0f. - - - - - An estimated value of the radius of a touch. Add radiusVariance to get the maximum touch size, subtract it to get the minimum touch size. - - - - - This value determines the accuracy of the touch radius. Add this value to the radius to get the maximum touch size, subtract it to get the minimum touch size. - - - - - The raw position used for the touch. - - - - - Number of taps. - - - - - A value that indicates whether a touch was of Direct, Indirect (or remote), or Stylus type. - - - - - Describes phase of a finger touch. - - - - - A finger touched the screen. - - - - - The system cancelled tracking for the touch. - - - - - A finger was lifted from the screen. This is the final phase of a touch. - - - - - A finger moved on the screen. - - - - - A finger is touching the screen but hasn't moved. - - - - - Interface into the native iPhone, Android, Windows Phone and Windows Store Apps on-screen keyboards - it is not available on other platforms. - - - - - Is the keyboard visible or sliding into the position on the screen? - - - - - Returns portion of the screen which is covered by the keyboard. - - - - - Specifies whether the TouchScreenKeyboard supports the selection property. (Read Only) - - - - - Specifies whether the TouchScreenKeyboard supports the selection property. (Read Only) - - - - - How many characters the keyboard input field is limited to. 0 = infinite. - - - - - Specifies if input process was finished. (Read Only) - - - - - Will text input field above the keyboard be hidden when the keyboard is on screen? - - - - - Is touch screen keyboard supported. - - - - - Gets or sets the character range of the selected text within the string currently being edited. - - - - - Returns the status of the on-screen keyboard. (Read Only) - - - - - Specified on which display the software keyboard will appear. - - - - - Returns the text displayed by the input field of the keyboard. - - - - - Returns the TouchScreenKeyboardType of the keyboard. - - - - - Returns true whenever any keyboard is completely visible on the screen. - - - - - Specifies if input process was canceled. (Read Only) - - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - Opens the native keyboard provided by OS on the screen. - - Text to edit. - Type of keyboard (eg, any text, numbers only, etc). - Is autocorrection applied? - Can more than one line of text be entered? - Is the text masked (for passwords, etc)? - Is the keyboard opened in alert mode? - Text to be used if no other text is present. - How many characters the keyboard input field is limited to. 0 = infinite. (Android and iOS only) - - - - The status of the on-screen keyboard. - - - - - The on-screen keyboard was canceled. - - - - - The user has finished providing input. - - - - - The on-screen keyboard has lost focus. - - - - - The on-screen keyboard is visible. - - - - - Enumeration of the different types of supported touchscreen keyboards. - - - - - Keyboard with standard ASCII keys. - - - - - The default keyboard layout of the target platform. - - - - - Keyboard with additional keys suitable for typing email addresses. - - - - - Keyboard with alphanumeric keys. - - - - - Keyboard for the Nintendo Network (Deprecated). - - - - - Keyboard with standard numeric keys. - - - - - Keyboard with numbers and punctuation mark keys. - - - - - Keyboard with a layout suitable for typing telephone numbers. - - - - - Keyboard with the "." key beside the space key, suitable for typing search terms. - - - - - Keyboard with symbol keys often used on social media, such as Twitter. - - - - - Keyboard with keys for URL entry. - - - - - Describes whether a touch is direct, indirect (or remote), or from a stylus. - - - - - A direct touch on a device. - - - - - An Indirect, or remote, touch on a device. - - - - - A touch from a stylus on a device. - - - - - The trail renderer is used to make trails behind objects in the Scene as they move about. - - - - - Select whether the trail will face the camera, or the orientation of the Transform Component. - - - - - Does the GameObject of this Trail Renderer auto destruct? - - - - - Set the color gradient describing the color of the trail at various points along its length. - - - - - Creates trails when the GameObject moves. - - - - - Set the color at the end of the trail. - - - - - The width of the trail at the end of the trail. - - - - - Configures a trail to generate Normals and Tangents. With this data, Scene lighting can affect the trail via Normal Maps and the Unity Standard Shader, or your own custom-built Shaders. - - - - - Set the minimum distance the trail can travel before a new vertex is added to it. - - - - - Set this to a value greater than 0, to get rounded corners on each end of the trail. - - - - - Set this to a value greater than 0, to get rounded corners between each segment of the trail. - - - - - Get the number of line segments in the trail. - - - - - Get the number of line segments in the trail. - - - - - Apply a shadow bias to prevent self-shadowing artifacts. The specified value is the proportion of the trail width at each segment. - - - - - Set the color at the start of the trail. - - - - - The width of the trail at the spawning point. - - - - - Choose whether the U coordinate of the trail texture is tiled or stretched. - - - - - How long does the trail take to fade out. - - - - - Set the curve describing the width of the trail at various points along its length. - - - - - Set an overall multiplier that is applied to the TrailRenderer.widthCurve to get the final width of the trail. - - - - - Adds a position to the trail. - - The position to add to the trail. - - - - Add an array of positions to the trail. - - The positions to add to the trail. - - - - Creates a snapshot of TrailRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the trail. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of TrailRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the trail. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of TrailRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the trail. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Creates a snapshot of TrailRenderer and stores it in mesh. - - A static mesh that will receive the snapshot of the trail. - The camera used for determining which way camera-space trails will face. - Include the rotation and scale of the Transform in the baked mesh. - - - - Removes all points from the TrailRenderer. -Useful for restarting a trail from a new position. - - - - - Get the position of a vertex in the trail. - - The index of the position to retrieve. - - The position at the specified index in the array. - - - - - Get the positions of all vertices in the trail. - - The array of positions to retrieve. - - How many positions were actually stored in the output array. - - - - - Set the position of a vertex in the trail. - - Which position to set. - The new position. - - - - Sets the positions of all vertices in the trail. - - The array of positions to set. - - - - Position, rotation and scale of an object. - - - - - The number of children the parent Transform has. - - - - - The rotation as Euler angles in degrees. - - - - - The blue axis of the transform in world space. - - - - - Has the transform changed since the last time the flag was set to 'false'? - - - - - The transform capacity of the transform's hierarchy data structure. - - - - - The number of transforms in the transform's hierarchy data structure. - - - - - The rotation as Euler angles in degrees relative to the parent transform's rotation. - - - - - Position of the transform relative to the parent transform. - - - - - The rotation of the transform relative to the transform rotation of the parent. - - - - - The scale of the transform relative to the parent. - - - - - Matrix that transforms a point from local space into world space (Read Only). - - - - - The global scale of the object (Read Only). - - - - - The parent of the transform. - - - - - The world space position of the Transform. - - - - - The red axis of the transform in world space. - - - - - Returns the topmost transform in the hierarchy. - - - - - The rotation of the transform in world space stored as a Quaternion. - - - - - The green axis of the transform in world space. - - - - - Matrix that transforms a point from world space into local space (Read Only). - - - - - Unparents all children. - - - - - Finds a child by n and returns it. - - Name of child to be found. - - The returned child transform or null if no child is found. - - - - - Returns a transform child by index. - - Index of the child transform to return. Must be smaller than Transform.childCount. - - Transform child by index. - - - - - Gets the sibling index. - - - - - Transforms a direction from world space to local space. The opposite of Transform.TransformDirection. - - - - - - Transforms the direction x, y, z from world space to local space. The opposite of Transform.TransformDirection. - - - - - - - - Transforms position from world space to local space. - - - - - - Transforms the position x, y, z from world space to local space. The opposite of Transform.TransformPoint. - - - - - - - - Transforms a vector from world space to local space. The opposite of Transform.TransformVector. - - - - - - Transforms the vector x, y, z from world space to local space. The opposite of Transform.TransformVector. - - - - - - - - Is this transform a child of parent? - - - - - - Rotates the transform so the forward vector points at target's current position. - - Object to point towards. - Vector specifying the upward direction. - - - - Rotates the transform so the forward vector points at target's current position. - - Object to point towards. - Vector specifying the upward direction. - - - - Rotates the transform so the forward vector points at worldPosition. - - Point to look at. - Vector specifying the upward direction. - - - - Rotates the transform so the forward vector points at worldPosition. - - Point to look at. - Vector specifying the upward direction. - - - - Applies a rotation of eulerAngles.z degrees around the z axis, eulerAngles.x degrees around the x axis, and eulerAngles.y degrees around the y axis (in that order). - - Rotation is local to object or World. - Rotation to apply. - - - - Applies a rotation of zAngle degrees around the z axis, xAngle degrees around the x axis, and yAngle degrees around the y axis (in that order). - - Degrees to rotate around the X axis. - Degrees to rotate around the Y axis. - Degrees to rotate around the Z axis. - Rotation is local to object or World. - - - - Rotates the object around axis by angle degrees. - - Axis to apply rotation to. - Degrees to rotation to apply. - Rotation is local to object or World. - - - - Rotates the transform about axis passing through point in world coordinates by angle degrees. - - - - - - - - - - - - - - - Move the transform to the start of the local transform list. - - - - - Move the transform to the end of the local transform list. - - - - - Set the parent of the transform. - - The parent Transform to use. - If true, the parent-relative position, scale and - rotation are modified such that the object keeps the same world space position, - rotation and scale as before. - - - - - Set the parent of the transform. - - The parent Transform to use. - If true, the parent-relative position, scale and - rotation are modified such that the object keeps the same world space position, - rotation and scale as before. - - - - - Sets the world space position and rotation of the Transform component. - - - - - - - Sets the sibling index. - - Index to set. - - - - Transforms direction from local space to world space. - - - - - - Transforms direction x, y, z from local space to world space. - - - - - - - - Transforms position from local space to world space. - - - - - - Transforms the position x, y, z from local space to world space. - - - - - - - - Transforms vector from local space to world space. - - - - - - Transforms vector x, y, z from local space to world space. - - - - - - - - Moves the transform in the direction and distance of translation. - - - - - - - Moves the transform in the direction and distance of translation. - - - - - - - Moves the transform by x along the x axis, y along the y axis, and z along the z axis. - - - - - - - - - Moves the transform by x along the x axis, y along the y axis, and z along the z axis. - - - - - - - - - Moves the transform in the direction and distance of translation. - - - - - - - Moves the transform by x along the x axis, y along the y axis, and z along the z axis. - - - - - - - - - Transparent object sorting mode of a Camera. - - - - - Sort objects based on distance along a custom axis. - - - - - Default transparency sorting mode. - - - - - Orthographic transparency sorting mode. - - - - - Perspective transparency sorting mode. - - - - - Tree Component for the tree creator. - - - - - Data asociated to the Tree. - - - - - Tells if there is wind data exported from SpeedTree are saved on this component. - - - - - Contains information about a tree placed in the Terrain game object. - - - - - Color of this instance. - - - - - Height scale of this instance (compared to the prototype's size). - - - - - Lightmap color calculated for this instance. - - - - - Position of the tree. - - - - - Index of this instance in the TerrainData.treePrototypes array. - - - - - Read-only. - -Rotation of the tree on X-Z plane (in radians). - - - - - Width scale of this instance (compared to the prototype's size). - - - - - Simple class that contains a pointer to a tree prototype. - - - - - Bend factor of the tree prototype. - - - - - Retrieves the actual GameObject used by the tree. - - - - - Interface into tvOS specific functionality. - - - - - Advertising ID. - - - - - Is advertising tracking enabled. - - - - - The generation of the device. (Read Only) - - - - - iOS version. - - - - - Vendor ID. - - - - - Reset "no backup" file flag: file will be synced with iCloud/iTunes backup and can be deleted by OS in low storage situations. - - - - - - Set file flag to be excluded from iCloud/iTunes backup. - - - - - - iOS device generation. - - - - - First generation Apple TV. - - - - - Second generation (4K) Apple TV. - - - - - A class for Apple TV remote input configuration. - - - - - Configures how "Menu" button behaves on Apple TV Remote. If this property is set to true hitting "Menu" on Remote will exit to system home screen. When this property is false current application is responsible for handling "Menu" button. It is recommended to set this property to true on top level menus of your application. - - - - - Configures if Apple TV Remote should autorotate all the inputs when Remote is being held in horizontal orientation. Default is false. - - - - - Configures how touches are mapped to analog joystick axes in relative or absolute values. If set to true it will return +1 on Horizontal axis when very far right is being touched on Remote touch aread (and -1 when very left area is touched correspondingly). The same applies for Vertical axis too. When this property is set to false player should swipe instead of touching specific area of remote to generate Horizontal or Vertical input. - - - - - Disables Apple TV Remote touch propagation to Unity Input.touches API. Useful for 3rd party frameworks, which do not respect Touch.type == Indirect. -Default is false. - - - - - Sprite Atlas is an asset created within Unity. It is part of the built-in sprite packing solution. - - - - - Return true if this SpriteAtlas is a variant. - - - - - Get the total number of Sprite packed into this atlas. - - - - - Get the tag of this SpriteAtlas. - - - - - Return true if Sprite is packed into this SpriteAtlas. - - - - - - Clone the first Sprite in this atlas that matches the name packed in this atlas and return it. - - The name of the Sprite. - - - - Clone all the Sprite in this atlas and fill them into the supplied array. - - Array of Sprite that will be filled. - - The size of the returned array. - - - - - Clone all the Sprite matching the name in this atlas and fill them into the supplied array. - - Array of Sprite that will be filled. - The name of the Sprite. - - - - Manages SpriteAtlas during runtime. - - - - - Trigger when a SpriteAtlas is registered via invoking the callback in U2D.SpriteAtlasManager.atlasRequested. - - - - - - Trigger when any Sprite was bound to SpriteAtlas but couldn't locate the atlas asset during runtime. - - - - - - Class that specifies some information about a renderable character. - - - - - Character width. - - - - - Position of the character cursor in local (text generated) space. - - - - - Information about a generated line of text. - - - - - Height of the line. - - - - - Space in pixels between this line and the next line. - - - - - Index of the first character in the line. - - - - - The upper Y position of the line in pixels. This is used for text annotation such as the caret and selection box in the InputField. - - - - - Vertex class used by a Canvas for managing vertices. - - - - - Vertex color. - - - - - Normal. - - - - - Vertex position. - - - - - Simple UIVertex with sensible settings for use in the UI system. - - - - - Tangent. - - - - - The first texture coordinate set of the mesh. Used by UI elements by default. - - - - - The second texture coordinate set of the mesh, if present. - - - - - The Third texture coordinate set of the mesh, if present. - - - - - The forth texture coordinate set of the mesh, if present. - - - - - The BurstDiscard attribute lets you remove a method or property from being compiled to native code by the burst compiler. - - - - - The BurstDiscard attribute lets you remove a method or property from being compiled to native code by the burst compiler. - - - - - Used to specify allocation type for NativeArray. - - - - - Invalid allocation. - - - - - No allocation. - - - - - Persistent allocation. - - - - - Temporary allocation. - - - - - Temporary job allocation. - - - - - DeallocateOnJobCompletionAttribute. - - - - - AtomicSafetyHandle is used by the job system to provide validation and full safety. - - - - - Checks if the handle can be deallocated. Throws an exception if it has already been destroyed or a job is currently accessing the data. - - Safety handle. - - - - Checks if the handle is still valid and throws an exception if it is already destroyed. - - Safety handle. - - - - CheckGetSecondaryDataPointerAndThrow. - - Safety handle. - - - - Checks if the handle can be read from. Throws an exception if already destroyed or a job is currently writing to the data. - - Safety handle. - - - - Performs CheckWriteAndThrow and then bumps the secondary version. - - Safety handle. - - - - Checks if the handle can be written to. Throws an exception if already destroyed or a job is currently reading or writing to the data. - - Safety handle. - - - - Creates a new AtomicSafetyHandle that is valid until AtomicSafetyHandle.Release is called. - - - Safety handle. - - - - - Waits for all jobs running against this AtomicSafetyHandle to complete. - - Safety handle. - - Result. - - - - - Waits for all jobs running against this AtomicSafetyHandle to complete and then disables the read and write access on this atomic safety handle. - - Safety handle. - - Result. - - - - - Waits for all jobs running against this AtomicSafetyHandle to complete and then releases the atomic safety handle. - - Safety handle. - - Result. - - - - - Returns true if the AtomicSafetyHandle is configured to allow reading or writing. - - Safety handle. - - True if the AtomicSafetyHandle is configured to allow reading or writing, false otherwise. - - - - - Fetch the job handles of all jobs reading from the safety handle. - - The atomic safety handle to return readers for. - The maximum number of handles to be written to the output array. - A buffer where the job handles will be written. - - The actual number of readers on the handle, which can be greater than the maximum count provided. - - - - - Return the name of the specified reading job. - - Safety handle. - Index of the reader. - - The debug name of the reader. - - - - - Returns the safety handle which should be used for all temp memory allocations in this temp memory scope. All temp memory allocations share the same safety handle since they are automatically disposed of at the same time. - - - The safety handle for temp memory allocations in the current scope. - - - - - Returns a single shared handle, that can be shared by for example NativeSlice pointing to stack memory. - - - Safety handle. - - - - - Return the writer (if any) on an atomic safety handle. - - Safety handle. - - The job handle of the writer. - - - - - Return the debug name of the current writer on an atomic safety handle. - - Safety handle. - - Name of the writer, if any. - - - - - Checks if an AtomicSafetyHandle is the temp memory safety handle for the currently active temp memory scope. - - Safety handle. - - True if the safety handle is the temp memory handle for the current scope. - - - - - Marks the AtomicSafetyHandle so that it cannot be disposed of. - - Safety handle. - - - - Releases a previously created AtomicSafetyHandle. - - Safety handle. - - - - Lets you prevent read or write access on the atomic safety handle. - - Safety handle. - Use false to disallow read or write access, or true otherwise. - - - - Switches the AtomicSafetyHandle to the secondary version number. - - Safety handle. - Allow writing. - - - - Switches the AtomicSafetyHandle to the secondary version number. - - Safety handle. - - - - DisposeSentinel is used to automatically detect memory leaks. - - - - - Clears the DisposeSentinel. - - The DisposeSentinel to clear. - - - - Creates a new AtomicSafetyHandle and a new DisposeSentinel, to be used to track safety and leaks on some native data. - - The AtomicSafetyHandle that can be used to control access to the data related to the DisposeSentinel being created. - The new DisposeSentinel. - The stack depth where to extract the logging information from. - - - - Releases the AtomicSafetyHandle and clears the DisposeSentinel. - - The AtomicSafetyHandle returned when invoking Create. - The DisposeSentinel. - - - - EnforceJobResult. - - - - - AllJobsAlreadySynced. - - - - - DidSyncRunningJobs. - - - - - HandleWasAlreadyDeallocated. - - - - - NativeArray Unsafe Utility. - - - - - Converts an existing buffer to a NativeArray. - - Pointer to the preallocated data. - Length (in bytes) of the data. - Allocation strategy to use. - - A new NativeArray, allocated with the given strategy and wrapping the provided data. - - - - - Returns the AtomicSafetyHandle that is used for safety control on the NativeArray. - - NativeArray. - - Safety handle. - - - - - Gets the pointer to the data owner by the NativeArray, without performing checks. - - NativeArray. - - NativeArray memory buffer pointer. - - - - - Gets the pointer to the memory buffer owner by the NativeArray, performing checks on whether the native array can be written to. - - NativeArray. - - NativeArray memory buffer pointer. - - - - - Gets the pointer to the memory buffer owner by the NativeArray, performing checks on whether the native array can be read from. - - NativeArray. - - NativeArray memory buffer pointer. - - - - - Sets a new AtomicSafetyHandle for the provided NativeArray. - - NativeArray. - Safety handle. - - - - Allows you to create your own custom native container. - - - - - NativeContainerIsAtomicWriteOnlyAttribute. - - - - - NativeContainerIsReadOnlyAttribute. - - - - - NativeContainerSupportsDeallocateOnJobCompletionAttribute. - - - - - NativeContainerSupportsDeferredConvertListToArray. - - - - - NativeContainerSupportsMinMaxWriteRestrictionAttribute. - - - - - By default native containers are tracked by the safety system to avoid race conditions. The safety system encapsulates the best practices and catches many race condition bugs from the start. - - - - - By default unsafe Pointers are not allowed to be used in a job since it is not possible for the Job Debugger to gurantee race condition free behaviour. This attribute lets you explicitly disable the restriction on a job. - - - - - When this attribute is applied to a field in a job struct, the managed reference to the class will be set to null on the copy of the job struct that is passed to the job. - - - - - This attribute can inject a worker thread index into an int on the job struct. This is usually used in the implementation of atomic containers. The index is guaranteed to be unique to any other job that might be running in parallel. - - - - - NativeSlice unsafe utility class. - - - - - ConvertExistingDataToNativeSlice. - - Memory pointer. - Number of elements. - - - - Get safety handle for native slice. - - NativeSlice. - - Safety handle. - - - - - Get NativeSlice memory buffer pointer. Checks whether the native array can be written to. - - NativeSlice. - - Memory pointer. - - - - - Get NativeSlice memory buffer pointer. Checks whether the native array can be read from. - - NativeSlice. - - Memory pointer. - - - - - Set safetly handle on NativeSlice. - - NativeSlice. - Safety handle. - - - - Unsafe utility class. - - - - - The memory address of the struct. - - Struct. - - Memory pointer. - - - - - Minimum alignment of a struct. - - - Memory pointer. - - - - - Assigns an Object reference to a struct or pinned class. See Also: UnsafeUtility.PinGCObjectAndGetAddress. - - - - - - - Copies sizeof(T) bytes from ptr to output. - - Memory pointer. - Struct. - - - - Copies sizeof(T) bytes from input to ptr. - - Memory pointer. - Struct. - - - - Free memory. - - Memory pointer. - Allocator. - - - - Returns the offset of the field relative struct or class it is contained in. - - - - - - Returns whether the struct is blittable. - - The System.Type of a struct. - - True if struct is blittable, otherwise false. - - - - - Returns whether the struct is blittable. - - The System.Type of a struct. - - True if struct is blittable, otherwise false. - - - - - Returns true if the allocator label is valid and can be used to allocate or deallocate memory. - - - - - - Allocate memory. - - Size. - Alignment. - Allocator. - - Memory pointer. - - - - - Clear memory. - - Memory pointer. - Size. - - - - Checks to see whether two memory regions are identical or not by comparing a specified memory region in the first given memory buffer with the same region in the second given memory buffer. - - Pointer to the first memory buffer. - Pointer to the second memory buffer to compare the first one to. - Number of bytes to compare. - - 0 if the contents are identical, non-zero otherwise. - - - - - Copy memory. - - Destination memory pointer. - Source memory pointer. - Size. - - - - Copy memory and replicate. - - Destination memory pointer. - Source memory pointer. - Size. - Count. - - - - Similar to UnsafeUtility.MemCpy but can skip bytes via desinationStride and sourceStride. - - - - - - - - - - - Move memory. - - Destination memory pointer. - Source memory pointer. - Size. - - - - Keeps a strong GC reference to the object and pins it. The object is guranteed to not move its memory location in a moving GC. Returns the address of the first element of the array. - -See Also: UnsafeUtility.ReleaseGCObject. - - - - - Keeps a strong GC reference to the object and pins it. The object is guranteed to not move its memory location in a moving GC. Returns the address of the memory location of the object. - -See Also: UnsafeUtility.ReleaseGCObject. - - - - - - - Read array element. - - Memory pointer. - Array index. - - Array Element. - - - - - Read array element with stride. - - Memory pointer. - Array index. - Stride. - - Array element. - - - - - Releases a GC Object Handle, previously aquired by UnsafeUtility.PinGCObjectAndGetAddress. - - - - - - Size of struct. - - - Size of struct. - - - - - Write array element. - - Memory pointer. - Array index. - Value to write. - - - - Write array element with stride. - - Memory pointer. - Array index. - Stride. - Value to write. - - - - Used in conjunction with the ReadOnlyAttribute, WriteAccessRequiredAttribute lets you specify which struct method and property require write access to be invoked. - - - - - A NativeArray exposes a buffer of native memory to managed code, making it possible to share data between managed and native without marshalling costs. - - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copies a range of elements from a source array to a destination array, starting from the source index and copying them to the destination index. - - The data to copy. - The array that receives the data. - A 32-bit integer that represents the number of elements to copy. The integer must be equal or greater than zero. - A 32-bit integer that represents the index in the srcArray at which copying begins. - A 32-bit integer that represents the index in the dstArray at which storing begins. - - - - Copy all the elements from another NativeArray or managed array of the same length. - - Source array. - - - - Copy all the elements from another NativeArray or managed array of the same length. - - Source array. - - - - Copy all elements to another NativeArray or managed array of the same length. - - Destination array. - - - - Copy all elements to another NativeArray or managed array of the same length. - - Destination array. - - - - Creates a new NativeArray from an existing array of elements. - - An array to copy the data from. - The allocation strategy used for the data. - - - - Creates a new NativeArray from an existing NativeArray. - - NativeArray to copy the data from. - The allocation strategy used for the data. - - - - Creates a new NativeArray allocating enough memory to fit the provided amount of elements. - - Number of elements to be allocated. - The allocation strategy used for the data. - Options to control the behaviour of the NativeArray. - - - - Disposes the NativeArray. - - - - - Compares to NativeArray. - - NativeArray to compare against. - - True in case the two NativeArray are the same, false otherwise. - - - - - Compares to NativeArray. - - Object to compare against. - - True in case the two NativeArray are the same, false otherwise. - - - - - Get enumerator. - - - Enumerator. - - - - - Returns a hash code for the current instance. - - - Hash code. - - - - - Indicates that the NativeArray has an allocated memory buffer. - - - - - Number of elements in the NativeArray. - - - - - Access NativeArray elements by index. Notice that structs are returned by value and not by reference. - - - - - Convert NativeArray to array. - - - Array. - - - - - NativeArrayOptions lets you control if memory should be cleared on allocation or left uninitialized. - - - - - Clear NativeArray memory on allocation. - - - - - Uninitialized memory can improve performance, but results in the contents of the array elements being undefined. -In performance sensitive code it can make sense to use NativeArrayOptions.Uninitialized, if you are writing to the entire array right after creating it without reading any of the elements first. - - - - - - NativeDisableParallelForRestrictionAttribute. - - - - - The container has from start a size that will never change. - - - - - The specified number of elements will never change. - - The fixed number of elements in the container. - - - - The fixed number of elements in the container. - - - - - Static class for native leak detection settings. - - - - - Set whether native memory leak detection should be enabled or disabled. - - - - - Native leak memory leak detection mode enum. - - - - - Indicates that native memory leak detection is disabled. - - - - - Indicates that native memory leak detection is enabled. - - - - - Native Slice. - - - - - Copy all the elements from a NativeSlice or managed array of the same length. - - NativeSlice. - Array. - - - - Copy all the elements from a NativeSlice or managed array of the same length. - - NativeSlice. - Array. - - - - Copy all the elements of the slice to a NativeArray or managed array of the same length. - - Array. - - - - Copy all the elements of the slice to a NativeArray or managed array of the same length. - - Array. - - - - Constructor. - - NativeArray. - Start index. - Memory pointer. - Length. - - - - Constructor. - - NativeArray. - Start index. - Memory pointer. - Length. - - - - Constructor. - - NativeArray. - Start index. - Memory pointer. - Length. - - - - Constructor. - - NativeArray. - Start index. - Memory pointer. - Length. - - - - GetEnumerator. - - - Enumerator. - - - - - Implicit operator for creating a NativeSlice from a NativeArray. - - NativeArray. - - - - Number of elements in the slice. - - - - - SliceConvert. - - - NativeSlice. - - - - - SliceWithStride. - - Stride offset. - Field name whos offset should be used as stride. - - NativeSlice. - - - - - SliceWithStride. - - Stride offset. - Field name whos offset should be used as stride. - - NativeSlice. - - - - - SliceWithStride. - - Stride offset. - Field name whos offset should be used as stride. - - NativeSlice. - - - - - Returns stride set for Slice. - - - - - Access NativeSlice elements by index. Notice that structs are returned by value and not by reference. - - - - - Convert NativeSlice to array. - - - Array. - - - - - The ReadOnly attribute lets you mark a member of a struct used in a job as read-only. - - - - - The ReadOnly attribute lets you mark a member of a struct used in a job as read-only. - - - - - The WriteOnly attribute lets you mark a member of a struct used in a job as write-only. - - - - - With the AsyncReadManager, you can perform asynchronous I/O operations through Unity's virtual file system. You can perform these operations on any thread or job. - - - - - Issues an asynchronous file read operation. Returns a ReadHandle. - - The filename to read from. - A pointer to an array of ReadCommand structs that specify offset, size, and destination buffer. - The number of read commands pointed to by readCmds. - - Used to monitor the progress and status of the read command. - - - - - Describes the offset, size, and destination buffer of a single read operation. - - - - - The buffer that receives the read data. - - - - - The offset where the read begins, within the file. - - - - - The size of the read in bytes. - - - - - You can use this handle to query the status of an asynchronous read operation. Note: To avoid a memory leak, you must call Dispose. - - - - - Disposes the ReadHandle. Use this to free up internal resources for reuse. - - - - - Check if the ReadHandle is valid. - - - True if the ReadHandle is valid. - - - - - JobHandle that completes when the read operation completes. - - - - - Current state of the read operation. - - - - - State of the read operation. - - - - - All the ReadCommand operations completed successfully. - - - - - One or more of the ReadCommand operations failed. - - - - - The read operation is in progress. - - - - - IJob allows you to schedule a single job that runs in parallel to other jobs and the main thread. - - - - - Implement this method to perform work on a worker thread. - - - - - Extension methods for Jobs using the IJob interface. - - - - - Perform the job's Execute method immediately on the same thread. - - The job and data to Run. - - - - Schedule the job for execution on a worker thread. - - The job and data to schedule. - Dependencies are used to ensure that a job executes on workerthreads after the dependency has completed execution. Making sure that two jobs reading or writing to same data do not run in parallel. - - The handle identifying the scheduled job. Can be used as a dependency for a later job or ensure completion on the main thread. - - - - - Parallel-for jobs allow you to perform the same independent operation for each element of a native container or for a fixed number of iterations. - - - - - Implement this method to perform work against a specific iteration index. - - The index of the Parallel for loop at which to perform work. - - - - Extension methods for Jobs using the IJobParallelFor. - - - - - Perform the job's Execute method immediately on the same thread. - - The job and data to Run. - The number of iterations the for loop will execute. - - - - Schedule the job for execution on a worker thread. - - The job and data to Schedule. - The number of iterations the for loop will execute. - Granularity in which workstealing is performed. A value of 32, means the job queue will steal 32 iterations and then perform them in an efficient inner loop. - Dependencies are used to ensure that a job executes on workerthreads after the dependency has completed execution. Making sure that two jobs reading or writing to same data do not run in parallel. - - The handle identifying the scheduled job. Can be used as a dependency for a later job or ensure completion on the main thread. - - - - - JobHandle. - - - - - CheckFenceIsDependencyOrDidSyncFence. - - Job handle. - Job handle dependency. - - Return value. - - - - - Combines multiple dependencies into a single one. - - - - - - - - - Combines multiple dependencies into a single one. - - - - - - - - - Combines multiple dependencies into a single one. - - - - - - - - - Ensures that the job has completed. - - - - - Ensures that all jobs have completed. - - - - - - - - - Ensures that all jobs have completed. - - - - - - - - - Ensures that all jobs have completed. - - - - - - - - - Returns false if the task is currently running. Returns true if the task has completed. - - - - - By default jobs are only put on a local queue when using Job Schedule functions, this actually makes them available to the worker threads to execute them. - - - - - Struct used to implement batch query jobs. - - - - - Create BatchQueryJob. - - NativeArray containing the commands to execute during a batch. The job executing the query will only read from the array, not write to it. - NativeArray which can contain the results from the commands. The job executing the query will write to the array. - - - - Struct used to schedule batch query jobs. - - - - - Initializes a BatchQueryJobStruct and returns a pointer to an internal structure (System.IntPtr) which should be passed to JobsUtility.JobScheduleParameters. - - - - - JobHandle Unsafe Utilities. - - - - - Combines multiple dependencies into a single one using an unsafe array of job handles. -See Also: JobHandle.CombineDependencies. - - - - - - - All job interface types must be marked with the JobProducerType. This is used to compile the Execute method by the Burst ASM inspector. - - - - - - - The type containing a static method named "Execute" method which is the method invokes by the job system. - - - - ProducerType is the type containing a static method named "Execute" method which is the method invokes by the job system. - - - - - Struct containing information about a range the job is allowed to work on. - - - - - The size of the batch. - - - - - Number of indices per phase. - - - - - Number of jobs. - - - - - Number of phases. - - - - - Phase Data. - - - - - The start and end index of the job range. - - - - - Total iteration count. - - - - - Static class containing functionality to create, run and debug jobs. - - - - - Size of a cache line. - - - - - Creates job reflection data. - - - Returns pointer to internal JobReflectionData. - - - - - Creates job reflection data. - - - Returns pointer to internal JobReflectionData. - - - - - Returns the begin index and end index of the range. - - - - - - - - - Returns the work stealing range. - - - - - - - Returns true if successful. - - - - - When disabled, forces jobs that have already been compiled with burst to run in mono instead. For example if you want to debug the C# jobs or just want to compare behaviour or performance. - - - - - Enables and disables the job debugger at runtime. Note that currently the job debugger is only supported in the Editor. Thus this only has effect in the editor. - - - - - Struct containing job parameters for scheduling. - - - - - Constructor. - - - - - - - - - A JobHandle to any dependency this job would have. - - - - - Pointer to the job data. - - - - - Pointer to the reflection data. - - - - - ScheduleMode option. - - - - - Maximum job thread count. - - - - - Injects debug checks for min and max ranges of native array. - - - - - Schedule a single IJob. - - - - Returns a JobHandle to the newly created Job. - - - - - Schedule a IJobParallelFor job. - - - - - - Returns a JobHandle to the newly created Job. - - - - - Schedule a IJobParallelFor job. - - - - - - - Returns a JobHandle to the newly created Job. - - - - - Schedule a IJobParallelForTransform job. - - - - - Returns a JobHandle to the newly created Job. - - - - - Determines what the job is used for (ParallelFor or a single job). - - - - - A parallel for job. - - - - - A single job. - - - - - ScheduleMode options for scheduling a manage job. - - - - - Schedule job as batched. - - - - - Schedule job as independent. - - - - - Performance marker used for profiling arbitrary code blocks. - - - - - Creates a helper struct for the scoped using blocks. - - - IDisposable struct which calls Begin and End automatically. - - - - - Helper IDisposable struct for use with ProfilerMarker.Auto. - - - - - Begin profiling a piece of code marked with a custom name defined by this instance of ProfilerMarker. - - Object associated with the operation. - - - - Begin profiling a piece of code marked with a custom name defined by this instance of ProfilerMarker. - - Object associated with the operation. - - - - Constructs a new performance marker for code instrumentation. - - Marker name. - - - - End profiling a piece of code marked with a custom name defined by this instance of ProfilerMarker. - - - - - Declares an assembly to be compatible (API wise) with a specific Unity API. Used by internal tools to avoid processing the assembly in order to decide whether assemblies may be using old Unity API. - - - - - Version of Unity API. - - - - - Initializes a new instance of UnityAPICompatibilityVersionAttribute. - - Unity version that this assembly with compatible with. - - - - Constants to pass to Application.RequestUserAuthorization. - - - - - Request permission to use any audio input sources attached to the computer. - - - - - Request permission to use any video input sources attached to the computer. - - - - - Representation of 2D vectors and points. - - - - - Shorthand for writing Vector2(0, -1). - - - - - Shorthand for writing Vector2(-1, 0). - - - - - Returns the length of this vector (Read Only). - - - - - Shorthand for writing Vector2(float.NegativeInfinity, float.NegativeInfinity). - - - - - Returns this vector with a magnitude of 1 (Read Only). - - - - - Shorthand for writing Vector2(1, 1). - - - - - Shorthand for writing Vector2(float.PositiveInfinity, float.PositiveInfinity). - - - - - Shorthand for writing Vector2(1, 0). - - - - - Returns the squared length of this vector (Read Only). - - - - - Shorthand for writing Vector2(0, 1). - - - - - X component of the vector. - - - - - Y component of the vector. - - - - - Shorthand for writing Vector2(0, 0). - - - - - Returns the unsigned angle in degrees between from and to. - - The vector from which the angular difference is measured. - The vector to which the angular difference is measured. - - - - Returns a copy of vector with its magnitude clamped to maxLength. - - - - - - - Constructs a new vector with given x, y components. - - - - - - - Returns the distance between a and b. - - - - - - - Dot Product of two vectors. - - - - - - - Returns true if the given vector is exactly equal to this vector. - - - - - - Converts a Vector3 to a Vector2. - - - - - - Converts a Vector2 to a Vector3. - - - - - - Linearly interpolates between vectors a and b by t. - - - - - - - - Linearly interpolates between vectors a and b by t. - - - - - - - - Returns a vector that is made from the largest components of two vectors. - - - - - - - Returns a vector that is made from the smallest components of two vectors. - - - - - - - Moves a point current towards target. - - - - - - - - Makes this vector have a magnitude of 1. - - - - - Divides a vector by a number. - - - - - - - Divides a vector by another vector. - - - - - - - Returns true if two vectors are approximately equal. - - - - - - - Subtracts one vector from another. - - - - - - - Negates a vector. - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by another vector. - - - - - - - Adds two vectors. - - - - - - - Returns the 2D vector perpendicular to this 2D vector. The result is always rotated 90-degrees in a counter-clockwise direction for a 2D coordinate system where the positive Y axis goes up. - - The input direction. - - The perpendicular direction. - - - - - Reflects a vector off the vector defined by a normal. - - - - - - - Multiplies two vectors component-wise. - - - - - - - Multiplies every component of this vector by the same component of scale. - - - - - - Set x and y components of an existing Vector2. - - - - - - - Returns the signed angle in degrees between from and to. - - The vector from which the angular difference is measured. - The vector to which the angular difference is measured. - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Access the x or y component using [0] or [1] respectively. - - - - - Returns a nicely formatted string for this vector. - - - - - - Returns a nicely formatted string for this vector. - - - - - - Representation of 2D vectors and points using integers. - - - - - Shorthand for writing Vector2Int (0, -1). - - - - - Shorthand for writing Vector2Int (-1, 0). - - - - - Returns the length of this vector (Read Only). - - - - - Shorthand for writing Vector2Int (1, 1). - - - - - Shorthand for writing Vector2Int (1, 0). - - - - - Returns the squared length of this vector (Read Only). - - - - - Shorthand for writing Vector2Int (0, 1). - - - - - X component of the vector. - - - - - Y component of the vector. - - - - - Shorthand for writing Vector2Int (0, 0). - - - - - Converts a Vector2 to a Vector2Int by doing a Ceiling to each value. - - - - - - Clamps the Vector2Int to the bounds given by min and max. - - - - - - - Returns the distance between a and b. - - - - - - - Returns true if the objects are equal. - - - - - - Converts a Vector2 to a Vector2Int by doing a Floor to each value. - - - - - - Gets the hash code for the Vector2Int. - - - The hash code of the Vector2Int. - - - - - Converts a Vector2Int to a Vector2. - - - - - - Returns a vector that is made from the largest components of two vectors. - - - - - - - Returns a vector that is made from the smallest components of two vectors. - - - - - - - Returns true if the vectors are equal. - - - - - - - Converts a Vector2Int to a Vector3Int. - - - - - - Subtracts one vector from another. - - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by a number. - - - - - - - Returns true if vectors different. - - - - - - - Adds two vectors. - - - - - - - Converts a Vector2 to a Vector2Int by doing a Round to each value. - - - - - - Multiplies two vectors component-wise. - - - - - - - Multiplies every component of this vector by the same component of scale. - - - - - - Set x and y components of an existing Vector2Int. - - - - - - - Access the x or y component using [0] or [1] respectively. - - - - - Returns a nicely formatted string for this vector. - - - - - Representation of 3D vectors and points. - - - - - Shorthand for writing Vector3(0, 0, -1). - - - - - Shorthand for writing Vector3(0, -1, 0). - - - - - Shorthand for writing Vector3(0, 0, 1). - - - - - Shorthand for writing Vector3(-1, 0, 0). - - - - - Returns the length of this vector (Read Only). - - - - - Shorthand for writing Vector3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity). - - - - - Returns this vector with a magnitude of 1 (Read Only). - - - - - Shorthand for writing Vector3(1, 1, 1). - - - - - Shorthand for writing Vector3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity). - - - - - Shorthand for writing Vector3(1, 0, 0). - - - - - Returns the squared length of this vector (Read Only). - - - - - Shorthand for writing Vector3(0, 1, 0). - - - - - X component of the vector. - - - - - Y component of the vector. - - - - - Z component of the vector. - - - - - Shorthand for writing Vector3(0, 0, 0). - - - - - Returns the angle in degrees between from and to. - - The vector from which the angular difference is measured. - The vector to which the angular difference is measured. - - The angle in degrees between the two vectors. - - - - - Returns a copy of vector with its magnitude clamped to maxLength. - - - - - - - Cross Product of two vectors. - - - - - - - Creates a new vector with given x, y, z components. - - - - - - - - Creates a new vector with given x, y components and sets z to zero. - - - - - - - Returns the distance between a and b. - - - - - - - Dot Product of two vectors. - - - - - - - Returns true if the given vector is exactly equal to this vector. - - - - - - Linearly interpolates between two vectors. - - - - - - - - Linearly interpolates between two vectors. - - - - - - - - Returns a vector that is made from the largest components of two vectors. - - - - - - - Returns a vector that is made from the smallest components of two vectors. - - - - - - - Moves a point current in a straight line towards a target point. - - - - - - - - Makes this vector have a magnitude of 1. - - - - - - Divides a vector by a number. - - - - - - - Returns true if two vectors are approximately equal. - - - - - - - Subtracts one vector from another. - - - - - - - Negates a vector. - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by a number. - - - - - - - Returns true if vectors different. - - - - - - - Adds two vectors. - - - - - - - Makes vectors normalized and orthogonal to each other. - - - - - - - Makes vectors normalized and orthogonal to each other. - - - - - - - - Projects a vector onto another vector. - - - - - - - Projects a vector onto a plane defined by a normal orthogonal to the plane. - - - - - - - Reflects a vector off the plane defined by a normal. - - - - - - - Rotates a vector current towards target. - - The vector being managed. - The vector. - The distance between the two vectors in radians. - The length of the radian. - - The location that RotateTowards generates. - - - - - Multiplies two vectors component-wise. - - - - - - - Multiplies every component of this vector by the same component of scale. - - - - - - Set x, y and z components of an existing Vector3. - - - - - - - - Returns the signed angle in degrees between from and to. - - The vector from which the angular difference is measured. - The vector to which the angular difference is measured. - A vector around which the other vectors are rotated. - - - - Spherically interpolates between two vectors. - - - - - - - - Spherically interpolates between two vectors. - - - - - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Gradually changes a vector towards a desired goal over time. - - The current position. - The position we are trying to reach. - The current velocity, this value is modified by the function every time you call it. - Approximately the time it will take to reach the target. A smaller value will reach the target faster. - Optionally allows you to clamp the maximum speed. - The time since the last call to this function. By default Time.deltaTime. - - - - Access the x, y, z components using [0], [1], [2] respectively. - - - - - Returns a nicely formatted string for this vector. - - - - - - Returns a nicely formatted string for this vector. - - - - - - Representation of 3D vectors and points using integers. - - - - - Shorthand for writing Vector3Int (0, -1, 0). - - - - - Shorthand for writing Vector3Int (-1, 0, 0). - - - - - Returns the length of this vector (Read Only). - - - - - Shorthand for writing Vector3Int (1, 1, 1). - - - - - Shorthand for writing Vector3Int (1, 0, 0). - - - - - Returns the squared length of this vector (Read Only). - - - - - Shorthand for writing Vector3Int (0, 1, 0). - - - - - X component of the vector. - - - - - Y component of the vector. - - - - - Z component of the vector. - - - - - Shorthand for writing Vector3Int (0, 0, 0). - - - - - Converts a Vector3 to a Vector3Int by doing a Ceiling to each value. - - - - - - Clamps the Vector3Int to the bounds given by min and max. - - - - - - - Returns the distance between a and b. - - - - - - - Returns true if the objects are equal. - - - - - - Converts a Vector3 to a Vector3Int by doing a Floor to each value. - - - - - - Gets the hash code for the Vector3Int. - - - The hash code of the Vector3Int. - - - - - Converts a Vector3Int to a Vector3. - - - - - - Returns a vector that is made from the largest components of two vectors. - - - - - - - Returns a vector that is made from the smallest components of two vectors. - - - - - - - Returns true if the vectors are equal. - - - - - - - Converts a Vector3Int to a Vector2Int. - - - - - - Subtracts one vector from another. - - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by a number. - - - - - - - Returns true if vectors different. - - - - - - - Adds two vectors. - - - - - - - Converts a Vector3 to a Vector3Int by doing a Round to each value. - - - - - - Multiplies two vectors component-wise. - - - - - - - Multiplies every component of this vector by the same component of scale. - - - - - - Set x, y and z components of an existing Vector3Int. - - - - - - - - Access the x, y or z component using [0], [1] or [2] respectively. - - - - - Returns a nicely formatted string for this vector. - - - - - - Returns a nicely formatted string for this vector. - - - - - - Representation of four-dimensional vectors. - - - - - Returns the length of this vector (Read Only). - - - - - Shorthand for writing Vector4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity). - - - - - Returns this vector with a magnitude of 1 (Read Only). - - - - - Shorthand for writing Vector4(1,1,1,1). - - - - - Shorthand for writing Vector4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity). - - - - - Returns the squared length of this vector (Read Only). - - - - - W component of the vector. - - - - - X component of the vector. - - - - - Y component of the vector. - - - - - Z component of the vector. - - - - - Shorthand for writing Vector4(0,0,0,0). - - - - - Creates a new vector with given x, y, z, w components. - - - - - - - - - Creates a new vector with given x, y, z components and sets w to zero. - - - - - - - - Creates a new vector with given x, y components and sets z and w to zero. - - - - - - - Returns the distance between a and b. - - - - - - - Dot Product of two vectors. - - - - - - - Returns true if the given vector is exactly equal to this vector. - - - - - - Converts a Vector4 to a Vector2. - - - - - - Converts a Vector4 to a Vector3. - - - - - - Converts a Vector2 to a Vector4. - - - - - - Converts a Vector3 to a Vector4. - - - - - - Linearly interpolates between two vectors. - - - - - - - - Linearly interpolates between two vectors. - - - - - - - - Returns a vector that is made from the largest components of two vectors. - - - - - - - Returns a vector that is made from the smallest components of two vectors. - - - - - - - Moves a point current towards target. - - - - - - - - - - - - - - Makes this vector have a magnitude of 1. - - - - - Divides a vector by a number. - - - - - - - Returns true if two vectors are approximately equal. - - - - - - - Subtracts one vector from another. - - - - - - - Negates a vector. - - - - - - Multiplies a vector by a number. - - - - - - - Multiplies a vector by a number. - - - - - - - Adds two vectors. - - - - - - - Projects a vector onto another vector. - - - - - - - Multiplies two vectors component-wise. - - - - - - - Multiplies every component of this vector by the same component of scale. - - - - - - Set x, y, z and w components of an existing Vector4. - - - - - - - - - Access the x, y, z, w components using [0], [1], [2], [3] respectively. - - - - - Return the Vector4 formatted as a string. - - - - - - Return the Vector4 formatted as a string. - - - - - - Wrapping modes for text that reaches the vertical boundary. - - - - - Text well continue to generate when reaching vertical boundary. - - - - - Text will be clipped when reaching the vertical boundary. - - - - - Types of 3D content layout within a video. - - - - - Video does not have any 3D content. - - - - - Video contains 3D content where the left eye occupies the upper half and right eye occupies the lower half of video frames. - - - - - Video contains 3D content where the left eye occupies the left half and right eye occupies the right half of video frames. - - - - - Methods used to fit a video in the target area. - - - - - Resize proportionally so that width fits the target area, cropping or adding black bars above and below if needed. - - - - - Resize proportionally so that content fits the target area, adding black bars if needed. - - - - - Resize proportionally so that content fits the target area, cropping if needed. - - - - - Resize proportionally so that height fits the target area, cropping or adding black bars on each side if needed. - - - - - Preserve the pixel size without adjusting for target area. - - - - - Resize non-proportionally to fit the target area. - - - - - Places where the audio embedded in a video can be sent. - - - - - Send the embedded audio to the associated AudioSampleProvider. - - - - - Send the embedded audio into a specified AudioSource. - - - - - Send the embedded audio direct to the platform's audio hardware. - - - - - Disable the embedded audio. - - - - - A container for video data. - - - - - Number of audio tracks in the clip. - - - - - The length of the VideoClip in frames. (Read Only). - - - - - The frame rate of the clip in frames/second. (Read Only). - - - - - The height of the images in the video clip in pixels. (Read Only). - - - - - The length of the video clip in seconds. (Read Only). - - - - - The video clip path in the project's assets. (Read Only). - - - - - Denominator of the pixel aspect ratio (num:den). (Read Only). - - - - - Numerator of the pixel aspect ratio (num:den). (Read Only). - - - - - The width of the images in the video clip in pixels. (Read Only). - - - - - The number of channels in the audio track. E.g. 2 for a stereo track. - - Index of the audio queried audio track. - - The number of channels. - - - - - Get the audio track language. Can be unknown. - - Index of the audio queried audio track. - - The abbreviated name of the language. - - - - - Get the audio track sampling rate in Hertz. - - Index of the audio queried audio track. - - The sampling rate in Hertz. - - - - - Plays video content onto a target. - - - - - Defines how the video content will be stretched to fill the target area. - - - - - Destination for the audio embedded in the video. - - - - - Number of audio tracks found in the data source currently configured. (Read Only) - - - - - Whether direct-output volume controls are supported for the current platform and video format. (Read Only) - - - - - Whether the playback speed can be changed. (Read Only) - - - - - Whether frame-skipping to maintain synchronization can be controlled. (Read Only) - - - - - Whether current time can be changed using the time or timeFrames property. (Read Only) - - - - - Whether the time source followed by the VideoPlayer can be changed. (Read Only) - - - - - Returns true if the VideoPlayer can step forward through the video content. (Read Only) - - - - - The clip being played by the VideoPlayer. - - - - - Invoked when the VideoPlayer clock is synced back to its Video.VideoTimeReference. - - - - - - The clock time that the VideoPlayer follows to schedule its samples. The clock time is expressed in seconds. (Read Only) - - - - - Number of audio tracks that this VideoPlayer will take control of. - - - - - Maximum number of audio tracks that can be controlled. (Read Only) - - - - - Errors such as HTTP connection problems are reported through this callback. - - - - - - Reference time of the external clock the Video.VideoPlayer uses to correct its drift. - - - - - The frame index of the currently available frame in VideoPlayer.texture. - - - - - Number of frames in the current video content. (Read Only) - - - - - [NOT YET IMPLEMENTED] Invoked when the video decoder does not produce a frame as per the time source during playback. - - - - - - The frame rate of the clip or URL in frames/second. (Read Only) - - - - - Invoked when a new frame is ready. - - - - - - The height of the images in the VideoClip, or URL, in pixels. (Read Only) - - - - - Determines whether the VideoPlayer restarts from the beginning when it reaches the end of the clip. - - - - - Whether playback is paused. (Read Only) - - - - - Whether content is being played. (Read Only) - - - - - Whether the VideoPlayer has successfully prepared the content to be played. (Read Only) - - - - - The length of the VideoClip, or the URL, in seconds. (Read Only) - - - - - Invoked when the VideoPlayer reaches the end of the content to play. - - - - - - Denominator of the pixel aspect ratio (num:den) for the VideoClip or the URL. (Read Only) - - - - - Numerator of the pixel aspect ratio (num:den) for the VideoClip or the URL. (Read Only) - - - - - Factor by which the basic playback rate will be multiplied. - - - - - Whether the content will start playing back as soon as the component awakes. - - - - - Invoked when the VideoPlayer preparation is complete. - - - - - - Where the video content will be drawn. - - - - - Invoke after a seek operation completes. - - - - - - Enables the frameReady events. - - - - - Whether the VideoPlayer is allowed to skip frames to catch up with current time. - - - - - The source that the VideoPlayer uses for playback. - - - - - Invoked immediately after Play is called. - - - - - - Camera component to draw to when Video.VideoPlayer.renderMode is set to either Video.VideoRenderMode.CameraFarPlane or Video.VideoRenderMode.CameraNearPlane. - - - - - Type of 3D content contained in the source video media. - - - - - Overall transparency level of the target camera plane video. - - - - - Material texture property which is targeted when Video.VideoPlayer.renderMode is set to Video.VideoTarget.MaterialOverride. - - - - - Renderer which is targeted when Video.VideoPlayer.renderMode is set to Video.VideoTarget.MaterialOverride - - - - - RenderTexture to draw to when Video.VideoPlayer.renderMode is set to Video.VideoTarget.RenderTexture. - - - - - Internal texture in which video content is placed. (Read Only) - - - - - The presentation time of the currently available frame in VideoPlayer.texture. - - - - - The clock that the Video.VideoPlayer observes to detect and correct drift. - - - - - [NOT YET IMPLEMENTED] The source used used by the VideoPlayer to derive its current time. - - - - - The file or HTTP URL that the VideoPlayer reads content from. - - - - - Determines whether the VideoPlayer will wait for the first frame to be loaded into the texture before starting playback when Video.VideoPlayer.playOnAwake is on. - - - - - The width of the images in the VideoClip, or URL, in pixels. (Read Only) - - - - - Enable/disable audio track decoding. Only effective when the VideoPlayer is not currently playing. - - Index of the audio track to enable/disable. - True for enabling the track. False for disabling the track. - - - - Delegate type for VideoPlayer events that contain an error message. - - The VideoPlayer that is emitting the event. - Message describing the error just encountered. - - - - Delegate type for all parameterless events emitted by VideoPlayers. - - The VideoPlayer that is emitting the event. - - - - Delegate type for VideoPlayer events that carry a frame number. - - The VideoPlayer that is emitting the event. - The current frame of the VideoPlayer. - - - - - The number of audio channels in the specified audio track. - - Index for the audio track being queried. - - Number of audio channels. - - - - - Returns the language code, if any, for the specified track. - - Index of the audio track to query. - - Language code. - - - - - Gets the audio track sampling rate in Hertz. - - Index of the audio track to query. - - The sampling rate in Hertz. - - - - - Gets the direct-output audio mute status for the specified track. - - - - - - Return the direct-output volume for specified track. - - Track index for which the volume is queried. - - Volume, between 0 and 1. - - - - - Gets the AudioSource that will receive audio samples for the specified track if Video.VideoPlayer.audioOutputMode is set to Video.VideoAudioOutputMode.AudioSource. - - Index of the audio track for which the AudioSource is wanted. - - The source associated with the audio track. - - - - - Whether decoding for the specified audio track is enabled. See Video.VideoPlayer.EnableAudioTrack for distinction with mute. - - Index of the audio track being queried. - - Returns true if decoding for the specified audio track is enabled. - - - - - Pauses the playback and leaves the current time intact. - - - - - Starts playback. - - - - - Initiates playback engine preparation. - - - - - Set the direct-output audio mute status for the specified track. - - Track index for which the mute is set. - Mute on/off. - - - - Set the direct-output audio volume for the specified track. - - Track index for which the volume is set. - New volume, between 0 and 1. - - - - Sets the AudioSource that will receive audio samples for the specified track if this audio target is selected with Video.VideoPlayer.audioOutputMode. - - Index of the audio track to associate with the specified AudioSource. - AudioSource to associate with the audio track. - - - - Advances the current time by one frame immediately. - - - - - Stops the playback and sets the current time to 0. - - - - - Delegate type for VideoPlayer events that carry a time position. - - The VideoPlayer that is emitting the event. - Time position. - - - - Type of destination for the images read by a VideoPlayer. - - - - - Don't draw the video content anywhere, but still make it available via the VideoPlayer's texture property in the API. - - - - - Draw video content behind a camera's Scene. - - - - - Draw video content in front of a camera's Scene. - - - - - Draw the video content into a user-specified property of the current GameObject's material. - - - - - Draw video content into a RenderTexture. - - - - - Source of the video content for a VideoPlayer. - - - - - Use the current URL as the video content source. - - - - - Use the current clip as the video content source. - - - - - The clock that the Video.VideoPlayer observes to detect and correct drift. - - - - - External reference clock the Video.VideoPlayer observes to detect and correct drift. - - - - - Disables the drift detection. - - - - - Internal reference clock the Video.VideoPlayer observes to detect and correct drift. - - - - - Time source followed by the Video.VideoPlayer when reading content. - - - - - The audio hardware clock. - - - - - The unscaled game time as defined by Time.realtimeSinceStartup. - - - - - This enum describes how the RenderTexture is used as a VR eye texture. Instead of using the values of this enum manually, use the value returned by XR.XRSettings.eyeTextureDesc|eyeTextureDesc or other VR functions returning a RenderTextureDescriptor. - - - - - The RenderTexture is not a VR eye texture. No special rendering behavior will occur. - - - - - This texture corresponds to a single eye on a stereoscopic display. - - - - - This texture corresponds to two eyes on a stereoscopic display. This will be taken into account when using Graphics.Blit and other rendering functions. - - - - - Waits until the end of the frame after all cameras and GUI is rendered, just before displaying the frame on screen. - - - - - Waits until next fixed frame rate update function. See Also: MonoBehaviour.FixedUpdate. - - - - - Suspends the coroutine execution for the given amount of seconds using scaled time. - - - - - Creates a yield instruction to wait for a given number of seconds using scaled time. - - - - - - Suspends the coroutine execution for the given amount of seconds using unscaled time. - - - - - The given amount of seconds that the yield instruction will wait for. - - - - - Creates a yield instruction to wait for a given number of seconds using unscaled time. - - - - - - Suspends the coroutine execution until the supplied delegate evaluates to true. - - - - - Initializes a yield instruction with a given delegate to be evaluated. - - Supplied delegate will be evaluated each frame after MonoBehaviour.Update and before MonoBehaviour.LateUpdate until delegate returns true. - - - - Suspends the coroutine execution until the supplied delegate evaluates to false. - - - - - Initializes a yield instruction with a given delegate to be evaluated. - - The supplied delegate will be evaluated each frame after MonoBehaviour.Update and before MonoBehaviour.LateUpdate until delegate returns false. - - - - A structure describing the webcam device. - - - - - Possible WebCamTexture resolutions for this device. - - - - - A string identifier used to create a depth data based WebCamTexture. - - - - - Returns true if the camera supports automatic focusing on points of interest and false otherwise. - - - - - True if camera faces the same direction a screen does, false otherwise. - - - - - Property of type WebCamKind denoting the kind of webcam device. - - - - - A human-readable name of the device. Varies across different systems. - - - - - Enum representing the different types of web camera device. - - - - - Camera which supports synchronized color and depth data (currently these are only dual back and true depth cameras on latest iOS devices). - - - - - A Telephoto camera device. These devices have a longer focal length than a wide-angle camera. - - - - - Wide angle (default) camera. - - - - - WebCam Textures are textures onto which the live video input is rendered. - - - - - This property allows you to set/get the auto focus point of the camera. This works only on Android and iOS devices. - - - - - Set this to specify the name of the device to use. - - - - - Return a list of available devices. - - - - - Did the video buffer update this frame? - - - - - This property is true if the texture is based on depth data. - - - - - Returns if the camera is currently playing. - - - - - Set the requested frame rate of the camera device (in frames per second). - - - - - Set the requested height of the camera device. - - - - - Set the requested width of the camera device. - - - - - Returns an clockwise angle (in degrees), which can be used to rotate a polygon so camera contents are shown in correct orientation. - - - - - Returns if the texture image is vertically flipped. - - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Create a WebCamTexture. - - The name of the video input device to be used. - The requested width of the texture. - The requested height of the texture. - The requested frame rate of the texture. - - - - Returns pixel color at coordinates (x, y). - - - - - - - Get a block of pixel colors. - - - - - Get a block of pixel colors. - - - - - - - - - Returns the pixels data in raw format. - - Optional array to receive pixel data. - - - - Returns the pixels data in raw format. - - Optional array to receive pixel data. - - - - Pauses the camera. - - - - - Starts the camera. - - - - - Stops the camera. - - - - - Sets which weights to use when calculating curve segments. - - - - - Include inWeight and outWeight when calculating curve segments. - - - - - Include inWeight when calculating the previous curve segment. - - - - - Exclude both inWeight or outWeight when calculating curve segments. - - - - - Include outWeight when calculating the next curve segment. - - - - - A special collider for vehicle wheels. - - - - - Brake torque expressed in Newton metres. - - - - - The center of the wheel, measured in the object's local space. - - - - - Application point of the suspension and tire forces measured from the base of the resting wheel. - - - - - Properties of tire friction in the direction the wheel is pointing in. - - - - - Indicates whether the wheel currently collides with something (Read Only). - - - - - The mass of the wheel, expressed in kilograms. Must be larger than zero. Typical values would be in range (20,80). - - - - - Motor torque on the wheel axle expressed in Newton metres. Positive or negative depending on direction. - - - - - The radius of the wheel, measured in local space. - - - - - Current wheel axle rotation speed, in rotations per minute (Read Only). - - - - - Properties of tire friction in the sideways direction. - - - - - The mass supported by this WheelCollider. - - - - - Steering angle in degrees, always around the local y-axis. - - - - - Maximum extension distance of wheel suspension, measured in local space. - - - - - The parameters of wheel's suspension. The suspension attempts to reach a target position by applying a linear force and a damping force. - - - - - The damping rate of the wheel. Must be larger than zero. - - - - - Configure vehicle sub-stepping parameters. - - The speed threshold of the sub-stepping algorithm. - Amount of simulation sub-steps when vehicle's speed is below speedThreshold. - Amount of simulation sub-steps when vehicle's speed is above speedThreshold. - - - - Gets ground collision data for the wheel. - - - - - - Gets the world space pose of the wheel accounting for ground contact, suspension limits, steer angle, and rotation angle (angles in degrees). - - Position of the wheel in world space. - Rotation of the wheel in world space. - - - - WheelFrictionCurve is used by the WheelCollider to describe friction properties of the wheel tire. - - - - - Asymptote point slip (default 2). - - - - - Force at the asymptote slip (default 10000). - - - - - Extremum point slip (default 1). - - - - - Force at the extremum slip (default 20000). - - - - - Multiplier for the extremumValue and asymptoteValue values (default 1). - - - - - Contact information for the wheel, reported by WheelCollider. - - - - - The other Collider the wheel is hitting. - - - - - The magnitude of the force being applied for the contact. - - - - - The direction the wheel is pointing in. - - - - - Tire slip in the rolling direction. Acceleration slip is negative, braking slip is positive. - - - - - The normal at the point of contact. - - - - - The point of contact between the wheel and the ground. - - - - - The sideways direction of the wheel. - - - - - Tire slip in the sideways direction. - - - - - The wheel joint allows the simulation of wheels by providing a constraining suspension motion with an optional motor. - - - - - The current joint angle (in degrees) defined as the relative angle between the two Rigidbody2D that the joint connects to. - - - - - The current joint linear speed in meters/sec. - - - - - The current joint rotational speed in degrees/sec. - - - - - The current joint translation. - - - - - Parameters for a motor force that is applied automatically to the Rigibody2D along the line. - - - - - Set the joint suspension configuration. - - - - - Should a motor force be applied automatically to the Rigidbody2D? - - - - - Gets the motor torque of the joint given the specified timestep. - - The time to calculate the motor torque for. - - - - Exposes useful information related to crash reporting on Windows platforms. - - - - - Returns the path to the crash report folder on Windows. - - - - - Class representing cryptography algorithms. - - - - - Computes MD5 hash value for the specified byte array. - - The input to compute the hash code for. - - - - Computes SHA1 hash value for the specified byte array. - - The input to compute the hash code for. - - - - Exposes static methods for directory operations. - - - - - Returns a path to local folder. - - - - - Returns a path to roaming folder. - - - - - Returns a path to temporary folder. - - - - - Creates directory in the specified path. - - The directory path to create. - - - - Deletes a directory from a specified path. - - The name of the directory to remove. - - - - Determines whether the given path refers to an existing directory. - - The path to test. - - - - Provides static methods for file operations. - - - - - Deletes the specified file. - - The name of the file to be deleted. - - - - Determines whether the specified file exists. - - The file to check. - - - - Opens a binary file, reads the contents of the file into a byte array, and then closes the file. - - The file to open for reading. - - - - Creates a new file, writes the specified byte array to the file, and then closes the file. If the target file already exists, it is overwritten. - - The file to write to. - The bytes to write to the file. - - - - This class provides information regarding application's trial status and allows initiating application purchase. - - - - - Checks whether the application is installed in trial mode. - - - - - Attempts to purchase the app if it is in installed in trial mode. - - - Purchase receipt. - - - - - Used by KeywordRecognizer, GrammarRecognizer, DictationRecognizer. Phrases under the specified minimum level will be ignored. - - - - - High confidence level. - - - - - Low confidence level. - - - - - Medium confidence level. - - - - - Everything is rejected. - - - - - Represents the reason why dictation session has completed. - - - - - Dictation session completion was caused by bad audio quality. - - - - - Dictation session was either cancelled, or the application was paused while dictation session was in progress. - - - - - Dictation session has completed successfully. - - - - - Dictation session has finished because a microphone was not available. - - - - - Dictation session has finished because network connection was not available. - - - - - Dictation session has reached its timeout. - - - - - Dictation session has completed due to an unknown error. - - - - - DictationRecognizer listens to speech input and attempts to determine what phrase was uttered. - - - - - The time length in seconds before dictation recognizer session ends due to lack of audio input. - - - - - Create a DictationRecognizer with the specified minimum confidence and dictation topic constraint. Phrases under the specified minimum level will be ignored. - - The confidence level at which the recognizer will begin accepting phrases. - The dictation topic that this dictation recognizer should optimize its recognition for. - - - - - Create a DictationRecognizer with the specified minimum confidence and dictation topic constraint. Phrases under the specified minimum level will be ignored. - - The confidence level at which the recognizer will begin accepting phrases. - The dictation topic that this dictation recognizer should optimize its recognition for. - - - - - Create a DictationRecognizer with the specified minimum confidence and dictation topic constraint. Phrases under the specified minimum level will be ignored. - - The confidence level at which the recognizer will begin accepting phrases. - The dictation topic that this dictation recognizer should optimize its recognition for. - - - - - Create a DictationRecognizer with the specified minimum confidence and dictation topic constraint. Phrases under the specified minimum level will be ignored. - - The confidence level at which the recognizer will begin accepting phrases. - The dictation topic that this dictation recognizer should optimize its recognition for. - - - - - Event that is triggered when the recognizer session completes. - - Delegate that is to be invoked on DictationComplete event. - - - - Delegate for DictationComplete event. - - The cause of dictation session completion. - - - - Event that is triggered when the recognizer session encouters an error. - - Delegate that is to be invoked on DictationError event. - - - - Delegate for DictationError event. - - The error mesage. - HRESULT code that corresponds to the error. - - - - Event that is triggered when the recognizer changes its hypothesis for the current fragment. - - Delegate to be triggered in the event of a hypothesis changed event. - - - - Callback indicating a hypothesis change event. You should register with DictationHypothesis event. - - The text that the recognizer believes may have been recognized. - - - - Event indicating a phrase has been recognized with the specified confidence level. - - The delegate to be triggered when this event is triggered. - - - - Callback indicating a phrase has been recognized with the specified confidence level. You should register with DictationResult event. - - The recognized text. - The confidence level at which the text was recognized. - - - - Disposes the resources this dictation recognizer uses. - - - - - The time length in seconds before dictation recognizer session ends due to lack of audio input in case there was no audio heard in the current session. - - - - - Starts the dictation recognization session. Dictation recognizer can only be started if PhraseRecognitionSystem is not running. - - - - - Indicates the status of dictation recognizer. - - - - - Stops the dictation recognization session. - - - - - DictationTopicConstraint enum specifies the scenario for which a specific dictation recognizer should optimize. - - - - - Dictation recognizer will optimize for dictation scenario. - - - - - Dictation recognizer will optimize for form-filling scenario. - - - - - Dictation recognizer will optimize for web search scenario. - - - - - The GrammarRecognizer is a complement to the KeywordRecognizer. In many cases developers will find the KeywordRecognizer fills all their development needs. However, in some cases, more complex grammars will be better expressed in the form of an xml file on disk. -The GrammarRecognizer uses Extensible Markup Language (XML) elements and attributes, as specified in the World Wide Web Consortium (W3C) Speech Recognition Grammar Specification (SRGS) Version 1.0. These XML elements and attributes represent the rule structures that define the words or phrases (commands) recognized by speech recognition engines. - - - - - Creates a grammar recognizer using specified file path and minimum confidence. - - Path of the grammar file. - The confidence level at which the recognizer will begin accepting phrases. - - - - Creates a grammar recognizer using specified file path and minimum confidence. - - Path of the grammar file. - The confidence level at which the recognizer will begin accepting phrases. - - - - Returns the grammar file path which was supplied when the grammar recognizer was created. - - - - - KeywordRecognizer listens to speech input and attempts to match uttered phrases to a list of registered keywords. - - - - - Create a KeywordRecognizer which listens to specified keywords with the specified minimum confidence. Phrases under the specified minimum level will be ignored. - - The keywords that the recognizer will listen to. - The minimum confidence level of speech recognition that the recognizer will accept. - - - - Create a KeywordRecognizer which listens to specified keywords with the specified minimum confidence. Phrases under the specified minimum level will be ignored. - - The keywords that the recognizer will listen to. - The minimum confidence level of speech recognition that the recognizer will accept. - - - - Returns the list of keywords which was supplied when the keyword recognizer was created. - - - - - Phrase recognition system is responsible for managing phrase recognizers and dispatching recognition events to them. - - - - - Returns whether speech recognition is supported on the machine that the application is running on. - - - - - Delegate for OnError event. - - Error code for the error that occurred. - - - - Event that gets invoked when phrase recognition system encounters an error. - - Delegate that will be invoked when the event occurs. - - - - Event which occurs when the status of the phrase recognition system changes. - - Delegate that will be invoked when the event occurs. - - - - Attempts to restart the phrase recognition system. - - - - - Shuts phrase recognition system down. - - - - - Returns the current status of the phrase recognition system. - - - - - Delegate for OnStatusChanged event. - - The new status of the phrase recognition system. - - - - Provides information about a phrase recognized event. - - - - - A measure of correct recognition certainty. - - - - - The time it took for the phrase to be uttered. - - - - - The moment in time when uttering of the phrase began. - - - - - A semantic meaning of recognized phrase. - - - - - The text that was recognized. - - - - - A common base class for both keyword recognizer and grammar recognizer. - - - - - Disposes the resources used by phrase recognizer. - - - - - Tells whether the phrase recognizer is listening for phrases. - - - - - Event that gets fired when the phrase recognizer recognizes a phrase. - - Delegate that will be invoked when the event occurs. - - - - Delegate for OnPhraseRecognized event. - - Information about a phrase recognized event. - - - - Makes the phrase recognizer start listening to phrases. - - - - - Stops the phrase recognizer from listening to phrases. - - - - - Semantic meaning is a collection of semantic properties of a recognized phrase. These semantic properties can be specified in SRGS grammar files. - - - - - A key of semantic meaning. - - - - - Values of semantic property that the correspond to the semantic meaning key. - - - - - Represents an error in a speech recognition system. - - - - - Speech recognition engine failed because the audio quality was too low. - - - - - Speech recognition engine failed to compiled specified grammar. - - - - - Speech error occurred because a microphone was not available. - - - - - Speech error occurred due to a network failure. - - - - - No error occurred. - - - - - A speech recognition system has timed out. - - - - - Supplied grammar file language is not supported. - - - - - A speech recognition system has encountered an unknown error. - - - - - Represents the current status of the speech recognition system or a dictation recognizer. - - - - - Speech recognition system has encountered an error and is in an indeterminate state. - - - - - Speech recognition system is running. - - - - - Speech recognition system is stopped. - - - - - Wind Zones add realism to the trees you create by making them wave their branches and leaves as if blown by the wind. - - - - - Defines the type of wind zone to be used (Spherical or Directional). - - - - - Radius of the Spherical Wind Zone (only active if the WindZoneMode is set to Spherical). - - - - - The primary wind force. - - - - - Defines the frequency of the wind changes. - - - - - Defines how much the wind changes over time. - - - - - The turbulence wind force. - - - - - The constructor. - - - - - Modes a Wind Zone can have, either Spherical or Directional. - - - - - Wind zone affects the entire Scene in one direction. - - - - - Wind zone only has an effect inside the radius, and has a falloff from the center towards the edge. - - - - - Determines how time is treated outside of the keyframed range of an AnimationClip or AnimationCurve. - - - - - Plays back the animation. When it reaches the end, it will keep playing the last frame and never stop playing. - - - - - Reads the default repeat mode set higher up. - - - - - When time reaches the end of the animation clip, time will continue at the beginning. - - - - - When time reaches the end of the animation clip, the clip will automatically stop playing and time will be reset to beginning of the clip. - - - - - When time reaches the end of the animation clip, time will ping pong back between beginning and end. - - - - - Delegate that can be invoked on specific thread. - - - - - Provides essential methods related to Window Store application. - - - - - Advertising ID. - - - - - Arguments passed to application. - - - - - Fired when application window is activated. - - - - - - Fired when window size changes. - - - - - - Executes callback item on application thread. - - Item to execute. - Wait until item is executed. - - - - Executes callback item on UI thread. - - Item to execute. - Wait until item is executed. - - - - Returns true if you're running on application thread. - - - - - Returns true if you're running on UI thread. - - - - - [OBSOLETE] Tries to execute callback item on application thread. - - Item to execute. - Wait until item is executed. - - - - [OBSOLETE] Tries to execute callback item on UI thread. - - Item to execute. - Wait until item is executed. - - - - Cursor API for Windows Store Apps. - - - - - Set a custom cursor. - - The cursor resource id. - - - - List of accessible folders on Windows Store Apps. - - - - - Class which is capable of launching user's default app for file type or a protocol. See also PlayerSettings where you can specify file or URI associations. - - - - - Launches the default app associated with specified file. - - Folder type where the file is located. - Relative file path inside the specified folder. - Shows user a warning that application will be switched. - - - - Opens a dialog for picking the file. - - File extension. - - - - Starts the default app associated with the URI scheme name for the specified URI, using the specified options. - - The URI. - Displays a warning that the URI is potentially unsafe. - - - - Defines the default look of secondary tile. - - - - - - Arguments to be passed for application when secondary tile is activated. - - - - - Defines background color for secondary tile. - - - - - - Defines, whether backgroundColor should be used. - - - - - - Display name for secondary tile. - - - - - - Defines the style for foreground text on a secondary tile. - - - - - - Uri to logo, shown for secondary tile on lock screen. - - - - - - Whether to show secondary tile on lock screen. - - - - - - Phonetic name for secondary tile. - - - - - - Defines whether secondary tile is copied to another device when application is installed by the same users account. - - - - - - Defines whether the displayName should be shown on a medium secondary tile. - - - - - - Defines whether the displayName should be shown on a large secondary tile. - - - - - - Defines whether the displayName should be shown on a wide secondary tile. - - - - - - Uri to the logo for medium size tile. - - - - - Uri to the logo shown on tile - - - - - - Uri to the logo for large size tile. - - - - - - Uri to the logo for small size tile. - - - - - - Unique identifier within application for a secondary tile. - - - - - - Uri to the logo for wide tile. - - - - - Constructor for SecondaryTileData, sets default values for all members. - - Unique identifier for secondary tile. - A display name for a tile. - - - - Represents tile on Windows start screen - - - - - - Whether secondary tile is pinned to start screen. - - - - - - Whether secondary tile was approved (pinned to start screen) or rejected by user. - - - - - - A unique string, identifying secondary tile - - - - - Returns applications main tile - - - - - - Creates new or updates existing secondary tile. - - The data used to create or update secondary tile. - The coordinates for a request to create new tile. - The area on the screen above which the request to create new tile will be displayed. - - New Tile object, that can be used for further work with the tile. - - - - - Creates new or updates existing secondary tile. - - The data used to create or update secondary tile. - The coordinates for a request to create new tile. - The area on the screen above which the request to create new tile will be displayed. - - New Tile object, that can be used for further work with the tile. - - - - - Creates new or updates existing secondary tile. - - The data used to create or update secondary tile. - The coordinates for a request to create new tile. - The area on the screen above which the request to create new tile will be displayed. - - New Tile object, that can be used for further work with the tile. - - - - - Show a request to unpin secondary tile from start screen. - - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Show a request to unpin secondary tile from start screen. - - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Show a request to unpin secondary tile from start screen. - - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Show a request to unpin secondary tile from start screen. - - An identifier for secondary tile. - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Show a request to unpin secondary tile from start screen. - - An identifier for secondary tile. - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Show a request to unpin secondary tile from start screen. - - An identifier for secondary tile. - The coordinates for a request to unpin tile. - The area on the screen above which the request to unpin tile will be displayed. - - - - Whether secondary tile is pinned to start screen. - - An identifier for secondary tile. - - - - Gets all secondary tiles. - - - An array of Tile objects. - - - - - Returns the secondary tile, identified by tile id. - - A tile identifier. - - A Tile object or null if secondary tile does not exist (not pinned to start screen and user request is complete). - - - - - Get template XML for tile notification. - - A template identifier. - - String, which is an empty XML document to be filled and used for tile notification. - - - - - Starts periodic update of a badge on a tile. - - - A remote location from where to retrieve tile update - A time interval in minutes, will be rounded to a value, supported by the system - - - - Starts periodic update of a tile. - - - a remote location fromwhere to retrieve tile update - a time interval in minutes, will be rounded to a value, supported by the system - - - - Remove badge from tile. - - - - - Stops previously started periodic update of a tile. - - - - - Stops previously started periodic update of a tile. - - - - - Send a notification for tile (update tiles look). - - A string containing XML document for new tile look. - An uri to 150x150 image, shown on medium tile. - An uri to a 310x150 image to be shown on a wide tile (if such issupported). - An uri to a 310x310 image to be shown on a large tile (if such is supported). - A text to shown on a tile. - - - - Send a notification for tile (update tiles look). - - A string containing XML document for new tile look. - An uri to 150x150 image, shown on medium tile. - An uri to a 310x150 image to be shown on a wide tile (if such issupported). - An uri to a 310x310 image to be shown on a large tile (if such is supported). - A text to shown on a tile. - - - - Sets or updates badge on a tile to an image. - - Image identifier. - - - - Set or update a badge on a tile to a number. - - Number to be shown on a badge. - - - - Style for foreground text on a secondary tile. - - - - - Templates for various tile styles. - - - - - - Represents a toast notification in Windows Store Apps. - - - - - - true if toast was activated by user. - - - - - Arguments to be passed for application when toast notification is activated. - - - - - true if toast notification was dismissed (for any reason). - - - - - true if toast notification was explicitly dismissed by user. - - - - - Create toast notification. - - XML document with tile data. - Uri to image to show on a toast, can be empty, in that case text-only notification will be shown. - A text to display on a toast notification. - - A toast object for further work with created notification or null, if creation of toast failed. - - - - - Create toast notification. - - XML document with tile data. - Uri to image to show on a toast, can be empty, in that case text-only notification will be shown. - A text to display on a toast notification. - - A toast object for further work with created notification or null, if creation of toast failed. - - - - - Get template XML for toast notification. - - - A template identifier. - - string, which is an empty XML document to be filled and used for toast notification. - - - - - Hide displayed toast notification. - - - - - Show toast notification. - - - - - Templates for various toast styles. - - - - - - This event occurs when window completes activation or deactivation, it also fires up when you snap and unsnap the application. - - - - - - Specifies the set of reasons that a windowActivated event was raised. - - - - - The window was activated. - - - - - The window was deactivated. - - - - - The window was activated by pointer interaction. - - - - - This event occurs when window rendering size changes. - - - - - - - Simple access to web pages. - - - - - Streams an AssetBundle that can contain any kind of asset from the project folder. - - - - - Returns a AudioClip generated from the downloaded data (Read Only). - - - - - Returns the contents of the fetched web page as a byte array (Read Only). - - - - - The number of bytes downloaded by this WWW query (read only). - - - - - Returns an error message if there was an error during the download (Read Only). - - - - - Is the download already finished? (Read Only) - - - - - Returns a MovieTexture generated from the downloaded data (Read Only). - - - - - Load an Ogg Vorbis file into the audio clip. - - - - - How far has the download progressed (Read Only). - - - - - Dictionary of headers returned by the request. - - - - - Returns the contents of the fetched web page as a string (Read Only). - - - - - Returns a Texture2D generated from the downloaded data (Read Only). - - - - - Returns a non-readable Texture2D generated from the downloaded data (Read Only). - - - - - Obsolete, has no effect. - - - - - How far has the upload progressed (Read Only). - - - - - The URL of this WWW request (Read Only). - - - - - Creates a WWW request with the given URL. - - The url to download. Must be '%' escaped. - - A new WWW object. When it has been downloaded, the results can be fetched from the returned object. - - - - - Creates a WWW request with the given URL. - - The url to download. Must be '%' escaped. - A WWWForm instance containing the form data to post. - - A new WWW object. When it has been downloaded, the results can be fetched from the returned object. - - - - - Creates a WWW request with the given URL. - - The url to download. Must be '%' escaped. - A byte array of data to be posted to the url. - - A new WWW object. When it has been downloaded, the results can be fetched from the returned object. - - - - - Creates a WWW request with the given URL. - - The url to download. Must be '%' escaped. - A byte array of data to be posted to the url. - A hash table of custom headers to send with the request. - - A new WWW object. When it has been downloaded, the results can be fetched from the returned object. - - - - - Creates a WWW request with the given URL. - - The url to download. Must be '%' escaped. - A byte array of data to be posted to the url. - A dictionary that contains the header keys and values to pass to the server. - - A new WWW object. When it has been downloaded, the results can be fetched from the returned object. - - - - - Disposes of an existing WWW object. - - - - - Escapes characters in a string to ensure they are URL-friendly. - - A string with characters to be escaped. - The text encoding to use. - - - - Escapes characters in a string to ensure they are URL-friendly. - - A string with characters to be escaped. - The text encoding to use. - - - - Returns an AudioClip generated from the downloaded data (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip -the .audioClip property defaults to 3D. - Sets whether the clip should be completely downloaded before it's ready to play (false) or the stream can be played even if only part of the clip is downloaded (true). -The latter will disable seeking on the clip (with .time and/or .timeSamples). - The AudioType of the content you are downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - Returns an AudioClip generated from the downloaded data (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip -the .audioClip property defaults to 3D. - Sets whether the clip should be completely downloaded before it's ready to play (false) or the stream can be played even if only part of the clip is downloaded (true). -The latter will disable seeking on the clip (with .time and/or .timeSamples). - The AudioType of the content you are downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - Returns an AudioClip generated from the downloaded data (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip -the .audioClip property defaults to 3D. - Sets whether the clip should be completely downloaded before it's ready to play (false) or the stream can be played even if only part of the clip is downloaded (true). -The latter will disable seeking on the clip (with .time and/or .timeSamples). - The AudioType of the content you are downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - Returns an AudioClip generated from the downloaded data that is compressed in memory (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip. - The AudioType of the content your downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - Returns an AudioClip generated from the downloaded data that is compressed in memory (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip. - The AudioType of the content your downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - Returns an AudioClip generated from the downloaded data that is compressed in memory (Read Only). - - Use this to specify whether the clip should be a 2D or 3D clip. - The AudioType of the content your downloading. If this is not set Unity will try to determine the type from URL. - - The returned AudioClip. - - - - - MovieTexture has been deprecated. Refer to the new movie playback solution VideoPlayer. - - - - - Loads an AssetBundle with the specified version number from the cache. If the AssetBundle is not currently cached, it will automatically be downloaded and stored in the cache for future retrieval from local storage. - - The URL to download the AssetBundle from, if it is not present in the cache. Must be '%' escaped. - Version of the AssetBundle. The file will only be loaded from the disk cache if it has previously been downloaded with the same version parameter. By incrementing the version number requested by your application, you can force Caching to download a new copy of the AssetBundle from url. - Hash128 which is used as the version of the AssetBundle. - A structure used to download a given version of AssetBundle to a customized cache path. - -Analogous to the cachedAssetBundle parameter for UnityWebRequestAssetBundle.GetAssetBundle.</param> - An optional CRC-32 Checksum of the uncompressed contents. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. You can use this to avoid data corruption from bad downloads or users tampering with the cached files on disk. If the CRC does not match, Unity will try to redownload the data, and if the CRC on the server does not match it will fail with an error. Look at the error string returned to see the correct CRC value to use for an AssetBundle. - - A WWW instance, which can be used to access the data once the load/download operation is completed. - - - - - Loads an AssetBundle with the specified version number from the cache. If the AssetBundle is not currently cached, it will automatically be downloaded and stored in the cache for future retrieval from local storage. - - The URL to download the AssetBundle from, if it is not present in the cache. Must be '%' escaped. - Version of the AssetBundle. The file will only be loaded from the disk cache if it has previously been downloaded with the same version parameter. By incrementing the version number requested by your application, you can force Caching to download a new copy of the AssetBundle from url. - Hash128 which is used as the version of the AssetBundle. - A structure used to download a given version of AssetBundle to a customized cache path. - -Analogous to the cachedAssetBundle parameter for UnityWebRequestAssetBundle.GetAssetBundle.</param> - An optional CRC-32 Checksum of the uncompressed contents. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. You can use this to avoid data corruption from bad downloads or users tampering with the cached files on disk. If the CRC does not match, Unity will try to redownload the data, and if the CRC on the server does not match it will fail with an error. Look at the error string returned to see the correct CRC value to use for an AssetBundle. - - A WWW instance, which can be used to access the data once the load/download operation is completed. - - - - - Loads an AssetBundle with the specified version number from the cache. If the AssetBundle is not currently cached, it will automatically be downloaded and stored in the cache for future retrieval from local storage. - - The URL to download the AssetBundle from, if it is not present in the cache. Must be '%' escaped. - Version of the AssetBundle. The file will only be loaded from the disk cache if it has previously been downloaded with the same version parameter. By incrementing the version number requested by your application, you can force Caching to download a new copy of the AssetBundle from url. - Hash128 which is used as the version of the AssetBundle. - A structure used to download a given version of AssetBundle to a customized cache path. - -Analogous to the cachedAssetBundle parameter for UnityWebRequestAssetBundle.GetAssetBundle.</param> - An optional CRC-32 Checksum of the uncompressed contents. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. You can use this to avoid data corruption from bad downloads or users tampering with the cached files on disk. If the CRC does not match, Unity will try to redownload the data, and if the CRC on the server does not match it will fail with an error. Look at the error string returned to see the correct CRC value to use for an AssetBundle. - - A WWW instance, which can be used to access the data once the load/download operation is completed. - - - - - Loads an AssetBundle with the specified version number from the cache. If the AssetBundle is not currently cached, it will automatically be downloaded and stored in the cache for future retrieval from local storage. - - The URL to download the AssetBundle from, if it is not present in the cache. Must be '%' escaped. - Version of the AssetBundle. The file will only be loaded from the disk cache if it has previously been downloaded with the same version parameter. By incrementing the version number requested by your application, you can force Caching to download a new copy of the AssetBundle from url. - Hash128 which is used as the version of the AssetBundle. - A structure used to download a given version of AssetBundle to a customized cache path. - -Analogous to the cachedAssetBundle parameter for UnityWebRequestAssetBundle.GetAssetBundle.</param> - An optional CRC-32 Checksum of the uncompressed contents. If this is non-zero, then the content will be compared against the checksum before loading it, and give an error if it does not match. You can use this to avoid data corruption from bad downloads or users tampering with the cached files on disk. If the CRC does not match, Unity will try to redownload the data, and if the CRC on the server does not match it will fail with an error. Look at the error string returned to see the correct CRC value to use for an AssetBundle. - - A WWW instance, which can be used to access the data once the load/download operation is completed. - - - - - Replaces the contents of an existing Texture2D with an image from the downloaded data. - - An existing texture object to be overwritten with the image data. - - - - - Converts URL-friendly escape sequences back to normal text. - - A string containing escaped characters. - The text encoding to use. - - - - Converts URL-friendly escape sequences back to normal text. - - A string containing escaped characters. - The text encoding to use. - - - - Helper class to generate form data to post to web servers using the UnityWebRequest or WWW classes. - - - - - (Read Only) The raw data to pass as the POST request body when sending the form. - - - - - (Read Only) Returns the correct request headers for posting the form using the WWW class. - - - - - Add binary data to the form. - - - - - - - - - Add binary data to the form. - - - - - - - - - Add binary data to the form. - - - - - - - - - Add a simple field to the form. - - - - - - - - Add a simple field to the form. - - - - - - - - Adds a simple field to the form. - - - - - - - Creates an empty WWWForm object. - - - - - Class used to override a camera's default background rendering path to instead render a given Texture and/or Material. This will typically be used with images from the color camera for rendering the AR background on mobile devices. - - - - - The Material used for AR rendering. - - - - - Called when any of the public properties of this class have been changed. - - - - - - An optional Texture used for AR rendering. If this property is not set then the texture set in XR.ARBackgroundRenderer._backgroundMaterial as "_MainTex" is used. - - - - - An optional Camera whose background rendering will be overridden by this class. If this property is not set then the main Camera in the Scene is used. - - - - - When set to XR.ARRenderMode.StandardBackground (default) the camera is not overridden to display the background image. Setting this property to XR.ARRenderMode.MaterialAsBackground will render the texture specified by XR.ARBackgroundRenderer._backgroundMaterial and or XR.ARBackgroundRenderer._backgroundTexture as the background. - - - - - Disables AR background rendering. This method is called internally but can be overridden by users who wish to subclass XR.ARBackgroundRenderer to customize handling of AR background rendering. - - - - - Enumeration describing the AR rendering mode used with XR.ARBackgroundRenderer. - - - - - The material associated with XR.ARBackgroundRenderer is being rendered as the background. - - - - - The standard background is rendered. (Skybox, Solid Color, etc.) - - - - - Enumeration of available modes for XR rendering in the Game view or in the main window on a host PC. XR rendering only occurs when the Unity Editor is in Play Mode. - - - - - Renders both eyes of the XR device side-by-side in the Game view or in the main window on a host PC. - - - - - Renders the left eye of the XR device in the Game View window or in main window on a host PC. - - - - - Renders both eyes of the XR device, and the occlusion mesh, side-by-side in the Game view or in the main window on a host PC. - - - - - Renders the right eye of the XR device in the Game View window or in main window on a host PC. - - - - - Describes the haptic capabilities of the device at an XR.XRNode in the XR input subsystem. - - - - - The frequency (in Hz) that this device plays back buffered haptic data. - - - - - The number of channels that this device plays back haptic data. - - - - - True if this device supports sending a haptic buffer. - - - - - True if this device supports sending a haptic impulse. - - - - - Defines an input device in the XR input subsystem. - - - - - true if the device is currently a valid input device; otherwise false. - - - - - Sends a raw buffer of haptic data to the device. - - The channel to receive the data. - A raw byte buffer that contains the haptic data to send to the device. - - true if successful; otherwise false. - - - - - Sends a haptic impulse to a device. - - The channel to receive the impulse. - The normalized (0.0 to 1.0) amplitude value of the haptic impulse to play on the device. - The duration in seconds that the haptic impulse will play. Only supported on Oculus. - - true if successful; otherwise false. - - - - - Stop all haptic playback for a device. - - - - - Gets the haptic capabilities of the device. - - A HapticCapabilities struct to receive the capabilities of this device. - - true if device can be queried, false otherwise. - - - - - An interface for accessing devices in the XR input subsytem. - - - - - Gets the input device at a given XR.XRNode endpoint. - - The XRNode that owns the requested device. - - An XR.InputDevice at this [[XR.XRNode]. - - - - - A collection of methods and properties for interacting with the XR tracking system. - - - - - Disables positional tracking in XR. This takes effect the next time the head pose is sampled. If set to true the camera only tracks headset rotation state. - - - - - Called when a tracked node is added to the underlying XR system. - - Describes the node that has been added. - - - - - Called when a tracked node is removed from the underlying XR system. - - Describes the node that has been removed. - - - - - Called when a tracked node begins reporting tracking information. - - Describes the node that has begun being tracked. - - - - - Called when a tracked node stops reporting tracking information. - - Describes the node that has lost tracking. - - - - - Gets the position of a specific node. - - Specifies which node's position should be returned. - - The position of the node in its local tracking space. - - - - - Gets the rotation of a specific node. - - Specifies which node's rotation should be returned. - - The rotation of the node in its local tracking space. - - - - - Accepts the unique identifier for a tracked node and returns a friendly name for it. - - The unique identifier for the Node index. - - - The name of the tracked node if the given 64-bit identifier maps to a currently tracked node. Empty string otherwise. - - - - - Describes all currently connected XRNodes and provides available tracking states for each. - - A list that is populated with XR.XRNodeState objects. - - - - Center tracking to the current position and orientation of the HMD. - - - - - Represents how the device is reporting pose data. - - - - - Represents a Device relative tracking origin. A Device relative tracking origin defines a Local Origin at the position of the device in space at some previous point in time, usually at a recenter event, power-on or AR/VR session start. Pose data provided by the device will be in this space relative to the local origin. This means that poses returned in this mode will not include the user height (for VR) or the device height (for AR) and any camera tracking from the XR Device will need to be manually offset accordingly. - - - - - Represents the tracking origin whereby 0,0,0 is on the "floor" or other surface determined by the XR Device being used. The pose values reported by an XR Device in this mode will include the height of the XR Device above this surface, removing the need to offset the position of the camera tracking the XR Device by the height of the user (VR) or the height of the device above the floor (AR). - - - - - This indicates that the device does not know, or is unable to determine how it is reporting pose data. This value should be treated as an error condition. - - - - - Represents the size of physical space available for XR. - - - - - Represents a space large enough for free movement. - - - - - Represents a small space where movement may be constrained or positional tracking is unavailable. - - - - - Represents the current user presence state detected by the device. - - - - - The device does not detect that the user is present. - - - - - The device detects that the user is present. - - - - - The device is currently in a state where it cannot determine user presence. - - - - - The device does not support detecting user presence. - - - - - he Holographic Remoting interface allows you to connect an application to a remote holographic device, and stream data between the application and that device. - - - - - Whether the app is displaying protected content. - - - - - The Holographic Settings contain functions which effect the performance and presentation of Holograms on Windows Holographic platforms. - - - - - Option to allow developers to achieve higher framerate at the cost of high latency. By default this option is off. - - True to enable or false to disable Low Latent Frame Presentation. - - - - Represents the kind of reprojection an app is requesting to stabilize its holographic rendering relative to the user's head motion. - - - - - The image should not be stabilized for the user's head motion, instead remaining fixed in the display. This is generally discouraged, as it is only comfortable for users when used sparingly, such as when the only visible content is a small cursor. - - - - - The image should be stabilized only for changes to the user's head orientation, ignoring positional changes. This is best for body-locked content that should tag along with the user as they walk around, such as 360-degree video. - - - - - The image should be stabilized for changes to both the user's head position and orientation. This is best for world-locked content that should remain physically stationary as the user walks around. - - - - - Whether the app is displaying protected content. - - - - - This method returns whether or not the display associated with the main camera reports as opaque. - - - - - Returns true if Holographic rendering is currently running with Latent Frame Presentation. Default value is false. - - - - - The kind of reprojection the app is requesting to stabilize its holographic rendering relative to the user's head motion. - - - - - Sets a point in 3d space that is the focal point of the Scene for the user for this frame. This helps improve the visual fidelity of content around this point. This must be set every frame. - - The position of the focal point in the Scene, relative to the camera. - Surface normal of the plane being viewed at the focal point. - A vector that describes how the focus point is moving in the Scene at this point in time. This allows the HoloLens to compensate for both your head movement and the movement of the object in the Scene. - - - - Sets a point in 3d space that is the focal point of the Scene for the user for this frame. This helps improve the visual fidelity of content around this point. This must be set every frame. - - The position of the focal point in the Scene, relative to the camera. - Surface normal of the plane being viewed at the focal point. - A vector that describes how the focus point is moving in the Scene at this point in time. This allows the HoloLens to compensate for both your head movement and the movement of the object in the Scene. - - - - Sets a point in 3d space that is the focal point of the Scene for the user for this frame. This helps improve the visual fidelity of content around this point. This must be set every frame. - - The position of the focal point in the Scene, relative to the camera. - Surface normal of the plane being viewed at the focal point. - A vector that describes how the focus point is moving in the Scene at this point in time. This allows the HoloLens to compensate for both your head movement and the movement of the object in the Scene. - - - - Enum indicating the reason why connection to remote device has failed. - - - - - Enum indicating the reason why remote connection failed. - - - - - Handskahe failed while traying to establish connection with remote device. - - - - - No failure. - - - - - Protocol used by the app does not match remoting app running on remote device. - - - - - Couldn't identify the reason why connection failed. - - - - - Remove device is not reachable. - - - - - Current state of the holographis streamer remote connection. - - - - - Indicates app being connected to remote device. - - - - - Indicates app trying to connect to remote device. - - - - - Indicates app being currently disconnected from any other remote device. - - - - - Contains fields that are relevant during an error event. - - - - - A readable error string (when possible). - - - - - The HRESULT code from the platform. - - - - - Manager class with API for recognizing user gestures. - - - - - Cancels any pending gesture events. Additionally this will call StopCapturingGestures. - - - - - Create a GestureRecognizer. - - - - - Disposes the resources used by gesture recognizer. - - - - - Fires when Microsoft's gesture-recognition system encounters a warning or error. - - - - - - Callback indicating an error or warning occurred. - - A readable error string (when possible). - The HRESULT code from the platform. - - - - Fired when a warning or error is emitted by the GestureRecognizer. - - Delegate to be triggered to report warnings and errors. - - - - Retrieve a mask of the currently enabled gestures. - - - A mask indicating which Gestures are currently recognizable. - - - - - Fires when Microsoft's gesture-recognition system recognizers that a user has canceled a hold gesture. - - - - - - Fired when the user does a cancel event either using their hands or in speech. - - Delegate to be triggered when a cancel event is triggered. - - - - Callback indicating a cancel event. - - Indicates which input medium triggered this event. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizers that a user has completed a hold gesture. - - - - - - Fired when users complete a hold gesture. - - Delegate to be triggered when the user completes a hold gesture. - - - - Callback indicating a hold completed event. - - Indicates which input medium triggered this event. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has started a hold gesture. - - - - - - Fired when users start a hold gesture. - - The delegate to be triggered when a user starts a hold gesture. - - - - Callback indicating a hold started event. - - Indicates which input medium triggered this event. - Ray (with normalized direction) from user at the time this gesture began. - - - - Used to query if the GestureRecognizer is currently receiving Gesture events. - - - True if the GestureRecognizer is receiving events or false otherwise. - - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has canceled a manipulation gesture. - - - - - - Fires when a Manipulation gesture is canceled. - - Delegate to be triggered when a cancel event is triggered. - - - - Callback indicating a cancel event. - - Indicates which input medium triggered this event. - Total distance moved since the beginning of the manipulation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has completed a manipulation gesture. - - - - - - Fires when a Manipulation gesture is completed. - - Delegate to be triggered when a completed event is triggered. - - - - Callback indicating a completed event. - - Indicates which input medium triggered this event. - Total distance moved since the beginning of the manipulation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has started a manipulation gesture. - - - - - - Fires when an interaction becomes a Manipulation gesture. - - Delegate to be triggered when a started event is triggered. - - - - Callback indicating a started event. - - Indicates which input medium triggered this event. - Total distance moved since the beginning of the manipulation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has updated a manipulation gesture. - - - - - - Fires when a Manipulation gesture is updated due to hand movement. - - Delegate to be triggered when a updated event is triggered. - - - - Callback indicating a updated event. - - Indicates which input medium triggered this event. - Total distance moved since the beginning of the manipulation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has canceled a navigation gesture. - - - - - - Fires when a Navigation gesture is canceled. - - Delegate to be triggered when a cancel event is triggered. - - - - Callback indicating a cancel event. - - Indicates which input medium triggered this event. - The last known normalized offset of the input within the unit cube for the navigation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a navigation gesture completes. - - - - - - Fires when a Navigation gesture is completed. - - Delegate to be triggered when a complete event is triggered. - - - - Callback indicating a completed event. - - Indicates which input medium triggered this event. - The last known normalized offset, since the navigation gesture began, of the input within the unit cube for the navigation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has started a navigation gesture. - - - - - - Fires when an interaction becomes a Navigation gesture. - - Delegate to be triggered when a started event is triggered. - - - - Callback indicating a started event. - - Indicates which input medium triggered this event. - The normalized offset, since the navigation gesture began, of the input within the unit cube for the navigation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when Microsoft's gesture-recognition system recognizes that navigation gesture has updated. - - - - - - Fires when a Navigation gesture is updated due to hand or controller movement. - - Delegate to be triggered when a update event is triggered. - - - - Callback indicating a update event. - - Indicates which input medium triggered this event. - The last known normalized offset, since the navigation gesture began, of the input within the unit cube for the navigation gesture. - Ray (with normalized direction) from user at the time this gesture began. - - - - Fires when recognition of gestures is done, either due to completion of a gesture or cancellation. - - - - - - Fires when recognition of gestures is done, either due to completion of a gesture or cancellation. - - Delegate to be triggered when an end event is triggered. - - - - Callback indicating the gesture event has completed. - - Indicates which input medium triggered this event. - Ray (with normalized direction) from user at the time a gesture began. - - - - Fires when recognition of gestures begins. - - - - - - Fires when recognition of gestures begins. - - Delegate to be triggered when a start event is triggered. - - - - Callback indicating the gesture event has started. - - Indicates which input medium triggered this event. - Ray (with normalized direction) from user at the time a gesture began. - - - - Set the recognizable gestures to the ones specified in newMaskValues and return the old settings. - - A mask indicating which gestures are now recognizable. - - The previous value. - - - - - Call to begin receiving gesture events on this recognizer. No events will be received until this method is called. - - - - - Call to stop receiving gesture events on this recognizer. - - - - - Fires when Microsoft's gesture-recognition system recognizes that a user has done a tap gesture and after the system voice command "Select" has been processed. For controllers, this event fires when the primary button is released after it was pressed. - - - - - - Occurs when a Tap gesture is recognized. - - Delegate to be triggered when a tap event is triggered. - - - - Callback indicating a tap event. - - Indicates which input medium triggered this event. - The count of taps (1 for single tap, 2 for double tap). - Ray (with normalized direction) from user at the time this event interaction began. - - - - This enumeration represents the set of gestures that may be recognized by GestureRecognizer. - - - - - Enable support for the double-tap gesture. - - - - - Enable support for the hold gesture. - - - - - Enable support for the manipulation gesture which tracks changes to the hand's position. This gesture is relative to the start position of the gesture and measures an absolute movement through the world. - - - - - Enable support for the navigation gesture, in the horizontal axis using rails (guides). - - - - - Enable support for the navigation gesture, in the vertical axis using rails (guides). - - - - - Enable support for the navigation gesture, in the depth axis using rails (guides). - - - - - Enable support for the navigation gesture, in the horizontal axis. - - - - - Enable support for the navigation gesture, in the vertical axis. - - - - - Enable support for the navigation gesture, in the depth axis. - - - - - Disable support for gestures. - - - - - Enable support for the tap gesture. - - - - - Contains fields that are relevant when a user cancels a hold gesture. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that canceled the hold gesture. - - - - - Represents pose data of the input source, such as a hand or controller, when the gesture occurred. - - - - - Contains fields that are relevant when a hold gesture completes. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that completed the hold gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a hold gesture starts. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that started the hold gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Provides access to user input from hands, controllers, and system voice commands. - - - - - (Read Only) The number of InteractionSourceState snapshots available for reading with InteractionManager.GetCurrentReading. - - - - - Get the current SourceState. - - - An array of InteractionSourceState snapshots. - - - - - Allows retrieving the current source states without allocating an array. The number of retrieved source states will be returned, up to a maximum of the size of the array. - - An array for storing InteractionSourceState snapshots. - - The number of snapshots stored in the array, up to the size of the array. - - - - - Occurs when a new hand, controller, or source of voice commands has been detected. - - - - - - Occurs when a new hand, controller, or source of voice commands has been detected. - - - - - - Occurs when a hand, controller, or source of voice commands is no longer available. - - - - - - Occurs when a hand, controller, or source of voice commands is no longer available. - - - - - - Occurs when a hand or controller has entered the pressed state. - - - - - - Occurs when a hand or controller has entered the pressed state. - - - - - - Occurs when a hand or controller has exited the pressed state. - - - - - - Occurs when a hand or controller has exited the pressed state. - - - - - - Occurs when a hand or controller has experienced a change to its SourceState. - - - - - - Occurs when a hand or controller has experienced a change to its SourceState. - - - - - - Callback to handle InteractionManager events. - - - - - - Represents one detected instance of an interaction source (hand, controller, or user's voice) that can cause interactions and gestures. - - - - - Denotes which hand was used as the input source. - - - - - The identifier for the interaction source (hand, controller, or user's voice). - - - - - Specifies the kind of an interaction source. - - - - - Following the make and model nomenclature of cars, this equates to the model number. - - - - - Following the make and model nomenclature of cars, this would be a minor update to the model. - - - - - This property returns true when the interaction source has at least one grasp button, and false if otherwise. - - - - - This property returns true when the interaction source has a menu button, and false if otherwise. - - - - - This property returns true if the interaction source has a separate pose for the pointer, and false if otherwise. - - - - - Returns true if the interaction source has a thumbstick, and false if otherwise. - - - - - Returns true if the interaction source has a touchpad, and false if otherwise. - - - - - All interaction sources developed by the same company will have the same vendor ID. - - - - - Contains fields that are relevent when an interaction source is detected. - - - - - The current state of the reported interaction source that was just detected. - - - - - Denotes which hand was used as the input source. - - - - - Specifies the kind of an interaction source. - - - - - The interaction source is of a kind not known in this version of the API. - - - - - The interaction source is one of the user's hands. - - - - - The interaction source is of a kind not known in this version of the API. - - - - - The interaction source is the user's speech. - - - - - Represents the position and velocity of a hand or controller - this has been deprecated. Use InteractionSourcePose instead. - - - - - Get the position of the interaction - this has been deprecated. Use InteractionSourcePose instead. - - Supplied Vector3 to be populated with interaction position. - - True if the position is successfully returned. - - - - - Get the velocity of the interaction - this has been deprecated. Use InteractionSourcePose instead. - - Supplied Vector3 to be populated with interaction velocity. - - True if the velocity is successfully returned. - - - - - Contains fields that are relevent when an interaction source is lost. - - - - - The current state of the reported interaction source that was just lost. - - - - - Specifies which part of the controller to query pose information for. - - - - - The grip of the controller. - - - - - The pointer of the controller. - - - - - Pose data of the interaction source at the time of either the gesture or interaction. - - - - - The position-tracking accuracy of the interaction source. - - - - - Attempts to retrieve a Vector3 representing the current angular velocity of the tracked node. - - If the function returns true, this will be filled out with the angular velocity of the interaction source. If the function returns false, the value filled out should not be used. - - True if the angular velocity was set in the output parameter. False if the angular velocity is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Gets the forward vector of the interaction source, assuming rotation is valid. - - The forward vector of the interaction source, if the function returns true. - Specifies which part of the controller to query for its forward vector. - - This method returns true when the rotation is valid and the Vector3 passed in was filled out correctly, and false if otherwise. - - - - - Gets the position of the interaction source, assuming the backing data is valid. - - The position of the interaction source, is the function returns true. - Specifies which part of the controller to query for its position. - - This method returns true when the Vector3 passed in was filled out correctly, and false if otherwise. - - - - - Gets the right vector of the interaction source, assuming rotation is valid. - - The right vector of the interaction source, if the function returns true. - Specifies which part of the controller to query for its right vector. - - This method returns true if rotation is valid and the Vector3 passed in was filled out correctly, and false if otherwise. - - - - - Gets the rotation of the interaction source, assuming the backing data is valid. - - Specifies which part of the controller to query for its rotation. - The rotation of the interaction source, if the function returns true. - - This method returns true if the Quaternion passed in was filled out correctly, and false if otherwise. - - - - - Gets the up vector of the interaction source, assuming rotation is valid. - - The up vector of the interaction source, if the function returns true. - Specifies which part of the controller to query for its up vector. - - Returns true if the rotation is valid and the Vector3 passed in was filled out correctly, and false if otherwise. - - - - - Gets the velocity of the interaction source, assuming the backing data is valid. - - The velocity of the interaction source, if the function returns true. - - Returns true if the Vector3 passed in was filled out correctly, and false if otherwise. - - - - - Denotes the accuracy of tracking on the interaction source. - - - - - A position accuracy of Approximate reports that you may not want to fully trust the positions reported, as the position is inferred or synthesized in some way, such as the controller leaving the sensors' field of view and forcing the API to rely on the device's IMU instead of visual tracking. - - - - - A position accuracy of High reports that you can fully trust the position, as the interaction source is within the sensors' visual field of view. - - - - - A position accuracy of None reports that there is no position accuracy, as the interaction source unlocatable. - - - - - Contains fields that are relevent when an interaction source enters the pressed state for one of its buttons. - - - - - Denotes the type of button that was just pressed. - - - - - The current state of the reported interaction source that just had one of its buttons enter the pressed state. - - - - - The type of button or controller feature pressed, if any. - - - - - These buttons are generally found on the side of the controller. Some hardware has more than one grasp button. - - - - - This button is marked with three horizontal lines, same as you would fine on an Xbox One controller. - - - - - Depending on the InteractionSourceType of the interaction source, this could be a number of equivalent things: main button on a blicker, air-tap on a hand, and the trigger on a motion controller. - - - - - Similar to the touchpad, moving the thumbstick won't count as pressing it - a press will occur when pressing down on the thumbstick enough. - - - - - A touchpad only counts as pressed when it's held down enough - otherwise, it's just touched, and will give a reading of the position through InteractionSourceState.touchpadPosition. - - - - - Represents the set of properties available to explore the current state of a hand or controller. - - - - - The position and velocity of the hand, expressed in the specified coordinate system - this has been deprecated. Use InteractionSourcePose instead. - - - - - The direction you should suggest that the user move their hand if it is nearing the edge of the detection area. - - - - - Gets the risk that detection of the hand will be lost as a value from 0.0 to 1.0. - - - - - Contains fields that are relevent when an interaction source exits the pressed state for one of its buttons. - - - - - Denotes the type of button that was just released. - - - - - The current state of the reported interaction source that just had one of its buttons exit the pressed state. - - - - - Represents a snapshot of the state of a spatial interaction source (hand, voice or controller) at a given time. - - - - - True if the source is in the pressed state. - - - - - Whether the controller is grasped. - - - - - Head pose of the user at the time of the interaction. - - - - - The Ray at the time represented by this InteractionSourceState. - - - - - Whether or not the menu button is pressed. - - - - - True if the source is in the pressed state, false otherwise. - - - - - Additional properties to explore the state of the interaction source. - - - - - Depending on the InteractionSourceType of the interaction source, this returning true could represent a number of equivalent things: main button on a clicker, air-tap on a hand, and the trigger on a motion controller. For hands, a select-press represents the user's index finger in the down position. For motion controllers, a select-press represents the controller's index-finger trigger (or primary face button, if no trigger) being fully pressed. Note that a voice command of "Select" causes an instant press and release, so you cannot poll for a voice press using this property - instead, you must use GestureRecognizer and subscribe to the Tapped event, or subscribe to the InteractionSourcePressed event from InteractionManager. - - - - - Normalized amount ([0, 1]) representing how much select is pressed. - - - - - The interaction source that this state describes. - - - - - Pose data of the interaction source at the time of the interaction. - - - - - Normalized coordinates for the position of a thumbstick. - - - - - Whether or not the thumbstick is pressed. - - - - - Normalized coordinates for the position of a touchpad interaction. - - - - - Whether or not the touchpad is pressed, as if a button. - - - - - Whether or not the touchpad is touched. - - - - - Contains fields that are relevent when an interaction source updates. - - - - - The current state of the reported interaction source that just updated. - - - - - Contains fields that are relevant when a manipulation gesture is canceled. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that canceled the manipulation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a manipulation gesture completes. - - - - - Total distance moved since the beginning of the manipulation gesture. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that completed the manipulation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields relevant when a manipulation gesture starts. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that started the manipulation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a manipulation gesture gets updated. - - - - - Total distance moved since the beginning of the manipulation gesture. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) being used for the manipulation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a navigation gesture is canceled. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that canceled the navigation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a navigation gesture completes. - - - - - Head pose of the user at the time of the gesture. - - - - - The normalized offset, since the navigation gesture began, of the input within the unit cube for the navigation gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that completed the navigation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a navigation gesture starts. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that started the navigation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a navigation gesture updates. - - - - - Head pose of the user at the time of the gesture. - - - - - The normalized offset, since the navigation gesture began, of the input within the unit cube for the navigation gesture. - - - - - The InteractionSource (hand, controller, or user's voice) being used for the navigation gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when recognition of a gesture event ends. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that ended the gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when recognition of a gesture event begins. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that started the gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - Contains fields that are relevant when a tap gesture occurs. - - - - - Head pose of the user at the time of the gesture. - - - - - The InteractionSource (hand, controller, or user's voice) that initiated the tap gesture. - - - - - Pose data of the interaction source at the time of the gesture. - - - - - The number of taps (1 for single-tap, 2 for double-tap). - - - - - The storage object for persisted WorldAnchors. - - - - - (Read Only) Gets the number of persisted world anchors in this WorldAnchorStore. - - - - - Clears all persisted WorldAnchors. - - - - - Deletes a persisted WorldAnchor from the store. - - The identifier of the WorldAnchor to delete. - - Whether or not the WorldAnchor was found and deleted. - - - - - Cleans up the WorldAnchorStore and releases memory. - - - - - Gets all of the identifiers of the currently persisted WorldAnchors. - - - An array of string identifiers. - - - - - Gets all of the identifiers of the currently persisted WorldAnchors. - - A target array to receive the identifiers of the currently persisted world anchors. - - The number of identifiers stored in the target array. - - - - - Gets the WorldAnchorStore instance. - - The handler to be called when the WorldAnchorStore is loaded. - - - - The handler for when getting the WorldAnchorStore from GetAsync. - - The instance of the WorldAnchorStore once loaded. - - - - Loads a WorldAnchor from disk for given identifier and attaches it to the GameObject. If the GameObject has a WorldAnchor, that WorldAnchor will be updated. If the anchor is not found, null will be returned and the GameObject and any existing WorldAnchor attached to it will not be modified. - - The identifier of the WorldAnchor to load. - The object to attach the WorldAnchor to if found. - - The WorldAnchor loaded by the identifier or null if not found. - - - - - Saves the provided WorldAnchor with the provided identifier. If the identifier is already in use, the method will return false. - - The identifier to save the anchor with. This needs to be unique for your app. - The anchor to save. - - Whether or not the save was successful. Will return false if the id conflicts with another already saved anchor's id. - - - - - Indicates the lifecycle state of the device's spatial location system. - - - - - The device is reporting its orientation and is preparing to locate its position in the user's surroundings. - - - - - The device is reporting its orientation and position in the user's surroundings. - - - - - The device is reporting its orientation but cannot locate its position in the user's surroundings due to external factors like poor lighting conditions. - - - - - The device is reporting its orientation and has not been asked to report its position in the user's surroundings. - - - - - The device's spatial location system is not available. - - - - - This enum represents the result of a WorldAnchorTransferBatch operation. - - - - - The operation has failed because access was denied. This occurs typically because the transfer batch was not readable when deserializing or writable when serializing. - - - - - The operation has failed because it was not supported. - - - - - The operation has completed successfully. - - - - - The operation has failed in an unexpected way. - - - - - A batch of WorldAnchors which can be exported and imported between apps. - - - - - (Read Only) Gets the number of world anchors in this WorldAnchorTransferBatch. - - - - - Adds a WorldAnchor to the batch with the specified identifier. - - The identifier associated with this anchor in the batch. This must be unique per batch. - The anchor to add to the batch. - - Whether or not the anchor was added successfully. - - - - - The handler for when deserialization has completed. - - The reason the deserialization completed (success or failure reason). - The resulting transfer batch which is empty on error. - - - - Cleans up the WorldAnchorTransferBatch and releases memory. - - - - - Exports the input WorldAnchorTransferBatch into a byte array which can be passed to WorldAnchorTransferBatch.ImportAsync to restore the original WorldAnchorTransferBatch. - - The WorldAnchorTransferBatch to export into a byte buffer. - The callback when some data is available. - The callback after the last bit of data was provided via onDataAvailable with a completion reason (success or failure reason). - - - - Gets all of the identifiers currently mapped in this WorldAnchorTransferBatch. - - - The identifiers of all of the WorldAnchors in this WorldAnchorTransferBatch. - - - - - Gets all of the identifiers currently mapped in this WorldAnchorTransferBatch. If the target array is not large enough to contain all the identifiers, then only those identifiers that fit within the array will be stored and the return value will equal the size of the array. You can detect this condition by checking for a return value less than WorldAnchorTransferBatch.anchorCount. - - A target array to receive the identifiers of the currently mapped world anchors. - - The number of identifiers stored in the target array. - - - - - Imports the provided bytes into a WorldAnchorTransferBatch. - - The complete data to import. - The handler when the data import is complete. - The offset in the array from which to start reading. - The length of the data in the array. - - - - Imports the provided bytes into a WorldAnchorTransferBatch. - - The complete data to import. - The handler when the data import is complete. - The offset in the array from which to start reading. - The length of the data in the array. - - - - Locks the provided GameObject to the world by loading and applying the WorldAnchor from the TransferBatch for the provided id. - - The identifier for the WorldAnchor to load and apply to the GameObject. - The GameObject to apply the WorldAnchor to. If the GameObject already has a WorldAnchor, it will be updated. - - The loaded WorldAnchor or null if the id does not map to a WorldAnchor. - - - - - The handler for when serialization is completed. - - Why the serialization completed (success or failure reason). - - - - The handler for when some data is available from serialization. - - A set of bytes from the exported transfer batch. - - - - Enumeration of the different types of SurfaceChange events. - - - - - Surface was Added. - - - - - Surface was removed. - - - - - Surface was updated. - - - - - SurfaceData is a container struct used for requesting baked spatial mapping data and receiving that data once baked. - - - - - Set this field to true when requesting data to bake collider data. This field will be set to true when receiving baked data if it was requested. Setting this field to true requires that a valid outputCollider is also specified. - - - - - This is the ID for the surface to be baked or the surface that was baked and being returned to the user. - - - - - This WorldAnchor is used to lock the surface into place relative to real world objects. It will be filled in when calling RequestMeshAsync to generate data for a surface and returned with the SurfaceDataReadyDelegate. - - - - - This MeshCollider will receive the baked physics mesh prepared by the system when requesting baked surface data through RequestMeshAsync. The MeshCollider is returned in the SurfaceDataReadyDelegate for those users requiring advanced workflows. - - - - - This MeshFilter will receive the baked mesh prepared by the system when requesting baked surface data. The MeshFilter is returned in the SurfaceDataReadyDelegate for those users requiring advanced workflows. - - - - - This value controls the basic resolution of baked mesh data and is returned with the SurfaceDataReadyDelegate. The device will deliver up to this number of triangles per cubic meter. - - - - - Constructor for conveniently filling out a SurfaceData struct. - - ID for the surface in question. - MeshFilter to write Mesh data to. - WorldAnchor receiving the anchor point for the surface. - MeshCollider to write baked physics data to (optional). - Requested resolution for the computed Mesh. Actual resolution may be less than this value. - Set to true if collider baking is/has been requested. - - - - SurfaceId is a structure wrapping the unique ID used to denote Surfaces. SurfaceIds are provided through the onSurfaceChanged callback in Update and returned after a RequestMeshAsync call has completed. SurfaceIds are guaranteed to be unique though Surfaces are sometimes replaced with a new Surface in the same location with a different ID. - - - - - The actual integer ID referring to a single surface. - - - - - SurfaceObserver is the main API portal for spatial mapping functionality in Unity. - - - - - Basic constructor for SurfaceObserver. - - - - - Call Dispose when the SurfaceObserver is no longer needed. This will ensure that the object is cleaned up appropriately but will not affect any Meshes, components, or objects returned by RequestMeshAsync. - - - - - Call RequestMeshAsync to start the process of baking mesh data for the specified surface. This data may take several frames to create. Baked data will be delivered through the specified SurfaceDataReadyDelegate. This method will throw ArgumentNullExcpetion and ArgumentException if parameters specified in the dataRequest are invalid. - - Bundle of request data used to bake the specified surface. - Callback called when the baking of this surface is complete. - - Returns false if the request has failed, typically due to specifying a bad surface ID. - - - - - This method sets the observation volume as an axis aligned box at the requested location. Successive calls can be used to reshape the observation volume and/or to move it in the Scene as needed. Extents are the distance from the center of the box to its edges along each axis. - - The origin of the requested observation volume. - The extents in meters of the requested observation volume. - - - - This method sets the observation volume as a frustum at the requested location. Successive calls can be used to reshape the observation volume and/or to move it in the Scene as needed. - - Planes defining the frustum as returned from GeometryUtility.CalculateFrustumPlanes. - - - - This method sets the observation volume as an oriented box at the requested location. Successive calls can be used to reshape the observation volume and/or to move it in the Scene as needed. Extents are the distance from the center of the box to its edges along each axis. - - The origin of the requested observation volume. - The extents in meters of the requested observation volume. - The orientation of the requested observation volume. - - - - This method sets the observation volume as a sphere at the requested location. Successive calls can be used to reshape the observation volume and/or to move it in the Scene as needed. - - The origin of the requested observation volume. - The radius in meters of the requested observation volume. - - - - The SurfaceChanged delegate handles SurfaceChanged events as generated by calling Update on a SurfaceObserver. Applications can use the bounds, changeType, and updateTime to selectively generate mesh data for the set of known surfaces. - - The ID of the surface that has changed. - The type of change this event represents (Added, Updated, Removed). - The bounds of the surface as reported by the device. - The update time of the surface as reported by the device. - - - - The SurfaceDataReadyDelegate handles events generated when the engine has completed generating a mesh. Mesh generation is requested through GetMeshAsync and may take many frames to complete. - - Struct containing output data. - Set to true if output has been written and false otherwise. - Elapsed seconds between mesh bake request and propagation of this event. - - - - Update generates SurfaceChanged events which are propagated through the specified callback. If no callback is specified, the system will throw an ArgumentNullException. Generated callbacks are synchronous with this call. Scenes containing multiple SurfaceObservers should consider using different callbacks so that events can be properly routed. - - Callback called when SurfaceChanged events are detected. - - - - When calling PhotoCapture.StartPhotoModeAsync, you must pass in a CameraParameters object that contains the various settings that the web camera will use. - - - - - A valid height resolution for use with the web camera. - - - - - A valid width resolution for use with the web camera. - - - - - The framerate at which to capture video. This is only for use with VideoCapture. - - - - - The opacity of captured holograms. - - - - - The pixel format used to capture and record your image data. - - - - - The encoded image or video pixel format to use for PhotoCapture and VideoCapture. - - - - - 8 bits per channel (blue, green, red, and alpha). - - - - - Encode photo in JPEG format. - - - - - 8-bit Y plane followed by an interleaved U/V plane with 2x2 subsampling. - - - - - Portable Network Graphics Format. - - - - - Captures a photo from the web camera and stores it in memory or on disk. - - - - - Contains the result of the capture request. - - - - - Specifies that the desired operation was successful. - - - - - Specifies that an unknown error occurred. - - - - - Asynchronously creates an instance of a PhotoCapture object that can be used to capture photos. - - Will allow you to capture holograms in your photo. - This callback will be invoked when the PhotoCapture instance is created and ready to be used. - - - - Dispose must be called to shutdown the PhotoCapture instance. - - - - - Provides a COM pointer to the native IVideoDeviceController. - - - A native COM pointer to the IVideoDeviceController. - - - - - Called when a photo has been saved to the file system. - - Indicates whether or not the photo was successfully saved to the file system. - - - - Called when a photo has been captured to memory. - - Indicates whether or not the photo was successfully captured to memory. - Contains the target texture. If available, the spatial information will be accessible through this structure as well. - - - - Called when a PhotoCapture resource has been created. - - The PhotoCapture instance. - - - - Called when photo mode has been started. - - Indicates whether or not photo mode was successfully activated. - - - - Called when photo mode has been stopped. - - Indicates whether or not photo mode was successfully deactivated. - - - - A data container that contains the result information of a photo capture operation. - - - - - The specific HResult value. - - - - - A generic result that indicates whether or not the PhotoCapture operation succeeded. - - - - - Indicates whether or not the operation was successful. - - - - - Asynchronously starts photo mode. - - The various settings that should be applied to the web camera. - This callback will be invoked once photo mode has been activated. - - - - Asynchronously stops photo mode. - - This callback will be invoked once photo mode has been deactivated. - - - - A list of all the supported device resolutions for taking pictures. - - - - - Asynchronously captures a photo from the web camera and saves it to disk. - - The location where the photo should be saved. The filename must end with a png or jpg file extension. - The encoding format that should be used. - Invoked once the photo has been saved to disk. - Invoked once the photo has been copied to the target texture. - - - - Asynchronously captures a photo from the web camera and saves it to disk. - - The location where the photo should be saved. The filename must end with a png or jpg file extension. - The encoding format that should be used. - Invoked once the photo has been saved to disk. - Invoked once the photo has been copied to the target texture. - - - - Image Encoding Format. - - - - - JPEG Encoding. - - - - - PNG Encoding. - - - - - Contains information captured from the web camera. - - - - - The length of the raw IMFMediaBuffer which contains the image captured. - - - - - Specifies whether or not spatial data was captured. - - - - - The raw image data pixel format. - - - - - Will copy the raw IMFMediaBuffer image data into a byte list. - - The destination byte list to which the raw captured image data will be copied to. - - - - Disposes the PhotoCaptureFrame and any resources it uses. - - - - - Provides a COM pointer to the native IMFMediaBuffer that contains the image data. - - - A native COM pointer to the IMFMediaBuffer which contains the image data. - - - - - This method will return the camera to world matrix at the time the photo was captured if location data if available. - - A matrix to be populated by the Camera to world Matrix. - - True if a valid matrix is returned or false otherwise. This will be false if the frame has no location data. - - - - - This method will return the projection matrix at the time the photo was captured if location data if available. - - The near clip plane distance. - The far clip plane distance. - A matrix to be populated by the Projection Matrix. - - True if a valid matrix is returned or false otherwise. This will be false if the frame has no location data. - - - - - This method will return the projection matrix at the time the photo was captured if location data if available. - - The near clip plane distance. - The far clip plane distance. - A matrix to be populated by the Projection Matrix. - - True if a valid matrix is returned or false otherwise. This will be false if the frame has no location data. - - - - - This method will copy the captured image data into a user supplied texture for use in Unity. - - The target texture that the captured image data will be copied to. - - - - Records a video from the web camera directly to disk. - - - - - Specifies what audio sources should be recorded while recording the video. - - - - - Include both the application audio as well as the mic audio in the video recording. - - - - - Only include the application audio in the video recording. - - - - - Only include the mic audio in the video recording. - - - - - Do not include any audio in the video recording. - - - - - Contains the result of the capture request. - - - - - Specifies that the desired operation was successful. - - - - - Specifies that an unknown error occurred. - - - - - Asynchronously creates an instance of a VideoCapture object that can be used to record videos from the web camera to disk. - - Will allow you to capture holograms in your video. - This callback will be invoked when the VideoCapture instance is created and ready to be used. - - - - Dispose must be called to shutdown the PhotoCapture instance. - - - - - Returns the supported frame rates at which a video can be recorded given a resolution. - - A recording resolution. - - The frame rates at which the video can be recorded. - - - - - Provides a COM pointer to the native IVideoDeviceController. - - - A native COM pointer to the IVideoDeviceController. - - - - - Indicates whether or not the VideoCapture instance is currently recording video. - - - - - Called when the web camera begins recording the video. - - Indicates whether or not video recording started successfully. - - - - Called when the video recording has been saved to the file system. - - Indicates whether or not video recording was saved successfully to the file system. - - - - Called when a VideoCapture resource has been created. - - The VideoCapture instance. - - - - Called when video mode has been started. - - Indicates whether or not video mode was successfully activated. - - - - Called when video mode has been stopped. - - Indicates whether or not video mode was successfully deactivated. - - - - Asynchronously records a video from the web camera to the file system. - - The name of the video to be recorded to. - Invoked as soon as the video recording begins. - - - - Asynchronously starts video mode. - - The various settings that should be applied to the web camera. - Indicates how audio should be recorded. - This callback will be invoked once video mode has been activated. - - - - Asynchronously stops recording a video from the web camera to the file system. - - Invoked as soon as video recording has finished. - - - - Asynchronously stops video mode. - - This callback will be invoked once video mode has been deactivated. - - - - A list of all the supported device resolutions for recording videos. - - - - - A data container that contains the result information of a video recording operation. - - - - - The specific HResult value. - - - - - A generic result that indicates whether or not the VideoCapture operation succeeded. - - - - - Indicates whether or not the operation was successful. - - - - - Contains general information about the current state of the web camera. - - - - - Specifies what mode the Web Camera is currently in. - - - - - Describes the active mode of the Web Camera resource. - - - - - Resource is not in use. - - - - - Resource is in Photo Mode. - - - - - Resource is in Video Mode. - - - - - The WorldAnchor component allows a GameObject's position to be locked in physical space. - - - - - Returns true if this WorldAnchor is located (read only). A return of false typically indicates a loss of tracking. - - - - - Retrieve a native pointer to the <a href="https:msdn.microsoft.comen-uslibrarywindowsappswindows.perception.spatial.spatialanchor.aspx">Windows.Perception.Spatial.SpatialAnchor<a> COM object. -This function calls <a href=" https:msdn.microsoft.comen-uslibrarywindowsdesktopms691379.aspx">IUnknown::AddRef<a> on the pointer before returning it. The pointer must be released by calling <a href=" https:msdn.microsoft.comen-uslibrarywindowsdesktopms682317.aspx">IUnknown::Release<a>. - - - The native pointer to the <a href=" https:msdn.microsoft.comen-uslibrarywindowsappswindows.perception.spatial.spatialanchor.aspx">Windows.Perception.Spatial.SpatialAnchor<a> COM object. - - - - - OnTrackingChanged notifies listeners when this object's tracking state changes. - - Event that fires when this object's tracking state changes. - - - - Event that is fired when this object's tracking state changes. - - Set to true if the object is locatable. - The WorldAnchor reporting the tracking state change. - - - - - Assigns the <a href="https:msdn.microsoft.comen-uslibrarywindowsappswindows.perception.spatial.spatialanchor.aspx">Windows.Perception.Spatial.SpatialAnchor<a> COM pointer maintained by this WorldAnchor. - - A live <a href="https:msdn.microsoft.comen-uslibrarywindowsappswindows.perception.spatial.spatialanchor.aspx">Windows.Perception.Spatial.SpatialAnchor<a> COM pointer. - - - - This class represents the state of the real world tracking system. - - - - - The current state of the world tracking systems. - - - - - Return the native pointer to Windows::Perception::Spatial::ISpatialCoordinateSystem which was retrieved from an Windows::Perception::Spatial::ISpatialStationaryFrameOfReference object underlying the Unity World Origin. - - - Pointer to Windows::Perception::Spatial::ISpatialCoordinateSystem. - - - - - Event fired when the world tracking systems state has changed. - - - - - - Callback on when the world tracking systems state has changed. - - The previous state of the world tracking systems. - The new state of the world tracking systems. - - - - Contains all functionality related to a XR device. - - - - - Subscribe a delegate to this event to get notified when an XRDevice is successfully loaded. - - - - - - The name of the family of the loaded XR device. - - - - - Zooms the XR projection. - - - - - Successfully detected a XR device in working order. - - - - - Specific model of loaded XR device. - - - - - Refresh rate of the display in Hertz. - - - - - Returns the devices TrackingOriginType. - - - The TrackingOriginType that the device is currently using. It will return the Unknown TrackingOriginType on failure. - - - - - Indicates whether the user is present and interacting with the device. - - - - - Sets whether the camera passed in the first parameter is controlled implicitly by the XR Device - - The camera that we wish to change behavior on - True if the camera's transform is set externally. False if the camera is to be driven implicitly by XRDevice, - - Nothing. - - - - - This method returns an IntPtr representing the native pointer to the XR device if one is available, otherwise the value will be IntPtr.Zero. - - - The native pointer to the XR device. - - - - - Returns the device's current TrackingSpaceType. This value determines how the camera is positioned relative to its starting position. For more, see the section "Understanding the camera" in. - - - The device's current TrackingSpaceType. - - - - - Sets the device's current TrackingSpaceType. Returns true on success. Returns false if the given TrackingSpaceType is not supported or the device fails to switch. - - The TrackingSpaceType the device should switch to. - - - True on success. False if the given TrackingSpaceType is not supported or the device fails to switch. - - - - - Enumeration of XR nodes which can be updated by XR input or sent haptic data. - - - - - Node representing a point between the left and right eyes. - - - - - Represents a tracked game Controller not associated with a specific hand. - - - - - Represents a physical device that provides tracking data for objects to which it is attached. - - - - - Node representing the user's head. - - - - - Node representing the left eye. - - - - - Node representing the left hand. - - - - - Node representing the right eye. - - - - - Node representing the right hand. - - - - - Represents a stationary physical device that can be used as a point of reference in the tracked area. - - - - - Sets the vector representing the current acceleration of the tracked node. - - - - - Sets the vector representing the current angular acceleration of the tracked node. - - - - - Sets the vector representing the current angular velocity of the tracked node. - - - - - The type of the tracked node as specified in XR.XRNode. - - - - - Sets the vector representing the current position of the tracked node. - - - - - Sets the quaternion representing the current rotation of the tracked node. - - - - - - Set to true if the node is presently being tracked by the underlying XR system, -and false if the node is not presently being tracked by the underlying XR system. - - - - - The unique identifier of the tracked node. - - - - - Sets the vector representing the current velocity of the tracked node. - - - - - Attempt to retrieve a vector representing the current acceleration of the tracked node. - - - True if the acceleration was set in the output parameter. False if the acceleration is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Attempt to retrieve a Vector3 representing the current angular acceleration of the tracked node. - - - - True if the angular acceleration was set in the output parameter. False if the angular acceleration is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Attempt to retrieve a Vector3 representing the current angular velocity of the tracked node. - - - - True if the angular velocity was set in the output parameter. False if the angular velocity is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Attempt to retrieve a vector representing the current position of the tracked node. - - - True if the position was set in the output parameter. False if the position is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Attempt to retrieve a quaternion representing the current rotation of the tracked node. - - - True if the rotation was set in the output parameter. False if the rotation is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Attempt to retrieve a vector representing the current velocity of the tracked node. - - - True if the velocity was set in the output parameter. False if the velocity is not available due to limitations of the underlying platform or if the node is not presently tracked. - - - - - Global XR related settings. - - - - - Globally enables or disables XR for the application. - - - - - Fetch the eye texture RenderTextureDescriptor from the active stereo device. - - - - - The current height of an eye texture for the loaded device. - - - - - Controls the actual size of eye textures as a multiplier of the device's default resolution. - - - - - The current width of an eye texture for the loaded device. - - - - - Sets the render mode for the XR device. The render mode controls how the view of the XR device renders in the Game view and in the main window on a host PC. - - - - - Read-only value that can be used to determine if the XR device is active. - - - - - Type of XR device that is currently loaded. - - - - - A scale applied to the standard occulsion mask for each platform. - - - - - This field has been deprecated. Use XRSettings.eyeTextureResolutionScale instead. - - - - - Controls how much of the allocated eye texture should be used for rendering. - - - - - This property has been deprecated. Use XRSettings.gameViewRenderMode instead. - - - - - The stereo rendering mode that is currently in use. - - - - - Returns a list of supported XR devices that were included at build time. - - - - - Specifies whether or not the occlusion mesh should be used when rendering. Enabled by default. - - - - - Loads the requested device at the beginning of the next frame. - - Name of the device from XRSettings.supportedDevices. - Prioritized list of device names from XRSettings.supportedDevices. - - - - Loads the requested device at the beginning of the next frame. - - Name of the device from XRSettings.supportedDevices. - Prioritized list of device names from XRSettings.supportedDevices. - - - - Enum type signifying the different stereo rendering modes available. - - - - - This is the reference stereo rendering path for VR. - - - - - This is a faster rendering path for VR than XRSettings.StereoRenderingMode.MultiPass. - - - - - This is an optimized version of the XRSettings.StereoRenderingMode.SinglePass mode. - - - - - This is a OpenGL optimized version of the XRSettings.StereoRenderingMode.SinglePassInstanced mode. - - - - - Timing and other statistics from the XR subsystem. - - - - - Total GPU time utilized last frame as measured by the XR subsystem. - - - - - Retrieves the number of dropped frames reported by the XR SDK. - - Outputs the number of frames dropped since the last update. - - True if the dropped frame count is available, false otherwise. - - - - - Retrieves the number of times the current frame has been drawn to the device as reported by the XR SDK. - - Outputs the number of times the current frame has been presented. - - True if the frame present count is available, false otherwise. - - - - - Retrieves the time spent by the GPU last frame, in seconds, as reported by the XR SDK. - - Outputs the time spent by the GPU last frame. - - True if the GPU time spent last frame is available, false otherwise. - - - - - Base class for all yield instructions. - - - - diff --git a/packages/mscorlib.dll b/packages/mscorlib.dll deleted file mode 100644 index b916605..0000000 Binary files a/packages/mscorlib.dll and /dev/null differ